From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-40131.protonmail.ch (mail-40131.protonmail.ch [185.70.40.131]) by sourceware.org (Postfix) with ESMTPS id 75D763858CD1 for ; Mon, 27 Nov 2023 05:35:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 75D763858CD1 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=protonmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=protonmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 75D763858CD1 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=185.70.40.131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701063322; cv=none; b=olnq9ibgidnA5tn07tMGKVUaL205FkQln4/c4tQLiyPgem8e8airuw6dFfN7ZZQqbgJvUgW0uJOnmF9H/fX/PK4aNvZwfwYe7l7D4s2aF650Y2j+sk2lcDaBA2ldFzTiH7g9ydtq2H9Tk0L0UzVKDvp8UuMIZSbxDLI8VV8llEA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701063322; c=relaxed/simple; bh=FImsVbt+VIGS9/Yy9LvWmskQitbo/2LYr1TyFlySBMA=; h=DKIM-Signature:Date:To:From:Subject:Message-ID:MIME-Version; b=jbrGBMVQVGfu/c3zepmgK2tbYQbTQm9am4B07unYNvs6FUAQwi6qwWV+JK3k1Ujyafho7yuGkyfEUHRDLznGiTlyXXwcLiVnRUjJQTd9O1Y++VS72SoTe84g+EFsE7f7xrdQUJgNW9r0PhpOhI2jTgimq4boCCRZW/Dw0L3xKbc= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1701063312; x=1701322512; bh=FImsVbt+VIGS9/Yy9LvWmskQitbo/2LYr1TyFlySBMA=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=LZJtJMqI/mXj/5lYD4xtC/c+7Rr22B+YktBlCb6etBBTANQDSEz0/VkQzfWaL8SlU MonfRqmbgQj6SATXUlMgEDhtWYdwrIf+Ps3Lh2feoo23D+zWKR+4fZIBHsZzmg6HNY uFKAARgfNOr4/YEn7IMfBnTRmbwYvZKMLIPQ/NVaVv3GqUqwboVrDeyN+L9/wVoSKp lvrl6svY9wOU/+CjF3eiQup2b3WwkEPQllisZEt81CNKqx8BsjuwtCsUlI++FmcxOd jM6JFhi2vsfCbanCQMyhl+DDdsSgUiFoWUpdwdZQIig4zxj7FkUkwCycEgFIAhRRe+ xrhWcyKB16vwQ== Date: Mon, 27 Nov 2023 05:35:03 +0000 To: waffl3x From: waffl3x Cc: Jason Merrill , "gcc-patches@gcc.gnu.org" Subject: Re: [PATCH v6 1/1] c++: Initial support for P0847R7 (Deducing This) [PR102609] Message-ID: In-Reply-To: References: <7Xr5Vil7ptZzPaCtc_ZCdcTPuUVY7dheOnklF-vVDb5_jl8PivYWgTT_f3cKLvg7IMnDruCDDrICRI6WVrUT3f8ZScGKAh4ATIkYSuRqPZc=@protonmail.com> <-SP7aKgN1FZED-RAPr2FBDuCrcwnu9-UhHcRXNEsNZRwIzJXCdhVbtBP921Yn8g71d0WL7XpFRetUlBAStzRpZB8p4yj5moRS0DIE9D6cnY=@protonmail.com> <7623e2db-ba29-42f2-85df-c2e796d7305b@redhat.com> Feedback-ID: 14591686:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_zQWNkKq0jtjUhHbr6dDzyMEnTHC8sJlesDnC8aAHnA" X-Spam-Status: No, score=-8.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --b1_zQWNkKq0jtjUhHbr6dDzyMEnTHC8sJlesDnC8aAHnA Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable I think this is cleaned up enough to be presentable. Bootstrapped but not tested but I don't think I changed anything substantial. I am running tests right now and will report if anything fails. I have not fixed the problem in tsubst_lambda_expr that we talked about, that will be first on my list tomorrow. While writing/cleaning up tests I had to investigate some things, one of which is calling an overloaded function, where one of the candidates are introduced by a using declaration, is considered ambiguous. I haven't narrowed down the case for this yet so I don't know if it's related to xobj member functions/lambda with xobj parameters or not. I had to pull a few tests because of it though. I did not get as much done as I would have hoped today. This really just serves as a small progress update. Once again, todo is the issue you raised in tsubst_lambda_expr, and fixing handling of captures when a const xobj parameter is deduced in a lamdba call operator. Alex --b1_zQWNkKq0jtjUhHbr6dDzyMEnTHC8sJlesDnC8aAHnA Content-Type: text/x-patch; name=0001-temp-deducing-this.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-temp-deducing-this.patch RnJvbSAyYWY5Y2Y2M2ZmYzhhMGI2YTY1NjE0MjI3Y2YxY2NhZjNkMjI2NTc0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YWZmbDN4IDx3YWZmbDN4QHByb3Rvbm1haWwuY29tPgpEYXRl OiBTdW4sIDI2IE5vdiAyMDIzIDIyOjE2OjIwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gVGVtcG9y YXJ5IG1lc3NhZ2UsIG5vbi1maW5hbCBwYXRjaC4gZ2NjL2NwL0NoYW5nZUxvZzoKCgkqIGNhbGwu Y2MgKGFkZF9jYW5kaWRhdGVzKToKCShidWlsZF9vdmVyX2NhbGwpOgoJKiBjbGFzcy5jYyAoYWRk X21ldGhvZCk6CgkocmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24pOgoJKiBj cC10cmVlLmggKHN0cnVjdCBsYW5nX2RlY2xfZm4pOgoJKERFQ0xfSU9CSl9NRU1CRVJfRlVOQ19Q KToKCShERUNMX0ZVTkNUSU9OX1hPQkpfRkxBRyk6CgkoREVDTF9YT0JKX01FTUJFUl9GVU5DX1Ap OgoJKERFQ0xfT0JKRUNUX01FTUJFUl9GVU5DX1ApOgoJKERFQ0xfRlVOQ1RJT05fTUVNQkVSX1Ap OgoJKGVudW0gYXV0b19kZWR1Y3Rpb25fY29udGV4dCk6CgkoVEZGX1hPQkpfRlVOQyk6CgkoZW51 bSBjcF9kZWNsX3NwZWMpOgoJKiBkZWNsLmNjIChncm9rZm5kZWNsKToKCShncm9rZGVjbGFyYXRv cik6CgkoZ3Jva19vcF9wcm9wZXJ0aWVzKToKCShzdGFydF9wcmVwYXJzZWRfZnVuY3Rpb24pOgoJ KiBlcnJvci5jYyAoZHVtcF9mdW5jdGlvbl9kZWNsKToKCShkdW1wX3BhcmFtZXRlcnMpOgoJKGZ1 bmN0aW9uX2NhdGVnb3J5KToKCSogbGFtYmRhLmNjIChidWlsZF9jYXB0dXJlX3Byb3h5KToKCSog bW9kdWxlLmNjICh0cmVlc19vdXQ6OmxhbmdfZGVjbF9ib29scyk6CgkodHJlZXNfaW46Omxhbmdf ZGVjbF9ib29scyk6CgkqIHBhcnNlci5jYyAoY3BfcGFyc2VyX2xhbWJkYV9kZWNsYXJhdG9yX29w dCk6CgkoY3BfcGFyc2VyX2RlY2xfc3BlY2lmaWVyX3NlcSk6CgkoY3BfcGFyc2VyX3BhcmFtZXRl cl9kZWNsYXJhdGlvbik6Cgkoc2V0X2FuZF9jaGVja19kZWNsX3NwZWNfbG9jKToKCSogcHQuY2Mg KHRzdWJzdF9mdW5jdGlvbl9kZWNsKToKCSh0c3Vic3RfbGFtYmRhX2V4cHIpOgoJKiBzZWFyY2gu Y2MgKGxvb2tfZm9yX292ZXJyaWRlc19oZXJlKToKCShsb29rX2Zvcl9vdmVycmlkZXNfcik6Cgkq IHNlbWFudGljcy5jYyAoZmluaXNoX3RoaXNfZXhwcik6CgkqIHRyZWUuY2MgKGJ1aWxkX21pbl9u b25fZGVwX29wX292ZXJsb2FkKToKCSogdHlwZWNrLmNjIChjcF9idWlsZF9hZGRyX2V4cHJfMSk6 CgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot YmFzaWMxLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljMi5D OiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzMuQzogTmV3IHRl c3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWM0LkM6IE5ldyB0ZXN0LgoJKiBn KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMS5DOiBOZXcgdGVzdC4KCSogZysrLmRn L2NwcDIzL2V4cGxpY2l0LW9iai1ieS12YWx1ZTIuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAy My9leHBsaWNpdC1vYmotYnktdmFsdWUzLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhw bGljaXQtb2JqLWJ5LXZhbHVlNC5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1jeHgtZGlhbGVjdC1BLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWN4eC1kaWFsZWN0LUIuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotY3h4LWRpYWxlY3QtQy5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1jeHgtZGlhbGVjdC1ELkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWN4eC1kaWFsZWN0LUUuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot ZGlhZ25vc3RpY3MxLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRp YWdub3N0aWNzMi5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFn bm9zdGljczQuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25v c3RpY3M1LkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0 aWNzNi5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGlj czcuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhMS5DOiBO ZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGEyLkM6IE5ldyB0ZXN0 LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYTMuQzogTmV3IHRlc3QuCgkqIGcr Ky5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDAuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDIwLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWxhbWJkYVgyMS5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxp Y2l0LW9iai1sYW1iZGFYMjUuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotbGFtYmRhWDQuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFt YmRhWDQwLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVg1 LkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVg2LkM6IE5l dyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVg3LkM6IE5ldyB0ZXN0 LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tYXJyb3cuQzogTmV3IHRlc3Qu CgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1lbS1hc3NpZ25tZW50LkM6IE5ldyB0 ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tY2FsbC5DOiBOZXcgdGVz dC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbWVtLXN1YnNjcmlwdC5DOiBOZXcg dGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbm9uLW1lbS1kZXAuQzogTmV3 IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW5vbi1tZW0tbm9uLWRlcC5D OiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbm9uLW1lbS5oOiBO ZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtcmVxdWlyZXMtbWVtLkM6 IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1yZXF1aXJlcy1ub24t bWVtLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLXJlZGVjbC5DOiBO ZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1yZWRlY2wyLkM6IE5ldyB0ZXN0 LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLXZpcnR1YWwuQzogTmV3IHRlc3QuCgpTaWdu ZWQtb2ZmLWJ5OiB3YWZmbDN4IDx3YWZmbDN4QHByb3Rvbm1haWwuY29tPgotLS0KIGdjYy9jcC9j YWxsLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0OCArKystLS0KIGdjYy9j cC9jbGFzcy5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwNSArKysrKysrLQog Z2NjL2NwL2NwLXRyZWUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM5ICstCiBn Y2MvY3AvZGVjbC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxODAgKysrKysr LQogZ2NjL2NwL2Vycm9yLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICst CiBnY2MvY3AvbGFtYmRhLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0K IGdjYy9jcC9tb2R1bGUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBn Y2MvY3AvcGFyc2VyLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNjEgKysrKyst CiBnY2MvY3AvcHQuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNzMgKyst CiBnY2MvY3Avc2VhcmNoLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKy0K IGdjYy9jcC9zZW1hbnRpY3MuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNyArLQog Z2NjL2NwL3RyZWUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI1ICstCiBn Y2MvY3AvdHlwZWNrLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjkgKwogLi4u L2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWMxLkMgICAgICAgIHwgMTE0ICsrKysKIC4u Li9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljMi5DICAgICAgICB8ICAyOCArCiAuLi4v ZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzMuQyAgICAgICAgfCA0OTYgKysrKysrKysr KysrKysrKysrCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzQuQyAgICAgICAg fCAxMTMgKysrKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFsdWUxLkMgICAg IHwgIDQ4ICsrCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1ieS12YWx1ZTIuQyAgICAg fCAgNTggKysKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMy5DICAgICB8 ICA0MSArKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFsdWU0LkMgICAgIHwg IDIwICsKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUEuQyB8ICAg NyArCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1CLkMgfCAgIDcg KwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQy5DIHwgICA5ICsK IC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUQuQyB8ICAgOCArCiAu Li4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1FLkMgfCAgIDggKwogLi4u L2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MxLkMgIHwgMTM5ICsrKysrCiAu Li4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczIuQyAgfCAgMjYgKwogLi4u L2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M0LkMgIHwgIDIwICsKIC4uLi9n KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNS5DICB8ICAxNiArCiAuLi4vZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczYuQyAgfCAgMjMgKwogLi4uL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M3LkMgIHwgIDE3ICsKIC4uLi9nKysuZGcv Y3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYTEuQyAgICAgICB8ICAyNSArCiAuLi4vZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1sYW1iZGEyLkMgICAgICAgfCAgMjMgKwogLi4uL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotbGFtYmRhMy5DICAgICAgIHwgIDY0ICsrKwogLi4uL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotbGFtYmRhWDAuQyAgICAgIHwgIDMwICsrCiAuLi4vZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1sYW1iZGFYMjAuQyAgICAgfCAgNDYgKysKIC4uLi9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWxhbWJkYVgyMS5DICAgICB8ICAzOSArKwogLi4uL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotbGFtYmRhWDI1LkMgICAgIHwgMTAyICsrKysKIC4uLi9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWxhbWJkYVg0LkMgICAgICB8ICAyMyArCiAuLi4vZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1sYW1iZGFYNDAuQyAgICAgfCAgMTggKwogLi4uL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotbGFtYmRhWDUuQyAgICAgIHwgIDIxICsKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWxhbWJkYVg2LkMgICAgICB8ICA0OCArKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotbGFtYmRhWDcuQyAgICAgIHwgIDg3ICsrKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotb3BzLW1lbS1hcnJvdy5DIHwgIDI4ICsKIC4uLi9jcHAyMy9leHBsaWNpdC1vYmotb3Bz LW1lbS1hc3NpZ25tZW50LkMgICB8ICAyNyArCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1vcHMtbWVtLWNhbGwuQyAgfCAgNDAgKysKIC4uLi9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1l bS1zdWJzY3JpcHQuQyAgICB8ICA0MCArKwogLi4uL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbm9u LW1lbS1kZXAuQyAgICAgIHwgIDU4ICsrCiAuLi4vY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1ub24t bWVtLW5vbi1kZXAuQyAgfCAgNTcgKysKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9w cy1ub24tbWVtLmggICB8IDIxMCArKysrKysrKwogLi4uL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMt cmVxdWlyZXMtbWVtLkMgICAgIHwgMTcxICsrKysrKwogLi4uL2NwcDIzL2V4cGxpY2l0LW9iai1v cHMtcmVxdWlyZXMtbm9uLW1lbS5DIHwgMjM3ICsrKysrKysrKwogLi4uL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotcmVkZWNsLkMgICAgICAgIHwgMjQ2ICsrKysrKysrKwogLi4uL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotcmVkZWNsMi5DICAgICAgIHwgMTYxICsrKysrKwogLi4uL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotdmlydHVhbC5DICAgICAgIHwgIDk1ICsrKysKIDU2IGZpbGVz IGNoYW5nZWQsIDM4NjcgaW5zZXJ0aW9ucygrKSwgMTQ0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzEu QwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1iYXNpYzIuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1iYXNpYzMuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzQuQwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1ieS12YWx1ZTEuQwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1i eS12YWx1ZTIuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1ieS12YWx1ZTMuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1ieS12YWx1ZTQuQwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1B LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotY3h4LWRpYWxlY3QtQi5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUMuQwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1E LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotY3h4LWRpYWxlY3QtRS5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzMS5DCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzMi5D CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWRpYWdub3N0aWNzNC5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNS5DCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNi5DCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWRpYWdub3N0aWNzNy5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv Y3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYTEuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGEyLkMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhMy5DCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWxhbWJkYVgwLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotbGFtYmRhWDIwLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDIxLkMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDI1LkMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotbGFtYmRhWDQuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYNDAuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYNS5DCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVg2LkMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotbGFtYmRhWDcuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1vcHMtbWVtLWFycm93LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1lbS1hc3NpZ25tZW50LkMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v Ymotb3BzLW1lbS1jYWxsLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1lbS1zdWJzY3JpcHQuQwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbm9uLW1lbS1k ZXAuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxp Y2l0LW9iai1vcHMtbm9uLW1lbS1ub24tZGVwLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW5vbi1tZW0uaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtcmVx dWlyZXMtbWVtLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotb3BzLXJlcXVpcmVzLW5vbi1tZW0uQwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1yZWRlY2wuQwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1yZWRl Y2wyLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotdmlydHVhbC5DCgpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2NhbGwuY2MgYi9nY2MvY3Av Y2FsbC5jYwppbmRleCAyZWI1NGI1YjZlZC4uYTkwMGM5NjkxODIgMTAwNjQ0Ci0tLSBhL2djYy9j cC9jYWxsLmNjCisrKyBiL2djYy9jcC9jYWxsLmNjCkBAIC02NTI3LDcgKzY1MjcsNyBAQCBhZGRf Y2FuZGlkYXRlcyAodHJlZSBmbnMsIHRyZWUgZmlyc3RfYXJnLCBjb25zdCB2ZWM8dHJlZSwgdmFf Z2M+ICphcmdzLAogICAgICAgdHJlZSBmbl9maXJzdF9hcmcgPSBOVUxMX1RSRUU7CiAgICAgICBj b25zdCB2ZWM8dHJlZSwgdmFfZ2M+ICpmbl9hcmdzID0gYXJnczsKIAotICAgICAgaWYgKERFQ0xf Tk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbikpCisgICAgICBpZiAoREVDTF9PQkpFQ1Rf TUVNQkVSX0ZVTkNfUCAoZm4pKQogCXsKIAkgIC8qIEZpZ3VyZSBvdXQgd2hlcmUgdGhlIG9iamVj dCBhcmcgY29tZXMgZnJvbS4gIElmIHRoaXMKIAkgICAgIGZ1bmN0aW9uIGlzIGEgbm9uLXN0YXRp YyBtZW1iZXIgYW5kIHdlIGRpZG4ndCBnZXQgYW4KQEAgLTk3MjgsMTQgKzk3MjgsOSBAQCBidWls ZF9vdmVyX2NhbGwgKHN0cnVjdCB6X2NhbmRpZGF0ZSAqY2FuZCwgaW50IGZsYWdzLCB0c3Vic3Rf ZmxhZ3NfdCBjb21wbGFpbikKICAgY29uc3QgdmVjPHRyZWUsIHZhX2djPiAqYXJncyA9IGNhbmQt PmFyZ3M7CiAgIHRyZWUgZmlyc3RfYXJnID0gY2FuZC0+Zmlyc3RfYXJnOwogICBjb252ZXJzaW9u ICoqY29udnMgPSBjYW5kLT5jb252czsKLSAgY29udmVyc2lvbiAqY29udjsKICAgdHJlZSBwYXJt ID0gVFlQRV9BUkdfVFlQRVMgKFRSRUVfVFlQRSAoZm4pKTsKICAgaW50IHBhcm1sZW47CiAgIHRy ZWUgdmFsOwotICBpbnQgaSA9IDA7Ci0gIGludCBqID0gMDsKLSAgdW5zaWduZWQgaW50IGFyZ19p bmRleCA9IDA7Ci0gIGludCBpc19tZXRob2QgPSAwOwogICBpbnQgbmFyZ3M7CiAgIHRyZWUgKmFy Z2FycmF5OwogICBib29sIGFscmVhZHlfdXNlZCA9IGZhbHNlOwpAQCAtOTkyMSw0NSArOTkxNiw0 NiBAQCBidWlsZF9vdmVyX2NhbGwgKHN0cnVjdCB6X2NhbmRpZGF0ZSAqY2FuZCwgaW50IGZsYWdz LCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFpbikKICAgaWYgKGltbWVkaWF0ZV9pbnZvY2F0aW9uX3Ag KFNUUklQX1RFTVBMQVRFIChmbikpKQogICAgIGluX2NvbnN0ZXZhbF9pZl9wID0gdHJ1ZTsKIAor ICBpbnQgYXJnYXJyYXlfc2l6ZSA9IDA7CisgIHVuc2lnbmVkIGludCBhcmdfaW5kZXggPSAwOwor ICBpbnQgY29udl9pbmRleCA9IDA7CisgIGludCBwYXJhbV9pbmRleCA9IDA7CisKKyAgYXV0byBj b25zdW1lX29iamVjdF9hcmcgPSBbJmFyZ19pbmRleCwgJmZpcnN0X2FyZywgYXJnc10oKQorICAg IHsKKyAgICAgIGlmICghZmlyc3RfYXJnKQorCXJldHVybiAoKmFyZ3MpW2FyZ19pbmRleCsrXTsK KyAgICAgIHRyZWUgb2JqZWN0X2FyZyA9IGZpcnN0X2FyZzsKKyAgICAgIGZpcnN0X2FyZyA9IE5V TExfVFJFRTsKKyAgICAgIHJldHVybiBvYmplY3RfYXJnOworICAgIH07CisKICAgLyogVGhlIGlt cGxpY2l0IHBhcmFtZXRlcnMgdG8gYSBjb25zdHJ1Y3RvciBhcmUgbm90IGNvbnNpZGVyZWQgYnkg b3ZlcmxvYWQKICAgICAgcmVzb2x1dGlvbiwgYW5kIG11c3QgYmUgb2YgdGhlIHByb3BlciB0eXBl LiAgKi8KICAgaWYgKERFQ0xfQ09OU1RSVUNUT1JfUCAoZm4pKQogICAgIHsKLSAgICAgIHRyZWUg b2JqZWN0X2FyZzsKLSAgICAgIGlmIChmaXJzdF9hcmcgIT0gTlVMTF9UUkVFKQotCXsKLQkgIG9i amVjdF9hcmcgPSBmaXJzdF9hcmc7Ci0JICBmaXJzdF9hcmcgPSBOVUxMX1RSRUU7Ci0JfQotICAg ICAgZWxzZQotCXsKLQkgIG9iamVjdF9hcmcgPSAoKmFyZ3MpW2FyZ19pbmRleF07Ci0JICArK2Fy Z19pbmRleDsKLQl9Ci0gICAgICBhcmdhcnJheVtqKytdID0gYnVpbGRfdGhpcyAob2JqZWN0X2Fy Zyk7CisgICAgICB0cmVlIG9iamVjdF9hcmcgPSBjb25zdW1lX29iamVjdF9hcmcgKCk7CisgICAg ICBhcmdhcnJheVthcmdhcnJheV9zaXplKytdID0gYnVpbGRfdGhpcyAob2JqZWN0X2FyZyk7CiAg ICAgICBwYXJtID0gVFJFRV9DSEFJTiAocGFybSk7CiAgICAgICAvKiBXZSBzaG91bGQgbmV2ZXIg dHJ5IHRvIGNhbGwgdGhlIGFic3RyYWN0IGNvbnN0cnVjdG9yLiAgKi8KICAgICAgIGdjY19hc3Nl cnQgKCFERUNMX0hBU19JTl9DSEFSR0VfUEFSTV9QIChmbikpOwogCiAgICAgICBpZiAoREVDTF9I QVNfVlRUX1BBUk1fUCAoZm4pKQogCXsKLQkgIGFyZ2FycmF5W2orK10gPSAoKmFyZ3MpW2FyZ19p bmRleF07CisJICBhcmdhcnJheVthcmdhcnJheV9zaXplKytdID0gKCphcmdzKVthcmdfaW5kZXhd OwogCSAgKythcmdfaW5kZXg7CiAJICBwYXJtID0gVFJFRV9DSEFJTiAocGFybSk7CiAJfQogICAg IH0KICAgLyogQnlwYXNzIGFjY2VzcyBjb250cm9sIGZvciAndGhpcycgcGFyYW1ldGVyLiAgKi8K LSAgZWxzZSBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKGZuKSkgPT0gTUVUSE9EX1RZUEUpCisg IGVsc2UgaWYgKERFQ0xfSU9CSl9NRU1CRVJfRlVOQ19QIChmbikpCiAgICAgewotICAgICAgdHJl ZSBhcmcgPSBidWlsZF90aGlzIChmaXJzdF9hcmcgIT0gTlVMTF9UUkVFCi0JCQkgICAgID8gZmly c3RfYXJnCi0JCQkgICAgIDogKCphcmdzKVthcmdfaW5kZXhdKTsKKyAgICAgIHRyZWUgYXJnID0g YnVpbGRfdGhpcyAoY29uc3VtZV9vYmplY3RfYXJnICgpKTsKICAgICAgIHRyZWUgYXJndHlwZSA9 IFRSRUVfVFlQRSAoYXJnKTsKIAogICAgICAgaWYgKGFyZyA9PSBlcnJvcl9tYXJrX25vZGUpCiAJ cmV0dXJuIGVycm9yX21hcmtfbm9kZTsKLQotICAgICAgaWYgKGNvbnZzW2ldLT5iYWRfcCkKKyAg ICAgIGlmIChjb252c1tjb252X2luZGV4KytdLT5iYWRfcCkKIAl7CiAJICBpZiAoY29tcGxhaW4g JiB0Zl9lcnJvcikKIAkgICAgewpAQCAtMTAwMzQsMjUgKzEwMDMwLDU3IEBAIGJ1aWxkX292ZXJf Y2FsbCAoc3RydWN0IHpfY2FuZGlkYXRlICpjYW5kLCBpbnQgZmxhZ3MsIHRzdWJzdF9mbGFnc190 IGNvbXBsYWluKQogICAgICAgdHJlZSBjb252ZXJ0ZWRfYXJnID0gYnVpbGRfYmFzZV9wYXRoIChQ TFVTX0VYUFIsIGFyZywKIAkJCQkJICAgIGJhc2VfYmluZm8sIDEsIGNvbXBsYWluKTsKIAotICAg ICAgYXJnYXJyYXlbaisrXSA9IGNvbnZlcnRlZF9hcmc7CisgICAgICBhcmdhcnJheVthcmdhcnJh eV9zaXplKytdID0gY29udmVydGVkX2FyZzsKICAgICAgIHBhcm0gPSBUUkVFX0NIQUlOIChwYXJt KTsKLSAgICAgIGlmIChmaXJzdF9hcmcgIT0gTlVMTF9UUkVFKQotCWZpcnN0X2FyZyA9IE5VTExf VFJFRTsKKyAgICB9CisKKyAgYXV0byBoYW5kbGVfYXJnID0gW2ZuLCBmbGFncywgY29tcGxhaW5d KHRyZWUgdHlwZSwKKyAgCQkJCQkgIHRyZWUgYXJnLAorCQkJCQkgIGludCBjb25zdCBwYXJhbV9p bmRleCwKKwkJCQkJICBjb252ZXJzaW9uICpjb252LAorCQkJCQkgIGJvb2wgY29uc3QgY29udmVy c2lvbl93YXJuaW5nKQorICAgIHsKKyAgICAgIC8qIFNldCB1c2VyX2NvbnZfcCBvbiB0aGUgYXJn dW1lbnQgY29udmVyc2lvbnMsIHNvIHJ2YWx1ZS9iYXNlIGhhbmRsaW5nCisJIGtub3dzIG5vdCB0 byBhbGxvdyBhbnkgbW9yZSBVRENzLiAgVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgd2UKKwkg cHJvY2VzcyBjYW5kLT53YXJuaW5ncy4gICovCisgICAgICBpZiAoZmxhZ3MgJiBMT09LVVBfTk9f Q09OVkVSU0lPTikKKwljb252LT51c2VyX2NvbnZfcCA9IHRydWU7CisKKyAgICAgIHRzdWJzdF9m bGFnc190IGNvbnN0IGFyZ19jb21wbGFpbgorCT0gY29udmVyc2lvbl93YXJuaW5nID8gY29tcGxh aW4gOiBjb21wbGFpbiAmIH50Zl93YXJuaW5nOworCisgICAgICBpZiAoYXJnX2NvbXBsYWluICYg dGZfd2FybmluZykKKwltYXliZV93YXJuX3Blc3NpbWl6aW5nX21vdmUgKGFyZywgdHlwZSwgLypy ZXR1cm5fcCovZmFsc2UpOworCisgICAgICB0cmVlIHZhbCA9IGNvbnZlcnRfbGlrZV93aXRoX2Nv bnRleHQgKGNvbnYsIGFyZywgZm4sCisgICAgICAJCQkJCSAgICBwYXJhbV9pbmRleCwgYXJnX2Nv bXBsYWluKTsKKyAgICAgIHZhbCA9IGNvbnZlcnRfZm9yX2FyZ19wYXNzaW5nICh0eXBlLCB2YWws IGFyZ19jb21wbGFpbik7CisgICAgICByZXR1cm4gdmFsOworICAgIH07CisKKyAgaWYgKERFQ0xf WE9CSl9NRU1CRVJfRlVOQ19QIChmbikpCisgICAgeworICAgICAgZ2NjX2Fzc2VydCAoY2FuZC0+ bnVtX2NvbnZzID4gMCk7CisgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY29udmVyc2lvbl93 YXJuaW5nID0gdHJ1ZTsKKyAgICAgIHRyZWUgb2JqZWN0X2FyZyA9IGNvbnN1bWVfb2JqZWN0X2Fy ZyAoKTsKKyAgICAgIHZhbCA9IGhhbmRsZV9hcmcoVFJFRV9WQUxVRSAocGFybSksCisJCSAgICAg ICBvYmplY3RfYXJnLAorCQkgICAgICAgcGFyYW1faW5kZXgrKywKKwkJICAgICAgIGNvbnZzW2Nv bnZfaW5kZXgrK10sCisJCSAgICAgICBjb252ZXJzaW9uX3dhcm5pbmcpOworCisgICAgICBpZiAo dmFsID09IGVycm9yX21hcmtfbm9kZSkKKyAgICAgICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsK ICAgICAgIGVsc2UKLQkrK2FyZ19pbmRleDsKLSAgICAgICsraTsKLSAgICAgIGlzX21ldGhvZCA9 IDE7CisgICAgICAgIGFyZ2FycmF5W2FyZ2FycmF5X3NpemUrK10gPSB2YWw7CisgICAgICBwYXJt ID0gVFJFRV9DSEFJTiAocGFybSk7CiAgICAgfQogCiAgIGdjY19hc3NlcnQgKGZpcnN0X2FyZyA9 PSBOVUxMX1RSRUUpOwogICBmb3IgKDsgYXJnX2luZGV4IDwgdmVjX3NhZmVfbGVuZ3RoIChhcmdz KSAmJiBwYXJtOwotICAgICAgIHBhcm0gPSBUUkVFX0NIQUlOIChwYXJtKSwgKythcmdfaW5kZXgs ICsraSkKKyAgICAgICBwYXJtID0gVFJFRV9DSEFJTiAocGFybSksICsrYXJnX2luZGV4LCArK3Bh cmFtX2luZGV4LCArK2NvbnZfaW5kZXgpCiAgICAgewotICAgICAgdHJlZSB0eXBlID0gVFJFRV9W QUxVRSAocGFybSk7Ci0gICAgICB0cmVlIGFyZyA9ICgqYXJncylbYXJnX2luZGV4XTsKLSAgICAg IGJvb2wgY29udmVyc2lvbl93YXJuaW5nID0gdHJ1ZTsKLQotICAgICAgY29udiA9IGNvbnZzW2ld OworICAgICAgdHJlZSBjdXJyZW50X2FyZyA9ICgqYXJncylbYXJnX2luZGV4XTsKIAogICAgICAg LyogSWYgdGhlIGFyZ3VtZW50IGlzIE5VTEwgYW5kIHVzZWQgdG8gKGltcGxpY2l0bHkpIGluc3Rh bnRpYXRlIGEKICAgICAgICAgIHRlbXBsYXRlIGZ1bmN0aW9uIChhbmQgYmluZCBvbmUgb2YgdGhl IHRlbXBsYXRlIGFyZ3VtZW50cyB0bwpAQCAtMTAwNzQsNDcgKzEwMTAyLDM1IEBAIGJ1aWxkX292 ZXJfY2FsbCAoc3RydWN0IHpfY2FuZGlkYXRlICpjYW5kLCBpbnQgZmxhZ3MsIHRzdWJzdF9mbGFn c190IGNvbXBsYWluKQogICAgICAgICAgICAgIGZ1bmMoTlVMTCk7CiAgICAgICAgICAgIH0KICAg ICAgICovCi0gICAgICBpZiAobnVsbF9ub2RlX3AgKGFyZykKLSAgICAgICAgICAmJiBERUNMX1RF TVBMQVRFX0lORk8gKGZuKQotICAgICAgICAgICYmIGNhbmQtPnRlbXBsYXRlX2RlY2wKLQkgICYm ICFjYW5kLT5leHBsaWNpdF90YXJncykKLSAgICAgICAgY29udmVyc2lvbl93YXJuaW5nID0gZmFs c2U7Ci0KLSAgICAgIC8qIFNldCB1c2VyX2NvbnZfcCBvbiB0aGUgYXJndW1lbnQgY29udmVyc2lv bnMsIHNvIHJ2YWx1ZS9iYXNlIGhhbmRsaW5nCi0JIGtub3dzIG5vdCB0byBhbGxvdyBhbnkgbW9y ZSBVRENzLiAgVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgd2UKLQkgcHJvY2VzcyBjYW5kLT53 YXJuaW5ncy4gICovCi0gICAgICBpZiAoZmxhZ3MgJiBMT09LVVBfTk9fQ09OVkVSU0lPTikKLQlj b252LT51c2VyX2NvbnZfcCA9IHRydWU7Ci0KLSAgICAgIHRzdWJzdF9mbGFnc190IGFyZ19jb21w bGFpbiA9IGNvbXBsYWluOwotICAgICAgaWYgKCFjb252ZXJzaW9uX3dhcm5pbmcpCi0JYXJnX2Nv bXBsYWluICY9IH50Zl93YXJuaW5nOwotCi0gICAgICBpZiAoYXJnX2NvbXBsYWluICYgdGZfd2Fy bmluZykKLQltYXliZV93YXJuX3Blc3NpbWl6aW5nX21vdmUgKGFyZywgdHlwZSwgLypyZXR1cm5f cCovZmFsc2UpOworICAgICAgYm9vbCBjb25zdCBjb252ZXJzaW9uX3dhcm5pbmcgPSAhKG51bGxf bm9kZV9wIChjdXJyZW50X2FyZykKKwkJCQkJJiYgREVDTF9URU1QTEFURV9JTkZPIChmbikKKwkJ CQkJJiYgY2FuZC0+dGVtcGxhdGVfZGVjbAorCQkJCQkmJiAhY2FuZC0+ZXhwbGljaXRfdGFyZ3Mp OwogCi0gICAgICB2YWwgPSBjb252ZXJ0X2xpa2Vfd2l0aF9jb250ZXh0IChjb252LCBhcmcsIGZu LCBpIC0gaXNfbWV0aG9kLAotCQkJCSAgICAgICBhcmdfY29tcGxhaW4pOwotICAgICAgdmFsID0g Y29udmVydF9mb3JfYXJnX3Bhc3NpbmcgKHR5cGUsIHZhbCwgYXJnX2NvbXBsYWluKTsKKyAgICAg IHZhbCA9IGhhbmRsZV9hcmcgKFRSRUVfVkFMVUUgKHBhcm0pLAorCQkJY3VycmVudF9hcmcsCisJ CQlwYXJhbV9pbmRleCwKKwkJCWNvbnZzW2NvbnZfaW5kZXhdLAorCQkJY29udmVyc2lvbl93YXJu aW5nKTsKIAogICAgICAgaWYgKHZhbCA9PSBlcnJvcl9tYXJrX25vZGUpCiAgICAgICAgIHJldHVy biBlcnJvcl9tYXJrX25vZGU7CiAgICAgICBlbHNlCi0gICAgICAgIGFyZ2FycmF5W2orK10gPSB2 YWw7CisgICAgICAgIGFyZ2FycmF5W2FyZ2FycmF5X3NpemUrK10gPSB2YWw7CiAgICAgfQogCiAg IC8qIERlZmF1bHQgYXJndW1lbnRzICovCi0gIGZvciAoOyBwYXJtICYmIHBhcm0gIT0gdm9pZF9s aXN0X25vZGU7IHBhcm0gPSBUUkVFX0NIQUlOIChwYXJtKSwgaSsrKQorICBmb3IgKDsgcGFybSAm JiBwYXJtICE9IHZvaWRfbGlzdF9ub2RlOyBwYXJtID0gVFJFRV9DSEFJTiAocGFybSksIHBhcmFt X2luZGV4KyspCiAgICAgewogICAgICAgaWYgKFRSRUVfVkFMVUUgKHBhcm0pID09IGVycm9yX21h cmtfbm9kZSkKIAlyZXR1cm4gZXJyb3JfbWFya19ub2RlOwogICAgICAgdmFsID0gY29udmVydF9k ZWZhdWx0X2FyZyAoVFJFRV9WQUxVRSAocGFybSksCiAJCQkJIFRSRUVfUFVSUE9TRSAocGFybSks Ci0JCQkJIGZuLCBpIC0gaXNfbWV0aG9kLAorCQkJCSBmbiwgcGFyYW1faW5kZXgsCiAJCQkJIGNv bXBsYWluKTsKICAgICAgIGlmICh2YWwgPT0gZXJyb3JfbWFya19ub2RlKQogICAgICAgICByZXR1 cm4gZXJyb3JfbWFya19ub2RlOwotICAgICAgYXJnYXJyYXlbaisrXSA9IHZhbDsKKyAgICAgIGFy Z2FycmF5W2FyZ2FycmF5X3NpemUrK10gPSB2YWw7CiAgICAgfQogCiAgIC8qIEVsbGlwc2lzICov CkBAIC0xMDE1MSwxMSArMTAxNjcsMTEgQEAgYnVpbGRfb3Zlcl9jYWxsIChzdHJ1Y3Qgel9jYW5k aWRhdGUgKmNhbmQsIGludCBmbGFncywgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiAJYSA9IGNv bnZlcnRfYXJnX3RvX2VsbGlwc2lzIChhLCBjb21wbGFpbik7CiAgICAgICBpZiAoYSA9PSBlcnJv cl9tYXJrX25vZGUpCiAJcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKLSAgICAgIGFyZ2FycmF5W2or K10gPSBhOworICAgICAgYXJnYXJyYXlbYXJnYXJyYXlfc2l6ZSsrXSA9IGE7CiAgICAgfQogCi0g IGdjY19hc3NlcnQgKGogPD0gbmFyZ3MpOwotICBuYXJncyA9IGo7CisgIGdjY19hc3NlcnQgKGFy Z2FycmF5X3NpemUgPD0gbmFyZ3MpOworICBuYXJncyA9IGFyZ2FycmF5X3NpemU7CiAgIGljaXAu cmVzZXQgKCk7CiAKICAgLyogQXZvaWQgcGVyZm9ybWluZyBhcmd1bWVudCB0cmFuc2Zvcm1hdGlv biBpZiB3YXJuaW5ncyBhcmUgZGlzYWJsZWQuCkBAIC0xMDE3MSw3ICsxMDE4Nyw3IEBAIGJ1aWxk X292ZXJfY2FsbCAoc3RydWN0IHpfY2FuZGlkYXRlICpjYW5kLCBpbnQgZmxhZ3MsIHRzdWJzdF9m bGFnc190IGNvbXBsYWluKQogICAgIHsKICAgICAgIHRyZWUgKmZhcmdzID0gKCFuYXJncyA/IGFy Z2FycmF5CiAJCQkgICAgOiAodHJlZSAqKSBhbGxvY2EgKG5hcmdzICogc2l6ZW9mICh0cmVlKSkp OwotICAgICAgZm9yIChqID0gMDsgaiA8IG5hcmdzOyBqKyspCisgICAgICBmb3IgKGludCBqID0g MDsgaiA8IG5hcmdzOyBqKyspCiAJewogCSAgLyogRm9yIC1XZm9ybWF0IHVuZG8gdGhlIGltcGxp Y2l0IHBhc3NpbmcgYnkgaGlkZGVuIHJlZmVyZW5jZQogCSAgICAgZG9uZSBieSBjb252ZXJ0X2Fy Z190b19lbGxpcHNpcy4gICovCmRpZmYgLS1naXQgYS9nY2MvY3AvY2xhc3MuY2MgYi9nY2MvY3Av Y2xhc3MuY2MKaW5kZXggMGQ4Yjc4MGJhMmYuLmY5MjFiOGE1MWIxIDEwMDY0NAotLS0gYS9nY2Mv Y3AvY2xhc3MuY2MKKysrIGIvZ2NjL2NwL2NsYXNzLmNjCkBAIC0xMDc5LDggKzEwNzksOCBAQCBh ZGRfbWV0aG9kICh0cmVlIHR5cGUsIHRyZWUgbWV0aG9kLCBib29sIHZpYV91c2luZykKICAgICAg IC8qIENvbXBhcmUgdGhlIHF1YWxzIG9uIHRoZSAndGhpcycgcGFybS4gIERvbid0IGNvbXBhcmUK IAkgdGhlIHdob2xlIHR5cGVzLCBhcyB1c2VkIGZ1bmN0aW9ucyBhcmUgdHJlYXRlZCBhcwogCSBj b21pbmcgZnJvbSB0aGUgdXNpbmcgY2xhc3MgaW4gb3ZlcmxvYWQgcmVzb2x1dGlvbi4gICovCi0g ICAgICBpZiAoISBERUNMX1NUQVRJQ19GVU5DVElPTl9QIChmbikKLQkgICYmICEgREVDTF9TVEFU SUNfRlVOQ1RJT05fUCAobWV0aG9kKQorICAgICAgaWYgKERFQ0xfSU9CSl9NRU1CRVJfRlVOQ19Q IChmbikKKwkgICYmIERFQ0xfSU9CSl9NRU1CRVJfRlVOQ19QIChtZXRob2QpCiAJICAvKiBFaXRo ZXIgYm90aCBvciBuZWl0aGVyIG5lZWQgdG8gYmUgcmVmLXF1YWxpZmllZCBmb3IKIAkgICAgIGRp ZmZlcmluZyBxdWFscyB0byBhbGxvdyBvdmVybG9hZGluZy4gICovCiAJICAmJiAoRlVOQ1RJT05f UkVGX1FVQUxJRklFRCAoZm5fdHlwZSkKQEAgLTEwODksNiArMTA4OSwxNjQgQEAgYWRkX21ldGhv ZCAodHJlZSB0eXBlLCB0cmVlIG1ldGhvZCwgYm9vbCB2aWFfdXNpbmcpCiAJICAgICAgfHwgdHlw ZV9tZW1mbl9ycXVhbCAoZm5fdHlwZSkgIT0gdHlwZV9tZW1mbl9ycXVhbCAobWV0aG9kX3R5cGUp KSkKIAkgIGNvbnRpbnVlOwogCisgICAgICBhdXRvIGdldF9vYmplY3RfcGFyYW0gPSBbXSh0cmVl IGZuKQorCXsKKwkgIGdjY19hc3NlcnQgKERFQ0xfT0JKRUNUX01FTUJFUl9GVU5DX1AgKGZuKSk7 CisJICByZXR1cm4gVFJFRV9WQUxVRSAoVFlQRV9BUkdfVFlQRVMgKFRSRUVfVFlQRSAoZm4pKSk7 CisJfTsKKyAgICAgIGF1dG8gcmVmZXJlbmNlX3F1YWwgPSBbXSh0cmVlIHJlZikKKwl7CisJICBn Y2NfYXNzZXJ0IChUWVBFX1JFRl9QIChyZWYpKTsKKwkgIHJldHVybiBUWVBFX1JFRl9JU19SVkFM VUUgKHJlZikgPyBSRUZfUVVBTF9SVkFMVUUKKwkJCQkJICA6IFJFRl9RVUFMX0xWQUxVRTsKKwl9 OworCisgICAgICAvKiBIYW5kbGUgc3BlY2lhbCBjb3JyZXNwb25kZW5jZSBydWxlcyBmb3IgeG9i aiB2cyB4b2JqIGFuZCB4b2JqIHZzIGlvYmoKKwkgbWVtYmVyIGZ1bmN0aW9uIGRlY2xhcmF0aW9u cy4KKwkgV2UgZG9uJ3Qgd29ycnkgYWJvdXQgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMgaGVyZS4g ICovCisgICAgICBpZiAoKCFERUNMX1hPQkpfTUVNQkVSX0ZVTkNfUCAoZm4pICYmICFERUNMX1hP QkpfTUVNQkVSX0ZVTkNfUCAobWV0aG9kKSkKKwkgICB8fCBERUNMX1NUQVRJQ19GVU5DVElPTl9Q IChmbikgfHwgREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAobWV0aG9kKSkKKyAgICAgICAgLyogRWFy bHkgZXNjYXBlLiAgKi87CisgICAgICBlbHNlIGlmIChERUNMX1hPQkpfTUVNQkVSX0ZVTkNfUCAo Zm4pCisJICAgICAgICYmIERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QIChtZXRob2QpKQorICAgICAg ICB7CisJICB0cmVlIGZuX3BhcmFtID0gZ2V0X29iamVjdF9wYXJhbSAoZm4pOworCSAgdHJlZSBt ZXRob2RfcGFyYW0gPSBnZXRfb2JqZWN0X3BhcmFtIChtZXRob2QpOworCSAgaWYgKCFzYW1lX3R5 cGVfcCAoZm5fcGFyYW0sIG1ldGhvZF9wYXJhbSkpCisJICAgIGNvbnRpbnVlOworCX0KKyAgICAg IGVsc2UgaWYgKERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QIChmbikKKwkgICAgICAgfHwgREVDTF9Y T0JKX01FTUJFUl9GVU5DX1AgKG1ldGhvZCkpCisgICAgICAgIHsKKwkgIHRyZWUgeG9ial9mbiA9 IERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QIChmbikgPyBmbiA6IG1ldGhvZDsKKwkgIC8qIEEgcmVm ZXJlbmNlLCBwb2ludGVyLCBvciBzb21ldGhpbmcgZWxzZS4gICovCisJICB0cmVlIHhvYmpfcGFy YW0gPSBnZXRfb2JqZWN0X3BhcmFtICh4b2JqX2ZuKTsKKworCSAgLyogV2Uga25vdyBhbiBpb2Jq IHBhcmFtZXRlciBtdXN0IGJlIGEgcmVmZXJlbmNlLiBJZiBvdXIgeG9iagorCSAgICAgcGFyYW1l dGVyIGlzIGEgcG9pbnRlciwgd2Uga25vdyB0aGlzIGlzIG5vdCBhIHJlZGVjbGFyYXRpb24uCisJ ICAgICBUaGlzIGFsc28gY2F0Y2hlcyBhcnJheSBwYXJhbWV0ZXJzLCB0aG9zZSBhcmUgcG9pbnRl cnMgdG9vLiAgKi8KKwkgIGlmIChUWVBFX1BUUl9QICh4b2JqX3BhcmFtKSkKKwkgICAgY29udGlu dWU7CisKKwkgIC8qIEFuIGlvYmogbWVtYmVyIGZ1bmN0aW9uJ3Mgb2JqZWN0IHBhcmFtZXRlciBj YW4ndCBiZSBhbiB1bnJlbGF0ZWQKKwkgICAgIHR5cGUsIHdlIGtub3cgdGhpcyBjYW4ndCBiZSBh IHJlZGVjbGFyYXRpb24gaWYgdGhlIHhvYmogbWVtYmVyCisJICAgICBmdW5jdGlvbidzIG9iamVj dCBwYXJhbWV0ZXIgaXMgYW4gdW5yZWxhdGVkIHR5cGUuCisJICAgICBJZiB0aGUgaW9iaiBtZW1i ZXIgZnVuY3Rpb24gd2FzIGludHJvZHVjZWQgd2l0aCBhIHVzaW5nCisJICAgICBkZWNsYXJhdGlv biwgdGhlbiB0aGUgdHlwZSBvZiBpdHMgb2JqZWN0IHBhcmFtZXRlciBpcyBzdGlsbAorCSAgICAg dGhhdCBvZiB0aGUgY2xhc3Mgd2UgYXJlIGN1cnJlbnRseSBhZGRpbmcgYSBtZW1iZXIgZnVuY3Rp b24gdG8sCisJICAgICBzbyB0aGlzIGFzc3VtcHRpb24gaG9sZHMgdHJ1ZSBpbiB0aGF0IGNhc2Ug YXMgd2VsbC4KKworCSAgICAgW292ZXIubWF0Y2guZnVuY3MuZ2VuZXJhbC40XQorCSAgICAgRm9y IG5vbi1jb252ZXJzaW9uIGZ1bmN0aW9ucyB0aGF0IGFyZSBpbXBsaWNpdCBvYmplY3QgbWVtYmVy CisJICAgICBmdW5jdGlvbnMgbm9taW5hdGVkIGJ5IGEgdXNpbmctZGVjbGFyYXRpb24gaW4gYSBk ZXJpdmVkIGNsYXNzLAorCSAgICAgdGhlIGZ1bmN0aW9uIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSBt ZW1iZXIgb2YgdGhlIGRlcml2ZWQgY2xhc3MKKwkgICAgIGZvciB0aGUgcHVycG9zZSBvZiBkZWZp bmluZyB0aGUgdHlwZSBvZiB0aGUgaW1wbGljaXQgb2JqZWN0CisJICAgICBwYXJhbWV0ZXIuCisJ ICAgICAKKwkgICAgIFdlIGRvbid0IGdldCB0byBiYWlsIHlldCBvdXQgZXZlbiBpZiB0aGUgeG9i aiBwYXJhbWV0ZXIgaXMKKwkgICAgIGJ5LXZhbHVlIGFzIGVsYWJvcmF0ZWQgb24gYmVsb3cuICAq LworCSAgaWYgKERFQ0xfQ09OVEVYVCAoeG9ial9mbikKKwkgICAgICAhPSBUWVBFX01BSU5fVkFS SUFOVCAobm9uX3JlZmVyZW5jZSAoeG9ial9wYXJhbSkpKQorCSAgICBjb250aW51ZTsKKworCSAg LyogRnJvbSB0aGlzIHBvaW50IG9uLCB3ZSBrbm93IHdlIGFyZSBkZWFsaW5nIHdpdGggYW4geG9i aiBwYXJhbWV0ZXIKKwkgICAgIHRoYXQgaGFzIGFuIG9iamVjdCBwYXJhbWV0ZXIgb2YgdGhlIHNh bWUgdHlwZSBhcyB0aGUgY2xhc3MgaXQKKwkgICAgIHdhcyBkZWNsYXJlZCBpbi4KKwkgICAgIFdl IHN0aWxsIGRvbid0IGtub3cgaWYgd2UgaGF2ZSBhIHJlZmVyZW5jZSBvciBieS12YWx1ZSBwYXJh bWV0ZXIKKwkgICAgIHlldCB0aG91Z2guICAqLworCisJICB0cmVlIGlvYmpfZm4gPSBERUNMX0lP QkpfTUVNQkVSX0ZVTkNfUCAoZm4pID8gZm4gOiBtZXRob2Q7CisJICB0cmVlIGlvYmpfZm5fdHlw ZSA9IFRSRUVfVFlQRSAoaW9ial9mbik7CisJICBjcF9yZWZfcXVhbGlmaWVyIGNvbnN0IGlvYmpf cmVmX3F1YWwKKwkgICAgPSB0eXBlX21lbWZuX3JxdWFsIChpb2JqX2ZuX3R5cGUpOworCSAgLyog SSBhbSBjb25jZXJuZWQgYWJvdXQgdGhlIG90aGVyIHF1YWxpZmllciBiaXRzLCBmb3Igbm93IEkg d2lsbCBtYXNrCisJICAgICB0aGVtIG9mZi4gICovCisJICBzdGF0aWMgY29uc3RleHByIGNwX2N2 X3F1YWxzIGN2X2JpdHMgPSBUWVBFX1FVQUxfVk9MQVRJTEUKKwkJCQkJICAgICAgIHwgVFlQRV9R VUFMX0NPTlNUOworCSAgY3BfY3ZfcXVhbHMgY29uc3QgaW9ial9jdl9xdWFscworCSAgICA9IHR5 cGVfbWVtZm5fcXVhbHMgKGlvYmpfZm5fdHlwZSkgJiBjdl9iaXRzOworCSAgLyogV2UgbmVlZCB0 byBpZ25vcmUgdGhlIHJlZiBxdWFsaWZpZXIgb2YgdGhlIHhvYmogcGFyYW1ldGVyIGlmIHRoZQor CSAgICAgaW9iaiBtZW1iZXIgZnVuY3Rpb24gbGFja3MgYSByZWYgcXVhbGlmaWVyLgorCisJICAg ICBbYmFzaWMuc2NvcGUuc2NvcGUuM10KKwkgICAgIFR3byBub24tc3RhdGljIG1lbWJlciBmdW5j dGlvbnMgaGF2ZSBjb3JyZXNwb25kaW5nIG9iamVjdAorCSAgICAgcGFyYW1ldGVycyBpZjoKKwkg ICAgIC0tIGV4YWN0bHkgb25lIGlzIGFuIGltcGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g d2l0aCBubworCQlyZWYtcXVhbGlmaWVyIGFuZCB0aGUgdHlwZXMgb2YgdGhlaXIgb2JqZWN0IHBh cmFtZXRlcnMKKwkJKFtkY2wuZmN0XSksIGFmdGVyIHJlbW92aW5nIHRvcC1sZXZlbCByZWZlcmVu Y2VzLCBhcmUgdGhlCisJCXNhbWUsIG9yCisJICAgICAtLSB0aGVpciBvYmplY3QgcGFyYW1ldGVy cyBoYXZlIHRoZSBzYW1lIHR5cGUuCisKKwkgICAgIFRoZSBjdiBxdWFsaWZpZXJzIG9mIGEgYnkt dmFsdWUgcGFyYW1ldGVyIGFyZSBzdXBwb3NlZCB0byBiZQorCSAgICAgZGlzY2FyZGVkLCBzbyB3 ZSBpZ25vcmUgdGhlbS4KKworCSAgICAgW2RjbC5mY3QuNV0KKwkgICAgIEFmdGVyIHByb2R1Y2lu ZyB0aGUgbGlzdCBvZiBwYXJhbWV0ZXIgdHlwZXMsIGFueSB0b3AtbGV2ZWwKKwkgICAgIGN2LXF1 YWxpZmllcnMgbW9kaWZ5aW5nIGEgcGFyYW1ldGVyIHR5cGUgYXJlIGRlbGV0ZWQgd2hlbgorCSAg ICAgZm9ybWluZyB0aGUgZnVuY3Rpb24gdHlwZS4KKworCSAgICAgVGhleSBzdGlsbCBuZWVkIHRv IGJlIHRha2VuIGludG8gYWNjb3VudCB3aGVuIG91ciB4b2JqIHBhcmFtZXRlcgorCSAgICAgaXMg YSByZWZlcmVuY2UgdGhhdCBpcyBiZWluZyBpZ25vcmVkIChhY2NvcmRpbmcgdG8KKwkgICAgIFti YXNpYy5zY29wZS5zY29wZS4zXSBxdW90ZWQgYWJvdmUpLCBidXQgd2hlbiB3ZSBhcmUgYWN0dWFs bHkKKwkgICAgIGRlYWxpbmcgd2l0aCBhIGJ5LXZhbHVlIHhvYmogcGFyYW1ldGVyIHdlIGNhbiBw cm9jZWRlIGZvbGxvd2luZworCSAgICAgdGhpcyB0YWJsZS4KKwkgICAgIHwgaW9iaiB8IHhvYmog fCBlcXVhbCB8CisJICAgICB8IG5vbmUgfCBub25lIHwgICBYICAgfAorCSAgICAgfCBub25lIHwg ICAgYyB8ICAgWCAgIHwKKwkgICAgIHwgbm9uZSB8ICAgIHYgfCAgIFggICB8CisJICAgICB8IG5v bmUgfCAgIGN2IHwgICBYICAgfAorCSAgICAgfCAgICBjIHwgbm9uZSB8ICAgTyAgIHwKKwkgICAg IHwgICAgYyB8ICAgIGMgfCAgIE8gICB8CisJICAgICB8ICAgIGMgfCAgICB2IHwgICBPICAgfAor CSAgICAgfCAgICBjIHwgICBjdiB8ICAgTyAgIHwKKwkgICAgIHwgICAgdiB8IG5vbmUgfCAgIE8g ICB8CisJICAgICB8ICAgIHYgfCAgICBjIHwgICBPICAgfAorCSAgICAgfCAgICB2IHwgICAgdiB8 ICAgTyAgIHwKKwkgICAgIHwgICAgdiB8ICAgY3YgfCAgIE8gICB8CisJICAgICB8ICAgY3YgfCBu b25lIHwgICBPICAgfAorCSAgICAgfCAgIGN2IHwgICAgYyB8ICAgTyAgIHwKKwkgICAgIHwgICBj diB8ICAgIHYgfCAgIE8gICB8CisJICAgICB8ICAgY3YgfCAgIGN2IHwgICBPICAgfAorCisJICAg ICBBZGRpdGlvbmFsbHksIGlmIHRoZSBpb2JqIG1lbWJlciBmdW5jdGlvbiBpcyByZWYgcXVhbGlm aWVkLAorCSAgICAgd2UgYXJlbid0IGlnbm9yaW5nIHRoZSByZWYgcXVhbGlmaWVyIG9mIHRoZSBp b2JqIHBhcmFtZXRlciwKKwkgICAgIHNvIHdlIGNhbid0IGJlIGRlYWxpbmcgd2l0aCBhIHJlZGVj bGFyYXRpb24gaW4gdGhhdCBjYXNlIGVpdGhlci4KKworCSAgICAgU28gdG8gcmVjYXAsIGlmIHdl IGhhdmUgYSBieS12YWx1ZSB4b2JqIHBhcmFtZXRlciwgd2Uga25vdyBmb3IKKwkgICAgIHN1cmUg dGhhdCB3ZSBhcmVuJ3QgZGVhbGluZyB3aXRoIGEgcmVkZWNsYXJhdGlvbiBpZiB0aGUgaW9iagor CSAgICAgbWVtYmVyIGZ1bmN0aW9uIGhhcyBhbnkgY3YtcmVmIHF1YWxpZmllcnMuIFRoZSBvbmx5 IGNhc2Ugd2hlcmUKKwkgICAgIHdlIG1pZ2h0IHN0aWxsIGJlIGRlYWxpbmcgd2l0aCBhIHJlZGVj bGFyYXRpb24gaXMgd2hlbiB0aGUgaW9iagorCSAgICAgbWVtYmVyIGZ1bmN0aW9uIGxhY2tzIGFu eSBjdi1yZWYgcXVhbGlmaWNhdGlvbi4gICovCisJICBpZiAoIVRZUEVfUkVGX1AgKHhvYmpfcGFy YW0pKQorCSAgICB7CisJICAgICAgaWYgKGlvYmpfcmVmX3F1YWwgfHwgaW9ial9jdl9xdWFscykK KwkJY29udGludWU7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIC8qIFdlIGFyZSBk ZWFsaW5nIHdpdGggYW4geG9iaiBwYXJhbWV0ZXIgdGhhdCBpcyBhIHJlZmVyZW5jZSBub3csCisJ CSBidXQgZHVlIHRvIFtiYXNpYy5zY29wZS5zY29wZS4zXSB3ZSBuZWVkIHRvIGlnbm9yZSBpdHMK KwkJIHJlZmVyZW5jZSBxdWFsaWZpZXIuICAqLworCSAgICAgIGNwX3JlZl9xdWFsaWZpZXIgY29u c3QgeG9ial9yZWZfcXVhbAorCQk9ICFUWVBFX1JFRl9QICh4b2JqX3BhcmFtKSB8fCAhaW9ial9y ZWZfcXVhbAorCQkgID8gUkVGX1FVQUxfTk9ORSA6IHJlZmVyZW5jZV9xdWFsICh4b2JqX3BhcmFt KTsKKworCSAgICAgIC8qIEV2ZW4gaWYgd2UgYXJlIGlnbm9yaW5nIHRoZSByZWZlcmVuY2UgcXVh bGlmaWVyLCB0aGUgeG9iagorCQkgcGFyYW1ldGVyIHdhcyBzdGlsbCBhIHJlZmVyZW5jZSBzbyB3 ZSBzdGlsbCB0YWtlIHRoZSBjdgorCQkgcXVhbGlmaWVycyBpbnRvIGFjY291bnQuICAqLworCSAg ICAgIGNwX2N2X3F1YWxzIGNvbnN0IHhvYmpfY3ZfcXVhbHMKKwkJPSBjcF90eXBlX3F1YWxzIChU UkVFX1RZUEUgKHhvYmpfcGFyYW0pKSAmIGN2X2JpdHM7CisKKwkgICAgICAvKiBGaW5hbGx5LCBp ZiB0aGUgcXVhbGlmaWNhdGlvbnMgZG9uJ3QgbWF0Y2ggZXhhY3RseSwgdGhpcworCQkgZGVmaW5p dGVseSBpc24ndCBhIHJlZGVjbGFyYXRpb24uICAqLworCSAgICAgIGlmIChpb2JqX3JlZl9xdWFs ICE9IHhvYmpfcmVmX3F1YWwKKwkJICB8fCBpb2JqX2N2X3F1YWxzICE9IHhvYmpfY3ZfcXVhbHMp CisJCWNvbnRpbnVlOworCSAgICB9CisJfQorICAgICAgZWxzZQorCWdjY191bnJlYWNoYWJsZSAo KTsKKwogICAgICAgdHJlZSByZWFsX2ZuID0gZm47CiAgICAgICB0cmVlIHJlYWxfbWV0aG9kID0g bWV0aG9kOwogCkBAIC04NzI0LDIxICs4ODgyLDQyIEBAIHJlc29sdmVfYWRkcmVzc19vZl9vdmVy bG9hZGVkX2Z1bmN0aW9uICh0cmVlIHRhcmdldF90eXBlLAogICAvKiBHb29kLCBleGFjdGx5IG9u ZSBtYXRjaC4gIE5vdywgY29udmVydCBpdCB0byB0aGUgY29ycmVjdCB0eXBlLiAgKi8KICAgZm4g PSBUUkVFX1BVUlBPU0UgKG1hdGNoZXMpOwogCi0gIGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJf RlVOQ1RJT05fUCAoZm4pCi0gICAgICAmJiAhKGNvbXBsYWluICYgdGZfcHRybWVtX29rKSAmJiAh ZmxhZ19tc19leHRlbnNpb25zKQorICBpZiAoREVDTF9PQkpFQ1RfTUVNQkVSX0ZVTkNfUCAoZm4p CisgICAgICAmJiAhKGNvbXBsYWluICYgdGZfcHRybWVtX29rKSkKICAgICB7Ci0gICAgICBzdGF0 aWMgaW50IGV4cGxhaW5lZDsKLQotICAgICAgaWYgKCEoY29tcGxhaW4gJiB0Zl9lcnJvcikpCisg ICAgICAvKiBGb3IgaW9iaiBtZW1iZXIgZnVuY3Rpb25zLCBpZiBpZiAtZm1zX2V4dGVuc2lvbnMg d2FzIHBhc3NlZCBpbiwgdGhpcworCSBpcyBub3QgYW4gZXJyb3IsIHNvIHdlIGRvIG5vdGhpbmcu IEl0IGlzIHN0aWxsIGFuIGVycm9yIHJlZ2FyZGxlc3MgZm9yCisJIHhvYmogbWVtYmVyIGZ1bmN0 aW9ucyB0aG91Z2gsIGFzIGl0IGlzIGEgbmV3IGZlYXR1cmUgd2UgKGhvcGVmdWxseSkKKwkgZG9u J3QgbmVlZCB0byBzdXBwb3J0IHRoZSBiZWhhdmlvci4gICovCisgICAgICBpZiAoREVDTF9JT0JK X01FTUJFUl9GVU5DX1AgKGZuKSAmJiBmbGFnX21zX2V4dGVuc2lvbnMpCisJLyogRWFybHkgZXNj YXBlLiAgKi87CisgICAgICBlbHNlIGlmICghKGNvbXBsYWluICYgdGZfZXJyb3IpKQogCXJldHVy biBlcnJvcl9tYXJrX25vZGU7Ci0KLSAgICAgIGF1dG9fZGlhZ25vc3RpY19ncm91cCBkOwotICAg ICAgaWYgKHBlcm1lcnJvciAoaW5wdXRfbG9jYXRpb24sICJhc3N1bWluZyBwb2ludGVyIHRvIG1l bWJlciAlcUQiLCBmbikKLQkgICYmICFleHBsYWluZWQpCisgICAgICBlbHNlIGlmIChERUNMX1hP QkpfTUVNQkVSX0ZVTkNfUCAoZm4pKQogCXsKLQkgIGluZm9ybSAoaW5wdXRfbG9jYXRpb24sICIo YSBwb2ludGVyIHRvIG1lbWJlciBjYW4gb25seSBiZSAiCisJICBhdXRvX2RpYWdub3N0aWNfZ3Jv dXAgZDsKKwkgIC8qIEVycm9yIG1lc3NhZ2UgY291bGQgYmUgYmV0dGVyLCBmaXhpdCB3b3VsZCBi ZSBpZGVhbC4KKwkgICAgIFNob3VsZCBhbHNvIG1hdGNoIHRoZSBlcnJvciBpbiB0eXBlY2suY2M6 Y3BfYnVpbGRfYWRkcl9leHByXzEuICAqLworCSAgZXJyb3JfYXQgKGlucHV0X2xvY2F0aW9uLAor CQkgICAgInRha2luZyB0aGUgYWRkcmVzcyBvZiBhbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyICIK KwkJICAgICJmdW5jdGlvbiBtdXN0IGJlIHF1YWxpZmllZCIpOworCSAgaW5mb3JtIChpbnB1dF9s b2NhdGlvbiwKKwkJICAiKGEgcG9pbnRlciB0byBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uIGNhbiBvbmx5IGJlICIKIAkJICAiZm9ybWVkIHdpdGggJTwmJUUlPikiLCBmbik7Ci0JICBl eHBsYWluZWQgPSAxOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBzdGF0aWMgaW50IGV4cGxhaW5l ZDsKKwkgIGdjY19hc3NlcnQgKERFQ0xfSU9CSl9NRU1CRVJfRlVOQ19QIChmbikgJiYgIWZsYWdf bXNfZXh0ZW5zaW9ucyk7CisKKwkgIGF1dG9fZGlhZ25vc3RpY19ncm91cCBkOworCSAgaWYgKHBl cm1lcnJvciAoaW5wdXRfbG9jYXRpb24sICJhc3N1bWluZyBwb2ludGVyIHRvIG1lbWJlciAlcUQi LCBmbikKKwkgICAgICAmJiAhZXhwbGFpbmVkKQorCSAgICB7CisJICAgICAgaW5mb3JtIChpbnB1 dF9sb2NhdGlvbiwgIihhIHBvaW50ZXIgdG8gbWVtYmVyIGNhbiBvbmx5IGJlICIKKwkJCQkgICAg ICAiZm9ybWVkIHdpdGggJTwmJUUlPikiLCBmbik7CisJICAgICAgZXhwbGFpbmVkID0gMTsKKwkg ICAgfQogCX0KICAgICB9CiAKZGlmZiAtLWdpdCBhL2djYy9jcC9jcC10cmVlLmggYi9nY2MvY3Av Y3AtdHJlZS5oCmluZGV4IDk4YjI5ZTljZjgxLi5lNmNmYzYwODEwMCAxMDA2NDQKLS0tIGEvZ2Nj L2NwL2NwLXRyZWUuaAorKysgYi9nY2MvY3AvY3AtdHJlZS5oCkBAIC0yOTM4LDggKzI5MzgsOSBA QCBzdHJ1Y3QgR1RZKCgpKSBsYW5nX2RlY2xfZm4gewogICB1bnNpZ25lZCBtYXliZV9kZWxldGVk IDogMTsKICAgdW5zaWduZWQgY29yb3V0aW5lX3AgOiAxOwogICB1bnNpZ25lZCBpbXBsaWNpdF9j b25zdGV4cHIgOiAxOworICB1bnNpZ25lZCB4b2JqX2Z1bmMgOiAxOwogCi0gIHVuc2lnbmVkIHNw YXJlIDogOTsKKyAgdW5zaWduZWQgc3BhcmUgOiA4OwogCiAgIC8qIDMyLWJpdHMgcGFkZGluZyBv biA2NC1iaXQgaG9zdC4gICovCiAKQEAgLTMzMzgsMTQgKzMzMzksMzQgQEAgc3RydWN0IEdUWSgo KSkgbGFuZ19kZWNsIHsKICAgKExBTkdfREVDTF9GTl9DSEVDSyAoTk9ERSktPnN0YXRpY19mdW5j dGlvbikKIAogLyogTm9uemVybyBmb3IgRlVOQ1RJT05fREVDTCBtZWFucyB0aGF0IHRoaXMgZGVj bCBpcyBhIG5vbi1zdGF0aWMKLSAgIG1lbWJlciBmdW5jdGlvbi4gICovCisgICBtZW1iZXIgZnVu Y3Rpb24sIHVzZSBERUNMX0lPQkpfTUVNQkVSX0ZVTkNfUCBpbnN0ZWFkLiAgKi8KICNkZWZpbmUg REVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AoTk9ERSkgXAogICAoVFJFRV9DT0RFIChU UkVFX1RZUEUgKE5PREUpKSA9PSBNRVRIT0RfVFlQRSkKIAorLyogTm9uemVybyBmb3IgRlVOQ1RJ T05fREVDTCBtZWFucyB0aGF0IHRoaXMgZGVjbCBpcyBhbiBpbXBsaWNpdCBvYmplY3QKKyAgIG1l bWJlciBmdW5jdGlvbi4gICovCisjZGVmaW5lIERFQ0xfSU9CSl9NRU1CRVJfRlVOQ19QKE5PREUp IFwKKyAgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChOT0RFKSkgPT0gTUVUSE9EX1RZUEUpCisKKy8q IFNpbXBsZSBtZW1iZXIgYWNjZXNzLCBvbmx5IHZhbGlkIGZvciBGVU5DVElPTl9ERUNMIG5vZGVz LiAgKi8KKyNkZWZpbmUgREVDTF9GVU5DVElPTl9YT0JKX0ZMQUcoTk9ERSkJXAorICAoTEFOR19E RUNMX0ZOX0NIRUNLIChOT0RFKS0+eG9ial9mdW5jKQorCisvKiBOb256ZXJvIGlmIE5PREUgaXMg YW4geG9iaiBtZW1iZXIgZnVuY3Rpb24sCisgICBzYWZlbHkgZXZhbHVhdGVzIHRvIGZhbHNlIGZv ciBhbGwgbm9uIEZVTkNUSU9OX0RFQ0wgbm9kZXMuICAqLworI2RlZmluZSBERUNMX1hPQkpfTUVN QkVSX0ZVTkNfUChOT0RFKQkJCVwKKyAgKFRSRUVfQ09ERSAoU1RSSVBfVEVNUExBVEUgKE5PREUp KSA9PSBGVU5DVElPTl9ERUNMCVwKKyAgICYmIERFQ0xfRlVOQ1RJT05fWE9CSl9GTEFHIChOT0RF KSA9PSAxKQorCisvKiBOb256ZXJvIGlmIE5PREUgaXMgYSBtZW1iZXIgZnVuY3Rpb24gd2l0aCBh biBvYmplY3QgYXJndW1lbnQsCisgICBpbiBvdGhlciB3b3JkcywgYSBub24tc3RhdGljIG1lbWJl ciBmdW5jdGlvbi4gICovCisjZGVmaW5lIERFQ0xfT0JKRUNUX01FTUJFUl9GVU5DX1AoTk9ERSkg XAorICAoREVDTF9JT0JKX01FTUJFUl9GVU5DX1AgKE5PREUpIHx8IERFQ0xfWE9CSl9NRU1CRVJf RlVOQ19QIChOT0RFKSkKKwogLyogTm9uemVybyBmb3IgRlVOQ1RJT05fREVDTCBtZWFucyB0aGF0 IHRoaXMgZGVjbCBpcyBhIG1lbWJlciBmdW5jdGlvbgogICAgKHN0YXRpYyBvciBub24tc3RhdGlj KS4gICovCiAjZGVmaW5lIERFQ0xfRlVOQ1RJT05fTUVNQkVSX1AoTk9ERSkgXAotICAoREVDTF9O T05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKE5PREUpIHx8IERFQ0xfU1RBVElDX0ZVTkNUSU9O X1AgKE5PREUpKQorICAoREVDTF9PQkpFQ1RfTUVNQkVSX0ZVTkNfUCAoTk9ERSkgfHwgREVDTF9T VEFUSUNfRlVOQ1RJT05fUCAoTk9ERSkpIFwKIAogLyogTm9uemVybyBmb3IgRlVOQ1RJT05fREVD TCBtZWFucyB0aGF0IHRoaXMgbWVtYmVyIGZ1bmN0aW9uCiAgICBoYXMgYHRoaXMnIGFzIGNvbnN0 IFggKmNvbnN0LiAgKi8KQEAgLTYxMDQsNyArNjEyNSw5IEBAIGVudW0gYXV0b19kZWR1Y3Rpb25f Y29udGV4dAogICAgICAgIGlkZW50aWNhbCB0byB0aGVpciBkZWZhdWx0cy4KICAgIFRGRl9OT19U RU1QTEFURV9CSU5ESU5HUzogZG8gbm90IHByaW50IGluZm9ybWF0aW9uIGFib3V0IHRoZSB0ZW1w bGF0ZQogICAgICAgIGFyZ3VtZW50cyBmb3IgYSBmdW5jdGlvbiB0ZW1wbGF0ZSBzcGVjaWFsaXph dGlvbi4KLSAgIFRGRl9QT0lOVEVSOiB3ZSBhcmUgcHJpbnRpbmcgYSBwb2ludGVyIHR5cGUuICAq LworICAgVEZGX1BPSU5URVI6IHdlIGFyZSBwcmludGluZyBhIHBvaW50ZXIgdHlwZS4KKyAgIFRG Rl9YT0JKX0ZVTkM6IHdlIGFyZSBwcmludGluZyBhbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uJ3MKKyAgICAgICBwYXJhbWV0ZXJzLiAgKi8KIAogI2RlZmluZSBURkZfUExBSU5fSURF TlRJRklFUgkJCSgwKQogI2RlZmluZSBURkZfU0NPUEUJCQkJKDEpCkBAIC02MTIyLDYgKzYxNDUs NyBAQCBlbnVtIGF1dG9fZGVkdWN0aW9uX2NvbnRleHQKICNkZWZpbmUgVEZGX05PX09NSVRfREVG QVVMVF9URU1QTEFURV9BUkdVTUVOVFMJKDEgPDwgMTIpCiAjZGVmaW5lIFRGRl9OT19URU1QTEFU RV9CSU5ESU5HUwkJKDEgPDwgMTMpCiAjZGVmaW5lIFRGRl9QT0lOVEVSCQkgICAgICAgICAgICAg ICAgKDEgPDwgMTQpCisjZGVmaW5lIFRGRl9YT0JKX0ZVTkMJCQkJKDEgPDwgMTUpCiAKIC8qIFRo ZXNlIGNvbnN0YW50cyBjYW4gYmUgdXNlZCBhcyBiaXQgZmxhZ3MgdG8gY29udHJvbCBzdHJpcF90 eXBlZGVmcy4KIApAQCAtNjI2NCwxMSArNjI4OCwxMyBAQCBlbnVtIGNwX3N0b3JhZ2VfY2xhc3Mg ewogCiAvKiBBbiBpbmRpdmlkdWFsIGRlY2wtc3BlY2lmaWVyLiAgVGhpcyBpcyB1c2VkIHRvIGlu ZGV4IHRoZSBhcnJheSBvZgogICAgbG9jYXRpb25zIGZvciB0aGUgZGVjbHNwZWNzIGluIHN0cnVj dCBjcF9kZWNsX3NwZWNpZmllcl9zZXEKLSAgIGJlbG93LiAgKi8KKyAgIGJlbG93LgorICAgQSBz dWJzZXQgb2YgdGhlc2UgZW51bXMgYWxzbyBjb3JyZXNwb25kcyB0byBlbGVtZW50cyBvZgorICAg Y3BfcGFyc2VyX3NldF9kZWNsX3NwZWNfdHlwZTpkZWNsX3NwZWNfbmFtZXMgaW4gcGFyc2VyLmNj LiAgKi8KIAogZW51bSBjcF9kZWNsX3NwZWMgewogICBkc19maXJzdCwKLSAgZHNfc2lnbmVkID0g ZHNfZmlyc3QsCisgIGRzX3NpZ25lZCA9IGRzX2ZpcnN0LCAvKiBJbmRleCBvZiBmaXJzdCBlbGVt ZW50IG9mIGRlY2xfc3BlY19uYW1lcy4gICovCiAgIGRzX3Vuc2lnbmVkLAogICBkc19zaG9ydCwK ICAgZHNfbG9uZywKQEAgLTYyODUsNiArNjMxMSw3IEBAIGVudW0gY3BfZGVjbF9zcGVjIHsKICAg ZHNfY29tcGxleCwKICAgZHNfY29uc3Rpbml0LAogICBkc19jb25zdGV2YWwsCisgIGRzX3RoaXMs IC8qIEluZGV4IG9mIGxhc3QgZWxlbWVudCBvZiBkZWNsX3NwZWNfbmFtZXMuICAqLwogICBkc190 aHJlYWQsCiAgIGRzX3R5cGVfc3BlYywKICAgZHNfcmVkZWZpbmVkX2J1aWx0aW5fdHlwZV9zcGVj LApkaWZmIC0tZ2l0IGEvZ2NjL2NwL2RlY2wuY2MgYi9nY2MvY3AvZGVjbC5jYwppbmRleCAxNmFm NTlkZTY5Ni4uYzEzMzk2YTEwM2QgMTAwNjQ0Ci0tLSBhL2djYy9jcC9kZWNsLmNjCisrKyBiL2dj Yy9jcC9kZWNsLmNjCkBAIC0xMDMxOCw2ICsxMDMxOCw3IEBAIGdyb2tmbmRlY2wgKHRyZWUgY3R5 cGUsCiAJICAgIGludCBwdWJsaWNwLAogCSAgICBpbnQgaW5saW5lcCwKIAkgICAgYm9vbCBkZWxl dGVkcCwKKwkgICAgYm9vbCB4b2JqX2Z1bmNfcCwKIAkgICAgc3BlY2lhbF9mdW5jdGlvbl9raW5k IHNmaywKIAkgICAgYm9vbCBmdW5jZGVmX2ZsYWcsCiAJICAgIGJvb2wgbGF0ZV9yZXR1cm5fdHlw ZV9wLApAQCAtMTAzMjcsNyArMTAzMjgsNiBAQCBncm9rZm5kZWNsICh0cmVlIGN0eXBlLAogCSAg ICBsb2NhdGlvbl90IGxvY2F0aW9uKQogewogICB0cmVlIGRlY2w7Ci0gIGludCBzdGF0aWNwID0g Y3R5cGUgJiYgVFJFRV9DT0RFICh0eXBlKSA9PSBGVU5DVElPTl9UWVBFOwogICB0cmVlIHQ7CiAK ICAgaWYgKGxvY2F0aW9uID09IFVOS05PV05fTE9DQVRJT04pCkBAIC0xMDUyNSwxMiArMTA1MjUs OSBAQCBncm9rZm5kZWNsICh0cmVlIGN0eXBlLAogCQkgIChJREVOVElGSUVSX1BPSU5URVIgKGRl Y2xhcmF0b3IpKSkpKSkKICAgICBTRVRfREVDTF9MQU5HVUFHRSAoZGVjbCwgbGFuZ19jKTsKIAot ICAvKiBTaG91bGQgcHJvYmFibHkgcHJvcGFnYXRlIGNvbnN0IG91dCBmcm9tIHR5cGUgdG8gZGVj bCBJIGJldCAobXJzKS4gICovCi0gIGlmIChzdGF0aWNwKQotICAgIHsKLSAgICAgIERFQ0xfU1RB VElDX0ZVTkNUSU9OX1AgKGRlY2wpID0gMTsKLSAgICAgIERFQ0xfQ09OVEVYVCAoZGVjbCkgPSBj dHlwZTsKLSAgICB9CisgIERFQ0xfU1RBVElDX0ZVTkNUSU9OX1AgKGRlY2wpCisgICAgPSAheG9i al9mdW5jX3AgJiYgY3R5cGUgJiYgVFJFRV9DT0RFICh0eXBlKSA9PSBGVU5DVElPTl9UWVBFOwor ICBERUNMX0ZVTkNUSU9OX1hPQkpfRkxBRyAoZGVjbCkgPSB4b2JqX2Z1bmNfcDsKIAogICBpZiAo ZGVsZXRlZHApCiAgICAgREVDTF9ERUxFVEVEX0ZOIChkZWNsKSA9IDE7CkBAIC0xMDYxMCwyNCAr MTA2MDcsMzAgQEAgZ3Jva2ZuZGVjbCAodHJlZSBjdHlwZSwKIAlUUkVFX1RZUEUgKGRlY2wpID0g YXBwbHlfbWVtZm5fcXVhbHMgKFRSRUVfVFlQRSAoZGVjbCksCiAJCQkJCSAgICAgIFRZUEVfVU5R VUFMSUZJRUQsCiAJCQkJCSAgICAgIFJFRl9RVUFMX05PTkUpOwotCisgICAgICBhdXRvX2RpYWdu b3N0aWNfZ3JvdXAgZDsKICAgICAgIGlmIChxdWFscykKLQl7Ci0JICBlcnJvciAoY3R5cGUKKwll cnJvciAoIWN0eXBlCisJICAgICAgID8gR18oIm5vbi1tZW1iZXIgZnVuY3Rpb24gJXFEIGNhbm5v dCBoYXZlIGN2LXF1YWxpZmllciIpCisJICAgICAgIDogIXhvYmpfZnVuY19wCiAJCSA/IEdfKCJz dGF0aWMgbWVtYmVyIGZ1bmN0aW9uICVxRCBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiKQotCQkg OiBHXygibm9uLW1lbWJlciBmdW5jdGlvbiAlcUQgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiks Ci0JCSBkZWNsKTsKLQkgIHF1YWxzID0gVFlQRV9VTlFVQUxJRklFRDsKLQl9Ci0KKwkJIDogR18o ImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gIgorCQkgICAgICAiJXFEIGNhbm5vdCBo YXZlIGN2LXF1YWxpZmllciIpLAorCSAgICAgICBkZWNsKTsKICAgICAgIGlmIChycXVhbCkKLQl7 Ci0JICBlcnJvciAoY3R5cGUKKwllcnJvciAoIWN0eXBlCisJICAgICAgID8gR18oIm5vbi1tZW1i ZXIgZnVuY3Rpb24gJXFEIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiKQorCSAgICAgICA6ICF4 b2JqX2Z1bmNfcAogCQkgPyBHXygic3RhdGljIG1lbWJlciBmdW5jdGlvbiAlcUQgY2Fubm90IGhh dmUgcmVmLXF1YWxpZmllciIpCi0JCSA6IEdfKCJub24tbWVtYmVyIGZ1bmN0aW9uICVxRCBjYW5u b3QgaGF2ZSByZWYtcXVhbGlmaWVyIiksCisJCSA6IEdfKCJleHBsaWNpdCBvYmplY3QgbWVtYmVy IGZ1bmN0aW9uICIKKwkJICAgICAgIiVxRCBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiksCiAJ CSBkZWNsKTsKLQkgIHJxdWFsID0gUkVGX1FVQUxfTk9ORTsKLQl9CisKKyAgICAgIGlmICh4b2Jq X2Z1bmNfcCAmJiAocXVhbHMgfHwgcnF1YWwpKQorCWluZm9ybSAoREVDTF9TT1VSQ0VfTE9DQVRJ T04gKERFQ0xfQVJHVU1FTlRTIChkZWNsKSksCisJCSJleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVy IGRlY2xhcmVkIGhlcmUiKTsKKyAgICAgIHF1YWxzID0gVFlQRV9VTlFVQUxJRklFRDsKKyAgICAg IHJxdWFsID0gUkVGX1FVQUxfTk9ORTsKKwogICAgIH0KIAogICBpZiAoZGVkdWN0aW9uX2d1aWRl X3AgKGRlY2wpKQpAQCAtMTI5OTgsNiArMTMwMDEsOCBAQCBncm9rZGVjbGFyYXRvciAoY29uc3Qg Y3BfZGVjbGFyYXRvciAqZGVjbGFyYXRvciwKICAgaWYgKGF0dHJsaXN0KQogICAgIGRpYWdub3Nl X21pc2FwcGxpZWRfY29udHJhY3RzICgqYXR0cmxpc3QpOwogCisgIC8qIFNraXAgb3ZlciBidWls ZF9tZW1mbl90eXBlIHdoZW4gYSBGVU5DVElPTl9ERUNMIGlzIGFuIHhvYmogbWVtZm4uICAqLwor ICBib29sIGlzX3hvYmpfbWVtYmVyX2Z1bmN0aW9uID0gZmFsc2U7CiAgIC8qIERldGVybWluZSB0 aGUgdHlwZSBvZiB0aGUgZW50aXR5IGRlY2xhcmVkIGJ5IHJlY3VycmluZyBvbiB0aGUKICAgICAg ZGVjbGFyYXRvci4gICovCiAgIGZvciAoOyBkZWNsYXJhdG9yOyBkZWNsYXJhdG9yID0gZGVjbGFy YXRvci0+ZGVjbGFyYXRvcikKQEAgLTEzMTEzLDYgKzEzMTE4LDkxIEBAIGdyb2tkZWNsYXJhdG9y IChjb25zdCBjcF9kZWNsYXJhdG9yICpkZWNsYXJhdG9yLAogCSAgICBpZiAocmFpc2VzID09IGVy cm9yX21hcmtfbm9kZSkKIAkgICAgICByYWlzZXMgPSBOVUxMX1RSRUU7CiAKKwkgICAgYXV0byBm aW5kX3hvYmpfcGFybSA9IFtdKHRyZWUgcGFybV9saXN0KQorCSAgICAgIHsKKwkJLyogVGhlcmUg aXMgbm8gbmVlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGxpc3QsCisJCSAgIG9ubHkgdGhlIGZpcnN0 IHBhcm0gY2FuIGJlIGEgdmFsaWQgeG9iaiBwYXJtLiAgKi8KKwkJaWYgKCFwYXJtX2xpc3QgfHwg VFJFRV9QVVJQT1NFIChwYXJtX2xpc3QpICE9IHRoaXNfaWRlbnRpZmllcikKKwkJICByZXR1cm4g TlVMTF9UUkVFOworCQkvKiBJZiB3ZSBtYWtlIGl0IGhlcmUsIHdlIGFyZSBsb29raW5nIGF0IGFu IHhvYmogcGFybS4KKworCQkgICBOb24tbnVsbCAncHVycG9zZScgdXN1YWxseSBtZWFucyB0aGUg cGFybSBoYXMgYSBkZWZhdWx0CisJCSAgIGFyZ3VtZW50LCB3ZSBkb24ndCB3YW50IHRvIHZpb2xh dGUgdGhpcyBhc3N1bXB0aW9uLiAgKi8KKwkJVFJFRV9QVVJQT1NFIChwYXJtX2xpc3QpID0gTlVM TF9UUkVFOworCQlyZXR1cm4gVFJFRV9WQUxVRSAocGFybV9saXN0KTsKKwkgICAgICB9OworCisJ ICAgIHRyZWUgeG9ial9wYXJtCisJICAgICAgPSBmaW5kX3hvYmpfcGFybSAoZGVjbGFyYXRvci0+ dS5mdW5jdGlvbi5wYXJhbWV0ZXJzKTsKKwkgICAgaXNfeG9ial9tZW1iZXJfZnVuY3Rpb24gPSB4 b2JqX3Bhcm07CisKKwkgICAgaWYgKHhvYmpfcGFybSAmJiBjeHhfZGlhbGVjdCA8IGN4eDIzKQor CSAgICAgIHBlZHdhcm4gKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4b2JqX3Bhcm0pLCBPUFRfV2Nf XzIzX2V4dGVuc2lvbnMsCisJCSAgICAgICAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biBvbmx5IGF2YWlsYWJsZSAiCisJCSAgICAgICAid2l0aCAlPC1zdGQ9YysrMjMlPiBvciAlPC1z dGQ9Z251KysyMyU+Iik7CisKKwkgICAgaWYgKHhvYmpfcGFybSAmJiBkZWNsX2NvbnRleHQgPT0g VFlQRU5BTUUpCisJICAgICAgeworCQkvKiBXZSBpbmZvcm0gaW4gZXZlcnkgY2FzZSwganVzdCBk aWZmZXJlbnRseSBkZXBlbmRpbmcgb24gd2hhdAorCQkgICBjYXNlIGl0IGlzLiAgKi8KKwkJYXV0 b19kaWFnbm9zdGljX2dyb3VwIGQ7CisJCWJvb2wgcHRyX3R5cGUgPSB0cnVlOworCQkvKiBJZiBk ZWNsYXJhdG9yLT5raW5kIGlzIGNka19mdW5jdGlvbiBhbmQgd2UgYXJlIGF0IHRoZSBlbmQgb2YK KwkJICAgdGhlIGRlY2xhcmF0b3IgY2hhaW4sIHdlIGFyZSBsb29raW5nIGF0IGEgZnVuY3Rpb24g dHlwZS4gICovCisJCWlmICghZGVjbGFyYXRvci0+ZGVjbGFyYXRvcikKKwkJICB7CisJCSAgICBl cnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFybSksCisJCQkgICAgICAiYSBm dW5jdGlvbiB0eXBlIGNhbm5vdCAiCisJCQkgICAgICAiaGF2ZSBhbiBleHBsaWNpdCBvYmplY3Qg cGFyYW1ldGVyIik7CisJCSAgICBwdHJfdHlwZSA9IGZhbHNlOworCQkgIH0KKwkJZWxzZSBpZiAo ZGVjbGFyYXRvci0+ZGVjbGFyYXRvci0+a2luZCA9PSBjZGtfcG9pbnRlcikKKwkJICBlcnJvcl9h dCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFybSksCisJCQkgICAgImEgcG9pbnRlciB0 byBmdW5jdGlvbiB0eXBlIGNhbm5vdCAiCisJCQkgICAgImhhdmUgYW4gZXhwbGljaXQgb2JqZWN0 IHBhcmFtZXRlciIpOworCQllbHNlIGlmIChkZWNsYXJhdG9yLT5kZWNsYXJhdG9yLT5raW5kID09 IGNka19wdHJtZW0pCisJCSAgZXJyb3JfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4b2JqX3Bh cm0pLAorCQkJICAgICJhIHBvaW50ZXIgdG8gbWVtYmVyIGZ1bmN0aW9uIHR5cGUgIgorCQkJICAg ICJjYW5ub3QgaGF2ZSBhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIik7CisJCWVsc2UKKwkJ ICBnY2NfdW5yZWFjaGFibGUgKCk7CisJCQorCQkvKiBUaGUgbG9jYXRpb25zIGJlaW5nIHVzZWQg aGVyZSBhcmUgcHJvYmFibHkgbm90IGNvcnJlY3QuICAqLworCQlpZiAocHRyX3R5cGUpCisJCSAg aW5mb3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJtKSwKKwkJCSAgInRoZSB0eXBl IG9mIGEgcG9pbnRlciB0byBleHBsaWNpdCBvYmplY3QgbWVtYmVyICIKKwkJCSAgImZ1bmN0aW9u IGlzIGEgcmVndWxhciBwb2ludGVyIHRvIGZ1bmN0aW9uIHR5cGUiKTsKKwkJZWxzZQorCQkgIGlu Zm9ybSAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFybSksCisJCQkgICJ0aGUgdHlwZSBv ZiBhbiBleHBsaWNpdCBvYmplY3QgIgorCQkJICAibWVtYmVyIGZ1bmN0aW9uIGlzIGEgcmVndWxh ciBmdW5jdGlvbiB0eXBlIik7CisJCS8qIElkZWFsbHkgd2Ugc2hvdWxkIHN5bnRoZXNpemUgdGhl IGNvcnJlY3Qgc3ludGF4CisJCSAgIGZvciB0aGUgdXNlciwgcGVyaGFwcyB0aGlzIGNvdWxkIGJl IGFkZGVkIGxhdGVyLiAgKi8KKwkgICAgICB9CisJICAgIC8qIFNpbmNlIGEgdmFsaWQgeG9iaiBw YXJtIGhhcyBpdHMgcHVycG9zZSBjbGVhcmVkIGluIGZpbmRfeG9ial9wYXJtCisJICAgICAgIHRo ZSBmaXJzdCBwYXJtIG5vZGUgd2lsbCBuZXZlciBlcnJvbmVvdXNseSBiZSBkZXRlY3RlZCBoZXJl LiAgKi8KKwkgICAgeworCSAgICAgIGF1dG9fZGlhZ25vc3RpY19ncm91cCBkOworCSAgICAgIGJv b2wgYmFkX3hvYmpfcGFybV9lbmNvdW50ZXJlZCA9IGZhbHNlOworCSAgICAgIGZvciAodHJlZSBw YXJtID0gZGVjbGFyYXRvci0+dS5mdW5jdGlvbi5wYXJhbWV0ZXJzOworCQkgICBwYXJtICYmIHBh cm0gIT0gdm9pZF9saXN0X25vZGU7CisJCSAgIHBhcm0gPSBUUkVFX0NIQUlOIChwYXJtKSkKKwkJ eworCQkgIGlmIChUUkVFX1BVUlBPU0UgKHBhcm0pICE9IHRoaXNfaWRlbnRpZmllcikKKwkJICAg IGNvbnRpbnVlOworCQkgIGJhZF94b2JqX3Bhcm1fZW5jb3VudGVyZWQgPSB0cnVlOworCQkgIGdj Y19yaWNoX2xvY2F0aW9uIGJhZF94b2JqX3Bhcm0KKwkJICAgIChERUNMX1NPVVJDRV9MT0NBVElP TiAoVFJFRV9WQUxVRSAocGFybSkpKTsKKwkJICAvKiBJJ20ga2VlcGluZyBpdCBtb3JlIGJhc2lj IGZvciBub3cuICAqLworCQkgIGVycm9yX2F0ICgmYmFkX3hvYmpfcGFybSwKKwkJCSAgIk9ubHkg dGhlIGZpcnN0IHBhcmFtZXRlciBvZiBhIG1lbWJlciBmdW5jdGlvbiAiCisJCQkgICJjYW4gYmUg ZGVjbGFyZWQgYXMgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciIpOworCQl9CisJICAgICAg aWYgKGJhZF94b2JqX3Bhcm1fZW5jb3VudGVyZWQgJiYgeG9ial9wYXJtKQorCQlpbmZvcm0gKERF Q0xfU09VUkNFX0xPQ0FUSU9OICh4b2JqX3Bhcm0pLAorCQkJIlZhbGlkIGV4cGxpY2l0IG9iamVj dCBwYXJhbWV0ZXIgZGVjbGFyZWQgaGVyZSIpOworCSAgICB9CisKIAkgICAgaWYgKHJlcXMpCiAJ ICAgICAgZXJyb3JfYXQgKGxvY2F0aW9uX29mIChyZXFzKSwgInJlcXVpcmVzLWNsYXVzZSBvbiBy ZXR1cm4gdHlwZSIpOwogCSAgICByZXFzID0gZGVjbGFyYXRvci0+dS5mdW5jdGlvbi5yZXF1aXJl c19jbGF1c2U7CkBAIC0xMzQwMCw2ICsxMzQ5MCwzOCBAQCBncm9rZGVjbGFyYXRvciAoY29uc3Qg Y3BfZGVjbGFyYXRvciAqZGVjbGFyYXRvciwKIAkJICBleHBsaWNpdHAgPSAyOwogCSAgICAgIH0K IAorCSAgICBpZiAoeG9ial9wYXJtKQorCSAgICAgIHsKKwkJaWYgKCFjdHlwZQorCQkgICAgJiYg ZGVjbF9jb250ZXh0ID09IE5PUk1BTAorCQkgICAgJiYgKGluX25hbWVzcGFjZQorCQkJfHwgIWRl Y2xhcmF0b3ItPmRlY2xhcmF0b3ItPnUuaWQucXVhbGlmeWluZ19zY29wZSkpCisJCSAgZXJyb3Jf YXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4b2JqX3Bhcm0pLAorCQkJICAgICJhIG5vbi1tZW1i ZXIgZnVuY3Rpb24gY2Fubm90IGhhdmUgIgorCQkJICAgICJhbiBleHBsaWNpdCBvYmplY3QgcGFy YW1ldGVyIik7CisJCWVsc2UKKwkJICB7CisJCSAgICBpZiAodmlydHVhbHApCisJCSAgICAgIHsK KwkJCWF1dG9fZGlhZ25vc3RpY19ncm91cCBkOworCQkJZXJyb3JfYXQgKGRlY2xzcGVjcy0+bG9j YXRpb25zW2RzX3ZpcnR1YWxdLAorCQkJCSAgImFuIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gY2Fubm90IGJlICIKKwkJCQkgICIlPHZpcnR1YWwlPiIpOworCQkJaW5mb3JtIChERUNM X1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJtKSwKKwkJCQkiZXhwbGljaXQgb2JqZWN0IHBhcmFt ZXRlciBkZWNsYXJlZCBoZXJlIik7CisJCQl2aXJ0dWFscCA9IGZhbHNlOworCQkgICAgICB9CisJ CSAgICBpZiAoc3RhdGljcCA+PSAyKQorCQkgICAgICB7CisJCQlhdXRvX2RpYWdub3N0aWNfZ3Jv dXAgZDsKKwkJCWVycm9yX2F0IChkZWNsc3BlY3MtPmxvY2F0aW9uc1tkc19zdG9yYWdlX2NsYXNz XSwKKwkJCQkgICJhbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIGNhbm5vdCBiZSAi CisJCQkJICAiJTxzdGF0aWMlPiIpOworCQkJaW5mb3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAo eG9ial9wYXJtKSwKKwkJCQkiZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJl Iik7CisJCSAgICAgIH0KKwkJICB9CisJICAgICAgfQogCSAgICB0cmVlIHB1c2hlZF9zY29wZSA9 IE5VTExfVFJFRTsKIAkgICAgaWYgKGZ1bmNkZWNsX3AKIAkJJiYgZGVjbF9jb250ZXh0ICE9IEZJ RUxECkBAIC0xNDE3Nyw2ICsxNDI5OSw4IEBAIGdyb2tkZWNsYXJhdG9yIChjb25zdCBjcF9kZWNs YXJhdG9yICpkZWNsYXJhdG9yLAogICAgIH0KIAogICBpZiAoY3R5cGUgJiYgVFJFRV9DT0RFICh0 eXBlKSA9PSBGVU5DVElPTl9UWVBFICYmIHN0YXRpY3AgPCAyCisgICAgICAvKiBEb24ndCBjb252 ZXJ0IHhvYmogbWVtYmVyIGZ1bmN0aW9ucyB0byBNRVRIT0RfVFlQRS4gICovCisgICAgICAmJiAh aXNfeG9ial9tZW1iZXJfZnVuY3Rpb24KICAgICAgICYmICEodW5xdWFsaWZpZWRfaWQKIAkgICAm JiBpZGVudGlmaWVyX3AgKHVucXVhbGlmaWVkX2lkKQogCSAgICYmIElERU5USUZJRVJfTkVXREVM X09QX1AgKHVucXVhbGlmaWVkX2lkKSkpCkBAIC0xNDM5OCw3ICsxNDUyMiw4IEBAIGdyb2tkZWNs YXJhdG9yIChjb25zdCBjcF9kZWNsYXJhdG9yICpkZWNsYXJhdG9yLAogCQkJICAgICAgIGZyaWVu ZHAgPyAtMSA6IDAsIGZyaWVuZHAsIHB1YmxpY3AsCiAJCQkgICAgICAgaW5saW5lcCB8ICgyICog Y29uc3RleHByX3ApIHwgKDQgKiBjb25jZXB0X3ApCiAJCQkJICAgICAgIHwgKDggKiBjb25zdGV2 YWxfcCksCi0JCQkgICAgICAgaW5pdGlhbGl6ZWQgPT0gU0RfREVMRVRFRCwgc2ZrLAorCQkJICAg ICAgIGluaXRpYWxpemVkID09IFNEX0RFTEVURUQsCisJCQkgICAgICAgaXNfeG9ial9tZW1iZXJf ZnVuY3Rpb24sIHNmaywKIAkJCSAgICAgICBmdW5jZGVmX2ZsYWcsIGxhdGVfcmV0dXJuX3R5cGVf cCwKIAkJCSAgICAgICB0ZW1wbGF0ZV9jb3VudCwgaW5fbmFtZXNwYWNlLAogCQkJICAgICAgIGF0 dHJsaXN0LCBpZF9sb2MpOwpAQCAtMTQ3MzMsOCArMTQ4NTgsOCBAQCBncm9rZGVjbGFyYXRvciAo Y29uc3QgY3BfZGVjbGFyYXRvciAqZGVjbGFyYXRvciwKIAkJCSAgIGlubGluZXAgfCAoMiAqIGNv bnN0ZXhwcl9wKSB8ICg0ICogY29uY2VwdF9wKQogCQkJCSAgIHwgKDggKiBjb25zdGV2YWxfcCks CiAJCQkgICBpbml0aWFsaXplZCA9PSBTRF9ERUxFVEVELAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2ZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY2RlZl9mbGFnLAorCQkJ ICAgaXNfeG9ial9tZW1iZXJfZnVuY3Rpb24sIHNmaywKKwkJCSAgIGZ1bmNkZWZfZmxhZywKIAkJ CSAgIGxhdGVfcmV0dXJuX3R5cGVfcCwKIAkJCSAgIHRlbXBsYXRlX2NvdW50LCBpbl9uYW1lc3Bh Y2UsIGF0dHJsaXN0LAogCQkJICAgaWRfbG9jKTsKQEAgLTE1NjI0LDExICsxNTc0OSwxMiBAQCBn cm9rX29wX3Byb3BlcnRpZXMgKHRyZWUgZGVjbCwgYm9vbCBjb21wbGFpbikKIAogICAgICAgcmV0 dXJuIHRydWU7CiAgICAgfQotCiAgIC8qIEFuIG9wZXJhdG9yIGZ1bmN0aW9uIG11c3QgZWl0aGVy IGJlIGEgbm9uLXN0YXRpYyBtZW1iZXIgZnVuY3Rpb24KICAgICAgb3IgaGF2ZSBhdCBsZWFzdCBv bmUgcGFyYW1ldGVyIG9mIGEgY2xhc3MsIGEgcmVmZXJlbmNlIHRvIGEgY2xhc3MsCiAgICAgIGFu IGVudW1lcmF0aW9uLCBvciBhIHJlZmVyZW5jZSB0byBhbiBlbnVtZXJhdGlvbi4gIDEzLjQuMC42 ICovCi0gIGlmICghIG1ldGhvZHAgfHwgREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAoZGVjbCkpCisg IC8qIFRoaXMgY2FuIGp1c3QgYmUgREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAoZGVjbCkgSSB0aGlu az8gICovCisgIGlmICgoIW1ldGhvZHAgJiYgIURFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QIChkZWNs KSkKKyAgICAgIHx8IERFQ0xfU1RBVElDX0ZVTkNUSU9OX1AgKGRlY2wpKQogICAgIHsKICAgICAg IGlmIChvcGVyYXRvcl9jb2RlID09IFRZUEVfRVhQUgogCSAgfHwgb3BlcmF0b3JfY29kZSA9PSBD T01QT05FTlRfUkVGCkBAIC0xNzM4Miw2ICsxNzUwOCw4IEBAIHN0YXJ0X3ByZXBhcnNlZF9mdW5j dGlvbiAodHJlZSBkZWNsMSwgdHJlZSBhdHRycywgaW50IGZsYWdzKQogICB0cmVlIGZudHlwZSA9 IFRSRUVfVFlQRSAoZGVjbDEpOwogICBpZiAoVFJFRV9DT0RFIChmbnR5cGUpID09IE1FVEhPRF9U WVBFKQogICAgIGN0eXBlID0gVFlQRV9NRVRIT0RfQkFTRVRZUEUgKGZudHlwZSk7CisgIGVsc2Ug aWYgKERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QIChkZWNsMSkpCisgICAgY3R5cGUgPSBERUNMX0NP TlRFWFQgKGRlY2wxKTsKICAgZWxzZQogICAgIHsKICAgICAgIGN0eXBlID0gREVDTF9GUklFTkRf Q09OVEVYVCAoZGVjbDEpOwpAQCAtMTc2MDksNyArMTc3MzcsNyBAQCBzdGFydF9wcmVwYXJzZWRf ZnVuY3Rpb24gKHRyZWUgZGVjbDEsIHRyZWUgYXR0cnMsIGludCBmbGFncykKICAgLyogU3RhcnQg dGhlIHN0YXRlbWVudC10cmVlLCBzdGFydCB0aGUgdHJlZSBub3cuICAqLwogICBERUNMX1NBVkVE X1RSRUUgKGRlY2wxKSA9IHB1c2hfc3RtdF9saXN0ICgpOwogCi0gIGlmIChjdHlwZSAmJiAhZG9p bmdfZnJpZW5kICYmICFERUNMX1NUQVRJQ19GVU5DVElPTl9QIChkZWNsMSkpCisgIGlmIChjdHlw ZSAmJiAhZG9pbmdfZnJpZW5kICYmIERFQ0xfSU9CSl9NRU1CRVJfRlVOQ19QIChkZWNsMSkpCiAg ICAgewogICAgICAgLyogV2Uga25vdyB0aGF0IHRoaXMgd2FzIHNldCB1cCBieSBgZ3Jva2NsYXNz Zm4nLiAgV2UgZG8gbm90CiAJIHdhaXQgdW50aWwgYHN0b3JlX3Bhcm1fZGVjbHMnLCBzaW5jZSBl dmlsIHBhcnNlIGVycm9ycyBtYXkKZGlmZiAtLWdpdCBhL2djYy9jcC9lcnJvci5jYyBiL2djYy9j cC9lcnJvci5jYwppbmRleCAwZWQ2OWJjYTZmYy4uYzk4NzBkNDU3MDYgMTAwNjQ0Ci0tLSBhL2dj Yy9jcC9lcnJvci5jYworKysgYi9nY2MvY3AvZXJyb3IuY2MKQEAgLTE4MzEsNyArMTgzMSw5IEBA IGR1bXBfZnVuY3Rpb25fZGVjbCAoY3h4X3ByZXR0eV9wcmludGVyICpwcCwgdHJlZSB0LCBpbnQg ZmxhZ3MpCiAKICAgaWYgKCEoZmxhZ3MgJiBURkZfTk9fRlVOQ1RJT05fQVJHVU1FTlRTKSkKICAg ICB7Ci0gICAgICBkdW1wX3BhcmFtZXRlcnMgKHBwLCBwYXJtdHlwZXMsIGZsYWdzKTsKKyAgICAg IGR1bXBfcGFyYW1ldGVycyAocHAsIHBhcm10eXBlcywKKwkJICAgICAgIERFQ0xfWE9CSl9NRU1C RVJfRlVOQ19QICh0KSA/IFRGRl9YT0JKX0ZVTkMgfCBmbGFncworCQkJCQkJICAgIDogZmxhZ3Mp OwogCiAgICAgICBpZiAoVFJFRV9DT0RFIChmbnR5cGUpID09IE1FVEhPRF9UWVBFKQogCXsKQEAg LTE5MTAsNiArMTkxMiw4IEBAIGR1bXBfcGFyYW1ldGVycyAoY3h4X3ByZXR0eV9wcmludGVyICpw cCwgdHJlZSBwYXJtdHlwZXMsIGludCBmbGFncykKICAgZm9yIChmaXJzdCA9IDE7IHBhcm10eXBl cyAhPSB2b2lkX2xpc3Rfbm9kZTsKICAgICAgICBwYXJtdHlwZXMgPSBUUkVFX0NIQUlOIChwYXJt dHlwZXMpKQogICAgIHsKKyAgICAgIGlmIChmaXJzdCAmJiBmbGFncyAmIFRGRl9YT0JKX0ZVTkMp CisJcHBfc3RyaW5nIChwcCwgInRoaXMgIik7CiAgICAgICBpZiAoIWZpcnN0KQogCXBwX3NlcGFy YXRlX3dpdGhfY29tbWEgKHBwKTsKICAgICAgIGZpcnN0ID0gMDsKQEAgLTM2ODUsNiArMzY4OSw4 IEBAIGZ1bmN0aW9uX2NhdGVnb3J5ICh0cmVlIGZuKQogCXJldHVybiBfKCJJbiBkZXN0cnVjdG9y ICVxRCIpOwogICAgICAgZWxzZSBpZiAoTEFNQkRBX0ZVTkNUSU9OX1AgKGZuKSkKIAlyZXR1cm4g XygiSW4gbGFtYmRhIGZ1bmN0aW9uIik7CisgICAgICBlbHNlIGlmIChERUNMX1hPQkpfTUVNQkVS X0ZVTkNfUCAoZm4pKQorCXJldHVybiBfKCJJbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uICVxRCIpOwogICAgICAgZWxzZQogCXJldHVybiBfKCJJbiBtZW1iZXIgZnVuY3Rpb24gJXFE Iik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2xhbWJkYS5jYyBiL2djYy9jcC9sYW1iZGEu Y2MKaW5kZXggYTM1OWJjNmVlOGQuLmFlMjYwMWM3YjU0IDEwMDY0NAotLS0gYS9nY2MvY3AvbGFt YmRhLmNjCisrKyBiL2djYy9jcC9sYW1iZGEuY2MKQEAgLTQwNSw4ICs0MDUsMTAgQEAgYnVpbGRf Y2FwdHVyZV9wcm94eSAodHJlZSBtZW1iZXIsIHRyZWUgaW5pdCkKICAgZm4gPSBsYW1iZGFfZnVu Y3Rpb24gKGNsb3N1cmUpOwogICBsYW0gPSBDTEFTU1RZUEVfTEFNQkRBX0VYUFIgKGNsb3N1cmUp OwogCisgIG9iamVjdCA9IERFQ0xfQVJHVU1FTlRTIChmbik7CiAgIC8qIFRoZSBwcm94eSB2YXJp YWJsZSBmb3J3YXJkcyB0byB0aGUgY2FwdHVyZSBmaWVsZC4gICovCi0gIG9iamVjdCA9IGJ1aWxk X2ZvbGRfaW5kaXJlY3RfcmVmIChERUNMX0FSR1VNRU5UUyAoZm4pKTsKKyAgaWYgKElORElSRUNU X1RZUEVfUCAoVFJFRV9UWVBFIChvYmplY3QpKSkKKyAgICBvYmplY3QgPSBidWlsZF9mb2xkX2lu ZGlyZWN0X3JlZiAob2JqZWN0KTsKICAgb2JqZWN0ID0gZmluaXNoX25vbl9zdGF0aWNfZGF0YV9t ZW1iZXIgKG1lbWJlciwgb2JqZWN0LCBOVUxMX1RSRUUpOwogICBpZiAoUkVGRVJFTkNFX1JFRl9Q IChvYmplY3QpKQogICAgIG9iamVjdCA9IFRSRUVfT1BFUkFORCAob2JqZWN0LCAwKTsKZGlmZiAt LWdpdCBhL2djYy9jcC9tb2R1bGUuY2MgYi9nY2MvY3AvbW9kdWxlLmNjCmluZGV4IGMxYzhjMjI2 YmMxLi44NzIzZjIzYzRhZSAxMDA2NDQKLS0tIGEvZ2NjL2NwL21vZHVsZS5jYworKysgYi9nY2Mv Y3AvbW9kdWxlLmNjCkBAIC01NjgzLDYgKzU2ODMsNyBAQCB0cmVlc19vdXQ6OmxhbmdfZGVjbF9i b29scyAodHJlZSB0KQogICAgICAgV0IgKGxhbmctPnUuZm4uaGFzX2RlcGVuZGVudF9leHBsaWNp dF9zcGVjX3ApOwogICAgICAgV0IgKGxhbmctPnUuZm4uaW1tZWRpYXRlX2ZuX3ApOwogICAgICAg V0IgKGxhbmctPnUuZm4ubWF5YmVfZGVsZXRlZCk7CisgICAgICBXQiAobGFuZy0+dS5mbi54b2Jq X2Z1bmMpOwogICAgICAgZ290byBsZHNfbWluOwogCiAgICAgY2FzZSBsZHNfZGVjb21wOiAgLyog bGFuZ19kZWNsX2RlY29tcC4gICovCkBAIC01NzUxLDYgKzU3NTIsNyBAQCB0cmVlc19pbjo6bGFu Z19kZWNsX2Jvb2xzICh0cmVlIHQpCiAgICAgICBSQiAobGFuZy0+dS5mbi5oYXNfZGVwZW5kZW50 X2V4cGxpY2l0X3NwZWNfcCk7CiAgICAgICBSQiAobGFuZy0+dS5mbi5pbW1lZGlhdGVfZm5fcCk7 CiAgICAgICBSQiAobGFuZy0+dS5mbi5tYXliZV9kZWxldGVkKTsKKyAgICAgIFJCIChsYW5nLT51 LmZuLnhvYmpfZnVuYyk7CiAgICAgICBnb3RvIGxkc19taW47CiAKICAgICBjYXNlIGxkc19kZWNv bXA6ICAvKiBsYW5nX2RlY2xfZGVjb21wLiAgKi8KZGlmZiAtLWdpdCBhL2djYy9jcC9wYXJzZXIu Y2MgYi9nY2MvY3AvcGFyc2VyLmNjCmluZGV4IDIwZTE4MzY1OTA2Li42ZGVjZWVkYzE5MyAxMDA2 NDQKLS0tIGEvZ2NjL2NwL3BhcnNlci5jYworKysgYi9nY2MvY3AvcGFyc2VyLmNjCkBAIC0xMTc1 MCw2ICsxMTc1MCwzNSBAQCBjcF9wYXJzZXJfbGFtYmRhX2RlY2xhcmF0b3Jfb3B0IChjcF9wYXJz ZXIqIHBhcnNlciwgdHJlZSBsYW1iZGFfZXhwcikKICAgICB9CiAgIGVsc2UgaWYgKGN4eF9kaWFs ZWN0IDwgY3h4MjMpCiAgICAgb21pdHRlZF9wYXJtc19sb2MgPSBjcF9sZXhlcl9wZWVrX3Rva2Vu IChwYXJzZXItPmxleGVyKS0+bG9jYXRpb247CisgIC8qIFdlIGp1c3QgbmVlZCB0byBwZWVrIGhl cmUsCisgICAgIGdyb2tkZWNsYXJhdG9yIGRvZXMgdGhlIHJlc3Qgd2l0aCB0aGlzIHNvIGRvbid0 IG11dGF0ZSBpdC4gICovCisgIHRyZWUgY29uc3QgeG9ial9wYXJhbQorICAgID0gcGFyYW1fbGlz dCAmJiBUUkVFX1BVUlBPU0UgKHBhcmFtX2xpc3QpID09IHRoaXNfaWRlbnRpZmllcgorICAgICAg PyBUUkVFX1ZBTFVFIChwYXJhbV9saXN0KSA6IE5VTExfVFJFRTsKKworICBpZiAoeG9ial9wYXJh bQorICAgICAgJiYgKExBTUJEQV9FWFBSX0RFRkFVTFRfQ0FQVFVSRV9NT0RFIChsYW1iZGFfZXhw cikgIT0gQ1BMRF9OT05FCisJICB8fCBMQU1CREFfRVhQUl9DQVBUVVJFX0xJU1QgKGxhbWJkYV9l eHByKSkpCisgICAgeworICAgICAgLyogU2luY2UgYSBsYW1iZGEncyB0eXBlIGlzIGFub255bW91 cywgd2UgY2FuIGFzc3VtZSBhbiBleHBsaWNpdCBvYmplY3QKKwkgcGFyYW1ldGVyIGlzIHVucmVs YXRlZC4uLiBhdCBsZWFzdCBJIGJlbGlldmUgc28uIEkgY2FuIHRoaW5rIG9mIGEKKwkgcGFyYWRv eGljYWwgY2FzZSB0aGF0IGFsbW9zdCB3b3Jrcywgd2hlcmUgYSBjbGFzcyBpcyBmb3J3YXJkIGRl Y2xhcmVkCisJIGFuZCB0aGVuIGRlZmluZWQgZGVyaXZpbmcgZnJvbSBhIGxhbWJkYSB0aGF0IGhh cyBhbiBleHBsaWNpdCBvYmplY3QKKwkgcGFyYW1ldGVyIG9mIHRoYXQgY2xhc3MgdHlwZSwgYnV0 IHRoZSBvbmx5IHdheSB0aGF0IGNhbiB3b3JrIGlzIHdpdGgKKwkgZGVjbHR5cGUuLi4gb2theSB5 ZWFoIEkgdGhpbmsgaXQgY2FuIHdvcmsgZm9yIGEgc3RydWN0IGRlZmluZWQgaW4KKwkgYmxvY2sg c2NvcGUsIGJ1dCBJJ20gbGVhdmluZyB0aGlzIGFzIGlzIHVudGlsIEkgY2FuIGNvbmZpcm0gbXkK KwkgaHlwb3RoZXNpcy4gICovCisKKyAgICAgIC8qIFNpbmNlIGEgbGFtYmRhJ3MgdHlwZSBpcyBh bm9ueW1vdXMsIHdlIGNhbiBhc3N1bWUgYW4geG9iaiBwYXJhbWV0ZXIKKwkgaXMgdW5yZWxhdGVk IGlmIGl0IGlzIG5vbi1kZXBlbmRlbnQuICAqLworICAgICAgaWYgKCFkZXBlbmRlbnRfdHlwZV9w IChub25fcmVmZXJlbmNlIChUUkVFX1RZUEUgKHhvYmpfcGFyYW0pKSkpCisJeworICAgICAgICAg IGVycm9yX2F0IChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJhbSksCisJCSAgICAiYSBs YW1iZGEgd2l0aCBjYXB0dXJlcyBtYXkgbm90IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0ICIKKwkJ ICAgICJwYXJhbWV0ZXIgb2YgYW4gdW5yZWxhdGVkIHR5cGUiKTsKKwkgIExBTUJEQV9FWFBSX0NB UFRVUkVfTElTVCAobGFtYmRhX2V4cHIpID0gTlVMTF9UUkVFOworCX0KKyAgICB9CiAKICAgLyog SW4gdGhlIGRlY2wtc3BlY2lmaWVyLXNlcSBvZiB0aGUgbGFtYmRhLWRlY2xhcmF0b3IsIGVhY2gK ICAgICAgZGVjbC1zcGVjaWZpZXIgc2hhbGwgZWl0aGVyIGJlIG11dGFibGUgb3IgY29uc3RleHBy LiAgKi8KQEAgLTExNzY3LDI0ICsxMTc5Niw3OSBAQCBjcF9wYXJzZXJfbGFtYmRhX2RlY2xhcmF0 b3Jfb3B0IChjcF9wYXJzZXIqIHBhcnNlciwgdHJlZSBsYW1iZGFfZXhwcikKIAkgICAgICAgIiU8 LXN0ZD1nbnUrKzJiJT4iKTsKICAgICAgIG9taXR0ZWRfcGFybXNfbG9jID0gVU5LTk9XTl9MT0NB VElPTjsKICAgICB9Ci0KICAgaWYgKGxhbWJkYV9zcGVjcy5zdG9yYWdlX2NsYXNzID09IHNjX211 dGFibGUpCiAgICAgewotICAgICAgTEFNQkRBX0VYUFJfTVVUQUJMRV9QIChsYW1iZGFfZXhwcikg PSAxOwotICAgICAgcXVhbHMgPSBUWVBFX1VOUVVBTElGSUVEOworICAgICAgLyogVGhpcyBtaWdo dCBub3QgYmUgdGhlIG1vc3QgYXBwcm9wcmlhdGUgcGxhY2UgZm9yIHRoaXMsIGJ1dCBJJ20gZ29p bmcKKwkgdG8gaG9sZCBiYWNrIG9uIGNoYW5naW5nIGl0IGZvciB0aGUgdGltZSBiZWluZyBzaW5j ZSB3ZSBhcmUgc2hvcnQgb24KKwkgdGltZS4gSXQncyBub3QgcmVhbGx5IGEgcGFyc2VyIGVycm9y LCBpdCdzIG1vcmUgYSBzZW1hbnRpYyBlcnJvci4KKwkgQnV0IHRoaXMgaXMgd2hlcmUgdGhlIG90 aGVyIGVycm9ycyB3ZXJlIHNvLi4uICAqLworICAgICAgaWYgKHhvYmpfcGFyYW0pCisJeworCSAg YXV0b19kaWFnbm9zdGljX2dyb3VwIGQ7CisJICBlcnJvcl9hdCAobGFtYmRhX3NwZWNzLmxvY2F0 aW9uc1tkc19zdG9yYWdlX2NsYXNzXSwKKwkJICAgICIlPG11dGFibGUlPiBsYW1iZGEgc3BlY2lm aWVyICIKKwkJICAgICJ3aXRoIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIiKTsKKwkgIC8qIEVy cm9yIHJlcG9ydGluZyBoZXJlIGlzIGEgbGl0dGxlIGF3a3dhcmQsIGlmIHRoZSB0eXBlIG9mIHRo ZQorCSAgICAgb2JqZWN0IHBhcmFtZXRlciBpcyBkZWR1Y2VkLCB3ZSBzaG91bGQgdGVsbCB0aGVt IHRoZSBsYW1iZGEKKwkgICAgIGlzIGVmZmVjdGl2ZWx5IGFscmVhZHkgY29uc3QsIG9yIHRvIG1h a2UgdGhlIHBhcmFtIGNvbnN0IGlmIGl0IGlzCisJICAgICBub3QsIGJ1dCBpZiBpdCBpcyBkZWR1 Y2VkIGFuZCB0YWtlbiBieSB2YWx1ZSBzaG91bGRuJ3Qgd2Ugc2F5CisJICAgICB0aGF0IGl0J3Mg dGFrZW4gYnkgY29weSBhbmQgd29uJ3QgbXV0YXRlPworCSAgICAgU2VlbXMgcmlnaHQgdG8gbWUs IGJ1dCBpdCdzIGEgbGl0dGxlIHN0cmFuZ2UuICAqLworCisJICAvKiBBbiB4b2JqIHBhcmFtZXRl ciB3aXRoIGFuIHVucmVsYXRlZCB0eXBlIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbgorCSAgICAg ZGlhZ25vc2VkLCB0aGF0IG1lYW5zIHdlIGRlZmluaXRlbHkgaGF2ZSBhIHRlbXBsYXRlIHR5cGUg cGFyYW0uCisJICAgICBXZSBkb24ndCBzdXBwcmVzcyB0aGVzZSBpbmZvcm1zIHJpZ2h0IG5vdyB3 aGVuIHRoZSB4b2JqIHBhcmFtIGlzCisJICAgICB1bnJlbGF0ZWQsIHdlIHByb2JhYmx5IHNob3Vs ZCB0aG91Z2guICAqLworCSAgaWYgKCFUWVBFX1JFRl9QIChUUkVFX1RZUEUgKHhvYmpfcGFyYW0p KSkKKwkgICAgaW5mb3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJhbSksCisJCSAg ICAibXV0YXRpb25zIG9mIGEgYnktdmFsdWUgZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciAiCisJ CSAgICAid2lsbCBub3QgcGVyc2lzdCBhY3Jvc3MgbXVsdGlwbGUgY2FsbHMiKTsKKwkgIGVsc2Ug aWYgKFRZUEVfUkVBRE9OTFkgKFRSRUVfVFlQRSAoVFJFRV9UWVBFICh4b2JqX3BhcmFtKSkpKQor CSAgICBpbmZvcm0gKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4b2JqX3BhcmFtKSwKKwkJICAgICJk ZWNsYXJlIHRoZSBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIHdpdGhvdXQgY29uc3QiKTsKKwkg IGVsc2UKKwkgICAgaW5mb3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJhbSksCisJ CSAgICAiZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBpcyBhbHJlYWR5IG11dGFibGUiKTsKKwl9 CisgICAgICBlbHNlCisJeworCSAgTEFNQkRBX0VYUFJfTVVUQUJMRV9QIChsYW1iZGFfZXhwcikg PSAxOworCSAgcXVhbHMgPSBUWVBFX1VOUVVBTElGSUVEOworCX0KICAgICB9CiAgIGVsc2UgaWYg KGxhbWJkYV9zcGVjcy5zdG9yYWdlX2NsYXNzID09IHNjX3N0YXRpYykKICAgICB7CisgICAgICBi b29sIGVycm9yX2VtaXR0ZWQgPSBmYWxzZTsKICAgICAgIGlmIChMQU1CREFfRVhQUl9ERUZBVUxU X0NBUFRVUkVfTU9ERSAobGFtYmRhX2V4cHIpICE9IENQTERfTk9ORQogCSAgfHwgTEFNQkRBX0VY UFJfQ0FQVFVSRV9MSVNUIChsYW1iZGFfZXhwcikpCi0JZXJyb3JfYXQgKGxhbWJkYV9zcGVjcy5s b2NhdGlvbnNbZHNfc3RvcmFnZV9jbGFzc10sCi0JCSAgIiU8c3RhdGljJT4gbGFtYmRhIHNwZWNp ZmllciB3aXRoIGxhbWJkYSBjYXB0dXJlIik7Ci0gICAgICBlbHNlCisJeworCSAgZXJyb3JfYXQg KGxhbWJkYV9zcGVjcy5sb2NhdGlvbnNbZHNfc3RvcmFnZV9jbGFzc10sCisJCSAgICAiJTxzdGF0 aWMlPiBsYW1iZGEgc3BlY2lmaWVyIHdpdGggbGFtYmRhIGNhcHR1cmUiKTsKKwkgIGVycm9yX2Vt aXR0ZWQgPSB0cnVlOworCX0KKyAgICAgIGlmICh4b2JqX3BhcmFtKQorCXsKKwkgIGF1dG9fZGlh Z25vc3RpY19ncm91cCBkOworCSAgZXJyb3JfYXQgKGxhbWJkYV9zcGVjcy5sb2NhdGlvbnNbZHNf c3RvcmFnZV9jbGFzc10sCisJCSAgICAiJTxzdGF0aWMlPiBsYW1iZGEgc3BlY2lmaWVyICIKKwkJ ICAgICJ3aXRoIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIiKTsKKwkgIGluZm9ybSAoREVDTF9T T1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFyYW0pLAorCQkgICJleHBsaWNpdCBvYmplY3QgcGFyYW1l dGVyIGRlY2xhcmVkIGhlcmUiKTsKKwkgIGVycm9yX2VtaXR0ZWQgPSB0cnVlOworCX0KKyAgICAg IGlmICghZXJyb3JfZW1pdHRlZCkKIAl7CiAJICBMQU1CREFfRVhQUl9TVEFUSUNfUCAobGFtYmRh X2V4cHIpID0gMTsKIAkgIHF1YWxzID0gVFlQRV9VTlFVQUxJRklFRDsKIAl9CiAgICAgfQorICBp ZiAoeG9ial9wYXJhbSkKKyAgICB7CisgICAgICBxdWFscyA9IFRZUEVfVU5RVUFMSUZJRUQ7Cisg ICAgICBpZiAoVFlQRV9SRUZfUCAoeG9ial9wYXJhbSkKKwkgICYmICEoY3BfdHlwZV9xdWFscyAo VFJFRV9UWVBFICh4b2JqX3BhcmFtKSkgJiBUWVBFX1FVQUxfQ09OU1QpKQorICAgICAgICBMQU1C REFfRVhQUl9NVVRBQkxFX1AgKGxhbWJkYV9leHByKSA9IDE7CisgICAgfQogCiAgIHR4X3F1YWwg PSBjcF9wYXJzZXJfdHhfcXVhbGlmaWVyX29wdCAocGFyc2VyKTsKICAgaWYgKG9taXR0ZWRfcGFy bXNfbG9jICYmIHR4X3F1YWwpCkBAIC0xMTg5OSw3ICsxMTk4Myw4IEBAIGNwX3BhcnNlcl9sYW1i ZGFfZGVjbGFyYXRvcl9vcHQgKGNwX3BhcnNlciogcGFyc2VyLCB0cmVlIGxhbWJkYV9leHByKQog ICAgICAgewogCURFQ0xfSU5JVElBTElaRURfSU5fQ0xBU1NfUCAoZmNvKSA9IDE7CiAJREVDTF9B UlRJRklDSUFMIChmY28pID0gMTsKLQlpZiAoIUxBTUJEQV9FWFBSX1NUQVRJQ19QIChsYW1iZGFf ZXhwcikpCisJaWYgKCFMQU1CREFfRVhQUl9TVEFUSUNfUCAobGFtYmRhX2V4cHIpCisJICAgICYm ICFERUNMX1hPQkpfTUVNQkVSX0ZVTkNfUCAoZmNvKSkKIAkgIC8qIEdpdmUgdGhlIG9iamVjdCBw YXJhbWV0ZXIgYSBkaWZmZXJlbnQgbmFtZS4gICovCiAJICBERUNMX05BTUUgKERFQ0xfQVJHVU1F TlRTIChmY28pKSA9IGNsb3N1cmVfaWRlbnRpZmllcjsKIAlERUNMX1NFVF9MQU1CREFfRlVOQ1RJ T04gKGZjbywgdHJ1ZSk7CkBAIC0xNjAxOSw2ICsxNjEwNCw4IEBAIGNwX3BhcnNlcl9kZWNsX3Nw ZWNpZmllcl9zZXEgKGNwX3BhcnNlciogcGFyc2VyLAogICAvKiBBc3N1bWUgbm8gY2xhc3Mgb3Ig ZW51bWVyYXRpb24gdHlwZSBpcyBkZWNsYXJlZC4gICovCiAgICpkZWNsYXJlc19jbGFzc19vcl9l bnVtID0gMDsKIAorICAvKiBLZWVwIGEgdG9rZW4gdGhhdCBhZGRpdGlvbmFsbHkgd2lsbCBiZSB1 c2VkIGZvciBkaWFnbm9zdGljcy4gICovCisgIGNwX3Rva2VuICpmaXJzdF9zcGVjaWZpZXIgPSBO VUxMOwogICAvKiBLZWVwIHJlYWRpbmcgc3BlY2lmaWVycyB1bnRpbCB0aGVyZSBhcmUgbm8gbW9y ZSB0byByZWFkLiAgKi8KICAgd2hpbGUgKHRydWUpCiAgICAgewpAQCAtMTYwOTEsNiArMTYxNzgs NDAgQEAgY3BfcGFyc2VyX2RlY2xfc3BlY2lmaWVyX3NlcSAoY3BfcGFyc2VyKiBwYXJzZXIsCiAJ ICAgIGRlY2xfc3BlY3MtPmxvY2F0aW9uc1tkc19hdHRyaWJ1dGVdID0gdG9rZW4tPmxvY2F0aW9u OwogCSAgY29udGludWU7CiAJfQorICAgICAgLyogV2Uga25vdyBieSB0aGlzIHBvaW50IHRoYXQg dGhlIHRva2VuIGlzIG5vdCBwYXJ0IG9mIGFuIGF0dHJpYnV0ZS4gICovCisgICAgICBpZiAoIWZp cnN0X3NwZWNpZmllcikKKwlmaXJzdF9zcGVjaWZpZXIgPSB0b2tlbjsKKyAgICAgIC8qIFNwZWNp YWwgY2FzZSBmb3IgInRoaXMiIHNwZWNpZmllciwgaW5kaWNhdGluZyBhIHBhcm0gaXMgYW4geG9i aiBwYXJtLgorCSBUaGUgInRoaXMiIHNwZWNpZmllciBtdXN0IGJlIHRoZSBmaXJzdCBzcGVjaWZp ZXIgaW4gdGhlIGRlY2xhcmF0aW9uLAorCSBhZnRlciBhbnkgYXR0cmlidXRlcy4gICovCisgICAg ICBpZiAodG9rZW4tPmtleXdvcmQgPT0gUklEX1RISVMpCisJeworCSAgY3BfbGV4ZXJfY29uc3Vt ZV90b2tlbiAocGFyc2VyLT5sZXhlcik7CisJICBpZiAodG9rZW4gIT0gZmlyc3Rfc3BlY2lmaWVy KQorCSAgICB7CisJICAgICAgLyogRG9uJ3QgZW1pdCBkaWFnbm9zdGljcyBpZiB3ZSBoYXZlIGFs cmVhZHkgc2VlbiAidGhpcyIsCisJCSBsZWF2ZSBpdCBmb3Igc2V0X2FuZF9jaGVja19kZWNsX3Nw ZWNfbG9jLiAgKi8KKwkgICAgICBpZiAoZGVjbF9zcGVjcy0+bG9jYXRpb25zW2RzX3RoaXNdID09 IDApCisJCXsKKwkJICBhdXRvX2RpYWdub3N0aWNfZ3JvdXAgZDsKKwkJICBnY2NfcmljaF9sb2Nh dGlvbiByaWNobG9jICh0b2tlbi0+bG9jYXRpb24pOworCQkgIC8qIElkZWFsbHkgd2Ugc3ludGhl c2l6ZSBhIGZ1bGwgcmV3cml0ZSwgYXQgdGhlIG1vbWVudAorCQkgICAgIHRoZXJlIGFyZSBpc3N1 ZXMgd2l0aCBpdCB0aG91Z2guCisJCSAgICAgSXQgcmV3cml0ZXMgImYoUyB0aGlzICYgcykiIGNv cnJlY3RseSwgYnV0IGZhaWxzCisJCSAgICAgdG8gcmV3cml0ZSAiZihjb25zdCB0aGlzIFMgcyki IGNvcnJlY3RseS4gSXQgYWxzbworCQkgICAgIGRvZXMgbm90IGhhbmRsZSAiZihTJiB0aGlzIHMp IiBjb3JyZWN0bHkgYXQgYWxsLiAgKi8KKwkJICByaWNobG9jLmFkZF9maXhpdF9yZW1vdmUgKCk7 CisJCSAgcmljaGxvYy5hZGRfZml4aXRfaW5zZXJ0X2JlZm9yZSAoZmlyc3Rfc3BlY2lmaWVyLT5s b2NhdGlvbiwKKwkJCQkJCSAgICJ0aGlzICIpOworCQkgIGVycm9yX2F0ICgmcmljaGxvYywKKwkJ CSAgICAiJTx0aGlzJT4gbXVzdCBiZSB0aGUgZmlyc3Qgc3BlY2lmaWVyICIKKwkJCSAgICAiaW4g YSBwYXJhbWV0ZXIgZGVjbGFyYXRpb24iKTsKKwkJfQorCSAgICB9CisJICBzZXRfYW5kX2NoZWNr X2RlY2xfc3BlY19sb2MgKGRlY2xfc3BlY3MsIGRzX3RoaXMsIHRva2VuKTsKKwkgIGNvbnRpbnVl OworCX0KKwogICAgICAgLyogQXNzdW1lIHdlIHdpbGwgZmluZCBhIGRlY2wtc3BlY2lmaWVyIGtl eXdvcmQuICAqLwogICAgICAgZm91bmRfZGVjbF9zcGVjID0gdHJ1ZTsKICAgICAgIC8qIElmIHRo ZSBuZXh0IHRva2VuIGlzIGFuIGFwcHJvcHJpYXRlIGtleXdvcmQsIHdlIGNhbiBzaW1wbHkKQEAg LTI1NDIxLDEyICsyNTU0MiwxNCBAQCBjcF9wYXJzZXJfcGFyYW1ldGVyX2RlY2xhcmF0aW9uIChj cF9wYXJzZXIgKnBhcnNlciwKICAgLyogVGhlIHJlc3RyaWN0aW9uIG9uIGRlZmluaW5nIG5ldyB0 eXBlcyBhcHBsaWVzIG9ubHkgdG8gdGhlIHR5cGUKICAgICAgb2YgdGhlIHBhcmFtZXRlciwgbm90 IHRvIHRoZSBkZWZhdWx0IGFyZ3VtZW50LiAgKi8KICAgcGFyc2VyLT50eXBlX2RlZmluaXRpb25f Zm9yYmlkZGVuX21lc3NhZ2UgPSBzYXZlZF9tZXNzYWdlOwotCisgIGNwX3Rva2VuICplcV90b2tl biA9IE5VTEw7CiAgIC8qIElmIHRoZSBuZXh0IHRva2VuIGlzIGA9JywgdGhlbiBwcm9jZXNzIGEg ZGVmYXVsdCBhcmd1bWVudC4gICovCiAgIGlmIChjcF9sZXhlcl9uZXh0X3Rva2VuX2lzIChwYXJz ZXItPmxleGVyLCBDUFBfRVEpKQogICAgIHsKICAgICAgIHRyZWUgdHlwZSA9IGRlY2xfc3BlY2lm aWVycy50eXBlOwogICAgICAgdG9rZW4gPSBjcF9sZXhlcl9wZWVrX3Rva2VuIChwYXJzZXItPmxl eGVyKTsKKyAgICAgIC8qIFVzZWQgZm9yIGRpYWdub3N0aWNzIHdpdGggYW4geG9iaiBwYXJhbWV0 ZXIuICAqLworICAgICAgZXFfdG9rZW4gPSB0b2tlbjsKICAgICAgIGlmIChkZWNsYXJhdG9yKQog CWRlY2xhcmF0b3ItPmluaXRfbG9jID0gdG9rZW4tPmxvY2F0aW9uOwogICAgICAgLyogSWYgd2Ug YXJlIGRlZmluaW5nIGEgY2xhc3MsIHRoZW4gdGhlIHRva2VucyB0aGF0IG1ha2UgdXAgdGhlCkBA IC0yNTQ5NSw2ICsyNTYxOCwyNSBAQCBjcF9wYXJzZXJfcGFyYW1ldGVyX2RlY2xhcmF0aW9uIChj cF9wYXJzZXIgKnBhcnNlciwKICAgaWYgKGRlZmF1bHRfYXJndW1lbnQpCiAgICAgU1RSSVBfQU5Z X0xPQ0FUSU9OX1dSQVBQRVIgKGRlZmF1bHRfYXJndW1lbnQpOwogCisgIGlmIChkZWNsX3NwZWNf c2VxX2hhc19zcGVjX3AgKCZkZWNsX3NwZWNpZmllcnMsIGRzX3RoaXMpKQorICAgIHsKKyAgICAg IGlmIChkZWZhdWx0X2FyZ3VtZW50KQorCXsKKwkgIC8qIElmIHRoZXJlIGlzIGEgZGVmYXVsdF9h cmd1bWVudCwgZXFfdG9rZW4gc2hvdWxkIGFsd2F5cyBiZSBzZXQuICAqLworCSAgZ2NjX2Fzc2Vy dChlcV90b2tlbik7CisJICBsb2NhdGlvbl90IHBhcmFtX3dpdGhfaW5pdF9sb2MKKwkgICAgPSBt YWtlX2xvY2F0aW9uIChlcV90b2tlbi0+bG9jYXRpb24sCisJCQkgICAgIGRlY2xfc3BlY190b2tl bl9zdGFydC0+bG9jYXRpb24sCisJCQkgICAgIGlucHV0X2xvY2F0aW9uKTsKKwkgIGVycm9yX2F0 IChwYXJhbV93aXRoX2luaXRfbG9jLAorCQkgICAgImFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0 ZXIgIgorCQkgICAgIm1heSBub3QgaGF2ZSBhIGRlZmF1bHQgYXJndW1lbnQiKTsKKwl9CisgICAg ICAvKiBYb2JqIHBhcmFtZXRlcnMgY2FuIG5vdCBoYXZlIGRlZmF1bHQgYXJndW1lbnRzLCB0aHVz CisJIHdlIGNhbiByZXVzZSB0aGUgZGVmYXVsdCBhcmd1bWVudCBmaWVsZCB0byBmbGFnIHRoZSBw YXJhbSBhcyBzdWNoLiAgKi8KKyAgICAgIGRlZmF1bHRfYXJndW1lbnQgPSB0aGlzX2lkZW50aWZp ZXI7CisgICAgfQorCiAgIC8qIEdlbmVyYXRlIGEgbG9jYXRpb24gZm9yIHRoZSBwYXJhbWV0ZXIs IHJhbmdpbmcgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCiAgICAgIGluaXRpYWwgdG9rZW4gdG8gdGhl IGVuZCBvZiB0aGUgZmluYWwgdG9rZW4gKHVzaW5nIGlucHV0X2xvY2F0aW9uIGZvcgogICAgICB0 aGUgbGF0dGVyLCBzZXQgdXAgYnkgY3BfbGV4ZXJfc2V0X3NvdXJjZV9wb3NpdGlvbl9mcm9tX3Rv a2VuIHdoZW4KQEAgLTMzODczLDcgKzM0MDE1LDggQEAgc2V0X2FuZF9jaGVja19kZWNsX3NwZWNf bG9jIChjcF9kZWNsX3NwZWNpZmllcl9zZXEgKmRlY2xfc3BlY3MsCiAJICAgICJjb25zdGV4cHIi LAogCSAgICAiX19jb21wbGV4IiwKIAkgICAgImNvbnN0aW5pdCIsCi0JICAgICJjb25zdGV2YWwi CisJICAgICJjb25zdGV2YWwiLAorCSAgICAidGhpcyIKIAkgIH07CiAJICBnY2NfcmljaF9sb2Nh dGlvbiByaWNobG9jIChsb2NhdGlvbik7CiAJICByaWNobG9jLmFkZF9maXhpdF9yZW1vdmUgKCk7 CmRpZmYgLS1naXQgYS9nY2MvY3AvcHQuY2MgYi9nY2MvY3AvcHQuY2MKaW5kZXggODZjOTViMjc4 YmEuLjc5MjVkMjhmODY3IDEwMDY0NAotLS0gYS9nY2MvY3AvcHQuY2MKKysrIGIvZ2NjL2NwL3B0 LmNjCkBAIC0xNDQwNywxNCArMTQ0MDcsMjAgQEAgdHN1YnN0X2Z1bmN0aW9uX2RlY2wgKHRyZWUg dCwgdHJlZSBhcmdzLCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFpbiwKICAgICAgIGdlbl90bXBsID0g TlVMTF9UUkVFOwogICAgICAgYXJndmVjID0gTlVMTF9UUkVFOwogICAgIH0KLQorICAvKiBXZSBo YWNrIFRZUEVfTUVUSE9EX0JBU0VUWVBFIG9udG8geG9iaiBtZW1iZXIgZnVuY3Rpb25zIGluCisg ICAgIHRzdWJzdF9sYW1iZGFfZXhwciB0byBnZXQgdGhlIHByb3BlciBjbG9zdXJlIHR5cGUgaGVy ZS4gICovCiAgIHRyZWUgY2xvc3VyZSA9IChsYW1iZGFfZm50eXBlID8gVFlQRV9NRVRIT0RfQkFT RVRZUEUgKGxhbWJkYV9mbnR5cGUpCiAJCSAgOiBOVUxMX1RSRUUpOwogICB0cmVlIGN0eCA9IGNs b3N1cmUgPyBjbG9zdXJlIDogREVDTF9DT05URVhUICh0KTsKICAgYm9vbCBtZW1iZXIgPSBjdHgg JiYgVFlQRV9QIChjdHgpOwogCiAgIC8qIElmIHRoaXMgaXMgYSBzdGF0aWMgbGFtYmRhLCByZW1v dmUgdGhlICd0aGlzJyBwb2ludGVyIGFkZGVkIGluCi0gICAgIHRzdWJzdF9sYW1iZGFfZXhwciBu b3cgdGhhdCB3ZSBrbm93IHRoZSBjbG9zdXJlIHR5cGUuICAqLworICAgICB0c3Vic3RfbGFtYmRh X2V4cHIgbm93IHRoYXQgd2Uga25vdyB0aGUgY2xvc3VyZSB0eXBlLgorICAgICBJIHN1c3BlY3Qg dGhhdCB3ZSBjYW4ganVzdCBjYXJyeSB0aGlzIGluZm9ybWF0aW9uIGRvd24gaW4KKyAgICAgVFlQ RV9NRVRIT0RfQkFTRVRZUEUgd2l0aG91dCBidWlsZGluZyB0aGUgZnVsbCBtZXRob2QgdHlwZSBp bgorICAgICB0c3Vic3RfbGFtYmRhX2V4cHIuICBUaGlzIHdvdWxkbid0IGJlIGlkZWFsIGJ1dCBu ZWl0aGVyIGlzIHRoaXMuCisgICAgIFNpbmNlIHRoYXQgZmllbGQgaXNuJ3QgdXNlZCBmb3IgYW55 dGhpbmcgZm9yIHN0YXRpYyBvciB4b2JqIG1lbWJlcgorICAgICBmdW5jdGlvbnMsIGl0IHNob3Vs ZCBiZSBmaW5lIHRvIGRvIHRoYXQuICAqLwogICBpZiAobGFtYmRhX2ZudHlwZSAmJiBERUNMX1NU QVRJQ19GVU5DVElPTl9QICh0KSkKICAgICBsYW1iZGFfZm50eXBlID0gc3RhdGljX2ZuX3R5cGUg KGxhbWJkYV9mbnR5cGUpOwogCkBAIC0xNDQ5MCwxMiArMTQ0OTYsMTIgQEAgdHN1YnN0X2Z1bmN0 aW9uX2RlY2wgKHRyZWUgdCwgdHJlZSBhcmdzLCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFpbiwKICAg ICBERUNMX05BTUUgKHIpID0gbWFrZV9jb252X29wX25hbWUgKFRSRUVfVFlQRSAodHlwZSkpOwog CiAgIHRyZWUgcGFybXMgPSBERUNMX0FSR1VNRU5UUyAodCk7Ci0gIGlmIChjbG9zdXJlICYmICFE RUNMX1NUQVRJQ19GVU5DVElPTl9QICh0KSkKKyAgaWYgKGNsb3N1cmUgJiYgREVDTF9JT0JKX01F TUJFUl9GVU5DX1AgKHQpICYmICFERUNMX1NUQVRJQ19GVU5DVElPTl9QICh0KSkKICAgICBwYXJt cyA9IERFQ0xfQ0hBSU4gKHBhcm1zKTsKICAgcGFybXMgPSB0c3Vic3QgKHBhcm1zLCBhcmdzLCBj b21wbGFpbiwgdCk7CiAgIGZvciAodHJlZSBwYXJtID0gcGFybXM7IHBhcm07IHBhcm0gPSBERUNM X0NIQUlOIChwYXJtKSkKICAgICBERUNMX0NPTlRFWFQgKHBhcm0pID0gcjsKLSAgaWYgKGNsb3N1 cmUgJiYgIURFQ0xfU1RBVElDX0ZVTkNUSU9OX1AgKHQpKQorICBpZiAoY2xvc3VyZSAmJiBERUNM X0lPQkpfTUVNQkVSX0ZVTkNfUCAodCkgJiYgIURFQ0xfU1RBVElDX0ZVTkNUSU9OX1AgKHQpKQog ICAgIHsKICAgICAgIHRyZWUgdHBhcm0gPSBidWlsZF90aGlzX3Bhcm0gKHIsIGNsb3N1cmUsIHR5 cGVfbWVtZm5fcXVhbHMgKHR5cGUpKTsKICAgICAgIERFQ0xfTkFNRSAodHBhcm0pID0gY2xvc3Vy ZV9pZGVudGlmaWVyOwpAQCAtMTQ1MzAsNiArMTQ1MzYsNTIgQEAgdHN1YnN0X2Z1bmN0aW9uX2Rl Y2wgKHRyZWUgdCwgdHJlZSBhcmdzLCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFpbiwKICAgICAgICYm IElERU5USUZJRVJfQU5ZX09QX1AgKERFQ0xfTkFNRSAocikpCiAgICAgICAmJiAhZ3Jva19vcF9w cm9wZXJ0aWVzIChyLCAvKmNvbXBsYWluPSovZmFsc2UpKQogICAgIHJldHVybiBlcnJvcl9tYXJr X25vZGU7CisgIC8qIFdlIGRvbid0IHRvdWNoIGEgbGFtYmRhJ3MgZnVuYyB3aGVuIGl0J3MganVz dCB0cnlpbmcgdG8gY3JlYXRlIHRoZQorICAgICBjbG9zdXJlIHR5cGUuICAqLworICBpZiAoIWxh bWJkYV9mbnR5cGUgJiYgTEFNQkRBX0ZVTkNUSU9OX1AgKHIpICYmIERFQ0xfWE9CSl9NRU1CRVJf RlVOQ19QIChyKSkKKyAgICB7CisgICAgICB0cmVlIGxhbWJkYV9leHByID0gQ0xBU1NUWVBFX0xB TUJEQV9FWFBSIChERUNMX0NPTlRFWFQgKHIpKTsKKyAgICAgIGlmIChMQU1CREFfRVhQUl9ERUZB VUxUX0NBUFRVUkVfTU9ERSAobGFtYmRhX2V4cHIpICE9IENQTERfTk9ORQorCSAgfHwgTEFNQkRB X0VYUFJfQ0FQVFVSRV9MSVNUIChsYW1iZGFfZXhwcikpCisJeworCSAgZ2NjX2Fzc2VydCAoVFJF RV9WRUNfTEVOR1RIIChhcmdzKSA+IDApOworCSAgdHJlZSBvYmogPSBUUkVFX1ZFQ19FTFQgKGFy Z3MsIDApOworCSAgaWYgKCFzYW1lX29yX2Jhc2VfdHlwZV9wIChERUNMX0NPTlRFWFQgKHIpLAor CQkJCSAgICBUWVBFX01BSU5fVkFSSUFOVCAobm9uX3JlZmVyZW5jZSAob2JqKSkpKQorCSAgICB7 CisJICAgICAgLyogVGhpcyBlcnJvciBkb2VzIG5vdCBlbWl0IHdoZW4gdGhlIGxhbWJkYSdzIGNh bGwgb3BlcmF0b3IKKwkJIHRlbXBsYXRlIGlzIGluc3RhbnRpYXRlZCBieSB0YWtpbmcgaXRzIGFk ZHJlc3MsIHN1Y2ggYXMgaW4KKwkJIHRoZSBmb2xsb3dpbmcgY2FzZToKKworCQkgYXV0byBmID0g W3ggPSAwXSh0aGlzIGF1dG8mJil7fTsKKwkJIGludCAoKmZwKShpbnQmKSA9ICZkZWNsdHlwZShm KTo6b3BlcmF0b3IoKTsKKworCQkgSXQgb25seSBlbWl0cyB3aGVuIGV4cGxpY2l0bHkgY2FsbGlu ZyB0aGUgY2FsbCBvcGVyYXRvciB3aXRoCisJCSBhbiBleHBsaWNpdCB0ZW1wbGF0ZSBwYXJhbWV0 ZXI6CisKKwkJIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisJCSBzdHJ1Y3QgUyA6IFQgeworCQkgICB1 c2luZyBUOjpvcGVyYXRvcigpOworCQkgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7cmV0dXJuIHt9 O30KKwkJIH07CisKKwkJIGF1dG8gcyA9IFN7W3ggPSAwXSh0aGlzIGF1dG8mJikge319OworCQkg cy5vcGVyYXRvcigpPGludD4oKTsKKworCQkgVGhpcyBpcyBkdWUgdG8gcmVzb2x2ZV9hZGRyZXNz X29mX292ZXJsb2FkZWRfZnVuY3Rpb24gYmVpbmcKKwkJIGRlZmljaWVudCBhdCByZXBvcnRpbmcg Y2FuZGlkYXRlcyB3aGVuIG92ZXJsb2FkIHJlc29sdXRpb24KKwkJIGZhaWxzLiAKKworCQkgVGhp cyBkaWFnbm9zdGljIHdpbGwgYmUgYWN0aXZlIGluIHRoZSBmaXJzdCBjYXNlIGlmL3doZW4KKwkJ IHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uIGlzIGZpeGVkIHRvIHByb3Bl cmx5CisJCSBlbWl0IGNhbmRpZGF0ZXMgdXBvbiBmYWlsdXJlIHRvIHJlc29sdmUgdG8gYW4gb3Zl cmxvYWQuICAqLworCSAgICAgIGlmIChjb21wbGFpbiAmIHRmX2Vycm9yKQorCQllcnJvciAoImEg bGFtYmRhIHdpdGggY2FwdHVyZXMgbWF5IG5vdCBoYXZlIGFuIGV4cGxpY2l0ICIKKwkJICAgICAg ICJvYmplY3QgcGFyYW1ldGVyIG9mIGFuIHVucmVsYXRlZCB0eXBlIik7CisJICAgICAgcmV0dXJu IGVycm9yX21hcmtfbm9kZTsKKwkgICAgfQorCX0KKyAgICB9CiAKICAgLyogQXNzb2NpYXRlIHRo ZSBjb25zdHJhaW50cyBkaXJlY3RseSB3aXRoIHRoZSBpbnN0YW50aWF0aW9uLiBXZQogICAgICBk b24ndCBzdWJzdGl0dXRlIHRocm91Z2ggdGhlIGNvbnN0cmFpbnRzOyB0aGF0J3Mgb25seSBkb25l IHdoZW4KQEAgLTE5NDkxLDkgKzE5NTQzLDE2IEBAIHRzdWJzdF9sYW1iZGFfZXhwciAodHJlZSB0 LCB0cmVlIGFyZ3MsIHRzdWJzdF9mbGFnc190IGNvbXBsYWluLCB0cmVlIGluX2RlY2wpCiAgICAg ICBjcF9ldmFsdWF0ZWQgZXY7CiAKICAgICAgIC8qIEZpeCB0aGUgdHlwZSBvZiAndGhpcycuICAq LwotICAgICAgZm50eXBlID0gYnVpbGRfbWVtZm5fdHlwZSAoZm50eXBlLCB0eXBlLAotCQkJCSB0 eXBlX21lbWZuX3F1YWxzIChmbnR5cGUpLAotCQkJCSB0eXBlX21lbWZuX3JxdWFsIChmbnR5cGUp KTsKKyAgICAgIGlmICghREVDTF9YT0JKX01FTUJFUl9GVU5DX1AgKG9sZGZuKSkKKwlmbnR5cGUg PSBidWlsZF9tZW1mbl90eXBlIChmbnR5cGUsIHR5cGUsCisJCQkJICAgdHlwZV9tZW1mbl9xdWFs cyAoZm50eXBlKSwKKwkJCQkgICB0eXBlX21lbWZuX3JxdWFsIChmbnR5cGUpKTsKKyAgICAgIC8q IFdlIGRvbid0IHVzZSB0aGlzIGZpZWxkIGFueXdoZXJlIGVsc2UgZm9yIHhvYmogbWVtYmVyIGZ1 bmN0aW9ucywgYW5kCisJIHdlIG5lZWQgYSB3YXkgdG8gcGFzcyB0aGlzIGluZm9ybWF0aW9uIGRv d24uICBUaGVyZXMgc29tZSByZWFsbHkKKwkgY29udm9sdXRlZCBzdHVmZiBnb2luZyBvbiB1bmZv cnR1bmF0ZWx5LCBhbmQgSSBjYW4gb25seSBiZWdpbiB0bworCSB1bnJhdmVsIGl0IGFsbC4gICAq LworICAgICAgaWYgKERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QIChvbGRmbikpCisJVFlQRV9NRVRI T0RfQkFTRVRZUEUgKGZudHlwZSkgPSB0eXBlOwogICAgICAgdHJlZSBpbnN0ID0gKG9sZHRtcGwK IAkJICAgPyB0c3Vic3RfdGVtcGxhdGVfZGVjbCAob2xkdG1wbCwgYXJncywgY29tcGxhaW4sCiAJ CQkJCSAgIGZudHlwZSwgdHBhcm1zKQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3NlYXJjaC5jYyBiL2dj Yy9jcC9zZWFyY2guY2MKaW5kZXggY2Q4MGYyODVhYzkuLjA4YzIyYmNkNWQ4IDEwMDY0NAotLS0g YS9nY2MvY3Avc2VhcmNoLmNjCisrKyBiL2djYy9jcC9zZWFyY2guY2MKQEAgLTIyMTIsMTEgKzIy MTIsMTQgQEAgbG9va19mb3Jfb3ZlcnJpZGVzX2hlcmUgKHRyZWUgdHlwZSwgdHJlZSBmbmRlY2wp CiAJLyogTm90IGEgdmlydHVhbC4gICovOwogICAgICAgZWxzZSBpZiAoREVDTF9DT05URVhUIChm bikgIT0gdHlwZSkKIAkvKiBJbnRyb2R1Y2VkIHdpdGggYSB1c2luZyBkZWNsYXJhdGlvbi4gICov OwotICAgICAgZWxzZSBpZiAoREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAoZm5kZWNsKSkKKyAgICAg IGVsc2UgaWYgKERFQ0xfU1RBVElDX0ZVTkNUSU9OX1AgKGZuZGVjbCkKKwkgICAgICAgfHwgREVD TF9YT0JKX01FTUJFUl9GVU5DX1AgKGZuZGVjbCkpCiAJewogCSAgdHJlZSBidHlwZXMgPSBUWVBF X0FSR19UWVBFUyAoVFJFRV9UWVBFIChmbikpOwogCSAgdHJlZSBkdHlwZXMgPSBUWVBFX0FSR19U WVBFUyAoVFJFRV9UWVBFIChmbmRlY2wpKTsKLQkgIGlmIChjb21wcGFybXMgKFRSRUVfQ0hBSU4g KGJ0eXBlcyksIGR0eXBlcykpCisJICBpZiAoY29tcHBhcm1zIChUUkVFX0NIQUlOIChidHlwZXMp LAorCQkJIERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QIChmbmRlY2wpCisJCQkgICA/IFRSRUVfQ0hB SU4gKGR0eXBlcykgOiBkdHlwZXMpKQogCSAgICByZXR1cm4gZm47CiAJfQogICAgICAgZWxzZSBp ZiAoc2FtZV9zaWduYXR1cmVfcCAoZm5kZWNsLCBmbikpCkBAIC0yMjQzLDYgKzIyNDYsMTUgQEAg bG9va19mb3Jfb3ZlcnJpZGVzX3IgKHRyZWUgdHlwZSwgdHJlZSBmbmRlY2wpCiAJICBlcnJvciAo IiVxKyNEIGNhbm5vdCBiZSBkZWNsYXJlZCIsIGZuZGVjbCk7CiAJICBlcnJvciAoIiAgc2luY2Ug JXErI0QgZGVjbGFyZWQgaW4gYmFzZSBjbGFzcyIsIGZuKTsKIAl9CisgICAgICBlbHNlIGlmIChE RUNMX1hPQkpfTUVNQkVSX0ZVTkNfUCAoZm5kZWNsKSkKKyAgICAgICAgeworCSAgYXV0b19kaWFn bm9zdGljX2dyb3VwIGQ7CisJICBlcnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKGZuZGVj bCksCisJCSAgICAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAiCisJCSAgICAib3Zl cnJpZGVzIHZpcnR1YWwgZnVuY3Rpb24iKTsKKwkgIGluZm9ybSAoREVDTF9TT1VSQ0VfTE9DQVRJ T04gKGZuKSwKKwkJICAidmlydHVhbCBmdW5jdGlvbiBkZWNsYXJlZCBoZXJlIik7CisJfQogICAg ICAgZWxzZQogCXsKIAkgIC8qIEl0J3MgZGVmaW5pdGVseSB2aXJ0dWFsLCBldmVuIGlmIG5vdCBl eHBsaWNpdGx5IHNldC4gICovCmRpZmYgLS1naXQgYS9nY2MvY3Avc2VtYW50aWNzLmNjIGIvZ2Nj L2NwL3NlbWFudGljcy5jYwppbmRleCA1MjA0NGJlN2FmOC4uOWY3OWQ4Y2I5ZjIgMTAwNjQ0Ci0t LSBhL2djYy9jcC9zZW1hbnRpY3MuY2MKKysrIGIvZ2NjL2NwL3NlbWFudGljcy5jYwpAQCAtNDUs NiArNDUsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90 IHNlZQogI2luY2x1ZGUgImdvbXAtY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAicHJlZGljdC5oIgog I2luY2x1ZGUgIm1lbW1vZGVsLmgiCisjaW5jbHVkZSAiZ2NjLXJpY2gtbG9jYXRpb24uaCIKIAog LyogVGhlcmUgcm91dGluZXMgcHJvdmlkZSBhIG1vZHVsYXIgaW50ZXJmYWNlIHRvIHBlcmZvcm0g bWFueSBwYXJzaW5nCiAgICBvcGVyYXRpb25zLiAgVGhleSBtYXkgdGhlcmVmb3JlIGJlIHVzZWQg ZHVyaW5nIGFjdHVhbCBwYXJzaW5nLCBvcgpAQCAtMzA4NSw3ICszMDg2LDMxIEBAIGZpbmlzaF90 aGlzX2V4cHIgKHZvaWQpCiAgICAgcmV0dXJuIHJ2YWx1ZSAocmVzdWx0KTsKIAogICB0cmVlIGZu ID0gY3VycmVudF9ub25sYW1iZGFfZnVuY3Rpb24gKCk7Ci0gIGlmIChmbiAmJiBERUNMX1NUQVRJ Q19GVU5DVElPTl9QIChmbikpCisgIGlmIChmbiAmJiBERUNMX1hPQkpfTUVNQkVSX0ZVTkNfUCAo Zm4pKQorICAgIHsKKyAgICAgIGF1dG9fZGlhZ25vc3RpY19ncm91cCBkOworICAgICAgZXJyb3Ig KCIlPHRoaXMlPiBpcyB1bmF2YWlsYWJsZSBmb3IgZXhwbGljaXQgb2JqZWN0IG1lbWJlciAiCisJ ICAgICAiZnVuY3Rpb25zIik7CisgICAgICAvKiBEb2luZyBhIGZpeGl0IGhlcmUgaXMgcG9zc2li bGUsIGJ1dCBoYXJkLCBtaWdodCBiZSB3b3J0aHdoaWxlCisJIGluIHRoZSBmdXR1cmUuICAqLwor ICAgICAgdHJlZSB4b2JqX3Bhcm0gPSBERUNMX0FSR1VNRU5UUyAoZm4pOworICAgICAgZ2NjX2Fz c2VydCAoeG9ial9wYXJtKTsKKyAgICAgIHRyZWUgcGFybV9uYW1lID0gREVDTF9OQU1FICh4b2Jq X3Bhcm0pOworICAgICAgaWYgKHBhcm1fbmFtZSkKKwlpbmZvcm0gKERFQ0xfU09VUkNFX0xPQ0FU SU9OICh4b2JqX3Bhcm0pLAorCQkidXNlIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgJXFEIGlu c3RlYWQiLAorCQlwYXJtX25hbWUpOworICAgICAgZWxzZQorCXsKKyAgICAgICAgICBnY2Nfcmlj aF9sb2NhdGlvbiB4b2JqX2xvYyAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFybSkpOwor CSAgLyogVGhpcyBkb2Vzbid0IHdvcmsgYW5kIEkgZG9uJ3Qga25vdyB3aHkuIEknbGwgcHJvYmFi bHkgcmVtb3ZlIGl0CisJICAgICBiZWZvcmUgdGhlIGZpbmFsIHZlcnNpb24uICAqLworCSAgeG9i al9sb2MuYWRkX2ZpeGl0X2luc2VydF9hZnRlcigiIHNlbGYiKTsKKwkgIGluZm9ybSAoREVDTF9T T1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFybSksCisJCSAgIm5hbWUgYW5kIHVzZSB0aGUgZXhwbGlj aXQgb2JqZWN0IHBhcmFtZXRlciBpbnN0ZWFkIik7CisJfQorICAgIH0KKyAgZWxzZSBpZiAoZm4g JiYgREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAoZm4pKQogICAgIGVycm9yICgiJTx0aGlzJT4gaXMg dW5hdmFpbGFibGUgZm9yIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIik7CiAgIGVsc2UgaWYgKGZu ICYmIHByb2Nlc3NpbmdfY29udHJhY3RfY29uZGl0aW9uICYmIERFQ0xfQ09OU1RSVUNUT1JfUCAo Zm4pKQogICAgIGVycm9yICgiaW52YWxpZCB1c2Ugb2YgJTx0aGlzJT4gYmVmb3JlIGl0IGlzIHZh bGlkIik7CmRpZmYgLS1naXQgYS9nY2MvY3AvdHJlZS5jYyBiL2djYy9jcC90cmVlLmNjCmluZGV4 IDQxN2M5MmJhNzZmLi5kODYxNTkzZDllNCAxMDA2NDQKLS0tIGEvZ2NjL2NwL3RyZWUuY2MKKysr IGIvZ2NjL2NwL3RyZWUuY2MKQEAgLTM2NTksNyArMzY1OSw3IEBAIGJ1aWxkX21pbl9ub25fZGVw X29wX292ZXJsb2FkIChlbnVtIHRyZWVfY29kZSBvcCwKICAgbmFyZ3MgPSBjYWxsX2V4cHJfbmFy Z3MgKG5vbl9kZXApOwogCiAgIGV4cGVjdGVkX25hcmdzID0gY3BfdHJlZV9jb2RlX2xlbmd0aCAo b3ApOwotICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKG92ZXJsb2FkKSkgPT0gTUVUSE9EX1RZ UEUKKyAgaWYgKERFQ0xfT0JKRUNUX01FTUJFUl9GVU5DX1AgKG92ZXJsb2FkKQogICAgICAgLyog Rm9yIEFSUkFZX1JFRiwgb3BlcmF0b3JbXSBpcyBlaXRoZXIgYSBub24tc3RhdGljIG1lbWJlciBv ciBuZXdseQogCSBzdGF0aWMgbWVtYmVyLCBuZXZlciBvdXQgb2YgY2xhc3MgYW5kIGZvciB0aGUg c3RhdGljIG1lbWJlciBjYXNlCiAJIGlmIHVzZXIgdXNlcyBzaW5nbGUgaW5kZXggdGhlIG9wZXJh dG9yW10gbmVlZHMgdG8gaGF2ZSBhIHNpbmdsZQpAQCAtMzY3NywyNCArMzY3NywyNSBAQCBidWls ZF9taW5fbm9uX2RlcF9vcF9vdmVybG9hZCAoZW51bSB0cmVlX2NvZGUgb3AsCiAgIHJlbGVhc2lu Z192ZWMgYXJnczsKICAgdmFfc3RhcnQgKHAsIG92ZXJsb2FkKTsKIAotICBpZiAoVFJFRV9DT0RF IChUUkVFX1RZUEUgKG92ZXJsb2FkKSkgPT0gRlVOQ1RJT05fVFlQRSkKKyAgaWYgKERFQ0xfT0JK RUNUX01FTUJFUl9GVU5DX1AgKG92ZXJsb2FkKSkKICAgICB7Ci0gICAgICBmbiA9IG92ZXJsb2Fk OwotICAgICAgaWYgKG9wID09IEFSUkFZX1JFRikKLQlvYmogPSB2YV9hcmcgKHAsIHRyZWUpOwor ICAgICAgdHJlZSBvYmplY3QgPSB2YV9hcmcgKHAsIHRyZWUpOworICAgICAgdHJlZSBiaW5mbyA9 IFRZUEVfQklORk8gKFRSRUVfVFlQRSAob2JqZWN0KSk7CisgICAgICB0cmVlIG1ldGhvZCA9IGJ1 aWxkX2Jhc2VsaW5rIChiaW5mbywgYmluZm8sIG92ZXJsb2FkLCBOVUxMX1RSRUUpOworICAgICAg Zm4gPSBidWlsZF9taW4gKENPTVBPTkVOVF9SRUYsIFRSRUVfVFlQRSAob3ZlcmxvYWQpLAorCQkg ICAgICBvYmplY3QsIG1ldGhvZCwgTlVMTF9UUkVFKTsKICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgbmFyZ3M7IGkrKykKIAl7CiAJICB0cmVlIGFyZyA9IHZhX2FyZyAocCwgdHJlZSk7CiAJICB2 ZWNfc2FmZV9wdXNoIChhcmdzLCBhcmcpOwogCX0KICAgICB9Ci0gIGVsc2UgaWYgKFRSRUVfQ09E RSAoVFJFRV9UWVBFIChvdmVybG9hZCkpID09IE1FVEhPRF9UWVBFKQorICBlbHNlIGlmIChUUkVF X0NPREUgKFRSRUVfVFlQRSAob3ZlcmxvYWQpKSA9PSBGVU5DVElPTl9UWVBFKQogICAgIHsKLSAg ICAgIHRyZWUgb2JqZWN0ID0gdmFfYXJnIChwLCB0cmVlKTsKLSAgICAgIHRyZWUgYmluZm8gPSBU WVBFX0JJTkZPIChUUkVFX1RZUEUgKG9iamVjdCkpOwotICAgICAgdHJlZSBtZXRob2QgPSBidWls ZF9iYXNlbGluayAoYmluZm8sIGJpbmZvLCBvdmVybG9hZCwgTlVMTF9UUkVFKTsKLSAgICAgIGZu ID0gYnVpbGRfbWluIChDT01QT05FTlRfUkVGLCBUUkVFX1RZUEUgKG92ZXJsb2FkKSwKLQkJICAg ICAgb2JqZWN0LCBtZXRob2QsIE5VTExfVFJFRSk7CisgICAgICBnY2NfYXNzZXJ0ICghREVDTF9Y T0JKX01FTUJFUl9GVU5DX1AgKG92ZXJsb2FkKSk7CisgICAgICBmbiA9IG92ZXJsb2FkOworICAg ICAgaWYgKG9wID09IEFSUkFZX1JFRikKKwlvYmogPSB2YV9hcmcgKHAsIHRyZWUpOwogICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBuYXJnczsgaSsrKQogCXsKIAkgIHRyZWUgYXJnID0gdmFfYXJn IChwLCB0cmVlKTsKQEAgLTM3MjksNyArMzczMCw3IEBAIGJ1aWxkX21pbl9ub25fZGVwX29wX292 ZXJsb2FkICh0cmVlIG5vbl9kZXAsIHRyZWUgb3ZlcmxvYWQsIHRyZWUgb2JqZWN0LAogCiAgIHVu c2lnbmVkIGludCBuYXJncyA9IGNhbGxfZXhwcl9uYXJncyAobm9uX2RlcCk7CiAgIHRyZWUgZm4g PSBvdmVybG9hZDsKLSAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChvdmVybG9hZCkpID09IE1F VEhPRF9UWVBFKQorICBpZiAoREVDTF9PQkpFQ1RfTUVNQkVSX0ZVTkNfUCAob3ZlcmxvYWQpKQog ICAgIHsKICAgICAgIHRyZWUgYmluZm8gPSBUWVBFX0JJTkZPIChUUkVFX1RZUEUgKG9iamVjdCkp OwogICAgICAgdHJlZSBtZXRob2QgPSBidWlsZF9iYXNlbGluayAoYmluZm8sIGJpbmZvLCBvdmVy bG9hZCwgTlVMTF9UUkVFKTsKZGlmZiAtLWdpdCBhL2djYy9jcC90eXBlY2suY2MgYi9nY2MvY3Av dHlwZWNrLmNjCmluZGV4IDQ5YWZiZDhmYjVlLi5hNzI0ZDIxYTljNyAxMDA2NDQKLS0tIGEvZ2Nj L2NwL3R5cGVjay5jYworKysgYi9nY2MvY3AvdHlwZWNrLmNjCkBAIC03MTMzLDYgKzcxMzMsMjQg QEAgY3BfYnVpbGRfYWRkcl9leHByXzEgKHRyZWUgYXJnLCBib29sIHN0cmljdF9sdmFsdWUsIHRz dWJzdF9mbGFnc190IGNvbXBsYWluKQogCiAgICAgY2FzZSBCQVNFTElOSzoKICAgICAgIGFyZyA9 IEJBU0VMSU5LX0ZVTkNUSU9OUyAoYXJnKTsKKyAgICAgIC8qIElmIHdlIGFyZSBwYXNzZWQgYSBC QVNFTElOSywgdGhlIG9wZXJhbmQgb2YgdGhlIGFkZHJlc3Mtb2Ygb3BlcmF0b3IKKwkgd2FzIG5v dCBxdWFsaWZpZWQsIHRha2luZyB0aGUgYWRkcmVzcyBvZiBhIG5vbi1zdGF0aWMgbWVtYmVyIGZ1 bmN0aW9uCisJIG11c3QgYmUgcXVhbGlmaWVkIGJ5IHRoZSBjbGFzcy4KKwkgSXQncyBwb3NzaWJs ZSB3ZSBzaG91bGRuJ3QgYmUgbWFraW5nIHRoaXMgYmFzZWxpbmsgb3B0aW1pemF0aW9uIGZvcgor CSB4b2JqIG1lbWJlciBmdW5jdGlvbnMgYXQgYWxsLCB3ZSBzaG91bGQgZXZhbHVhdGUgdGhhdCBs YXRlci4gICovCisgICAgICBpZiAoREVDTF9YT0JKX01FTUJFUl9GVU5DX1AgKGFyZykpCisJewor CSAgLyogRXJyb3Igc2hvdWxkIG1hdGNoIHRoYXQgaW4KKwkgICAgIGNsYXNzLmNjOnJlc29sdmVf YWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uLgorCSAgICAgV2UgcmVhbGx5IHNob3VsZCBk byBhIGZpeGl0IGhlcmUuICAqLworCSAgZXJyb3JfYXQgKGlucHV0X2xvY2F0aW9uLAorCQkgICAg InRha2luZyB0aGUgYWRkcmVzcyBvZiBhbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyICIKKwkJICAg ICJmdW5jdGlvbiBtdXN0IGJlIHF1YWxpZmllZCIpOworCSAgaW5mb3JtIChpbnB1dF9sb2NhdGlv biwKKwkJICAiKGEgcG9pbnRlciB0byBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIGNh biBvbmx5IGJlICIKKwkJICAiZm9ybWVkIHdpdGggJTwmJUUlPikiLCBhcmcpOworCSAgcmV0dXJu IGVycm9yX21hcmtfbm9kZTsKKwl9CiAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwogCiAgICAg Y2FzZSBPVkVSTE9BRDoKQEAgLTcxNjQsNiArNzE4MiwxNyBAQCBjcF9idWlsZF9hZGRyX2V4cHJf MSAodHJlZSBhcmcsIGJvb2wgc3RyaWN0X2x2YWx1ZSwgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4p CiAJICAgICYmICFtYXJrX3VzZWQgKHQsIGNvbXBsYWluKSAmJiAhKGNvbXBsYWluICYgdGZfZXJy b3IpKQogCSAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKIAorCS8qIFB1bGwgb3V0IHRoZSBmdW5j dGlvbl9kZWNsIGZvciBhIHNpbmdsZSB4b2JqIG1lbWJlciBmdW5jdGlvbiwgYW5kCisJICAgbGV0 IHRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24gaGFuZGxlIGl0LiBUaGlzIGlzIGhhbmRsZWQgdGhl IHNhbWUKKwkgICB3YXkgYXMgdGhlIEJBU0VMSU5LIGNhc2UgYWJvdmUsIGJ1dCB3ZSBjYW4ndCBo YW5kbGUgeG9iaiBtZW1iZXIKKwkgICBmdW5jdGlvbnMgdGhlcmUgYXMgeG9iaiBtZW1iZXIgZnVu Y3Rpb25zIG11c3QgYmUgcXVhbGlmaWVkLCBoZW5jZQorCSAgIHRoZSBlcnJvciBhYm92ZS4gICov CisJaWYgKERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QICh0KSkKKwkgIHsKKwkgICAgYXJnID0gdDsK KwkgICAgYnJlYWs7CisJICB9CisKIAl0eXBlID0gYnVpbGRfcHRybWVtX3R5cGUgKGNvbnRleHRf Zm9yX25hbWVfbG9va3VwICh0KSwKIAkJCQkgIFRSRUVfVFlQRSAodCkpOwogCXQgPSBtYWtlX3B0 cm1lbV9jc3QgKHR5cGUsIHQpOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqLWJhc2ljMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhw bGljaXQtb2JqLWJhc2ljMS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li4xMzQxODJjNzc0MQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1iYXNpYzEuQwpAQCAtMCwwICsxLDExNCBAQAorLy8gUDA4NDdSNwor Ly8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyBiYXNpYyB1c2UgY2Fz ZXMgYW5kIGNhbGxpbmcKKworLy8gbm9uLXRyYWlsaW5nIHJldHVybgorLy8gZGVmaW5pdGlvbnMK K3N0cnVjdCBTMCB7CisgIHZvaWQgZjAodGhpcyBTMCkge30KKyAgdm9pZCBmMSh0aGlzIFMwJikg e30KKyAgdm9pZCBmMih0aGlzIFMwJiYpIHt9CisgIHZvaWQgZjModGhpcyBTMCBjb25zdCYpIHt9 CisgIHZvaWQgZjQodGhpcyBTMCBjb25zdCYmKSB7fQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxm PgorICB2b2lkIGQwKHRoaXMgU2VsZiYmKSB7fQorICB2b2lkIGQxKHRoaXMgYXV0byYmKSB7fQor fTsKKy8vIGRlY2xhcmF0aW9ucworc3RydWN0IFMxIHsKKyAgdm9pZCBmMCh0aGlzIFMxKTsKKyAg dm9pZCBmMSh0aGlzIFMxJik7CisgIHZvaWQgZjIodGhpcyBTMSYmKTsKKyAgdm9pZCBmMyh0aGlz IFMxIGNvbnN0Jik7CisgIHZvaWQgZjQodGhpcyBTMSBjb25zdCYmKTsKKyAgdGVtcGxhdGU8dHlw ZW5hbWUgU2VsZj4KKyAgdm9pZCBkMCh0aGlzIFNlbGYmJik7CisgIHZvaWQgZDEodGhpcyBhdXRv JiYpOworfTsKKy8vIG91dCBvZiBsaW5lIGRlZmluaXRpb25zCit2b2lkIFMxOjpmMCh0aGlzIFMx KSB7fQordm9pZCBTMTo6ZjEodGhpcyBTMSYpIHt9Cit2b2lkIFMxOjpmMih0aGlzIFMxJiYpIHt9 Cit2b2lkIFMxOjpmMyh0aGlzIFMxIGNvbnN0Jikge30KK3ZvaWQgUzE6OmY0KHRoaXMgUzEgY29u c3QmJikge30KK3RlbXBsYXRlPHR5cGVuYW1lIFNlbGY+Cit2b2lkIFMxOjpkMCh0aGlzIFNlbGYm Jikge30KK3ZvaWQgUzE6OmQxKHRoaXMgYXV0byYmKSB7fQorCisvLyB0cmFpbGluZyByZXR1cm4K Ky8vIGRlZmluaXRpb25zCitzdHJ1Y3QgUzIgeworICBhdXRvIGYwKHRoaXMgUzIpIC0+IHZvaWQg e30KKyAgYXV0byBmMSh0aGlzIFMyJikgLT4gdm9pZCB7fQorICBhdXRvIGYyKHRoaXMgUzImJikg LT4gdm9pZCB7fQorICBhdXRvIGYzKHRoaXMgUzIgY29uc3QmKSAtPiB2b2lkIHt9CisgIGF1dG8g ZjQodGhpcyBTMiBjb25zdCYmKSAtPiB2b2lkIHt9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+ CisgIGF1dG8gZDAodGhpcyBTZWxmJiYpIC0+IHZvaWQge30KKworICBhdXRvIGQxKHRoaXMgYXV0 byYmKSAtPiB2b2lkIHt9Cit9OworLy8gZGVjbGFyYXRpb25zCitzdHJ1Y3QgUzMgeworICBhdXRv IGYwKHRoaXMgUzMpIC0+IHZvaWQ7CisgIGF1dG8gZjEodGhpcyBTMyYpIC0+IHZvaWQ7CisgIGF1 dG8gZjIodGhpcyBTMyYmKSAtPiB2b2lkOworICBhdXRvIGYzKHRoaXMgUzMgY29uc3QmKSAtPiB2 b2lkOworICBhdXRvIGY0KHRoaXMgUzMgY29uc3QmJikgLT4gdm9pZDsKKyAgdGVtcGxhdGU8dHlw ZW5hbWUgU2VsZj4KKyAgYXV0byBkMCh0aGlzIFNlbGYmJikgLT4gdm9pZDsKKyAgYXV0byBkMSh0 aGlzIGF1dG8mJikgLT4gdm9pZDsKK307CisvLyBvdXQgb2YgbGluZSBkZWZpbml0aW9ucworYXV0 byBTMzo6ZjAodGhpcyBTMykgLT4gdm9pZCB7fQorYXV0byBTMzo6ZjEodGhpcyBTMyYpIC0+IHZv aWQge30KK2F1dG8gUzM6OmYyKHRoaXMgUzMmJikgLT4gdm9pZCB7fQorYXV0byBTMzo6ZjModGhp cyBTMyBjb25zdCYpIC0+IHZvaWQge30KK2F1dG8gUzM6OmY0KHRoaXMgUzMgY29uc3QmJikgLT4g dm9pZCB7fQordGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4KK2F1dG8gUzM6OmQwKHRoaXMgU2VsZiYm KSAtPiB2b2lkIHt9CithdXRvIFMzOjpkMSh0aGlzIGF1dG8mJikgLT4gdm9pZCB7fQorCit0ZW1w bGF0ZTx0eXBlbmFtZSBUPgordm9pZCBjYWxsX3dpdGhfcXVhbGlmaWNhdGlvbigpCit7CisgIFQg b2Jqe307CisgIC8vIGJ5IHZhbHVlIHNob3VsZCB0YWtlIGFueSBxdWFsaWZpY2F0aW9uIChmMCkK KyAgVHt9LmYwKCk7CisgIG9iai5mMCgpOworICBzdGF0aWNfY2FzdDxUJiY+KG9iaikuZjAoKTsg CisgIHN0YXRpY19jYXN0PFQgY29uc3QmPihvYmopLmYwKCk7CisgIHN0YXRpY19jYXN0PFQgY29u c3QmJj4ob2JqKS5mMCgpOworICAvLyBzcGVjaWZpYyBxdWFsaWZpY2F0aW9uIChmMSAtIGY0KQor ICBUe30uZjIoKTsKKyAgVHt9LmYzKCk7CisgIFR7fS5mNCgpOworICBvYmouZjEoKTsKKyAgb2Jq LmYzKCk7CisgIHN0YXRpY19jYXN0PFQmJj4ob2JqKS5mMigpOworICBzdGF0aWNfY2FzdDxUJiY+ KG9iaikuZjMoKTsKKyAgc3RhdGljX2Nhc3Q8VCYmPihvYmopLmY0KCk7CisgIHN0YXRpY19jYXN0 PFQgY29uc3QmPihvYmopLmYzKCk7CisgIHN0YXRpY19jYXN0PFQgY29uc3QmJj4ob2JqKS5mNCgp OworICAvLyBkZWR1Y2VkIHNob3VsZCAob2J2aW91c2x5KSB0YWtlIGFueSBxdWFsaWZpY2F0aW9u IChkMCwgZDEpCisgIFR7fS5kMCgpOworICBvYmouZDAoKTsKKyAgc3RhdGljX2Nhc3Q8VCYmPihv YmopLmQwKCk7CisgIHN0YXRpY19jYXN0PFQgY29uc3QmPihvYmopLmQwKCk7CisgIHN0YXRpY19j YXN0PFQgY29uc3QmJj4ob2JqKS5kMCgpOworICBUe30uZDEoKTsKKyAgb2JqLmQxKCk7CisgIHN0 YXRpY19jYXN0PFQmJj4ob2JqKS5kMSgpOworICBzdGF0aWNfY2FzdDxUIGNvbnN0Jj4ob2JqKS5k MSgpOworICBzdGF0aWNfY2FzdDxUIGNvbnN0JiY+KG9iaikuZDEoKTsKK30KKwordm9pZCBwZXJm b3JtX2NhbGxzKCkKK3sKKyAgY2FsbF93aXRoX3F1YWxpZmljYXRpb248UzA+KCk7CisgIGNhbGxf d2l0aF9xdWFsaWZpY2F0aW9uPFMxPigpOworICBjYWxsX3dpdGhfcXVhbGlmaWNhdGlvbjxTMj4o KTsKKyAgY2FsbF93aXRoX3F1YWxpZmljYXRpb248UzM+KCk7Cit9CisKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzIuQyBiL2djYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzIuQwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmIyY2FkMTMwZmEKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWMyLkMKQEAgLTAsMCAr MSwyOCBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBydW4geyB0YXJnZXQgYysrMjMgfSB9CisK Ky8vIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlciB0eXBlIGRlZHVjdGlv biwKKy8vIGNvbnZlcnNpb24gdG8gZnVuY3Rpb24gcG9pbnRlciwKKy8vIGFuZCBjYWxsaW5nIHRo cm91Z2ggcG9pbnRlciB0byBmdW5jdGlvbgorCitzdHJ1Y3QgUyB7CisgIGludCBfbjsKKyAgaW50 IGYodGhpcyBTJiBzZWxmKSB7IHJldHVybiBzZWxmLl9uOyB9Cit9OworCit1c2luZyBmX3R5cGUg PSBpbnQoKikoUyYpOworCitzdGF0aWNfYXNzZXJ0IChfX2lzX3NhbWUgKGZfdHlwZSwgZGVjbHR5 cGUgKCZTOjpmKSkpOworCitpbnQgbWFpbigpCit7CisgIGF1dG8gZnAwID0gJlM6OmY7CisgIGZf dHlwZSBmcDEgPSAmUzo6ZjsKKyAgc3RhdGljX2Fzc2VydCAoX19pc19zYW1lIChkZWNsdHlwZSAo ZnAwKSwgZGVjbHR5cGUgKGZwMSkpKTsKKyAgUyBzezQyfTsKKyAgaWYgKGZwMCAocykgIT0gNDIp CisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoZnAxIChzKSAhPSA0MikKKyAgICBfX2J1 aWx0aW5fYWJvcnQgKCk7Cit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1iYXNpYzMuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1iYXNpYzMuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZTQ2NmNjOTc2MWMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotYmFzaWMzLkMKQEAgLTAsMCArMSw0OTYgQEAKKy8vIFAwODQ3UjcK Ky8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gYm9ndXMgZGlhZ25v c2lzIG9mIHZhbGlkIGRlY2xhcmF0aW9ucyBhcyByZWRlY2xhcmF0aW9ucworLy8gdGVzdHMgZm9y IGJ5LXZhbHVlIGFyZSBlbHNld2hlcmUgKHRvZG86IGFkZCBmaWxlbmFtZSkKKworLy8gZWFjaCBn cm91cCBoYXMgOCBvdmVybG9hZHMgdGhhdCBlYWNoIHRha2UKKy8vIGx2YWx1ZSByZWYgdG8gUwor Ly8gcnZhbHVlIHJlZiB0byBTCisvLyBsdmFsdWUgYyByZWYgdG8gUworLy8gcnZhbHVlIGMgcmVm IHRvIFMKKy8vIGx2YWx1ZSB2IHJlZiB0byBTCisvLyBydmFsdWUgdiByZWYgdG8gUworLy8gbHZh bHVlIGN2IHJlZiB0byBTCisvLyBydmFsdWUgY3YgcmVmIHRvIFMKKy8vIHdoZXJlIFMgaXMgdGhl IHN0cnVjdCB0aGUgZnVuY3Rpb24gaXMgZGVjbGFyZWQgaW4KKworLy8gb25seSB4b2JqICh0aGUg bW9zdCBiYXNpYyBjYXNlKQorCitzdHJ1Y3QgUyB7CisgIHZvaWQgZih0aGlzIFMgJik7CisgIHZv aWQgZih0aGlzIFMgJiYpOworICB2b2lkIGYodGhpcyBTIGNvbnN0Jik7CisgIHZvaWQgZih0aGlz IFMgY29uc3QmJik7CisgIHZvaWQgZih0aGlzIFMgdm9sYXRpbGUmKTsKKyAgdm9pZCBmKHRoaXMg UyB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYpOworICB2b2lk IGYodGhpcyBTIGNvbnN0IHZvbGF0aWxlJiYpOworfTsKKworLy8gSSogaGFzIHRoZSAxIHhvYmog NyBpb2JqIGNhc2VzCisvLyBYKiBoYXMgdGhlIDcgeG9iaiAxIGlvYmogY2FzZXMKKy8vICowIGhh cyB0aGUgdW5pcXVlIGZ1bmN0aW9uIGZpcnN0LCB0aGUgcmVzdCBhZnRlcgorLy8gKjEgaGFzIHRo ZSB1bmlxdWUgZnVuY3Rpb24gbGFzdCwgdGhlIHJlc3QgYWZ0ZXIKKy8vICoyIGhhcyB0aGUgZnVu Y3Rpb25zIGluIHRoZSBvcmRlciBzdGF0ZWQgYWJvdmUKKy8vIHhvYmogZmlyc3QsIDEgeG9iaiwg NyBpb2JqCisKKy8vICh5ZXMgdGhlcmUgYXJlIHNvbWUgcmVkdW5kYW50IGNhc2VzKQorCisvLyB1 bmlxdWUgZmlyc3QsIDEgeG9iaiA3IGlvYmoKKworc3RydWN0IEkwIHsKKyAgdm9pZCBmMCh0aGlz IEkwJik7CisgIHZvaWQgZjAoKSAmJjsKKyAgdm9pZCBmMCgpIGNvbnN0JjsKKyAgdm9pZCBmMCgp IGNvbnN0JiY7CisgIHZvaWQgZjAoKSB2b2xhdGlsZSY7CisgIHZvaWQgZjAoKSB2b2xhdGlsZSYm OworICB2b2lkIGYwKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGYwKCkgY29uc3Qgdm9sYXRp bGUmJjsKKworICB2b2lkIGYxKHRoaXMgSTAmJik7CisgIHZvaWQgZjEoKSAmOworICB2b2lkIGYx KCkgY29uc3QmOworICB2b2lkIGYxKCkgY29uc3QmJjsKKyAgdm9pZCBmMSgpIHZvbGF0aWxlJjsK KyAgdm9pZCBmMSgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZjEoKSBjb25zdCB2b2xhdGlsZSY7Cisg IHZvaWQgZjEoKSBjb25zdCB2b2xhdGlsZSYmOworCisgIHZvaWQgZmMwKHRoaXMgSTAgY29uc3Qm KTsKKyAgdm9pZCBmYzAoKSAmOworICB2b2lkIGZjMCgpICYmOworICB2b2lkIGZjMCgpIGNvbnN0 JiY7CisgIHZvaWQgZmMwKCkgdm9sYXRpbGUmOworICB2b2lkIGZjMCgpIHZvbGF0aWxlJiY7Cisg IHZvaWQgZmMwKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGZjMCgpIGNvbnN0IHZvbGF0aWxl JiY7CisKKyAgdm9pZCBmYzEodGhpcyBJMCBjb25zdCYmKTsKKyAgdm9pZCBmYzEoKSAmOworICB2 b2lkIGZjMSgpICYmOworICB2b2lkIGZjMSgpIGNvbnN0JjsKKyAgdm9pZCBmYzEoKSB2b2xhdGls ZSY7CisgIHZvaWQgZmMxKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmYzEoKSBjb25zdCB2b2xhdGls ZSY7CisgIHZvaWQgZmMxKCkgY29uc3Qgdm9sYXRpbGUmJjsKKworICB2b2lkIGZ2MCh0aGlzIEkw IHZvbGF0aWxlJik7CisgIHZvaWQgZnYwKCkgJjsKKyAgdm9pZCBmdjAoKSAmJjsKKyAgdm9pZCBm djAoKSBjb25zdCY7CisgIHZvaWQgZnYwKCkgY29uc3QmJjsKKyAgdm9pZCBmdjAoKSB2b2xhdGls ZSYmOworICB2b2lkIGZ2MCgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmdjAoKSBjb25zdCB2 b2xhdGlsZSYmOworCisgIHZvaWQgZnYxKHRoaXMgSTAgdm9sYXRpbGUmJik7CisgIHZvaWQgZnYx KCkgJjsKKyAgdm9pZCBmdjEoKSAmJjsKKyAgdm9pZCBmdjEoKSBjb25zdCY7CisgIHZvaWQgZnYx KCkgY29uc3QmJjsKKyAgdm9pZCBmdjEoKSB2b2xhdGlsZSY7CisgIHZvaWQgZnYxKCkgY29uc3Qg dm9sYXRpbGUmOworICB2b2lkIGZ2MSgpIGNvbnN0IHZvbGF0aWxlJiY7CisKKyAgdm9pZCBmY3Yw KHRoaXMgSTAgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmY3YwKCkgJjsKKyAgdm9pZCBmY3Yw KCkgJiY7CisgIHZvaWQgZmN2MCgpIGNvbnN0JjsKKyAgdm9pZCBmY3YwKCkgY29uc3QmJjsKKyAg dm9pZCBmY3YwKCkgdm9sYXRpbGUmOworICB2b2lkIGZjdjAoKSB2b2xhdGlsZSYmOworICB2b2lk IGZjdjAoKSBjb25zdCB2b2xhdGlsZSYmOworCisgIHZvaWQgZmN2MSh0aGlzIEkwIGNvbnN0IHZv bGF0aWxlJiYpOworICB2b2lkIGZjdjEoKSAmOworICB2b2lkIGZjdjEoKSAmJjsKKyAgdm9pZCBm Y3YxKCkgY29uc3QmOworICB2b2lkIGZjdjEoKSBjb25zdCYmOworICB2b2lkIGZjdjEoKSB2b2xh dGlsZSY7CisgIHZvaWQgZmN2MSgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZmN2MSgpIGNvbnN0IHZv bGF0aWxlJjsKK307CisKKy8vIHVuaXF1ZSBsYXN0LCAxIHhvYmogNyBpb2JqCisKK3N0cnVjdCBJ MSB7CisgIHZvaWQgZjAoKSAmJjsKKyAgdm9pZCBmMCgpIGNvbnN0JjsKKyAgdm9pZCBmMCgpIGNv bnN0JiY7CisgIHZvaWQgZjAoKSB2b2xhdGlsZSY7CisgIHZvaWQgZjAoKSB2b2xhdGlsZSYmOwor ICB2b2lkIGYwKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGYwKCkgY29uc3Qgdm9sYXRpbGUm JjsKKyAgdm9pZCBmMCh0aGlzIEkxJik7CisKKyAgdm9pZCBmMSgpICY7CisgIHZvaWQgZjEoKSBj b25zdCY7CisgIHZvaWQgZjEoKSBjb25zdCYmOworICB2b2lkIGYxKCkgdm9sYXRpbGUmOworICB2 b2lkIGYxKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmMSgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9p ZCBmMSgpIGNvbnN0IHZvbGF0aWxlJiY7CisgIHZvaWQgZjEodGhpcyBJMSYmKTsKKworICB2b2lk IGZjMCgpICY7CisgIHZvaWQgZmMwKCkgJiY7CisgIHZvaWQgZmMwKCkgY29uc3QmJjsKKyAgdm9p ZCBmYzAoKSB2b2xhdGlsZSY7CisgIHZvaWQgZmMwKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmYzAo KSBjb25zdCB2b2xhdGlsZSY7CisgIHZvaWQgZmMwKCkgY29uc3Qgdm9sYXRpbGUmJjsKKyAgdm9p ZCBmYzAodGhpcyBJMSBjb25zdCYpOworCisgIHZvaWQgZmMxKCkgJjsKKyAgdm9pZCBmYzEoKSAm JjsKKyAgdm9pZCBmYzEoKSBjb25zdCY7CisgIHZvaWQgZmMxKCkgdm9sYXRpbGUmOworICB2b2lk IGZjMSgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZmMxKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lk IGZjMSgpIGNvbnN0IHZvbGF0aWxlJiY7CisgIHZvaWQgZmMxKHRoaXMgSTEgY29uc3QmJik7CisK KyAgdm9pZCBmdjAoKSAmOworICB2b2lkIGZ2MCgpICYmOworICB2b2lkIGZ2MCgpIGNvbnN0JjsK KyAgdm9pZCBmdjAoKSBjb25zdCYmOworICB2b2lkIGZ2MCgpIHZvbGF0aWxlJiY7CisgIHZvaWQg ZnYwKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGZ2MCgpIGNvbnN0IHZvbGF0aWxlJiY7Cisg IHZvaWQgZnYwKHRoaXMgSTEgdm9sYXRpbGUmKTsKKworICB2b2lkIGZ2MSgpICY7CisgIHZvaWQg ZnYxKCkgJiY7CisgIHZvaWQgZnYxKCkgY29uc3QmOworICB2b2lkIGZ2MSgpIGNvbnN0JiY7Cisg IHZvaWQgZnYxKCkgdm9sYXRpbGUmOworICB2b2lkIGZ2MSgpIGNvbnN0IHZvbGF0aWxlJjsKKyAg dm9pZCBmdjEoKSBjb25zdCB2b2xhdGlsZSYmOworICB2b2lkIGZ2MSh0aGlzIEkxIHZvbGF0aWxl JiYpOworCisgIHZvaWQgZmN2MCgpICY7CisgIHZvaWQgZmN2MCgpICYmOworICB2b2lkIGZjdjAo KSBjb25zdCY7CisgIHZvaWQgZmN2MCgpIGNvbnN0JiY7CisgIHZvaWQgZmN2MCgpIHZvbGF0aWxl JjsKKyAgdm9pZCBmY3YwKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmY3YwKCkgY29uc3Qgdm9sYXRp bGUmJjsKKyAgdm9pZCBmY3YwKHRoaXMgSTEgY29uc3Qgdm9sYXRpbGUmKTsKKworICB2b2lkIGZj djEoKSAmOworICB2b2lkIGZjdjEoKSAmJjsKKyAgdm9pZCBmY3YxKCkgY29uc3QmOworICB2b2lk IGZjdjEoKSBjb25zdCYmOworICB2b2lkIGZjdjEoKSB2b2xhdGlsZSY7CisgIHZvaWQgZmN2MSgp IHZvbGF0aWxlJiY7CisgIHZvaWQgZmN2MSgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmY3Yx KHRoaXMgSTEgY29uc3Qgdm9sYXRpbGUmJik7Cit9OworCisvLyBvcmRlcmVkLCAxIHhvYmogNyBp b2JqCisKK3N0cnVjdCBJMiB7CisgIHZvaWQgZjAodGhpcyBJMiYpOworICB2b2lkIGYwKCkgJiY7 CisgIHZvaWQgZjAoKSBjb25zdCY7CisgIHZvaWQgZjAoKSBjb25zdCYmOworICB2b2lkIGYwKCkg dm9sYXRpbGUmOworICB2b2lkIGYwKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmMCgpIGNvbnN0IHZv bGF0aWxlJjsKKyAgdm9pZCBmMCgpIGNvbnN0IHZvbGF0aWxlJiY7CisKKyAgdm9pZCBmMSgpICY7 CisgIHZvaWQgZjEodGhpcyBJMiYmKTsKKyAgdm9pZCBmMSgpIGNvbnN0JjsKKyAgdm9pZCBmMSgp IGNvbnN0JiY7CisgIHZvaWQgZjEoKSB2b2xhdGlsZSY7CisgIHZvaWQgZjEoKSB2b2xhdGlsZSYm OworICB2b2lkIGYxKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGYxKCkgY29uc3Qgdm9sYXRp bGUmJjsKKworICB2b2lkIGZjMCgpICY7CisgIHZvaWQgZmMwKCkgJiY7CisgIHZvaWQgZmMwKHRo aXMgSTIgY29uc3QmKTsKKyAgdm9pZCBmYzAoKSBjb25zdCYmOworICB2b2lkIGZjMCgpIHZvbGF0 aWxlJjsKKyAgdm9pZCBmYzAoKSB2b2xhdGlsZSYmOworICB2b2lkIGZjMCgpIGNvbnN0IHZvbGF0 aWxlJjsKKyAgdm9pZCBmYzAoKSBjb25zdCB2b2xhdGlsZSYmOworCisgIHZvaWQgZmMxKCkgJjsK KyAgdm9pZCBmYzEoKSAmJjsKKyAgdm9pZCBmYzEoKSBjb25zdCY7CisgIHZvaWQgZmMxKHRoaXMg STIgY29uc3QmJik7CisgIHZvaWQgZmMxKCkgdm9sYXRpbGUmOworICB2b2lkIGZjMSgpIHZvbGF0 aWxlJiY7CisgIHZvaWQgZmMxKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGZjMSgpIGNvbnN0 IHZvbGF0aWxlJiY7CisKKyAgdm9pZCBmdjAoKSAmOworICB2b2lkIGZ2MCgpICYmOworICB2b2lk IGZ2MCgpIGNvbnN0JjsKKyAgdm9pZCBmdjAoKSBjb25zdCYmOworICB2b2lkIGZ2MCh0aGlzIEky IHZvbGF0aWxlJik7CisgIHZvaWQgZnYwKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmdjAoKSBjb25z dCB2b2xhdGlsZSY7CisgIHZvaWQgZnYwKCkgY29uc3Qgdm9sYXRpbGUmJjsKKworICB2b2lkIGZ2 MSgpICY7CisgIHZvaWQgZnYxKCkgJiY7CisgIHZvaWQgZnYxKCkgY29uc3QmOworICB2b2lkIGZ2 MSgpIGNvbnN0JiY7CisgIHZvaWQgZnYxKCkgdm9sYXRpbGUmOworICB2b2lkIGZ2MSh0aGlzIEky IHZvbGF0aWxlJiYpOworICB2b2lkIGZ2MSgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmdjEo KSBjb25zdCB2b2xhdGlsZSYmOworCisgIHZvaWQgZmN2MCgpICY7CisgIHZvaWQgZmN2MCgpICYm OworICB2b2lkIGZjdjAoKSBjb25zdCY7CisgIHZvaWQgZmN2MCgpIGNvbnN0JiY7CisgIHZvaWQg ZmN2MCgpIHZvbGF0aWxlJjsKKyAgdm9pZCBmY3YwKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmY3Yw KHRoaXMgSTIgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmY3YwKCkgY29uc3Qgdm9sYXRpbGUm JjsKKworICB2b2lkIGZjdjEoKSAmOworICB2b2lkIGZjdjEoKSAmJjsKKyAgdm9pZCBmY3YxKCkg Y29uc3QmOworICB2b2lkIGZjdjEoKSBjb25zdCYmOworICB2b2lkIGZjdjEoKSB2b2xhdGlsZSY7 CisgIHZvaWQgZmN2MSgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZmN2MSgpIGNvbnN0IHZvbGF0aWxl JjsKKyAgdm9pZCBmY3YxKHRoaXMgSTIgY29uc3Qgdm9sYXRpbGUmJik7Cit9OworCisKKy8vIGlv YmogZmlyc3QsIDcgeG9iaiwgMSBpb2JqCisKK3N0cnVjdCBYMCB7CisgIHZvaWQgZjAoKSAmOwor ICB2b2lkIGYwKHRoaXMgWDAgJiYpOworICB2b2lkIGYwKHRoaXMgWDAgY29uc3QmKTsKKyAgdm9p ZCBmMCh0aGlzIFgwIGNvbnN0JiYpOworICB2b2lkIGYwKHRoaXMgWDAgdm9sYXRpbGUmKTsKKyAg dm9pZCBmMCh0aGlzIFgwIHZvbGF0aWxlJiYpOworICB2b2lkIGYwKHRoaXMgWDAgY29uc3Qgdm9s YXRpbGUmKTsKKyAgdm9pZCBmMCh0aGlzIFgwIGNvbnN0IHZvbGF0aWxlJiYpOworCisgIHZvaWQg ZjEoKSAmJjsKKyAgdm9pZCBmMSh0aGlzIFgwICYpOworICB2b2lkIGYxKHRoaXMgWDAgY29uc3Qm KTsKKyAgdm9pZCBmMSh0aGlzIFgwIGNvbnN0JiYpOworICB2b2lkIGYxKHRoaXMgWDAgdm9sYXRp bGUmKTsKKyAgdm9pZCBmMSh0aGlzIFgwIHZvbGF0aWxlJiYpOworICB2b2lkIGYxKHRoaXMgWDAg Y29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmMSh0aGlzIFgwIGNvbnN0IHZvbGF0aWxlJiYpOwor CisgIHZvaWQgZmMwKCkgY29uc3QmOworICB2b2lkIGZjMCh0aGlzIFgwICYpOworICB2b2lkIGZj MCh0aGlzIFgwICYmKTsKKyAgdm9pZCBmYzAodGhpcyBYMCBjb25zdCYmKTsKKyAgdm9pZCBmYzAo dGhpcyBYMCB2b2xhdGlsZSYpOworICB2b2lkIGZjMCh0aGlzIFgwIHZvbGF0aWxlJiYpOworICB2 b2lkIGZjMCh0aGlzIFgwIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZmMwKHRoaXMgWDAgY29u c3Qgdm9sYXRpbGUmJik7CisKKyAgdm9pZCBmYzEoKSBjb25zdCYmOworICB2b2lkIGZjMSh0aGlz IFgwICYpOworICB2b2lkIGZjMSh0aGlzIFgwICYmKTsKKyAgdm9pZCBmYzEodGhpcyBYMCBjb25z dCYpOworICB2b2lkIGZjMSh0aGlzIFgwIHZvbGF0aWxlJik7CisgIHZvaWQgZmMxKHRoaXMgWDAg dm9sYXRpbGUmJik7CisgIHZvaWQgZmMxKHRoaXMgWDAgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9p ZCBmYzEodGhpcyBYMCBjb25zdCB2b2xhdGlsZSYmKTsKKworICB2b2lkIGZ2MCgpIHZvbGF0aWxl JjsKKyAgdm9pZCBmdjAodGhpcyBYMCAmKTsKKyAgdm9pZCBmdjAodGhpcyBYMCAmJik7CisgIHZv aWQgZnYwKHRoaXMgWDAgY29uc3QmKTsKKyAgdm9pZCBmdjAodGhpcyBYMCBjb25zdCYmKTsKKyAg dm9pZCBmdjAodGhpcyBYMCB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmdjAodGhpcyBYMCBjb25zdCB2 b2xhdGlsZSYpOworICB2b2lkIGZ2MCh0aGlzIFgwIGNvbnN0IHZvbGF0aWxlJiYpOworCisgIHZv aWQgZnYxKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmdjEodGhpcyBYMCAmKTsKKyAgdm9pZCBmdjEo dGhpcyBYMCAmJik7CisgIHZvaWQgZnYxKHRoaXMgWDAgY29uc3QmKTsKKyAgdm9pZCBmdjEodGhp cyBYMCBjb25zdCYmKTsKKyAgdm9pZCBmdjEodGhpcyBYMCB2b2xhdGlsZSYpOworICB2b2lkIGZ2 MSh0aGlzIFgwIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZnYxKHRoaXMgWDAgY29uc3Qgdm9s YXRpbGUmJik7CisKKyAgdm9pZCBmY3YwKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGZjdjAo dGhpcyBYMCAmKTsKKyAgdm9pZCBmY3YwKHRoaXMgWDAgJiYpOworICB2b2lkIGZjdjAodGhpcyBY MCBjb25zdCYpOworICB2b2lkIGZjdjAodGhpcyBYMCBjb25zdCYmKTsKKyAgdm9pZCBmY3YwKHRo aXMgWDAgdm9sYXRpbGUmKTsKKyAgdm9pZCBmY3YwKHRoaXMgWDAgdm9sYXRpbGUmJik7CisgIHZv aWQgZmN2MCh0aGlzIFgwIGNvbnN0IHZvbGF0aWxlJiYpOworCisgIHZvaWQgZmN2MSgpIGNvbnN0 IHZvbGF0aWxlJiY7CisgIHZvaWQgZmN2MSh0aGlzIFgwICYpOworICB2b2lkIGZjdjEodGhpcyBY MCAmJik7CisgIHZvaWQgZmN2MSh0aGlzIFgwIGNvbnN0Jik7CisgIHZvaWQgZmN2MSh0aGlzIFgw IGNvbnN0JiYpOworICB2b2lkIGZjdjEodGhpcyBYMCB2b2xhdGlsZSYpOworICB2b2lkIGZjdjEo dGhpcyBYMCB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmY3YxKHRoaXMgWDAgY29uc3Qgdm9sYXRpbGUm KTsKK307CisKKy8vIGlvYmogbGFzdCwgNyB4b2JqIDEgaW9iagorCitzdHJ1Y3QgWDEgeworICB2 b2lkIGYwKHRoaXMgWDEgJiYpOworICB2b2lkIGYwKHRoaXMgWDEgY29uc3QmKTsKKyAgdm9pZCBm MCh0aGlzIFgxIGNvbnN0JiYpOworICB2b2lkIGYwKHRoaXMgWDEgdm9sYXRpbGUmKTsKKyAgdm9p ZCBmMCh0aGlzIFgxIHZvbGF0aWxlJiYpOworICB2b2lkIGYwKHRoaXMgWDEgY29uc3Qgdm9sYXRp bGUmKTsKKyAgdm9pZCBmMCh0aGlzIFgxIGNvbnN0IHZvbGF0aWxlJiYpOworICB2b2lkIGYwKCkg JjsKKworICB2b2lkIGYxKHRoaXMgWDEgJik7CisgIHZvaWQgZjEodGhpcyBYMSBjb25zdCYpOwor ICB2b2lkIGYxKHRoaXMgWDEgY29uc3QmJik7CisgIHZvaWQgZjEodGhpcyBYMSB2b2xhdGlsZSYp OworICB2b2lkIGYxKHRoaXMgWDEgdm9sYXRpbGUmJik7CisgIHZvaWQgZjEodGhpcyBYMSBjb25z dCB2b2xhdGlsZSYpOworICB2b2lkIGYxKHRoaXMgWDEgY29uc3Qgdm9sYXRpbGUmJik7CisgIHZv aWQgZjEoKSAmJjsKKworICB2b2lkIGZjMCh0aGlzIFgxICYpOworICB2b2lkIGZjMCh0aGlzIFgx ICYmKTsKKyAgdm9pZCBmYzAodGhpcyBYMSBjb25zdCYmKTsKKyAgdm9pZCBmYzAodGhpcyBYMSB2 b2xhdGlsZSYpOworICB2b2lkIGZjMCh0aGlzIFgxIHZvbGF0aWxlJiYpOworICB2b2lkIGZjMCh0 aGlzIFgxIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZmMwKHRoaXMgWDEgY29uc3Qgdm9sYXRp bGUmJik7CisgIHZvaWQgZmMwKCkgY29uc3QmOworCisgIHZvaWQgZmMxKHRoaXMgWDEgJik7Cisg IHZvaWQgZmMxKHRoaXMgWDEgJiYpOworICB2b2lkIGZjMSh0aGlzIFgxIGNvbnN0Jik7CisgIHZv aWQgZmMxKHRoaXMgWDEgdm9sYXRpbGUmKTsKKyAgdm9pZCBmYzEodGhpcyBYMSB2b2xhdGlsZSYm KTsKKyAgdm9pZCBmYzEodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYpOworICB2b2lkIGZjMSh0aGlz IFgxIGNvbnN0IHZvbGF0aWxlJiYpOworICB2b2lkIGZjMSgpIGNvbnN0JiY7CisKKyAgdm9pZCBm djAodGhpcyBYMSAmKTsKKyAgdm9pZCBmdjAodGhpcyBYMSAmJik7CisgIHZvaWQgZnYwKHRoaXMg WDEgY29uc3QmKTsKKyAgdm9pZCBmdjAodGhpcyBYMSBjb25zdCYmKTsKKyAgdm9pZCBmdjAodGhp cyBYMSB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmdjAodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYpOwor ICB2b2lkIGZ2MCh0aGlzIFgxIGNvbnN0IHZvbGF0aWxlJiYpOworICB2b2lkIGZ2MCgpIHZvbGF0 aWxlJjsKKworICB2b2lkIGZ2MSh0aGlzIFgxICYpOworICB2b2lkIGZ2MSh0aGlzIFgxICYmKTsK KyAgdm9pZCBmdjEodGhpcyBYMSBjb25zdCYpOworICB2b2lkIGZ2MSh0aGlzIFgxIGNvbnN0JiYp OworICB2b2lkIGZ2MSh0aGlzIFgxIHZvbGF0aWxlJik7CisgIHZvaWQgZnYxKHRoaXMgWDEgY29u c3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmdjEodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYmKTsKKyAg dm9pZCBmdjEoKSB2b2xhdGlsZSYmOworCisgIHZvaWQgZmN2MCh0aGlzIFgxICYpOworICB2b2lk IGZjdjAodGhpcyBYMSAmJik7CisgIHZvaWQgZmN2MCh0aGlzIFgxIGNvbnN0Jik7CisgIHZvaWQg ZmN2MCh0aGlzIFgxIGNvbnN0JiYpOworICB2b2lkIGZjdjAodGhpcyBYMSB2b2xhdGlsZSYpOwor ICB2b2lkIGZjdjAodGhpcyBYMSB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmY3YwKHRoaXMgWDEgY29u c3Qgdm9sYXRpbGUmJik7CisgIHZvaWQgZmN2MCgpIGNvbnN0IHZvbGF0aWxlJjsKKworICB2b2lk IGZjdjEodGhpcyBYMSAmKTsKKyAgdm9pZCBmY3YxKHRoaXMgWDEgJiYpOworICB2b2lkIGZjdjEo dGhpcyBYMSBjb25zdCYpOworICB2b2lkIGZjdjEodGhpcyBYMSBjb25zdCYmKTsKKyAgdm9pZCBm Y3YxKHRoaXMgWDEgdm9sYXRpbGUmKTsKKyAgdm9pZCBmY3YxKHRoaXMgWDEgdm9sYXRpbGUmJik7 CisgIHZvaWQgZmN2MSh0aGlzIFgxIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZmN2MSgpIGNv bnN0IHZvbGF0aWxlJiY7Cit9OworCisvLyBvcmRlcmVkLCA3IHhvYmogMSBpb2JqCisKK3N0cnVj dCBYMiB7CisgIHZvaWQgZjAoKSAmOworICB2b2lkIGYwKHRoaXMgWDIgJiYpOworICB2b2lkIGYw KHRoaXMgWDIgY29uc3QmKTsKKyAgdm9pZCBmMCh0aGlzIFgyIGNvbnN0JiYpOworICB2b2lkIGYw KHRoaXMgWDIgdm9sYXRpbGUmKTsKKyAgdm9pZCBmMCh0aGlzIFgyIHZvbGF0aWxlJiYpOworICB2 b2lkIGYwKHRoaXMgWDIgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmMCh0aGlzIFgyIGNvbnN0 IHZvbGF0aWxlJiYpOworCisgIHZvaWQgZjEodGhpcyBYMiAmKTsKKyAgdm9pZCBmMSgpICYmOwor ICB2b2lkIGYxKHRoaXMgWDIgY29uc3QmKTsKKyAgdm9pZCBmMSh0aGlzIFgyIGNvbnN0JiYpOwor ICB2b2lkIGYxKHRoaXMgWDIgdm9sYXRpbGUmKTsKKyAgdm9pZCBmMSh0aGlzIFgyIHZvbGF0aWxl JiYpOworICB2b2lkIGYxKHRoaXMgWDIgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmMSh0aGlz IFgyIGNvbnN0IHZvbGF0aWxlJiYpOworCisgIHZvaWQgZmMwKHRoaXMgWDIgJik7CisgIHZvaWQg ZmMwKHRoaXMgWDIgJiYpOworICB2b2lkIGZjMCgpIGNvbnN0JjsKKyAgdm9pZCBmYzAodGhpcyBY MiBjb25zdCYmKTsKKyAgdm9pZCBmYzAodGhpcyBYMiB2b2xhdGlsZSYpOworICB2b2lkIGZjMCh0 aGlzIFgyIHZvbGF0aWxlJiYpOworICB2b2lkIGZjMCh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJik7 CisgIHZvaWQgZmMwKHRoaXMgWDIgY29uc3Qgdm9sYXRpbGUmJik7CisKKyAgdm9pZCBmYzEodGhp cyBYMiAmKTsKKyAgdm9pZCBmYzEodGhpcyBYMiAmJik7CisgIHZvaWQgZmMxKHRoaXMgWDIgY29u c3QmKTsKKyAgdm9pZCBmYzEoKSBjb25zdCYmOworICB2b2lkIGZjMSh0aGlzIFgyIHZvbGF0aWxl Jik7CisgIHZvaWQgZmMxKHRoaXMgWDIgdm9sYXRpbGUmJik7CisgIHZvaWQgZmMxKHRoaXMgWDIg Y29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmYzEodGhpcyBYMiBjb25zdCB2b2xhdGlsZSYmKTsK KworICB2b2lkIGZ2MCh0aGlzIFgyICYpOworICB2b2lkIGZ2MCh0aGlzIFgyICYmKTsKKyAgdm9p ZCBmdjAodGhpcyBYMiBjb25zdCYpOworICB2b2lkIGZ2MCh0aGlzIFgyIGNvbnN0JiYpOworICB2 b2lkIGZ2MCgpIHZvbGF0aWxlJjsKKyAgdm9pZCBmdjAodGhpcyBYMiB2b2xhdGlsZSYmKTsKKyAg dm9pZCBmdjAodGhpcyBYMiBjb25zdCB2b2xhdGlsZSYpOworICB2b2lkIGZ2MCh0aGlzIFgyIGNv bnN0IHZvbGF0aWxlJiYpOworCisgIHZvaWQgZnYxKHRoaXMgWDIgJik7CisgIHZvaWQgZnYxKHRo aXMgWDIgJiYpOworICB2b2lkIGZ2MSh0aGlzIFgyIGNvbnN0Jik7CisgIHZvaWQgZnYxKHRoaXMg WDIgY29uc3QmJik7CisgIHZvaWQgZnYxKHRoaXMgWDIgdm9sYXRpbGUmKTsKKyAgdm9pZCBmdjEo KSB2b2xhdGlsZSYmOworICB2b2lkIGZ2MSh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJik7CisgIHZv aWQgZnYxKHRoaXMgWDIgY29uc3Qgdm9sYXRpbGUmJik7CisKKyAgdm9pZCBmY3YwKHRoaXMgWDIg Jik7CisgIHZvaWQgZmN2MCh0aGlzIFgyICYmKTsKKyAgdm9pZCBmY3YwKHRoaXMgWDIgY29uc3Qm KTsKKyAgdm9pZCBmY3YwKHRoaXMgWDIgY29uc3QmJik7CisgIHZvaWQgZmN2MCh0aGlzIFgyIHZv bGF0aWxlJik7CisgIHZvaWQgZmN2MCh0aGlzIFgyIHZvbGF0aWxlJiYpOworICB2b2lkIGZjdjAo KSBjb25zdCB2b2xhdGlsZSY7CisgIHZvaWQgZmN2MCh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJiYp OworCisgIHZvaWQgZmN2MSh0aGlzIFgyICYpOworICB2b2lkIGZjdjEodGhpcyBYMiAmJik7Cisg IHZvaWQgZmN2MSh0aGlzIFgyIGNvbnN0Jik7CisgIHZvaWQgZmN2MSh0aGlzIFgyIGNvbnN0JiYp OworICB2b2lkIGZjdjEodGhpcyBYMiB2b2xhdGlsZSYpOworICB2b2lkIGZjdjEodGhpcyBYMiB2 b2xhdGlsZSYmKTsKKyAgdm9pZCBmY3YxKHRoaXMgWDIgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9p ZCBmY3YxKCkgY29uc3Qgdm9sYXRpbGUmJjsKK307CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzQuQyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzQuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNjkxZWY2ODA0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWM0LkMKQEAgLTAsMCArMSwxMTMgQEAK Ky8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8g dmFsaWQgb3ZlcmxvYWRpbmcgb2YgaW9iaiBtZW1iZXIgZnVuY3Rpb25zIHdpdGhvdXQgcmVmIHF1 YWxpZmllcnMKKy8vIHdpdGggeG9iaiBtZW1iZXIgZnVuY3Rpb25zIChhbmQgdmljZS12ZXJzYSkK KworLy8gdGhpcyBpcyB0aGUgbW9zdCB5b3UgY2FuIG1peCB0aGVzZSwgaXQgbWF5IGxvb2sgc2hv cnQgYnV0IGl0IGRvZXMgdGVzdAorLy8gYWxsIGFsbG93ZWQgY2FzZXMgKG90aGVyIHRoYW4gYnkt dmFsdWUgYW5kIHVucmVsYXRlZCB0eXBlcykKKworLy8gW292ZXIubWF0Y2guZnVuY3MuZ2VuZXJh bC40XQorLy8gRm9yIGltcGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb25zLCB0aGUgdHlwZSBv ZiB0aGUgaW1wbGljaXQKKy8vIG9iamVjdCBwYXJhbWV0ZXIgaXMKKy8vIC0tIOKAnGx2YWx1ZSBy ZWZlcmVuY2UgdG8gY3YgWOKAnSBmb3IgZnVuY3Rpb25zIGRlY2xhcmVkCisvLyAgICB3aXRob3V0 IGEgcmVmLXF1YWxpZmllciBvciB3aXRoIHRoZSAmIHJlZi1xdWFsaWZpZXIKKy8vIC0tIOKAnHJ2 YWx1ZSByZWZlcmVuY2UgdG8gY3YgWOKAnSBmb3IgZnVuY3Rpb25zIGRlY2xhcmVkIHdpdGgKKy8v ICAgIHRoZSAmJiByZWYtcXVhbGlmaWVyCisKKy8vIFtiYXNpYy5zY29wZS5zY29wZS4zXQorLy8g VHdvIG5vbi1zdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyBoYXZlIGNvcnJlc3BvbmRpbmcgb2JqZWN0 CisvLyBwYXJhbWV0ZXJzIGlmOgorLy8gLS0gZXhhY3RseSBvbmUgaXMgYW4gaW1wbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbiB3aXRoIG5vCisvLyAgICByZWYtcXVhbGlmaWVyIGFuZCB0aGUg dHlwZXMgb2YgdGhlaXIgb2JqZWN0IHBhcmFtZXRlcnMKKy8vICAgIChbZGNsLmZjdF0pLCBhZnRl ciByZW1vdmluZyB0b3AtbGV2ZWwgcmVmZXJlbmNlcywgYXJlIHRoZQorLy8gICAgc2FtZSwgb3IK KworLy8gaW4gc2ltcGxlciB0ZXJtcywgb25seSB0aGUgY3YgcXVhbGlmaWNhdGlvbiBvZiB0aGUg ZXhwbGljaXQvaW1wbGljaXQgb2JqZWN0CisvLyBwYXJhbWV0ZXIgbWF0dGVyIGZvciBkZXRlcm1p bmluZyB3aGV0aGVyIHRoZXNlIGFyZSByZWRlY2xhcmF0aW9ucyBvciBvdmVybG9hZHMKKy8vICh3 aGVuIGEgcmVmIHF1YWxpZmllciBpcyBub3QgcHJlc2VudCBvbiB0aGUgaW9iaiBtZW1iZXIgZnVu Y3Rpb24pCisKKy8vIHhvYmogZmlyc3QsIGlvYmogbGFzdAorCitzdHJ1Y3QgUzAgeworICB2b2lk IGYodGhpcyBTMCAmKTsKKyAgdm9pZCBmKHRoaXMgUzAgJiYpOworICB2b2lkIGYoKSBjb25zdDsK KyAgdm9pZCBmKCkgdm9sYXRpbGU7CisgIHZvaWQgZigpIGNvbnN0IHZvbGF0aWxlOworCisgIHZv aWQgZmModGhpcyBTMCBjb25zdCYpOworICB2b2lkIGZjKHRoaXMgUzAgY29uc3QmJik7CisgIHZv aWQgZmMoKTsKKyAgdm9pZCBmYygpIHZvbGF0aWxlOworICB2b2lkIGZjKCkgY29uc3Qgdm9sYXRp bGU7CisKKyAgdm9pZCBmdih0aGlzIFMwIHZvbGF0aWxlJik7CisgIHZvaWQgZnYodGhpcyBTMCB2 b2xhdGlsZSYmKTsKKyAgdm9pZCBmdigpOworICB2b2lkIGZ2KCkgY29uc3Q7CisgIHZvaWQgZnYo KSBjb25zdCB2b2xhdGlsZTsKKworICB2b2lkIGZjdih0aGlzIFMwIGNvbnN0IHZvbGF0aWxlJik7 CisgIHZvaWQgZmN2KHRoaXMgUzAgY29uc3Qgdm9sYXRpbGUmJik7CisgIHZvaWQgZmN2KCk7Cisg IHZvaWQgZmN2KCkgY29uc3Q7CisgIHZvaWQgZmN2KCkgdm9sYXRpbGU7Cit9OworCisvLyBpb2Jq IGZpcnN0LCB4b2JqIGxhc3QKKworc3RydWN0IFMxIHsKKyAgdm9pZCBmKCkgY29uc3Q7CisgIHZv aWQgZigpIHZvbGF0aWxlOworICB2b2lkIGYoKSBjb25zdCB2b2xhdGlsZTsKKyAgdm9pZCBmKHRo aXMgUzEgJik7CisgIHZvaWQgZih0aGlzIFMxICYmKTsKKworICB2b2lkIGZjKCk7CisgIHZvaWQg ZmMoKSB2b2xhdGlsZTsKKyAgdm9pZCBmYygpIGNvbnN0IHZvbGF0aWxlOworICB2b2lkIGZjKHRo aXMgUzEgY29uc3QmKTsKKyAgdm9pZCBmYyh0aGlzIFMxIGNvbnN0JiYpOworCisgIHZvaWQgZnYo KTsKKyAgdm9pZCBmdigpIGNvbnN0OworICB2b2lkIGZ2KCkgY29uc3Qgdm9sYXRpbGU7CisgIHZv aWQgZnYodGhpcyBTMSB2b2xhdGlsZSYpOworICB2b2lkIGZ2KHRoaXMgUzEgdm9sYXRpbGUmJik7 CisKKyAgdm9pZCBmY3YoKTsKKyAgdm9pZCBmY3YoKSBjb25zdDsKKyAgdm9pZCBmY3YoKSB2b2xh dGlsZTsKKyAgdm9pZCBmY3YodGhpcyBTMSBjb25zdCB2b2xhdGlsZSYpOworICB2b2lkIGZjdih0 aGlzIFMxIGNvbnN0IHZvbGF0aWxlJiYpOworfTsKKworLy8gaW4gb3JkZXIKKworc3RydWN0IFMy IHsKKyAgdm9pZCBmKHRoaXMgUzIgJik7CisgIHZvaWQgZih0aGlzIFMyICYmKTsKKyAgdm9pZCBm KCkgY29uc3Q7CisgIHZvaWQgZigpIHZvbGF0aWxlOworICB2b2lkIGYoKSBjb25zdCB2b2xhdGls ZTsKKworICB2b2lkIGZjKCk7CisgIHZvaWQgZmModGhpcyBTMiBjb25zdCYpOworICB2b2lkIGZj KHRoaXMgUzIgY29uc3QmJik7CisgIHZvaWQgZmMoKSB2b2xhdGlsZTsKKyAgdm9pZCBmYygpIGNv bnN0IHZvbGF0aWxlOworCisgIHZvaWQgZnYoKTsKKyAgdm9pZCBmdigpIGNvbnN0OworICB2b2lk IGZ2KHRoaXMgUzIgdm9sYXRpbGUmKTsKKyAgdm9pZCBmdih0aGlzIFMyIHZvbGF0aWxlJiYpOwor ICB2b2lkIGZ2KCkgY29uc3Qgdm9sYXRpbGU7CisKKyAgdm9pZCBmY3YoKTsKKyAgdm9pZCBmY3Yo KSBjb25zdDsKKyAgdm9pZCBmY3YoKSB2b2xhdGlsZTsKKyAgdm9pZCBmY3YodGhpcyBTMiBjb25z dCB2b2xhdGlsZSYpOworICB2b2lkIGZjdih0aGlzIFMyIGNvbnN0IHZvbGF0aWxlJiYpOworfTsK KwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5 LXZhbHVlMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZh bHVlMS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41ZWE1YmNiN2Zh YQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1ieS12YWx1ZTEuQwpAQCAtMCwwICsxLDQ4IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRv IHJ1biB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gY29udmVyc2lvbiBvZiB0aGUgaW1wbGljaXQg b2JqZWN0IGFyZ3VtZW50IHRvIGFuIHhvYmogcGFyYW1ldGVyCisvLyB3aGVuIGNhbGxpbmcgYnkg dmFsdWUgeG9iaiBtZW1iZXIgZnVuY3Rpb25zCisKKy8vIFRoZSBpbml0aWFsIGltcGxlbWVudGF0 aW9uIG9mIHhvYmogbWVtYmVyIGZ1bmN0aW9ucyBpbmNvcnJlY3RseSBkaWQgbm90CisvLyBjb252 ZXJ0IHRoZSBpbXBsaWNpdCBvYmplY3QgYXJndW1lbnQgd2hlbiBiaW5kaW5nIHRvIHRoZSB4b2Jq CisvLyBwYXJhbWV0ZXIuIEluIHNwaXRlIG9mIHRoaXMsIGl0IGRpZCBjb3JyZWN0bHkgY2hlY2sg dG8gc2VlIGlmIHN1Y2ggYQorLy8gY29udmVyc2lvbiB3b3VsZCBiZSB2YWxpZCwgdGh1cyBubyBk aWFnbm9zdGljIHdvdWxkIGJlIGVtaXR0ZWQgd2hlbiBhCisvLyBjb252ZXJzaW9uIHdhcyB2YWxp ZCwgYnV0IGluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIGNvbnZlcnNpb24sIHRoZQorLy8gYXJndW1l bnQgd291bGQgc2lsZW50bHkgYmUgcmVpbnRlcnByZXRlZCBhcyB0aGUgdHlwZSBvZiB0aGUgcGFy YW1ldGVyLiAKKworLy8gVGhpcyBpcyB3aHkgd2UgdXNlIHVpbnRwdHJfdCBmb3IgdGhlIHZhbHVl IGluIFMgYW5kIGNvbXBhcmUgdGhlIHJlc3VsdAorLy8gb2YgZiB0byAmcywgd2Ugd2FudCB0byB0 ZXN0IGZvciBzaW1wbGUgcmVpbnRlcnByZXRhdGlvbiBvZiB0aGUKKy8vIGFyZ3VtZW50LiBUbyBh Y2N1cmF0ZWx5IHRlc3QgZm9yIHRoaXMgd2UgbWFrZSBzdXJlIHRvIHVzZSBhbiBvYmplY3QKKy8v IHRoYXQgaGFzIGEgZGlmZmVyZW50IGFkZHJlc3MgdGhhbiB0aGUgdmFsdWUgb2Ygb3VyIG1hZ2lj IG51bWJlci4gSXQncworLy8gYW4gaW1wb3NzaWJseSBpbXByb2JhYmxlIGVkZ2UgY2FzZSBidXQg aXQncyB0cml2aWFsIHRvIHdvcmsgYXJvdW5kLiBXZQorLy8gc3RpbGwgY29tcGFyZSBhZ2FpbnN0 IGJvdGggdGhlIGFkZHJlc3Mgb2YgcyBhbmQgdGhlIG1hZ2ljIG51bWJlciBzbyB3ZQorLy8gY2Fu IGFkZGl0aW9uYWxseSB0ZXN0IGZvciBidWdnZWQgY29udmVyc2lvbnMsIHdoaWxlIGFsc28KKy8v IGRpZmZlcmVudGlhdGluZyB0aGF0IGNhc2UgZnJvbSByZWludGVycHJldGF0aW9uIG9mIHRoZSBh cmd1bWVudC4KKwordXNpbmcgdWludHB0cl90ID0gX19VSU5UUFRSX1RZUEVfXzsKK2lubGluZSBj b25zdGV4cHIgdWludHB0cl90IG1hZ2ljID0gNDI7CisKK3N0cnVjdCBTIHsKKyAgICB1aW50cHRy X3QgX3Y7CisgICAgdWludHB0cl90IGYodGhpcyBTIHNlbGYpIHsKKyAgICAgICAgcmV0dXJuIHNl bGYuX3Y7CisgICAgfQorfTsKKworaW50IG1haW4oKSAKK3sKKyAgUyBzMHttYWdpY307CisgIFMg czF7bWFnaWN9OworICAvLyBwcmV2ZW50IChhYnN1cmRseSBpbXByb2JhYmxlKSBib2d1cyBmYWls dXJlcworICBTJiBzID0gbWFnaWMgIT0gKHVpbnRwdHJfdCkoJnMwKSA/IHMwIDogczE7CisKKyAg dWludHB0cl90IGNvbnN0IHJldCA9IHMuZigpOworICAvLyBjaGVjayBmb3IgcmVpbnRlcnByZXRh dGlvbiBvZiB0aGUgb2JqZWN0IGFyZ3VtZW50CisgIGlmIChyZXQgPT0gKHVpbnRwdHJfdCkoJnMp KQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgLy8gY2hlY2sgZm9yIGEgYnVnZ2VkIGNvbnZl cnNpb24KKyAgaWYgKHJldCAhPSBtYWdpYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Cit9CisK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1ieS12 YWx1ZTIuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1ieS12YWx1 ZTIuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjhlOGU3M2RmYWYK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotYnktdmFsdWUyLkMKQEAgLTAsMCArMSw1OCBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBy dW4geyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIGNvbnZlcnNpb24gb2YgdGhlIGltcGxpY2l0IG9i amVjdCBhcmd1bWVudCB0byBhbiB4b2JqIHBhcmFtZXRlcgorLy8gdXNpbmcgYSB1c2VyIGRlZmlu ZWQgY29udmVyc2lvbiBvciBjb252ZXJ0aW5nIGNvbnN0cnVjdG9yCisvLyB3aGVuIGNhbGxpbmcg YnkgdmFsdWUgeG9iaiBtZW1iZXIgZnVuY3Rpb25zCisKKy8vIHNlZSBleHBsaWNpdC1vYmotYnkt dmFsdWUxLkMgZm9yIGRldGFpbHMgb24gdGhpcyB0ZXN0CisKK3VzaW5nIHVpbnRwdHJfdCA9IF9f VUlOVFBUUl9UWVBFX187CitpbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBtYWdpYyA9IDQyOwor CitzdHJ1Y3QgUzsKKworc3RydWN0IEZyb21TIHsKKyAgdWludHB0cl90IF92OworICBGcm9tUyhT KTsKK307CisKK3N0cnVjdCBTIHsKKyAgb3BlcmF0b3IgdWludHB0cl90KCkgY29uc3QgeworICAg IHJldHVybiBtYWdpYzsKKyAgfQorICB1aW50cHRyX3QgZih0aGlzIHVpbnRwdHJfdCBuKSB7Cisg ICAgcmV0dXJuIG47CisgIH0KKyAgdWludHB0cl90IGcodGhpcyBGcm9tUyBmcm9tX3MpIHsKKyAg ICByZXR1cm4gZnJvbV9zLl92OworICB9Cit9OworCitGcm9tUzo6RnJvbVMoUykgOiBfdihtYWdp Yykge30KKworCitpbnQgbWFpbigpIAoreworICBTIHMwe307CisgIFMgczF7fTsKKyAgLy8gcHJl dmVudCAoYWJzdXJkbHkgaW1wcm9iYWJsZSkgYm9ndXMgZmFpbHVyZXMKKyAgUyYgcyA9IG1hZ2lj ICE9ICh1aW50cHRyX3QpKCZzMCkgPyBzMCA6IHMxOworCisgIHVpbnRwdHJfdCBjb25zdCByZXQw ID0gcy5mKCk7CisgIC8vIGNoZWNrIGZvciByZWludGVycHJldGF0aW9uIG9mIHRoZSBvYmplY3Qg YXJndW1lbnQKKyAgaWYgKHJldDAgPT0gKHVpbnRwdHJfdCkoJnMpKQorICAgIF9fYnVpbHRpbl9h Ym9ydCAoKTsKKyAgLy8gY2hlY2sgZm9yIGEgYnVnZ2VkIGNvbnZlcnNpb24KKyAgaWYgKHJldDAg IT0gbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworCisgIHVpbnRwdHJfdCBjb25zdCBy ZXQxID0gcy5nKCk7CisgIC8vIGNoZWNrIGZvciByZWludGVycHJldGF0aW9uIG9mIHRoZSBvYmpl Y3QgYXJndW1lbnQKKyAgaWYgKHJldDEgPT0gKHVpbnRwdHJfdCkoJnMpKQorICAgIF9fYnVpbHRp bl9hYm9ydCAoKTsKKyAgLy8gY2hlY2sgZm9yIGEgYnVnZ2VkIGNvbnZlcnNpb24KKyAgaWYgKHJl dDEgIT0gbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworfQorCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFsdWUzLkMgYi9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFsdWUzLkMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU2YWZmMDE5MGZiCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMy5D CkBAIC0wLDAgKzEsNDEgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGMr KzIzIH0gfQorCisvLyBjb3JyZWN0IGNvbnN0cnVjdG9yIHNlbGVjdGlvbiB3aGVuIGluaXRpYWxp emluZyBhIGJ5IHZhbHVlIHhvYmogcGFyYW1ldGVyCisKKy8vIHNlZSBleHBsaWNpdC1vYmotYnkt dmFsdWUxLkMgZm9yIGRldGFpbHMgb24gdGhpcyB0ZXN0CisKK3VzaW5nIHVpbnRwdHJfdCA9IF9f VUlOVFBUUl9UWVBFX187CitpbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBtYWdpYyA9IDQyOwor aW5saW5lIGNvbnN0ZXhwciB1aW50cHRyX3QgY29weV9tYWdpYyA9IDU7CitpbmxpbmUgY29uc3Rl eHByIHVpbnRwdHJfdCBtb3ZlX21hZ2ljID0gMTA7CisKK3N0cnVjdCBTIHsKKyAgdWludHB0cl90 IF92OworICBleHBsaWNpdCBTKHVpbnRwdHJfdCB2KSA6IF92KHYpIHt9CisgIFMoUyBjb25zdCYg b3RoZXIpIDogX3Yob3RoZXIuX3YgKyBjb3B5X21hZ2ljKSB7fQorICBTKFMmJiBvdGhlcikgOiBf dihvdGhlci5fdiArIG1vdmVfbWFnaWMpIHt9CisgIHVpbnRwdHJfdCBmKHRoaXMgUyBzZWxmKSB7 CisgICAgcmV0dXJuIHNlbGYuX3Y7CisgIH0KK307CisKK2ludCBtYWluKCkgCit7CisgIFMgczB7 bWFnaWN9OworICBTIHMxe21hZ2ljfTsKKyAgLy8gcHJldmVudCAoYWJzdXJkbHkgaW1wcm9iYWJs ZSAoXjIpKSBib2d1cyByZXN1bHRzCisgIC8vIGl0J3MgdmlydHVhbGx5IGltcG9zc2libGUgZm9y IGJvdGggdG8gaGF2ZSBhIGJvZ3VzIHJlc3VsdCwKKyAgLy8gYnV0IHdlIGNhbiBndWFyYW50ZWUg Y29ycmVjdCByZXN1bHRzIGZyb20gYm90aCBlYXNpbHksIHNvIHdoeSBub3Q/CisgIFMmIHNfY29w eV9mcm9tID0gbWFnaWMgKyBjb3B5X21hZ2ljICE9ICh1aW50cHRyX3QpKCZzMCkgPyBzMCA6IHMx OworICBTJiBzX21vdmVfZnJvbSA9IG1hZ2ljICsgbW92ZV9tYWdpYyAhPSAodWludHB0cl90KSgm czApID8gczAgOiBzMTsKKyAgdWludHB0cl90IGNvbnN0IGNvcHlfcmV0ID0gc3RhdGljX2Nhc3Q8 UyBjb25zdCY+KHNfY29weV9mcm9tKS5mKCk7CisgIHVpbnRwdHJfdCBjb25zdCBtb3ZlX3JldCA9 IHN0YXRpY19jYXN0PFMmJj4oc19tb3ZlX2Zyb20pLmYoKTsKKyAgLy8gd2UgdGVzdCBzcGVjaWZp Y2FsbHkgZm9yIHJlaW50ZXJwcmV0YXRpb24gaW4gb3RoZXIKKyAgLy8gYnkgdmFsdWUgdGVzdHMs IGl0J3MgdW5uZWNlc3NhcnkgdG8gZG8gaXQgYWdhaW4gaGVyZQorICBpZiAoY29weV9yZXQgIT0g bWFnaWMgKyBjb3B5X21hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKG1vdmVf cmV0ICE9IG1hZ2ljICsgbW92ZV9tYWdpYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Cit9CisK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1ieS12 YWx1ZTQuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1ieS12YWx1 ZTQuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWI0ZTAwNTgyY2YK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotYnktdmFsdWU0LkMKQEAgLTAsMCArMSwyMCBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBj b21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyBkaWFnbm9zaXMgb2YgaWxsLWZvcm1lZCBj YWxscyB0byBieS12YWx1ZSB4b2JqIG1lbWJlciBmdW5jdGlvbnMKKy8vIGR1ZSB0byBhbiBhYnNl bmNlIG9mIHZhbGlkIGNvbnZlcnNpb24gZnVuY3Rpb25zCisKK3N0cnVjdCBOb3RGcm9tUyB7fTsK Kworc3RydWN0IFMgeworICB2b2lkIGYodGhpcyBpbnQpIHt9CisgIHZvaWQgZyh0aGlzIE5vdEZy b21TKSB7fQorfTsKKwordm9pZCB0ZXN0KCkKK3sKKyAgUyBze307CisgIHMuZigpOyAvLyB7IGRn LWVycm9yIHtjYW5ub3QgY29udmVydCAnUycgdG8gJ2ludCd9IH0KKyAgcy5nKCk7IC8vIHsgZGct ZXJyb3Ige2Nhbm5vdCBjb252ZXJ0ICdTJyB0byAnTm90RnJvbVMnfSB9Cit9CisKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1B LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3Qt QS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MDQzZTkxYmIyOAot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1jeHgtZGlhbGVjdC1BLkMKQEAgLTAsMCArMSw3IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRv IGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKK3N0cnVjdCBTIHsKKyAgICB2b2lkIGYodGhp cyBTKTsgLy8geyBkZy1ib2d1cyB7ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBvbmx5 IGF2YWlsYWJsZSB3aXRoICctc3RkPWNcK1wrMjMnIG9yICctc3RkPWdudVwrXCsyMyd9IH0KK307 CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1j eHgtZGlhbGVjdC1CLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot Y3h4LWRpYWxlY3QtQi5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5m YjJhNmEwZTQxYgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1CLkMKQEAgLTAsMCArMSw3IEBACisvLyBQMDg0N1I3 CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjBfZG93biB9IH0KKworc3RydWN0IFMg eworICAgIHZvaWQgZih0aGlzIFMpOyAvLyB7IGRnLWVycm9yIHtleHBsaWNpdCBvYmplY3QgbWVt YmVyIGZ1bmN0aW9uIG9ubHkgYXZhaWxhYmxlIHdpdGggJy1zdGQ9Y1wrXCsyMycgb3IgJy1zdGQ9 Z251XCtcKzIzJ30gfQorfTsKKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUMuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1DLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjE4MmUyOTRjODgzCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUMuQwpAQCAtMCwwICsx LDkgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMF9kb3du IH0gfQorLy8gZG9uJ3QgcGFzcyBpbiAtcGVkYW50aWMtZXJyb3JzCisvLyB7IGRnLW9wdGlvbnMg IiIgfQorCitzdHJ1Y3QgUyB7CisgICAgdm9pZCBmKHRoaXMgUyk7IC8vIHsgZGctd2FybmluZyB7 ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBvbmx5IGF2YWlsYWJsZSB3aXRoICctc3Rk PWNcK1wrMjMnIG9yICctc3RkPWdudVwrXCsyMyd9IH0KK307CisKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1ELkMgYi9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtRC5DCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40OWI3ZWEwZGY0NAotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlh bGVjdC1ELkMKQEAgLTAsMCArMSw4IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUg eyB0YXJnZXQgYysrMjBfZG93biB9IH0KKy8vIHsgZGctb3B0aW9ucyAiLVduby1jKysyMy1leHRl bnNpb25zIiB9CisKK3N0cnVjdCBTIHsKKyAgICB2b2lkIGYodGhpcyBTKTsgLy8geyBkZy1ib2d1 cyB7ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBvbmx5IGF2YWlsYWJsZSB3aXRoICct c3RkPWNcK1wrMjMnIG9yICctc3RkPWdudVwrXCsyMyd9IH0KK307CisKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1FLkMgYi9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtRS5DCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40MTFiNzBjM2Q5ZAotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgt ZGlhbGVjdC1FLkMKQEAgLTAsMCArMSw4IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBp bGUgeyB0YXJnZXQgYysrMjBfZG93biB9IH0KKy8vIHsgZGctb3B0aW9ucyAiLVduby1jKysyMy1l eHRlbnNpb25zIC1wZWRhbnRpYy1lcnJvcnMiIH0KKworc3RydWN0IFMgeworICAgIHZvaWQgZih0 aGlzIFMpOyAvLyB7IGRnLWJvZ3VzIHtleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIG9u bHkgYXZhaWxhYmxlIHdpdGggJy1zdGQ9Y1wrXCsyMycgb3IgJy1zdGQ9Z251XCtcKzIzJ30gfQor fTsKKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWRpYWdub3N0aWNzMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWRpYWdub3N0aWNzMS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5k ZmFjMTE4OGZiYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczEuQwpAQCAtMCwwICsxLDEzOSBAQAorLy8gUDA4NDdS NworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyByZWplY3Rpb24g YW5kIGRpYWdub3NpcyBvZiB4b2JqIG1lbWJlciBmdW5jdGlvbnMgdGhhdCBoYXZlIG1lbWJlciBm dW5jdGlvbiBxdWFsaWZpZXJzLgorCitzdHJ1Y3QgUyB7CisgICAgdm9pZCBmX3ZhbHVlXzAodGhp cyBTKSBjb25zdDsgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1l bWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxp ZmllciIgfQorICAgIHZvaWQgZl92YWx1ZV8xKHRoaXMgUykgdm9sYXRpbGU7ICAgICAgICAgIC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylc W15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdmFsdWVf Mih0aGlzIFMpIGNvbnN0IHZvbGF0aWxlOyAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3Yt cXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZhbHVlXzModGhpcyBTKSAmOyAgICAgICAgICAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZf dmFsdWVfNCh0aGlzIFMpICYmOyAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhh dmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92YWx1ZV81KHRoaXMgUykgY29uc3QgJjsg ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0K KyAgICB2b2lkIGZfdmFsdWVfNih0aGlzIFMpIGNvbnN0ICYmOyAgICAgICAgICAvLyB7IGRnLWVy cm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxd KycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZhbHVlXzco dGhpcyBTKSB2b2xhdGlsZSAmOyAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0 IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8 Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92YWx1ZV84KHRoaXMgUykgdm9sYXRpbGUgJiY7 ICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/ IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAg ICB2b2lkIGZfdmFsdWVfOSh0aGlzIFMpIGNvbnN0IHZvbGF0aWxlICY7ICAvLyB7IGRnLWVycm9y ICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycg Y2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZhbHVlX0EodGhp cyBTKSBjb25zdCB2b2xhdGlsZSAmJjsgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1l bWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3Yp LXF1YWxpZmllciIgfQorCisgICAgdm9pZCBmX3JlZl8wKHRoaXMgUyYpIGNvbnN0OyAgICAgICAg ICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFz dGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBm X3JlZl8xKHRoaXMgUyYpIHZvbGF0aWxlOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhh dmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZl8yKHRoaXMgUyYpIGNvbnN0IHZvbGF0 aWxlOyAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICco PyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9p ZCBmX3JlZl8zKHRoaXMgUyYpICY7ICAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBs aWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90 IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZfNCh0aGlzIFMmKSAmJjsgICAg ICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAg ICB2b2lkIGZfcmVmXzUodGhpcyBTJikgY29uc3QgJjsgICAgICAgICAgIC8vIHsgZGctZXJyb3Ig ImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBj YW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfcmVmXzYodGhpcyBT JikgY29uc3QgJiY7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1i ZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1x dWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfcmVmXzcodGhpcyBTJikgdm9sYXRpbGUgJjsgICAgICAg IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRp YylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lk IGZfcmVmXzgodGhpcyBTJikgdm9sYXRpbGUgJiY7ICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfcmVmXzkodGhpcyBTJikgY29u c3Qgdm9sYXRpbGUgJjsgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZp ZXIiIH0KKyAgICB2b2lkIGZfcmVmX0EodGhpcyBTJikgY29uc3Qgdm9sYXRpbGUgJiY7IC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKworICAgIHZvaWQgZl9y ZWZyZWZfMCh0aGlzIFMmJikgY29uc3Q7ICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfcmVmcmVmXzEodGhpcyBTJiYpIHZvbGF0 aWxlOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9Cisg ICAgdm9pZCBmX3JlZnJlZl8yKHRoaXMgUyYmKSBjb25zdCB2b2xhdGlsZTsgICAgLy8geyBkZy1l cnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJc XSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZyZWZfMyh0aGlz IFMmJikgJjsgICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBt ZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVh bGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZnJlZl80KHRoaXMgUyYmKSAmJjsgICAgICAgICAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZf cmVmcmVmXzUodGhpcyBTJiYpIGNvbnN0ICY7ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBs aWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90 IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZnJlZl82KHRoaXMgUyYm KSBjb25zdCAmJjsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJl ciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1 YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZyZWZfNyh0aGlzIFMmJikgdm9sYXRpbGUgJjsgICAg ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0 YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2 b2lkIGZfcmVmcmVmXzgodGhpcyBTJiYpIHZvbGF0aWxlICYmOyAgICAgICAvLyB7IGRnLWVycm9y ICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycg Y2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZnJlZl85KHRo aXMgUyYmKSBjb25zdCB2b2xhdGlsZSAmOyAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0 IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8 Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZyZWZfQSh0aGlzIFMmJikgY29uc3Qgdm9s YXRpbGUgJiY7IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0K KworICAgIHZvaWQgZl9jcmVmXzAodGhpcyBTIGNvbnN0JikgY29uc3Q7ICAgICAgICAgICAgIC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylc W15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZl8x KHRoaXMgUyBjb25zdCYpIHZvbGF0aWxlOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhh dmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZfMih0aGlzIFMgY29uc3QmKSBjb25z dCB2b2xhdGlsZTsgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5j dGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQor ICAgIHZvaWQgZl9jcmVmXzModGhpcyBTIGNvbnN0JikgJjsgICAgICAgICAgICAgICAgIC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZfNCh0 aGlzIFMgY29uc3QmKSAmJjsgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZl IHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZl81KHRoaXMgUyBjb25zdCYpIGNvbnN0 ICY7ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVy IiB9CisgICAgdm9pZCBmX2NyZWZfNih0aGlzIFMgY29uc3QmKSBjb25zdCAmJjsgICAgICAgICAg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jcmVmXzcodGhpcyBTIGNvbnN0Jikgdm9sYXRpbGUgJjsgICAgICAgIC8vIHsgZGctZXJyb3Ig ImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBj YW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZl84KHRoaXMg UyBjb25zdCYpIHZvbGF0aWxlICYmOyAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJl ZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZfOSh0aGlzIFMgY29uc3QmKSBjb25z dCB2b2xhdGlsZSAmOyAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5j dGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmll ciIgfQorICAgIHZvaWQgZl9jcmVmX0EodGhpcyBTIGNvbnN0JikgY29uc3Qgdm9sYXRpbGUgJiY7 IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRp YylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKworICAgIHZv aWQgZl9jcmVmcmVmXzAodGhpcyBTIGNvbnN0JiYpIGNvbnN0OyAgICAgICAgICAgICAvLyB7IGRn LWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5c clxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZyZWZfMSh0 aGlzIFMgY29uc3QmJikgdm9sYXRpbGU7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0 IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2 ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZnJlZl8yKHRoaXMgUyBjb25zdCYmKSBj b25zdCB2b2xhdGlsZTsgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBm dW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIg fQorICAgIHZvaWQgZl9jcmVmcmVmXzModGhpcyBTIGNvbnN0JiYpICY7ICAgICAgICAgICAgICAg ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0 aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9j cmVmcmVmXzQodGhpcyBTIGNvbnN0JiYpICYmOyAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9y ICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycg Y2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jcmVmcmVmXzUodGhpcyBT IGNvbnN0JiYpIGNvbnN0ICY7ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJl ZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZyZWZfNih0aGlzIFMgY29uc3QmJikg Y29uc3QgJiY7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIg ZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFs aWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZnJlZl83KHRoaXMgUyBjb25zdCYmKSB2b2xhdGlsZSAm OyAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAn KD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQor ICAgIHZvaWQgZl9jcmVmcmVmXzgodGhpcyBTIGNvbnN0JiYpIHZvbGF0aWxlICYmOyAgICAgICAv LyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMp XFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBm X2NyZWZyZWZfOSh0aGlzIFMgY29uc3QmJikgY29uc3Qgdm9sYXRpbGUgJjsgIC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0r JyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZnJlZl9B KHRoaXMgUyBjb25zdCYmKSBjb25zdCB2b2xhdGlsZSAmJjsgLy8geyBkZy1lcnJvciAiZXhwbGlj aXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBo YXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorCisgICAgdm9pZCBmX3ZyZWZfMCh0aGlzIFMgdm9s YXRpbGUmKSBjb25zdDsgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0 IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1 YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmXzEodGhpcyBTIHZvbGF0aWxlJikgdm9sYXRpbGU7 ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2 b2lkIGZfdnJlZl8yKHRoaXMgUyB2b2xhdGlsZSYpIGNvbnN0IHZvbGF0aWxlOyAgICAvLyB7IGRn LWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5c clxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZyZWZfMyh0aGlz IFMgdm9sYXRpbGUmKSAmOyAgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZl IHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZl80KHRoaXMgUyB2b2xhdGlsZSYpICYm OyAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIg fQorICAgIHZvaWQgZl92cmVmXzUodGhpcyBTIHZvbGF0aWxlJikgY29uc3QgJjsgICAgICAgICAg IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRp YylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lk IGZfdnJlZl82KHRoaXMgUyB2b2xhdGlsZSYpIGNvbnN0ICYmOyAgICAgICAgICAvLyB7IGRnLWVy cm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxd KycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZyZWZfNyh0 aGlzIFMgdm9sYXRpbGUmKSB2b2xhdGlsZSAmOyAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGlj aXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBo YXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmXzgodGhpcyBTIHZvbGF0 aWxlJikgdm9sYXRpbGUgJiY7ICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBt ZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2 KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZl85KHRoaXMgUyB2b2xhdGlsZSYpIGNvbnN0 IHZvbGF0aWxlICY7ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVy IiB9CisgICAgdm9pZCBmX3ZyZWZfQSh0aGlzIFMgdm9sYXRpbGUmKSBjb25zdCB2b2xhdGlsZSAm JjsgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorCisgICAg dm9pZCBmX3ZyZWZyZWZfMCh0aGlzIFMgdm9sYXRpbGUmJikgY29uc3Q7ICAgICAgICAgICAgIC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylc W15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZnJl Zl8xKHRoaXMgUyB2b2xhdGlsZSYmKSB2b2xhdGlsZTsgICAgICAgICAgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNh bm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmcmVmXzIodGhpcyBTIHZv bGF0aWxlJiYpIGNvbnN0IHZvbGF0aWxlOyAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3Yt cXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZyZWZyZWZfMyh0aGlzIFMgdm9sYXRpbGUmJikgJjsg ICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9 CisgICAgdm9pZCBmX3ZyZWZyZWZfNCh0aGlzIFMgdm9sYXRpbGUmJikgJiY7ICAgICAgICAgICAg ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0 YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBm X3ZyZWZyZWZfNSh0aGlzIFMgdm9sYXRpbGUmJikgY29uc3QgJjsgICAgICAgICAgIC8vIHsgZGct ZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxy XF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZnJl Zl82KHRoaXMgUyB2b2xhdGlsZSYmKSBjb25zdCAmJjsgICAgICAgICAgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNh bm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmcmVmXzcodGhp cyBTIHZvbGF0aWxlJiYpIHZvbGF0aWxlICY7ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhh dmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZyZWZyZWZfOCh0aGlzIFMgdm9s YXRpbGUmJikgdm9sYXRpbGUgJiY7ICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVm fGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZnJlZl85KHRoaXMgUyB2b2xhdGlsZSYm KSBjb25zdCB2b2xhdGlsZSAmOyAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJl ciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1 YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmcmVmX0EodGhpcyBTIHZvbGF0aWxlJiYpIGNvbnN0 IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVy IiB9CisKKyAgICB2b2lkIGZfY3ZyZWZfMCh0aGlzIFMgY29uc3Qgdm9sYXRpbGUmKSBjb25zdDsg ICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAg IHZvaWQgZl9jdnJlZl8xKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYpIHZvbGF0aWxlOyAgICAgICAg ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0 aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2 cmVmXzIodGhpcyBTIGNvbnN0IHZvbGF0aWxlJikgY29uc3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGct ZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxy XF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZfMyh0aGlz IFMgY29uc3Qgdm9sYXRpbGUmKSAmOyAgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZfNCh0aGlzIFMgY29uc3Qg dm9sYXRpbGUmKSAmJjsgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJl Zi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZfNSh0aGlzIFMgY29uc3Qgdm9sYXRpbGUm KSBjb25zdCAmOyAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJl ciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1 YWxpZmllciIgfQorICAgIHZvaWQgZl9jdnJlZl82KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYpIGNv bnN0ICYmOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlm aWVyIiB9CisgICAgdm9pZCBmX2N2cmVmXzcodGhpcyBTIGNvbnN0IHZvbGF0aWxlJikgdm9sYXRp bGUgJjsgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rp b24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIi IH0KKyAgICB2b2lkIGZfY3ZyZWZfOCh0aGlzIFMgY29uc3Qgdm9sYXRpbGUmKSB2b2xhdGlsZSAm JjsgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAn KD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQor ICAgIHZvaWQgZl9jdnJlZl85KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYpIGNvbnN0IHZvbGF0aWxl ICY7ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFz dGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAg dm9pZCBmX2N2cmVmX0EodGhpcyBTIGNvbnN0IHZvbGF0aWxlJikgY29uc3Qgdm9sYXRpbGUgJiY7 IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRp YylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKworICAgIHZv aWQgZl9jdnJlZnJlZl8wKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSBjb25zdDsgICAgICAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9j dnJlZnJlZl8xKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSB2b2xhdGlsZTsgICAgICAgICAgLy8g eyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxb XlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jdnJlZnJl Zl8yKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSBjb25zdCB2b2xhdGlsZTsgICAgLy8geyBkZy1l cnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJc XSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jdnJlZnJlZl8zKHRo aXMgUyBjb25zdCB2b2xhdGlsZSYmKSAmOyAgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNh bm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZyZWZfNCh0aGlzIFMg Y29uc3Qgdm9sYXRpbGUmJikgJiY7ICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmcmVmXzUodGhpcyBTIGNvbnN0 IHZvbGF0aWxlJiYpIGNvbnN0ICY7ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBv YmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUg KHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmcmVmXzYodGhpcyBTIGNvbnN0 IHZvbGF0aWxlJiYpIGNvbnN0ICYmOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBv YmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUg KHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmcmVmXzcodGhpcyBTIGNvbnN0 IHZvbGF0aWxlJiYpIHZvbGF0aWxlICY7ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBv YmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUg KHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmcmVmXzgodGhpcyBTIGNvbnN0 IHZvbGF0aWxlJiYpIHZvbGF0aWxlICYmOyAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBv YmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUg KHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmcmVmXzkodGhpcyBTIGNvbnN0 IHZvbGF0aWxlJiYpIGNvbnN0IHZvbGF0aWxlICY7ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBv YmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUg KHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmcmVmX0EodGhpcyBTIGNvbnN0 IHZvbGF0aWxlJiYpIGNvbnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBv YmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUg KHJlZnxjdiktcXVhbGlmaWVyIiB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiB2b2lk IGRfdGVtcGxfMCh0aGlzIFNlbGYmJikgY29uc3Q7ICAgICAgICAgICAgIC8vIHsgZGctZXJyb3Ig ImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBj YW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiB2 b2lkIGRfdGVtcGxfMSh0aGlzIFNlbGYmJikgdm9sYXRpbGU7ICAgICAgICAgIC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0r JyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxm PiB2b2lkIGRfdGVtcGxfMih0aGlzIFNlbGYmJikgY29uc3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGct ZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxy XF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBT ZWxmPiB2b2lkIGRfdGVtcGxfMyh0aGlzIFNlbGYmJikgJjsgICAgICAgICAgICAgICAgIC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdGVtcGxhdGU8dHlwZW5h bWUgU2VsZj4gdm9pZCBkX3RlbXBsXzQodGhpcyBTZWxmJiYpICYmOyAgICAgICAgICAgICAgICAv LyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMp XFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHRlbXBsYXRlPHR5 cGVuYW1lIFNlbGY+IHZvaWQgZF90ZW1wbF81KHRoaXMgU2VsZiYmKSBjb25zdCAmOyAgICAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHRl bXBsYXRlPHR5cGVuYW1lIFNlbGY+IHZvaWQgZF90ZW1wbF82KHRoaXMgU2VsZiYmKSBjb25zdCAm JjsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIg fQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IHZvaWQgZF90ZW1wbF83KHRoaXMgU2VsZiYm KSB2b2xhdGlsZSAmOyAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJl ciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1 YWxpZmllciIgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IHZvaWQgZF90ZW1wbF84KHRo aXMgU2VsZiYmKSB2b2xhdGlsZSAmJjsgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChy ZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IHZvaWQgZF90 ZW1wbF85KHRoaXMgU2VsZiYmKSBjb25zdCB2b2xhdGlsZSAmOyAgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+ IHZvaWQgZF90ZW1wbF9BKHRoaXMgU2VsZiYmKSBjb25zdCB2b2xhdGlsZSAmJjsgLy8geyBkZy1l cnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJc XSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorCisgICAgdm9pZCBkX2F1dG9f MCh0aGlzIGF1dG8mJikgY29uc3Q7ICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0 IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2 ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGRfYXV0b18xKHRoaXMgYXV0byYmKSB2b2xhdGls ZTsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAg IHZvaWQgZF9hdXRvXzIodGhpcyBhdXRvJiYpIGNvbnN0IHZvbGF0aWxlOyAgICAvLyB7IGRnLWVy cm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxd KycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBkX2F1dG9fMyh0aGlzIGF1 dG8mJikgJjsgICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBt ZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVh bGlmaWVyIiB9CisgICAgdm9pZCBkX2F1dG9fNCh0aGlzIGF1dG8mJikgJiY7ICAgICAgICAgICAg ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0 YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBk X2F1dG9fNSh0aGlzIGF1dG8mJikgY29uc3QgJjsgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4 cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5u b3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGRfYXV0b182KHRoaXMgYXV0 byYmKSBjb25zdCAmJjsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1l bWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3Yp LXF1YWxpZmllciIgfQorICAgIHZvaWQgZF9hdXRvXzcodGhpcyBhdXRvJiYpIHZvbGF0aWxlICY7 ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICco PyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9Cisg ICAgdm9pZCBkX2F1dG9fOCh0aGlzIGF1dG8mJikgdm9sYXRpbGUgJiY7ICAgICAgIC8vIHsgZGct ZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxy XF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGRfYXV0b185 KHRoaXMgYXV0byYmKSBjb25zdCB2b2xhdGlsZSAmOyAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZl IChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZF9hdXRvX0EodGhpcyBhdXRvJiYpIGNv bnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlm aWVyIiB9Cit9OworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotZGlhZ25vc3RpY3MyLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotZGlhZ25vc3RpY3MyLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjc3MTIwMGI4MzllCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzMi5DCkBAIC0wLDAgKzEsMjYgQEAKKy8v IFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gcmVq ZWN0aW9uIGFuZCBkaWFnbm9zaXMgb2YgaW5jb3JyZWN0IHVzZXMgb2YgJ3RoaXMnIGluIGRlY2xh cmF0aW9ucyBhbmQgZGVmaW5pdGlvbnMKKwordXNpbmcgZnVuY190eXBlID0gdm9pZCh0aGlzIGlu dCk7IC8vIHsgZGctbGluZSBmdW5jX3R5cGVfbGluZSB9CisvLyB7IGRnLWVycm9yICJhIGZ1bmN0 aW9uIHR5cGUgY2Fubm90IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciIgIiIgeyB0 YXJnZXQgKi0qLSogfSBmdW5jX3R5cGVfbGluZSB9CisvLyB7IGRnLW5vdGUgInRoZSB0eXBlIG9m IGFuIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gaXMgYSByZWd1bGFyIGZ1bmN0aW9u IHR5cGUiICIiIHsgdGFyZ2V0ICotKi0qIH0gZnVuY190eXBlX2xpbmUgfQorCit1c2luZyBmdW5j X3B0cl90eXBlID0gdm9pZCgqKSh0aGlzIGludCk7IC8vIHsgZGctbGluZSBmdW5jX3B0cl90eXBl X2xpbmUgfQorLy8geyBkZy1lcnJvciAiYSBwb2ludGVyIHRvIGZ1bmN0aW9uIHR5cGUgY2Fubm90 IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciIgIiIgeyB0YXJnZXQgKi0qLSogfSBm dW5jX3B0cl90eXBlX2xpbmUgfQorLy8geyBkZy1ub3RlICJ0aGUgdHlwZSBvZiBhIHBvaW50ZXIg dG8gZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBpcyBhIHJlZ3VsYXIgcG9pbnRlciB0 byBmdW5jdGlvbiB0eXBlIiAiIiB7IHRhcmdldCAqLSotKiB9IGZ1bmNfcHRyX3R5cGVfbGluZSB9 CisKK3N0cnVjdCBTIHsKKyAgICBzdGF0aWMgdm9pZCBmKHRoaXMgUykge30gLy8geyBkZy1saW5l IHN0YXRpY19tZW1iZXJfZnVuY19saW5lIH0KK307CisvLyB7IGRnLWVycm9yICJhbiBleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIGNhbm5vdCBiZSAnc3RhdGljJyIgIiIgeyB0YXJnZXQg Ki0qLSogfSBzdGF0aWNfbWVtYmVyX2Z1bmNfbGluZSB9CisvLyB7IGRnLW5vdGUgImV4cGxpY2l0 IG9iamVjdCBwYXJhbWV0ZXIgZGVjbGFyZWQgaGVyZSIgIiIgeyB0YXJnZXQgKi0qLSogfSBzdGF0 aWNfbWVtYmVyX2Z1bmNfbGluZSB9CisKK3VzaW5nIG1lbV9mdW5jX3R5cGUgPSB2b2lkIChTOjoq KSh0aGlzIFMmKTsgLy8geyBkZy1saW5lIG1lbV9mdW5jX3R5cGVfbGluZSB9CisvLyB7IGRnLWVy cm9yICJhIHBvaW50ZXIgdG8gbWVtYmVyIGZ1bmN0aW9uIHR5cGUgY2Fubm90IGhhdmUgYW4gZXhw bGljaXQgb2JqZWN0IHBhcmFtZXRlciIgIiIgeyB0YXJnZXQgKi0qLSogfSBtZW1fZnVuY190eXBl X2xpbmUgfQorLy8geyBkZy1ub3RlICJ0aGUgdHlwZSBvZiBhIHBvaW50ZXIgdG8gZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiBpcyBhIHJlZ3VsYXIgcG9pbnRlciB0byBmdW5jdGlvbiB0 eXBlIiAiIiB7IHRhcmdldCAqLSotKiB9IG1lbV9mdW5jX3R5cGVfbGluZSB9CisKK3ZvaWQgZih0 aGlzIGludCk7IC8vIHsgZGctZXJyb3IgImEgbm9uLW1lbWJlciBmdW5jdGlvbiBjYW5ub3QgaGF2 ZSBhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIiB9Cit2b2lkIGYodGhpcyBpbnQpIHt9IC8v IHsgZGctZXJyb3IgImEgbm9uLW1lbWJlciBmdW5jdGlvbiBjYW5ub3QgaGF2ZSBhbiBleHBsaWNp dCBvYmplY3QgcGFyYW1ldGVyIiB9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRn L2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczQuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRn L2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczQuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uZWMwOTFkNmNhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M0LkMKQEAgLTAsMCAr MSwyMCBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0g fQorCisvLyByZWplY3Rpb24gYW5kIGRpYWdub3NpcyBvZiBhbiB4b2JqIHBhcmFtZXRlciBkZWNs YXJlZCB3aXRoIGEgZGVmYXVsdCBhcmd1bWVudAorCitzdHJ1Y3QgUyB7CisgIHZvaWQgZjAodGhp cyBTID0ge30pIHt9IC8vIHsgZGctZXJyb3IgImFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIg bWF5IG5vdCBoYXZlIGEgZGVmYXVsdCBhcmd1bWVudCIgfQorICB2b2lkIGYxKHRoaXMgUyA9IHt9 KTsgLy8geyBkZy1lcnJvciAiYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBtYXkgbm90IGhh dmUgYSBkZWZhdWx0IGFyZ3VtZW50IiB9CisgIHZvaWQgZjIodGhpcyBTKTsKKyAgdm9pZCBmMTAo dGhpcyBTIHMgPSB7fSkge30gLy8geyBkZy1lcnJvciAiYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFt ZXRlciBtYXkgbm90IGhhdmUgYSBkZWZhdWx0IGFyZ3VtZW50IiB9CisgIHZvaWQgZjExKHRoaXMg UyBzID0ge30pOyAvLyB7IGRnLWVycm9yICJhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIG1h eSBub3QgaGF2ZSBhIGRlZmF1bHQgYXJndW1lbnQiIH0KKyAgdm9pZCBmMTIodGhpcyBTIHMpOwor fTsKKwordm9pZCBTOjpmMSh0aGlzIFMpIHt9Cit2b2lkIFM6OmYyKHRoaXMgUyA9IHt9KSB7fSAv LyB7IGRnLWVycm9yICJhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIG1heSBub3QgaGF2ZSBh IGRlZmF1bHQgYXJndW1lbnQiIH0KKwordm9pZCBTOjpmMTEodGhpcyBTIHMpIHt9Cit2b2lkIFM6 OmYxMih0aGlzIFMgcyA9IHt9KSB7fSAvLyB7IGRnLWVycm9yICJhbiBleHBsaWNpdCBvYmplY3Qg cGFyYW1ldGVyIG1heSBub3QgaGF2ZSBhIGRlZmF1bHQgYXJndW1lbnQiIH0KKwpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNS5D IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNS5D Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNzQ0YjNmMjI5OQotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1k aWFnbm9zdGljczUuQwpAQCAtMCwwICsxLDE2IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNv bXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIGxvY2F0aW9uIGRpYWdub3N0aWMgdGV4dCB3 aGVuIGFuIGVycm9yIGlzIGVtaXR0ZWQgZnJvbSBhbiB4b2JqIG1lbWJlciBmdW5jdGlvbgorLy8g dGhpcyBkb2VzIG5vdCB0ZXN0IGZvciBzcGVjaWZpYyBpbGwtZm9ybWVkIGNvZGUsIGp1c3QgdGhl IGFkZGl0aW9uYWwgZGlhZ25vc3RpYyBtZXNzYWdlCisKKy8vIHsgZGctbWVzc2FnZSAiSW4gZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiIgIiIgeyB0YXJnZXQgKi0qLSogfSAwIH0KKwor c3RydWN0IFMgeworICB2b2lkIGYodGhpcyBTIHMpIHsKKyAgICAvLyBUaGUgc3BlY2lmaWMgZGlh Z25vc2lzIGlzc3VlZCBoZXJlIGRvZXMgbm90IG1hdHRlcgorICAgIC8vIHdlIGp1c3QgbmVlZCB0 byBmb3JjZSBhbiBlcnJvciB0byBiZSBlbWl0dGVkCisgICAgK3M7IC8vIHsgZGctZXJyb3IgIiIg fQorICB9Cit9OworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotZGlhZ25vc3RpY3M2LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotZGlhZ25vc3RpY3M2LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmYzYjAxZDNjOGFlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNi5DCkBAIC0wLDAgKzEsMjMgQEAKKy8v IFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gcmVq ZWN0aW9uIGFuZCBkaWFnbm9zaXMgb2YgaW52YWxpZCB1c2VzIG9mICd0aGlzJyBpbiBib2R5IG9m IHhvYmogbWVtYmVyIGZ1bmN0aW9ucworCisvLyB7IGRnLW1lc3NhZ2UgIkluIGV4cGxpY2l0IG9i amVjdCBtZW1iZXIgZnVuY3Rpb24iICIiIHsgdGFyZ2V0ICotKi0qIH0gMCB9CisKK3N0cnVjdCBT MCB7CisgIGludCBfbjsKKyAgdm9pZCBmKHRoaXMgUzAmIHMpIHsgLy8geyBkZy1ub3RlICJ1c2Ug ZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciAncycgaW5zdGVhZCIgfSAKKyAgICB0aGlzLT5fbiA9 IDEwOyAvLyB7IGRnLWVycm9yICIndGhpcycgaXMgdW5hdmFpbGFibGUgZm9yIGV4cGxpY2l0IG9i amVjdCBtZW1iZXIgZnVuY3Rpb25zIiB9CisgICAgLy8gc3VwcHJlc3MgdW51c2VkIHZhcmlhYmxl IHdhcm5pbmcKKyAgICBzdGF0aWNfY2FzdDx2b2lkPihzKTsKKyAgfQorfTsKKworc3RydWN0IFMx IHsKKyAgaW50IF9uOworICB2b2lkIGYodGhpcyBTMSYpIHsgLy8geyBkZy1ub3RlICJuYW1lIGFu ZCB1c2UgdGhlIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgaW5zdGVhZCIgfQorICAgIHRoaXMt Pl9uID0gMTA7IC8vIHsgZGctZXJyb3IgIid0aGlzJyBpcyB1bmF2YWlsYWJsZSBmb3IgZXhwbGlj aXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbnMiIH0KKyAgfQorfTsKKwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNy5DIGIvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNy5DCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lYTUzNjA5YTFlMAotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9z dGljczcuQwpAQCAtMCwwICsxLDE3IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUg eyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIHJlamVjdGlvbiBhbmQgZGlhZ25vc2lzIHdoZW4gdGFr aW5nIGFkZHJlc3Mgb2YgYW4gdW5xdWFsaWZpZWQgeG9iaiBtZW1iZXIgZnVuY3Rpb24KKworc3Ry dWN0IFMgeworICB2b2lkIGYodGhpcyBTJikge30KKworICB2b2lkIGcodGhpcyBTJikge30KKyAg dm9pZCBnKHRoaXMgUyYsIGludCkge30KKworICB2b2lkIHRlc3QoKSB7CisgICAgdm9pZCAoKmZw KShTJikgPSAmZjsgLy8geyBkZy1lcnJvciAidGFraW5nIHRoZSBhZGRyZXNzIG9mIGFuIGV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gbXVzdCBiZSBxdWFsaWZpZWQiIH0KKyAgICB2b2lk ICgqZ3ApKFMmKSA9ICZnOyAvLyB7IGRnLWVycm9yICJ0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYW4g ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBtdXN0IGJlIHF1YWxpZmllZCIgfQorICB9 Cit9OworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotbGFtYmRhMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxh bWJkYTEuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODZlMDQ3MWVi N2YKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotbGFtYmRhMS5DCkBAIC0wLDAgKzEsMjUgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8g Y29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gbGFtYmRhIGRlY2xhcmF0aW9uIHdpdGgg eG9iaiBwYXJhbWV0ZXIKKworc3RydWN0IFN7fTsKKwordm9pZCB0ZXN0KCkKK3sKKyAgKHZvaWQp W10odGhpcyBhdXRvJiYgc2VsZil7fTsKKyAgKHZvaWQpW10odGhpcyBhdXRvJiBzZWxmKXt9Owor ICAodm9pZClbXSh0aGlzIGF1dG8gY29uc3QmIHNlbGYpe307CisgICh2b2lkKVtdKHRoaXMgYXV0 byBzZWxmKXt9OworCisgICh2b2lkKVtdKHRoaXMgUyYmIHNlbGYpe307CisgICh2b2lkKVtdKHRo aXMgUyYgc2VsZil7fTsKKyAgKHZvaWQpW10odGhpcyBTIGNvbnN0JiBzZWxmKXt9OworICAodm9p ZClbXSh0aGlzIFMgc2VsZil7fTsKKworICAodm9pZClbeCA9IDBdKHRoaXMgYXV0byYmIHNlbGYp e307CisgICh2b2lkKVt4ID0gMF0odGhpcyBhdXRvJiBzZWxmKXt9OworICAodm9pZClbeCA9IDBd KHRoaXMgYXV0byBjb25zdCYgc2VsZil7fTsKKyAgKHZvaWQpW3ggPSAwXSh0aGlzIGF1dG8gc2Vs Zil7fTsKK30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWxhbWJkYTIuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1sYW1iZGEyLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjgyNzE5 N2E2NjY3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhw bGljaXQtb2JqLWxhbWJkYTIuQwpAQCAtMCwwICsxLDIzIEBACisvLyBQMDg0N1I3CisvLyB7IGRn LWRvIHJ1biB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gcmVjdXJzaXZlIGxhbWJkYXMKKworaW5s aW5lIGNvbnN0ZXhwciBpbnQgY29ycmVjdF9yZXN1bHQgPSA1ICsgNCArIDMgKyAyICsgMTsgCisK K2ludCBtYWluKCkKK3sKKyAgYXV0byBjbDAgPSBbXSh0aGlzIGF1dG8mJiBzZWxmLCBpbnQgbikg ICAgICAtPiBpbnQgeyByZXR1cm4gbiA/IHNlbGYobiAtIDEpICsgbiA6IDA7IH07CisgIGF1dG8g Y2wxID0gW10odGhpcyBhdXRvIGNvbnN0JiBzZWxmLCBpbnQgbikgLT4gaW50IHsgcmV0dXJuIG4g PyBzZWxmKG4gLSAxKSArIG4gOiAwOyB9OworICBhdXRvIGNsMiA9IFtdKHRoaXMgYXV0byBzZWxm LCBpbnQgbikgICAgICAgIC0+IGludCB7IHJldHVybiBuID8gc2VsZihuIC0gMSkgKyBuIDogMDsg fTsKKyAgYXV0byBjbDMgPSBbXSh0aGlzIGF1dG8mJiBzZWxmLCBpbnQgbikgICAgIHsgaWYgKCFu KSByZXR1cm4gMDsgZWxzZSByZXR1cm4gc2VsZihuIC0gMSkgKyBuOyB9OworICBhdXRvIGNsNCA9 IFtdKHRoaXMgYXV0byBjb25zdCYgc2VsZiwgaW50IG4peyBpZiAoIW4pIHJldHVybiAwOyBlbHNl IHJldHVybiBzZWxmKG4gLSAxKSArIG47IH07CisgIGF1dG8gY2w1ID0gW10odGhpcyBhdXRvIHNl bGYsIGludCBuKSAgICAgICB7IGlmICghbikgcmV0dXJuIDA7IGVsc2UgcmV0dXJuIHNlbGYobiAt IDEpICsgbjsgfTsKKyAgaWYgKGNsMCg1KSAhPSBjb3JyZWN0X3Jlc3VsdCkgX19idWlsdGluX2Fi b3J0ICgpOworICBpZiAoY2wxKDUpICE9IGNvcnJlY3RfcmVzdWx0KSBfX2J1aWx0aW5fYWJvcnQg KCk7CisgIGlmIChjbDIoNSkgIT0gY29ycmVjdF9yZXN1bHQpIF9fYnVpbHRpbl9hYm9ydCAoKTsK KyAgaWYgKGNsMyg1KSAhPSBjb3JyZWN0X3Jlc3VsdCkgX19idWlsdGluX2Fib3J0ICgpOworICBp ZiAoY2w0KDUpICE9IGNvcnJlY3RfcmVzdWx0KSBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChj bDUoNSkgIT0gY29ycmVjdF9yZXN1bHQpIF9fYnVpbHRpbl9hYm9ydCAoKTsKK30KKwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYTMuQyBi L2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGEzLkMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjlkMjIyYjBlNTQ3Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYTMu QwpAQCAtMCwwICsxLDY0IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIHJ1biB7IHRhcmdldCBj KysyMyB9IH0KKworLy8gYW4gYWRhcHRhdGlvbiBvZiBvbmUgb2YgdGhlIGV4YW1wbGVzIGluIFAw ODQ3UjcKKworc3RydWN0IExlYWYgeyB9Oworc3RydWN0IE5vZGU7CisKK3N0cnVjdCBUcmVlIHsK KyAgZW51bSBjbGFzcyBzdG9yZWQge2xlYWYsIG5vZGV9OworICBzdG9yZWQgX2Rpc2NyaW1pbmF0 b3I7CisgIHVuaW9uIHsKKyAgICBMZWFmIF9sZWFmOworICAgIE5vZGUqIF9ub2RlOworICB9Owor ICBUcmVlKExlYWYpIDogX2Rpc2NyaW1pbmF0b3Ioc3RvcmVkOjpsZWFmKSwgX2xlYWYoKSB7fQor ICBUcmVlKE5vZGUmIG5vZGUpIDogX2Rpc2NyaW1pbmF0b3Ioc3RvcmVkOjpub2RlKSwgX25vZGUo Jm5vZGUpIHt9Cit9OworCitzdHJ1Y3QgTm9kZSB7CisgICAgVHJlZSBsZWZ0OworICAgIFRyZWUg cmlnaHQ7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgorYXV0byB2aXNpdF90cmVl KFZpc2l0b3ImJiB2aXNpdG9yLCBUcmVlIGNvbnN0JiB0cmVlKQoreworICBzd2l0Y2ggKHRyZWUu X2Rpc2NyaW1pbmF0b3IpCisgIHsKKyAgICBjYXNlIFRyZWU6OnN0b3JlZDo6bGVhZjoKKyAgICAg IHJldHVybiB2aXNpdG9yICh0cmVlLl9sZWFmKTsKKyAgICBjYXNlIFRyZWU6OnN0b3JlZDo6bm9k ZToKKyAgICAgIHJldHVybiB2aXNpdG9yICh0cmVlLl9ub2RlKTsKKyAgICBkZWZhdWx0OgorICAg ICAgX19idWlsdGluX2Fib3J0ICgpOyAKKyAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBU cz4KK3N0cnVjdCBvdmVybG9hZCA6IFRzLi4uIHsgdXNpbmcgVHM6Om9wZXJhdG9yKCkuLi47IH07 CisKK2ludCBtYWluKCkKK3sKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQgdHJ1ZV9udW1fbGVhdmVz ID0gODsKKyAgTm9kZSBicmFuY2gwey5sZWZ0ID0gTGVhZnt9LCAucmlnaHQgPSBMZWFme319Owor ICBOb2RlIGJyYW5jaDF7LmxlZnQgPSBMZWFme30sIC5yaWdodCA9IGJyYW5jaDB9OworICBOb2Rl IGJyYW5jaDJ7LmxlZnQgPSBMZWFme30sIC5yaWdodCA9IExlYWZ7fX07CisgIE5vZGUgYnJhbmNo M3subGVmdCA9IGJyYW5jaDEsIC5yaWdodCA9IGJyYW5jaDJ9OworICBOb2RlIGJyYW5jaDR7Lmxl ZnQgPSBicmFuY2gzLCAucmlnaHQgPSBMZWFme319OworICBOb2RlIGJyYW5jaDV7LmxlZnQgPSBM ZWFme30sIC5yaWdodCA9IExlYWZ7fX07CisgIE5vZGUgYnJhbmNoNnsubGVmdCA9IGJyYW5jaDQs IC5yaWdodCA9IGJyYW5jaDV9OworCisgIFRyZWUgcm9vdCAoYnJhbmNoNik7CisKKyAgaW50IG51 bV9sZWF2ZXMgPSB2aXNpdF90cmVlIChvdmVybG9hZHsKKyAgICBbXShMZWFmIGNvbnN0JikgeyBy ZXR1cm4gMTsgfSwKKyAgICBbXSh0aGlzIGF1dG8gY29uc3QmIHNlbGYsIE5vZGUqIG4pIC0+IGlu dCB7CisgICAgICByZXR1cm4gdmlzaXRfdHJlZSAoc2VsZiwgbi0+bGVmdCkgKyB2aXNpdF90cmVl IChzZWxmLCBuLT5yaWdodCk7CisgICAgfX0sCisgICAgcm9vdCk7CisgIGlmIChudW1fbGVhdmVz ICE9IHRydWVfbnVtX2xlYXZlcykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Cit9CisKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYMC5D IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVgwLkMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZmNGRhMDFiY2NlCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJk YVgwLkMKQEAgLTAsMCArMSwzMCBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsg dGFyZ2V0IGMrKzIzIH0gfQorCisvLyBsYW1iZGEgaW52YWxpZCBkZWNsIHNwZWNzCisKKy8vIHZl cnkgaW5jb21wbGV0ZSwgYnV0IEkgd2FudGVkIHRvIGRlbW9uc3RyYXRlIHRoYXQgZWFjaCBjYXNl IGRvZXMgaW5kZWVkIGVycm9yCisKK3ZvaWQgdGVzdCgpCit7CisgIGF1dG8gZjAgPSBbXSh0aGlz IGF1dG8pIG11dGFibGUge307IC8vIHsgZGctZXJyb3Ige30gfQorICBhdXRvIGYxID0gW10odGhp cyBhdXRvJikgbXV0YWJsZSB7fTsgLy8geyBkZy1lcnJvciB7fSB9CisgIGF1dG8gZjIgPSBbXSh0 aGlzIGF1dG8gY29uc3QmKSBtdXRhYmxlIHt9OyAvLyB7IGRnLWVycm9yIHt9IH0KKyAgYXV0byBm MyA9IFtdKHRoaXMgYXV0byYmKSBtdXRhYmxlIHt9OyAvLyB7IGRnLWVycm9yIHt9IH0KKworICBh dXRvIGcwID0gW10odGhpcyBhdXRvKSBzdGF0aWMge307IC8vIHsgZGctZXJyb3Ige30gfQorICBh dXRvIGcxID0gW10odGhpcyBhdXRvJikgc3RhdGljIHt9OyAvLyB7IGRnLWVycm9yIHt9IH0KKyAg YXV0byBnMiA9IFtdKHRoaXMgYXV0byBjb25zdCYpIHN0YXRpYyB7fTsgLy8geyBkZy1lcnJvciB7 fSB9CisgIGF1dG8gZzMgPSBbXSh0aGlzIGF1dG8mJikgc3RhdGljIHt9OyAvLyB7IGRnLWVycm9y IHt9IH0KKworICBhdXRvIGZjMCA9IFtuID0gMF0odGhpcyBhdXRvKSBtdXRhYmxlIHt9OyAvLyB7 IGRnLWVycm9yIHt9IH0KKyAgYXV0byBmYzEgPSBbbiA9IDBdKHRoaXMgYXV0byYpIG11dGFibGUg e307IC8vIHsgZGctZXJyb3Ige30gfQorICBhdXRvIGZjMiA9IFtuID0gMF0odGhpcyBhdXRvIGNv bnN0JikgbXV0YWJsZSB7fTsgLy8geyBkZy1lcnJvciB7fSB9CisgIGF1dG8gZmMzID0gW24gPSAw XSh0aGlzIGF1dG8mJikgbXV0YWJsZSB7fTsgLy8geyBkZy1lcnJvciB7fSB9CisKKyAgYXV0byBn YzAgPSBbbiA9IDBdKHRoaXMgYXV0bykgc3RhdGljIHt9OyAvLyB7IGRnLWVycm9yIHt9IH0KKyAg YXV0byBnYzEgPSBbbiA9IDBdKHRoaXMgYXV0byYpIHN0YXRpYyB7fTsgLy8geyBkZy1lcnJvciB7 fSB9CisgIGF1dG8gZ2MyID0gW24gPSAwXSh0aGlzIGF1dG8gY29uc3QmKSBzdGF0aWMge307IC8v IHsgZGctZXJyb3Ige30gfQorICBhdXRvIGdjMyA9IFtuID0gMF0odGhpcyBhdXRvJiYpIHN0YXRp YyB7fTsgLy8geyBkZy1lcnJvciB7fSB9Cit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv ZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYMjAuQyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYMjAuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uYTgwODAxOWUyOGUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDIwLkMKQEAgLTAsMCArMSw0 NiBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBydW4geyB0YXJnZXQgYysrMjMgfSB9CisKKy8v IGNhbGxpbmcgY2FwdHVyZWxlc3MgbGFtYmRhIGNhbGwgb3BlcmF0b3Igd2l0aCB1bnJlbGF0ZWQg ZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlcgorLy8gdGhyb3VnaCBmdW5jdGlvbiBwb2ludGVyCisK K2ludCBtYWluKCkKK3sKKyAgYXV0byBmMCA9IFtdKHRoaXMgYXV0byBzZWxmKSB7IHJldHVybiBz ZWxmOyB9OworICBhdXRvIGZwMF92YWx1ZSAgICAgPSBzdGF0aWNfY2FzdDxpbnQoKikoaW50KSAg ICAgICAgPigmZGVjbHR5cGUoZjApOjpvcGVyYXRvcigpKTsKKyAgYXV0byBmcDBfbHJlZiAgICAg ID0gc3RhdGljX2Nhc3Q8aW50KCopKGludCYpICAgICAgID4oJmRlY2x0eXBlKGYwKTo6b3BlcmF0 b3IoKSk7CisgIGF1dG8gZnAwX3JyZWYgICAgICA9IHN0YXRpY19jYXN0PGludCgqKShpbnQmJikg ICAgICA+KCZkZWNsdHlwZShmMCk6Om9wZXJhdG9yKCkpOworICBhdXRvIGZwMF9jb25zdGxyZWYg PSBzdGF0aWNfY2FzdDxpbnQoKikoaW50IGNvbnN0JikgPigmZGVjbHR5cGUoZjApOjpvcGVyYXRv cigpKTsKKyAgYXV0byBmcDBfY29uc3RycmVmID0gc3RhdGljX2Nhc3Q8aW50KCopKGludCBjb25z dCYmKT4oJmRlY2x0eXBlKGYwKTo6b3BlcmF0b3IoKSk7CisKKyAgYXV0byBmMSA9IFtdKHRoaXMg YXV0byYmIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH07CisgIGF1dG8gZnAxX2xyZWYgICAgICA9IHN0 YXRpY19jYXN0PGludCgqKShpbnQmKSAgICAgICA+KCZkZWNsdHlwZShmMSk6Om9wZXJhdG9yKCkp OworICBhdXRvIGZwMV9ycmVmICAgICAgPSBzdGF0aWNfY2FzdDxpbnQoKikoaW50JiYpICAgICAg PigmZGVjbHR5cGUoZjEpOjpvcGVyYXRvcigpKTsKKyAgYXV0byBmcDFfY29uc3RscmVmID0gc3Rh dGljX2Nhc3Q8aW50KCopKGludCBjb25zdCYpID4oJmRlY2x0eXBlKGYxKTo6b3BlcmF0b3IoKSk7 CisgIGF1dG8gZnAxX2NvbnN0cnJlZiA9IHN0YXRpY19jYXN0PGludCgqKShpbnQgY29uc3QmJik+ KCZkZWNsdHlwZShmMSk6Om9wZXJhdG9yKCkpOworCisgIC8vIGJvdGggYXJlIG5lZWRlZCBmb3Ig bHZhbHVlL3J2YWx1ZSBvdmVybG9hZHMKKyAgI2RlZmluZSBNQUdJQyA0MgorICBpbnQgbWFnaWMg PSBNQUdJQzsKKworICBpZiAoZnAwX3ZhbHVlIChtYWdpYykgIT0gbWFnaWMpCisgICAgX19idWls dGluX2Fib3J0ICgpOworICBpZiAoZnAwX2xyZWYgKG1hZ2ljKSAhPSBtYWdpYykKKyAgICBfX2J1 aWx0aW5fYWJvcnQgKCk7CisgIGlmIChmcDBfcnJlZiAoTUFHSUMpICE9IG1hZ2ljKQorICAgIF9f YnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKGZwMF9jb25zdGxyZWYgKG1hZ2ljKSAhPSBtYWdpYykK KyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChmcDBfY29uc3RycmVmIChNQUdJQykgIT0g bWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworCisgIGlmIChmcDFfbHJlZiAobWFnaWMp ICE9IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKGZwMV9ycmVmIChNQUdJ QykgIT0gbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoZnAxX2NvbnN0bHJl ZiAobWFnaWMpICE9IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKGZwMV9j b25zdHJyZWYgKE1BR0lDKSAhPSBtYWdpYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Cit9CisK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1i ZGFYMjEuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFY MjEuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzE1YTI0NTc5NDUK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotbGFtYmRhWDIxLkMKQEAgLTAsMCArMSwzOSBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBj b21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyBpbnN0YW50aWF0aW5nIGNhcHR1cmVsZXNz IGxhbWJkYSBjYWxsIG9wZXJhdG9yIHdpdGggdW5yZWxhdGVkIGV4cGxpY2l0IG9iamVjdCBwYXJh bWV0ZXIKKwordm9pZCB0ZXN0MCgpCit7CisgIGF1dG8gZjAgPSBbXSh0aGlzIGF1dG8gc2VsZikg eyByZXR1cm4gc2VsZjsgfTsKKyAgYXV0byBmcDBfdmFsdWUgICAgID0gc3RhdGljX2Nhc3Q8aW50 KCopKGludCkgICAgICAgID4oJmRlY2x0eXBlKGYwKTo6b3BlcmF0b3IoKSk7CisgIGF1dG8gZnAw X2xyZWYgICAgICA9IHN0YXRpY19jYXN0PGludCgqKShpbnQmKSAgICAgICA+KCZkZWNsdHlwZShm MCk6Om9wZXJhdG9yKCkpOworICBhdXRvIGZwMF9ycmVmICAgICAgPSBzdGF0aWNfY2FzdDxpbnQo KikoaW50JiYpICAgICAgPigmZGVjbHR5cGUoZjApOjpvcGVyYXRvcigpKTsKKyAgYXV0byBmcDBf Y29uc3RscmVmID0gc3RhdGljX2Nhc3Q8aW50KCopKGludCBjb25zdCYpID4oJmRlY2x0eXBlKGYw KTo6b3BlcmF0b3IoKSk7CisgIGF1dG8gZnAwX2NvbnN0cnJlZiA9IHN0YXRpY19jYXN0PGludCgq KShpbnQgY29uc3QmJik+KCZkZWNsdHlwZShmMCk6Om9wZXJhdG9yKCkpOworCisgIGF1dG8gZjEg PSBbXSh0aGlzIGF1dG8mJiBzZWxmKSB7IHJldHVybiBzZWxmOyB9OworICBhdXRvIGZwMV92YWx1 ZSAgICAgID0gc3RhdGljX2Nhc3Q8aW50KCopKGludCkgICAgICAgID4oJmRlY2x0eXBlKGYxKTo6 b3BlcmF0b3IoKSk7IC8vIHsgZGctZXJyb3Ige2ludmFsaWQgJ3N0YXRpY19jYXN0JyBmcm9tIHR5 cGV9IH0KKyAgYXV0byBmcDFfbHJlZiAgICAgICA9IHN0YXRpY19jYXN0PGludCgqKShpbnQmKSAg ICAgICA+KCZkZWNsdHlwZShmMSk6Om9wZXJhdG9yKCkpOworICBhdXRvIGZwMV9ycmVmICAgICAg ID0gc3RhdGljX2Nhc3Q8aW50KCopKGludCYmKSAgICAgID4oJmRlY2x0eXBlKGYxKTo6b3BlcmF0 b3IoKSk7CisgIGF1dG8gZnAxX2NvbnN0bHJlZiAgPSBzdGF0aWNfY2FzdDxpbnQoKikoaW50IGNv bnN0JikgPigmZGVjbHR5cGUoZjEpOjpvcGVyYXRvcigpKTsKKyAgYXV0byBmcDFfY29uc3RycmVm ICA9IHN0YXRpY19jYXN0PGludCgqKShpbnQgY29uc3QmJik+KCZkZWNsdHlwZShmMSk6Om9wZXJh dG9yKCkpOworfQorCit2b2lkIHRlc3QxKCkKK3sKKyAgYXV0byBmMCA9IFtdKHRoaXMgYXV0byBz ZWxmKSB7IHJldHVybiBzZWxmOyB9OworICBpbnQgKCpmcDBfdmFsdWUpKGludCkgICAgICAgICAg ICAgPSAmZGVjbHR5cGUoZjApOjpvcGVyYXRvcigpOworICBpbnQgKCpmcDBfbHJlZikoaW50Jikg ICAgICAgICAgICAgPSAmZGVjbHR5cGUoZjApOjpvcGVyYXRvcigpOworICBpbnQgKCpmcDBfcnJl ZikoaW50JiYpICAgICAgICAgICAgPSAmZGVjbHR5cGUoZjApOjpvcGVyYXRvcigpOworICBpbnQg KCpmcDBfY29uc3RscmVmKShpbnQgY29uc3QmKSAgPSAmZGVjbHR5cGUoZjApOjpvcGVyYXRvcigp OworICBpbnQgKCpmcDBfY29uc3RycmVmKShpbnQgY29uc3QmJikgPSAmZGVjbHR5cGUoZjApOjpv cGVyYXRvcigpOworCisgIGF1dG8gZjEgPSBbXSh0aGlzIGF1dG8mJiBzZWxmKSB7IHJldHVybiBz ZWxmOyB9OworICBpbnQgKCpmcDFfdmFsdWUpKGludCkgICAgICAgICAgICAgID0gJmRlY2x0eXBl KGYxKTo6b3BlcmF0b3IoKTsgLy8geyBkZy1lcnJvciB7bm8gbWF0Y2hlcyBjb252ZXJ0aW5nIGZ1 bmN0aW9ufSB9CisgIGludCAoKmZwMV9scmVmKShpbnQmKSAgICAgICAgICAgICAgPSAmZGVjbHR5 cGUoZjEpOjpvcGVyYXRvcigpOworICBpbnQgKCpmcDFfcnJlZikoaW50JiYpICAgICAgICAgICAg ID0gJmRlY2x0eXBlKGYxKTo6b3BlcmF0b3IoKTsKKyAgaW50ICgqZnAxX2NvbnN0bHJlZikoaW50 IGNvbnN0JikgICA9ICZkZWNsdHlwZShmMSk6Om9wZXJhdG9yKCk7CisgIGludCAoKmZwMV9jb25z dHJyZWYpKGludCBjb25zdCYmKSAgPSAmZGVjbHR5cGUoZjEpOjpvcGVyYXRvcigpOworfQorCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRh WDI1LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDI1 LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUyM2Q5ZTE2YTA3Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWxhbWJkYVgyNS5DCkBAIC0wLDAgKzEsMTAyIEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNv bXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIFNGSU5BRSB3aGVuIHRoZSBjYWxsIG9wZXJh dG9yIGZvciBhIGxhbWJkYSB3aXRoIGNhcHR1cmVzIGlzIGluc3RhbnRpYXRlZAorLy8gd2l0aCBh biB1bnJlbGF0ZWQgdHlwZS4KKworLyogW2V4cHIucHJpbS5sYW1iZGEuZ2VuZXJhbC01XQorCisg ICBHaXZlbiBhIGxhbWJkYSB3aXRoIGEgbGFtYmRhLWNhcHR1cmUsIHRoZSB0eXBlIG9mIHRoZSBl eHBsaWNpdCBvYmplY3QKKyAgIHBhcmFtZXRlciwgaWYgYW55LCBvZiB0aGUgbGFtYmRhJ3MgZnVu Y3Rpb24gY2FsbCBvcGVyYXRvciAocG9zc2libHkKKyAgIGluc3RhbnRpYXRlZCBmcm9tIGEgZnVu Y3Rpb24gY2FsbCBvcGVyYXRvciB0ZW1wbGF0ZSkgc2hhbGwgYmUgZWl0aGVyOgorCisgICAtLSg1 LjEpIHRoZSBjbG9zdXJlIHR5cGUsCisgICAtLSg1LjIpIGEgY2xhc3MgdHlwZSBkZXJpdmVkIGZy b20gdGhlIGNsb3N1cmUgdHlwZSwgb3IKKyAgIC0tKDUuMykgYSByZWZlcmVuY2UgdG8gYSBwb3Nz aWJseSBjdi1xdWFsaWZpZWQgc3VjaCB0eXBlLiAgKi8KKworLy8gVGhlIGFib3ZlIHdvcmRpbmcg aXMgc2ltaWxhciB0byBbZGNsLmZjdC0xNV0gd2hpY2ggaXMgaGFuZGxlZCBieSBTRklOQUUsCisv LyB0aHVzIHdlIGFsc28gaGFuZGxlIHRoZSBmb2xsb3dpbmcgY2FzZXMgdGhlIHNhbWUgd2F5Lgor CisvLyBXZSBuZWVkIHRoZSAyIG92ZXJsb2FkcyB0byBiZSBhbWJpZ3VvdXMgdG8gb2JzZXJ2ZSBz dWJzdGl0dXRpb24gZmFpbHVyZQorLy8gZm9yIHRoZSBsYW1iZGEncyBjYWxsIG9wZXJhdG9yIHdo ZW4gaW5zdGFudGlhdGVkIHdpdGggYW4gdW5yZWxhdGVkIHR5cGUuCisvLyBXZSBhY2NvbXBsaXNo IHRoaXMgYnkgaW50cm9kdWNpbmcgYm90aCBvdmVybG9hZHMgdGhyb3VnaCB1c2luZyBkZWNsYXJh dGlvbnMuCisKKy8vICh0aGVyZSBpcyBhbHNvIGEgYnVnIHRoYXQgbWFrZXMgdGhlc2UgYW1iaWd1 b3VzIHdpdGhvdXQgdGhpcyB0cmljaywKKy8vICBidXQgaXQncyB1bmNsZWFyIGlmIGl0J3MgbXkg YnVnIG9yIG5vdC4pCisKK3N0cnVjdCBCMCB7CisgIHZvaWQgb3BlcmF0b3IoKSh0aGlzIGF1dG8p IHt9Cit9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBTMCA6IFQsIEIwIHsKKyAgdXNp bmcgQjA6Om9wZXJhdG9yKCk7CisgIHVzaW5nIFQ6Om9wZXJhdG9yKCk7Cit9OworCit2b2lkIHRl c3QwKCkKK3sKKyAgYXV0byBzMCA9IFMwe1tdKHRoaXMgYXV0byl7fX07CisgIHZvaWQgKCpwMCko aW50KSA9ICZkZWNsdHlwZShzMCk6Om9wZXJhdG9yKCk7IC8vIHsgZGctZXJyb3Ige2NvbnZlcnRp bmcgb3ZlcmxvYWRlZCBmdW5jdGlvbiAnW15cblxyXSsnIHRvIHR5cGUgJ1teXG5ccl0rJyBpcyBh bWJpZ3VvdXN9IH0KKworICBhdXRvIHMxID0gUzB7W3ggPSA0Ml0odGhpcyBhdXRvKXt9fTsKKyAg dm9pZCAoKnAxKShpbnQpID0gJmRlY2x0eXBlKHMxKTo6b3BlcmF0b3IoKTsgLy8geyBkZy1ib2d1 cyB7Y29udmVydGluZyBvdmVybG9hZGVkIGZ1bmN0aW9uICdbXlxuXHJdKycgdG8gdHlwZSAnW15c blxyXSsnIGlzIGFtYmlndW91c30ge1N1YnN0aXR1dGlvbiBmYWlsdXJlIGZvciBhIGNhcHR1cmVm dWwgbGFtYmRhIHdpdGggYW4gdW5yZWxhdGVkIHhvYmogcGFyYW1ldGVyIHR5cGUgZmFpbGVkIX0g fQorfQorCitzdHJ1Y3QgQjEgeworICB2b2lkIG9wZXJhdG9yKCkodGhpcyBhdXRvJiYpIHt9Cit9 OwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBTMSA6IFQsIEIxIHsKKyAgdXNpbmcgQjE6 Om9wZXJhdG9yKCk7CisgIHVzaW5nIFQ6Om9wZXJhdG9yKCk7Cit9OworCit2b2lkIHRlc3QxKCkK K3sKKyAgYXV0byBzMCA9IFMxe1tdKHRoaXMgYXV0byYmKXt9fTsKKyAgdm9pZCAoKnAwKShpbnQm KSA9ICZkZWNsdHlwZShzMCk6Om9wZXJhdG9yKCk7IC8vIHsgZGctZXJyb3Ige2NvbnZlcnRpbmcg b3ZlcmxvYWRlZCBmdW5jdGlvbiAnW15cblxyXSsnIHRvIHR5cGUgJ1teXG5ccl0rJyBpcyBhbWJp Z3VvdXN9IH0KKworICBhdXRvIHMxID0gUzF7W3ggPSA0Ml0odGhpcyBhdXRvJiYpe319OworICB2 b2lkICgqcDEpKGludCYpID0gJmRlY2x0eXBlKHMxKTo6b3BlcmF0b3IoKTsgLy8geyBkZy1ib2d1 cyB7Y29udmVydGluZyBvdmVybG9hZGVkIGZ1bmN0aW9uICdbXlxuXHJdKycgdG8gdHlwZSAnW15c blxyXSsnIGlzIGFtYmlndW91c30ge1N1YnN0aXR1dGlvbiBmYWlsdXJlIGZvciBhIGNhcHR1cmVm dWwgbGFtYmRhIHdpdGggYW4gdW5yZWxhdGVkIHhvYmogcGFyYW1ldGVyIHR5cGUgZmFpbGVkIX0g fQorfQorCisKK3N0cnVjdCBCMiB7CisgIC8vIG5vdCBhIHRlbXBsYXRlLCBzaG91bGQgYmUgdGFr ZW4gb3ZlciB0aGUgbGFtYmRhJ3MgY2FsbCBvcGVyYXRvcgorICB2b2lkIG9wZXJhdG9yKCkodGhp cyBpbnQmKSB7fQorfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUzIgOiBULCBCMiB7 CisgIHVzaW5nIFQ6Om9wZXJhdG9yKCk7CisgIHVzaW5nIEIyOjpvcGVyYXRvcigpOworfTsKKwor dm9pZCB0ZXN0MigpCit7CisgIGF1dG8gczAgPSBTMntbXSh0aGlzIGF1dG8mJil7fX07CisgIHZv aWQgKCpwMCkoaW50JikgPSAmZGVjbHR5cGUoczApOjpvcGVyYXRvcigpOyAvLyB7IGRnLWJvZ3Vz IHtjb252ZXJ0aW5nIG92ZXJsb2FkZWQgZnVuY3Rpb24gJ1teXG5ccl0rJyB0byB0eXBlICdbXlxu XHJdKycgaXMgYW1iaWd1b3VzfSB9CisKKyAgYXV0byBzMSA9IFMye1t4ID0gNDJdKHRoaXMgYXV0 byYmKXt9fTsKKyAgdm9pZCAoKnAxKShpbnQmKSA9ICZkZWNsdHlwZShzMSk6Om9wZXJhdG9yKCk7 IC8vIHsgZGctYm9ndXMge2NvbnZlcnRpbmcgb3ZlcmxvYWRlZCBmdW5jdGlvbiAnW15cblxyXSsn IHRvIHR5cGUgJ1teXG5ccl0rJyBpcyBhbWJpZ3VvdXN9IH0KK30KKworc3RydWN0IEIzIHsKKyAg Ly8gbXVzdCBiZSBhIHRlbXBsYXRlIHNvIGl0IGlzIG5vdCB0YWtlbiBvdmVyIHRoZSBsYW1iZGEn cyBjYWxsIG9wZXJhdG9yCisgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkPgorICB2b2lkIG9w ZXJhdG9yKCkodGhpcyBpbnQmKSB7fQorfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qg UzMgOiBULCBCMyB7CisgIHVzaW5nIEIzOjpvcGVyYXRvcigpOworICB1c2luZyBUOjpvcGVyYXRv cigpOworfTsKKwordm9pZCB0ZXN0MygpCit7CisgIGF1dG8gczAgPSBTM3tbXSh0aGlzIGF1dG8m Jil7fX07CisgIHZvaWQgKCpwMCkoaW50JikgPSAmZGVjbHR5cGUoczApOjpvcGVyYXRvcigpOyAv LyB7IGRnLWVycm9yIHtjb252ZXJ0aW5nIG92ZXJsb2FkZWQgZnVuY3Rpb24gJ1teXG5ccl0rJyB0 byB0eXBlICdbXlxuXHJdKycgaXMgYW1iaWd1b3VzfSB9CisKKyAgYXV0byBzMSA9IFMze1t4ID0g NDJdKHRoaXMgYXV0byYmKXt9fTsKKyAgdm9pZCAoKnAxKShpbnQmKSA9ICZkZWNsdHlwZShzMSk6 Om9wZXJhdG9yKCk7IC8vIHsgZGctYm9ndXMge2NvbnZlcnRpbmcgb3ZlcmxvYWRlZCBmdW5jdGlv biAnW15cblxyXSsnIHRvIHR5cGUgJ1teXG5ccl0rJyBpcyBhbWJpZ3VvdXN9IHtTdWJzdGl0dXRp b24gZmFpbHVyZSBmb3IgYSBjYXB0dXJlZnVsIGxhbWJkYSB3aXRoIGFuIHVucmVsYXRlZCB4b2Jq IHBhcmFtZXRlciB0eXBlIGZhaWxlZCF9IH0KK30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVg0LkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDQuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNmNlNDJlYmVmYTgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDQuQwpAQCAtMCwwICsxLDIz IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIHJ1biB7IHRhcmdldCBjKysyMyB9IH0KKworLy8g Y2FsbHMgdG8gY2FsbCBvcGVyYXRvciBvZiBhIGxhbWJkYSB3aXRoIGNhcHR1cmVzIHdpdGggYW4g aW1wbGljaXQgb2JqZWN0IGFyZ3VtZW50CisvLyB0aGF0IGRlcml2ZXMgZnJvbSB0aGUgbGFtYmRh IGNsb3N1cmUgb2JqZWN0CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUyA6IFQgewor ICAgIHVzaW5nIFQ6Om9wZXJhdG9yKCk7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorUyhU KSAtPiBTPFQ+OyAKKworaW50IG1haW4oKQoreworICBzdGF0aWMgY29uc3RleHByIGludCBtYWdp YyA9IDQyOworICBpbnQgbiA9IG1hZ2ljOworICBTIHN7W25dKHRoaXMgYXV0byYmKXtyZXR1cm4g bjt9fTsKKyAgaWYgKHMgKCkgIT0gbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworfQor CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFt YmRhWDQwLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRh WDQwLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU2Y2Q0NTY4ZGU1 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWxhbWJkYVg0MC5DCkBAIC0wLDAgKzEsMTggQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8g Y29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gZGlhZ25vc2UgbXV0YXRpb24gb2YgbGFt YmRhIGNhcHR1cmUgd2hlbiBjYWxsZWQgd2l0aCBhIGRlZHVjZWQgYXMgY29uc3QgZXhwbGljaXQg b2JqZWN0IHBhcmFtZXRlcgorCit2b2lkIHRlc3QoKQoreworICBhdXRvIGYwID0gW24gPSA1XSh0 aGlzIGF1dG8peyBuID0gMTA7IH07IC8vIHsgZGctYm9ndXMge2Fzc2lnbm1lbnQgb2YgcmVhZC1v bmx5IHZhcmlhYmxlfSB9CisgIGF1dG8gZjEgPSBbbiA9IDVdKHRoaXMgYXV0byYpeyBuID0gMTA7 IH07ICAvLyB7IGRnLWVycm9yIHthc3NpZ25tZW50IG9mIHJlYWQtb25seSB2YXJpYWJsZX0gfQor ICBhdXRvIGYyID0gW24gPSA1XSh0aGlzIGF1dG8gY29uc3QmKXsgbiA9IDEwOyB9OyAvLyB7IGRn LWVycm9yIHthc3NpZ25tZW50IG9mIHJlYWQtb25seSB2YXJpYWJsZX0gfQorICBhdXRvIGYzID0g W24gPSA1XSh0aGlzIGF1dG8mJil7IG4gPSAxMDsgfTsgIC8vIHsgZGctZXJyb3Ige2Fzc2lnbm1l bnQgb2YgcmVhZC1vbmx5IHZhcmlhYmxlfSB9CisKKyAgc3RhdGljX2Nhc3Q8ZGVjbHR5cGUoZjAp IGNvbnN0Jj4oZjApKCk7CisgIHN0YXRpY19jYXN0PGRlY2x0eXBlKGYxKSBjb25zdCY+KGYxKSgp OworICAvLyBmMiBub3QgbmVlZGVkCisgIHN0YXRpY19jYXN0PGRlY2x0eXBlKGYzKSBjb25zdCY+ KGYzKSgpOworfQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotbGFtYmRhWDUuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1sYW1iZGFYNS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44 OGQ0NWQ5MGRiMQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1sYW1iZGFYNS5DCkBAIC0wLDAgKzEsMjEgQEAKKy8vIFAwODQ3UjcKKy8v IHsgZGctZG8gcnVuIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyBjYWxscyB0byAoY2FwdHVyZWxl c3MpIGxhbWJkYSB3aXRoIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgb2YgdW5yZWxhdGVkIHR5 cGUKKy8vIHdpdGggYW4gYXBwcm9wcmlhdGUgY29udmVydGluZyBjb25zdHJ1Y3RvcgorCitpbmxp bmUgY29uc3RleHByIGludCBtYWdpYyA9IDQyOworCitzdHJ1Y3QgUyB7CisgIGludCBfdjsgIAor ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICBTKFQpIDogX3YobWFnaWMpIHt9Cit9OworCitpbnQg bWFpbigpCit7CisgIGF1dG8gZiA9IFtdKHRoaXMgUyBzZWxmKXsgcmV0dXJuIHNlbGYuX3Y7IH07 CisgIGlmIChmICgpICE9IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKK30KKwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVg2 LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDYuQwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTkxZWRmZTE1NmEKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotbGFt YmRhWDYuQwpAQCAtMCwwICsxLDQ4IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUg eyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIHVucmVsYXRlZCB4b2JqIHBhcmFtZXRlciB0eXBlIGlu IGNhcHR1cmVsZXNzIGxhbWJkYXMgYW5kIGxhbWJkYXMgd2l0aCBjYXB0dXJlcworCisvLyBkZWNs YXJlZCB3aXRoIHVucmVsYXRlZCB0eXBlCisKK3N0cnVjdCBTMHt9OworCit2b2lkIHRlc3QwKCkK K3sKKyAgYXV0byBmMCA9IFtdKHRoaXMgUzApeyByZXR1cm4gNTsgfTsgLy8geyBkZy1ib2d1cyAi YSBsYW1iZGEgd2l0aCBjYXB0dXJlcyBtYXkgbm90IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0IHBh cmFtZXRlciBvZiBhbiB1bnJlbGF0ZWQgdHlwZSIgfQorICBhdXRvIGYxID0gW3ggPSA0Ml0odGhp cyBTMCl7IHJldHVybiA1OyB9OyAvLyB7IGRnLWVycm9yICJhIGxhbWJkYSB3aXRoIGNhcHR1cmVz IG1heSBub3QgaGF2ZSBhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIG9mIGFuIHVucmVsYXRl ZCB0eXBlIiB9Cit9CisKKy8vIGluc3RhbnRpYXRpb24gYnkgY2FsbGluZyB3aXRoIGV4cGxpY2l0 IHRlbXBsYXRlIGFyZ3VtZW50cworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFMxIDog VCB7CisgIHVzaW5nIFQ6Om9wZXJhdG9yKCk7CisgIG9wZXJhdG9yIGludCgpIGNvbnN0IHtyZXR1 cm4ge307fQorfTsKKwordm9pZCB0ZXN0MSgpCit7CisgIGF1dG8gczAgPSBTMXtbXSh0aGlzIGF1 dG8mJiBzZWxmKSB7IHJldHVybiBzZWxmOyB9fTsgLy8geyBkZy1ib2d1cyB7YSBsYW1iZGEgd2l0 aCBjYXB0dXJlcyBtYXkgbm90IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBvZiBh biB1bnJlbGF0ZWQgdHlwZX0gfQorICBzMC5vcGVyYXRvcigpPGludD4oKTsgLy8geyBkZy1ib2d1 cyB7bm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNhbGwgdG99IH0KKworICBhdXRvIHMxID0gUzF7 W3ggPSAwXSh0aGlzIGF1dG8mJiBzZWxmKSB7IHJldHVybiBzZWxmOyB9fTsgLy8geyBkZy1saW5l IHQxX3MxIH0KKyAgczEub3BlcmF0b3IoKTxpbnQ+KCk7IC8vIHsgZGctZXJyb3Ige25vIG1hdGNo aW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRvfSB9Cit9CisvLyB7IGRnLW5vdGUge2NhbmRpZGF0ZTp9 IHt9IHsgdGFyZ2V0ICotKi0qIH0gdDFfczEgfQorLy8geyBkZy1ub3RlIHt0ZW1wbGF0ZSBhcmd1 bWVudCBkZWR1Y3Rpb24vc3Vic3RpdHV0aW9uIGZhaWxlZH0ge30geyB0YXJnZXQgKi0qLSogfSB0 MV9zMSB9CisvLyB7IGRnLWVycm9yIHthIGxhbWJkYSB3aXRoIGNhcHR1cmVzIG1heSBub3QgaGF2 ZSBhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIG9mIGFuIHVucmVsYXRlZCB0eXBlfSB7fSB7 IHRhcmdldCAqLSotKiB9IHQxX3MxIH0KKworLy8gaW5zdGFudGlhdGlvbiBmcm9tIG92ZXJsb2Fk IHJlc29sdXRpb24gd2hlbiB0YWtpbmcgYWRkcmVzcyBvZiBjYWxsIG9wZXJhdG9yCisKK3ZvaWQg dGVzdDIoKQoreworICBhdXRvIGYgPSBbeCA9IDQyXSh0aGlzIGF1dG8mJil7IHJldHVybiB4OyB9 OyAvLyB7IGRnLWxpbmUgdDJfZiB9CisKKyAgaW50ICgqZnAwKShkZWNsdHlwZShmKSYpID0gJmRl Y2x0eXBlKGYpOjpvcGVyYXRvcigpOworICBpbnQgKCpmcDEpKGludCYpID0gJmRlY2x0eXBlKGYp OjpvcGVyYXRvcigpOyAvLyB7IGRnLWVycm9yIHtubyBtYXRjaGVzIGNvbnZlcnRpbmcgZnVuY3Rp b259IH0KK30KKworLy8geyBkZy1lcnJvciAiYSBsYW1iZGEgd2l0aCBjYXB0dXJlcyBtYXkgbm90 IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBvZiBhbiB1bnJlbGF0ZWQgdHlwZSIg e2RlcGVuZHMgb24gUFIqKioqKiAodGJkLCBsb3cgcXVhbGl0eSBjYW5kaWRhdGUgZGlhZ25vc3Rp Y3Mgd2hlbiB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYW4gb3ZlcmxvYWRlZCBmdW5jdGlvbil9IHsg eGZhaWwgKi0qLSogfSB0Ml9mIH0KKy8vIHsgZGctbm90ZSAiY2FuZGlkYXRlIGlzIiAiIiB7IHRh cmdldCAqLSotKiB9IHQyX2YgfQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotbGFtYmRhWDcuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1sYW1iZGFYNy5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5hMDY4OTQxNDEzYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1sYW1iZGFYNy5DCkBAIC0wLDAgKzEsODcgQEAKKy8vIFAw ODQ3UjcKKy8vIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyBsYW1iZGEgY2Fw dHVyZSBtdXRhYmlsaXR5IHdpdGggZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlcgorCit2b2lkIGNh cHR1cmVfYnlfdmFsdWUoKQoreworICBzdGF0aWMgY29uc3RleHByIGludCBtYWdpYyA9IDQyOwor ICBhdXRvIGYwID0gW24gPSAwXSh0aGlzIGF1dG8gc2VsZil7CisgICAgbiArPSBtYWdpYzsKKyAg ICByZXR1cm4gbjsKKyAgfTsKKyAgYXV0byBmMSA9IFtuID0gMF0odGhpcyBhdXRvJiBzZWxmKXsK KyAgICBuICs9IG1hZ2ljOworICAgIHJldHVybiBuOworICB9OworICBhdXRvIGYyID0gW24gPSAw XSh0aGlzIGF1dG8mJiBzZWxmKXsKKyAgICBuICs9IG1hZ2ljOworICAgIHJldHVybiBuOworICB9 OworCisgIC8vIHBhc3NlZCBieSB2YWx1ZSwgc2hvdWxkIHN0aWxsIHJldHVybiBhIHZhbHVlIGVx dWFsIHRvIG1hZ2ljIHJlZ2FyZGxlc3MKKyAgLy8gb2YgaG93IG1hbnkgdGltZXMgaXQgaXMgY2Fs bGVkCisgIGlmIChmMCAoKSAhPSBtYWdpYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlm IChmMCAoKSAhPSBtYWdpYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIC8vIHBhc3NlZCBi eSByZWZlcmVuY2UsIHRoZSByZXR1cm5lZCB2YWx1ZSBzaG91bGQgaW5jcmVhc2UgYnkgbWFnaWMK KyAgLy8gZWFjaCB0aW1lIGl0IGlzIGNhbGxlZAorICBpZiAoZjEgKCkgIT0gbWFnaWMpCisgICAg X19idWlsdGluX2Fib3J0ICgpOworICBpZiAoZjEgKCkgIT0gbWFnaWMgKyBtYWdpYykKKyAgICBf X2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChmMiAoKSAhPSBtYWdpYykKKyAgICBfX2J1aWx0aW5f YWJvcnQgKCk7CisgIGlmIChmMiAoKSAhPSBtYWdpYyArIG1hZ2ljKQorICAgIF9fYnVpbHRpbl9h Ym9ydCAoKTsKK30KKwordm9pZCBjYXB0dXJlX2J5X3JlZigpCit7CisgIHN0YXRpYyBjb25zdGV4 cHIgaW50IG1hZ2ljID0gNDI7CisgIGludCBuMCA9IDA7CisgIGF1dG8gZjAgPSBbJm4wXSh0aGlz IGF1dG8gc2VsZil7CisgICAgbjAgKz0gbWFnaWM7CisgIH07CisgIGludCBuMSA9IDA7CisgIGF1 dG8gZjEgPSBbJm4xXSh0aGlzIGF1dG8mIHNlbGYpeworICAgIG4xICs9IG1hZ2ljOworICB9Owor ICBpbnQgbjIgPSAwOworICBhdXRvIGYyID0gWyZuMl0odGhpcyBhdXRvJiYgc2VsZil7CisgICAg bjIgKz0gbWFnaWM7CisgIH07CisgIGludCBuMyA9IDA7CisgIGF1dG8gZjMgPSBbJm4zXSh0aGlz IGF1dG8gY29uc3QmIHNlbGYpeworICAgIG4zICs9IG1hZ2ljOworICB9OworCisgIC8vIGFsbCBj YWxscyBzaG91bGQgbXV0YXRlIHRoZWlyIGNhcHR1cmUsIHRoZSBjYXB0dXJlIGlzIGJ5IHJlZmVy ZW5jZQorICBpZiAoZjAgKCk7IG4wICE9IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsK KyAgaWYgKGYwICgpOyBuMCAhPSBtYWdpYyArIG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAo KTsKKworICBpZiAoZjEgKCk7IG4xICE9IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsK KyAgaWYgKGYxICgpOyBuMSAhPSBtYWdpYyArIG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAo KTsKKworICBpZiAoZjIgKCk7IG4yICE9IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsK KyAgaWYgKGYyICgpOyBuMiAhPSBtYWdpYyArIG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAo KTsKKworICBpZiAoZjMgKCk7IG4zICE9IG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsK KyAgaWYgKGYzICgpOyBuMyAhPSBtYWdpYyArIG1hZ2ljKQorICAgIF9fYnVpbHRpbl9hYm9ydCAo KTsKK30KKworaW50IG1haW4oKQoreworICBjYXB0dXJlX2J5X3ZhbHVlICgpOworICBjYXB0dXJl X2J5X3JlZiAoKTsKK30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLW9wcy1tZW0tYXJyb3cuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1vcHMtbWVtLWFycm93LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmViODYwNzc4MWJmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tYXJyb3cuQwpAQCAtMCwwICsxLDI4 IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisK Ky8vIHVzZXMgb2YgbWVtYmVyIG9ubHkgb3BlcmF0b3JzIChhcnJvdykKKworc3RydWN0IFMgewor ICBpbnQgX3Y7CisgIFMqIG9wZXJhdG9yLT4odGhpcyBTJiBzZWxmKSB7IHJldHVybiAmc2VsZjsg fQorfTsKKwordm9pZCBub25fZGVwKCkKK3sKKyAgUyBze307CisgICh2b2lkKXMtPl92OworfQor Cit0ZW1wbGF0ZTx0eXBlbmFtZSA9IHZvaWQ+Cit2b2lkIGRlcGVuZGVudCgpCit7CisgIFMgc3t9 OworICAodm9pZClzLT5fdjsKK30KKwordm9pZCBjYWxsKCkKK3sKKyAgZGVwZW5kZW50KCk7Cit9 CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1v cHMtbWVtLWFzc2lnbm1lbnQuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1vcHMtbWVtLWFzc2lnbm1lbnQuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uYmI0M2EwYWY5MTMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1lbS1hc3NpZ25tZW50LkMKQEAgLTAsMCArMSwy NyBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQor CisvLyB1c2VzIG9mIG1lbWJlciBvbmx5IG9wZXJhdG9ycyAoYXNzaWdubWVudCkKKworc3RydWN0 IFMgeworICB2b2lkIG9wZXJhdG9yPSh0aGlzIFMmLCBpbnQpIHt9Cit9OworCit2b2lkIG5vbl9k ZXAoKQoreworICBTIHN7fTsKKyAgcyA9IDA7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lID0gdm9p ZD4KK3ZvaWQgZGVwZW5kZW50KCkKK3sKKyAgUyBze307CisgIHMgPSAwOworfQorCit2b2lkIGNh bGwoKQoreworICBkZXBlbmRlbnQoKTsKK30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tY2FsbC5DIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tY2FsbC5DCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lY2Q2YmRmZDQ0YwotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbWVtLWNhbGwuQwpAQCAt MCwwICsxLDQwIEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysr MjMgfSB9CisKKy8vIHVzZXMgb2YgbWVtYmVyIG9ubHkgb3BlcmF0b3JzIChjYWxsIG9wKQorCisv LyBleGVjdXRpb24gcGF0aHMgZm9yIHN1YnNjcmlwdCB3aXRoIDEgYXJndW1lbnQgYW5kIDAgYW5k IDIrIGFyZ3VtZW50cyBhcmUgZGlmZmVyZW50CisvLyBqdXN0IHRvIGJlIHNhZmUsIGFsc28gdGVz dCAwIGFuZCAyIGFyZ3VtZW50IGNhc2VzIGhlcmUgdG9vCisKK3N0cnVjdCBTIHsKKyAgdm9pZCBv cGVyYXRvcigpKHRoaXMgUyYpIHt9CisgIHZvaWQgb3BlcmF0b3IoKSh0aGlzIFMmLCBpbnQpIHt9 CisgIHZvaWQgb3BlcmF0b3IoKSh0aGlzIFMmLCBpbnQsIGludCkge30KKyAgdGVtcGxhdGU8dHlw ZW5hbWUuLi4gQXJncz4KKyAgdm9pZCBvcGVyYXRvcigpKHRoaXMgUyYsIEFyZ3MuLi4gYXJncykg e30KK307CisKK3ZvaWQgbm9uX2RlcCgpCit7CisgIFMgc3t9OworICBzKCk7CisgIHMoMCk7Cisg IHMoMCwgMCk7CisgIHMoMCwgMCwgMCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lID0gdm9pZD4K K3ZvaWQgZGVwZW5kZW50KCkKK3sKKyAgUyBze307CisgIHMoKTsKKyAgcygwKTsKKyAgcygwLCAw KTsKKyAgcygwLCAwLCAwKTsKK30KKwordm9pZCBjYWxsKCkKK3sKKyAgZGVwZW5kZW50KCk7Cit9 CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1v cHMtbWVtLXN1YnNjcmlwdC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLW9wcy1tZW0tc3Vic2NyaXB0LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjNlYjAwMzA2MmMwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tc3Vic2NyaXB0LkMKQEAgLTAsMCArMSw0MCBA QAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisv LyB1c2VzIG9mIG1lbWJlciBvbmx5IG9wZXJhdG9ycyAoc3Vic2NyaXB0KQorCisvLyBleGVjdXRp b24gcGF0aHMgZm9yIHN1YnNjcmlwdCB3aXRoIDEgYXJndW1lbnQgYW5kIDAgYW5kIDIrIGFyZ3Vt ZW50cyBhcmUgZGlmZmVyZW50CisvLyB0aGVyZWZvcmUgd2Ugc2hvdWxkIGFkZGl0aW9uYWxseSB0 ZXN0IHRoZSAwIGFuZCAyIGFyZ3VtZW50IGNhc2VzIGFzIHdlbGwKKworc3RydWN0IFMgeworICB2 b2lkIG9wZXJhdG9yW10odGhpcyBTJikge30KKyAgdm9pZCBvcGVyYXRvcltdKHRoaXMgUyYsIGlu dCkge30KKyAgdm9pZCBvcGVyYXRvcltdKHRoaXMgUyYsIGludCwgaW50KSB7fQorICB0ZW1wbGF0 ZTx0eXBlbmFtZS4uLiBBcmdzPgorICB2b2lkIG9wZXJhdG9yW10odGhpcyBTJiwgQXJncy4uLiBh cmdzKSB7fQorfTsKKwordm9pZCBub25fZGVwKCkKK3sKKyAgUyBze307CisgIHNbXTsKKyAgc1sw XTsKKyAgc1swLCAwXTsKKyAgc1swLCAwLCAwXTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgPSB2 b2lkPgordm9pZCBkZXBlbmRlbnQoKQoreworICBTIHN7fTsKKyAgc1tdOworICBzWzBdOworICBz WzAsIDBdOworICBzWzAsIDAsIDBdOworfQorCit2b2lkIGNhbGwoKQoreworICBkZXBlbmRlbnQo KTsKK30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLW9wcy1ub24tbWVtLWRlcC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLW9wcy1ub24tbWVtLWRlcC5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5mMzg2MTVlMmI5OAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbm9uLW1lbS1kZXAuQwpAQCAtMCwwICsxLDU4IEBA CisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8v IG9wZXJhdG9ycyB0aGF0IGFyZSBub3QgcmVxdWlyZWQgdG8gYmUgbWVtYmVycworLy8gY2FsbGVk IGluIGEgZGVwZW5kZW50IGNvbnRleHQgKGFzIG5vbiBkZXBlbmRlbnQgZXhwcnMpCisvLyBzZWUg aGVhZGVyCisjaW5jbHVkZSAiZXhwbGljaXQtb2JqLW9wcy1ub24tbWVtLmgiCisKKy8vIG5vb3As IGluZGljYXRlcyB3aGljaCB2ZXJzaW9ucyBhcmUgaWxsLWZvcm1lZAorLy8gSSBjb3VsZCBub3Qg ZmluZCBhIHdheSB0byB0ZXN0IHRoZSBpbnZhbGlkIGNhc2VzCisvLyB3aXRob3V0IHJlcXVpcmVz IGV4cHJlc3Npb25zCisjZGVmaW5lIFRFU1RfSU5WQUxJRChYKQorCit0ZW1wbGF0ZTx0eXBlbmFt ZSBUID0gdm9pZD4KK3ZvaWQgZG9fY2FsbHMoKQoreworICBWYWx1ZSB2YWx1ZXt9OworICBURVNU X09QUyh2YWx1ZSkKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8VmFsdWUmJj4odmFsdWUpKQorICBU RVNUX09QUyhzdGF0aWNfY2FzdDxWYWx1ZSBjb25zdCY+KHZhbHVlKSkKKyAgVEVTVF9PUFMoc3Rh dGljX2Nhc3Q8VmFsdWUgY29uc3QmJj4odmFsdWUpKQorICAKKyAgTFJlZiBsX3JlZnt9OworICBU RVNUX09QUyhsX3JlZikKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PExSZWYmJj4obF9yZWYp KQorICBURVNUX0lOVkFMSUQoc3RhdGljX2Nhc3Q8TFJlZiBjb25zdCY+KGxfcmVmKSkKKyAgVEVT VF9JTlZBTElEKHN0YXRpY19jYXN0PExSZWYgY29uc3QmJj4obF9yZWYpKQorCisgIFJSZWYgcl9y ZWZ7fTsKKyAgVEVTVF9JTlZBTElEKHJfcmVmKQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxSUmVm JiY+KHJfcmVmKSkKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PFJSZWYgY29uc3QmPihyX3Jl ZikpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxSUmVmIGNvbnN0JiY+KHJfcmVmKSkKKwor ICBDb25zdExSZWYgY29uc3RfbF9yZWZ7fTsKKyAgVEVTVF9PUFMoY29uc3RfbF9yZWYpCisgIFRF U1RfT1BTKHN0YXRpY19jYXN0PENvbnN0TFJlZiYmPihjb25zdF9sX3JlZikpCisgIFRFU1RfT1BT KHN0YXRpY19jYXN0PENvbnN0TFJlZiBjb25zdCY+KGNvbnN0X2xfcmVmKSkKKyAgVEVTVF9PUFMo c3RhdGljX2Nhc3Q8Q29uc3RMUmVmIGNvbnN0JiY+KGNvbnN0X2xfcmVmKSkKKworICBDb25zdFJS ZWYgY29uc3Rfcl9yZWZ7fTsKKyAgVEVTVF9JTlZBTElEKGNvbnN0X3JfcmVmKQorICBURVNUX09Q UyhzdGF0aWNfY2FzdDxDb25zdFJSZWYmJj4oY29uc3Rfcl9yZWYpKQorICBURVNUX0lOVkFMSUQo c3RhdGljX2Nhc3Q8Q29uc3RSUmVmIGNvbnN0Jj4oY29uc3Rfcl9yZWYpKQorICBURVNUX09QUyhz dGF0aWNfY2FzdDxDb25zdFJSZWYgY29uc3QmJj4oY29uc3Rfcl9yZWYpKQorCisgIERlZHVjZWQg ZGVkdWNlZHt9OworICBURVNUX09QUyhkZWR1Y2VkKQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxE ZWR1Y2VkJiY+KGRlZHVjZWQpKQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxEZWR1Y2VkIGNvbnN0 Jj4oZGVkdWNlZCkpCisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PERlZHVjZWQgY29uc3QmJj4oZGVk dWNlZCkpCisKKyAgVkFMSURBVEVfUkVUVVJOX1RZUEVTKGRlZHVjZWQsIERlZHVjZWQmKQorICBW QUxJREFURV9SRVRVUk5fVFlQRVMoc3RhdGljX2Nhc3Q8RGVkdWNlZCYmPihkZWR1Y2VkKSwgRGVk dWNlZCYmKQorICBWQUxJREFURV9SRVRVUk5fVFlQRVMoc3RhdGljX2Nhc3Q8RGVkdWNlZCBjb25z dCY+KGRlZHVjZWQpLCBEZWR1Y2VkIGNvbnN0JikKKyAgVkFMSURBVEVfUkVUVVJOX1RZUEVTKHN0 YXRpY19jYXN0PERlZHVjZWQgY29uc3QmJj4oZGVkdWNlZCksIERlZHVjZWQgY29uc3QmJikKK30K KwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9w cy1ub24tbWVtLW5vbi1kZXAuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1vcHMtbm9uLW1lbS1ub24tZGVwLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjYzNGU4NzhjOTNlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1ub24tbWVtLW5vbi1kZXAuQwpAQCAtMCwwICsx LDU3IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9 CisKKy8vIG9wZXJhdG9ycyB0aGF0IGFyZSBub3QgcmVxdWlyZWQgdG8gYmUgbWVtYmVycworLy8g Y2FsbGVkIGluIGEgbm9uLWRlcGVuZGVudCBjb250ZXh0CisvLyBzZWUgaGVhZGVyCisjaW5jbHVk ZSAiZXhwbGljaXQtb2JqLW9wcy1ub24tbWVtLmgiCisKKy8vIG5vb3AsIGluZGljYXRlcyB3aGlj aCB2ZXJzaW9ucyBhcmUgaWxsLWZvcm1lZAorLy8gSSBjb3VsZCBub3QgZmluZCBhIHdheSB0byB0 ZXN0IHRoZSBpbnZhbGlkIGNhc2VzCisvLyB3aXRob3V0IHJlcXVpcmVzIGV4cHJlc3Npb25zCisj ZGVmaW5lIFRFU1RfSU5WQUxJRChYKQorCit2b2lkIGRvX2NhbGxzKCkKK3sKKyAgVmFsdWUgdmFs dWV7fTsKKyAgVEVTVF9PUFModmFsdWUpCisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PFZhbHVlJiY+ KHZhbHVlKSkKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8VmFsdWUgY29uc3QmPih2YWx1ZSkpCisg IFRFU1RfT1BTKHN0YXRpY19jYXN0PFZhbHVlIGNvbnN0JiY+KHZhbHVlKSkKKyAgCisgIExSZWYg bF9yZWZ7fTsKKyAgVEVTVF9PUFMobF9yZWYpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxM UmVmJiY+KGxfcmVmKSkKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PExSZWYgY29uc3QmPihs X3JlZikpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxMUmVmIGNvbnN0JiY+KGxfcmVmKSkK KworICBSUmVmIHJfcmVme307CisgIFRFU1RfSU5WQUxJRChyX3JlZikKKyAgVEVTVF9PUFMoc3Rh dGljX2Nhc3Q8UlJlZiYmPihyX3JlZikpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxSUmVm IGNvbnN0Jj4ocl9yZWYpKQorICBURVNUX0lOVkFMSUQoc3RhdGljX2Nhc3Q8UlJlZiBjb25zdCYm PihyX3JlZikpCisKKyAgQ29uc3RMUmVmIGNvbnN0X2xfcmVme307CisgIFRFU1RfT1BTKGNvbnN0 X2xfcmVmKQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxDb25zdExSZWYmJj4oY29uc3RfbF9yZWYp KQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxDb25zdExSZWYgY29uc3QmPihjb25zdF9sX3JlZikp CisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PENvbnN0TFJlZiBjb25zdCYmPihjb25zdF9sX3JlZikp CisKKyAgQ29uc3RSUmVmIGNvbnN0X3JfcmVme307CisgIFRFU1RfSU5WQUxJRChjb25zdF9yX3Jl ZikKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8Q29uc3RSUmVmJiY+KGNvbnN0X3JfcmVmKSkKKyAg VEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PENvbnN0UlJlZiBjb25zdCY+KGNvbnN0X3JfcmVmKSkK KyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8Q29uc3RSUmVmIGNvbnN0JiY+KGNvbnN0X3JfcmVmKSkK KworICBEZWR1Y2VkIGRlZHVjZWR7fTsKKyAgVEVTVF9PUFMoZGVkdWNlZCkKKyAgVEVTVF9PUFMo c3RhdGljX2Nhc3Q8RGVkdWNlZCYmPihkZWR1Y2VkKSkKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8 RGVkdWNlZCBjb25zdCY+KGRlZHVjZWQpKQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxEZWR1Y2Vk IGNvbnN0JiY+KGRlZHVjZWQpKQorCisgIFZBTElEQVRFX1JFVFVSTl9UWVBFUyhkZWR1Y2VkLCBE ZWR1Y2VkJikKKyAgVkFMSURBVEVfUkVUVVJOX1RZUEVTKHN0YXRpY19jYXN0PERlZHVjZWQmJj4o ZGVkdWNlZCksIERlZHVjZWQmJikKKyAgVkFMSURBVEVfUkVUVVJOX1RZUEVTKHN0YXRpY19jYXN0 PERlZHVjZWQgY29uc3QmPihkZWR1Y2VkKSwgRGVkdWNlZCBjb25zdCYpCisgIFZBTElEQVRFX1JF VFVSTl9UWVBFUyhzdGF0aWNfY2FzdDxEZWR1Y2VkIGNvbnN0JiY+KGRlZHVjZWQpLCBEZWR1Y2Vk IGNvbnN0JiYpCit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1vcHMtbm9uLW1lbS5oIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhw bGljaXQtb2JqLW9wcy1ub24tbWVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmI4OTdhNGJhYzcxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1ub24tbWVtLmgKQEAgLTAsMCArMSwyMTAgQEAKKy8v IHRlc3RzIGZvciBvcHMgdGhhdCBtdXN0IGJlIG1lbWJlciBmdW5jdGlvbnMgYXJlIHNlcGVyYXRl CisKKy8vIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyByZWZlcnMgdG8gdGhlIHR5cGUgb2YgaXQncyBt ZW1iZXIgZnVuY3Rpb25zIHhvYmogcGFyYW1ldGVyCisKKyNkZWZpbmUgTUFLRV9TVFJVQ1RfT1BT KFRZUEUpCQkJCQlcCisgIFRZUEUgb3BlcmF0b3IrPSh0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJl dHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3ItPSh0aGlzIFRZUEUgc2VsZiwgaW50KSB7 IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3IqPSh0aGlzIFRZUEUgc2VsZiwgaW50 KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3IvPSh0aGlzIFRZUEUgc2VsZiwg aW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3IlPSh0aGlzIFRZUEUgc2Vs ZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3ImPSh0aGlzIFRZUEUg c2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3J8PSh0aGlzIFRZ UEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3JePSh0aGlz IFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3I8PD0o dGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQlcCisgIFRZUEUgb3BlcmF0b3I+ Pj0odGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQlcCisgIFRZUEUgb3BlcmF0 b3IrKyh0aGlzIFRZUEUgc2VsZikgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9y LS0odGhpcyBUWVBFIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvcisr KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRv ci0tKHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVy YXRvcisodGhpcyBUWVBFIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRv ci0odGhpcyBUWVBFIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvciso dGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9y LSh0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0 b3IqKHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVy YXRvci8odGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9w ZXJhdG9yJSh0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUg b3BlcmF0b3ImKHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQ RSBvcGVyYXRvcnwodGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBU WVBFIG9wZXJhdG9yXih0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisg IFRZUEUgb3BlcmF0b3I8PCh0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CQlc CisgIFRZUEUgb3BlcmF0b3I+Pih0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9 CQlcCisgIFRZUEUgb3BlcmF0b3IhKHRoaXMgVFlQRSBzZWxmKSB7IHJldHVybiBzZWxmOyB9CQlc CisgIFRZUEUgb3BlcmF0b3ImJih0aGlzIFRZUEUgc2VsZiwgaW50IGNvbnN0JikgeyByZXR1cm4g c2VsZjsgfQlcCisgIFRZUEUgb3BlcmF0b3J8fCh0aGlzIFRZUEUgc2VsZiwgaW50IGNvbnN0Jikg eyByZXR1cm4gc2VsZjsgfQlcCisgIFRZUEUgb3BlcmF0b3I9PSh0aGlzIFRZUEUgc2VsZiwgaW50 KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3IhPSh0aGlzIFRZUEUgc2VsZiwg aW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3I8KHRoaXMgVFlQRSBzZWxm LCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvcj4odGhpcyBUWVBFIHNl bGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yPD0odGhpcyBUWVBF IHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yPj0odGhpcyBU WVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yPD0+KHRo aXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JXAorICBUWVBFIG9wZXJhdG9yKih0 aGlzIFRZUEUgc2VsZikgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yLT4qKHRo aXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JXAorICBUWVBFIG9wZXJhdG9yJih0 aGlzIFRZUEUgc2VsZikgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yLCh0aGlz IFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CisKK3N0cnVjdCBWYWx1ZSB7CisgIE1B S0VfU1RSVUNUX09QUyAoVmFsdWUpCit9OworCitzdHJ1Y3QgTFJlZiB7CisgIE1BS0VfU1RSVUNU X09QUyAoTFJlZiYpCit9OworCitzdHJ1Y3QgUlJlZiB7CisgIE1BS0VfU1RSVUNUX09QUyAoUlJl ZiYmKQorfTsKKworc3RydWN0IENvbnN0TFJlZiB7CisgIE1BS0VfU1RSVUNUX09QUyAoQ29uc3RM UmVmIGNvbnN0JikKK307CisKK3N0cnVjdCBDb25zdFJSZWYgeworICBNQUtFX1NUUlVDVF9PUFMg KENvbnN0UlJlZiBjb25zdCYmKQorfTsKKworI3VuZGVmIE1BS0VfU1RSVUNUX09QUworCitzdHJ1 Y3QgRGVkdWNlZCB7CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvcis9 KHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxm KTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3ItPSh0aGlzIFNl bGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAg dGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yKj0odGhpcyBTZWxmJiYgc2Vs ZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRl PHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvci89KHRoaXMgU2VsZiYmIHNlbGYsIGludCkg eyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFt ZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3IlPSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJu IHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4g U2VsZiYmIG9wZXJhdG9yJj0odGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNf Y2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBv cGVyYXRvcnw9KHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Vs ZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3Je PSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2Vs Zik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yPDw9KHRoaXMg U2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQor ICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3I+Pj0odGhpcyBTZWxmJiYg c2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisKKyAgdGVt cGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yKysodGhpcyBTZWxmJiYgc2VsZikg eyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFt ZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3ItLSh0aGlzIFNlbGYmJiBzZWxmKSB7IHJldHVybiBzdGF0 aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYm JiBvcGVyYXRvcisrKHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8 U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0 b3ItLSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4o c2VsZik7IH0KKworICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3IrKHRo aXMgU2VsZiYmIHNlbGYpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAg dGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yLSh0aGlzIFNlbGYmJiBzZWxm KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVu YW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvcisodGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVy biBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+ IFNlbGYmJiBvcGVyYXRvci0odGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNf Y2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBv cGVyYXRvcioodGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxm JiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvci8o dGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYp OyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvciUodGhpcyBTZWxm JiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRl bXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvciYodGhpcyBTZWxmJiYgc2VsZiwg aW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5 cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvcnwodGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJl dHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNl bGY+IFNlbGYmJiBvcGVyYXRvcl4odGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0 aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYm JiBvcGVyYXRvcjw8KHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8 U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0 b3I+Pih0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4o c2VsZik7IH0KKworICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3IhKHRo aXMgU2VsZiYmIHNlbGYpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAg dGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yJiYodGhpcyBTZWxmJiYgc2Vs ZiwgaW50IGNvbnN0JikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0 ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3J8fCh0aGlzIFNlbGYmJiBzZWxm LCBpbnQgY29uc3QmKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisKKyAg dGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yPT0odGhpcyBTZWxmJiYgc2Vs ZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRl PHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvciE9KHRoaXMgU2VsZiYmIHNlbGYsIGludCkg eyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFt ZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3I8KHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4g c3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBT ZWxmJiYgb3BlcmF0b3I+KHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nh c3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3Bl cmF0b3I8PSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYm Jj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yPj0o dGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYp OyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvcjw9Pih0aGlzIFNl bGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKwor ICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3IqKHRoaXMgU2VsZiYmIHNl bGYpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlw ZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yLT4qKHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyBy ZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBT ZWxmPiBTZWxmJiYgb3BlcmF0b3ImKHRoaXMgU2VsZiYmIHNlbGYpIHsgcmV0dXJuIHN0YXRpY19j YXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9w ZXJhdG9yLCh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYm Jj4oc2VsZik7IH0KK307CisKKyNkZWZpbmUgVEVTVF9PUFMoT1BFUkFORCkgXAorICAoT1BFUkFO RCkgKz0gMDsJXAorICAoT1BFUkFORCkgLT0gMDsJXAorICAoT1BFUkFORCkgKj0gMDsJXAorICAo T1BFUkFORCkgLz0gMDsJXAorICAoT1BFUkFORCkgJT0gMDsJXAorICAoT1BFUkFORCkgJj0gMDsJ XAorICAoT1BFUkFORCkgfD0gMDsJXAorICAoT1BFUkFORCkgXj0gMDsJXAorICAoT1BFUkFORCkg PDw9IDA7CVwKKyAgKE9QRVJBTkQpID4+PSAwOwlcCisJCQlcCisgICsrKE9QRVJBTkQpOwkJXAor ICAtLShPUEVSQU5EKTsJCVwKKyAgKE9QRVJBTkQpKys7CQlcCisgIChPUEVSQU5EKS0tOwkJXAor CQkJXAorICArKE9QRVJBTkQpOwkJXAorICAtKE9QRVJBTkQpOwkJXAorICAoT1BFUkFORCkgKyAw OwlcCisgIChPUEVSQU5EKSAtIDA7CVwKKyAgKE9QRVJBTkQpICogMDsJXAorICAoT1BFUkFORCkg LyAwOwlcCisgIChPUEVSQU5EKSAlIDA7CVwKKyAgKE9QRVJBTkQpICYgMDsJXAorICAoT1BFUkFO RCkgfCAwOwlcCisgIChPUEVSQU5EKSBeIDA7CVwKKyAgKE9QRVJBTkQpIDw8IDA7CVwKKyAgKE9Q RVJBTkQpID4+IDA7CVwKKwkJCVwKKyAgIShPUEVSQU5EKTsJCVwKKyAgKE9QRVJBTkQpICYmIDA7 CVwKKyAgKE9QRVJBTkQpIHx8IDA7CVwKKwkJCVwKKyAgKE9QRVJBTkQpID09IDA7CVwKKyAgKE9Q RVJBTkQpICE9IDA7CVwKKyAgKE9QRVJBTkQpIDwgMDsJXAorICAoT1BFUkFORCkgPiAwOwlcCisg IChPUEVSQU5EKSA8PSAwOwlcCisgIChPUEVSQU5EKSA+PSAwOwlcCisgIChPUEVSQU5EKSA8PT4g MDsJXAorCQkJXAorICAqKE9QRVJBTkQpOwkJXAorICAoT1BFUkFORCkgLT4qIDA7CVwKKyAgJihP UEVSQU5EKTsJCVwKKyAgKE9QRVJBTkQpLCAwOworCisjZGVmaW5lIFZBTElEQVRFX1JFVFVSTl9U WVBFUyhPUEVSQU5ELCBDT1JSRUNUX1RZUEUpIFwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUo Q09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgKz0gMCkpKTsJCVwKKyAgc3RhdGljX2Fz c2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgLT0gMCkpKTsJ CVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BF UkFORCkgKj0gMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBF LCBkZWNsdHlwZSgoT1BFUkFORCkgLz0gMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3Nh bWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgJT0gMCkpKTsJCVwKKyAgc3RhdGlj X2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgJj0gMCkp KTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgo T1BFUkFORCkgfD0gMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9U WVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgXj0gMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lz X3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgPDw9IDApKSk7CQlcCisgIHN0 YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpID4+ PSAwKSkpOwkJXAorCQkJCQkJCQkJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVD VF9UWVBFLCBkZWNsdHlwZSgrKyhPUEVSQU5EKSkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lz X3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgtLShPUEVSQU5EKSkpKTsJCVwKKyAgc3RhdGlj X2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkrKykpKTsJ CVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BF UkFORCktLSkpKTsJCVwKKwkJCQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENP UlJFQ1RfVFlQRSwgZGVjbHR5cGUoKyhPUEVSQU5EKSkpKTsJCQlcCisgIHN0YXRpY19hc3NlcnQo X19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoLShPUEVSQU5EKSkpKTsJCQlcCisgIHN0 YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpICsg MCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlw ZSgoT1BFUkFORCkgLSAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNU X1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSAqIDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19p c19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpIC8gMCkpKTsJCVwKKyAgc3Rh dGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgJSAw KSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBl KChPUEVSQU5EKSAmIDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1Rf VFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpIHwgMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lz X3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgXiAwKSkpOwkJXAorICBzdGF0 aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSA8PCAw KSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBl KChPUEVSQU5EKSA+PiAwKSkpOwkJXAorCQkJCQkJCQkJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lz X3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSghKE9QRVJBTkQpKSkpOwkJCVwKKyAgc3RhdGlj X2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgJiYgMCkp KTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgo T1BFUkFORCkgfHwgMCkpKTsJCVwKKwkJCQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19z YW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpID09IDApKSk7CQlcCisgIHN0YXRp Y19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpICE9IDAp KSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUo KE9QRVJBTkQpIDwgMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9U WVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgPiAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNf c2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSA8PSAwKSkpOwkJXAorICBzdGF0 aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSA+PSAw KSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBl KChPUEVSQU5EKSA8PT4gMCkpKTsJCVwKKwkJCQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQoX19p c19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKihPUEVSQU5EKSkpKTsJCQlcCisgIHN0YXRp Y19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpIC0+KiAw KSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBl KCYoT1BFUkFORCkpKSk7CQkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZ UEUsIGRlY2x0eXBlKChPUEVSQU5EKSwgMCkpKTsKKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1yZXF1aXJlcy1tZW0uQyBiL2djYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtcmVxdWlyZXMtbWVtLkMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQwOGU5MzhjOThkCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1yZXF1 aXJlcy1tZW0uQwpAQCAtMCwwICsxLDE3MSBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21w aWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyB3ZWxsLWZvcm1lZCBhbmQgaWxsLWZvcm1lZCB1 c2VzIG9mIG1lbWJlciBvbmx5IG9wZXJhdG9ycyBpbiBhIHJlcXVpcmVzIGV4cHJlc3Npb24KKwor Ly8gc3VwcHJlc3MgdGhlIHdhcm5pbmcgZm9yIFZhbHVlJ3MgYXJyb3cgb3BlcmF0b3IKKy8vIHsg ZGctb3B0aW9ucyAiLVduby1yZXR1cm4tbG9jYWwtYWRkciIgfQorCisvLyBJdCdzIHZlcnkgaGFy ZCB0byB0ZXN0IGZvciBpbmNvcnJlY3Qgc3VjY2Vzc2VzIHdpdGhvdXQgcmVxdWlyZXMsIGFuZCBi eSBleHRlbnNpb24gYSBub24gZGVwZW5kZW50IHZhcmlhYmxlCisvLyBzbyBmb3IgdGhlIHRpbWUg YmVpbmcsIHRoZXJlIGFyZSBubyBub24gZGVwZW5kZW50IHRlc3RzIGludmFsaWQgY2FsbHMuCisK K3N0cnVjdCBWYWx1ZSB7CisgIGludCBfdjsKKyAgVmFsdWUgb3BlcmF0b3I9KHRoaXMgVmFsdWUg c2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CisgIFZhbHVlIG9wZXJhdG9yKCkodGhpcyBWYWx1 ZSBzZWxmKSB7IHJldHVybiBzZWxmOyB9CisgIFZhbHVlIG9wZXJhdG9yW10odGhpcyBWYWx1ZSBz ZWxmKSB7IHJldHVybiBzZWxmOyB9CisgIFZhbHVlKiBvcGVyYXRvci0+KHRoaXMgVmFsdWUgc2Vs ZikgeyByZXR1cm4gJnNlbGY7IH0KK307CisKK3N0cnVjdCBMUmVmIHsKKyAgaW50IF92OworICBM UmVmJiBvcGVyYXRvcj0odGhpcyBMUmVmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0KKyAg TFJlZiYgb3BlcmF0b3IoKSh0aGlzIExSZWYmIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH0KKyAgTFJl ZiYgb3BlcmF0b3JbXSh0aGlzIExSZWYmIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH0KKyAgTFJlZiog b3BlcmF0b3ItPih0aGlzIExSZWYmIHNlbGYpIHsgcmV0dXJuICZzZWxmOyB9Cit9OworCitzdHJ1 Y3QgUlJlZiB7CisgIGludCBfdjsKKyAgUlJlZiYmIG9wZXJhdG9yPSh0aGlzIFJSZWYmJiBzZWxm LCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJSZWYmJj4oc2VsZik7IH0KKyAgUlJlZiYmIG9w ZXJhdG9yKCkodGhpcyBSUmVmJiYgc2VsZikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UlJlZiYmPihz ZWxmKTsgfQorICBSUmVmJiYgb3BlcmF0b3JbXSh0aGlzIFJSZWYmJiBzZWxmKSB7IHJldHVybiBz dGF0aWNfY2FzdDxSUmVmJiY+KHNlbGYpOyB9CisgIFJSZWYqIG9wZXJhdG9yLT4odGhpcyBSUmVm JiYgc2VsZikgeyByZXR1cm4gJnNlbGY7IH0KK307CisKK3N0cnVjdCBDb25zdExSZWYgeworICBp bnQgX3Y7CisgIENvbnN0TFJlZiBjb25zdCYgb3BlcmF0b3I9KHRoaXMgQ29uc3RMUmVmIGNvbnN0 JiBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0KKyAgQ29uc3RMUmVmIGNvbnN0JiBvcGVyYXRv cigpKHRoaXMgQ29uc3RMUmVmIGNvbnN0JiBzZWxmKSB7IHJldHVybiBzZWxmOyB9CisgIENvbnN0 TFJlZiBjb25zdCYgb3BlcmF0b3JbXSh0aGlzIENvbnN0TFJlZiBjb25zdCYgc2VsZikgeyByZXR1 cm4gc2VsZjsgfQorICBDb25zdExSZWYgY29uc3QqIG9wZXJhdG9yLT4odGhpcyBDb25zdExSZWYg Y29uc3QmIHNlbGYpIHsgcmV0dXJuICZzZWxmOyB9Cit9OworCitzdHJ1Y3QgQ29uc3RSUmVmIHsK KyAgaW50IF92OworICBDb25zdFJSZWYgY29uc3QmJiBvcGVyYXRvcj0odGhpcyBDb25zdFJSZWYg Y29uc3QmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0UlJlZiBjb25zdCYm PihzZWxmKTsgfQorICBDb25zdFJSZWYgY29uc3QmJiBvcGVyYXRvcigpKHRoaXMgQ29uc3RSUmVm IGNvbnN0JiYgc2VsZikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RSUmVmIGNvbnN0JiY+KHNl bGYpOyB9CisgIENvbnN0UlJlZiBjb25zdCYmIG9wZXJhdG9yW10odGhpcyBDb25zdFJSZWYgY29u c3QmJiBzZWxmKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdFJSZWYgY29uc3QmJj4oc2VsZik7 IH0KKyAgQ29uc3RSUmVmIGNvbnN0KiBvcGVyYXRvci0+KHRoaXMgQ29uc3RSUmVmIGNvbnN0JiYg c2VsZikgeyByZXR1cm4gJnNlbGY7IH0KK307CisKKy8vIG5lZWRlZCB0byBpbXBsZW1lbnQgZGVk dWNlZCBvcGVyYXRvci0+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVtb3ZlX3JlZiB7 IHVzaW5nIHR5cGUgPSBUOyB9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IHJlbW92ZV9y ZWY8VCY+IHsgdXNpbmcgdHlwZSA9IFQ7IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg cmVtb3ZlX3JlZjxUJiY+IHsgdXNpbmcgdHlwZSA9IFQ7IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU PiB1c2luZyByZW1vdmVfcmVmX3QgPSB0eXBlbmFtZSByZW1vdmVfcmVmPFQ+Ojp0eXBlOworCitz dHJ1Y3QgRGVkdWNlZCB7CisgIGludCBfdjsKKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4KKyAg U2VsZiYmIG9wZXJhdG9yPSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19j YXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4KKyAgU2VsZiYm IG9wZXJhdG9yKCkodGhpcyBTZWxmJiYgc2VsZikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYm PihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPgorICBTZWxmJiYgb3BlcmF0b3Jb XSh0aGlzIFNlbGYmJiBzZWxmKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9 CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+CisgIHJlbW92ZV9yZWZfdDxTZWxmPiogb3BlcmF0 b3ItPih0aGlzIFNlbGYmJiBzZWxmKSB7IHJldHVybiAmc2VsZjsgfQorfTsKKworI2RlZmluZSBU RVNUX0lOVkFMSUQoT1BFUkFORCkgXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJB TkQpID0gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yID0gd2l0aCAi ICNPUEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpKCk7IH0s ICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAoKSB3aXRoICIgI09QRVJBTkQp OwlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORClbXTsgfSwgIlVuZXhwZWN0 ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIFtdIHdpdGggIiAjT1BFUkFORCk7CVwKKyAgc3Rh dGljX2Fzc2VydCghcmVxdWlyZXN7IChPUEVSQU5EKS0+X3Y7IH0sICJVbmV4cGVjdGVkIHN1Y2Nl c3MgY2FsbGluZyBvcGVyYXRvciAtPiB3aXRoICIgI09QRVJBTkQpOworCisjZGVmaW5lIFRFU1Rf VkFMSUQoT1BFUkFORCkgXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkgPSAw OyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgPSB3aXRoICIgI09QRVJB TkQpOwlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSgpOyB9LCAiVW5leHBl Y3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgKCkgd2l0aCAiICNPUEVSQU5EKTsJXAorICBz dGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORClbXTsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVy ZSBjYWxsaW5nIG9wZXJhdG9yIFtdIHdpdGggIiAjT1BFUkFORCk7CVwKKyAgc3RhdGljX2Fzc2Vy dChyZXF1aXJlc3sgKE9QRVJBTkQpLT5fdjsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5n IG9wZXJhdG9yIC0+IHdpdGggIiAjT1BFUkFORCk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5 cGVuYW1lIFU+Citjb25jZXB0IHNhbWVfYXMgPSBfX2lzX3NhbWUoVCwgVSk7CisKKyNkZWZpbmUg VEVTVF9WQUxJRF9XSVRIX1JFVFVSTl9UWVBFUyhPUEVSQU5ELCBDT1JSRUNUX1RZUEUpIFwKKyAg c3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSA9IDB9IC0+IHNhbWVfYXM8Q09SUkVD VF9UWVBFPjsgfSwiVW5leHBlY3RlZCBmYWlsdXJlIHdpdGggcmV0dXJuIHR5cGUgY2hlY2sgY2Fs bGluZyBvcGVyYXRvciA9IHdpdGggIiAjT1BFUkFORCAiIC0+IGV4cGVjdGVkIHJldHVybiB0eXBl OiAiICNDT1JSRUNUX1RZUEUpOwlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFO RCkoKX0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9LCAgIlVuZXhwZWN0ZWQgZmFpbHVyZSB3 aXRoIHJldHVybiB0eXBlIGNoZWNrIGNhbGxpbmcgb3BlcmF0b3IgKCkgd2l0aCAiICNPUEVSQU5E ICIgLT4gZXhwZWN0ZWQgcmV0dXJuIHR5cGU6ICIgI0NPUlJFQ1RfVFlQRSk7CVwKKyAgc3RhdGlj X2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKVtdfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47 IH0sICAiVW5leHBlY3RlZCBmYWlsdXJlIHdpdGggcmV0dXJuIHR5cGUgY2hlY2sgY2FsbGluZyBv cGVyYXRvciBbXSB3aXRoICIgI09QRVJBTkQgIiAtPiBleHBlY3RlZCByZXR1cm4gdHlwZTogIiAj Q09SUkVDVF9UWVBFKTsKKyAgCisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcFZhbHVlID0gVmFsdWU+ Cit2b2lkIHRlc3RfdmFsdWUoKQoreworICBEZXBWYWx1ZSB2YWx1ZXt9OworICBURVNUX1ZBTElE KHZhbHVlKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcFZhbHVlJiY+KHZhbHVlKSkKKyAg VEVTVF9WQUxJRChzdGF0aWNfY2FzdDxEZXBWYWx1ZSBjb25zdCY+KHZhbHVlKSkKKyAgVEVTVF9W QUxJRChzdGF0aWNfY2FzdDxEZXBWYWx1ZSBjb25zdCYmPih2YWx1ZSkpCit9CisKK3RlbXBsYXRl PHR5cGVuYW1lIERlcExSZWYgPSBMUmVmPgordm9pZCB0ZXN0X2xfcmVmKCkKK3sKKyAgRGVwTFJl ZiBsX3JlZnt9OworICBURVNUX1ZBTElEKGxfcmVmKQorICBURVNUX0lOVkFMSUQoc3RhdGljX2Nh c3Q8RGVwTFJlZiYmPihsX3JlZikpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxEZXBMUmVm IGNvbnN0Jj4obF9yZWYpKQorICBURVNUX0lOVkFMSUQoc3RhdGljX2Nhc3Q8RGVwTFJlZiBjb25z dCYmPihsX3JlZikpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcFJSZWYgPSBSUmVmPgordm9p ZCB0ZXN0X3JfcmVmKCkKK3sKKyAgRGVwUlJlZiByX3JlZnt9OworICBURVNUX0lOVkFMSUQocl9y ZWYpCisgIFRFU1RfVkFMSUQoc3RhdGljX2Nhc3Q8RGVwUlJlZiYmPihyX3JlZikpCisgIFRFU1Rf SU5WQUxJRChzdGF0aWNfY2FzdDxEZXBSUmVmIGNvbnN0Jj4ocl9yZWYpKQorICBURVNUX0lOVkFM SUQoc3RhdGljX2Nhc3Q8RGVwUlJlZiBjb25zdCYmPihyX3JlZikpCit9CisKK3RlbXBsYXRlPHR5 cGVuYW1lIERlcENvbnN0TFJlZiA9IENvbnN0TFJlZj4KK3ZvaWQgdGVzdF9jb25zdF9sX3JlZigp Cit7CisgIERlcENvbnN0TFJlZiBjb25zdF9sX3JlZnt9OworICBURVNUX1ZBTElEKGNvbnN0X2xf cmVmKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcENvbnN0TFJlZiYmPihjb25zdF9sX3Jl ZikpCisgIFRFU1RfVkFMSUQoc3RhdGljX2Nhc3Q8RGVwQ29uc3RMUmVmIGNvbnN0Jj4oY29uc3Rf bF9yZWYpKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcENvbnN0TFJlZiBjb25zdCYmPihj b25zdF9sX3JlZikpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcENvbnN0UlJlZiA9IENvbnN0 UlJlZj4KK3ZvaWQgdGVzdF9jb25zdF9yX3JlZigpCit7CisgIERlcENvbnN0UlJlZiBjb25zdF9y X3JlZnt9OworICBURVNUX0lOVkFMSUQoY29uc3Rfcl9yZWYpCisgIFRFU1RfVkFMSUQoc3RhdGlj X2Nhc3Q8RGVwQ29uc3RSUmVmJiY+KGNvbnN0X3JfcmVmKSkKKyAgVEVTVF9JTlZBTElEKHN0YXRp Y19jYXN0PERlcENvbnN0UlJlZiBjb25zdCY+KGNvbnN0X3JfcmVmKSkKKyAgVEVTVF9WQUxJRChz dGF0aWNfY2FzdDxEZXBDb25zdFJSZWYgY29uc3QmJj4oY29uc3Rfcl9yZWYpKQorfQorCit0ZW1w bGF0ZTx0eXBlbmFtZSBEZXBEZWR1Y2VkID0gRGVkdWNlZD4KK3ZvaWQgdGVzdF9kZWR1Y2VkKCkK K3sKKyAgRGVwRGVkdWNlZCBkZWR1Y2Vke307CisKKyAgVEVTVF9WQUxJRChkZWR1Y2VkKQorICBU RVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcERlZHVjZWQmJj4oZGVkdWNlZCkpCisgIFRFU1RfVkFM SUQoc3RhdGljX2Nhc3Q8RGVwRGVkdWNlZCBjb25zdCY+KGRlZHVjZWQpKQorICBURVNUX1ZBTElE KHN0YXRpY19jYXN0PERlcERlZHVjZWQgY29uc3QmJj4oZGVkdWNlZCkpCisKKyAgVEVTVF9WQUxJ RF9XSVRIX1JFVFVSTl9UWVBFUyhkZWR1Y2VkLCBEZXBEZWR1Y2VkJikKKyAgVEVTVF9WQUxJRF9X SVRIX1JFVFVSTl9UWVBFUyhzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkJiY+KGRlZHVjZWQpLCBEZXBE ZWR1Y2VkJiYpCisgIFRFU1RfVkFMSURfV0lUSF9SRVRVUk5fVFlQRVMoc3RhdGljX2Nhc3Q8RGVw RGVkdWNlZCBjb25zdCY+KGRlZHVjZWQpLCBEZXBEZWR1Y2VkIGNvbnN0JikKKyAgVEVTVF9WQUxJ RF9XSVRIX1JFVFVSTl9UWVBFUyhzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkIGNvbnN0JiY+KGRlZHVj ZWQpLCBEZXBEZWR1Y2VkIGNvbnN0JiYpCisgIC8vIGFycm93IG9wZXJhdG9yIG5lZWRzIHRvIGJl IHNlcGVyYXRlIHRvIGNoZWNrIHRoZSB0eXBlIG9mIF92CisgIHN0YXRpY19hc3NlcnQocmVxdWly ZXN7IHsoZGVkdWNlZC0+X3YpfSAtPiBzYW1lX2FzPGludCY+OyB9LCAiVW5leHBlY3RlZCBmYWls dXJlIHdpdGggcmV0dXJuIHR5cGUgY2hlY2sgY2FsbGluZyBvcGVyYXRvciAtPiB3aXRoIGRlZHVj ZWQtPl92Iik7CisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoc3RhdGljX2Nhc3Q8RGVwRGVk dWNlZCYmPihkZWR1Y2VkKS0+X3YpfSAtPiBzYW1lX2FzPGludCY+OyB9LCAiVW5leHBlY3RlZCBm YWlsdXJlIHdpdGggcmV0dXJuIHR5cGUgY2hlY2sgY2FsbGluZyBvcGVyYXRvciAtPiB3aXRoIHN0 YXRpY19jYXN0PERlcERlZHVjZWQmJj4oZGVkdWNlZCktPl92Iik7CisgIHN0YXRpY19hc3NlcnQo cmVxdWlyZXN7IHsoc3RhdGljX2Nhc3Q8RGVwRGVkdWNlZCBjb25zdCY+KGRlZHVjZWQpLT5fdil9 IC0+IHNhbWVfYXM8aW50IGNvbnN0Jj47IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgd2l0aCByZXR1 cm4gdHlwZSBjaGVjayBjYWxsaW5nIG9wZXJhdG9yIC0+IHdpdGggc3RhdGljX2Nhc3Q8RGVwRGVk dWNlZCBjb25zdCY+KGRlZHVjZWQpLT5fdiIpOworICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7 KHN0YXRpY19jYXN0PERlcERlZHVjZWQgY29uc3QmJj4oZGVkdWNlZCktPl92KX0gLT4gc2FtZV9h czxpbnQgY29uc3QmPjsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSB3aXRoIHJldHVybiB0eXBlIGNo ZWNrIGNhbGxpbmcgb3BlcmF0b3IgLT4gd2l0aCBzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkIGNvbnN0 JiY+KGRlZHVjZWQpLT5fdiIpOworfQorCit2b2lkIHRlc3QoKQoreworICB0ZXN0X3ZhbHVlKCk7 CisgIHRlc3RfbF9yZWYoKTsKKyAgdGVzdF9yX3JlZigpOworICB0ZXN0X2NvbnN0X2xfcmVmKCk7 CisgIHRlc3RfY29uc3Rfcl9yZWYoKTsKKyAgdGVzdF9kZWR1Y2VkKCk7Cit9CisKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtcmVxdWlyZXMt bm9uLW1lbS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1y ZXF1aXJlcy1ub24tbWVtLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu Ljg2NWIxZjU3ZDRhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqLW9wcy1yZXF1aXJlcy1ub24tbWVtLkMKQEAgLTAsMCArMSwyMzcgQEAK Ky8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8g d2VsbC1mb3JtZWQgYW5kIGlsbC1mb3JtZWQgdXNlcyBvZiBub24tbWVtYmVyIGNhcGFibGUgb3Bl cmF0b3JzIGluIGEgcmVxdWlyZXMgZXhwcmVzc2lvbgorCisjaW5jbHVkZSAiZXhwbGljaXQtb2Jq LW9wcy1ub24tbWVtLmgiCisKKy8vIHdlIG9ubHkgbmVlZCB0aGUgc3RydWN0cyBmcm9tIHRoZSBo ZWFkZXIKKyN1bmRlZiBURVNUX09QUworI3VuZGVmIFZBTElEQVRFX1JFVFVSTl9UWVBFUworCisv LyBJdCdzIHZlcnkgaGFyZCB0byB0ZXN0IGZvciBpbmNvcnJlY3Qgc3VjY2Vzc2VzIHdpdGhvdXQg cmVxdWlyZXMsIGFuZCBieSBleHRlbnNpb24gYSBub24gZGVwZW5kZW50IHZhcmlhYmxlCisvLyBz byBmb3IgdGhlIHRpbWUgYmVpbmcsIHRoZXJlIGFyZSBubyBub24gZGVwZW5kZW50IHRlc3RzIGlu dmFsaWQgY2FsbHMuCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citjb25jZXB0 IHNhbWVfYXMgPSBfX2lzX3NhbWUoVCwgVSk7CisKKyNkZWZpbmUgVEVTVF9JTlZBTElEKE9QRVJB TkQsIENPUlJFQ1RfVFlQRSkgXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQp ICs9IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciArPSB3aXRoICIg I09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpIC09IDA7 IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAtPSB3aXRoICIgI09QRVJB TkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpICo9IDA7IH0sICJV bmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAqPSB3aXRoICIgI09QRVJBTkQpOwkJ XAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpIC89IDA7IH0sICJVbmV4cGVj dGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAvPSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBz dGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpICU9IDA7IH0sICJVbmV4cGVjdGVkIHN1 Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAlPSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNf YXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpICY9IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3Mg Y2FsbGluZyBvcGVyYXRvciAmPSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0 KCFyZXF1aXJlc3sgKE9QRVJBTkQpIHw9IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGlu ZyBvcGVyYXRvciB8PSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1 aXJlc3sgKE9QRVJBTkQpIF49IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVy YXRvciBePSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sg KE9QRVJBTkQpIDw8PSAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3Ig PDw9IHdpdGggIiAjT1BFUkFORCk7CVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7IChPUEVS QU5EKSA+Pj0gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yID4+PSB3 aXRoICIgI09QRVJBTkQpOwlcCisJCQkJCQkJCQkJCQkJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVx dWlyZXN7ICsrKE9QRVJBTkQpOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0 b3IgcHJlKysgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7 IC0tKE9QRVJBTkQpOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgcHJl LS0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7IChPUEVS QU5EKSsrOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgcG9zdCsrIHdp dGggIiAjT1BFUkFORCk7CVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7IChPUEVSQU5EKS0t OyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgcG9zdC0tIHdpdGggIiAj T1BFUkFORCk7CVwKKwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sg KyhPUEVSQU5EKTsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIHVuYXJ5 KyB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgLShPUEVS QU5EKTsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIHVuYXJ5LSB3aXRo ICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpICsg MDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIGJpbmFyeSsgd2l0aCAi ICNPUEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpIC0gMDsg fSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIGJpbmFyeS0gd2l0aCAiICNP UEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpICogMDsgfSwg IlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIGJpbmFyeSogd2l0aCAiICNPUEVS QU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpIC8gMDsgfSwgIlVu ZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIC8gd2l0aCAiICNPUEVSQU5EKTsJCVwK KyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7IChPUEVSQU5EKSAlIDA7IH0sICJVbmV4cGVjdGVk IHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAlIHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRp Y19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgJiAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNz IGNhbGxpbmcgb3BlcmF0b3IgYmluYXJ5JiB3aXRoICIgI09QRVJBTkQpOwlcCisgIHN0YXRpY19h c3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgfCAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNh bGxpbmcgb3BlcmF0b3IgfCB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFy ZXF1aXJlc3sgKE9QRVJBTkQpIF4gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9w ZXJhdG9yIF4gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7 IChPUEVSQU5EKSA8PCAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3Ig PDwgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7IChPUEVS QU5EKSA+PiAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgPj4gd2l0 aCAiICNPUEVSQU5EKTsJCVwKKwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1 aXJlc3sgIShPUEVSQU5EKTsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9y ICEgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7IChPUEVS QU5EKSAmJiAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgJiYgd2l0 aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7IChPUEVSQU5EKSB8 fCAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgfHwgd2l0aCAiICNP UEVSQU5EKTsJCVwKKwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sg KE9QRVJBTkQpID09IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciA9 PSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJB TkQpICE9IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAhPSB3aXRo ICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpIDwg MDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIDwgd2l0aCAiICNPUEVS QU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7IChPUEVSQU5EKSA+IDA7IH0sICJV bmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciA+IHdpdGggIiAjT1BFUkFORCk7CQlc CisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgPD0gMDsgfSwgIlVuZXhwZWN0 ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIDw9IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0 YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgPj0gMDsgfSwgIlVuZXhwZWN0ZWQgc3Vj Y2VzcyBjYWxsaW5nIG9wZXJhdG9yID49IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19h c3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgPD0+IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3Mg Y2FsbGluZyBvcGVyYXRvciA8PT4gd2l0aCAiICNPUEVSQU5EKTsJXAorCQkJCQkJCQkJCQkJCQlc CisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAqKE9QRVJBTkQpOyB9LCAiVW5leHBlY3RlZCBz dWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgdW5hcnkqIHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0 YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgLT4qIDA7IH0sICJVbmV4cGVjdGVkIHN1 Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAtPiogd2l0aCAiICNPUEVSQU5EKTsJXAorICAvKiBXZSBu ZWVkIHRvIGNoZWNrIHRoZSByZXR1cm4gdHlwZSB0byBjb25maXJtIHRoZSBidWlsdC1pbiBvcGVy YXRvciB3YXMgbm90IHNlbGVjdGVkLiAgKi8JCQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVz eyB7JihPUEVSQU5EKX0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9LAkJCQkJCVwKKwkJIlVu ZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIHVuYXJ5JiB3aXRoICIgI09QRVJBTkQp OwkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgeyhPUEVSQU5EKSwgMH0gLT4gc2Ft ZV9hczxDT1JSRUNUX1RZUEU+OyB9LAkJCQkJCVwKKwkJIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxs aW5nIG9wZXJhdG9yICwgd2l0aCAiICNPUEVSQU5EKTsKKworI2RlZmluZSBURVNUX1ZBTElEKE9Q RVJBTkQsIENPUlJFQ1RfVFlQRSkgXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFO RCkgKz0gMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yICs9IHdpdGgg IiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSAtPSAw OyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgLT0gd2l0aCAiICNPUEVS QU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpICo9IDA7IH0sICJV bmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciAqPSB3aXRoICIgI09QRVJBTkQpOwkJ XAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkgLz0gMDsgfSwgIlVuZXhwZWN0 ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIC89IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0 YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSAlPSAwOyB9LCAiVW5leHBlY3RlZCBmYWls dXJlIGNhbGxpbmcgb3BlcmF0b3IgJT0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fz c2VydChyZXF1aXJlc3sgKE9QRVJBTkQpICY9IDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2Fs bGluZyBvcGVyYXRvciAmPSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJl cXVpcmVzeyAoT1BFUkFORCkgfD0gMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9w ZXJhdG9yIHw9IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7 IChPUEVSQU5EKSBePSAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3Ig Xj0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJB TkQpIDw8PSAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgPDw9IHdp dGggIiAjT1BFUkFORCk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpID4+ PSAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgPj49IHdpdGggIiAj T1BFUkFORCk7CVwKKwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAr KyhPUEVSQU5EKTsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIHByZSsr IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IC0tKE9QRVJB TkQpOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgcHJlLS0gd2l0aCAi ICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpKys7IH0s ICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciBwb3N0Kysgd2l0aCAiICNPUEVS QU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpLS07IH0sICJVbmV4 cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciBwb3N0LS0gd2l0aCAiICNPUEVSQU5EKTsJ CVwKKwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyArKE9QRVJBTkQp OyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgdW5hcnkrIHdpdGggIiAj T1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IC0oT1BFUkFORCk7IH0sICJV bmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciB1bmFyeS0gd2l0aCAiICNPUEVSQU5E KTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpICsgMDsgfSwgIlVuZXhw ZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIGJpbmFyeSsgd2l0aCAiICNPUEVSQU5EKTsJ XAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkgLSAwOyB9LCAiVW5leHBlY3Rl ZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgYmluYXJ5LSB3aXRoICIgI09QRVJBTkQpOwlcCisg IHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSAqIDA7IH0sICJVbmV4cGVjdGVkIGZh aWx1cmUgY2FsbGluZyBvcGVyYXRvciBiaW5hcnkqIHdpdGggIiAjT1BFUkFORCk7CVwKKyAgc3Rh dGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpIC8gMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVy ZSBjYWxsaW5nIG9wZXJhdG9yIC8gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2Vy dChyZXF1aXJlc3sgKE9QRVJBTkQpICUgMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5n IG9wZXJhdG9yICUgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJl c3sgKE9QRVJBTkQpICYgMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9y IGJpbmFyeSYgd2l0aCAiICNPUEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAo T1BFUkFORCkgfCAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgfCB3 aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkg XiAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgXiB3aXRoICIgI09Q RVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkgPDwgMDsgfSwg IlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIDw8IHdpdGggIiAjT1BFUkFORCk7 CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSA+PiAwOyB9LCAiVW5leHBl Y3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgPj4gd2l0aCAiICNPUEVSQU5EKTsJCVwKKwkJ CQkJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAhKE9QRVJBTkQpOyB9LCAi VW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgISB3aXRoICIgI09QRVJBTkQpOwkJ XAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkgJiYgMDsgfSwgIlVuZXhwZWN0 ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yICYmIHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0 YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSB8fCAwOyB9LCAiVW5leHBlY3RlZCBmYWls dXJlIGNhbGxpbmcgb3BlcmF0b3IgfHwgd2l0aCAiICNPUEVSQU5EKTsJCVwKKwkJCQkJCQkJCQkJ CQkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkgPT0gMDsgfSwgIlVuZXhw ZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yID09IHdpdGggIiAjT1BFUkFORCk7CQlcCisg IHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSAhPSAwOyB9LCAiVW5leHBlY3RlZCBm YWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgIT0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGlj X2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpIDwgMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBj YWxsaW5nIG9wZXJhdG9yIDwgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChy ZXF1aXJlc3sgKE9QRVJBTkQpID4gMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9w ZXJhdG9yID4gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sg KE9QRVJBTkQpIDw9IDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciA8 PSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFO RCkgPj0gMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yID49IHdpdGgg IiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSA8PT4g MDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIDw9PiB3aXRoICIgI09Q RVJBTkQpOwlcCisJCQkJCQkJCQkJCQkJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKihP UEVSQU5EKTsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIHVuYXJ5KiB3 aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkg LT4qIDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciAtPiogd2l0aCAi ICNPUEVSQU5EKTsJXAorICAvKiBXZSBuZWVkIHRvIGNoZWNrIHRoZSByZXR1cm4gdHlwZSB0byBj b25maXJtIHdlIHNlbGVjdGVkIG91ciBvdmVybG9hZCwgbm90IHRoZSBidWlsdC1pbiBvcGVyYXRv ci4gICovCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyYoT1BFUkFORCl9IC0+IHNhbWVf YXM8Q09SUkVDVF9UWVBFPjsgfSwJCQkJCQlcCisJCSJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGlu ZyBvcGVyYXRvciB1bmFyeSYgd2l0aCAiICNPUEVSQU5EKTsJCQkJCVwKKyAgc3RhdGljX2Fzc2Vy dChyZXF1aXJlc3sgeyhPUEVSQU5EKSwgMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9LAkJ CQkJCVwKKwkJIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yICwgd2l0aCAiICNP UEVSQU5EKTsKKworLy8gUmV0dXJuIHR5cGVzIG5lZWQgdG8gYmUgdGVzdGVkIGZvciB0aGUgZGVk dWNlZCBjYXNlCisKKyNkZWZpbmUgVEVTVF9WQUxJRF9XSVRIX1JFVFVSTl9UWVBFUyhPUEVSQU5E LCBDT1JSRUNUX1RZUEUpIFwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSAr PSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisgIHN0YXRpY19hc3NlcnQocmVx dWlyZXN7IHsoT1BFUkFORCkgLT0gMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJXAor ICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpICo9IDB9IC0+IHNhbWVfYXM8Q09S UkVDVF9UWVBFPjsgfSk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSAv PSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisgIHN0YXRpY19hc3NlcnQocmVx dWlyZXN7IHsoT1BFUkFORCkgJT0gMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJXAor ICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpICY9IDB9IC0+IHNhbWVfYXM8Q09S UkVDVF9UWVBFPjsgfSk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSB8 PSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisgIHN0YXRpY19hc3NlcnQocmVx dWlyZXN7IHsoT1BFUkFORCkgXj0gMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJXAor ICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpIDw8PSAwfSAtPiBzYW1lX2FzPENP UlJFQ1RfVFlQRT47IH0pOwlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkg Pj49IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwKKwkJCQkJCQkJCQlcCisgIHN0 YXRpY19hc3NlcnQocmVxdWlyZXN7IHsrKyhPUEVSQU5EKX0gLT4gc2FtZV9hczxDT1JSRUNUX1RZ UEU+OyB9KTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgey0tKE9QRVJBTkQpfSAtPiBz YW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7 KE9QRVJBTkQpKyt9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19h c3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCktLX0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9 KTsJCVwKKwkJCQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsrKE9QRVJBTkQp fSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVp cmVzeyB7LShPUEVSQU5EKX0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJCVwKKyAgc3Rh dGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSArIDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9U WVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgLSAwfSAt PiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVz eyB7KE9QRVJBTkQpICogMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJCVwKKyAgc3Rh dGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSAvIDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9U WVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgJSAwfSAt PiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVz eyB7KE9QRVJBTkQpICYgMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJCVwKKyAgc3Rh dGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSB8IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9U WVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgXiAwfSAt PiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVz eyB7KE9QRVJBTkQpIDw8IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwKKyAgc3Rh dGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSA+PiAwfSAtPiBzYW1lX2FzPENPUlJFQ1Rf VFlQRT47IH0pOwlcCisJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7IShP UEVSQU5EKX0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJCVwKKyAgc3RhdGljX2Fzc2Vy dChyZXF1aXJlc3sgeyhPUEVSQU5EKSAmJiAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0p OwlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgfHwgMH0gLT4gc2FtZV9h czxDT1JSRUNUX1RZUEU+OyB9KTsJXAorCQkJCQkJCQkJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1 aXJlc3sgeyhPUEVSQU5EKSA9PSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisg IHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgIT0gMH0gLT4gc2FtZV9hczxDT1JS RUNUX1RZUEU+OyB9KTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpIDwg MH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1 aXJlc3sgeyhPUEVSQU5EKSA+IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CQlcCisg IHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgPD0gMH0gLT4gc2FtZV9hczxDT1JS RUNUX1RZUEU+OyB9KTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpID49 IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1 aXJlc3sgeyhPUEVSQU5EKSA8PT4gMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJXAor CQkJCQkJCQkJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyooT1BFUkFORCl9IC0+IHNh bWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHso T1BFUkFORCkgLT4qIDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwKKyAgc3RhdGlj X2Fzc2VydChyZXF1aXJlc3sgeyYoT1BFUkFORCl9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsg fSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCksIDB9IC0+IHNhbWVf YXM8Q09SUkVDVF9UWVBFPjsgfSk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcFZhbHVlID0gVmFs dWU+Cit2b2lkIHRlc3RfdmFsdWUoKQoreworICBEZXBWYWx1ZSB2YWx1ZXt9OworICBURVNUX1ZB TElEKHZhbHVlLCBEZXBWYWx1ZSkKKyAgVEVTVF9WQUxJRChzdGF0aWNfY2FzdDxEZXBWYWx1ZSYm Pih2YWx1ZSksIERlcFZhbHVlKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcFZhbHVlIGNv bnN0Jj4odmFsdWUpLCBEZXBWYWx1ZSkKKyAgVEVTVF9WQUxJRChzdGF0aWNfY2FzdDxEZXBWYWx1 ZSBjb25zdCYmPih2YWx1ZSksIERlcFZhbHVlKQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXBM UmVmID0gTFJlZj4KK3ZvaWQgdGVzdF9sX3JlZigpCit7CisgIERlcExSZWYgbF9yZWZ7fTsKKyAg VEVTVF9WQUxJRChsX3JlZiwgRGVwTFJlZiYpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxE ZXBMUmVmJiY+KGxfcmVmKSwgRGVwTFJlZiYpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxE ZXBMUmVmIGNvbnN0Jj4obF9yZWYpLCBEZXBMUmVmJikKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19j YXN0PERlcExSZWYgY29uc3QmJj4obF9yZWYpLCBEZXBMUmVmJikKK30KKwordGVtcGxhdGU8dHlw ZW5hbWUgRGVwUlJlZiA9IFJSZWY+Cit2b2lkIHRlc3Rfcl9yZWYoKQoreworICBEZXBSUmVmIHJf cmVme307CisgIFRFU1RfSU5WQUxJRChyX3JlZiwgRGVwUlJlZiYmKQorICBURVNUX1ZBTElEKHN0 YXRpY19jYXN0PERlcFJSZWYmJj4ocl9yZWYpLCBEZXBSUmVmJiYpCisgIFRFU1RfSU5WQUxJRChz dGF0aWNfY2FzdDxEZXBSUmVmIGNvbnN0Jj4ocl9yZWYpLCBEZXBSUmVmJiYpCisgIFRFU1RfSU5W QUxJRChzdGF0aWNfY2FzdDxEZXBSUmVmIGNvbnN0JiY+KHJfcmVmKSwgRGVwUlJlZiYmKQorfQor Cit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXBDb25zdExSZWYgPSBDb25zdExSZWY+Cit2b2lkIHRlc3Rf Y29uc3RfbF9yZWYoKQoreworICBEZXBDb25zdExSZWYgY29uc3RfbF9yZWZ7fTsKKyAgVEVTVF9W QUxJRChjb25zdF9sX3JlZiwgRGVwQ29uc3RMUmVmIGNvbnN0JikKKyAgVEVTVF9WQUxJRChzdGF0 aWNfY2FzdDxEZXBDb25zdExSZWYmJj4oY29uc3RfbF9yZWYpLCBEZXBDb25zdExSZWYgY29uc3Qm KQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcENvbnN0TFJlZiBjb25zdCY+KGNvbnN0X2xf cmVmKSwgRGVwQ29uc3RMUmVmIGNvbnN0JikKKyAgVEVTVF9WQUxJRChzdGF0aWNfY2FzdDxEZXBD b25zdExSZWYgY29uc3QmJj4oY29uc3RfbF9yZWYpLCBEZXBDb25zdExSZWYgY29uc3QmKQorfQor Cit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXBDb25zdFJSZWYgPSBDb25zdFJSZWY+Cit2b2lkIHRlc3Rf Y29uc3Rfcl9yZWYoKQoreworICBEZXBDb25zdFJSZWYgY29uc3Rfcl9yZWZ7fTsKKyAgVEVTVF9J TlZBTElEKGNvbnN0X3JfcmVmLCBEZXBDb25zdFJSZWYgY29uc3QmJikKKyAgVEVTVF9WQUxJRChz dGF0aWNfY2FzdDxEZXBDb25zdFJSZWYmJj4oY29uc3Rfcl9yZWYpLCBEZXBDb25zdFJSZWYgY29u c3QmJikKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PERlcENvbnN0UlJlZiBjb25zdCY+KGNv bnN0X3JfcmVmKSwgRGVwQ29uc3RSUmVmIGNvbnN0JiYpCisgIFRFU1RfVkFMSUQoc3RhdGljX2Nh c3Q8RGVwQ29uc3RSUmVmIGNvbnN0JiY+KGNvbnN0X3JfcmVmKSwgRGVwQ29uc3RSUmVmIGNvbnN0 JiYpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcERlZHVjZWQgPSBEZWR1Y2VkPgordm9pZCB0 ZXN0X2RlZHVjZWQoKQoreworICBEZXBEZWR1Y2VkIGRlZHVjZWR7fTsKKworICBURVNUX1ZBTElE X1dJVEhfUkVUVVJOX1RZUEVTKGRlZHVjZWQsIERlcERlZHVjZWQmKQorICBURVNUX1ZBTElEX1dJ VEhfUkVUVVJOX1RZUEVTKHN0YXRpY19jYXN0PERlcERlZHVjZWQmJj4oZGVkdWNlZCksIERlcERl ZHVjZWQmJikKKyAgVEVTVF9WQUxJRF9XSVRIX1JFVFVSTl9UWVBFUyhzdGF0aWNfY2FzdDxEZXBE ZWR1Y2VkIGNvbnN0Jj4oZGVkdWNlZCksIERlcERlZHVjZWQgY29uc3QmKQorICBURVNUX1ZBTElE X1dJVEhfUkVUVVJOX1RZUEVTKHN0YXRpY19jYXN0PERlcERlZHVjZWQgY29uc3QmJj4oZGVkdWNl ZCksIERlcERlZHVjZWQgY29uc3QmJikKK30KKwordm9pZCB0ZXN0KCkKK3sKKyAgdGVzdF92YWx1 ZSgpOworICB0ZXN0X2xfcmVmKCk7CisgIHRlc3Rfcl9yZWYoKTsKKyAgdGVzdF9jb25zdF9sX3Jl ZigpOworICB0ZXN0X2NvbnN0X3JfcmVmKCk7CisgIHRlc3RfZGVkdWNlZCgpOworfQorCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotcmVkZWNsLkMg Yi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotcmVkZWNsLkMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdmY2ZjYzMxYzMwCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLXJlZGVjbC5D CkBAIC0wLDAgKzEsMjQ2IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJn ZXQgYysrMjMgfSB9CisKKy8vIHJlZGVjbGFyYXRpb25zIG9mIHhvYmovaW9iaiBtZW1iZXIgZnVu Y3Rpb25zIHdoZXJlIHRoZSBpb2JqIG1lbWJlciBmdW5jdGlvbgorLy8gaXMgbm90IHJlZiBxdWFs aWZpZWQKKworLy8gaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBjaGVjayBmb3IgdGhlIGludmVy c2UgaW4gdGhpcyB0ZXN0ICg3IGlvYmosIDEgeG9iaikKKy8vIGJlY2F1c2UgeW91IGFyZSBub3Qg YWxsb3dlZCB0byBvdmVybG9hZCBpb2JqIG1lbWJlciBmdW5jdGlvbnMgd2l0aG91dCByZWYgcXVh bGlmaWVycworLy8gd2l0aCBpb2JqIG1lbWJlciBmdW5jdGlvbnMgdGhhdCBkbyAoYW5kIHZpY2Ug dmVyc2EpCisKKy8vIGlvYmogZmlyc3QKKworc3RydWN0IFMwIHsKKyAgdm9pZCBmMCgpOyAvLyB7 IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZjAodGhpcyBTMCAmJik7 IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKyAgdm9pZCBmMCh0 aGlzIFMwIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYwKHRoaXMgUzAgY29u c3QmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYwKHRoaXMgUzAgdm9sYXRpbGUmKTsg Ly8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjAodGhpcyBTMCB2b2xhdGlsZSYmKTsgLy8geyBk Zy1ib2d1cyAiIiB9CisgIHZvaWQgZjAodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRn LWJvZ3VzICIiIH0KKyAgdm9pZCBmMCh0aGlzIFMwIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRn LWJvZ3VzICIiIH0KKworICB2b2lkIGYxKCk7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFy YXRpb24iIH0KKyAgdm9pZCBmMSh0aGlzIFMwICYpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUg b3ZlcmxvYWRlZCB3aXRoIiB9CisgIHZvaWQgZjEodGhpcyBTMCBjb25zdCYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBmMSh0aGlzIFMwIGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KyAgdm9pZCBmMSh0aGlzIFMwIHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lk IGYxKHRoaXMgUzAgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYxKHRo aXMgUzAgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjEodGhp cyBTMCBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmYzAo KSBjb25zdDsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZj MCh0aGlzIFMwICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzAodGhpcyBTMCAmJik7 IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMwIGNvbnN0JiYpOyAvLyB7IGRn LWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisgIHZvaWQgZmMwKHRoaXMgUzAg dm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMwKHRoaXMgUzAgdm9sYXRp bGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMwIGNvbnN0IHZvbGF0 aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMwIGNvbnN0IHZvbGF0 aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGZjMSgpIGNvbnN0OyAvLyB7IGRn LW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmMxKHRoaXMgUzAgJik7IC8v IHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMwICYmKTsgLy8geyBkZy1ib2d1cyAi IiB9CisgIHZvaWQgZmMxKHRoaXMgUzAgY29uc3QmKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJl IG92ZXJsb2FkZWQgd2l0aCIgfQorICB2b2lkIGZjMSh0aGlzIFMwIHZvbGF0aWxlJik7IC8vIHsg ZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMwIHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBmYzEodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBmYzEodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1i b2d1cyAiIiB9CisKKyAgdm9pZCBmdjAoKSB2b2xhdGlsZTsgLy8geyBkZy1ub3RlICJwcmV2aW91 cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZ2MCh0aGlzIFMwICYpOyAvLyB7IGRnLWJvZ3VzICIi IH0KKyAgdm9pZCBmdjAodGhpcyBTMCAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2 MCh0aGlzIFMwIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MCh0aGlzIFMw IGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjAodGhpcyBTMCB2b2xhdGls ZSYmKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorICB2b2lk IGZ2MCh0aGlzIFMwIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lk IGZ2MCh0aGlzIFMwIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2 b2lkIGZ2MSgpIHZvbGF0aWxlOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9 CisgIHZvaWQgZnYxKHRoaXMgUzAgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MSh0 aGlzIFMwICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYxKHRoaXMgUzAgY29uc3Qm KTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYxKHRoaXMgUzAgY29uc3QmJik7IC8vIHsg ZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MSh0aGlzIFMwIHZvbGF0aWxlJik7IC8vIHsgZGctZXJy b3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKyAgdm9pZCBmdjEodGhpcyBTMCBjb25z dCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjEodGhpcyBTMCBjb25z dCB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmY3YwKCkgY29uc3Qg dm9sYXRpbGU7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBm Y3YwKHRoaXMgUzAgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMCAm Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMCBjb25zdCYpOyAvLyB7 IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YwKHRoaXMgUzAgY29uc3QmJik7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIi IH0KKyAgdm9pZCBmY3YwKHRoaXMgUzAgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQor ICB2b2lkIGZjdjAodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1lcnJvciAiY2Fu bm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZmN2MSgpIGNvbnN0IHZvbGF0aWxl OyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmN2MSh0aGlz IFMwICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzAgJiYpOyAvLyB7 IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzAgY29uc3QmKTsgLy8geyBkZy1ib2d1 cyAiIiB9CisgIHZvaWQgZmN2MSh0aGlzIFMwIGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KyAgdm9pZCBmY3YxKHRoaXMgUzAgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZv aWQgZmN2MSh0aGlzIFMwIHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBm Y3YxKHRoaXMgUzAgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92 ZXJsb2FkZWQgd2l0aCIgfQorfTsKKworLy8gaW9iaiBsYXN0CisKK3N0cnVjdCBTMSB7CisgIHZv aWQgZjAodGhpcyBTMSAmJik7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0K KyAgdm9pZCBmMCh0aGlzIFMxIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYw KHRoaXMgUzEgY29uc3QmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYwKHRoaXMgUzEg dm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjAodGhpcyBTMSB2b2xhdGls ZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjAodGhpcyBTMSBjb25zdCB2b2xhdGls ZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMCh0aGlzIFMxIGNvbnN0IHZvbGF0aWxl JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMCgpOyAvLyB7IGRnLWVycm9yICJjYW5u b3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBmMSh0aGlzIFMxICYpOyAvLyB7IGRn LW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZjEodGhpcyBTMSBjb25zdCYp OyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMSh0aGlzIFMxIGNvbnN0JiYpOyAvLyB7IGRn LWJvZ3VzICIiIH0KKyAgdm9pZCBmMSh0aGlzIFMxIHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMg IiIgfQorICB2b2lkIGYxKHRoaXMgUzEgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQor ICB2b2lkIGYxKHRoaXMgUzEgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9Cisg IHZvaWQgZjEodGhpcyBTMSBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9Cisg IHZvaWQgZjEoKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQor CisgIHZvaWQgZmMwKHRoaXMgUzEgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCh0 aGlzIFMxICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMwKHRoaXMgUzEgY29uc3Qm Jik7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmYzAodGhp cyBTMSB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzAodGhpcyBTMSB2 b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMwKHRoaXMgUzEgY29uc3Qg dm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMwKHRoaXMgUzEgY29uc3Qg dm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCgpIGNvbnN0OyAvLyB7 IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBmYzEodGhp cyBTMSAmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMxKHRoaXMgUzEgJiYpOyAvLyB7 IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzEodGhpcyBTMSBjb25zdCYpOyAvLyB7IGRnLW5vdGUg InByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmMxKHRoaXMgUzEgdm9sYXRpbGUmKTsg Ly8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMxKHRoaXMgUzEgdm9sYXRpbGUmJik7IC8vIHsg ZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMxIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsg ZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMxIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7 IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzEoKSBjb25zdDsgLy8geyBkZy1lcnJvciAiY2Fubm90 IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZnYwKHRoaXMgUzEgJik7IC8vIHsgZGct Ym9ndXMgIiIgfQorICB2b2lkIGZ2MCh0aGlzIFMxICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9Cisg IHZvaWQgZnYwKHRoaXMgUzEgY29uc3QmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYw KHRoaXMgUzEgY29uc3QmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MCh0aGlzIFMx IHZvbGF0aWxlJiYpOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZv aWQgZnYwKHRoaXMgUzEgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZv aWQgZnYwKHRoaXMgUzEgY29uc3Qgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2 b2lkIGZ2MCgpIHZvbGF0aWxlOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3 aXRoIiB9CisKKyAgdm9pZCBmdjEodGhpcyBTMSAmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZv aWQgZnYxKHRoaXMgUzEgJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjEodGhpcyBT MSBjb25zdCYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjEodGhpcyBTMSBjb25zdCYm KTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYxKHRoaXMgUzEgdm9sYXRpbGUmKTsgLy8g eyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZ2MSh0aGlzIFMxIGNv bnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MSh0aGlzIFMxIGNv bnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjEoKSB2b2xhdGls ZTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQg ZmN2MCh0aGlzIFMxICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YwKHRoaXMgUzEg JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YwKHRoaXMgUzEgY29uc3QmKTsgLy8g eyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MCh0aGlzIFMxIGNvbnN0JiYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBmY3YwKHRoaXMgUzEgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAi IiB9CisgIHZvaWQgZmN2MCh0aGlzIFMxIHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KyAgdm9pZCBmY3YwKHRoaXMgUzEgY29uc3Qgdm9sYXRpbGUmJik7IC8vIHsgZGctbm90ZSAicHJl dmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmY3YwKCkgY29uc3Qgdm9sYXRpbGU7IC8vIHsg ZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKworICB2b2lkIGZjdjEodGhp cyBTMSAmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MSh0aGlzIFMxICYmKTsgLy8g eyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MSh0aGlzIFMxIGNvbnN0Jik7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGZjdjEodGhpcyBTMSBjb25zdCYmKTsgLy8geyBkZy1ib2d1cyAiIiB9 CisgIHZvaWQgZmN2MSh0aGlzIFMxIHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2 b2lkIGZjdjEodGhpcyBTMSB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQg ZmN2MSh0aGlzIFMxIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVj bGFyYXRpb24iIH0KKyAgdm9pZCBmY3YxKCkgY29uc3Qgdm9sYXRpbGU7IC8vIHsgZGctZXJyb3Ig ImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KK307CisKKy8vIGluIG9yZGVyIChpb2JqIHJl cGxhY2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBpbiBlYWNoIGdyb3VwKQorLy8gbHZhbHVlIHJl ZiB0byBTCisvLyBydmFsdWUgcmVmIHRvIFMKKy8vIGx2YWx1ZSBjIHJlZiB0byBTCisvLyBydmFs dWUgYyByZWYgdG8gUworLy8gbHZhbHVlIHYgcmVmIHRvIFMKKy8vIHJ2YWx1ZSB2IHJlZiB0byBT CisvLyBsdmFsdWUgY3YgcmVmIHRvIFMKKy8vIHJ2YWx1ZSBjdiByZWYgdG8gUworCitzdHJ1Y3Qg UzIgeworICB2b2lkIGYwKCk7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0K KyAgdm9pZCBmMCh0aGlzIFMyICYmKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2Fk ZWQgd2l0aCIgfQorICB2b2lkIGYwKHRoaXMgUzIgY29uc3QmKTsgLy8geyBkZy1ib2d1cyAiIiB9 CisgIHZvaWQgZjAodGhpcyBTMiBjb25zdCYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQg ZjAodGhpcyBTMiB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMCh0aGlz IFMyIHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMCh0aGlzIFMyIGNv bnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYwKHRoaXMgUzIgY29u c3Qgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZjEodGhpcyBTMiAm KTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGYxKCk7IC8v IHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKyAgdm9pZCBmMSh0aGlz IFMyIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYxKHRoaXMgUzIgY29uc3Qm Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYxKHRoaXMgUzIgdm9sYXRpbGUmKTsgLy8g eyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjEodGhpcyBTMiB2b2xhdGlsZSYmKTsgLy8geyBkZy1i b2d1cyAiIiB9CisgIHZvaWQgZjEodGhpcyBTMiBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBmMSh0aGlzIFMyIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKworICB2b2lkIGZjMCh0aGlzIFMyICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAg dm9pZCBmYzAodGhpcyBTMiAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCgpIGNv bnN0OyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmMwKHRo aXMgUzIgY29uc3QmJik7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgi IH0KKyAgdm9pZCBmYzAodGhpcyBTMiB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAg dm9pZCBmYzAodGhpcyBTMiB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQg ZmMwKHRoaXMgUzIgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQg ZmMwKHRoaXMgUzIgY29uc3Qgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZv aWQgZmMxKHRoaXMgUzIgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMy ICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMxKHRoaXMgUzIgY29uc3QmKTsgLy8g eyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZjMSgpIGNvbnN0OyAv LyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisgIHZvaWQgZmMxKHRo aXMgUzIgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMxKHRoaXMgUzIg dm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMyIGNvbnN0 IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMyIGNvbnN0 IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGZ2MCh0aGlzIFMyICYp OyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjAodGhpcyBTMiAmJik7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGZ2MCh0aGlzIFMyIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQor ICB2b2lkIGZ2MCh0aGlzIFMyIGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBm djAoKSB2b2xhdGlsZTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2 b2lkIGZ2MCh0aGlzIFMyIHZvbGF0aWxlJiYpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3Zl cmxvYWRlZCB3aXRoIiB9CisgIHZvaWQgZnYwKHRoaXMgUzIgY29uc3Qgdm9sYXRpbGUmKTsgLy8g eyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYwKHRoaXMgUzIgY29uc3Qgdm9sYXRpbGUmJik7IC8v IHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZnYxKHRoaXMgUzIgJik7IC8vIHsgZGctYm9ndXMg IiIgfQorICB2b2lkIGZ2MSh0aGlzIFMyICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQg ZnYxKHRoaXMgUzIgY29uc3QmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYxKHRoaXMg UzIgY29uc3QmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MSh0aGlzIFMyIHZvbGF0 aWxlJik7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmdjEo KSB2b2xhdGlsZTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQor ICB2b2lkIGZ2MSh0aGlzIFMyIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQor ICB2b2lkIGZ2MSh0aGlzIFMyIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KworICB2b2lkIGZjdjAodGhpcyBTMiAmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2 MCh0aGlzIFMyICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MCh0aGlzIFMyIGNv bnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMiBjb25zdCYmKTsg Ly8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MCh0aGlzIFMyIHZvbGF0aWxlJik7IC8vIHsg ZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMiB2b2xhdGlsZSYmKTsgLy8geyBkZy1i b2d1cyAiIiB9CisgIHZvaWQgZmN2MCgpIGNvbnN0IHZvbGF0aWxlOyAvLyB7IGRnLW5vdGUgInBy ZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmN2MCh0aGlzIFMyIGNvbnN0IHZvbGF0aWxl JiYpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAgdm9p ZCBmY3YxKHRoaXMgUzIgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjEodGhpcyBT MiAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjEodGhpcyBTMiBjb25zdCYpOyAv LyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzIgY29uc3QmJik7IC8vIHsgZGct Ym9ndXMgIiIgfQorICB2b2lkIGZjdjEodGhpcyBTMiB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3Vz ICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzIgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIg fQorICB2b2lkIGZjdjEodGhpcyBTMiBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRnLW5vdGUgInBy ZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmN2MSgpIGNvbnN0IHZvbGF0aWxlOyAvLyB7 IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9Cit9OworCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotcmVkZWNsMi5DIGIvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLXJlZGVjbDIuQwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWRiNmFlNWEzODAKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotcmVkZWNsMi5DCkBA IC0wLDAgKzEsMTYxIEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQg YysrMjMgfSB9CisvLyB7IGRnLW9wdGlvbnMgIi1wZWRhbnRpYy1lcnJvcnMgLVduby12b2xhdGls ZSIgfQorCisvLyByZWplY3RpbmcgcmVkZWNsYXJhdGlvbnMgb2YgYnktdmFsdWUgeG9iaiBtZW1i ZXIgZnVuY3Rpb25zCisvLyBhcyBpb2JqIG1lbWJlciBmdW5jdGlvbnMgdGhhdCBhcmUgbm90IHJl ZiBxdWFsaWZpZWQgKGFuZCB2aWNlLXZlcnNhKQorLy8gYWxzbyBjaGVjayB0aGF0IHZhbGlkIG92 ZXJsb2FkcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCBkaWFnbm9zdGljCisKKy8vICBpb2JqIHwgIHhv YmogIHwgIE1TVkMgfCBjbGFuZyB8IElTT0MrKworLy8gIG5vbmUgfCAgbm9uZSAgfCAgIFggICB8 ICAgWCAgIHwgICBYCisvLyAgbm9uZSB8ICAgICBjICB8ICAgWCAgIHwgICBPICAgfCAgIFgKKy8v ICBub25lIHwgICAgIHYgIHwgICBYICAgfCAgIE8gICB8ICAgWAorLy8gIG5vbmUgfCAgICBjdiAg fCAgIFggICB8ICAgTyAgIHwgICBYCisvLyAgICAgYyB8ICBub25lICB8ICAgTyAgIHwgICBPICAg fCAgIE8KKy8vICAgICBjIHwgICAgIGMgIHwgICBPICAgfCAgIFggICB8ICAgTworLy8gICAgIGMg fCAgICAgdiAgfCAgIE8gICB8ICAgTyAgIHwgICBPCisvLyAgICAgYyB8ICAgIGN2ICB8ICAgTyAg IHwgICBPICAgfCAgIE8KKy8vICAgICB2IHwgIG5vbmUgIHwgICBPICAgfCAgIE8gICB8ICAgTwor Ly8gICAgIHYgfCAgICAgYyAgfCAgIE8gICB8ICAgTyAgIHwgICBPCisvLyAgICAgdiB8ICAgICB2 ICB8ICAgTyAgIHwgICBYICAgfCAgIE8KKy8vICAgICB2IHwgICAgY3YgIHwgICBPICAgfCAgIE8g ICB8ICAgTworLy8gICAgY3YgfCAgbm9uZSAgfCAgIE8gICB8ICAgTyAgIHwgICBPCisvLyAgICBj diB8ICAgICBjICB8ICAgTyAgIHwgICBPICAgfCAgIE8KKy8vICAgIGN2IHwgICAgIHYgIHwgICBP ICAgfCAgIE8gICB8ICAgTworLy8gICAgY3YgfCAgICBjdiAgfCAgIE8gICB8ICAgWCAgIHwgICBP CisKKy8qIFRvcC1sZXZlbCBjdiBxdWFsaWZpZXJzIGFyZSBzdXBwb3NlZCB0byBiZSBkaXNjYXJk ZWQgZnJvbQorICAgdGhlIHBhcmFtZXRlcnMgb2YgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KKyAg ICAgCisgICBbZGNsLmZjdC41XQorICAgQWZ0ZXIgcHJvZHVjaW5nIHRoZSBsaXN0IG9mIHBhcmFt ZXRlciB0eXBlcywgYW55IHRvcC1sZXZlbAorICAgY3YtcXVhbGlmaWVycyBtb2RpZnlpbmcgYSBw YXJhbWV0ZXIgdHlwZSBhcmUgZGVsZXRlZCB3aGVuIGZvcm1pbmcKKyAgIHRoZSBmdW5jdGlvbiB0 eXBlLgorCisgICBBY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkLCB0aGUgdHlwZSBvZiBhbiBpbXBs aWNpdCBvYmplY3QgcGFyYW1ldGVyCisgICBpcyBhbHdheXMgYSByZWZlcmVuY2UuIFRoaXMgaXNu J3QgcmVmbGVjdGVkIGluIEdDQyBidXQgd2Ugc3RpbGwgbmVlZAorICAgdG8gdGFrZSB0aGlzIHJ1 bGUgaW50byBhY2NvdW50IGhlcmUuCisKKyAgIFtvdmVyLm1hdGNoLmZ1bmNzLmdlbmVyYWwuNF0K KyAgIEZvciBpbXBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9ucywgdGhlIHR5cGUgb2YgdGhl IGltcGxpY2l0CisgICBvYmplY3QgcGFyYW1ldGVyIGlzCisgICAtLSDigJxsdmFsdWUgcmVmZXJl bmNlIHRvIGN2IFjigJ0gZm9yIGZ1bmN0aW9ucyBkZWNsYXJlZAorICAgICAgd2l0aG91dCBhIHJl Zi1xdWFsaWZpZXIgb3Igd2l0aCB0aGUgJiByZWYtcXVhbGlmaWVyCisgICAtLSDigJxydmFsdWUg cmVmZXJlbmNlIHRvIGN2IFjigJ0gZm9yIGZ1bmN0aW9ucyBkZWNsYXJlZCB3aXRoCisgICAgICB0 aGUgJiYgcmVmLXF1YWxpZmllcgorICAgIAorICAgV2hlbiBjb21wYXJpbmcgYW4gaW9iaiBhbmQg eG9iaiBtZW1iZXIgZnVuY3Rpb24gdG8gc2VlIGlmIHRoZXkgYXJlCisgICByZWRlY2xhcmF0aW9u cyB3ZSB0cmVhdCB0aGVtIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiBpZiB0aGUgaW9iagorICAg bWVtYmVyIGZ1bmN0aW9uIGhhcyBhIHJlZiBxdWFsaWZpZXIgb3Igbm90LgorICAgSWYgdGhlIGlv YmogbWVtYmVyIGZ1bmN0aW9uIGRvZXMgbm90IGhhdmUgYSByZWYgcXVhbGlmaWVyLCB3ZSBuZWVk IHRvCisgICBzdHJpcCB0aGUgdG9wLWxldmVsIHJlZmVyZW5jZXMgYmVmb3JlIGNvbXBhcmluZyB0 aGVtLgorCisgICBbYmFzaWMuc2NvcGUuc2NvcGUuM10KKyAgIFR3byBub24tc3RhdGljIG1lbWJl ciBmdW5jdGlvbnMgaGF2ZSBjb3JyZXNwb25kaW5nIG9iamVjdAorICAgcGFyYW1ldGVycyBpZjoK KyAgIC0tIGV4YWN0bHkgb25lIGlzIGFuIGltcGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g d2l0aCBubworICAgICAgcmVmLXF1YWxpZmllciBhbmQgdGhlIHR5cGVzIG9mIHRoZWlyIG9iamVj dCBwYXJhbWV0ZXJzCisgICAgICAoW2RjbC5mY3RdKSwgYWZ0ZXIgcmVtb3ZpbmcgdG9wLWxldmVs IHJlZmVyZW5jZXMsIGFyZSB0aGUKKyAgICAgIHNhbWUsIG9yCisgICAtLSB0aGVpciBvYmplY3Qg cGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lIHR5cGUuICovCisKK3N0cnVjdCBTIHsKKyAgdm9pZCBm MCgpOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZjAodGhp cyBTKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZv aWQgZjEoKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGYx KHRoaXMgUyBjb25zdCk7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgi IH0KKworICB2b2lkIGYyKCk7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0K KyAgdm9pZCBmMih0aGlzIFMgdm9sYXRpbGUpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3Zl cmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBmMygpOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRl Y2xhcmF0aW9uIiB9CisgIHZvaWQgZjModGhpcyBTIGNvbnN0IHZvbGF0aWxlKTsgLy8geyBkZy1l cnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZmMwKCkgY29uc3Q7 IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMpOyAvLyB7IGRnLWJvZ3VzICIi IH0KKworICB2b2lkIGZjMSgpIGNvbnN0OyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzEo dGhpcyBTIGNvbnN0KTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmYzIoKSBjb25zdDsg Ly8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMyKHRoaXMgUyB2b2xhdGlsZSk7IC8vIHsgZGct Ym9ndXMgIiIgfQorCisgIHZvaWQgZmMzKCkgY29uc3Q7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2 b2lkIGZjMyh0aGlzIFMgY29uc3Qgdm9sYXRpbGUpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2 b2lkIGZ2MCgpIHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjAodGhpcyBT KTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmdjEoKSB2b2xhdGlsZTsgLy8geyBkZy1i b2d1cyAiIiB9CisgIHZvaWQgZnYxKHRoaXMgUyBjb25zdCk7IC8vIHsgZGctYm9ndXMgIiIgfQor CisgIHZvaWQgZnYyKCkgdm9sYXRpbGU7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2Mih0 aGlzIFMgdm9sYXRpbGUpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGZ2MygpIHZvbGF0 aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjModGhpcyBTIGNvbnN0IHZvbGF0aWxl KTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmY3YwKCkgY29uc3Qgdm9sYXRpbGU7IC8v IHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTKTsgLy8geyBkZy1ib2d1cyAiIiB9 CisKKyAgdm9pZCBmY3YxKCkgY29uc3Qgdm9sYXRpbGU7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2 b2lkIGZjdjEodGhpcyBTIGNvbnN0KTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmY3Yy KCkgY29uc3Qgdm9sYXRpbGU7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjIodGhpcyBT IHZvbGF0aWxlKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmY3YzKCkgY29uc3Qgdm9s YXRpbGU7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjModGhpcyBTIGNvbnN0IHZvbGF0 aWxlKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgLy8gc2FtZSBhcyB0aGUgYWJvdmUgZiBjYXNl cyBleGNlcHQgcmV2ZXJzZWQKKworICB2b2lkIGcwKHRoaXMgUyk7IC8vIHsgZGctbm90ZSAicHJl dmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBnMCgpOyAvLyB7IGRnLWVycm9yICJjYW5ub3Qg YmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBnMSh0aGlzIFMgY29uc3QpOyAvLyB7IGRn LW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZzEoKTsgLy8geyBkZy1lcnJv ciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZzIodGhpcyBTIHZvbGF0 aWxlKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGcyKCk7 IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKworICB2b2lkIGcz KHRoaXMgUyBjb25zdCB2b2xhdGlsZSk7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRp b24iIH0KKyAgdm9pZCBnMygpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3 aXRoIiB9CisKKyAgdm9pZCBnYzAodGhpcyBTKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQg Z2MwKCkgY29uc3Q7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZ2MxKHRoaXMgUyBjb25z dCk7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGdjMSgpIGNvbnN0OyAvLyB7IGRnLWJvZ3Vz ICIiIH0KKworICB2b2lkIGdjMih0aGlzIFMgdm9sYXRpbGUpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KyAgdm9pZCBnYzIoKSBjb25zdDsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBnYzModGhp cyBTIGNvbnN0IHZvbGF0aWxlKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZ2MzKCkgY29u c3Q7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZ3YwKHRoaXMgUyk7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGd2MCgpIHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2 b2lkIGd2MSh0aGlzIFMgY29uc3QpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBndjEoKSB2 b2xhdGlsZTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBndjIodGhpcyBTIHZvbGF0aWxl KTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZ3YyKCkgdm9sYXRpbGU7IC8vIHsgZGctYm9n dXMgIiIgfQorCisgIHZvaWQgZ3YzKHRoaXMgUyBjb25zdCB2b2xhdGlsZSk7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGd2MygpIHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2 b2lkIGdjdjAodGhpcyBTKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZ2N2MCgpIGNvbnN0 IHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGdjdjEodGhpcyBTIGNvbnN0 KTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZ2N2MSgpIGNvbnN0IHZvbGF0aWxlOyAvLyB7 IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGdjdjIodGhpcyBTIHZvbGF0aWxlKTsgLy8geyBkZy1i b2d1cyAiIiB9CisgIHZvaWQgZ2N2MigpIGNvbnN0IHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIi IH0KKworICB2b2lkIGdjdjModGhpcyBTIGNvbnN0IHZvbGF0aWxlKTsgLy8geyBkZy1ib2d1cyAi IiB9CisgIHZvaWQgZ2N2MygpIGNvbnN0IHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KK307 CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai12 aXJ0dWFsLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotdmlydHVh bC5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMjNjZGMyZTBmZQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai12aXJ0dWFsLkMKQEAgLTAsMCArMSw5NSBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21w aWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyBkaWFnbm9zZSB4b2JqIG1lbWJlciBmdW5jdGlv bnMgdGhhdCBvdmVycmlkZQorLy8gb3IgYXJlIGRlY2xhcmVkIGFzIHZpcnR1YWwsIG92ZXJyaWRl LCBvciBmaW5hbAorCitzdHJ1Y3QgQiB7CisgIHZpcnR1YWwgdm9pZCBmMCgpIHt9IC8vIHsgZGct bm90ZSB7dmlydHVhbCBmdW5jdGlvbiBkZWNsYXJlZCBoZXJlfSB9CisgIHZpcnR1YWwgdm9pZCBm MSgpIHt9IC8vIHsgZGctbm90ZSB7dmlydHVhbCBmdW5jdGlvbiBkZWNsYXJlZCBoZXJlfSB9Cisg IHZpcnR1YWwgdm9pZCBmMigpIHt9IC8vIHsgZGctbm90ZSB7dmlydHVhbCBmdW5jdGlvbiBkZWNs YXJlZCBoZXJlfSB9CisgIHZpcnR1YWwgdm9pZCBmMygpIHt9IC8vIHsgZGctbm90ZSB7dmlydHVh bCBmdW5jdGlvbiBkZWNsYXJlZCBoZXJlfSB9CisgIHZpcnR1YWwgdm9pZCBmNCgpIHt9IC8vIHsg ZGctbm90ZSB7dmlydHVhbCBmdW5jdGlvbiBkZWNsYXJlZCBoZXJlfSB9CisgIHZpcnR1YWwgdm9p ZCBmNSgpIHt9IC8vIHsgZGctbm90ZSB7dmlydHVhbCBmdW5jdGlvbiBkZWNsYXJlZCBoZXJlfSB9 CisgIHZpcnR1YWwgdm9pZCBmNigpIHt9IC8vIHsgZGctbm90ZSB7dmlydHVhbCBmdW5jdGlvbiBk ZWNsYXJlZCBoZXJlfSB9CisgIHZpcnR1YWwgdm9pZCBmNygpIHt9IC8vIHsgZGctbm90ZSB7dmly dHVhbCBmdW5jdGlvbiBkZWNsYXJlZCBoZXJlfSB9CisgIHZpcnR1YWwgfkIoKSB7fQorfTsKKwor c3RydWN0IFMgOiBCIHsKKyAgdmlydHVhbCB2b2lkIGYwKHRoaXMgUyYpIHt9CQkgICAgIC8vIHsg ZGctbGluZSBsaW5lX2YwIH0KKyAgdmlydHVhbCB2b2lkIGYxKHRoaXMgUyYpIG92ZXJyaWRlIHt9 CSAgICAgLy8geyBkZy1saW5lIGxpbmVfZjEgfQorICB2aXJ0dWFsIHZvaWQgZjIodGhpcyBTJikg ZmluYWwge30JICAgICAvLyB7IGRnLWxpbmUgbGluZV9mMiB9CisgIHZpcnR1YWwgdm9pZCBmMyh0 aGlzIFMmKSBvdmVycmlkZSBmaW5hbCB7fSAvLyB7IGRnLWxpbmUgbGluZV9mMyB9CisgIHZvaWQg ZjQodGhpcyBTJikge30JCQkgICAgIC8vIHsgZGctbGluZSBsaW5lX2Y0IH0KKyAgdm9pZCBmNSh0 aGlzIFMmKSBvdmVycmlkZSB7fQkJICAgICAvLyB7IGRnLWxpbmUgbGluZV9mNSB9CisgIHZvaWQg ZjYodGhpcyBTJikgZmluYWwge30JCSAgICAgLy8geyBkZy1saW5lIGxpbmVfZjYgfQorICB2b2lk IGY3KHRoaXMgUyYpIG92ZXJyaWRlIGZpbmFsIHt9CSAgICAgLy8geyBkZy1saW5lIGxpbmVfZjcg fQorfTsKKworLy8geyBkZy1lcnJvciB7YW4gZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biBjYW5ub3QgYmUgJ3ZpcnR1YWwnfSAiIiB7IHRhcmdldCAqLSotKiB9IGxpbmVfZjAgfQorLy8g eyBkZy1lcnJvciB7YW4gZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBjYW5ub3QgYmUg J3ZpcnR1YWwnfSAiIiB7IHRhcmdldCAqLSotKiB9IGxpbmVfZjEgfQorLy8geyBkZy1lcnJvciB7 YW4gZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBjYW5ub3QgYmUgJ3ZpcnR1YWwnfSAi IiB7IHRhcmdldCAqLSotKiB9IGxpbmVfZjIgfQorLy8geyBkZy1lcnJvciB7YW4gZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiBjYW5ub3QgYmUgJ3ZpcnR1YWwnfSAiIiB7IHRhcmdldCAq LSotKiB9IGxpbmVfZjMgfQorCisvLyB7IGRnLWVycm9yIHtleHBsaWNpdCBvYmplY3QgbWVtYmVy IGZ1bmN0aW9uIG92ZXJyaWRlcyB2aXJ0dWFsIGZ1bmN0aW9ufSAiIiB7IHRhcmdldCAqLSotKiB9 IGxpbmVfZjAgfQorLy8geyBkZy1lcnJvciB7ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biBvdmVycmlkZXMgdmlydHVhbCBmdW5jdGlvbn0gIiIgeyB0YXJnZXQgKi0qLSogfSBsaW5lX2Yx IH0KKy8vIHsgZGctZXJyb3Ige2V4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gb3ZlcnJp ZGVzIHZpcnR1YWwgZnVuY3Rpb259ICIiIHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mMiB9CisvLyB7 IGRnLWVycm9yIHtleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIG92ZXJyaWRlcyB2aXJ0 dWFsIGZ1bmN0aW9ufSAiIiB7IHRhcmdldCAqLSotKiB9IGxpbmVfZjMgfQorLy8geyBkZy1lcnJv ciB7ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBvdmVycmlkZXMgdmlydHVhbCBmdW5j dGlvbn0gIiIgeyB0YXJnZXQgKi0qLSogfSBsaW5lX2Y0IH0KKy8vIHsgZGctZXJyb3Ige2V4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gb3ZlcnJpZGVzIHZpcnR1YWwgZnVuY3Rpb259ICIi IHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mNSB9CisvLyB7IGRnLWVycm9yIHtleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uIG92ZXJyaWRlcyB2aXJ0dWFsIGZ1bmN0aW9ufSAiIiB7IHRhcmdl dCAqLSotKiB9IGxpbmVfZjYgfQorLy8geyBkZy1lcnJvciB7ZXhwbGljaXQgb2JqZWN0IG1lbWJl ciBmdW5jdGlvbiBvdmVycmlkZXMgdmlydHVhbCBmdW5jdGlvbn0gIiIgeyB0YXJnZXQgKi0qLSog fSBsaW5lX2Y3IH0KKworLy8gdGhlc2Ugc2hvdWxkIGJlIHN1cHByZXNzZWQsIHRoZSB3b3JkaW5n IGNvbmZsaWN0cyB3aXRoIHRoZSBlcnJvcgorLy8gdGhlIGlzc3VlIGlzIG5vdCB0aGF0IHRoZXkg ZG9uJ3Qgb3ZlcnJpZGUsIGl0J3MgdGhhdCB0aGV5IGRvIG92ZXJyaWRlLCBhbmQgdGhhdCBpc24n dCBhbGxvd2VkCisvLyB7IGRnLWJvZ3VzICJtYXJrZWQgJ292ZXJyaWRlJywgYnV0IGRvZXMgbm90 IG92ZXJyaWRlIiAiIiB7IHhmYWlsICotKi0qIH0gbGluZV9mMSB9CisvLyB7IGRnLWJvZ3VzICJt YXJrZWQgJ2ZpbmFsJywgYnV0IGlzIG5vdCB2aXJ0dWFsIgkgIiIgeyB4ZmFpbCAqLSotKiB9IGxp bmVfZjIgfQorLy8geyBkZy1ib2d1cyAibWFya2VkICcob3ZlcnJpZGV8ZmluYWwpJyIJCSAiIiB7 IHhmYWlsICotKi0qIH0gbGluZV9mMyB9CisKKy8vIHsgZGctYm9ndXMgIm1hcmtlZCAnb3ZlcnJp ZGUnLCBidXQgZG9lcyBub3Qgb3ZlcnJpZGUiICIiIHsgeGZhaWwgKi0qLSogfSBsaW5lX2Y1IH0K Ky8vIHsgZGctYm9ndXMgIm1hcmtlZCAnZmluYWwnLCBidXQgaXMgbm90IHZpcnR1YWwiCSAiIiB7 IHhmYWlsICotKi0qIH0gbGluZV9mNiB9CisvLyB7IGRnLWJvZ3VzICJtYXJrZWQgJyhvdmVycmlk ZXxmaW5hbCknIgkJICIiIHsgeGZhaWwgKi0qLSogfSBsaW5lX2Y3IH0KKworLy8geyBkZy1ub3Rl ICJleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGRlY2xhcmVkIGhlcmUiICIiIHsgdGFyZ2V0ICot Ki0qIH0gbGluZV9mMCB9CisvLyB7IGRnLW5vdGUgImV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIg ZGVjbGFyZWQgaGVyZSIgIiIgeyB0YXJnZXQgKi0qLSogfSBsaW5lX2YxIH0KKy8vIHsgZGctbm90 ZSAiZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIiAiIiB7IHRhcmdldCAq LSotKiB9IGxpbmVfZjIgfQorLy8geyBkZy1ub3RlICJleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVy IGRlY2xhcmVkIGhlcmUiICIiIHsgdGFyZ2V0ICotKi0qIH0gbGluZV9mMyB9CisvLyB7IGRnLW5v dGUgImV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgZGVjbGFyZWQgaGVyZSIgIiIgeyB4ZmFpbCAq LSotKiB9IGxpbmVfZjQgfQorLy8geyBkZy1ub3RlICJleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVy IGRlY2xhcmVkIGhlcmUiICIiIHsgeGZhaWwgKi0qLSogfSBsaW5lX2Y1IH0KKy8vIHsgZGctbm90 ZSAiZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIiAiIiB7IHhmYWlsICot Ki0qIH0gbGluZV9mNiB9CisvLyB7IGRnLW5vdGUgImV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIg ZGVjbGFyZWQgaGVyZSIgIiIgeyB4ZmFpbCAqLSotKiB9IGxpbmVfZjcgfQorCitzdHJ1Y3QgUzEg eworICB2aXJ0dWFsIHZvaWQgZjAodGhpcyBTJikge30JCSAgICAgLy8geyBkZy1saW5lIGxpbmVf UzFfZjAgfQorICB2aXJ0dWFsIHZvaWQgZjEodGhpcyBTJikgb3ZlcnJpZGUge30JICAgICAvLyB7 IGRnLWxpbmUgbGluZV9TMV9mMSB9CisgIHZpcnR1YWwgdm9pZCBmMih0aGlzIFMmKSBmaW5hbCB7 fQkgICAgIC8vIHsgZGctbGluZSBsaW5lX1MxX2YyIH0KKyAgdmlydHVhbCB2b2lkIGYzKHRoaXMg UyYpIG92ZXJyaWRlIGZpbmFsIHt9IC8vIHsgZGctbGluZSBsaW5lX1MxX2YzIH0KKyAgdm9pZCBm NCh0aGlzIFMmKSB7fQorICB2b2lkIGY1KHRoaXMgUyYpIG92ZXJyaWRlIHt9CQkgICAgIC8vIHsg ZGctbGluZSBsaW5lX1MxX2Y1IH0KKyAgdm9pZCBmNih0aGlzIFMmKSBmaW5hbCB7fQkJICAgICAv LyB7IGRnLWxpbmUgbGluZV9TMV9mNiB9CisgIHZvaWQgZjcodGhpcyBTJikgb3ZlcnJpZGUgZmlu YWwge30JICAgICAvLyB7IGRnLWxpbmUgbGluZV9TMV9mNyB9Cit9OworCisvLyB7IGRnLWVycm9y ICJhbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIGNhbm5vdCBiZSAndmlydHVhbCci ICIiIHsgdGFyZ2V0ICotKi0qIH0gbGluZV9TMV9mMCB9CisvLyB7IGRnLWVycm9yICJhbiBleHBs aWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIGNhbm5vdCBiZSAndmlydHVhbCciICIiIHsgdGFy Z2V0ICotKi0qIH0gbGluZV9TMV9mMSB9CisvLyB7IGRnLWVycm9yICJhbiBleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uIGNhbm5vdCBiZSAndmlydHVhbCciICIiIHsgdGFyZ2V0ICotKi0q IH0gbGluZV9TMV9mMiB9CisvLyB7IGRnLWVycm9yICJhbiBleHBsaWNpdCBvYmplY3QgbWVtYmVy IGZ1bmN0aW9uIGNhbm5vdCBiZSAndmlydHVhbCciICIiIHsgdGFyZ2V0ICotKi0qIH0gbGluZV9T MV9mMyB9CisKKy8vIHsgZGctbm90ZSAiZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJl ZCBoZXJlIiAiIiB7IHRhcmdldCAqLSotKiB9IGxpbmVfUzFfZjAgfQorLy8geyBkZy1ub3RlICJl eHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGRlY2xhcmVkIGhlcmUiICIiIHsgdGFyZ2V0ICotKi0q IH0gbGluZV9TMV9mMSB9CisvLyB7IGRnLW5vdGUgImV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIg ZGVjbGFyZWQgaGVyZSIgIiIgeyB0YXJnZXQgKi0qLSogfSBsaW5lX1MxX2YyIH0KKy8vIHsgZGct bm90ZSAiZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIiAiIiB7IHRhcmdl dCAqLSotKiB9IGxpbmVfUzFfZjMgfQorCisvLyBJIHRoaW5rIEkgd2FudCB0aGVzZSBzdXBwcmVz c2VkLCBidXQgdGhlcmVzIGEgZGVjZW50IGFyZ3VtZW50IHRoYXQgdGhleSBzaG91bGQgc3RheQor Ly8gdGhlcmVzIGFyZ3VhYmx5IG5vIHJlYXNvbiB0aGUgZXJyb3IgYWJvdXQgdmlydHVhbCBzaG91 bGQgc3VwcHJlc3MgdGhlc2UKKy8vIHsgZGctYm9ndXMgIm1hcmtlZCAnb3ZlcnJpZGUnLCBidXQg ZG9lcyBub3Qgb3ZlcnJpZGUiICIiIHsgeGZhaWwgKi0qLSogfSBsaW5lX1MxX2YxIH0KKy8vIHsg ZGctYm9ndXMgIm1hcmtlZCAnZmluYWwnLCBidXQgaXMgbm90IHZpcnR1YWwiCSAiIiB7IHhmYWls ICotKi0qIH0gbGluZV9TMV9mMiB9CisvLyB7IGRnLWJvZ3VzICJtYXJrZWQgJyhvdmVycmlkZXxm aW5hbCknIgkJICIiIHsgeGZhaWwgKi0qLSogfSBsaW5lX1MxX2YzIH0KKworLy8gSSBkb24ndCB3 YW50IHRvIHN1cHByZXNzIHRoZXNlLCB0aGVyZSBpcyBub3RoaW5nIHRoYXQgY291bGQgcG9zc2li bHkgYmUgb3ZlcnJpZGRlbgorLy8gZXZlbiBpZiB0aGUgeG9iaiBwYXJhbSB3YXMgcmVtb3ZlZAor Ly8geyBkZy1lcnJvciAibWFya2VkICdvdmVycmlkZScsIGJ1dCBkb2VzIG5vdCBvdmVycmlkZSIg IiIgeyB0YXJnZXQgKi0qLSogfSBsaW5lX1MxX2Y1IH0KKy8vIHsgZGctZXJyb3IgIm1hcmtlZCAn ZmluYWwnLCBidXQgaXMgbm90IHZpcnR1YWwiCSAiIiB7IHRhcmdldCAqLSotKiB9IGxpbmVfUzFf ZjYgfQorLy8geyBkZy1lcnJvciAibWFya2VkICcob3ZlcnJpZGV8ZmluYWwpJyIJCSAiIiB7IHRh cmdldCAqLSotKiB9IGxpbmVfUzFfZjcgfQorCi0tIAoyLjQyLjEKCg== --b1_zQWNkKq0jtjUhHbr6dDzyMEnTHC8sJlesDnC8aAHnA--