Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rNqsr-00GL29-LD for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Jan 2024 08:57:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rNqsp-00AGpD-R8 for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Jan 2024 08:57:51 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rNqsp-00AGp5-8C for pgsql-hackers@lists.postgresql.org; Thu, 11 Jan 2024 08:57:51 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rNqsk-000yZT-0m for pgsql-hackers@lists.postgresql.org; Thu, 11 Jan 2024 08:57:50 +0000 Received: from mail.postgrespro.ru (webmail.mstn.postgrespro.ru [192.168.2.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: i.kartyshov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 9AAD9E21038 for ; Thu, 11 Jan 2024 11:57:44 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1704963464; bh=ZIk+tQc9IgXuWxe975SWqrkTO8Eh0OOj0L6I37N97C8=; h=Date:From:To:Subject:In-Reply-To:References:User-Agent:Message-ID: From; b=aksHC6Pw/lus15Le7PUh26tnePsTOISguLiUlqGfMpDcQ7ILk4ls827dY1rER3Cqs 3DZFJB/AWdfKVEY2mh2CAer0jewF2Nbd69JXYl0w98xShxN7SlJWgydFZH5HQ4eAdY IojQ8C+Eq46CE+QXFCCOhjspcgiuJfFYYeW0aATm4mdErrGRSWCT3Dd338nTL53vbO 0YTQCbdNRb33zqaM8isUoQKT/eMrubjwtOiDs+lZfFl3AdjU/IGih+xT/spgbVuXXh AcEPpmmtajDB0pcHhLGnNUSJ+W4gLrS9BZR9OmPVM5vkX4wPzn0ajVmRC59WbaX2nl gYah/13ovAvhw== MIME-Version: 1.0 Date: Thu, 11 Jan 2024 11:57:44 +0300 From: Kartyshov Ivan To: pgsql-hackers@lists.postgresql.org Subject: Re: [HACKERS] make async slave to wait for lsn to be replayed In-Reply-To: References: <22f122-655b3e80-3-688b3700@97587957> User-Agent: Roundcube Webmail/1.6.5 Message-ID: <5aeac7335ed3647430527eb40d409190@postgrespro.ru> X-Sender: i.kartyshov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_eea1fd1cdd96c9ddb3e84e7ca6535a2f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_eea1fd1cdd96c9ddb3e84e7ca6535a2f Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Rebased and ready for review. I left only versions (due to irreparable problems) 1) Classic (wait_classic_v4.patch) https://www.postgresql.org/message-id/3cc883048264c2e9af022033925ff8db%40postgrespro.ru ========== advantages: multiple wait events, separate WAIT FOR statement disadvantages: new words in grammar WAIT FOR [ANY | ALL] event [, ...] BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] [ WAIT FOR [ANY | ALL] event [, ...]] event: LSN value TIMEOUT number_of_milliseconds timestamp 2) After style: Kyotaro and Freund (wait_after_within_v3.patch) https://www.postgresql.org/message-id/d3ff2e363af60b345f82396992595a03%40postgrespro.ru ========== advantages: no new words in grammar disadvantages: a little harder to understand AFTER lsn_event [ WITHIN delay_milliseconds ] [, ...] BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] [ AFTER lsn_event [ WITHIN delay_milliseconds ]] START [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] [ AFTER lsn_event [ WITHIN delay_milliseconds ]] -- Ivan Kartyshov Postgres Professional: www.postgrespro.com --=_eea1fd1cdd96c9ddb3e84e7ca6535a2f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_classic_v4.patch Content-Disposition: attachment; filename=wait_classic_v4.patch; size=48108 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCBmZGE0NjkwZWFiLi40MTAwMThiNzliIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sCkBAIC0xODgsNiArMTg4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSB1cGRhdGUg ICAgICAgICAgICAgU1lTVEVNICJ1cGRhdGUuc2dtbCI+CiA8IUVOVElUWSB2YWN1dW0gICAgICAg ICAgICAgU1lTVEVNICJ2YWN1dW0uc2dtbCI+CiA8IUVOVElUWSB2YWx1ZXMgICAgICAgICAgICAg U1lTVEVNICJ2YWx1ZXMuc2dtbCI+Cis8IUVOVElUWSB3YWl0ICAgICAgICAgICAgICAgU1lTVEVN ICJ3YWl0LnNnbWwiPgogCiA8IS0tIGFwcGxpY2F0aW9ucyBhbmQgdXRpbGl0aWVzIC0tPgogPCFF TlRJVFkgY2x1c3RlcmRiICAgICAgICAgIFNZU1RFTSAiY2x1c3RlcmRiLnNnbWwiPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9iZWdpbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9iZWdp bi5zZ21sCmluZGV4IDAxNmIwMjE0ODcuLmIzYWYxNmMwOWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvYmVnaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2JlZ2luLnNnbWwKQEAg LTIxLDEzICsyMSwyMSBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KLUJFR0lOIFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gXQorQkVHSU4gWyBXT1JLIHwgVFJBTlNBQ1RJT04gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2Zvcl9ldmVudDwvcmVwbGFjZWFibGU+ CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0 aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBJU09MQVRJ T04gTEVWRUwgeyBTRVJJQUxJWkFCTEUgfCBSRVBFQVRBQkxFIFJFQUQgfCBSRUFEIENPTU1JVFRF RCB8IFJFQUQgVU5DT01NSVRURUQgfQogICAgIFJFQUQgV1JJVEUgfCBSRUFEIE9OTFkKICAgICBb IE5PVCBdIERFRkVSUkFCTEUKKworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+d2FpdF9mb3JfZXZlbnQ8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKyAgICBX QUlUIEZPUiBbQU5ZIHwgQUxMXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXZlbnQ8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KKyAgICBM U04gbHNuX3ZhbHVlCisgICAgVElNRU9VVCBudW1iZXJfb2ZfbWlsbGlzZWNvbmRzCisgICAgdGlt ZXN0YW1wCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv c3RhcnRfdHJhbnNhY3Rpb24uc2dtbAppbmRleCA3NGNjZDdlMzQ1Li4xYjU0ZWQyMDg0IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9zdGFydF90cmFuc2FjdGlvbi5zZ21sCkBAIC0yMSwxMyArMjEsMjEgQEAg UG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+ Ci1TVEFSVCBUUkFOU0FDVElPTiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFu c2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCitTVEFSVCBUUkFOU0FDVElPTiBb IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNl YWJsZT4gWywgLi4uXSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2Zvcl9l dmVudDwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJh c2U+CiAKICAgICBJU09MQVRJT04gTEVWRUwgeyBTRVJJQUxJWkFCTEUgfCBSRVBFQVRBQkxFIFJF QUQgfCBSRUFEIENPTU1JVFRFRCB8IFJFQUQgVU5DT01NSVRURUQgfQogICAgIFJFQUQgV1JJVEUg fCBSRUFEIE9OTFkKICAgICBbIE5PVCBdIERFRkVSUkFCTEUKKworPHBocmFzZT53aGVyZSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF9mb3JfZXZlbnQ8L3JlcGxhY2VhYmxlPiBp czo8L3BocmFzZT4KKyAgICBXQUlUIEZPUiBbQU5ZIHwgQUxMXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZXZlbnQ8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisKKzxwaHJhc2U+YW5kIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IGlzIG9uZSBv Zjo8L3BocmFzZT4KKyAgICBMU04gbHNuX3ZhbHVlCisgICAgVElNRU9VVCBudW1iZXJfb2ZfbWls bGlzZWNvbmRzCisgICAgdGltZXN0YW1wCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+ CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvd2FpdC5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi93YWl0LnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjZj YWUzYWQ4NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvd2FpdC5zZ21sCkBA IC0wLDAgKzEsMTQ2IEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL3dhaXQuc2dtbAorUG9zdGdy ZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5IGlkPSJzcWwtd2FpdCI+CisgPGlu ZGV4dGVybSB6b25lPSJzcWwtd2FpdCI+CisgIDxwcmltYXJ5PldBSVQgRk9SPC9wcmltYXJ5Pgor IDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPldBSVQgRk9SPC9y ZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZv PlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKwor IDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5XQUlUIEZPUjwvcmVmbmFtZT4KKyAgPHJlZnB1cnBv c2U+d2FpdCBmb3IgdGhlIHRhcmdldCA8YWNyb255bT5MU048L2Fjcm9ueW0+IHRvIGJlIHJlcGxh eWVkIG9yIGZvciBzcGVjaWZpZWQgdGltZSB0byBwYXNzPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFt ZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK1dBSVQgRk9SIFtBTlkgfCBB TExdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IFss IC4uLl0KKworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXZl bnQ8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CisgICAgTFNOIHZhbHVlCisgICAg VElNRU9VVCBudW1iZXJfb2ZfbWlsbGlzZWNvbmRzCisgICAgdGltZXN0YW1wCisKK1dBSVQgRk9S IExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9udW1iZXI8L3JlcGxhY2Vh YmxlPicKK1dBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9u dW1iZXI8L3JlcGxhY2VhYmxlPicgVElNRU9VVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+d2FpdF90aW1lb3V0PC9yZXBsYWNlYWJsZT4KK1dBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9udW1iZXI8L3JlcGxhY2VhYmxlPicsIFRJTUVTVEFNUCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF90aW1lPC9yZXBsYWNlYWJsZT4KK1dB SVQgRk9SIFRJTUVTVEFNUCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF90aW1l PC9yZXBsYWNlYWJsZT4KK1dBSVQgRk9SIEFMTCBMU04gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5sc25fbnVtYmVyPC9yZXBsYWNlYWJsZT4nIFRJTUVPVVQgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPndhaXRfdGltZW91dDwvcmVwbGFjZWFibGU+LCBUSU1FU1RBTVAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndhaXRfdGltZTwvcmVwbGFjZWFibGU+CitXQUlU IEZPUiBBTlkgTFNOICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bHNuX251bWJlcjwv cmVwbGFjZWFibGU+JywgVElNRVNUQU1QIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53 YWl0X3RpbWU8L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2Pgor CisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgor ICAgPGNvbW1hbmQ+V0FJVCBGT1I8L2NvbW1hbmQ+IHByb3ZpZGVzIGEgc2ltcGxlIGludGVycHJv Y2VzcyBjb21tdW5pY2F0aW9uCisgICBtZWNoYW5pc20gdG8gd2FpdCBmb3IgdGltZXN0YW1wLCB0 aW1lb3V0IG9yIHRoZSB0YXJnZXQgbG9nIHNlcXVlbmNlIG51bWJlcgorICAgKDxhY3JvbnltPkxT TjwvYWNyb255bT4pIG9uIHN0YW5kYnkgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1 Y3RuYW1lPgorICAgZGF0YWJhc2VzIHdpdGggbWFzdGVyLXN0YW5kYnkgYXN5bmNocm9ub3VzIHJl cGxpY2F0aW9uLiBXaGVuIHJ1biB3aXRoIHRoZQorICAgPHJlcGxhY2VhYmxlPkxTTjwvcmVwbGFj ZWFibGU+IG9wdGlvbiwgdGhlIDxjb21tYW5kPldBSVQgRk9SPC9jb21tYW5kPgorICAgY29tbWFu ZCB3YWl0cyBmb3IgdGhlIHNwZWNpZmllZCA8YWNyb255bT5MU048L2Fjcm9ueW0+IHRvIGJlIHJl cGxheWVkLgorICAgSWYgbm8gdGltZXN0YW1wIG9yIHRpbWVvdXQgd2FzIHNwZWNpZmllZCwgd2Fp dCB0aW1lIGlzIHVubGltaXRlZC4KKyAgIFdhaXRpbmcgY2FuIGJlIGludGVycnVwdGVkIHVzaW5n IDxsaXRlcmFsPkN0cmwrQzwvbGl0ZXJhbD4sIG9yCisgICBieSBzaHV0dGluZyBkb3duIHRoZSA8 bGl0ZXJhbD5wb3N0Z3JlczwvbGl0ZXJhbD4gc2VydmVyLgorICA8L3BhcmE+CisKKyA8L3JlZnNl Y3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZh cmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPkxTTjwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBTcGVjaWZ5IHRoZSB0YXJnZXQgbG9nIHNlcXVlbmNlIG51bWJl ciB0byB3YWl0IGZvci4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT5USU1FT1VUIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X3RpbWVvdXQ8L3JlcGxhY2VhYmxlPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgTGltaXQgdGhlIHRpbWUgaW50ZXJ2 YWwgdG8gd2FpdCBmb3IgdGhlIExTTiB0byBiZSByZXBsYXllZC4KKyAgICAgIFRoZSBzcGVjaWZp ZWQgPHJlcGxhY2VhYmxlPndhaXRfdGltZW91dDwvcmVwbGFjZWFibGU+IG11c3QgYmUgYW4gaW50 ZWdlcgorICAgICAgYW5kIGlzIG1lYXN1cmVkIGluIG1pbGxpc2Vjb25kcy4KKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT5VTlRJTCBUSU1FU1RBTVAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPndhaXRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBMaW1pdCB0aGUgdGltZSB0byB3YWl0IGZvciB0aGUgTFNOIHRvIGJlIHJl cGxheWVkLgorICAgICAgVGhlIHNwZWNpZmllZCA8cmVwbGFjZWFibGU+d2FpdF90aW1lPC9yZXBs YWNlYWJsZT4gbXVzdCBiZSB0aW1lc3RhbXAuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZzZWN0MT4K KworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAg IFJ1biA8bGl0ZXJhbD5XQUlUIEZPUjwvbGl0ZXJhbD4gZnJvbSA8YXBwbGljYXRpb24+cHNxbDwv YXBwbGljYXRpb24+LAorICAgbGltaXRpbmcgd2FpdCB0aW1lIHRvIDEwMDAwIG1pbGxpc2Vjb25k czoKKworPHNjcmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjA3QTZCMScgVElNRU9VVCAxMDAwMDsK K05PVElDRTogIExTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3JlYXNlIHdhaXQgdGltZS4K K0xTTiByZWFjaGVkCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorPC9zY3JlZW4+CisgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIFdhaXQgdW50aWwgdGhlIHNwZWNpZmllZCA8YWNyb255bT5M U048L2Fjcm9ueW0+IGlzIHJlcGxheWVkOgorPHNjcmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjA3 QTYxMSc7CitMU04gcmVhY2hlZAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKzwvc2NyZWVu PgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBMaW1pdCA8YWNyb255bT5MU048L2Fjcm9ueW0+ IHdhaXQgdGltZSB0byA1MDAwMDAgbWlsbGlzZWNvbmRzLAorICAgYW5kIHRoZW4gY2FuY2VsIHRo ZSBjb21tYW5kIGlmIDxhY3JvbnltPkxTTjwvYWNyb255bT4gd2FzIG5vdCByZWFjaGVkOgorPHNj cmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjBGRjc5MScgVElNRU9VVCA1MDAwMDA7CiteQ0NhbmNl bCByZXF1ZXN0IHNlbnQKK05PVElDRTogIExTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3Jl YXNlIHdhaXQgdGltZS4KK0VSUk9SOiAgY2FuY2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gdXNlciBy ZXF1ZXN0CisgTFNOIHJlYWNoZWQKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCis8L3NjcmVl bj4KKzwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0 aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGVyZSBpcyBubyA8Y29tbWFuZD5XQUlU IEZPUjwvY29tbWFuZD4gc3RhdGVtZW50IGluIHRoZSBTUUwKKyAgIHN0YW5kYXJkLgorICA8L3Bh cmE+CisgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmZXJlbmNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKaW5kZXggYTA3ZDJi NWUwMS4uMTM4ZTUyYzU2MyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbApAQCAtMjE2LDYgKzIxNiw3IEBACiAg ICAmdXBkYXRlOwogICAgJnZhY3V1bTsKICAgICZ2YWx1ZXM7CisgICAmd2FpdDsKIAogIDwvcmVm ZXJlbmNlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVj b3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4 IDFiNDhkNzE3MWEuLmQyNzEwNWI3YTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dyZWNvdmVyeS5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiYmFja3VwL2Jhc2ViYWNr dXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJjb21tYW5k cy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgImNv bW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCkBAIC0xNzg0LDYgKzE3ODUsMTMgQEAgUGVyZm9ybVdhbFJlY292ZXJ5KHZvaWQpCiAJ CQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBJZiB3ZSByZXBsYXllZCBhbiBMU04gdGhh dCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwKKwkJCSAqIHNldCBsYXRjaGVzIGluIHNoYXJlZCBt ZW1vcnkgYXJyYXkgdG8gbm90aWZ5IHRoZSB3YWl0ZXIuCisJCQkgKi8KKwkJCWlmIChYTG9nUmVj b3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ciA+PSBHZXRNaW5XYWl0KCkpCisJCQkJV2Fp dFNldExhdGNoKFhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyKTsKKwogCQkJ LyogRWxzZSwgdHJ5IHRvIGZldGNoIHRoZSBuZXh0IFdBTCByZWNvcmQgKi8KIAkJCXJlY29yZCA9 IFJlYWRSZWNvcmQoeGxvZ3ByZWZldGNoZXIsIExPRywgZmFsc2UsIHJlcGxheVRMSSk7CiAJCX0g d2hpbGUgKHJlY29yZCAhPSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXggNDhmNzM0OGY5 MS4uZDhmNjk2NWQ4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKQEAgLTYxLDYgKzYxLDcgQEAgT0JK UyA9IFwKIAl2YWN1dW0ubyBcCiAJdmFjdXVtcGFyYWxsZWwubyBcCiAJdmFyaWFibGUubyBcCi0J dmlldy5vCisJdmlldy5vIFwKKwl3YWl0Lm8KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9i YWNrZW5kL2NvbW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24u YnVpbGQgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZAppbmRleCA2ZGQwMGE0YWJk Li4zZjA2ZGM1MzQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWls ZAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZApAQCAtNTAsNCArNTAsNSBA QCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICd2YWN1dW1wYXJhbGxlbC5jJywKICAgJ3Zh cmlhYmxlLmMnLAogICAndmlldy5jJywKKyAgJ3dhaXQuYycsCiApCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy93YWl0LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOTk0ZjAyM2Y2NAotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpAQCAtMCwwICsxLDQwMyBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogd2FpdC5jCisgKgkgIEltcGxlbWVudHMgV0FJVCBG T1IsIHdoaWNoIGFsbG93cyB3YWl0aW5nIGZvciBldmVudHMgc3VjaCBhcworICoJICB0aW1lIHBh c3Npbmcgb3IgTFNOIGhhdmluZyBiZWVuIHJlcGxheWVkIG9uIHJlcGxpY2EuCisgKgorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjAsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjAsIFJlZ2VudHMgb2YgUG9z dGdyZXNQcm8KKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21tYW5k cy93YWl0LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSA8ZmxvYXQu aD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJw Z3N0YXQuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK KyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCisjaW5j bHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQu aCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9iYWNrZW5kaWQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCisjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1 ZGUgInN0b3JhZ2Uvc3Bpbi5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCisjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKKyNpbmNs dWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJleGVjdXRvci9zcGkuaCIKKyNpbmNs dWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisKKy8qIEFkZCB0byAvIGRlbGV0ZSBmcm9tIHNoYXJl ZCBtZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2b2lkIEFkZEV2ZW50KFhMb2dSZWNQdHIgbHNuX3Rv X3dhaXQpOworc3RhdGljIHZvaWQgRGVsZXRlRXZlbnQodm9pZCk7CisKKy8qIFNoYXJlZCBtZW1v cnkgc3RydWN0dXJlICovCit0eXBlZGVmIHN0cnVjdAoreworCWludAkJCWJhY2tlbmRfbWF4aWQ7 CisJcGdfYXRvbWljX3VpbnQ2NAltaW5fbHNuOworCXNsb2NrX3QJCW11dGV4OworCVhMb2dSZWNQ dHIJd2FpdGVkX2xzbltGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBXYWl0U3RhdGU7CisKK3N0 YXRpYyB2b2xhdGlsZSBXYWl0U3RhdGUgKnN0YXRlOworCisvKiBBZGQgdGhlIGV2ZW50IG9mIHRo ZSBjdXJyZW50IGJhY2tlbmQgdG8gdGhlIHNoYXJlZCBtZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2 b2lkCitBZGRFdmVudChYTG9nUmVjUHRyIGxzbl90b193YWl0KQoreworCVNwaW5Mb2NrQWNxdWly ZSgmc3RhdGUtPm11dGV4KTsKKwlpZiAoc3RhdGUtPmJhY2tlbmRfbWF4aWQgPCBNeUJhY2tlbmRJ ZCkKKwkJc3RhdGUtPmJhY2tlbmRfbWF4aWQgPSBNeUJhY2tlbmRJZDsKKworCXN0YXRlLT53YWl0 ZWRfbHNuW015QmFja2VuZElkXSA9IGxzbl90b193YWl0OworCisJaWYgKGxzbl90b193YWl0IDwg c3RhdGUtPm1pbl9sc24udmFsdWUpCisJCXN0YXRlLT5taW5fbHNuLnZhbHVlID0gbHNuX3RvX3dh aXQ7CisJU3BpbkxvY2tSZWxlYXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgorICogRGVsZXRl IGV2ZW50IG9mIHRoZSBjdXJyZW50IGJhY2tlbmQgZnJvbSB0aGUgc2hhcmVkIG1lbW9yeSBhcnJh eS4KKyAqCisgKiBUT0RPOiBDb25zaWRlciBzdGF0ZSBjbGVhbnVwIG9uIGJhY2tlbmQgZmFpbHVy ZS4KKyAqIENoZWNrOgorICogMSkgbm9tYWx8c21hcnR8ZmFzdHxpbW1lZGlhdGUgc3RvcAorICog MikgU0lHS0lMTCBhbmQgU0lHVEVSTQorICovCitzdGF0aWMgdm9pZAorRGVsZXRlRXZlbnQodm9p ZCkKK3sKKwlpbnQJCQlpOworCVhMb2dSZWNQdHIJbHNuX3RvX2RlbGV0ZSA9IHN0YXRlLT53YWl0 ZWRfbHNuW015QmFja2VuZElkXTsKKworCXN0YXRlLT53YWl0ZWRfbHNuW015QmFja2VuZElkXSA9 IEludmFsaWRYTG9nUmVjUHRyOworCisJU3BpbkxvY2tBY3F1aXJlKCZzdGF0ZS0+bXV0ZXgpOwor CisJLyogSWYgd2UgbmVlZCB0byBjaG9vc2UgdGhlIG5leHQgbWluX2xzbiwgdXBkYXRlIHN0YXRl LT5taW5fbHNuICovCisJaWYgKHN0YXRlLT5taW5fbHNuLnZhbHVlID09IGxzbl90b19kZWxldGUp CisJeworCQlzdGF0ZS0+bWluX2xzbi52YWx1ZSA9IFBHX1VJTlQ2NF9NQVg7CisJCWZvciAoaSA9 IDI7IGkgPD0gc3RhdGUtPmJhY2tlbmRfbWF4aWQ7IGkrKykKKwkJCWlmIChzdGF0ZS0+d2FpdGVk X2xzbltpXSAhPSBJbnZhbGlkWExvZ1JlY1B0ciAmJgorCQkJCXN0YXRlLT53YWl0ZWRfbHNuW2ld IDwgc3RhdGUtPm1pbl9sc24udmFsdWUpCisJCQkJc3RhdGUtPm1pbl9sc24udmFsdWUgPSBzdGF0 ZS0+d2FpdGVkX2xzbltpXTsKKwl9CisKKwlpZiAoc3RhdGUtPmJhY2tlbmRfbWF4aWQgPT0gTXlC YWNrZW5kSWQpCisJCWZvciAoaSA9IChNeUJhY2tlbmRJZCk7IGkgPj0gMjsgaS0tKQorCQkJaWYg KHN0YXRlLT53YWl0ZWRfbHNuW2ldICE9IEludmFsaWRYTG9nUmVjUHRyKQorCQkJeworCQkJCXN0 YXRlLT5iYWNrZW5kX21heGlkID0gaTsKKwkJCQlicmVhazsKKwkJCX0KKworCVNwaW5Mb2NrUmVs ZWFzZSgmc3RhdGUtPm11dGV4KTsKK30KKworLyoKKyAqIFJlcG9ydCBhbW91bnQgb2Ygc2hhcmVk IG1lbW9yeSBzcGFjZSBuZWVkZWQgZm9yIFdhaXRTdGF0ZQorICovCitTaXplCitXYWl0U2htZW1T aXplKHZvaWQpCit7CisJU2l6ZQkJc2l6ZTsKKworCXNpemUgPSBvZmZzZXRvZihXYWl0U3RhdGUs IHdhaXRlZF9sc24pOworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShNYXhCYWNrZW5k cyArIDEsIHNpemVvZihYTG9nUmVjUHRyKSkpOworCXJldHVybiBzaXplOworfQorCisvKiBJbml0 IGFycmF5IG9mIGV2ZW50cyBpbiBzaGFyZWQgbWVtb3J5ICovCit2b2lkCitXYWl0U2htZW1Jbml0 KHZvaWQpCit7CisJYm9vbAkJZm91bmQ7CisJdWludDMyCQlpOworCisJc3RhdGUgPSAoV2FpdFN0 YXRlICopIFNobWVtSW5pdFN0cnVjdCgicGdfd2FpdF9sc24iLAorCQkJCQkJCQkJCSAgV2FpdFNo bWVtU2l6ZSgpLAorCQkJCQkJCQkJCSAgJmZvdW5kKTsKKwlpZiAoIWZvdW5kKQorCXsKKwkJU3Bp bkxvY2tJbml0KCZzdGF0ZS0+bXV0ZXgpOworCisJCWZvciAoaSA9IDA7IGkgPCAoTWF4QmFja2Vu ZHMgKyAxKTsgaSsrKQorCQkJc3RhdGUtPndhaXRlZF9sc25baV0gPSBJbnZhbGlkWExvZ1JlY1B0 cjsKKworCQlzdGF0ZS0+YmFja2VuZF9tYXhpZCA9IDA7CisJCXN0YXRlLT5taW5fbHNuLnZhbHVl ID0gUEdfVUlOVDY0X01BWDsKKwl9Cit9CisKKy8qIFNldCBhbGwgbGF0Y2hlcyBpbiBzaGFyZWQg bWVtb3J5IHRvIHNpZ25hbCB0aGF0IG5ldyBMU04gaGFzIGJlZW4gcmVwbGF5ZWQgKi8KK3ZvaWQK K1dhaXRTZXRMYXRjaChYTG9nUmVjUHRyIGN1cl9sc24pCit7CisJdWludDMyCQlpOworCWludCAJ CWJhY2tlbmRfbWF4aWQ7CisJUEdQUk9DCSAgICpiYWNrZW5kOworCisJU3BpbkxvY2tBY3F1aXJl KCZzdGF0ZS0+bXV0ZXgpOworCWJhY2tlbmRfbWF4aWQgPSBzdGF0ZS0+YmFja2VuZF9tYXhpZDsK KwlTcGluTG9ja1JlbGVhc2UoJnN0YXRlLT5tdXRleCk7CisKKwlmb3IgKGkgPSAyOyBpIDw9IGJh Y2tlbmRfbWF4aWQ7IGkrKykKKwl7CisJCWJhY2tlbmQgPSBCYWNrZW5kSWRHZXRQcm9jKGkpOwor CQlpZiAoc3RhdGUtPndhaXRlZF9sc25baV0gIT0gMCkKKwkJeworCQkJaWYgKGJhY2tlbmQgJiYg c3RhdGUtPndhaXRlZF9sc25baV0gPD0gY3VyX2xzbikKKwkJCQlTZXRMYXRjaCgmYmFja2VuZC0+ cHJvY0xhdGNoKTsKKwkJfQorCX0KK30KKworLyogR2V0IG1pbmltYWwgTFNOIHRoYXQgd2lsbCBi ZSBuZXh0ICovCitYTG9nUmVjUHRyCitHZXRNaW5XYWl0KHZvaWQpCit7CisJcmV0dXJuIHBnX2F0 b21pY19yZWFkX3U2NCgmc3RhdGUtPm1pbl9sc24pOworfQorCisvKgorICogT24gV0FJVCB1c2Ug TXlMYXRjaCB0byB3YWl0IHRpbGwgTFNOIGlzIHJlcGxheWVkLAorICogcG9zdG1hc3RlciBkaWVz IG9yIHRpbWVvdXQgaGFwcGVucy4KKyAqLworaW50CitXYWl0VXRpbGl0eShYTG9nUmVjUHRyIGxz biwgY29uc3QgZmxvYXQ4IHNlY3MpCit7CisJWExvZ1JlY1B0cgljdXJfbHNuID0gR2V0WExvZ1Jl cGxheVJlY1B0cihOVUxMKTsKKwlpbnQJCQlsYXRjaF9ldmVudHM7CisJZmxvYXQ4CQllbmR0aW1l OworCXVpbnQJCXJlcyA9IDA7CisKKwlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCXsKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKKwkJCQllcnJtc2coIldvcmsgb25seSBpbiBzdGFuZGJ5IG1vZGUiKSkp OworCQlyZXR1cm4gZmFsc2U7CisJfQorCisjZGVmaW5lIEdldE5vd0Zsb2F0KCkJKChmbG9hdDgp IEdldEN1cnJlbnRUaW1lc3RhbXAoKSAvIDEwMDAwMDAuMCkKKwllbmR0aW1lID0gR2V0Tm93Rmxv YXQoKSArIHNlY3M7CisKKwlsYXRjaF9ldmVudHMgPSBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSDsKKworCWlmIChsc24gIT0gSW52YWxpZFhMb2dSZWNQdHIpCisJeworCQkvKiBKdXN0 IGNoZWNrIGlmIHdlIHJlYWNoZWQgKi8KKwkJaWYgKGxzbiA8IGN1cl9sc24gfHwgc2VjcyA8IDAp CisJCQlyZXR1cm4gKGxzbiA8IGN1cl9sc24pOworCisJCWxhdGNoX2V2ZW50cyB8PSBXTF9MQVRD SF9TRVQ7CisJCUFkZEV2ZW50KGxzbik7CisJfQorCWVsc2UgaWYgKCFzZWNzKQorCQlyZXR1cm4g MTsKKworCWZvciAoOzspCisJeworCQlpbnQJCQlyYzsKKwkJZmxvYXQ4CQlkZWxheSA9IDA7CisJ CWxvbmcJCWRlbGF5X21zOworCisJCS8qIElmIExTTiBoYXMgYmVlbiByZXBsYXllZCAqLworCQlp ZiAobHNuICYmIGxzbiA8PSBjdXJfbHNuKQorCQkJYnJlYWs7CisKKwkJaWYgKHNlY3MgPiAwKQor CQkJZGVsYXkgPSBlbmR0aW1lIC0gR2V0Tm93RmxvYXQoKTsKKwkJZWxzZSBpZiAoc2VjcyA9PSAw KQorCQkJLyoKKwkJCSogSWYgd2Ugd2FpdCBmb3JldmVyLCB0aGVuIDEgbWludXRlIHRpbWVvdXQg dG8gY2hlY2sKKwkJCSogZm9yIEludGVydXB0cy4KKwkJCSovCisJCQlkZWxheSA9IDYwOworCisJ CWlmIChkZWxheSA+IDAuMCkKKwkJCWRlbGF5X21zID0gKGxvbmcpIGNlaWwoZGVsYXkgKiAxMDAw LjApOworCQllbHNlCisJCQlicmVhazsKKworCQkvKgorCQkgKiBJZiByZWNlaXZlZCBhbiBpbnRl cnJ1cHRpb24gZnJvbSBDSEVDS19GT1JfSU5URVJSVVBUUywKKwkJICogdGhlbiBkZWxldGUgdGhl IGN1cnJlbnQgZXZlbnQgZnJvbSBhcnJheS4KKwkJICovCisJCWlmIChJbnRlcnJ1cHRQZW5kaW5n KQorCQl7CisJCQlpZiAobHNuICE9IEludmFsaWRYTG9nUmVjUHRyKQorCQkJCURlbGV0ZUV2ZW50 KCk7CisJCQlQcm9jZXNzSW50ZXJydXB0cygpOworCQl9CisKKwkJLyogSWYgcG9zdG1hc3RlciBk aWVzLCBmaW5pc2ggaW1tZWRpYXRlbHkgKi8KKwkJaWYgKCFQb3N0bWFzdGVySXNBbGl2ZSgpKQor CQkJYnJlYWs7CisKKwkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwgbGF0Y2hfZXZlbnRzLCBkZWxh eV9tcywKKwkJCQkJICAgV0FJVF9FVkVOVF9DTElFTlRfUkVBRCk7CisKKwkJaWYgKHJjICYgV0xf TEFUQ0hfU0VUKQorCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKworCQlpZiAobHNuICYmIHJjICYg V0xfTEFUQ0hfU0VUKQorCQkJY3VyX2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJ fQorCisJaWYgKGxzbiAhPSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJRGVsZXRlRXZlbnQoKTsKKwor CWlmIChsc24gIT0gSW52YWxpZFhMb2dSZWNQdHIgJiYgbHNuID4gY3VyX2xzbikKKwkJZWxvZyhO T1RJQ0UsIkxTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3JlYXNlIHdhaXQgdGltZS4iKTsK KwllbHNlCisJCXJlcyA9IDE7CisKKwlyZXR1cm4gcmVzOworfQorCisvKgorICogR2V0IHRoZSBh bW91bnQgb2Ygc2Vjb25kcyBsZWZ0IHRpbGwgdGhlIHNwZWNpZmllZCB0aW1lLgorICovCitmbG9h dDgKK1dhaXRUaW1lUmVzb2x2ZShDb25zdCAqdGltZSkKK3sKKwlpbnQJCQlyZXQ7CisJZmxvYXQ4 CQl2YWw7CisJT2lkCQkJdHlwZXNbXSA9IHsgdGltZS0+Y29uc3R0eXBlIH07CisJRGF0dW0JCXZh bHVlc1tdID0geyB0aW1lLT5jb25zdHZhbHVlIH07CisJY2hhcgkJbnVsbHNbXSA9IHsgIiAiIH07 CisJRGF0dW0JCXJlc3VsdDsKKwlib29sCQlpc251bGw7CisKKwlTUElfY29ubmVjdCgpOworCisJ aWYgKHRpbWUtPmNvbnN0dHlwZSA9PSAxMDgzKQorCQlyZXQgPSBTUElfZXhlY3V0ZV93aXRoX2Fy Z3MoInNlbGVjdCBleHRyYWN0IChlcG9jaCBmcm9tICgkMSAtIG5vdygpOjp0aW1lKSkiLAorCQkJ CQkJCQkJMSwgdHlwZXMsIHZhbHVlcywgbnVsbHMsIHRydWUsIDApOworCWVsc2UgaWYgKHRpbWUt PmNvbnN0dHlwZSA9PSAxMjY2KQorCQlyZXQgPSBTUElfZXhlY3V0ZV93aXRoX2FyZ3MoInNlbGVj dCBleHRyYWN0IChlcG9jaCBmcm9tICh0aW1lem9uZSgnVVRDJywkMSk6OnRpbWUgLSB0aW1lem9u ZSgnVVRDJywgbm93KCk6OnRpbWV0eik6OnRpbWUpKSIsCisJCQkJCQkJCQkxLCB0eXBlcywgdmFs dWVzLCBudWxscywgdHJ1ZSwgMCk7CisJZWxzZQorCQlyZXQgPSBTUElfZXhlY3V0ZV93aXRoX2Fy Z3MoInNlbGVjdCBleHRyYWN0IChlcG9jaCBmcm9tICgkMSAtIG5vdygpKSkiLAorCQkJCQkJCQkJ MSwgdHlwZXMsIHZhbHVlcywgbnVsbHMsIHRydWUsIDApOworCisJQXNzZXJ0KHJldCA+PSAwKTsK KwlyZXN1bHQgPSBTUElfZ2V0YmludmFsKFNQSV90dXB0YWJsZS0+dmFsc1swXSwKKwkJCQkJCSAg IFNQSV90dXB0YWJsZS0+dHVwZGVzYywKKwkJCQkJCSAgIDEsICZpc251bGwpOworCisJQXNzZXJ0 KCFpc251bGwpOworCXZhbCA9IERhdHVtR2V0RmxvYXQ4KHJlc3VsdCk7CisKKwllbG9nKElORk8s ICJ0aW1lOiAlZiIsIHZhbCk7CisKKwlTUElfZmluaXNoKCk7CisJcmV0dXJuIHZhbDsKK30KKwor LyogSW1wbGVtZW50YXRpb24gb2YgV0FJVCBGT1IgKi8KK2ludAorV2FpdE1haW4oV2FpdFN0bXQg KnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCkKK3sKKwlMaXN0Q2VsbCAgICpldmVudHM7CisJVHVw bGVEZXNjCXR1cGRlc2M7CisJVHVwT3V0cHV0U3RhdGUgKnRzdGF0ZTsKKwlmbG9hdDgJCWRlbGF5 ID0gMDsKKwlmbG9hdDgJCWZpbmFsX2RlbGF5ID0gMDsKKwlYTG9nUmVjUHRyCWxzbiA9IEludmFs aWRYTG9nUmVjUHRyOworCVhMb2dSZWNQdHIJZmluYWxfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7 CisJYm9vbAkJaGFzX2xzbiA9IGZhbHNlOworCWJvb2wJCXdhaXRfZm9yZXZlciA9IHRydWU7CisJ aW50CQkJcmVzID0gMDsKKworCWlmIChzdG10LT5zdHJhdGVneSA9PSBXQUlUX0ZPUl9BTlkpCisJ eworCQkvKiBQcmVwYXJlIHRvIGZpbmQgbWluaW11bSBMU04gYW5kIGRlbGF5ICovCisJCWZpbmFs X2RlbGF5ID0gREJMX01BWDsKKwkJZmluYWxfbHNuID0gUEdfVUlOVDY0X01BWDsKKwl9CisKKwkv KiBFeHRyYWN0IG9wdGlvbnMgZnJvbSB0aGUgc3RhdGVtZW50IG5vZGUgdHJlZSAqLworCWZvcmVh Y2goZXZlbnRzLCBzdG10LT5ldmVudHMpCisJeworCQlXYWl0U3RtdCAgICpldmVudCA9IChXYWl0 U3RtdCAqKSBsZmlyc3QoZXZlbnRzKTsKKworCQkvKiBMU04gdG8gd2FpdCBmb3IgKi8KKwkJaWYg KGV2ZW50LT5sc24pCisJCXsKKwkJCWhhc19sc24gPSB0cnVlOworCQkJbHNuID0gRGF0dW1HZXRM U04oCisJCQkJCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2xzbl9pbiwKKwkJCQkJCQlDU3RyaW5n R2V0RGF0dW0oZXZlbnQtPmxzbikpKTsKKworCQkJLyoKKwkJCSAqIFdoZW4gd2FpdGluZyBmb3Ig QUxMLCBzZWxlY3QgbWF4IExTTiB0byB3YWl0IGZvci4KKwkJCSAqIFdoZW4gd2FpdGluZyBmb3Ig QU5ZLCBzZWxlY3QgbWluIExTTiB0byB3YWl0IGZvci4KKwkJCSAqLworCQkJaWYgKChzdG10LT5z dHJhdGVneSA9PSBXQUlUX0ZPUl9BTEwgJiYgZmluYWxfbHNuIDw9IGxzbikgfHwKKwkJCQkoc3Rt dC0+c3RyYXRlZ3kgPT0gV0FJVF9GT1JfQU5ZICYmIGZpbmFsX2xzbiA+IGxzbikpCisJCQl7CisJ CQkJZmluYWxfbHNuID0gbHNuOworCQkJfQorCQl9CisKKwkJLyogVGltZSBkZWxheSB0byB3YWl0 IGZvciAqLworCQlpZiAoZXZlbnQtPnRpbWUgfHwgZXZlbnQtPmRlbGF5KQorCQl7CisJCQl3YWl0 X2ZvcmV2ZXIgPSBmYWxzZTsKKworCQkJaWYgKGV2ZW50LT5kZWxheSkKKwkJCQlkZWxheSA9IGV2 ZW50LT5kZWxheSAvIDEwMDAuMDsKKworCQkJaWYgKGV2ZW50LT50aW1lKQorCQkJeworCQkJCUNv bnN0ICp0aW1lID0gKENvbnN0ICopIGV2ZW50LT50aW1lOworCQkJCWRlbGF5ID0gV2FpdFRpbWVS ZXNvbHZlKHRpbWUpOworCQkJfQorCisJCQkvKgorCQkJICogV2hlbiB3YWl0aW5nIGZvciBBTEws IHNlbGVjdCBtYXggZGVsYXkgdG8gd2FpdCBmb3IuCisJCQkgKiBXaGVuIHdhaXRpbmcgZm9yIEFO WSwgc2VsZWN0IG1pbiBkZWxheSB0byB3YWl0IGZvci4KKwkJCSAqLworCQkJaWYgKChzdG10LT5z dHJhdGVneSA9PSBXQUlUX0ZPUl9BTEwgJiYgZmluYWxfZGVsYXkgPD0gZGVsYXkpIHx8CisJCQkJ KHN0bXQtPnN0cmF0ZWd5ID09IFdBSVRfRk9SX0FOWSAmJiBmaW5hbF9kZWxheSA+IGRlbGF5KSkK KwkJCXsKKwkJCQlmaW5hbF9kZWxheSA9IGRlbGF5OworCQkJfQorCQl9CisJfQorCWlmICh3YWl0 X2ZvcmV2ZXIpCisJCWZpbmFsX2RlbGF5ID0gMDsKKwlpZiAoIWhhc19sc24pCisJCWZpbmFsX2xz biA9IEludmFsaWRYTG9nUmVjUHRyOworCisJcmVzID0gV2FpdFV0aWxpdHkoZmluYWxfbHNuLCBm aW5hbF9kZWxheSk7CisKKwkvKiBOZWVkIGEgdHVwbGUgZGVzY3JpcHRvciByZXByZXNlbnRpbmcg YSBzaW5nbGUgVEVYVCBjb2x1bW4gKi8KKwl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURl c2MoMSk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxLCAiTFNO IHJlYWNoZWQiLCBURVhUT0lELCAtMSwgMCk7CisJLyogUHJlcGFyZSBmb3IgcHJvamVjdGlvbiBv ZiB0dXBsZXMgKi8KKwl0c3RhdGUgPSBiZWdpbl90dXBfb3V0cHV0X3R1cGRlc2MoZGVzdCwgdHVw ZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisKKwkvKiBTZW5kIGl0ICovCisJZG9fdGV4dF9v dXRwdXRfb25lbGluZSh0c3RhdGUsIHJlcz8idCI6ImYiKTsKKwllbmRfdHVwX291dHB1dCh0c3Rh dGUpOworCXJldHVybiByZXM7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCAwNmZjOGNlOThiLi4z ZTQxNTk2NzgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTg1LDYgKzg1LDcgQEAgc3RhdGljIFF1 ZXJ5ICp0cmFuc2Zvcm1DcmVhdGVUYWJsZUFzU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJ CQkJCQkJIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10KTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3Jt Q2FsbFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQlDYWxsU3RtdCAqc3RtdCk7Citz dGF0aWMgdm9pZCB0cmFuc2Zvcm1XYWl0Rm9yU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFdhaXRT dG10ICpzdG10KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUxvY2tpbmdDbGF1c2UoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBRdWVyeSAqcXJ5LAogCQkJCQkJCQkgICBMb2NraW5nQ2xhdXNlICpsYywgYm9v bCBwdXNoZWREb3duKTsKICNpZmRlZiBSQVdfRVhQUkVTU0lPTl9DT1ZFUkFHRV9URVNUCkBAIC00 MDUsNyArNDA2LDIwIEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpw YXJzZVRyZWUpCiAJCQlyZXN1bHQgPSB0cmFuc2Zvcm1DYWxsU3RtdChwc3RhdGUsCiAJCQkJCQkJ CQkgICAoQ2FsbFN0bXQgKikgcGFyc2VUcmVlKTsKIAkJCWJyZWFrOwotCisJCWNhc2UgVF9XYWl0 U3RtdDoKKwkJCXRyYW5zZm9ybVdhaXRGb3JTdG10KHBzdGF0ZSwgKFdhaXRTdG10ICopIHBhcnNl VHJlZSk7CisJCQlyZXN1bHQgPSBtYWtlTm9kZShRdWVyeSk7CisJCQlyZXN1bHQtPmNvbW1hbmRU eXBlID0gQ01EX1VUSUxJVFk7CisJCQlyZXN1bHQtPnV0aWxpdHlTdG10ID0gKE5vZGUgKikgcGFy c2VUcmVlOworCQkJYnJlYWs7CisJCWNhc2UgVF9UcmFuc2FjdGlvblN0bXQ6CisJCQl7CisJCQkJ VHJhbnNhY3Rpb25TdG10ICpzdG10ID0gKFRyYW5zYWN0aW9uU3RtdCAqKSBwYXJzZVRyZWU7CisJ CQkJaWYgKChzdG10LT5raW5kID09IFRSQU5TX1NUTVRfQkVHSU4gfHwKKwkJCQkJCXN0bXQtPmtp bmQgPT0gVFJBTlNfU1RNVF9TVEFSVCkgJiYgc3RtdC0+d2FpdCkKKwkJCQkJdHJhbnNmb3JtV2Fp dEZvclN0bXQocHN0YXRlLCAoV2FpdFN0bXQgKikgc3RtdC0+d2FpdCk7CisJCQl9CisJCQkvKiBu byBicmVhayBoZXJlIC0gd2Ugd2FudCB0byBmYWxsIHRocm91Z2ggdG8gdGhlIGRlZmF1bHQgKi8K IAkJZGVmYXVsdDoKIAogCQkJLyoKQEAgLTM1NTksNiArMzU3MywyMyBAQCBhcHBseUxvY2tpbmdD bGF1c2UoUXVlcnkgKnFyeSwgSW5kZXggcnRpbmRleCwKIAlxcnktPnJvd01hcmtzID0gbGFwcGVu ZChxcnktPnJvd01hcmtzLCByYyk7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1XYWl0Rm9yU3RtdCAt CisgKgl0cmFuc2Zvcm0gdGhlIFdBSVQgRk9SIGNsYXVzZSBvZiB0aGUgQkVHSU4gc3RhdGVtZW50 CisgKgl0cmFuc2Zvcm0gdGhlIFdBSVQgRk9SIHN0YXRlbWVudCAoVE9ETzogcmVtb3ZlIHRoaXMg bGluZSBpZiB3ZSBkb24ndCBrZWVwIGl0KQorICovCitzdGF0aWMgdm9pZAordHJhbnNmb3JtV2Fp dEZvclN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXYWl0U3RtdCAqc3RtdCkKK3sKKwlMaXN0Q2Vs bCAgICpldmVudHM7CisKKwlmb3JlYWNoKGV2ZW50cywgc3RtdC0+ZXZlbnRzKQorCXsKKwkJV2Fp dFN0bXQgICAqZXZlbnQgPSAoV2FpdFN0bXQgKikgbGZpcnN0KGV2ZW50cyk7CisJCWV2ZW50LT50 aW1lID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGV2ZW50LT50aW1lLCBFWFBSX0tJTkRfT1RIRVIp OworCX0KK30KKwogLyoKICAqIENvdmVyYWdlIHRlc3RpbmcgZm9yIHJhd19leHByZXNzaW9uX3Ry ZWVfd2Fsa2VyKCkuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBi L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNmI4ODA5NmU4ZS4uMDUwOWNkMzE0NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK IAkJU2VjTGFiZWxTdG10IFNlbGVjdFN0bXQgVHJhbnNhY3Rpb25TdG10IFRyYW5zYWN0aW9uU3Rt dExlZ2FjeSBUcnVuY2F0ZVN0bXQKIAkJVW5saXN0ZW5TdG10IFVwZGF0ZVN0bXQgVmFjdXVtU3Rt dAogCQlWYXJpYWJsZVJlc2V0U3RtdCBWYXJpYWJsZVNldFN0bXQgVmFyaWFibGVTaG93U3RtdAot CQlWaWV3U3RtdCBDaGVja1BvaW50U3RtdCBDcmVhdGVDb252ZXJzaW9uU3RtdAorCQlWaWV3U3Rt dCBXYWl0U3RtdCBDaGVja1BvaW50U3RtdCBDcmVhdGVDb252ZXJzaW9uU3RtdAogCQlEZWFsbG9j YXRlU3RtdCBQcmVwYXJlU3RtdCBFeGVjdXRlU3RtdAogCQlEcm9wT3duZWRTdG10IFJlYXNzaWdu T3duZWRTdG10CiAJCUFsdGVyVFNDb25maWd1cmF0aW9uU3RtdCBBbHRlclRTRGljdGlvbmFyeVN0 bXQKQEAgLTUzNiw3ICs1MzYsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5v ZGU+CWNhc2VfZXhwciBjYXNlX2FyZyB3aGVuX2NsYXVzZSBjYXNlX2RlZmF1bHQKICV0eXBlIDxs aXN0Pgl3aGVuX2NsYXVzZV9saXN0CiAldHlwZSA8bm9kZT4Jb3B0X3NlYXJjaF9jbGF1c2Ugb3B0 X2N5Y2xlX2NsYXVzZQotJXR5cGUgPGl2YWw+CXN1Yl90eXBlIG9wdF9tYXRlcmlhbGl6ZWQKKyV0 eXBlIDxpdmFsPglzdWJfdHlwZSB3YWl0X3N0cmF0ZWd5IG9wdF9tYXRlcmlhbGl6ZWQKICV0eXBl IDxub2RlPglOdW1lcmljT25seQogJXR5cGUgPGxpc3Q+CU51bWVyaWNPbmx5X2xpc3QKICV0eXBl IDxhbGlhcz4JYWxpYXNfY2xhdXNlIG9wdF9hbGlhc19jbGF1c2Ugb3B0X2FsaWFzX2NsYXVzZV9m b3Jfam9pbl91c2luZwpAQCAtNjQ0LDYgKzY0NCw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAldHlwZSA8cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91bmRTcGVjCiAldHlwZSA8bGlzdD4J CWhhc2hfcGFydGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQorJXR5 cGUgPGxpc3Q+CQl3YWl0X2xpc3QKKyV0eXBlIDxub2RlPgkJV2FpdEV2ZW50IHdhaXRfZm9yCiAK ICV0eXBlIDxub2RlPglqc29uX2Zvcm1hdF9jbGF1c2UKIAkJCQlqc29uX2Zvcm1hdF9jbGF1c2Vf b3B0CkBAIC03MjksNyArNzMxLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAogCUxBQkVM IExBTkdVQUdFIExBUkdFX1AgTEFTVF9QIExBVEVSQUxfUAogCUxFQURJTkcgTEVBS1BST09GIExF QVNUIExFRlQgTEVWRUwgTElLRSBMSU1JVCBMSVNURU4gTE9BRCBMT0NBTAotCUxPQ0FMVElNRSBM T0NBTFRJTUVTVEFNUCBMT0NBVElPTiBMT0NLX1AgTE9DS0VEIExPR0dFRAorCUxPQ0FMVElNRSBM T0NBTFRJTUVTVEFNUCBMT0NBVElPTiBMT0NLX1AgTE9DS0VEIExPR0dFRCBMU04KIAogCU1BUFBJ TkcgTUFUQ0ggTUFUQ0hFRCBNQVRFUklBTElaRUQgTUFYVkFMVUUgTUVSR0UgTUVUSE9ECiAJTUlO VVRFX1AgTUlOVkFMVUUgTU9ERSBNT05USF9QIE1PVkUKQEAgLTc2Myw3ICs3NjUsNyBAQCBzdGF0 aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogCVNVQlNDUklQVElPTiBTVUJTVFJJTkcgU1VQUE9SVCBTWU1N RVRSSUMgU1lTSUQgU1lTVEVNX1AgU1lTVEVNX1VTRVIKIAogCVRBQkxFIFRBQkxFUyBUQUJMRVNB TVBMRSBUQUJMRVNQQUNFIFRFTVAgVEVNUExBVEUgVEVNUE9SQVJZIFRFWFRfUCBUSEVOCi0JVElF UyBUSU1FIFRJTUVTVEFNUCBUTyBUUkFJTElORyBUUkFOU0FDVElPTiBUUkFOU0ZPUk0KKwlUSUVT IFRJTUUgVElNRU9VVCBUSU1FU1RBTVAgVE8gVFJBSUxJTkcgVFJBTlNBQ1RJT04gVFJBTlNGT1JN CiAJVFJFQVQgVFJJR0dFUiBUUklNIFRSVUVfUAogCVRSVU5DQVRFIFRSVVNURUQgVFlQRV9QIFRZ UEVTX1AKIApAQCAtNzczLDcgKzc3NSw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmll d1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJVkFD VVVNIFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklB RElDIFZBUllJTkcKIAlWRVJCT1NFIFZFUlNJT05fUCBWSUVXIFZJRVdTIFZPTEFUSUxFCiAKLQlX SEVOIFdIRVJFIFdISVRFU1BBQ0VfUCBXSU5ET1cgV0lUSCBXSVRISU4gV0lUSE9VVCBXT1JLIFdS QVBQRVIgV1JJVEUKKwlXQUlUIFdIRU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRPVworCVdJVEgg V0lUSElOIFdJVEhPVVQgV09SSyBXUkFQUEVSIFdSSVRFCiAKIAlYTUxfUCBYTUxBVFRSSUJVVEVT IFhNTENPTkNBVCBYTUxFTEVNRU5UIFhNTEVYSVNUUyBYTUxGT1JFU1QgWE1MTkFNRVNQQUNFUwog CVhNTFBBUlNFIFhNTFBJIFhNTFJPT1QgWE1MU0VSSUFMSVpFIFhNTFRBQkxFCkBAIC0xMTAyLDYg KzExMDUsNyBAQCBzdG10OgogCQkJfCBWYXJpYWJsZVNldFN0bXQKIAkJCXwgVmFyaWFibGVTaG93 U3RtdAogCQkJfCBWaWV3U3RtdAorCQkJfCBXYWl0U3RtdAogCQkJfCAvKkVNUFRZKi8KIAkJCQl7 ICQkID0gTlVMTDsgfQogCQk7CkBAIC0xMDkyMSwxMiArMTA5MjUsMTMgQEAgVHJhbnNhY3Rpb25T dG10OgogCQkJCQluLT5sb2NhdGlvbiA9IC0xOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJ fQotCQkJfCBTVEFSVCBUUkFOU0FDVElPTiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkK KwkJCXwgU1RBUlQgVFJBTlNBQ1RJT04gdHJhbnNhY3Rpb25fbW9kZV9saXN0X29yX2VtcHR5IHdh aXRfZm9yCiAJCQkJewogCQkJCQlUcmFuc2FjdGlvblN0bXQgKm4gPSBtYWtlTm9kZShUcmFuc2Fj dGlvblN0bXQpOwogCiAJCQkJCW4tPmtpbmQgPSBUUkFOU19TVE1UX1NUQVJUOwogCQkJCQluLT5v cHRpb25zID0gJDM7CisJCQkJCW4tPndhaXQgPSAkNDsKIAkJCQkJbi0+bG9jYXRpb24gPSAtMTsK IAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTExMDI1LDEyICsxMTAzMCwxMyBAQCBU cmFuc2FjdGlvblN0bXQ6CiAJCTsKIAogVHJhbnNhY3Rpb25TdG10TGVnYWN5OgotCQkJQkVHSU5f UCBvcHRfdHJhbnNhY3Rpb24gdHJhbnNhY3Rpb25fbW9kZV9saXN0X29yX2VtcHR5CisJCQlCRUdJ Tl9QIG9wdF90cmFuc2FjdGlvbiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkgd2FpdF9m b3IKIAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0aW9u U3RtdCk7CiAKIAkJCQkJbi0+a2luZCA9IFRSQU5TX1NUTVRfQkVHSU47CiAJCQkJCW4tPm9wdGlv bnMgPSAkMzsKKwkJCQkJbi0+d2FpdCA9ICQ0OwogCQkJCQluLT5sb2NhdGlvbiA9IC0xOwogCQkJ CQkkJCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtMTU4NjIsNiArMTU4NjgsNzQgQEAgeG1sX3Bh c3NpbmdfbWVjaDoKIAkJCXwgQlkgVkFMVUVfUAogCQk7CiAKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICoKKyAqCQlRVUVSWToKKyAqCQkJCVdBSVQgRk9SIDxldmVudD4gWywgPGV2ZW50PiAuLi5d CisgKgkJCQlldmVudCBpcyBvbmUgb2Y6CisgKgkJCQkJTFNOIHZhbHVlCisgKgkJCQkJVElNRU9V VCBkZWxheQorICoJCQkJCXRpbWVzdGFtcAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dh aXRTdG10OgorCQkJV0FJVCBGT1Igd2FpdF9zdHJhdGVneSB3YWl0X2xpc3QKKwkJCQl7CisJCQkJ CVdhaXRTdG10ICpuID0gbWFrZU5vZGUoV2FpdFN0bXQpOworCQkJCQluLT5zdHJhdGVneSA9ICQz OworCQkJCQluLT5ldmVudHMgPSAkNDsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJ Oword2FpdF9mb3I6CisJCQlXQUlUIEZPUiB3YWl0X3N0cmF0ZWd5IHdhaXRfbGlzdAorCQkJCXsK KwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0U3RtdCk7CisJCQkJCW4tPnN0cmF0ZWd5 ID0gJDM7CisJCQkJCW4tPmV2ZW50cyA9ICQ0OworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9 CisJCQl8IC8qIEVNUFRZICovCQl7ICQkID0gTlVMTDsgfTsKKword2FpdF9zdHJhdGVneToKKwkJ CUFMTAkJCQkJeyAkJCA9IFdBSVRfRk9SX0FMTDsgfQorCQkJfCBBTlkJCQkJeyAkJCA9IFdBSVRf Rk9SX0FOWTsgfQorCQkJfCAvKiBFTVBUWSAqLwkJeyAkJCA9IFdBSVRfRk9SX0FMTDsgfQorCQk7 CisKK3dhaXRfbGlzdDoKKwkJCVdhaXRFdmVudAkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9 CisJCQl8IHdhaXRfbGlzdCAnLCcgV2FpdEV2ZW50CXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0K KwkJCXwgd2FpdF9saXN0IFdhaXRFdmVudAkJeyAkJCA9IGxhcHBlbmQoJDEsICQyKTsgfQorCQk7 CisKK1dhaXRFdmVudDoKKwkJCUxTTiBTY29uc3QKKwkJCQl7CisJCQkJCVdhaXRTdG10ICpuID0g bWFrZU5vZGUoV2FpdFN0bXQpOworCQkJCQluLT5sc24gPSAkMjsKKwkJCQkJbi0+ZGVsYXkgPSAw OworCQkJCQluLT50aW1lID0gTlVMTDsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJ fCBUSU1FT1VUIEljb25zdAorCQkJCXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0 U3RtdCk7CisJCQkJCW4tPmxzbiA9IE5VTEw7CisJCQkJCW4tPmRlbGF5ID0gJDI7CisJCQkJCW4t PnRpbWUgPSBOVUxMOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQl8IENvbnN0RGF0 ZXRpbWUgU2NvbnN0CisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9IG1ha2VOb2RlKFdhaXRTdG10 KTsKKwkJCQkJbi0+bHNuID0gTlVMTDsKKwkJCQkJbi0+ZGVsYXkgPSAwOworCQkJCQluLT50aW1l ID0gbWFrZVN0cmluZ0NvbnN0Q2FzdCgkMiwgQDIsICQxKTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47 CisJCQkJfQorCQkJOworCiAKIC8qCiAgKiBBZ2dyZWdhdGUgZGVjb3JhdGlvbiBjbGF1c2VzCkBA IC0xNzI2Niw2ICsxNzM0MCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTE9DS19QCiAJ CQl8IExPQ0tFRAogCQkJfCBMT0dHRUQKKwkJCXwgTFNOCiAJCQl8IE1BUFBJTkcKIAkJCXwgTUFU Q0gKIAkJCXwgTUFUQ0hFRApAQCAtMTczOTgsNiArMTc0NzMsNyBAQCB1bnJlc2VydmVkX2tleXdv cmQ6CiAJCQl8IFRFTVBPUkFSWQogCQkJfCBURVhUX1AKIAkJCXwgVElFUworCQkJfCBUSU1FT1VU CiAJCQl8IFRSQU5TQUNUSU9OCiAJCQl8IFRSQU5TRk9STQogCQkJfCBUUklHR0VSCkBAIC0xNzQy NCw2ICsxNzUwMCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgVklFVwogCQkJfCBWSUVX UwogCQkJfCBWT0xBVElMRQorCQkJfCBXQUlUCiAJCQl8IFdISVRFU1BBQ0VfUAogCQkJfCBXSVRI SU4KIAkJCXwgV0lUSE9VVApAQCAtMTc4NTYsNiArMTc5MzMsNyBAQCBiYXJlX2xhYmVsX2tleXdv cmQ6CiAJCQl8IExPQ0tfUAogCQkJfCBMT0NLRUQKIAkJCXwgTE9HR0VECisJCQl8IExTTgogCQkJ fCBNQVBQSU5HCiAJCQl8IE1BVENICiAJCQl8IE1BVENIRUQKQEAgLTE4MDE4LDYgKzE4MDk2LDcg QEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBUSEVOCiAJCQl8IFRJRVMKIAkJCXwgVElNRQor CQkJfCBUSU1FT1VUCiAJCQl8IFRJTUVTVEFNUAogCQkJfCBUUkFJTElORwogCQkJfCBUUkFOU0FD VElPTgpAQCAtMTgwNTUsNiArMTgxMzQsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFZJ RVcKIAkJCXwgVklFV1MKIAkJCXwgVk9MQVRJTEUKKwkJCXwgV0FJVAogCQkJfCBXSEVOCiAJCQl8 IFdISVRFU1BBQ0VfUAogCQkJfCBXT1JLCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggZTUxMTll ZDU1ZC4uMDZkMTY1ZmVlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBj aS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpAQCAtMjYsNiArMjYsNyBA QAogI2luY2x1ZGUgImFjY2Vzcy94bG9ncHJlZmV0Y2hlci5oIgogI2luY2x1ZGUgImFjY2Vzcy94 bG9ncmVjb3ZlcnkuaCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUgImNv bW1hbmRzL3dhaXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQu aCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKQEAgLTE0OSw2ICsxNTAsNyBA QCBDYWxjdWxhdGVTaG1lbVNpemUoaW50ICpudW1fc2VtYXBob3JlcykKIAlzaXplID0gYWRkX3Np emUoc2l6ZSwgQXN5bmNTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFN0YXRz U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWl0RXZlbnRFeHRlbnNpb25T aG1lbVNpemUoKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRTaG1lbVNpemUoKSk7CiAj aWZkZWYgRVhFQ19CQUNLRU5ECiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNobWVtQmFja2VuZEFy cmF5U2l6ZSgpKTsKICNlbmRpZgpAQCAtMzUxLDYgKzM1MywxMSBAQCBDcmVhdGVPckF0dGFjaFNo bWVtU3RydWN0cyh2b2lkKQogCUFzeW5jU2htZW1Jbml0KCk7CiAJU3RhdHNTaG1lbUluaXQoKTsK IAlXYWl0RXZlbnRFeHRlbnNpb25TaG1lbUluaXQoKTsKKworCS8qCisJICogSW5pdCBhcnJheSBv ZiBMYXRjaGVzIGluIHNoYXJlZCBtZW1vcnkgZm9yIFdBSVQKKwkgKi8KKwlXYWl0U2htZW1Jbml0 KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IDhkZTgyMWY5NjAuLmU4ODQ4MjgwMTEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rj b3AvdXRpbGl0eS5jCkBAIC0xNSw2ICsxNSw3IEBACiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwog I2luY2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSA8ZmxvYXQuaD4KIAogI2luY2x1ZGUgImFj Y2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVsb3B0aW9ucy5oIgpAQCAt NTksNiArNjAsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3VzZXIuaCIKICNpbmNsdWRlICJjb21t YW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy92aWV3LmgiCisjaW5jbHVkZSAiY29t bWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBhcnNlci9w YXJzZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dyaXRlci5oIgpAQCAtNzIs NiArNzQsOSBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Iv c3BpLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0aWxzL3Bn X2xzbi5oIgogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIFByb2Nlc3NV dGlsaXR5KCkgKi8KIFByb2Nlc3NVdGlsaXR5X2hvb2tfdHlwZSBQcm9jZXNzVXRpbGl0eV9ob29r ID0gTlVMTDsKQEAgLTI3Miw2ICsyNzcsNyBAQCBDbGFzc2lmeVV0aWxpdHlDb21tYW5kQXNSZWFk T25seShOb2RlICpwYXJzZXRyZWUpCiAJCWNhc2UgVF9Mb2FkU3RtdDoKIAkJY2FzZSBUX1ByZXBh cmVTdG10OgogCQljYXNlIFRfVW5saXN0ZW5TdG10OgorCQljYXNlIFRfV2FpdFN0bXQ6CiAJCWNh c2UgVF9WYXJpYWJsZVNldFN0bXQ6CiAJCQl7CiAJCQkJLyoKQEAgLTYxMiw2ICs2MTgsMTEgQEAg c3RhbmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCQljYXNlIFRS QU5TX1NUTVRfU1RBUlQ6CiAJCQkJCQl7CiAJCQkJCQkJTGlzdENlbGwgICAqbGM7CisJCQkJCQkJ V2FpdFN0bXQgICAqd2FpdHN0bXQgPSAoV2FpdFN0bXQgKikgc3RtdC0+d2FpdDsKKworCQkJCQkJ CS8qIElmIG5lZWRlZCB0byBXQUlUIEZPUiBzb21ldGhpbmcgYnV0IGZhaWxlZCAqLworCQkJCQkJ CWlmIChzdG10LT53YWl0ICYmIFdhaXRNYWluKHdhaXRzdG10LCBkZXN0KSA9PSAwKQorCQkJCQkJ CQlicmVhazsKIAogCQkJCQkJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOwogCQkJCQkJCWZvcmVh Y2gobGMsIHN0bXQtPm9wdGlvbnMpCkBAIC0xMDY5LDYgKzEwODAsMTMgQEAgc3RhbmRhcmRfUHJv Y2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNh c2UgVF9XYWl0U3RtdDoKKwkJCXsKKwkJCQlXYWl0U3RtdCAgICpzdG10ID0gKFdhaXRTdG10ICop IHBhcnNldHJlZTsKKwkJCQlXYWl0TWFpbihzdG10LCBkZXN0KTsKKwkJCQlicmVhazsKKwkJCX0K KwogCQlkZWZhdWx0OgogCQkJLyogQWxsIG90aGVyIHN0YXRlbWVudCB0eXBlcyBoYXZlIGV2ZW50 IHRyaWdnZXIgc3VwcG9ydCAqLwogCQkJUHJvY2Vzc1V0aWxpdHlTbG93KHBzdGF0ZSwgcHN0bXQs IHF1ZXJ5U3RyaW5nLApAQCAtMjg0Nyw2ICsyODY1LDEwIEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9k ZSAqcGFyc2V0cmVlKQogCQkJdGFnID0gQ01EVEFHX05PVElGWTsKIAkJCWJyZWFrOwogCisJCWNh c2UgVF9XYWl0U3RtdDoKKwkJCXRhZyA9IENNRFRBR19XQUlUOworCQkJYnJlYWs7CisKIAkJY2Fz ZSBUX0xpc3RlblN0bXQ6CiAJCQl0YWcgPSBDTURUQUdfTElTVEVOOwogCQkJYnJlYWs7CkBAIC0z NDk1LDYgKzM1MTcsMTAgQEAgR2V0Q29tbWFuZExvZ0xldmVsKE5vZGUgKnBhcnNldHJlZSkKIAkJ CWxldiA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX1dhaXRTdG10OgorCQkJ bGV2ID0gTE9HU1RNVF9BTEw7CisJCQlicmVhazsKKwogCQljYXNlIFRfTGlzdGVuU3RtdDoKIAkJ CWxldiA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy93YWl0LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDI3MDE2MGQ0NAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQuaApAQCAtMCwwICsxLDI2IEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiB3YWl0LmgKKyAqCSAgcHJvdG90eXBlcyBmb3IgY29tbWFuZHMvd2Fp dC5jCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTYsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTYs IFJlZ2VudHMgb2YgUG9zdGdyZXNQUk8KKyAqCisgKiBzcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0 LmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBXQUlUX0gKKyNkZWZpbmUg V0FJVF9ICisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJ0Y29wL2Rlc3QuaCIKKwor ZXh0ZXJuIGludCBXYWl0VXRpbGl0eShYTG9nUmVjUHRyIGxzbiwgY29uc3QgZmxvYXQ4IGRlbGF5 KTsKK2V4dGVybiBTaXplIFdhaXRTaG1lbVNpemUodm9pZCk7CitleHRlcm4gdm9pZCBXYWl0U2ht ZW1Jbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgV2FpdFNldExhdGNoKFhMb2dSZWNQdHIgY3VyX2xz bik7CitleHRlcm4gWExvZ1JlY1B0ciBHZXRNaW5XYWl0KHZvaWQpOworZXh0ZXJuIGZsb2F0OCBX YWl0VGltZVJlc29sdmUoQ29uc3QgKnRpbWUpOworZXh0ZXJuIGludCBXYWl0TWFpbihXYWl0U3Rt dCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KTsKKworI2VuZGlmICAgLyogV0FJVF9IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggYjMxODFmMzRhZS4uNjdlZjllYjhhZCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaApAQCAtMzUyNSw2ICszNTI1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJhbnNh Y3Rpb25TdG10CiAJLyogZm9yIHR3by1waGFzZS1jb21taXQgcmVsYXRlZCBjb21tYW5kcyAqLwog CWNoYXIJICAgKmdpZCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAJYm9vbAkJ Y2hhaW47CQkJLyogQU5EIENIQUlOIG9wdGlvbiAqLworCU5vZGUJICAgKndhaXQ7CQkJLyogV0FJ VCBjbGF1c2U6IGxpc3Qgb2YgZXZlbnRzIHRvIHdhaXQgZm9yICovCiAJLyogdG9rZW4gbG9jYXRp b24sIG9yIC0xIGlmIHVua25vd24gKi8KIAlpbnQJCQlsb2NhdGlvbiBwZ19ub2RlX2F0dHIocXVl cnlfanVtYmxlX2xvY2F0aW9uKTsKIH0gVHJhbnNhY3Rpb25TdG10OwpAQCAtNDA3Niw0ICs0MDc3 LDI2IEBAIHR5cGVkZWYgc3RydWN0IERyb3BTdWJzY3JpcHRpb25TdG10CiAJRHJvcEJlaGF2aW9y IGJlaGF2aW9yOwkJLyogUkVTVFJJQ1Qgb3IgQ0FTQ0FERSBiZWhhdmlvciAqLwogfSBEcm9wU3Vi c2NyaXB0aW9uU3RtdDsKIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCVdBSVQgRk9S IFN0YXRlbWVudCArIFdBSVQgRk9SIGNsYXVzZSBvZiBCRUdJTiBzdGF0ZW1lbnQKKyAqCQlUT0RP OiBpZiB3ZSBvbmx5IHBpY2sgb25lLCByZW1vdmUgdGhlIG90aGVyCisgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKwordHlwZWRlZiBlbnVtIFdhaXRGb3JTdHJhdGVneQoreworCVdBSVRf Rk9SX0FOWSA9IDAsCisJV0FJVF9GT1JfQUxMCit9IFdhaXRGb3JTdHJhdGVneTsKKwordHlwZWRl ZiBzdHJ1Y3QgV2FpdFN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVdhaXRGb3JTdHJhdGVneSBz dHJhdGVneTsKKwlMaXN0CSAgICpldmVudHM7CQkvKiB1c2VkIGFzIGEgcG9pbnRlciB0byB0aGUg bmV4dCBXQUlUIGV2ZW50ICovCisJY2hhcgkgICAqbHNuOwkJLyogV0FJVCBGT1IgTFNOICovCisJ aW50CQkJZGVsYXk7CQkvKiBXQUlUIEZPUiBUSU1FT1VUICovCisJTm9kZQkgICAqdGltZTsJCS8q IFdBSVQgRk9SIFRJTUVTVEFNUCBvciBUSU1FICovCit9IFdhaXRTdG10OworCiAjZW5kaWYJCQkJ CQkJLyogUEFSU0VOT0RFU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggMjMzMWFjYWMwOS4uYWU3 YjY1NTI2YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMjYwLDYgKzI2MCw3IEBAIFBHX0tFWVdPUkQo ImxvY2F0aW9uIiwgTE9DQVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImxvY2siLCBMT0NLX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImxvY2tlZCIsIExPQ0tFRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgibG9nZ2VkIiwgTE9HR0VELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCitQR19LRVlXT1JEKCJsc24iLCBMU04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoIm1hcHBpbmciLCBNQVBQSU5HLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJtYXRjaCIsIE1BVENILCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJtYXRjaGVkIiwgTUFUQ0hFRCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtNDMzLDYgKzQzNCw3IEBAIFBHX0tFWVdPUkQo InRleHQiLCBURVhUX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInRoZW4iLCBUSEVOLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgidGllcyIsIFRJRVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInRpbWUiLCBUSU1FLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09S RCgidGltZW91dCIsIFRJTUVPVVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInRpbWVzdGFtcCIsIFRJTUVTVEFNUCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInRvIiwgVE8sIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQog UEdfS0VZV09SRCgidHJhaWxpbmciLCBUUkFJTElORywgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKQEAgLTQ3Myw2ICs0NzUsNyBAQCBQR19LRVlXT1JEKCJ2ZXJzaW9uIiwgVkVSU0lPTl9Q LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ2aWV3IiwgVklF VywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidmlld3MiLCBW SUVXUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidm9sYXRp bGUiLCBWT0xBVElMRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09S RCgid2FpdCIsIFdBSVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoIndoZW4iLCBXSEVOLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgid2hlcmUiLCBXSEVSRSwgUkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCiBQR19LRVlXT1JE KCJ3aGl0ZXNwYWNlIiwgV0hJVEVTUEFDRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaCBiL3NyYy9pbmNs dWRlL3Rjb3AvY21kdGFnbGlzdC5oCmluZGV4IDdmZGNlYzZkZDkuLjI5NWNkNmZmM2EgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rj b3AvY21kdGFnbGlzdC5oCkBAIC0yMTcsMyArMjE3LDQgQEAgUEdfQ01EVEFHKENNRFRBR19UUlVO Q0FURV9UQUJMRSwgIlRSVU5DQVRFIFRBQkxFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NN RFRBRyhDTURUQUdfVU5MSVNURU4sICJVTkxJU1RFTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQ R19DTURUQUcoQ01EVEFHX1VQREFURSwgIlVQREFURSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKIFBH X0NNRFRBRyhDTURUQUdfVkFDVVVNLCAiVkFDVVVNIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BH X0NNRFRBRyhDTURUQUdfV0FJVCwgIldBSVQgRk9SIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX2JlZ2luX3dhaXQucGwgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzA0MF9iZWdpbl93YWl0LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLmYxZTViNWIyM2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNv dmVyeS90LzA0MF9iZWdpbl93YWl0LnBsCkBAIC0wLDAgKzEsMTQ2IEBACisjIENoZWNrcyBXQUlU IEZPUgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsK KworIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJG5vZGVfcHJpbWFyeS0+aW5pdChh bGxvd3Nfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyMgQW5kIHNv bWUgY29udGVudCBhbmQgdGFrZSBhIGJhY2t1cAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB3YWl0X3Rlc3QgQVMgU0VMRUNUIGdlbmVyYXRlX3Nl cmllcygxLDEwKSBBUyBhIik7CitteSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRub2Rl X3ByaW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworCisjIENyZWF0ZSBhIHN0cmVhbWluZyBz dGFuZGJ5IHdpdGggYSAxIHNlY29uZCBkZWxheSBmcm9tIHRoZSBiYWNrdXAKK215ICRub2RlX3N0 YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnknKTsKK215ICRk ZWxheSAgICAgICAgPSAxOworJG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgkbm9kZV9w cmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3N0YW5k YnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcVsKKwlyZWNvdmVyeV9taW5fYXBw bHlfZGVsYXkgPSAnJHtkZWxheX1zJworXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKworCisK KyMgTWFrZSBzdXJlIHRoYXQgV0FJVCBGT1IgTFNOIHdvcmtzOiBhZGQgbmV3IGNvbnRlbnQgdG8g cHJpbWFyeSBhbmQgbWVtb3JpemUKKyMgcHJpbWFyeSdzIG5ldyBMU04sIHRoZW4gd2FpdCBmb3Ig cHJpbWFyeSdzIExTTiBvbiBzdGFuZGJ5LiBQcm92ZSB0aGF0IFdBSVQgaXMKKyMgYWJsZSB0byBz ZXR1cCBhbiBpbmZpbml0ZSB3YWl0aW5nIGxvb3AgYW5kIGV4aXQgaXQgaWYgZ2l2ZW4gbm8gd2Fp dCB0aW1lb3V0LgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VS VCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygxMSwgMjApKSIpOworbXkg JGxzbjEgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19j dXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJCRUdJTiBXQUlUIEZPUiBMU04gJyRsc24xJyIpOworCisjIEdldCB0aGUgY3VycmVudCBMU04g b24gc3RhbmRieSBhbmQgbWFrZSBzdXJlIGl0J3MgdGhlIHNhbWUgYXMgcHJpbWFyeSdzIExTTgor bXkgJGxzbl9zdGFuZGJ5ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCkiKTsKK215ICRjb21wYXJlX2xzbnMgPSAk bm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAo JyRsc25fc3RhbmRieSc6OnBnX2xzbiwgJyRsc24xJzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVf bHNucyBlcSAwLCAic3RhbmRieSByZWFjaGVkIHRoZSBzYW1lIExTTiBhcyBwcmltYXJ5IGFmdGVy IFdBSVQiKTsKKworCisKKyMgQ2hlY2sgdGhhdCB0aW1lb3V0cyB3b3JrIG9uIHRoZWlyIG93biBh bmQgbGV0IHVzIHdhaXQgZm9yIHNwZWNpZmllZCB0aW1lICgxcykKK215ICRjdXJyZW50X3RpbWUg PSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBub3coKSIpOwor bXkgJG9uZV9zZWNvbmQgPSAxMDAwOyAjIGluIG1pbGxpc2Vjb25kcworbXkgJHN0YXJ0X3RpbWUg PSB0aW1lKCk7CisjIFdoaWxlIHdlJ3JlIGF0IGl0LCBhbHNvIG1ha2Ugc3VyZSB0aGF0IHRoZSBz eW50YXggd2l0aCBjb21tYXMgd29ya3MgZmluZSBhbmQKKyMgdGhhdCBieSBkZWZhdWx0IHdlIHVz ZSBXQUlUIEZPUiBBTEwgc3RyYXRlZ3ksIHdoaWNoIG1lYW5zIHdhaXRpbmcgZm9yIG1heCB0aW1l Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiV0FJVCBGT1IgVElNRU9V VCAkb25lX3NlY29uZCwgVElNRVNUQU1QICckY3VycmVudF90aW1lJyIpOworbXkgJHRpbWVfd2Fp dGVkID0gKHRpbWUoKSAtICRzdGFydF90aW1lKSAqIDEwMDA7ICMgY29udmVydCB0byBtaWxsaXNl Y29uZHMKK29rKCR0aW1lX3dhaXRlZCA+PSAkb25lX3NlY29uZCwgIldBSVQgRk9SIFRJTUVPVVQg d2FpdHMgZm9yIGVub3VnaCB0aW1lIik7CisKKyMgTm93LCBjaGVjayB0aGF0IHRpbWVvdXRzIHdv cmsgYXMgZXhwZWN0ZWQgd2hlbiB3YWl0aW5nIGZvciBMU04KKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0 ZV9zZXJpZXMoMjEsIDMwKSkiKTsKK215ICRsc24yID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKK215ICRyZWFjaGVk X2xzbiA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJCRUdJTiBXQUlU IEZPUiBMU04gJyRsc24yJyBUSU1FT1VUIDEiKTsKK29rKCRyZWFjaGVkX2xzbiBlcSAiZiIsICJX QUlUIGRvZXNuJ3QgcmVhY2ggTFNOIGlmIGdpdmVuIHRvbyBsaXR0bGUgd2FpdCB0aW1lIik7CisK KworIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVE9ETzogcmVtb3ZlIHRoaXMgdGVzdCBpZiB3 ZSByZW1vdmUgdGhlIHN0YW5kYWxvbmUgIldBSVQgRk9SIiBjb21tYW5kCisjPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorIyBXZSBuZWVkIHRvIGNoZWNrIHRoYXQgV0FJVCB3b3JrcyBmaW5lIGluc2lk ZSB0cmFuc2FjdGlvbnMuIEZvciB0aGF0LCBsZXQncworIyBnZXQgdHdvIExTTnMgdGhhdCB3aWxs IGNvcnJlc3BvbmQgdG8gdHdvIGRpZmZlcmVudCBtYXggdmFsdWVzIGluIG91ciB0YWJsZS4KKyRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rl c3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMzEsIDQwKSkiKTsKK215ICRsc24zID0gJG5vZGVf cHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNu KCkiKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5U TyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNDEsIDUwKSkiKTsKK215ICRsc240 ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVu dF93YWxfbHNuKCkiKTsKKworIyBCZWZvcmUgc3RhcnRpbmcgdHJhbnNhY3Rpb24sIHdhaXQgZm9y IExTTiB3aGljaCBlbnN1cmVzIGEgbWF4IHZhbHVlIG9mIDQwLgorIyBJbnNpZGUgdGhlIHRyYW5z YWN0aW9uLCB3YWl0IGZvciBMU04gdGhhdCBlbnN1cmVzIGEgbWF4IHZhbHVlIG9mIDUwLgorIyBE dWUgdG8gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRCwgd2Ugc2hvdWxkIE5PVCBzZWUg dGhlIG5ldyBtYXggdmFsdWUuCitteSAkc3RhbmRieV9yZXN1bHRzID0gJG5vZGVfc3RhbmRieS0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworCUJFR0lOIFRSQU5TQUNUSU9OIElTT0xBVElP TiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQgV0FJVCBGT1IgTFNOICckbHNuMyc7CisJU0VMRUNUIG1h eChhKSBGUk9NIHdhaXRfdGVzdDsKKwlCRUdJTiBXQUlUIEZPUiBMU04gJyRsc240JzsKKwlTRUxF Q1QgcGdfbGFzdF93YWxfcmVwbGF5X2xzbigpOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3YWl0X3Rl c3Q7CisJQ09NTUlUOworXSk7CisKKyMgTWFrZSBzdXJlIHRoYXQgd2UgaW5kZWVkIHJlYWNoIHBy aW1hcnkncyBsYXN0IExTTiBpbnNpZGUgdGhlIHRyYW5zYWN0aW9uLgorIyBGb3IgdGhhdCwgY2hl Y2sgdGhhdCBjYWxsaW5nIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24gcmV0dXJuZWQgdGhhdCBMU04u CitteSAkbGFzdF9sc25fcmVhY2hlZCA9ICRzdGFuZGJ5X3Jlc3VsdHMgPX4gLyRsc240LzsKK29r KCRsYXN0X2xzbl9yZWFjaGVkLCAiV0FJVCBGT1IgTFNOIHdvcmtzIGluc2lkZSBhIHRyYW5zYWN0 aW9uIik7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBkb2Vzbid0IGJyZWFrIGFuZCBzaG93 IHVzIHRoZSBuZXcgbWF4IHZhbHVlIGFmdGVyIFdBSVQuCisjIEZvciB0aGF0LCBtYWtlIHN1cmUg dGhhdCB0aGUgb2xkZXIgbWF4IHZhbHVlIGlzIHJlcGVhdGVkIHR3aWNlIGluIHRoZSByZXN1bHRz LgorbXkgJGNvdW50ID0gKCkgPSAkc3RhbmRieV9yZXN1bHRzID1+IC80MC9nOworb2soJGNvdW50 IGVxIDIsICJ0cmFuc2FjdGlvbiBpc29sYXRpb24gbGV2ZWwgZG9lc24ndCBnZXQgYnJva2VuIGR1 ZSB0byBXQUlUIik7CisKKworCisjIEdldCBtdWx0aXBsZSBMU05zIGZvciB0ZXN0aW5nIFdBSVQg Rk9SIEFOWSAvIFdBSVQgRk9SIEFMTAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg1MSwg NjApKSIpOworbXkgJGxzbjUgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nl cmllcyg2MSwgNzAwMDApKSIpOworbXkgJGxzbjYgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMg KGdlbmVyYXRlX3Nlcmllcyg2MSwgODAwMDAwKSkiKTsKK215ICRsc243ID0gJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsK KworIyBDaGVjayB0aGF0IFdBSVQgRk9SIEFOWSB3b3JrcyBmaW5lCiskbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQkVHSU4gV0FJVCBGT1IgQU5ZIExTTiAnJGxzbjUnIExT TiAnJGxzbjYnIExTTiAnJGxzbjcnIik7CiskbHNuX3N0YW5kYnkgPSAkbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKSIp OworJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjUnOjpwZ19s c24pIik7CitvaygkY29tcGFyZV9sc25zIGdlIDAsCisJIldBSVQgRk9SIEFOWSBtYWtlcyB1cyBy ZWFjaCBhdCBsZWFzdCB0aGUgbWluaW11bSBMU04gZnJvbSB0aGUgbGlzdCIpOworJGNvbXBhcmVf bHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdf bHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjcnOjpwZ19sc24pIik7CisjIFRP RE86IENvdWxkIHRoaXMgc29tZWhvdyBmYWlsIGR1ZSB0byB0aGUgbWFjaGluZSBiZWluZyB2ZXJ5 IGZhc3QgYXQgYXBwbHlpbmcgTFNOPworb2soJGNvbXBhcmVfbHNucyBsdCAwLAorCSJXQUlUIEZP UiBBTlkgZGlkbid0IG1ha2UgdXMgcmVhY2ggdGhlIG1heGltdW0gTFNOIGZyb20gdGhlIGxpc3Qi KTsKKworIyBDaGVjayB0aGF0IFdBSVQgRk9SIEFMTCB3b3JrcyBmaW5lCiskbm9kZV9zdGFuZGJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQkVHSU4gV0FJVCBGT1IgQUxMIExTTiAnJGxzbjUn LCBMU04gJyRsc242JywgTFNOICckbHNuNyciKTsKKyRsc25fc3RhbmRieSA9ICRub2RlX3N0YW5k YnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbGFzdF93YWxfcmVwbGF5X2xz bigpIik7CiskY29tcGFyZV9sc25zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBwZ19sc25fY21wKCckbHNuX3N0YW5kYnknOjpwZ19sc24sICckbHNuNyc6 OnBnX2xzbikiKTsKK29rKCRjb21wYXJlX2xzbnMgZXEgMCwKKwkiV0FJVCBGT1IgQUxMIG1ha2Vz IHVzIHJlYWNoIHRoZSBtYXhpbXVtIExTTiBmcm9tIHRoZSBsaXN0Iik7CisKKworCiskbm9kZV9z dGFuZGJ5LT5zdG9wOworJG5vZGVfcHJpbWFyeS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDFfd2FpdC5wbCBiL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDQxX3dhaXQucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u NmY5ZDU0OTQxNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQxX3dh aXQucGwKQEAgLTAsMCArMSwxNDUgQEAKKyMgQ2hlY2tzIFdBSVQgRk9SCit1c2Ugc3RyaWN0Owor dXNlIHdhcm5pbmdzOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUgcHJp bWFyeSBub2RlCitteSAkbm9kZV9wcmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdwcmltYXJ5Jyk7Ciskbm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4g MSk7Ciskbm9kZV9wcmltYXJ5LT5zdGFydDsKKworIyBBbmQgc29tZSBjb250ZW50IGFuZCB0YWtl IGEgYmFja3VwCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFRBQkxFIHdhaXRfdGVzdCBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGEiKTsK K215ICRiYWNrdXBfbmFtZSA9ICdteV9iYWNrdXAnOworJG5vZGVfcHJpbWFyeS0+YmFja3VwKCRi YWNrdXBfbmFtZSk7CisKKyMgQ3JlYXRlIGEgc3RyZWFtaW5nIHN0YW5kYnkgd2l0aCBhIDEgc2Vj b25kIGRlbGF5IGZyb20gdGhlIGJhY2t1cAorbXkgJG5vZGVfc3RhbmRieSA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieScpOworbXkgJGRlbGF5ICAgICAgICA9IDE7Cisk bm9kZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFt ZSwKKwloYXNfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsIHFxWworCXJlY292ZXJ5X21pbl9hcHBseV9kZWxheSA9ICcke2RlbGF5 fXMnCitdKTsKKyRub2RlX3N0YW5kYnktPnN0YXJ0OworCisKKworIyBNYWtlIHN1cmUgdGhhdCBX QUlUIEZPUiBMU04gd29ya3M6IGFkZCBuZXcgY29udGVudCB0byBwcmltYXJ5IGFuZCBtZW1vcml6 ZQorIyBwcmltYXJ5J3MgbmV3IExTTiwgdGhlbiB3YWl0IGZvciBwcmltYXJ5J3MgTFNOIG9uIHN0 YW5kYnkuIFByb3ZlIHRoYXQgV0FJVCBpcworIyBhYmxlIHRvIHNldHVwIGFuIGluZmluaXRlIHdh aXRpbmcgbG9vcCBhbmQgZXhpdCBpdCBpZiBnaXZlbiBubyB3YWl0IHRpbWVvdXQuCiskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZB TFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDExLCAyMCkpIik7CitteSAkbHNuMSA9ICRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7 Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIldBSVQgRk9SIExTTiAnJGxz bjEnIik7CisKKyMgR2V0IHRoZSBjdXJyZW50IExTTiBvbiBzdGFuZGJ5IGFuZCBtYWtlIHN1cmUg aXQncyB0aGUgc2FtZSBhcyBwcmltYXJ5J3MgTFNOCitteSAkbHNuX3N0YW5kYnkgPSAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxh eV9sc24oKSIpOworbXkgJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAn JGxzbjEnOjpwZ19sc24pIik7CitvaygkY29tcGFyZV9sc25zIGVxIDAsICJzdGFuZGJ5IHJlYWNo ZWQgdGhlIHNhbWUgTFNOIGFzIHByaW1hcnkgYWZ0ZXIgV0FJVCIpOworCisKKworIyBDaGVjayB0 aGF0IHRpbWVvdXRzIHdvcmsgb24gdGhlaXIgb3duIGFuZCBsZXQgdXMgd2FpdCBmb3Igc3BlY2lm aWVkIHRpbWUgKDFzKQorbXkgJGN1cnJlbnRfdGltZSA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIG5vdygpIik7CitteSAkb25lX3NlY29uZCA9IDEwMDA7ICMg aW4gbWlsbGlzZWNvbmRzCitteSAkc3RhcnRfdGltZSA9IHRpbWUoKTsKKyMgV2hpbGUgd2UncmUg YXQgaXQsIGFsc28gbWFrZSBzdXJlIHRoYXQgdGhlIHN5bnRheCB3aXRoIGNvbW1hcyB3b3JrcyBm aW5lIGFuZAorIyB0aGF0IGJ5IGRlZmF1bHQgd2UgdXNlIFdBSVQgRk9SIEFMTCBzdHJhdGVneSwg d2hpY2ggbWVhbnMgd2FpdGluZyBmb3IgbWF4IHRpbWUKKyRub2RlX3N0YW5kYnktPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJXQUlUIEZPUiBUSU1FT1VUICRvbmVfc2Vjb25kLCBUSU1FU1RBTVAg JyRjdXJyZW50X3RpbWUnIik7CitteSAkdGltZV93YWl0ZWQgPSAodGltZSgpIC0gJHN0YXJ0X3Rp bWUpICogMTAwMDsgIyBjb252ZXJ0IHRvIG1pbGxpc2Vjb25kcworb2soJHRpbWVfd2FpdGVkID49 ICRvbmVfc2Vjb25kLCAiV0FJVCBGT1IgVElNRU9VVCB3YWl0cyBmb3IgZW5vdWdoIHRpbWUiKTsK KworIyBOb3csIGNoZWNrIHRoYXQgdGltZW91dHMgd29yayBhcyBleHBlY3RlZCB3aGVuIHdhaXRp bmcgZm9yIExTTgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VS VCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygyMSwgMzApKSIpOworbXkg JGxzbjIgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19j dXJyZW50X3dhbF9sc24oKSIpOworbXkgJHJlYWNoZWRfbHNuID0gJG5vZGVfc3RhbmRieS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIldBSVQgRk9SIExTTiAnJGxzbjInIFRJTUVPVVQgMSIpOwor b2soJHJlYWNoZWRfbHNuIGVxICJmIiwgIldBSVQgZG9lc24ndCByZWFjaCBMU04gaWYgZ2l2ZW4g dG9vIGxpdHRsZSB3YWl0IHRpbWUiKTsKKworCisKKyMgV2UgbmVlZCB0byBjaGVjayB0aGF0IFdB SVQgd29ya3MgZmluZSBpbnNpZGUgdHJhbnNhY3Rpb25zLiBGb3IgdGhhdCwgbGV0J3MKKyMgZ2V0 IHR3byBMU05zIHRoYXQgd2lsbCBjb3JyZXNwb25kIHRvIHR3byBkaWZmZXJlbnQgbWF4IHZhbHVl cyBpbiBvdXIgdGFibGUuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki SU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDMxLCA0MCkpIik7 CitteSAkbHNuMyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDQx LCA1MCkpIik7CitteSAkbHNuNCA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CisKKyMgQmVmb3JlIHN0YXJ0aW5nIHRy YW5zYWN0aW9uLCB3YWl0IGZvciBMU04gd2hpY2ggZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA0MC4K KyMgSW5zaWRlIHRoZSB0cmFuc2FjdGlvbiwgd2FpdCBmb3IgTFNOIHRoYXQgZW5zdXJlcyBhIG1h eCB2YWx1ZSBvZiA1MC4KKyMgRHVlIHRvIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQs IHdlIHNob3VsZCBOT1Qgc2VlIHRoZSBuZXcgbWF4IHZhbHVlLgorbXkgJHN0YW5kYnlfcmVzdWx0 cyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlXQUlUIEZP UiBMU04gJyRsc24zJzsKKwlCRUdJTiBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVQRUFU QUJMRSBSRUFEOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3YWl0X3Rlc3Q7CisJV0FJVCBGT1IgTFNO ICckbHNuNCc7CisJU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKTsKKwlTRUxFQ1QgbWF4 KGEpIEZST00gd2FpdF90ZXN0OworCUNPTU1JVDsKK10pOworCisjIE1ha2Ugc3VyZSB0aGF0IHdl IGluZGVlZCByZWFjaCBwcmltYXJ5J3MgbGFzdCBMU04gaW5zaWRlIHRoZSB0cmFuc2FjdGlvbi4K KyMgRm9yIHRoYXQsIGNoZWNrIHRoYXQgY2FsbGluZyBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuIHJl dHVybmVkIHRoYXQgTFNOLgorbXkgJGxhc3RfbHNuX3JlYWNoZWQgPSAkc3RhbmRieV9yZXN1bHRz ID1+IC8kbHNuNC87CitvaygkbGFzdF9sc25fcmVhY2hlZCwgIldBSVQgRk9SIExTTiB3b3JrcyBp bnNpZGUgYSB0cmFuc2FjdGlvbiIpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gZG9lc24n dCBicmVhayBhbmQgc2hvdyB1cyB0aGUgbmV3IG1heCB2YWx1ZSBhZnRlciBXQUlULgorIyBGb3Ig dGhhdCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9sZGVyIG1heCB2YWx1ZSBpcyByZXBlYXRlZCB0d2lj ZSBpbiB0aGUgcmVzdWx0cy4KK215ICRjb3VudCA9ICgpID0gJHN0YW5kYnlfcmVzdWx0cyA9fiAv NDAvZzsKK29rKCRjb3VudCBlcSAyLCAidHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsIGRvZXNu J3QgZ2V0IGJyb2tlbiBkdWUgdG8gV0FJVCIpOworCisKKworIyBHZXQgbXVsdGlwbGUgTFNOcyBm b3IgdGVzdGluZyBXQUlUIEZPUiBBTlkgLyBXQUlUIEZPUiBBTEwKKyRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5l cmF0ZV9zZXJpZXMoNTEsIDYwKSkiKTsKK215ICRsc241ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFM VUVTIChnZW5lcmF0ZV9zZXJpZXMoNjEsIDcwMDAwKSkiKTsKK215ICRsc242ID0gJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCki KTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3 YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNjEsIDgwMDAwMCkpIik7CitteSAkbHNu NyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJl bnRfd2FsX2xzbigpIik7CisKKyMgQ2hlY2sgdGhhdCBXQUlUIEZPUiBBTlkgd29ya3MgZmluZQor JG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIldBSVQgRk9SIEFOWSBMU04g JyRsc241JyBMU04gJyRsc242JyBMU04gJyRsc243JyIpOworJGxzbl9zdGFuZGJ5ID0gJG5vZGVf c3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sYXN0X3dhbF9yZXBs YXlfbHNuKCkiKTsKKyRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xzbiwgJyRs c241Jzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVfbHNucyBnZSAwLAorCSJXQUlUIEZPUiBBTlkg bWFrZXMgdXMgcmVhY2ggYXQgbGVhc3QgdGhlIG1pbmltdW0gTFNOIGZyb20gdGhlIGxpc3QiKTsK KyRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki U0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xzbiwgJyRsc243Jzo6cGdfbHNu KSIpOworIyBUT0RPOiBDb3VsZCB0aGlzIHNvbWVob3cgZmFpbCBkdWUgdG8gdGhlIG1hY2hpbmUg YmVpbmcgdmVyeSBmYXN0IGF0IGFwcGx5aW5nIExTTj8KK29rKCRjb21wYXJlX2xzbnMgbHQgMCwK KwkiV0FJVCBGT1IgQU5ZIGRpZG4ndCBtYWtlIHVzIHJlYWNoIHRoZSBtYXhpbXVtIExTTiBmcm9t IHRoZSBsaXN0Iik7CisKKyMgQ2hlY2sgdGhhdCBXQUlUIEZPUiBBTEwgd29ya3MgZmluZQorJG5v ZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIldBSVQgRk9SIEFMTCBMU04gJyRs c241JywgTFNOICckbHNuNicsIExTTiAnJGxzbjcnIik7CiskbHNuX3N0YW5kYnkgPSAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxh eV9sc24oKSIpOworJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxz bjcnOjpwZ19sc24pIik7CitvaygkY29tcGFyZV9sc25zIGVxIDAsCisJIldBSVQgRk9SIEFMTCBt YWtlcyB1cyByZWFjaCB0aGUgbWF4aW11bSBMU04gZnJvbSB0aGUgbGlzdCIpOworCisKKworJG5v ZGVfc3RhbmRieS0+c3RvcDsKKyRub2RlX3ByaW1hcnktPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsK --=_eea1fd1cdd96c9ddb3e84e7ca6535a2f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_after_within_v3.patch Content-Disposition: attachment; filename=wait_after_within_v3.patch; size=29446 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCBmZGE0NjkwZWFiLi40MTAwMThiNzliIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sCkBAIC0xODgsNiArMTg4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSB1cGRhdGUg ICAgICAgICAgICAgU1lTVEVNICJ1cGRhdGUuc2dtbCI+CiA8IUVOVElUWSB2YWN1dW0gICAgICAg ICAgICAgU1lTVEVNICJ2YWN1dW0uc2dtbCI+CiA8IUVOVElUWSB2YWx1ZXMgICAgICAgICAgICAg U1lTVEVNICJ2YWx1ZXMuc2dtbCI+Cis8IUVOVElUWSB3YWl0ICAgICAgICAgICAgICAgU1lTVEVN ICJ3YWl0LnNnbWwiPgogCiA8IS0tIGFwcGxpY2F0aW9ucyBhbmQgdXRpbGl0aWVzIC0tPgogPCFF TlRJVFkgY2x1c3RlcmRiICAgICAgICAgIFNZU1RFTSAiY2x1c3RlcmRiLnNnbWwiPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9iZWdpbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9iZWdp bi5zZ21sCmluZGV4IDAxNmIwMjE0ODcuLmEyNzk0NzYzYjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvYmVnaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2JlZ2luLnNnbWwKQEAg LTIxLDEzICsyMSwxNiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KLUJFR0lOIFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gXQorQkVHSU4gWyBXT1JLIHwgVFJBTlNBQ1RJT04gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2V2ZW50PC9yZXBsYWNlYWJsZT4KIAog PHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25f bW9kZTwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAogICAgIElTT0xBVElPTiBM RVZFTCB7IFNFUklBTElaQUJMRSB8IFJFUEVBVEFCTEUgUkVBRCB8IFJFQUQgQ09NTUlUVEVEIHwg UkVBRCBVTkNPTU1JVFRFRCB9CiAgICAgUkVBRCBXUklURSB8IFJFQUQgT05MWQogICAgIFsgTk9U IF0gREVGRVJSQUJMRQorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj53YWl0X2V2ZW50PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisgICAgQUZURVIgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl92YWx1ZTwvcmVwbGFjZWFibGU+IFsgV0lU SElOIG51bWJlcl9vZl9taWxsaXNlY29uZHMgXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lz ZGl2PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNnbWwKaW5kZXggNzRjY2Q3 ZTM0NS4uNDZhM2JjZjFhOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9zdGFydF90cmFu c2FjdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dt bApAQCAtMjEsMTMgKzIxLDE2IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZnN5 bm9wc2lzZGl2PgogPHN5bm9wc2lzPgotU1RBUlQgVFJBTlNBQ1RJT04gWyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFssIC4uLl0g XQorU1RBUlQgVFJBTlNBQ1RJT04gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJh bnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+d2FpdF9ldmVudDwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxl PiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBJU09MQVRJT04gTEVWRUwgeyBTRVJJQUxJWkFC TEUgfCBSRVBFQVRBQkxFIFJFQUQgfCBSRUFEIENPTU1JVFRFRCB8IFJFQUQgVU5DT01NSVRURUQg fQogICAgIFJFQUQgV1JJVEUgfCBSRUFEIE9OTFkKICAgICBbIE5PVCBdIERFRkVSUkFCTEUKKwor PHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF9ldmVudDwv cmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorICAgIEFGVEVSIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5sc25fdmFsdWU8L3JlcGxhY2VhYmxlPiBbIFdJVEhJTiBudW1iZXJfb2ZfbWls bGlzZWNvbmRzIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5z Z21sCmluZGV4IGEwN2QyYjVlMDEuLjEzOGU1MmM1NjMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWZlcmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTIx Niw2ICsyMTYsNyBAQAogICAgJnVwZGF0ZTsKICAgICZ2YWN1dW07CiAgICAmdmFsdWVzOworICAg JndhaXQ7CiAKICA8L3JlZmVyZW5jZT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n cmVjb3ZlcnkuYwppbmRleCAxYjQ4ZDcxNzFhLi44YWI4NmE4M2I1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUg ImJhY2t1cC9iYXNlYmFja3VwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQu aCIKICNpbmNsdWRlICJjb21tb24vZmlsZV91dGlscy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInBnc3RhdC5oIgpAQCAtMTc4NCw2ICsxNzg1LDE1IEBAIFBlcmZvcm1XYWxS ZWNvdmVyeSh2b2lkKQogCQkJCWJyZWFrOwogCQkJfQogCisJCQkvKgorCQkJKiBJZiB3ZSByZXBs YXllZCBhbiBMU04gdGhhdCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwKKwkJCSogc2V0IGxhdGNo ZXMgaW4gc2hhcmVkIG1lbW9yeSBhcnJheSB0byBub3RpZnkgdGhlIHdhaXRlci4KKwkJCSovCisJ CQlpZiAoWExvZ1JlY292ZXJ5Q3RsLT5sYXN0UmVwbGF5ZWRFbmRSZWNQdHIgPj0gR2V0TWluV2Fp dCgpKQorCQkJeworCQkJCSBXYWl0U2V0TGF0Y2goWExvZ1JlY292ZXJ5Q3RsLT5sYXN0UmVwbGF5 ZWRFbmRSZWNQdHIpOworCQkJfQorCiAJCQkvKiBFbHNlLCB0cnkgdG8gZmV0Y2ggdGhlIG5leHQg V0FMIHJlY29yZCAqLwogCQkJcmVjb3JkID0gUmVhZFJlY29yZCh4bG9ncHJlZmV0Y2hlciwgTE9H LCBmYWxzZSwgcmVwbGF5VExJKTsKIAkJfSB3aGlsZSAocmVjb3JkICE9IE5VTEwpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9NYWtlZmlsZQppbmRleCA0OGY3MzQ4ZjkxLi5kOGY2OTY1ZDhjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtl ZmlsZQpAQCAtNjEsNiArNjEsNyBAQCBPQkpTID0gXAogCXZhY3V1bS5vIFwKIAl2YWN1dW1wYXJh bGxlbC5vIFwKIAl2YXJpYWJsZS5vIFwKLQl2aWV3Lm8KKwl2aWV3Lm8gXAorCXdhaXQubwogCiBp bmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21l c29uLmJ1aWxkCmluZGV4IDZkZDAwYTRhYmQuLjNmMDZkYzUzNDEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21l c29uLmJ1aWxkCkBAIC01MCw0ICs1MCw1IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAg J3ZhY3V1bXBhcmFsbGVsLmMnLAogICAndmFyaWFibGUuYycsCiAgICd2aWV3LmMnLAorICAnd2Fp dC5jJywKICkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi41YmFhNmUyZWUzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv d2FpdC5jCkBAIC0wLDAgKzEsMzM4IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3YWl0 LmMKKyAqCSAgSW1wbGVtZW50cyBXQUlUIEZPUiwgd2hpY2ggYWxsb3dzIHdhaXRpbmcgZm9yIGV2 ZW50cyBzdWNoIGFzCisgKgkgIHRpbWUgcGFzc2luZyBvciBMU04gaGF2aW5nIGJlZW4gcmVwbGF5 ZWQgb24gcmVwbGljYS4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMCwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMjAyMCwgUmVnZW50cyBvZiBQb3N0Z3Jlc1BybworICoKKyAqIElERU5USUZJQ0FUSU9O CisgKgkgIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYworICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCisKKyNpbmNsdWRlIDxmbG9hdC5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNp bmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5j bHVkZSAiYWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNs dWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNs dWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2JhY2tlbmRpZC5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcG1zaWduYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zaW52YWxhZHQuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1 ZGUgInV0aWxzL3BnX2xzbi5oIgorI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1 ZGUgImV4ZWN1dG9yL3NwaS5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKworLyog QWRkIHRvIC8gZGVsZXRlIGZyb20gc2hhcmVkIG1lbW9yeSBhcnJheSAqLworc3RhdGljIHZvaWQg QWRkRXZlbnQoWExvZ1JlY1B0ciBsc25fdG9fd2FpdCk7CitzdGF0aWMgdm9pZCBEZWxldGVFdmVu dCh2b2lkKTsKKworLyogU2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgKi8KK3R5cGVkZWYgc3RydWN0 Cit7CisJaW50CQkJYmFja2VuZF9tYXhpZDsKKwlwZ19hdG9taWNfdWludDY0CW1pbl9sc247CisJ c2xvY2tfdAkJbXV0ZXg7CisJWExvZ1JlY1B0cgl3YWl0ZWRfbHNuW0ZMRVhJQkxFX0FSUkFZX01F TUJFUl07Cit9IFdhaXRTdGF0ZTsKKworc3RhdGljIHZvbGF0aWxlIFdhaXRTdGF0ZSAqc3RhdGU7 CisKKy8qIEFkZCB0aGUgZXZlbnQgb2YgdGhlIGN1cnJlbnQgYmFja2VuZCB0byB0aGUgc2hhcmVk IG1lbW9yeSBhcnJheSAqLworc3RhdGljIHZvaWQKK0FkZEV2ZW50KFhMb2dSZWNQdHIgbHNuX3Rv X3dhaXQpCit7CisJU3BpbkxvY2tBY3F1aXJlKCZzdGF0ZS0+bXV0ZXgpOworCWlmIChzdGF0ZS0+ YmFja2VuZF9tYXhpZCA8IE15QmFja2VuZElkKQorCQlzdGF0ZS0+YmFja2VuZF9tYXhpZCA9IE15 QmFja2VuZElkOworCisJc3RhdGUtPndhaXRlZF9sc25bTXlCYWNrZW5kSWRdID0gbHNuX3RvX3dh aXQ7CisKKwlpZiAobHNuX3RvX3dhaXQgPCBzdGF0ZS0+bWluX2xzbi52YWx1ZSkKKwkJc3RhdGUt Pm1pbl9sc24udmFsdWUgPSBsc25fdG9fd2FpdDsKKwlTcGluTG9ja1JlbGVhc2UoJnN0YXRlLT5t dXRleCk7Cit9CisKKy8qCisgKiBEZWxldGUgZXZlbnQgb2YgdGhlIGN1cnJlbnQgYmFja2VuZCBm cm9tIHRoZSBzaGFyZWQgbWVtb3J5IGFycmF5LgorICoKKyAqIFRPRE86IENvbnNpZGVyIHN0YXRl IGNsZWFudXAgb24gYmFja2VuZCBmYWlsdXJlLgorICogQ2hlY2s6CisgKiAxKSBub21hbHxzbWFy dHxmYXN0fGltbWVkaWF0ZSBzdG9wCisgKiAyKSBTSUdLSUxMIGFuZCBTSUdURVJNCisgKi8KK3N0 YXRpYyB2b2lkCitEZWxldGVFdmVudCh2b2lkKQoreworCWludAkJCWk7CisJWExvZ1JlY1B0cgls c25fdG9fZGVsZXRlID0gc3RhdGUtPndhaXRlZF9sc25bTXlCYWNrZW5kSWRdOworCisJc3RhdGUt PndhaXRlZF9sc25bTXlCYWNrZW5kSWRdID0gSW52YWxpZFhMb2dSZWNQdHI7CisKKwlTcGluTG9j a0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisKKwkvKiBJZiB3ZSBuZWVkIHRvIGNob29zZSB0aGUg bmV4dCBtaW5fbHNuLCB1cGRhdGUgc3RhdGUtPm1pbl9sc24gKi8KKwlpZiAoc3RhdGUtPm1pbl9s c24udmFsdWUgPT0gbHNuX3RvX2RlbGV0ZSkKKwl7CisJCXN0YXRlLT5taW5fbHNuLnZhbHVlID0g UEdfVUlOVDY0X01BWDsKKwkJZm9yIChpID0gMjsgaSA8PSBzdGF0ZS0+YmFja2VuZF9tYXhpZDsg aSsrKQorCQkJaWYgKHN0YXRlLT53YWl0ZWRfbHNuW2ldICE9IEludmFsaWRYTG9nUmVjUHRyICYm CisJCQkJc3RhdGUtPndhaXRlZF9sc25baV0gPCBzdGF0ZS0+bWluX2xzbi52YWx1ZSkKKwkJCQlz dGF0ZS0+bWluX2xzbi52YWx1ZSA9IHN0YXRlLT53YWl0ZWRfbHNuW2ldOworCX0KKworCWlmIChz dGF0ZS0+YmFja2VuZF9tYXhpZCA9PSBNeUJhY2tlbmRJZCkKKwkJZm9yIChpID0gKE15QmFja2Vu ZElkKTsgaSA+PSAyOyBpLS0pCisJCQlpZiAoc3RhdGUtPndhaXRlZF9sc25baV0gIT0gSW52YWxp ZFhMb2dSZWNQdHIpCisJCQl7CisJCQkJc3RhdGUtPmJhY2tlbmRfbWF4aWQgPSBpOworCQkJCWJy ZWFrOworCQkJfQorCisJU3BpbkxvY2tSZWxlYXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgor ICogUmVwb3J0IGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBmb3IgV2FpdFN0 YXRlCisgKi8KK1NpemUKK1dhaXRTaG1lbVNpemUodm9pZCkKK3sKKwlTaXplCQlzaXplOworCisJ c2l6ZSA9IG9mZnNldG9mKFdhaXRTdGF0ZSwgd2FpdGVkX2xzbik7CisJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIG11bF9zaXplKE1heEJhY2tlbmRzICsgMSwgc2l6ZW9mKFhMb2dSZWNQdHIpKSk7CisJ cmV0dXJuIHNpemU7Cit9CisKKy8qIEluaXQgYXJyYXkgb2YgZXZlbnRzIGluIHNoYXJlZCBtZW1v cnkgKi8KK3ZvaWQKK1dhaXRTaG1lbUluaXQodm9pZCkKK3sKKwlib29sCQlmb3VuZDsKKwl1aW50 MzIJCWk7CisKKwlzdGF0ZSA9IChXYWl0U3RhdGUgKikgU2htZW1Jbml0U3RydWN0KCJwZ193YWl0 X2xzbiIsCisJCQkJCQkJCQkJICBXYWl0U2htZW1TaXplKCksCisJCQkJCQkJCQkJICAmZm91bmQp OworCWlmICghZm91bmQpCisJeworCQlTcGluTG9ja0luaXQoJnN0YXRlLT5tdXRleCk7CisKKwkJ Zm9yIChpID0gMDsgaSA8IChNYXhCYWNrZW5kcyArIDEpOyBpKyspCisJCQlzdGF0ZS0+d2FpdGVk X2xzbltpXSA9IEludmFsaWRYTG9nUmVjUHRyOworCisJCXN0YXRlLT5iYWNrZW5kX21heGlkID0g MDsKKwkJc3RhdGUtPm1pbl9sc24udmFsdWUgPSBQR19VSU5UNjRfTUFYOworCX0KK30KKworLyog U2V0IGFsbCBsYXRjaGVzIGluIHNoYXJlZCBtZW1vcnkgdG8gc2lnbmFsIHRoYXQgbmV3IExTTiBo YXMgYmVlbiByZXBsYXllZCAqLwordm9pZAorV2FpdFNldExhdGNoKFhMb2dSZWNQdHIgY3VyX2xz bikKK3sKKwl1aW50MzIJCWk7CisJaW50IAkJYmFja2VuZF9tYXhpZDsKKwlQR1BST0MJICAgKmJh Y2tlbmQ7CisKKwlTcGluTG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisJYmFja2VuZF9tYXhp ZCA9IHN0YXRlLT5iYWNrZW5kX21heGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4 KTsKKworCWZvciAoaSA9IDI7IGkgPD0gYmFja2VuZF9tYXhpZDsgaSsrKQorCXsKKwkJYmFja2Vu ZCA9IEJhY2tlbmRJZEdldFByb2MoaSk7CisJCWlmIChzdGF0ZS0+d2FpdGVkX2xzbltpXSAhPSAw KQorCQl7CisJCQlpZiAoYmFja2VuZCAmJiBzdGF0ZS0+d2FpdGVkX2xzbltpXSA8PSBjdXJfbHNu KQorCQkJCVNldExhdGNoKCZiYWNrZW5kLT5wcm9jTGF0Y2gpOworCQl9CisJfQorfQorCisvKiBH ZXQgbWluaW1hbCBMU04gdGhhdCB3aWxsIGJlIG5leHQgKi8KK1hMb2dSZWNQdHIKK0dldE1pbldh aXQodm9pZCkKK3sKKwlyZXR1cm4gcGdfYXRvbWljX3JlYWRfdTY0KCZzdGF0ZS0+bWluX2xzbik7 Cit9CisKKy8qCisgKiBPbiBXQUlUIHVzZSBNeUxhdGNoIHRvIHdhaXQgdGlsbCBMU04gaXMgcmVw bGF5ZWQsCisgKiBwb3N0bWFzdGVyIGRpZXMgb3IgdGltZW91dCBoYXBwZW5zLgorICovCitpbnQK K1dhaXRVdGlsaXR5KFhMb2dSZWNQdHIgbHNuLCBjb25zdCBmbG9hdDggc2VjcykKK3sKKwlYTG9n UmVjUHRyCWN1cl9sc24gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCWludAkJCWxhdGNo X2V2ZW50czsKKwlmbG9hdDgJCWVuZHRpbWU7CisJdWludAkJcmVzID0gMDsKKworCWlmICghUmVj b3ZlcnlJblByb2dyZXNzKCkpCisJeworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCWVycm1zZygiV29y ayBvbmx5IGluIHN0YW5kYnkgbW9kZSIpKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKyNkZWZp bmUgR2V0Tm93RmxvYXQoKQkoKGZsb2F0OCkgR2V0Q3VycmVudFRpbWVzdGFtcCgpIC8gMTAwMDAw MC4wKQorCWVuZHRpbWUgPSBHZXROb3dGbG9hdCgpICsgc2VjczsKKworCWxhdGNoX2V2ZW50cyA9 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRIOworCisJaWYgKGxzbiAhPSBJbnZhbGlk WExvZ1JlY1B0cikKKwl7CisJCS8qIEp1c3QgY2hlY2sgaWYgd2UgcmVhY2hlZCAqLworCQlpZiAo bHNuIDwgY3VyX2xzbiB8fCBzZWNzIDwgMCkKKwkJCXJldHVybiAobHNuIDwgY3VyX2xzbik7CisK KwkJbGF0Y2hfZXZlbnRzIHw9IFdMX0xBVENIX1NFVDsKKwkJQWRkRXZlbnQobHNuKTsKKwl9CisJ ZWxzZSBpZiAoIXNlY3MpCisJCXJldHVybiAxOworCisJZm9yICg7OykKKwl7CisJCWludAkJCXJj OworCQlmbG9hdDgJCWRlbGF5ID0gMDsKKwkJbG9uZwkJZGVsYXlfbXM7CisKKwkJLyogSWYgTFNO IGhhcyBiZWVuIHJlcGxheWVkICovCisJCWlmIChsc24gJiYgbHNuIDw9IGN1cl9sc24pCisJCQli cmVhazsKKworCQlpZiAoc2VjcyA+IDApCisJCQlkZWxheSA9IGVuZHRpbWUgLSBHZXROb3dGbG9h dCgpOworCQllbHNlIGlmIChzZWNzID09IDApCisJCQkvKgorCQkJKiBJZiB3ZSB3YWl0IGZvcmV2 ZXIsIHRoZW4gMSBtaW51dGUgdGltZW91dCB0byBjaGVjaworCQkJKiBmb3IgSW50ZXJ1cHRzLgor CQkJKi8KKwkJCWRlbGF5ID0gNjA7CisKKwkJaWYgKGRlbGF5ID4gMC4wKQorCQkJZGVsYXlfbXMg PSAobG9uZykgY2VpbChkZWxheSAqIDEwMDAuMCk7CisJCWVsc2UKKwkJCWJyZWFrOworCisJCS8q CisJCSAqIElmIHJlY2VpdmVkIGFuIGludGVycnVwdGlvbiBmcm9tIENIRUNLX0ZPUl9JTlRFUlJV UFRTLAorCQkgKiB0aGVuIGRlbGV0ZSB0aGUgY3VycmVudCBldmVudCBmcm9tIGFycmF5LgorCQkg Ki8KKwkJaWYgKEludGVycnVwdFBlbmRpbmcpCisJCXsKKwkJCWlmIChsc24gIT0gSW52YWxpZFhM b2dSZWNQdHIpCisJCQkJRGVsZXRlRXZlbnQoKTsKKwkJCVByb2Nlc3NJbnRlcnJ1cHRzKCk7CisJ CX0KKworCQkvKiBJZiBwb3N0bWFzdGVyIGRpZXMsIGZpbmlzaCBpbW1lZGlhdGVseSAqLworCQlp ZiAoIVBvc3RtYXN0ZXJJc0FsaXZlKCkpCisJCQlicmVhazsKKworCQlyYyA9IFdhaXRMYXRjaChN eUxhdGNoLCBsYXRjaF9ldmVudHMsIGRlbGF5X21zLAorCQkJCQkgICBXQUlUX0VWRU5UX0NMSUVO VF9SRUFEKTsKKworCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCisJCWlmIChsc24gJiYgcmMgJiBXTF9MQVRDSF9TRVQpCisJCQljdXJfbHNuID0gR2V0 WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwl9CisKKwlpZiAobHNuICE9IEludmFsaWRYTG9nUmVj UHRyKQorCQlEZWxldGVFdmVudCgpOworCisJaWYgKGxzbiAhPSBJbnZhbGlkWExvZ1JlY1B0ciAm JiBsc24gPiBjdXJfbHNuKQorCQllbG9nKE5PVElDRSwiTFNOIGlzIG5vdCByZWFjaGVkLiBUcnkg dG8gaW5jcmVhc2Ugd2FpdCB0aW1lLiIpOworCWVsc2UKKwkJcmVzID0gMTsKKworCXJldHVybiBy ZXM7Cit9CisKKy8qCisgKiBHZXQgdGhlIGFtb3VudCBvZiBzZWNvbmRzIGxlZnQgdGlsbCB0aGUg c3BlY2lmaWVkIHRpbWUuCisgKi8KK2Zsb2F0OAorV2FpdFRpbWVSZXNvbHZlKENvbnN0ICp0aW1l KQoreworCWludAkJCXJldDsKKwlmbG9hdDgJCXZhbDsKKwlPaWQJCQl0eXBlc1tdID0geyB0aW1l LT5jb25zdHR5cGUgfTsKKwlEYXR1bQkJdmFsdWVzW10gPSB7IHRpbWUtPmNvbnN0dmFsdWUgfTsK KwljaGFyCQludWxsc1tdID0geyAiICIgfTsKKwlEYXR1bQkJcmVzdWx0OworCWJvb2wJCWlzbnVs bDsKKworCVNQSV9jb25uZWN0KCk7CisKKwlpZiAodGltZS0+Y29uc3R0eXBlID09IDEwODMpCisJ CXJldCA9IFNQSV9leGVjdXRlX3dpdGhfYXJncygic2VsZWN0IGV4dHJhY3QgKGVwb2NoIGZyb20g KCQxIC0gbm93KCk6OnRpbWUpKSIsCisJCQkJCQkJCQkxLCB0eXBlcywgdmFsdWVzLCBudWxscywg dHJ1ZSwgMCk7CisJZWxzZSBpZiAodGltZS0+Y29uc3R0eXBlID09IDEyNjYpCisJCXJldCA9IFNQ SV9leGVjdXRlX3dpdGhfYXJncygic2VsZWN0IGV4dHJhY3QgKGVwb2NoIGZyb20gKHRpbWV6b25l KCdVVEMnLCQxKTo6dGltZSAtIHRpbWV6b25lKCdVVEMnLCBub3coKTo6dGltZXR6KTo6dGltZSkp IiwKKwkJCQkJCQkJCTEsIHR5cGVzLCB2YWx1ZXMsIG51bGxzLCB0cnVlLCAwKTsKKwllbHNlCisJ CXJldCA9IFNQSV9leGVjdXRlX3dpdGhfYXJncygic2VsZWN0IGV4dHJhY3QgKGVwb2NoIGZyb20g KCQxIC0gbm93KCkpKSIsCisJCQkJCQkJCQkxLCB0eXBlcywgdmFsdWVzLCBudWxscywgdHJ1ZSwg MCk7CisKKwlBc3NlcnQocmV0ID49IDApOworCXJlc3VsdCA9IFNQSV9nZXRiaW52YWwoU1BJX3R1 cHRhYmxlLT52YWxzWzBdLAorCQkJCQkJICAgU1BJX3R1cHRhYmxlLT50dXBkZXNjLAorCQkJCQkJ ICAgMSwgJmlzbnVsbCk7CisKKwlBc3NlcnQoIWlzbnVsbCk7CisJdmFsID0gRGF0dW1HZXRGbG9h dDgocmVzdWx0KTsKKworCWVsb2coSU5GTywgInRpbWU6ICVmIiwgdmFsKTsKKworCVNQSV9maW5p c2goKTsKKwlyZXR1cm4gdmFsOworfQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiBXQUlUIEZPUiAq LworaW50CitXYWl0TWFpbihXYWl0U3RtdCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KQorewor CVR1cGxlRGVzYwl0dXBkZXNjOworCVR1cE91dHB1dFN0YXRlICp0c3RhdGU7CisJWExvZ1JlY1B0 cglsc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlpbnQJCXJlcyA9IDA7CisKKwlsc24gPSBEYXR1 bUdldExTTihEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2xzbl9pbiwKKwkJCQkJCQkJCQkJCSBDU3Ry aW5nR2V0RGF0dW0oc3RtdC0+bHNuKSkpOworCXJlcyA9IFdhaXRVdGlsaXR5KGxzbiwgc3RtdC0+ ZGVsYXkpOworCisJLyogTmVlZCBhIHR1cGxlIGRlc2NyaXB0b3IgcmVwcmVzZW50aW5nIGEgc2lu Z2xlIFRFWFQgY29sdW1uICovCisJdHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKDEp OworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgIkxTTiByZWFj aGVkIiwgVEVYVE9JRCwgLTEsIDApOworCS8qIFByZXBhcmUgZm9yIHByb2plY3Rpb24gb2YgdHVw bGVzICovCisJdHN0YXRlID0gYmVnaW5fdHVwX291dHB1dF90dXBkZXNjKGRlc3QsIHR1cGRlc2Ms ICZUVFNPcHNNaW5pbWFsVHVwbGUpOworCisJLyogU2VuZCBpdCAqLworCWRvX3RleHRfb3V0cHV0 X29uZWxpbmUodHN0YXRlLCByZXM/InQiOiJmIik7CisJZW5kX3R1cF9vdXRwdXQodHN0YXRlKTsK KwlyZXR1cm4gcmVzOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggMDZmYzhjZTk4Yi4uZjFkODZm ZjQzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC00MDUsNyArNDA1LDYgQEAgdHJhbnNmb3JtU3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSkKIAkJCXJlc3VsdCA9IHRyYW5z Zm9ybUNhbGxTdG10KHBzdGF0ZSwKIAkJCQkJCQkJCSAgIChDYWxsU3RtdCAqKSBwYXJzZVRyZWUp OwogCQkJYnJlYWs7Ci0KIAkJZGVmYXVsdDoKIAogCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDZiODgw OTZlOGUuLmRhMDkwYjEyODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRp YyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlh c2VzLCBOb2RlICpxdWVyeSk7CiAJCVNlY0xhYmVsU3RtdCBTZWxlY3RTdG10IFRyYW5zYWN0aW9u U3RtdCBUcmFuc2FjdGlvblN0bXRMZWdhY3kgVHJ1bmNhdGVTdG10CiAJCVVubGlzdGVuU3RtdCBV cGRhdGVTdG10IFZhY3V1bVN0bXQKIAkJVmFyaWFibGVSZXNldFN0bXQgVmFyaWFibGVTZXRTdG10 IFZhcmlhYmxlU2hvd1N0bXQKLQkJVmlld1N0bXQgQ2hlY2tQb2ludFN0bXQgQ3JlYXRlQ29udmVy c2lvblN0bXQKKwkJVmlld1N0bXQgV2FpdFN0bXQgQ2hlY2tQb2ludFN0bXQgQ3JlYXRlQ29udmVy c2lvblN0bXQKIAkJRGVhbGxvY2F0ZVN0bXQgUHJlcGFyZVN0bXQgRXhlY3V0ZVN0bXQKIAkJRHJv cE93bmVkU3RtdCBSZWFzc2lnbk93bmVkU3RtdAogCQlBbHRlclRTQ29uZmlndXJhdGlvblN0bXQg QWx0ZXJUU0RpY3Rpb25hcnlTdG10CkBAIC02NDQsNiArNjQ0LDggQEAgc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKICV0eXBlIDxwYXJ0Ym91bmRzcGVjPiBQYXJ0aXRpb25Cb3VuZFNwZWMKICV0eXBl IDxsaXN0PgkJaGFzaF9wYXJ0Ym91bmQKICV0eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRib3VuZF9l bGVtCisldHlwZSA8aXZhbD4JCXdhaXRfdGltZQorJXR5cGUgPG5vZGU+CQl3YWl0X2ZvcgogCiAl dHlwZSA8bm9kZT4JanNvbl9mb3JtYXRfY2xhdXNlCiAJCQkJanNvbl9mb3JtYXRfY2xhdXNlX29w dApAQCAtMTEwMiw2ICsxMTA0LDcgQEAgc3RtdDoKIAkJCXwgVmFyaWFibGVTZXRTdG10CiAJCQl8 IFZhcmlhYmxlU2hvd1N0bXQKIAkJCXwgVmlld1N0bXQKKwkJCXwgV2FpdFN0bXQKIAkJCXwgLypF TVBUWSovCiAJCQkJeyAkJCA9IE5VTEw7IH0KIAkJOwpAQCAtMTA5MjEsMTIgKzEwOTI0LDEzIEBA IFRyYW5zYWN0aW9uU3RtdDoKIAkJCQkJbi0+bG9jYXRpb24gPSAtMTsKIAkJCQkJJCQgPSAoTm9k ZSAqKSBuOwogCQkJCX0KLQkJCXwgU1RBUlQgVFJBTlNBQ1RJT04gdHJhbnNhY3Rpb25fbW9kZV9s aXN0X29yX2VtcHR5CisJCQl8IFNUQVJUIFRSQU5TQUNUSU9OIHRyYW5zYWN0aW9uX21vZGVfbGlz dF9vcl9lbXB0eSB3YWl0X2ZvcgogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25TdG10ICpuID0gbWFr ZU5vZGUoVHJhbnNhY3Rpb25TdG10KTsKIAogCQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9TVEFS VDsKIAkJCQkJbi0+b3B0aW9ucyA9ICQzOworCQkJCQluLT53YWl0ID0gJDQ7CiAJCQkJCW4tPmxv Y2F0aW9uID0gLTE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xMTAyNSwxMiAr MTEwMjksMTMgQEAgVHJhbnNhY3Rpb25TdG10OgogCQk7CiAKIFRyYW5zYWN0aW9uU3RtdExlZ2Fj eToKLQkJCUJFR0lOX1Agb3B0X3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9l bXB0eQorCQkJQkVHSU5fUCBvcHRfdHJhbnNhY3Rpb24gdHJhbnNhY3Rpb25fbW9kZV9saXN0X29y X2VtcHR5IHdhaXRfZm9yCiAJCQkJewogCQkJCQlUcmFuc2FjdGlvblN0bXQgKm4gPSBtYWtlTm9k ZShUcmFuc2FjdGlvblN0bXQpOwogCiAJCQkJCW4tPmtpbmQgPSBUUkFOU19TVE1UX0JFR0lOOwog CQkJCQluLT5vcHRpb25zID0gJDM7CisJCQkJCW4tPndhaXQgPSAkNDsKIAkJCQkJbi0+bG9jYXRp b24gPSAtMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTE1ODYyLDYgKzE1ODY3 LDM3IEBAIHhtbF9wYXNzaW5nX21lY2g6CiAJCQl8IEJZIFZBTFVFX1AKIAkJOwogCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqCisgKgkJUVVFUlk6CisgKgkJCQlBRlRFUiBMU05fdmFsdWUgW1dJ VEhJTiBkZWxheSB0aW1lc3RhbXBdCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV2FpdFN0 bXQ6CisJCQlBRlRFUiBTY29uc3Qgd2FpdF90aW1lCisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9 IG1ha2VOb2RlKFdhaXRTdG10KTsKKwkJCQkJbi0+bHNuID0gJDI7CisJCQkJCW4tPmRlbGF5ID0g JDM7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJOword2FpdF9mb3I6CisJCQlBRlRF UiBTY29uc3Qgd2FpdF90aW1lCisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9IG1ha2VOb2RlKFdh aXRTdG10KTsKKwkJCQkJbi0+bHNuID0gJDI7CisJCQkJCW4tPmRlbGF5ID0gJDM7CisJCQkJCSQk ID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgLyogRU1QVFkgKi8JCXsgJCQgPSBOVUxMOyB9CisJ CTsKKword2FpdF90aW1lOgorCQkJV0lUSElOIEljb25zdAkJeyAkJCA9ICQyOyB9CisJCQl8IC8q IEVNUFRZICovICAgICAgICAgICB7ICQkID0gMDsgfQorCQk7CisKIAogLyoKICAqIEFnZ3JlZ2F0 ZSBkZWNvcmF0aW9uIGNsYXVzZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRleCBlNTExOWVkNTVk Li5mZjZhM2RiNmE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC0yNiw2ICsyNiw3IEBACiAj aW5jbHVkZSAiYWNjZXNzL3hsb2dwcmVmZXRjaGVyLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dy ZWNvdmVyeS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvd2FpdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgog I2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgpAQCAtMTQ5LDYgKzE1MCw3IEBAIENh bGN1bGF0ZVNobWVtU2l6ZShpbnQgKm51bV9zZW1hcGhvcmVzKQogCXNpemUgPSBhZGRfc2l6ZShz aXplLCBBc3luY1NobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU3RhdHNTaG1l bVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRFdmVudEV4dGVuc2lvblNobWVt U2l6ZSgpKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgV2FpdFNobWVtU2l6ZSgpKTsKICNpZmRl ZiBFWEVDX0JBQ0tFTkQKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1CYWNrZW5kQXJyYXlT aXplKCkpOwogI2VuZGlmCkBAIC0yNDEsNiArMjQzLDExIEBAIENyZWF0ZVNoYXJlZE1lbW9yeUFu ZFNlbWFwaG9yZXModm9pZCkKIAkvKiBJbml0aWFsaXplIHN1YnN5c3RlbXMgKi8KIAlDcmVhdGVP ckF0dGFjaFNobWVtU3RydWN0cygpOwogCisJLyoKKwkgKiBJbml0IGFycmF5IG9mIExhdGNoZXMg aW4gc2hhcmVkIG1lbW9yeSBmb3Igd2FpdCBsc24KKwkgKi8KKwlXYWl0U2htZW1Jbml0KCk7CisK ICNpZmRlZiBFWEVDX0JBQ0tFTkQKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29w L3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IDhkZTgyMWY5NjAu LmU4ODQ4MjgwMTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBi L3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC0xNSw2ICsxNSw3IEBACiAgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSA8ZmxvYXQuaD4K IAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVs b3B0aW9ucy5oIgpAQCAtNTksNiArNjAsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3VzZXIuaCIK ICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy92aWV3Lmgi CisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dy aXRlci5oIgpAQCAtNzIsNiArNzQsOSBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5j bHVkZSAiZXhlY3V0b3Ivc3BpLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2lu Y2x1ZGUgInV0aWxzL3BnX2xzbi5oIgogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250 cm9sIGluIFByb2Nlc3NVdGlsaXR5KCkgKi8KIFByb2Nlc3NVdGlsaXR5X2hvb2tfdHlwZSBQcm9j ZXNzVXRpbGl0eV9ob29rID0gTlVMTDsKQEAgLTI3Miw2ICsyNzcsNyBAQCBDbGFzc2lmeVV0aWxp dHlDb21tYW5kQXNSZWFkT25seShOb2RlICpwYXJzZXRyZWUpCiAJCWNhc2UgVF9Mb2FkU3RtdDoK IAkJY2FzZSBUX1ByZXBhcmVTdG10OgogCQljYXNlIFRfVW5saXN0ZW5TdG10OgorCQljYXNlIFRf V2FpdFN0bXQ6CiAJCWNhc2UgVF9WYXJpYWJsZVNldFN0bXQ6CiAJCQl7CiAJCQkJLyoKQEAgLTYx Miw2ICs2MTgsMTEgQEAgc3RhbmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10 LAogCQkJCQljYXNlIFRSQU5TX1NUTVRfU1RBUlQ6CiAJCQkJCQl7CiAJCQkJCQkJTGlzdENlbGwg ICAqbGM7CisJCQkJCQkJV2FpdFN0bXQgICAqd2FpdHN0bXQgPSAoV2FpdFN0bXQgKikgc3RtdC0+ d2FpdDsKKworCQkJCQkJCS8qIElmIG5lZWRlZCB0byBXQUlUIEZPUiBzb21ldGhpbmcgYnV0IGZh aWxlZCAqLworCQkJCQkJCWlmIChzdG10LT53YWl0ICYmIFdhaXRNYWluKHdhaXRzdG10LCBkZXN0 KSA9PSAwKQorCQkJCQkJCQlicmVhazsKIAogCQkJCQkJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygp OwogCQkJCQkJCWZvcmVhY2gobGMsIHN0bXQtPm9wdGlvbnMpCkBAIC0xMDY5LDYgKzEwODAsMTMg QEAgc3RhbmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCWJyZWFr OwogCQkJfQogCisJCWNhc2UgVF9XYWl0U3RtdDoKKwkJCXsKKwkJCQlXYWl0U3RtdCAgICpzdG10 ID0gKFdhaXRTdG10ICopIHBhcnNldHJlZTsKKwkJCQlXYWl0TWFpbihzdG10LCBkZXN0KTsKKwkJ CQlicmVhazsKKwkJCX0KKwogCQlkZWZhdWx0OgogCQkJLyogQWxsIG90aGVyIHN0YXRlbWVudCB0 eXBlcyBoYXZlIGV2ZW50IHRyaWdnZXIgc3VwcG9ydCAqLwogCQkJUHJvY2Vzc1V0aWxpdHlTbG93 KHBzdGF0ZSwgcHN0bXQsIHF1ZXJ5U3RyaW5nLApAQCAtMjg0Nyw2ICsyODY1LDEwIEBAIENyZWF0 ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJdGFnID0gQ01EVEFHX05PVElGWTsKIAkJ CWJyZWFrOwogCisJCWNhc2UgVF9XYWl0U3RtdDoKKwkJCXRhZyA9IENNRFRBR19XQUlUOworCQkJ YnJlYWs7CisKIAkJY2FzZSBUX0xpc3RlblN0bXQ6CiAJCQl0YWcgPSBDTURUQUdfTElTVEVOOwog CQkJYnJlYWs7CkBAIC0zNDk1LDYgKzM1MTcsMTAgQEAgR2V0Q29tbWFuZExvZ0xldmVsKE5vZGUg KnBhcnNldHJlZSkKIAkJCWxldiA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBU X1dhaXRTdG10OgorCQkJbGV2ID0gTE9HU1RNVF9BTEw7CisJCQlicmVhazsKKwogCQljYXNlIFRf TGlzdGVuU3RtdDoKIAkJCWxldiA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0 LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDI3MDE2MGQ0NAotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQuaApAQCAtMCwwICsxLDI2 IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3YWl0LmgKKyAqCSAgcHJvdG90eXBlcyBm b3IgY29tbWFuZHMvd2FpdC5jCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIw MTYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDIwMTYsIFJlZ2VudHMgb2YgUG9zdGdyZXNQUk8KKyAqCisgKiBzcmMvaW5jbHVk ZS9jb21tYW5kcy93YWl0LmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBX QUlUX0gKKyNkZWZpbmUgV0FJVF9ICisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJ0 Y29wL2Rlc3QuaCIKKworZXh0ZXJuIGludCBXYWl0VXRpbGl0eShYTG9nUmVjUHRyIGxzbiwgY29u c3QgZmxvYXQ4IGRlbGF5KTsKK2V4dGVybiBTaXplIFdhaXRTaG1lbVNpemUodm9pZCk7CitleHRl cm4gdm9pZCBXYWl0U2htZW1Jbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgV2FpdFNldExhdGNoKFhM b2dSZWNQdHIgY3VyX2xzbik7CitleHRlcm4gWExvZ1JlY1B0ciBHZXRNaW5XYWl0KHZvaWQpOwor ZXh0ZXJuIGZsb2F0OCBXYWl0VGltZVJlc29sdmUoQ29uc3QgKnRpbWUpOworZXh0ZXJuIGludCBX YWl0TWFpbihXYWl0U3RtdCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KTsKKworI2VuZGlmICAg LyogV0FJVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggYjMxODFmMzRhZS4uOTgzNzlh ZTk3ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzUyNSw2ICszNTI1LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgVHJhbnNhY3Rpb25TdG10CiAJLyogZm9yIHR3by1waGFzZS1jb21taXQgcmVsYXRl ZCBjb21tYW5kcyAqLwogCWNoYXIJICAgKmdpZCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2ln bm9yZSk7CiAJYm9vbAkJY2hhaW47CQkJLyogQU5EIENIQUlOIG9wdGlvbiAqLworCU5vZGUJCSp3 YWl0OwkJCS8qIHdhaXQgbHNuIGNsYXVzZSAqLwogCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBp ZiB1bmtub3duICovCiAJaW50CQkJbG9jYXRpb24gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9s b2NhdGlvbik7CiB9IFRyYW5zYWN0aW9uU3RtdDsKQEAgLTQwNzYsNCArNDA3NywxNiBAQCB0eXBl ZGVmIHN0cnVjdCBEcm9wU3Vic2NyaXB0aW9uU3RtdAogCURyb3BCZWhhdmlvciBiZWhhdmlvcjsJ CS8qIFJFU1RSSUNUIG9yIENBU0NBREUgYmVoYXZpb3IgKi8KIH0gRHJvcFN1YnNjcmlwdGlvblN0 bXQ7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlBRlRFUiBTdGF0ZW1lbnQgKyBB RlRFUiBjbGF1c2Ugb2YgQkVHSU4gc3RhdGVtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgV2FpdFN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCWNo YXIJICAgKmxzbjsJCS8qIExTTiAqLworCWludAkJCWRlbGF5OwkJLyogVElNRU9VVCAqLworfSBX YWl0U3RtdDsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlNFTk9ERVNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xp c3QuaAppbmRleCA3ZmRjZWM2ZGQ5Li41NjcxMzk5NjNhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS90Y29wL2NtZHRhZ2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaApA QCAtMjE3LDMgKzIxNyw0IEBAIFBHX0NNRFRBRyhDTURUQUdfVFJVTkNBVEVfVEFCTEUsICJUUlVO Q0FURSBUQUJMRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX1VOTElT VEVOLCAiVU5MSVNURU4iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19V UERBVEUsICJVUERBVEUiLCBmYWxzZSwgZmFsc2UsIHRydWUpCiBQR19DTURUQUcoQ01EVEFHX1ZB Q1VVTSwgIlZBQ1VVTSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1dB SVQsICJBRlRFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWNvdmVyeS90LzA0MF9iZWdpbl9hZnRlci5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX2Jl Z2luX2FmdGVyLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmIyMmU2 MzYwM2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9iZWdpbl9h ZnRlci5wbApAQCAtMCwwICsxLDg2IEBACisjIENoZWNrcyB3YWl0aW5nIGZvciBsc24gb24gc3Rh bmRieSBBRlRFUgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6 TW9yZTsKKworIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorbXkgJG5vZGVfcHJpbWFyeSA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJG5vZGVfcHJpbWFyeS0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyMg QW5kIHNvbWUgY29udGVudCBhbmQgdGFrZSBhIGJhY2t1cAorJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB3YWl0X3Rlc3QgQVMgU0VMRUNUIGdlbmVy YXRlX3NlcmllcygxLDEwKSBBUyBhIik7CitteSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsK KyRub2RlX3ByaW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworCisjIENyZWF0ZSBhIHN0cmVh bWluZyBzdGFuZGJ5IHdpdGggYSAxIHNlY29uZCBkZWxheSBmcm9tIHRoZSBiYWNrdXAKK215ICRu b2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnknKTsK K215ICRkZWxheSAgICAgICAgPSAxOworJG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgk bm9kZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRub2Rl X3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcVsKKwlyZWNvdmVyeV9t aW5fYXBwbHlfZGVsYXkgPSAnJHtkZWxheX1zJworXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsK KworCisKKyMgTWFrZSBzdXJlIHRoYXQgQUZURVIgd29ya3M6IGFkZCBuZXcgY29udGVudCB0byBw cmltYXJ5IGFuZCBtZW1vcml6ZQorIyBwcmltYXJ5J3MgbmV3IExTTiwgdGhlbiB3YWl0IGZvciBw cmltYXJ5J3MgTFNOIG9uIHN0YW5kYnkuIFByb3ZlIHRoYXQgQUZURVIgaXMKKyMgYWJsZSB0byBz ZXR1cCBhbiBpbmZpbml0ZSB3YWl0aW5nIGxvb3AgYW5kIGV4aXQgaXQgaWYgZ2l2ZW4gbm8gd2Fp dCB0aW1lb3V0LgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VS VCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygxMSwgMjApKSIpOworbXkg JGxzbjEgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19j dXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJCRUdJTiBBRlRFUiAnJGxzbjEnIik7CisKKyMgR2V0IHRoZSBjdXJyZW50IExTTiBvbiBzdGFu ZGJ5IGFuZCBtYWtlIHN1cmUgaXQncyB0aGUgc2FtZSBhcyBwcmltYXJ5J3MgTFNOCitteSAkbHNu X3N0YW5kYnkgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKSIpOworbXkgJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0 YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9z dGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjEnOjpwZ19sc24pIik7CitvaygkY29tcGFyZV9sc25zIGVx IDAsICJzdGFuZGJ5IHJlYWNoZWQgdGhlIHNhbWUgTFNOIGFzIHByaW1hcnkgQUZURVIiKTsKKwor CisKKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRPRE86IHJlbW92ZSB0aGlzIHRlc3QgaWYg d2UgcmVtb3ZlIHRoZSBzdGFuZGFsb25lICJBRlRFUiIgY29tbWFuZAorIz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKyMgV2UgbmVlZCB0byBjaGVjayB0aGF0IEFGVEVSIHdvcmtzIGZpbmUgaW5zaWRl IHRyYW5zYWN0aW9ucy4gRm9yIHRoYXQsIGxldCdzCisjIGdldCB0d28gTFNOcyB0aGF0IHdpbGwg Y29ycmVzcG9uZCB0byB0d28gZGlmZmVyZW50IG1heCB2YWx1ZXMgaW4gb3VyIHRhYmxlLgorJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVz dCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygzMSwgNDApKSIpOworbXkgJGxzbjMgPSAkbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24o KSIpOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRP IHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg0MSwgNTApKSIpOworbXkgJGxzbjQg PSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50 X3dhbF9sc24oKSIpOworCisjIEJlZm9yZSBzdGFydGluZyB0cmFuc2FjdGlvbiwgQUZURVIgd2hp Y2ggZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA0MC4KKyMgSW5zaWRlIHRoZSB0cmFuc2FjdGlvbiwg QUZURVIgdGhhdCBlbnN1cmVzIGEgbWF4IHZhbHVlIG9mIDUwLgorIyBEdWUgdG8gSVNPTEFUSU9O IExFVkVMIFJFUEVBVEFCTEUgUkVBRCwgd2Ugc2hvdWxkIE5PVCBzZWUgdGhlIG5ldyBtYXggdmFs dWUuCitteSAkc3RhbmRieV9yZXN1bHRzID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxWworCUJFR0lOIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBSRVBFQVRB QkxFIFJFQUQgQUZURVIgJyRsc24zJzsKKwlTRUxFQ1QgbWF4KGEpIEZST00gd2FpdF90ZXN0Owor CUJFR0lOIEFGVEVSICckbHNuNCc7CisJU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKTsK KwlTRUxFQ1QgbWF4KGEpIEZST00gd2FpdF90ZXN0OworCUNPTU1JVDsKK10pOworCisjIE1ha2Ug c3VyZSB0aGF0IHdlIGluZGVlZCByZWFjaCBwcmltYXJ5J3MgbGFzdCBMU04gaW5zaWRlIHRoZSB0 cmFuc2FjdGlvbi4KKyMgRm9yIHRoYXQsIGNoZWNrIHRoYXQgY2FsbGluZyBwZ19sYXN0X3dhbF9y ZXBsYXlfbHNuIHJldHVybmVkIHRoYXQgTFNOLgorbXkgJGxhc3RfbHNuX3JlYWNoZWQgPSAkc3Rh bmRieV9yZXN1bHRzID1+IC8kbHNuNC87CitvaygkbGFzdF9sc25fcmVhY2hlZCwgIkFGVEVSIHdv cmtzIGluc2lkZSBhIHRyYW5zYWN0aW9uIik7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBk b2Vzbid0IGJyZWFrIGFuZCBzaG93IHVzIHRoZSBuZXcgbWF4IHZhbHVlIGFmdGVyIEFGVEVSLgor IyBGb3IgdGhhdCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9sZGVyIG1heCB2YWx1ZSBpcyByZXBlYXRl ZCB0d2ljZSBpbiB0aGUgcmVzdWx0cy4KK215ICRjb3VudCA9ICgpID0gJHN0YW5kYnlfcmVzdWx0 cyA9fiAvNDAvZzsKK29rKCRjb3VudCBlcSAyLCAidHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVs IGRvZXNuJ3QgZ2V0IGJyb2tlbiBkdWUgdG8gQUZURVIiKTsKKworJG5vZGVfc3RhbmRieS0+c3Rv cDsKKyRub2RlX3ByaW1hcnktPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDQxX2FmdGVyLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDFf YWZ0ZXIucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDgwYmE2YjMz YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQxX2FmdGVyLnBsCkBA IC0wLDAgKzEsOTkgQEAKKyMgQ2hlY2tzIHdhaXRpbmcgZm9yIGxzbiBvbiBzdGFuZGJ5IEFGVEVS Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisj IEluaXRpYWxpemUgcHJpbWFyeSBub2RlCitteSAkbm9kZV9wcmltYXJ5ID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7Ciskbm9kZV9wcmltYXJ5LT5pbml0KGFsbG93 c19zdHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9wcmltYXJ5LT5zdGFydDsKKworIyBBbmQgc29tZSBj b250ZW50IGFuZCB0YWtlIGEgYmFja3VwCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFRBQkxFIHdhaXRfdGVzdCBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVz KDEsMTApIEFTIGEiKTsKK215ICRiYWNrdXBfbmFtZSA9ICdteV9iYWNrdXAnOworJG5vZGVfcHJp bWFyeS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7CisKKyMgQ3JlYXRlIGEgc3RyZWFtaW5nIHN0YW5k Ynkgd2l0aCBhIDEgc2Vjb25kIGRlbGF5IGZyb20gdGhlIGJhY2t1cAorbXkgJG5vZGVfc3RhbmRi eSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieScpOworbXkgJGRlbGF5 ICAgICAgICA9IDI7Ciskbm9kZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3ByaW1h cnksICRiYWNrdXBfbmFtZSwKKwloYXNfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxWworCXJlY292ZXJ5X21pbl9hcHBseV9k ZWxheSA9ICcke2RlbGF5fXMnCitdKTsKKyRub2RlX3N0YW5kYnktPnN0YXJ0OworCisKKworIyBN YWtlIHN1cmUgdGhhdCBBRlRFUiB3b3JrczogYWRkIG5ldyBjb250ZW50IHRvIHByaW1hcnkgYW5k IG1lbW9yaXplCisjIHByaW1hcnkncyBuZXcgTFNOLCB0aGVuIHdhaXQgZm9yIHByaW1hcnkncyBM U04gb24gc3RhbmRieS4gUHJvdmUgdGhhdCBBRlRFUiBpcworIyBhYmxlIHRvIHNldHVwIGFuIGlu ZmluaXRlIHdhaXRpbmcgbG9vcCBhbmQgZXhpdCBpdCBpZiBnaXZlbiBubyB3YWl0IHRpbWVvdXQu Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2Fp dF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDExLCAyMCkpIik7CitteSAkbHNuMSA9ICRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2Fs X2xzbigpIik7Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFGVEVSICck bHNuMSciKTsKKworIyBHZXQgdGhlIGN1cnJlbnQgTFNOIG9uIHN0YW5kYnkgYW5kIG1ha2Ugc3Vy ZSBpdCdzIHRoZSBzYW1lIGFzIHByaW1hcnkncyBMU04KK215ICRsc25fc3RhbmRieSA9ICRub2Rl X3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbGFzdF93YWxfcmVw bGF5X2xzbigpIik7CitteSAkY29tcGFyZV9sc25zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sc25fY21wKCckbHNuX3N0YW5kYnknOjpwZ19sc24s ICckbHNuMSc6OnBnX2xzbikiKTsKK29rKCRjb21wYXJlX2xzbnMgZXEgMCwgInN0YW5kYnkgcmVh Y2hlZCB0aGUgc2FtZSBMU04gYXMgcHJpbWFyeSBBRlRFUiIpOworCisKKworIyBDaGVjayB0aGF0 IHRpbWVvdXRzIHdvcmsgb24gdGhlaXIgb3duIGFuZCBsZXQgdXMgd2FpdCBmb3Igc3BlY2lmaWVk IHRpbWUgKDFzKQorbXkgJGN1cnJlbnRfdGltZSA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIG5vdygpIik7CitteSAkb25lX3NlY29uZCA9IDEwMDA7ICMgaW4g bWlsbGlzZWNvbmRzCitteSAkc3RhcnRfdGltZSA9IHRpbWUoKTsKKworIyBOb3csIGNoZWNrIHRo YXQgdGltZW91dHMgd29yayBhcyBleHBlY3RlZCB3aGVuIHdhaXRpbmcgZm9yIExTTgorJG5vZGVf cHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBW QUxVRVMgKGdlbmVyYXRlX3NlcmllcygyMSwgMzApKSIpOworbXkgJGxzbjIgPSAkbm9kZV9wcmlt YXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIp OworbXkgJHJlYWNoZWRfbHNuID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFGVEVSICckbHNuMicgV0lUSElOIDEiKTsKK29rKCRyZWFjaGVkX2xzbiBlcSAiZiIsICJB RlRFUiBkb2Vzbid0IHJlYWNoIExTTiBpZiBnaXZlbiB0b28gbGl0dGxlIHdhaXQgdGltZSIpOwor CisKKworIyBXZSBuZWVkIHRvIGNoZWNrIHRoYXQgV0FJVCB3b3JrcyBmaW5lIGluc2lkZSB0cmFu c2FjdGlvbnMuIEZvciB0aGF0LCBsZXQncworIyBnZXQgdHdvIExTTnMgdGhhdCB3aWxsIGNvcnJl c3BvbmQgdG8gdHdvIGRpZmZlcmVudCBtYXggdmFsdWVzIGluIG91ciB0YWJsZS4KKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFM VUVTIChnZW5lcmF0ZV9zZXJpZXMoMzEsIDQwKSkiKTsKK215ICRsc24zID0gJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsK KyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0 X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNDEsIDUwKSkiKTsKK215ICRsc240ID0gJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxf bHNuKCkiKTsKKworIyBCZWZvcmUgc3RhcnRpbmcgdHJhbnNhY3Rpb24sIEFGVEVSIHdoaWNoIGVu c3VyZXMgYSBtYXggdmFsdWUgb2YgNDAuCisjIEluc2lkZSB0aGUgdHJhbnNhY3Rpb24sIEFGVEVS IHRoYXQgZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA1MC4KKyMgRHVlIHRvIElTT0xBVElPTiBMRVZF TCBSRVBFQVRBQkxFIFJFQUQsIHdlIHNob3VsZCBOT1Qgc2VlIHRoZSBuZXcgbWF4IHZhbHVlLgor bXkgJHN0YW5kYnlfcmVzdWx0cyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcVsKKwlBRlRFUiAnJGxzbjMnOworCUJFR0lOIFRSQU5TQUNUSU9OIElTT0xBVElPTiBM RVZFTCBSRVBFQVRBQkxFIFJFQUQ7CisJU0VMRUNUIG1heChhKSBGUk9NIHdhaXRfdGVzdDsKKwlB RlRFUiAnJGxzbjQnOworCVNFTEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCk7CisJU0VMRUNU IG1heChhKSBGUk9NIHdhaXRfdGVzdDsKKwlDT01NSVQ7CitdKTsKKworIyBNYWtlIHN1cmUgdGhh dCB3ZSBpbmRlZWQgcmVhY2ggcHJpbWFyeSdzIGxhc3QgTFNOIGluc2lkZSB0aGUgdHJhbnNhY3Rp b24uCisjIEZvciB0aGF0LCBjaGVjayB0aGF0IGNhbGxpbmcgcGdfbGFzdF93YWxfcmVwbGF5X2xz biByZXR1cm5lZCB0aGF0IExTTi4KK215ICRsYXN0X2xzbl9yZWFjaGVkID0gJHN0YW5kYnlfcmVz dWx0cyA9fiAvJGxzbjQvOworb2soJGxhc3RfbHNuX3JlYWNoZWQsICJBRlRFUiB3b3JrcyBpbnNp ZGUgYSB0cmFuc2FjdGlvbiIpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gZG9lc24ndCBi cmVhayBhbmQgc2hvdyB1cyB0aGUgbmV3IG1heCB2YWx1ZSBhZnRlciBBRlRFUi4KKyMgRm9yIHRo YXQsIG1ha2Ugc3VyZSB0aGF0IHRoZSBvbGRlciBtYXggdmFsdWUgaXMgcmVwZWF0ZWQgdHdpY2Ug aW4gdGhlIHJlc3VsdHMuCitteSAkY291bnQgPSAoKSA9ICRzdGFuZGJ5X3Jlc3VsdHMgPX4gLzQw L2c7CitvaygkY291bnQgZXEgMiwgInRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbCBkb2Vzbid0 IGdldCBicm9rZW4gZHVlIHRvIEFGVEVSIik7CisKKyRub2RlX3N0YW5kYnktPnN0b3A7Ciskbm9k ZV9wcmltYXJ5LT5zdG9wOworZG9uZV90ZXN0aW5nKCk7Cg== --=_eea1fd1cdd96c9ddb3e84e7ca6535a2f--