Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1k7yc3-0001JJ-Bw for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Aug 2020 10:13:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1k7yc2-000242-1h for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Aug 2020 10:13:02 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1k7yc1-00023u-Ka for pgsql-hackers@lists.postgresql.org; Tue, 18 Aug 2020 10:13:01 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1k7ybs-0001C3-Qb for pgsql-hackers@lists.postgresql.org; Tue, 18 Aug 2020 10:13:00 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 5440121C2BE5; Tue, 18 Aug 2020 13:12:51 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=x tagged_above=-99 required=4 WHITELISTED tests=[] autolearn=unavailable Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 24BD621C2BDB; Tue, 18 Aug 2020 13:12:51 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1597745571; bh=s78qIMYLMLRki/sjtNWvRw7/nG8PbWnpQCqQi357kYs=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=gO7BpR8Cb0IbaCKhxprxvrBaArJF2JOqB2oEmCbJUI0ashcPEn6GUKTXFf8ywLm0Z YwVQwjcm5ZFNHUx+e/8+qLga8NsahYiij6T3Fgmq7zmj1RPSl4anCbs21d+aJMcyBe vKajtevvmsGtfp7xp8kMdyyeq6X6WkTwBtYBfGRE= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_da2b69cdea9c99d5332e59c96f16d82a" Content-Transfer-Encoding: 7bit Date: Tue, 18 Aug 2020 13:12:51 +0300 From: Anna Akenteva To: Daniel Gustafsson Cc: Andres Freund , Tom Lane , Fujii Masao , Alexey Kondratov , Kyotaro Horiguchi , a.korotkov@postgrespro.ru, i.kartyshov@postgrespro.ru, amit.kapila16@gmail.com, pgsql-hackers@lists.postgresql.org Subject: Re: [HACKERS] make async slave to wait for lsn to be replayed In-Reply-To: <78739FAE-EC8C-40C8-8354-84AAD76DF786@yesql.se> References: <13716.1586378146@sss.pgh.pa.us> <20200409.161107.580344062273684114.horikyota.ntt@gmail.com> <880834ee-4b18-6d5d-9dae-6520c5eb2bef@oss.nttdata.com> <27171.1586439221@sss.pgh.pa.us> <759206c1-265f-97da-d135-fcecbced646b@oss.nttdata.com> <20200410193301.2qsbuoieppkst7xj@alap3.anarazel.de> <32218.1586550579@sss.pgh.pa.us> <20200410210641.5cub2minmnciydvv@alap3.anarazel.de> <2024.1586553430@sss.pgh.pa.us> <20200410214410.vzu6at6qbjq4yage@alap3.anarazel.de> <78739FAE-EC8C-40C8-8354-84AAD76DF786@yesql.se> User-Agent: Roundcube Webmail/1.4.0 Message-ID: <9196d88ccc1409c715c2fe2b11391c80@postgrespro.ru> X-Sender: a.akenteva@postgrespro.ru Organization: Postgres Professional List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_da2b69cdea9c99d5332e59c96f16d82a Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2020-07-13 14:21, Daniel Gustafsson wrote: > This patch require some rewording of documentation/comments and > variable names > after the language change introduced by 229f8c219f8f..a9a4a7ad565b, the > thread > below can be used as reference for how to change: > > https://www.postgresql.org/message-id/flat/20200615182235.x7lch5n6kcjq4aue%40alap3.anarazel.de > Thank you for the heads up! I updated the most recent patch and removed the use of "master" from it, replacing it with "primary". -- Anna Akenteva Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --=_da2b69cdea9c99d5332e59c96f16d82a Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=begin_waitfor_v9.patch Content-Disposition: attachment; filename=begin_waitfor_v9.patch; size=29939 Y29tbWl0IDEwMjFiMTY2YzBjYjRlNDAxN2Q1MDNlYjQ4MWU3ODc2Mzg4NDJhYjEKQXV0aG9yOiBB a2VudGV2YSBBbm5hIDxhLmFrZW50ZXZhQHBvc3RncmVzcHJvLnJ1PgpEYXRlOiAgIFR1ZSBBdWcg MTggMTI6Mzc6MTYgMjAyMCArMDMwMAoKICAgIHdhaXQgZm9yIGxzbgoKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvYmVnaW4uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYmVnaW4uc2dtbApp bmRleCBjMjNiYmZiNGU3MS4uZmJmYWRiYWM4ZTkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvYmVnaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2JlZ2luLnNnbWwKQEAgLTIxLDcg KzIxLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8 c3lub3BzaXM+Ci1CRUdJTiBbIFdPUksgfCBUUkFOU0FDVElPTiBdIFsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0K K0JFR0lOIFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSBbIFdBSVQgRk9S IExTTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bHNuX3ZhbHVlPC9yZXBsYWNlYWJs ZT4gW1RJTUVPVVQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWJlcl9vZl9taWxs aXNlY29uZHM8L3JlcGxhY2VhYmxlPiBdIF0KIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IGlzIG9uZSBv Zjo8L3BocmFzZT4KIApAQCAtNjMsNiArNjMsMTcgQEAgQkVHSU4gWyBXT1JLIHwgVFJBTlNBQ1RJ T04gXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC8K ICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1zZXQtdHJhbnNhY3Rpb24iLz4KICAgIHdhcyBleGVjdXRl ZC4KICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlIDxsaXRlcmFsPldBSVQgRk9SPC9saXRl cmFsPiBjbGF1c2UgYWxsb3dzIHRvIHdhaXQgZm9yIHRoZSB0YXJnZXQgbG9nCisgICBzZXF1ZW5j ZSBudW1iZXIgKDxhY3JvbnltPkxTTjwvYWNyb255bT4pIHRvIGJlIHJlcGxheWVkIG9uIHN0YW5k YnkgYmVmb3JlCisgICBzdGFydGluZyB0aGUgdHJhbnNhY3Rpb24gaW4gPHByb2R1Y3RuYW1lPlBv c3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBkYXRhYmFzZXMKKyAgIHdpdGggcHJpbWFyeS1zdGFuZGJ5 IGFzeW5jaHJvbm91cyByZXBsaWNhdGlvbi4gV2FpdCB0aW1lIGNhbiBiZSBsaW1pdGVkIGJ5Cisg ICBzcGVjaWZ5aW5nIGEgdGltZW91dCwgd2hpY2ggaXMgbWVhc3VyZWQgaW4gbWlsbGlzZWNvbmRz IGFuZCBtdXN0IGJlIGEgcG9zaXRpdmUKKyAgIGludGVnZXIuIElmIDxhY3JvbnltPkxTTjwvYWNy b255bT4gd2FzIG5vdCByZWFjaGVkIGJlZm9yZSB0aW1lb3V0LCB0cmFuc2FjdGlvbgorICAgZG9l c24ndCBiZWdpbi4gV2FpdGluZyBjYW4gYmUgaW50ZXJydXB0ZWQgdXNpbmcgPGxpdGVyYWw+Q3Ry bCtDPC9saXRlcmFsPiwgb3IKKyAgIGJ5IHNodXR0aW5nIGRvd24gdGhlIDxsaXRlcmFsPnBvc3Rn cmVzPC9saXRlcmFsPiBzZXJ2ZXIuCisgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgogCiAgPHJlZnNl Y3QxPgpAQCAtMTQ2LDYgKzE1NywxMCBAQCBCRUdJTjsKICAgIGRpZmZlcmVudCBwdXJwb3NlIGlu IGVtYmVkZGVkIFNRTC4gWW91IGFyZSBhZHZpc2VkIHRvIGJlIGNhcmVmdWwKICAgIGFib3V0IHRo ZSB0cmFuc2FjdGlvbiBzZW1hbnRpY3Mgd2hlbiBwb3J0aW5nIGRhdGFiYXNlIGFwcGxpY2F0aW9u cy4KICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlcmUgaXMgbm8gPGNvbW1hbmQ+V0FJVCBG T1I8L2NvbW1hbmQ+IGNsYXVzZSBpbiB0aGUgU1FMIHN0YW5kYXJkLgorICA8L3BhcmE+CiAgPC9y ZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvc3Rh cnRfdHJhbnNhY3Rpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24u c2dtbAppbmRleCBkNmNkMWQ0MTc3OS4uMDE2ZTU5OTMwZGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3N0 YXJ0X3RyYW5zYWN0aW9uLnNnbWwKQEAgLTIxLDcgKzIxLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVu dGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+Ci1TVEFSVCBUUkFOU0FDVElP TiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBs YWNlYWJsZT4gWywgLi4uXSBdCitTVEFSVCBUUkFOU0FDVElPTiBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdIFsg V0FJVCBGT1IgTFNOIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5sc25fdmFsdWU8L3Jl cGxhY2VhYmxlPiBbVElNRU9VVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtYmVy X29mX21pbGxpc2Vjb25kczwvcmVwbGFjZWFibGU+IF0gXQogCiA8cGhyYXNlPndoZXJlIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4g aXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC00MCw2ICs0MCwxNyBAQCBTVEFSVCBUUkFOU0FDVElP TiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBs YWNlYWJsZQogICAgY2hhcmFjdGVyaXN0aWNzLCBhcyBpZiA8eHJlZiBsaW5rZW5kPSJzcWwtc2V0 LXRyYW5zYWN0aW9uIi8+IHdhcyBleGVjdXRlZC4gVGhpcyBpcyB0aGUgc2FtZQogICAgYXMgdGhl IDx4cmVmIGxpbmtlbmQ9InNxbC1iZWdpbiIvPiBjb21tYW5kLgogICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICBUaGUgPGxpdGVyYWw+V0FJVCBGT1I8L2xpdGVyYWw+IGNsYXVzZSBhbGxvd3MgdG8g d2FpdCBmb3IgdGhlIHRhcmdldCBsb2cKKyAgIHNlcXVlbmNlIG51bWJlciAoPGFjcm9ueW0+TFNO PC9hY3JvbnltPikgdG8gYmUgcmVwbGF5ZWQgb24gc3RhbmRieSBiZWZvcmUKKyAgIHN0YXJ0aW5n IHRoZSB0cmFuc2FjdGlvbiBpbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+ IGRhdGFiYXNlcworICAgd2l0aCBwcmltYXJ5LXN0YW5kYnkgYXN5bmNocm9ub3VzIHJlcGxpY2F0 aW9uLiBXYWl0IHRpbWUgY2FuIGJlIGxpbWl0ZWQgYnkKKyAgIHNwZWNpZnlpbmcgYSB0aW1lb3V0 LCB3aGljaCBpcyBtZWFzdXJlZCBpbiBtaWxsaXNlY29uZHMgYW5kIG11c3QgYmUgYSBwb3NpdGl2 ZQorICAgaW50ZWdlci4gSWYgPGFjcm9ueW0+TFNOPC9hY3JvbnltPiB3YXMgbm90IHJlYWNoZWQg YmVmb3JlIHRpbWVvdXQsIHRyYW5zYWN0aW9uCisgICBkb2Vzbid0IGJlZ2luLiBXYWl0aW5nIGNh biBiZSBpbnRlcnJ1cHRlZCB1c2luZyA8bGl0ZXJhbD5DdHJsK0M8L2xpdGVyYWw+LCBvcgorICAg Ynkgc2h1dHRpbmcgZG93biB0aGUgPGxpdGVyYWw+cG9zdGdyZXM8L2xpdGVyYWw+IHNlcnZlci4K KyAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CkBAIC03OCw2ICs4OSwxMCBA QCBTVEFSVCBUUkFOU0FDVElPTiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFu c2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZQogICAgb21pdHRlZC4KICAgPC9wYXJhPgogCisgIDxw YXJhPgorICAgVGhlcmUgaXMgbm8gPGNvbW1hbmQ+V0FJVCBGT1I8L2NvbW1hbmQ+IGNsYXVzZSBp biB0aGUgU1FMIHN0YW5kYXJkLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBTZWUgYWxzbyB0 aGUgY29tcGF0aWJpbGl0eSBzZWN0aW9uIG9mIDx4cmVmIGxpbmtlbmQ9InNxbC1zZXQtdHJhbnNh Y3Rpb24iLz4uCiAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCAwOWMw MWVkNGFlNC4uMTljYjA0ODY5YzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTQy LDYgKzQyLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvcHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCisj aW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgImNvbW1vbi9jb250cm9sZGF0YV91 dGlscy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKQEAgLTczODUsNiArNzM4NiwxNSBAQCBTdGFydHVwWExPRyh2b2lkKQogCQkJCQli cmVhazsKIAkJCQl9CiAKKwkJCQkvKgorCQkJCSAqIElmIHdlIHJlcGxheWVkIGFuIExTTiB0aGF0 IHNvbWVvbmUgd2FzIHdhaXRpbmcgZm9yLAorCQkJCSAqIHNldCBsYXRjaGVzIGluIHNoYXJlZCBt ZW1vcnkgYXJyYXkgdG8gbm90aWZ5IHRoZSB3YWl0ZXIuCisJCQkJICovCisJCQkJaWYgKFhMb2dD dGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ciA+PSBHZXRNaW5XYWl0ZWRMU04oKSkKKwkJCQl7CisJ CQkJCVdhaXRTZXRMYXRjaChYTG9nQ3RsLT5sYXN0UmVwbGF5ZWRFbmRSZWNQdHIpOworCQkJCX0K KwogCQkJCS8qIEVsc2UsIHRyeSB0byBmZXRjaCB0aGUgbmV4dCBXQUwgcmVjb3JkICovCiAJCQkJ cmVjb3JkID0gUmVhZFJlY29yZCh4bG9ncmVhZGVyLCBMT0csIGZhbHNlKTsKIAkJCX0gd2hpbGUg KHJlY29yZCAhPSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2Vm aWxlIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXggZDQ4MTVkM2NlNjUuLjli MzEwOTI2YzEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtNTcsNiArNTcsNyBAQCBPQkpTID0g XAogCXVzZXIubyBcCiAJdmFjdXVtLm8gXAogCXZhcmlhYmxlLm8gXAotCXZpZXcubworCXZpZXcu byBcCisJd2FpdC5vCiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jb21tb24u bWsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3dhaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZTExMjNkZjMyMWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0 LmMKQEAgLTAsMCArMSwyODIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHdhaXQuYwor ICoJICBJbXBsZW1lbnRzIFdBSVQgRk9SLCB3aGljaCBhbGxvd3Mgd2FpdGluZyBmb3IgZXZlbnRz IHN1Y2ggYXMKKyAqCSAgTFNOIGhhdmluZyBiZWVuIHJlcGxheWVkIG9uIHJlcGxpY2EuCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjAsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjAsIFJlZ2VudHMg b2YgUG9zdGdyZXNQcm8KKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9j b21tYW5kcy93YWl0LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBv c3RncmVzLmgiCisKKyNpbmNsdWRlIDxtYXRoLmg+CisKKyNpbmNsdWRlICJhY2Nlc3MveGxvZy5o IgorI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQu aCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAicGdzdGF0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9iYWNrZW5kaWQuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Btc2lnbmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCisjaW5jbHVk ZSAic3RvcmFnZS9zcGluLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRl ICJ1dGlscy9wZ19sc24uaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKworLyogQWRk IHRvIHNoYXJlZCBtZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2b2lkIEFkZFdhaXRlZExTTihYTG9n UmVjUHRyIGxzbl90b193YWl0KTsKKworLyogU2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgKi8KK3R5 cGVkZWYgc3RydWN0Cit7CisJaW50CQkJYmFja2VuZF9tYXhpZDsKKwlwZ19hdG9taWNfdWludDY0 IG1pbl9sc247IC8qIFhMb2dSZWNQdHIgb2YgbWluaW1hbCB3YWl0ZWQgZm9yIExTTiAqLworCXNs b2NrX3QJCW11dGV4OworCS8qIExTTnMgdGhhdCBkaWZmZXJlbnQgYmFja2VuZHMgYXJlIHdhaXRp bmcgKi8KKwlYTG9nUmVjUHRyCWxzbltGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBXYWl0U3Rh dGU7CisKK3N0YXRpYyBXYWl0U3RhdGUgKnN0YXRlOworCisvKgorICogQWRkIHRoZSB3YWl0IGV2 ZW50IG9mIHRoZSBjdXJyZW50IGJhY2tlbmQgdG8gc2hhcmVkIG1lbW9yeSBhcnJheQorICovCitz dGF0aWMgdm9pZAorQWRkV2FpdGVkTFNOKFhMb2dSZWNQdHIgbHNuX3RvX3dhaXQpCit7CisJU3Bp bkxvY2tBY3F1aXJlKCZzdGF0ZS0+bXV0ZXgpOworCWlmIChzdGF0ZS0+YmFja2VuZF9tYXhpZCA8 IE15QmFja2VuZElkKQorCQlzdGF0ZS0+YmFja2VuZF9tYXhpZCA9IE15QmFja2VuZElkOworCisJ c3RhdGUtPmxzbltNeUJhY2tlbmRJZF0gPSBsc25fdG9fd2FpdDsKKworCWlmIChsc25fdG9fd2Fp dCA8IHN0YXRlLT5taW5fbHNuLnZhbHVlKQorCQlzdGF0ZS0+bWluX2xzbi52YWx1ZSA9IGxzbl90 b193YWl0OworCVNwaW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4KTsKK30KKworLyoKKyAqIERl bGV0ZSB3YWl0IGV2ZW50IG9mIHRoZSBjdXJyZW50IGJhY2tlbmQgZnJvbSB0aGUgc2hhcmVkIG1l bW9yeSBhcnJheS4KKyAqLwordm9pZAorRGVsZXRlV2FpdGVkTFNOKHZvaWQpCit7CisJaW50CQkJ aTsKKwlYTG9nUmVjUHRyCWxzbl90b19kZWxldGU7CisKKwlTcGluTG9ja0FjcXVpcmUoJnN0YXRl LT5tdXRleCk7CisKKwlsc25fdG9fZGVsZXRlID0gc3RhdGUtPmxzbltNeUJhY2tlbmRJZF07CisJ c3RhdGUtPmxzbltNeUJhY2tlbmRJZF0gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCS8qIElmIHdl IGFyZSBkZWxldGluZyB0aGUgbWluaW1hbCBMU04sIHRoZW4gY2hvb3NlIHRoZSBuZXh0IG1pbl9s c24gKi8KKwlpZiAobHNuX3RvX2RlbGV0ZSAhPSBJbnZhbGlkWExvZ1JlY1B0ciAmJgorCQlsc25f dG9fZGVsZXRlID09IHN0YXRlLT5taW5fbHNuLnZhbHVlKQorCXsKKwkJc3RhdGUtPm1pbl9sc24u dmFsdWUgPSBQR19VSU5UNjRfTUFYOworCQlmb3IgKGkgPSAyOyBpIDw9IHN0YXRlLT5iYWNrZW5k X21heGlkOyBpKyspCisJCQlpZiAoc3RhdGUtPmxzbltpXSAhPSBJbnZhbGlkWExvZ1JlY1B0ciAm JgorCQkJCXN0YXRlLT5sc25baV0gPCBzdGF0ZS0+bWluX2xzbi52YWx1ZSkKKwkJCQlzdGF0ZS0+ bWluX2xzbi52YWx1ZSA9IHN0YXRlLT5sc25baV07CisJfQorCisJLyogSWYgZGVsZXRpbmcgZnJv bSB0aGUgZW5kIG9mIHRoZSBhcnJheSwgc2hvcnRlbiB0aGUgYXJyYXkncyB1c2VkIHBhcnQgKi8K KwlpZiAoc3RhdGUtPmJhY2tlbmRfbWF4aWQgPT0gTXlCYWNrZW5kSWQpCisJCWZvciAoaSA9IChN eUJhY2tlbmRJZCk7IGkgPj0gMjsgaS0tKQorCQkJaWYgKHN0YXRlLT5sc25baV0gIT0gSW52YWxp ZFhMb2dSZWNQdHIpCisJCQl7CisJCQkJc3RhdGUtPmJhY2tlbmRfbWF4aWQgPSBpOworCQkJCWJy ZWFrOworCQkJfQorCisJU3BpbkxvY2tSZWxlYXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgor ICogUmVwb3J0IGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBmb3IgV2FpdFN0 YXRlCisgKi8KK1NpemUKK1dhaXRTaG1lbVNpemUodm9pZCkKK3sKKwlTaXplCQlzaXplOworCisJ c2l6ZSA9IG9mZnNldG9mKFdhaXRTdGF0ZSwgbHNuKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwg bXVsX3NpemUoTWF4QmFja2VuZHMgKyAxLCBzaXplb2YoWExvZ1JlY1B0cikpKTsKKwlyZXR1cm4g c2l6ZTsKK30KKworLyoKKyAqIEluaXRpYWxpemUgYW4gYXJyYXkgb2YgZXZlbnRzIHRvIHdhaXQg Zm9yIGluIHNoYXJlZCBtZW1vcnkKKyAqLwordm9pZAorV2FpdFNobWVtSW5pdCh2b2lkKQorewor CWJvb2wJCWZvdW5kOworCXVpbnQzMgkJaTsKKworCXN0YXRlID0gKFdhaXRTdGF0ZSAqKSBTaG1l bUluaXRTdHJ1Y3QoInBnX3dhaXRfbHNuIiwKKwkJCQkJCQkJCQkgIFdhaXRTaG1lbVNpemUoKSwK KwkJCQkJCQkJCQkgICZmb3VuZCk7CisJaWYgKCFmb3VuZCkKKwl7CisJCVNwaW5Mb2NrSW5pdCgm c3RhdGUtPm11dGV4KTsKKworCQlmb3IgKGkgPSAwOyBpIDwgKE1heEJhY2tlbmRzICsgMSk7IGkr KykKKwkJCXN0YXRlLT5sc25baV0gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCQlzdGF0ZS0+YmFj a2VuZF9tYXhpZCA9IDA7CisJCXN0YXRlLT5taW5fbHNuLnZhbHVlID0gUEdfVUlOVDY0X01BWDsK Kwl9Cit9CisKKy8qCisgKiBTZXQgbGF0Y2hlcyBpbiBzaGFyZWQgbWVtb3J5IHRvIHNpZ25hbCB0 aGF0IG5ldyBMU04gaGFzIGJlZW4gcmVwbGF5ZWQKKyAqLwordm9pZAorV2FpdFNldExhdGNoKFhM b2dSZWNQdHIgY3VyX2xzbikKK3sKKwl1aW50MzIJCWk7CisJaW50CQkJYmFja2VuZF9tYXhpZDsK KwlQR1BST0MJICAgKmJhY2tlbmQ7CisKKwlTcGluTG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7 CisJYmFja2VuZF9tYXhpZCA9IHN0YXRlLT5iYWNrZW5kX21heGlkOworCisJZm9yIChpID0gMjsg aSA8PSBiYWNrZW5kX21heGlkOyBpKyspCisJeworCQliYWNrZW5kID0gQmFja2VuZElkR2V0UHJv YyhpKTsKKworCQlpZiAoYmFja2VuZCAmJiBzdGF0ZS0+bHNuW2ldICE9IDAgJiYKKwkJCXN0YXRl LT5sc25baV0gPD0gY3VyX2xzbikKKwkJeworCQkJU2V0TGF0Y2goJmJhY2tlbmQtPnByb2NMYXRj aCk7CisJCX0KKwl9CisJU3BpbkxvY2tSZWxlYXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgor ICogR2V0IG1pbmltYWwgTFNOIHRoYXQgc29tZW9uZSB3YWl0cyBmb3IKKyAqLworWExvZ1JlY1B0 cgorR2V0TWluV2FpdGVkTFNOKHZvaWQpCit7CisJcmV0dXJuIHN0YXRlLT5taW5fbHNuLnZhbHVl OworfQorCisvKgorICogT24gV0FJVCB1c2UgYSBsYXRjaCB0byB3YWl0IHRpbGwgTFNOIGlzIHJl cGxheWVkLAorICogcG9zdG1hc3RlciBkaWVzIG9yIHRpbWVvdXQgaGFwcGVucy4gVGltZW91dCBp cyBzcGVjaWZpZWQgaW4gbWlsbGlzZWNvbmRzLgorICogUmV0dXJucyB0cnVlIGlmIExTTiB3YXMg cmVhY2hlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitib29sCitXYWl0VXRpbGl0eShYTG9n UmVjUHRyIHRhcmdldF9sc24sIGNvbnN0IGludCB0aW1lb3V0X21zKQoreworCVhMb2dSZWNQdHIJ Y3VyX2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJaW50CQkJbGF0Y2hfZXZlbnRz OworCWZsb2F0OAkJZW5kdGltZTsKKwlib29sCQlyZXMgPSBmYWxzZTsKKwlib29sCQl3YWl0X2Zv cmV2ZXIgPSAodGltZW91dF9tcyA8PSAwKTsKKworCWVuZHRpbWUgPSBHZXROb3dGbG9hdCgpICsg dGltZW91dF9tcyAvIDEwMDAuMDsKKworCWxhdGNoX2V2ZW50cyA9IFdMX0xBVENIX1NFVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRIOworCisJLyogQ2hlY2sgaWYgd2UgYWxyZWFk eSByZWFjaGVkIHRoZSBuZWVkZWQgTFNOICovCisJaWYgKGN1cl9sc24gPj0gdGFyZ2V0X2xzbikK KwkJcmV0dXJuIHRydWU7CisKKwlBZGRXYWl0ZWRMU04odGFyZ2V0X2xzbik7CisKKwlmb3IgKDs7 KQorCXsKKwkJaW50CQkJcmM7CisJCWZsb2F0OAkJdGltZV9sZWZ0ID0gMDsKKwkJbG9uZwkJdGlt ZV9sZWZ0X21zID0gMDsKKworCQl0aW1lX2xlZnQgPSBlbmR0aW1lIC0gR2V0Tm93RmxvYXQoKTsK KworCQkvKiBVc2UgMTAwIG1zIGFzIHRoZSBkZWZhdWx0IHRpbWVvdXQgdG8gY2hlY2sgZm9yIGlu dGVycnVwdHMgKi8KKwkJaWYgKHdhaXRfZm9yZXZlciB8fCB0aW1lX2xlZnQgPCAwIHx8IHRpbWVf bGVmdCA+IDAuMSkKKwkJCXRpbWVfbGVmdF9tcyA9IDEwMDsKKwkJZWxzZQorCQkJdGltZV9sZWZ0 X21zID0gKGxvbmcpIGNlaWwodGltZV9sZWZ0ICogMTAwMC4wKTsKKworCQkvKiBJZiBpbnRlcnJ1 cHQsIExvY2tFcnJvckNsZWFudXAoKSB3aWxsIGRvIERlbGV0ZVdhaXRlZExTTigpIGZvciB1cyAq LworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIElmIHBvc3RtYXN0ZXIgZGllcywg ZmluaXNoIGltbWVkaWF0ZWx5ICovCisJCWlmICghUG9zdG1hc3RlcklzQWxpdmUoKSkKKwkJCWJy ZWFrOworCisJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsIGxhdGNoX2V2ZW50cywgdGltZV9sZWZ0 X21zLAorCQkJCQkgICBXQUlUX0VWRU5UX0NMSUVOVF9SRUFEKTsKKworCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCisJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJCWN1cl9sc24gPSBHZXRYTG9n UmVwbGF5UmVjUHRyKE5VTEwpOworCisJCWlmIChyYyAmIFdMX1RJTUVPVVQpCisJCXsKKwkJCWN1 cl9sc24gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQkJLyogSWYgdGhlIHRpbWUgc3Bl Y2lmaWVkIGJ5IHVzZXIgaGFzIHBhc3NlZCwgc3RvcCB3YWl0aW5nICovCisJCQl0aW1lX2xlZnQg PSBlbmR0aW1lIC0gR2V0Tm93RmxvYXQoKTsKKwkJCWlmICghd2FpdF9mb3JldmVyICYmIHRpbWVf bGVmdCA8PSAwLjApCisJCQkJYnJlYWs7CisJCX0KKworCQkvKiBJZiBMU04gaGFzIGJlZW4gcmVw bGF5ZWQgKi8KKwkJaWYgKHRhcmdldF9sc24gPD0gY3VyX2xzbikKKwkJCWJyZWFrOworCX0KKwor CURlbGV0ZVdhaXRlZExTTigpOworCisJaWYgKGN1cl9sc24gPCB0YXJnZXRfbHNuKQorCQllcmVw b3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9OT19BQ1RJVkVfU1FMX1RSQU5TQUNU SU9OKSwKKwkJCQkgZXJybXNnKCJkaWRuJ3Qgc3RhcnQgdHJhbnNhY3Rpb24gYmVjYXVzZSBMU04g d2FzIG5vdCByZWFjaGVkIiksCisJCQkJIGVycmhpbnQoIlRyeSB0byBpbmNyZWFzZSB3YWl0IHRp bWUuIikpKTsKKwllbHNlCisJCXJlcyA9IHRydWU7CisKKwlyZXR1cm4gcmVzOworfQorCisvKgor ICogSW1wbGVtZW50YXRpb24gb2YgV0FJVCBGT1IKKyAqLworaW50CitXYWl0TWFpbihXYWl0Q2xh dXNlICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3QpCit7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJ VHVwT3V0cHV0U3RhdGUgKnRzdGF0ZTsKKwlYTG9nUmVjUHRyCXRhcmdldF9sc247CisJYm9vbAkJ cmVzID0gZmFsc2U7CisKKwl0YXJnZXRfbHNuID0gRGF0dW1HZXRMU04oRGlyZWN0RnVuY3Rpb25D YWxsMShwZ19sc25faW4sCisJCQkJCQkJCQkJCQkgQ1N0cmluZ0dldERhdHVtKHN0bXQtPmxzbikp KTsKKwlyZXMgPSBXYWl0VXRpbGl0eSh0YXJnZXRfbHNuLCBzdG10LT50aW1lb3V0KTsKKworCS8q IE5lZWQgYSB0dXBsZSBkZXNjcmlwdG9yIHJlcHJlc2VudGluZyBhIHNpbmdsZSBURVhUIGNvbHVt biAqLworCXR1cGRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYygxKTsKKwlUdXBsZURlc2NJ bml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDEsICJMU04gcmVhY2hlZCIsIFRFWFRPSUQs IC0xLCAwKTsKKworCS8qIFByZXBhcmUgZm9yIHByb2plY3Rpb24gb2YgdHVwbGVzICovCisJdHN0 YXRlID0gYmVnaW5fdHVwX291dHB1dF90dXBkZXNjKGRlc3QsIHR1cGRlc2MsICZUVFNPcHNNaW5p bWFsVHVwbGUpOworCisJLyogU2VuZCB0aGUgcmVzdWx0ICovCisJZG9fdGV4dF9vdXRwdXRfb25l bGluZSh0c3RhdGUsIHJlcyA/ICJ0IiA6ICJmIik7CisJZW5kX3R1cF9vdXRwdXQodHN0YXRlKTsK KwlyZXR1cm4gcmVzOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNz LmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCA4OWM0MDlkZTY2NC4uMmU4 MDQxYTk1ZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC0zNzQ5LDEwICszNzQ5LDIyIEBAIF9j b3B5VHJhbnNhY3Rpb25TdG10KGNvbnN0IFRyYW5zYWN0aW9uU3RtdCAqZnJvbSkKIAlDT1BZX1NU UklOR19GSUVMRChzYXZlcG9pbnRfbmFtZSk7CiAJQ09QWV9TVFJJTkdfRklFTEQoZ2lkKTsKIAlD T1BZX1NDQUxBUl9GSUVMRChjaGFpbik7CisJQ09QWV9OT0RFX0ZJRUxEKHdhaXQpOwogCiAJcmV0 dXJuIG5ld25vZGU7CiB9CiAKK3N0YXRpYyBXYWl0Q2xhdXNlICoKK19jb3B5V2FpdENsYXVzZShj b25zdCBXYWl0Q2xhdXNlICpmcm9tKQoreworCVdhaXRDbGF1c2UgKm5ld25vZGUgPSBtYWtlTm9k ZShXYWl0Q2xhdXNlKTsKKworCUNPUFlfU1RSSU5HX0ZJRUxEKGxzbik7CisJQ09QWV9TQ0FMQVJf RklFTEQodGltZW91dCk7CisKKwlyZXR1cm4gbmV3bm9kZTsKK307CisKIHN0YXRpYyBDb21wb3Np dGVUeXBlU3RtdCAqCiBfY29weUNvbXBvc2l0ZVR5cGVTdG10KGNvbnN0IENvbXBvc2l0ZVR5cGVT dG10ICpmcm9tKQogewpAQCAtNTM0MCw2ICs1MzUyLDkgQEAgY29weU9iamVjdEltcGwoY29uc3Qg dm9pZCAqZnJvbSkKIAkJY2FzZSBUX1RyYW5zYWN0aW9uU3RtdDoKIAkJCXJldHZhbCA9IF9jb3B5 VHJhbnNhY3Rpb25TdG10KGZyb20pOwogCQkJYnJlYWs7CisJCWNhc2UgVF9XYWl0Q2xhdXNlOgor CQkJcmV0dmFsID0gX2NvcHlXYWl0Q2xhdXNlKGZyb20pOworCQkJYnJlYWs7CiAJCWNhc2UgVF9D b21wb3NpdGVUeXBlU3RtdDoKIAkJCXJldHZhbCA9IF9jb3B5Q29tcG9zaXRlVHlwZVN0bXQoZnJv bSk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3Mu YyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCBlM2YzM2M0MGJlNS4uYzA0 NDEyZWEwZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKQEAgLTE1NDIsNiArMTU0MiwxNiBAQCBf ZXF1YWxUcmFuc2FjdGlvblN0bXQoY29uc3QgVHJhbnNhY3Rpb25TdG10ICphLCBjb25zdCBUcmFu c2FjdGlvblN0bXQgKmIpCiAJQ09NUEFSRV9TVFJJTkdfRklFTEQoc2F2ZXBvaW50X25hbWUpOwog CUNPTVBBUkVfU1RSSU5HX0ZJRUxEKGdpZCk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoY2hhaW4p OworCUNPTVBBUkVfTk9ERV9GSUVMRCh3YWl0KTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0 aWMgYm9vbAorX2VxdWFsV2FpdENsYXVzZShjb25zdCBXYWl0Q2xhdXNlICphLCBjb25zdCBXYWl0 Q2xhdXNlICpiKQoreworCUNPTVBBUkVfU1RSSU5HX0ZJRUxEKGxzbik7CisJQ09NUEFSRV9TQ0FM QVJfRklFTEQodGltZW91dCk7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTMzOTIsNiArMzQwMiw5 IEBAIGVxdWFsKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJCWNhc2UgVF9UcmFuc2Fj dGlvblN0bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxUcmFuc2FjdGlvblN0bXQoYSwgYik7CiAJCQli cmVhazsKKwkJY2FzZSBUX1dhaXRDbGF1c2U6CisJCQlyZXR2YWwgPSBfZXF1YWxXYWl0Q2xhdXNl KGEsIGIpOworCQkJYnJlYWs7CiAJCWNhc2UgVF9Db21wb3NpdGVUeXBlU3RtdDoKIAkJCXJldHZh bCA9IF9lcXVhbENvbXBvc2l0ZVR5cGVTdG10KGEsIGIpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYwppbmRleCBlMmYxNzc1MTVkYS4uNjI2Yjc1NTI2MjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpA QCAtMjc4Nyw2ICsyNzg3LDI4IEBAIF9vdXREZWZFbGVtKFN0cmluZ0luZm8gc3RyLCBjb25zdCBE ZWZFbGVtICpub2RlKQogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKIH0KIAorc3Rh dGljIHZvaWQKK19vdXRUcmFuc2FjdGlvblN0bXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFRyYW5z YWN0aW9uU3RtdCAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZUEUoIlRSQU5TQUNUSU9OU1RNVCIp OworCisJV1JJVEVfU1RSSU5HX0ZJRUxEKHNhdmVwb2ludF9uYW1lKTsKKwlXUklURV9TVFJJTkdf RklFTEQoZ2lkKTsKKwlXUklURV9OT0RFX0ZJRUxEKG9wdGlvbnMpOworCVdSSVRFX0JPT0xfRklF TEQoY2hhaW4pOworCVdSSVRFX0VOVU1fRklFTEQoa2luZCwgVHJhbnNhY3Rpb25TdG10S2luZCk7 CisJV1JJVEVfTk9ERV9GSUVMRCh3YWl0KTsKK30KKworc3RhdGljIHZvaWQKK19vdXRXYWl0Q2xh dXNlKFN0cmluZ0luZm8gc3RyLCBjb25zdCBXYWl0Q2xhdXNlICpub2RlKQoreworCVdSSVRFX05P REVfVFlQRSgiV0FJVENMQVVTRSIpOworCisJV1JJVEVfU1RSSU5HX0ZJRUxEKGxzbik7CisJV1JJ VEVfVUlOVF9GSUVMRCh0aW1lb3V0KTsKK30KKwogc3RhdGljIHZvaWQKIF9vdXRUYWJsZUxpa2VD bGF1c2UoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFRhYmxlTGlrZUNsYXVzZSAqbm9kZSkKIHsKQEAg LTQzMzcsNiArNDM1OSwxMiBAQCBvdXROb2RlKFN0cmluZ0luZm8gc3RyLCBjb25zdCB2b2lkICpv YmopCiAJCQljYXNlIFRfUGFydGl0aW9uUmFuZ2VEYXR1bToKIAkJCQlfb3V0UGFydGl0aW9uUmFu Z2VEYXR1bShzdHIsIG9iaik7CiAJCQkJYnJlYWs7CisJCQljYXNlIFRfVHJhbnNhY3Rpb25TdG10 OgorCQkJCV9vdXRUcmFuc2FjdGlvblN0bXQoc3RyLCBvYmopOworCQkJCWJyZWFrOworCQkJY2Fz ZSBUX1dhaXRDbGF1c2U6CisJCQkJX291dFdhaXRDbGF1c2Uoc3RyLCBvYmopOworCQkJCWJyZWFr OwogCiAJCQlkZWZhdWx0OgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBkYmI0N2Q0OTgyOS4uNzhhMTcxOTA0 OTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQpAQCAtNTk4LDYgKzU5OCw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAldHlwZSA8cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91bmRTcGVjCiAldHlwZSA8bGlz dD4JCWhhc2hfcGFydGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQor JXR5cGUgPGl2YWw+CQl3YWl0X3RpbWUKKyV0eXBlIDxub2RlPgkJd2FpdF9mb3IKIAogLyoKICAq IE5vbi1rZXl3b3JkIHRva2VuIHR5cGVzLiAgVGhlc2UgYXJlIGhhcmQtd2lyZWQgaW50byB0aGUg ImZsZXgiIGxleGVyLgpAQCAtNjY3LDcgKzY2OSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAKIAlMQUJFTCBMQU5HVUFHRSBMQVJHRV9QIExBU1RfUCBMQVRFUkFMX1AKIAlMRUFESU5HIExF QUtQUk9PRiBMRUFTVCBMRUZUIExFVkVMIExJS0UgTElNSVQgTElTVEVOIExPQUQgTE9DQUwKLQlM T0NBTFRJTUUgTE9DQUxUSU1FU1RBTVAgTE9DQVRJT04gTE9DS19QIExPQ0tFRCBMT0dHRUQKKwlM T0NBTFRJTUUgTE9DQUxUSU1FU1RBTVAgTE9DQVRJT04gTE9DS19QIExPQ0tFRCBMT0dHRUQgTFNO CiAKIAlNQVBQSU5HIE1BVENIIE1BVEVSSUFMSVpFRCBNQVhWQUxVRSBNRVRIT0QgTUlOVVRFX1Ag TUlOVkFMVUUgTU9ERSBNT05USF9QIE1PVkUKIApAQCAtNjk4LDcgKzcwMCw3IEBAIHN0YXRpYyBO b2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2Vz LCBOb2RlICpxdWVyeSk7CiAJU1VCU0NSSVBUSU9OIFNVQlNUUklORyBTVVBQT1JUIFNZTU1FVFJJ QyBTWVNJRCBTWVNURU1fUAogCiAJVEFCTEUgVEFCTEVTIFRBQkxFU0FNUExFIFRBQkxFU1BBQ0Ug VEVNUCBURU1QTEFURSBURU1QT1JBUlkgVEVYVF9QIFRIRU4KLQlUSUVTIFRJTUUgVElNRVNUQU1Q IFRPIFRSQUlMSU5HIFRSQU5TQUNUSU9OIFRSQU5TRk9STQorCVRJRVMgVElNRSBUSU1FT1VUIFRJ TUVTVEFNUCBUTyBUUkFJTElORyBUUkFOU0FDVElPTiBUUkFOU0ZPUk0KIAlUUkVBVCBUUklHR0VS IFRSSU0gVFJVRV9QCiAJVFJVTkNBVEUgVFJVU1RFRCBUWVBFX1AgVFlQRVNfUAogCkBAIC03MDgs NyArNzEwLDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJl bG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlWQUNVVU0gVkFMSUQgVkFMSURB VEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVTIFZBUkNIQVIgVkFSSUFESUMgVkFSWUlORwogCVZF UkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVk9MQVRJTEUKIAotCVdIRU4gV0hFUkUgV0hJVEVT UEFDRV9QIFdJTkRPVyBXSVRIIFdJVEhJTiBXSVRIT1VUIFdPUksgV1JBUFBFUiBXUklURQorCVdB SVQgV0hFTiBXSEVSRSBXSElURVNQQUNFX1AgV0lORE9XCisJV0lUSCBXSVRISU4gV0lUSE9VVCBX T1JLIFdSQVBQRVIgV1JJVEUKIAogCVhNTF9QIFhNTEFUVFJJQlVURVMgWE1MQ09OQ0FUIFhNTEVM RU1FTlQgWE1MRVhJU1RTIFhNTEZPUkVTVCBYTUxOQU1FU1BBQ0VTCiAJWE1MUEFSU0UgWE1MUEkg WE1MUk9PVCBYTUxTRVJJQUxJWkUgWE1MVEFCTEUKQEAgLTk3MjQsMTggKzk3MjcsMjAgQEAgVHJh bnNhY3Rpb25TdG10OgogCQkJCQluLT5jaGFpbiA9ICQzOwogCQkJCQkkJCA9IChOb2RlICopbjsK IAkJCQl9Ci0JCQl8IEJFR0lOX1Agb3B0X3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uX21vZGVfbGlz dF9vcl9lbXB0eQorCQkJfCBCRUdJTl9QIG9wdF90cmFuc2FjdGlvbiB0cmFuc2FjdGlvbl9tb2Rl X2xpc3Rfb3JfZW1wdHkgd2FpdF9mb3IKIAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9 IG1ha2VOb2RlKFRyYW5zYWN0aW9uU3RtdCk7CiAJCQkJCW4tPmtpbmQgPSBUUkFOU19TVE1UX0JF R0lOOwogCQkJCQluLT5vcHRpb25zID0gJDM7CisJCQkJCW4tPndhaXQgPSAkNDsKIAkJCQkJJCQg PSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBTVEFSVCBUUkFOU0FDVElPTiB0cmFuc2FjdGlvbl9t b2RlX2xpc3Rfb3JfZW1wdHkKKwkJCXwgU1RBUlQgVFJBTlNBQ1RJT04gdHJhbnNhY3Rpb25fbW9k ZV9saXN0X29yX2VtcHR5IHdhaXRfZm9yCiAJCQkJewogCQkJCQlUcmFuc2FjdGlvblN0bXQgKm4g PSBtYWtlTm9kZShUcmFuc2FjdGlvblN0bXQpOwogCQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9T VEFSVDsKIAkJCQkJbi0+b3B0aW9ucyA9ICQzOworCQkJCQluLT53YWl0ID0gJDQ7CiAJCQkJCSQk ID0gKE5vZGUgKiluOwogCQkJCX0KIAkJCXwgQ09NTUlUIG9wdF90cmFuc2FjdGlvbiBvcHRfdHJh bnNhY3Rpb25fY2hhaW4KQEAgLTE0MDEyLDYgKzE0MDE3LDI1IEBAIHhtbF9wYXNzaW5nX21lY2g6 CiAJCQl8IEJZIFZBTFVFX1AKIAkJOwogCisvKgorICogV0FJVCBGT1IgY2xhdXNlIG9mIEJFR0lO IGFuZCBTVEFSVCBUUkFOU0FDVElPTiBzdGF0ZW1lbnRzCisgKi8KK3dhaXRfZm9yOgorCQkJV0FJ VCBGT1IgTFNOIFNjb25zdCB3YWl0X3RpbWUKKwkJCQl7CisJCQkJCVdhaXRDbGF1c2UgKm4gPSBt YWtlTm9kZShXYWl0Q2xhdXNlKTsKKwkJCQkJbi0+bHNuID0gJDQ7CisJCQkJCW4tPnRpbWVvdXQg PSAkNTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCAvKiBFTVBUWSAqLwkJeyAk JCA9IE5VTEw7IH0KKwkJOworCit3YWl0X3RpbWU6CisJCQlUSU1FT1VUIEljb25zdAkJeyAkJCA9 ICQyOyB9CisJCQl8IC8qIEVNUFRZICovCQl7ICQkID0gMDsgfQorCQk7CisKIAogLyoKICAqIEFn Z3JlZ2F0ZSBkZWNvcmF0aW9uIGNsYXVzZXMKQEAgLTE1MTU4LDYgKzE1MTgyLDcgQEAgdW5yZXNl cnZlZF9rZXl3b3JkOgogCQkJfCBMT0NLX1AKIAkJCXwgTE9DS0VECiAJCQl8IExPR0dFRAorCQkJ fCBMU04KIAkJCXwgTUFQUElORwogCQkJfCBNQVRDSAogCQkJfCBNQVRFUklBTElaRUQKQEAgLTE1 Mjg1LDYgKzE1MzEwLDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBURU1QT1JBUlkKIAkJ CXwgVEVYVF9QCiAJCQl8IFRJRVMKKwkJCXwgVElNRU9VVAogCQkJfCBUUkFOU0FDVElPTgogCQkJ fCBUUkFOU0ZPUk0KIAkJCXwgVFJJR0dFUgpAQCAtMTUzMTEsNiArMTUzMzcsNyBAQCB1bnJlc2Vy dmVkX2tleXdvcmQ6CiAJCQl8IFZJRVcKIAkJCXwgVklFV1MKIAkJCXwgVk9MQVRJTEUKKwkJCXwg V0FJVAogCQkJfCBXSElURVNQQUNFX1AKIAkJCXwgV0lUSElOCiAJCQl8IFdJVEhPVVQKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2lwY2kuYwppbmRleCA5NmMyYWFhYmJkNi4uM2I5NDFkYzdiOGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9pcGNpLmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc3luY3NjYW4u aCIKICNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3lu Yy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIK QEAgLTE0OSw2ICsxNTAsNyBAQCBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzKHZvaWQp CiAJCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCVHJlZVNobWVtU2l6ZSgpKTsKIAkJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFN5bmNTY2FuU2htZW1TaXplKCkpOwogCQlzaXplID0gYWRkX3NpemUoc2l6 ZSwgQXN5bmNTaG1lbVNpemUoKSk7CisJCXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWl0U2htZW1T aXplKCkpOwogI2lmZGVmIEVYRUNfQkFDS0VORAogCQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ht ZW1CYWNrZW5kQXJyYXlTaXplKCkpOwogI2VuZGlmCkBAIC0yNjgsNiArMjcwLDExIEBAIENyZWF0 ZVNoYXJlZE1lbW9yeUFuZFNlbWFwaG9yZXModm9pZCkKIAlTeW5jU2NhblNobWVtSW5pdCgpOwog CUFzeW5jU2htZW1Jbml0KCk7CiAKKwkvKgorCSAqIEluaXQgYXJyYXkgb2YgZXZlbnRzIGZvciB0 aGUgV0FJVCBGT1IgY2xhdXNlIGluIHNoYXJlZCBtZW1vcnkKKwkgKi8KKwlXYWl0U2htZW1Jbml0 KCk7CisKICNpZmRlZiBFWEVDX0JBQ0tFTkQKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpp bmRleCBhYTlmYmQ4MDU0NS4uNDhkYWNiMzM2NmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpA QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3R3b3BoYXNlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRlICJj b21tYW5kcy93YWl0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCkBAIC03MTIsNiArNzEzLDkg QEAgTG9ja0Vycm9yQ2xlYW51cCh2b2lkKQogCiAJQWJvcnRTdHJvbmdMb2NrQWNxdWlyZSgpOwog CisJLyogSWYgQkVHSU4gV0FJVCBGT1IgTFNOIHdhcyBpbnRlcnJ1cHRlZCwgdGhlbiBzdG9wIHdh aXRpbmcgZm9yIHRoYXQgTFNOICovCisJRGVsZXRlV2FpdGVkTFNOKCk7CisKIAkvKiBOb3RoaW5n IHRvIGRvIGlmIHdlIHdlcmVuJ3Qgd2FpdGluZyBmb3IgYSBsb2NrICovCiAJaWYgKGxvY2tBd2Fp dGVkID09IE5VTEwpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMg Yi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCA5YjBjMzc2YzhjYi4uNjE4ODA0ZTAz MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9iYWNr ZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMv dXNlci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3ZpZXcuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93YWl0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3V0aWxjbWQuaCIKICNpbmNsdWRlICJwb3N0bWFz dGVyL2Jnd3JpdGVyLmgiCkBAIC01OTMsNiArNTk0LDE4IEBAIHN0YW5kYXJkX1Byb2Nlc3NVdGls aXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJCQkJY2FzZSBUUkFOU19TVE1UX1NUQVJUOgogCQkJ CQkJewogCQkJCQkJCUxpc3RDZWxsICAgKmxjOworCQkJCQkJCVdhaXRDbGF1c2UgKndhaXRzdG10 ID0gKFdhaXRDbGF1c2UgKikgc3RtdC0+d2FpdDsKKworCQkJCQkJCS8qIFdBSVQgRk9SIGNhbm5v dCBiZSB1c2VkIG9uIHByaW1hcnkgKi8KKwkJCQkJCQlpZiAoc3RtdC0+d2FpdCAmJiAhUmVjb3Zl cnlJblByb2dyZXNzKCkpCisJCQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCQkJCSBlcnJtc2coIldB SVQgRk9SIGNhbiBvbmx5IGJlICIKKwkJCQkJCQkJCQkJCSJ1c2VkIG9uIHN0YW5kYnkiKSkpOwor CisJCQkJCQkJLyogSWYgbmVlZGVkIHRvIFdBSVQgRk9SIHNvbWV0aGluZyBidXQgZmFpbGVkICov CisJCQkJCQkJaWYgKHN0bXQtPndhaXQgJiYgV2FpdE1haW4od2FpdHN0bXQsIGRlc3QpID09IDAp CisJCQkJCQkJCWJyZWFrOwogCiAJCQkJCQkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CiAJCQkJ CQkJZm9yZWFjaChsYywgc3RtdC0+b3B0aW9ucykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9taXNjLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCmluZGV4IDM3YzIz YzkxNTVhLi4yMTgxMTkxZDk5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21p c2MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCkBAIC0zNzMsOCArMzczLDYg QEAgcGdfc2xlZXAoUEdfRlVOQ1RJT05fQVJHUykKIAkgKiBsZXNzIHRoYW4gdGhlIHNwZWNpZmll ZCB0aW1lIHdoZW4gV2FpdExhdGNoIGlzIHRlcm1pbmF0ZWQgZWFybHkgYnkgYQogCSAqIG5vbi1x dWVyeS1jYW5jZWxpbmcgc2lnbmFsIHN1Y2ggYXMgU0lHSFVQLgogCSAqLwotI2RlZmluZSBHZXRO b3dGbG9hdCgpCSgoZmxvYXQ4KSBHZXRDdXJyZW50VGltZXN0YW1wKCkgLyAxMDAwMDAwLjApCi0K IAllbmR0aW1lID0gR2V0Tm93RmxvYXQoKSArIHNlY3M7CiAKIAlmb3IgKDs7KQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2Fp dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kMDhlZTU3NGVkMwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQuaApAQCAtMCwwICsx LDI3IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3YWl0LmgKKyAqCSAgcHJvdG90eXBl cyBmb3IgY29tbWFuZHMvd2FpdC5jCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2 LTIwMjAsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDIwMjAsIFJlZ2VudHMgb2YgUG9zdGdyZXNQcm8KKyAqCisgKiBzcmMvaW5j bHVkZS9jb21tYW5kcy93YWl0LmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRl ZiBXQUlUX0gKKyNkZWZpbmUgV0FJVF9ICisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRl ICJ0Y29wL2Rlc3QuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisKK2V4dGVybiBi b29sIFdhaXRVdGlsaXR5KFhMb2dSZWNQdHIgbHNuLCBjb25zdCBpbnQgdGltZW91dF9tcyk7Citl eHRlcm4gU2l6ZSBXYWl0U2htZW1TaXplKHZvaWQpOworZXh0ZXJuIHZvaWQgV2FpdFNobWVtSW5p dCh2b2lkKTsKK2V4dGVybiB2b2lkIFdhaXRTZXRMYXRjaChYTG9nUmVjUHRyIGN1cl9sc24pOwor ZXh0ZXJuIFhMb2dSZWNQdHIgR2V0TWluV2FpdGVkTFNOKHZvaWQpOworZXh0ZXJuIGludAlXYWl0 TWFpbihXYWl0Q2xhdXNlICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3QpOworZXh0ZXJuIHZvaWQg RGVsZXRlV2FpdGVkTFNOKHZvaWQpOworCisjZW5kaWYJCQkJCQkJLyogV0FJVF9IICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9k ZXMuaAppbmRleCAzODFkODRiNGU0Zi4uODIyODI3YWEzMmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtNDky LDYgKzQ5Miw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9TdGFydFJlcGxpY2F0aW9uQ21k LAogCVRfVGltZUxpbmVIaXN0b3J5Q21kLAogCVRfU1FMQ21kLAorCVRfV2FpdENsYXVzZSwKIAog CS8qCiAJICogVEFHUyBGT1IgUkFORE9NIE9USEVSIFNUVUZGCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK aW5kZXggMTUxYmNkYjdlZjUuLjZhMjFlZDVmYWViIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBA IC0xNDMxLDYgKzE0MzEsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgT25Db25mbGljdENsYXVzZQogCWlu dAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0g T25Db25mbGljdENsYXVzZTsKIAorLyoKKyAqIFdhaXRDbGF1c2UgLQorICoJCXJlcHJlc2VudGF0 aW9uIG9mIFdBSVQgRk9SIGNsYXVzZSBmb3IgQkVHSU4gYW5kIFNUQVJUIFRSQU5TQUNUSU9OLgor ICovCit0eXBlZGVmIHN0cnVjdCBXYWl0Q2xhdXNlCit7CisJTm9kZVRhZwkJdHlwZTsKKwljaGFy CSAgICpsc247CQkJLyogTFNOIHRvIHdhaXQgZm9yICovCisJaW50CQkJdGltZW91dDsJCS8qIE51 bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gbGltaXQgd2FpdCB0aW1lICovCit9IFdhaXRDbGF1c2U7 CisKIC8qCiAgKiBDb21tb25UYWJsZUV4cHIgLQogICoJICAgcmVwcmVzZW50YXRpb24gb2YgV0lU SCBsaXN0IGVsZW1lbnQKQEAgLTMwNjEsNiArMzA3Miw3IEBAIHR5cGVkZWYgc3RydWN0IFRyYW5z YWN0aW9uU3RtdAogCWNoYXIJICAgKnNhdmVwb2ludF9uYW1lOyAvKiBmb3Igc2F2ZXBvaW50IGNv bW1hbmRzICovCiAJY2hhcgkgICAqZ2lkOwkJCS8qIGZvciB0d28tcGhhc2UtY29tbWl0IHJlbGF0 ZWQgY29tbWFuZHMgKi8KIAlib29sCQljaGFpbjsJCQkvKiBBTkQgQ0hBSU4gb3B0aW9uICovCisJ Tm9kZQkgICAqd2FpdDsJCQkvKiBXQUlUIEZPUiBjbGF1c2UgKi8KIH0gVHJhbnNhY3Rpb25TdG10 OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9w YXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggMDhmMjJj ZTIxMWQuLjZlMTg0OGZlNGNjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0yNDMsNiArMjQzLDcgQEAg UEdfS0VZV09SRCgibG9jYXRpb24iLCBMT0NBVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdf S0VZV09SRCgibG9jayIsIExPQ0tfUCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgi bG9ja2VkIiwgTE9DS0VELCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsb2dnZWQi LCBMT0dHRUQsIFVOUkVTRVJWRURfS0VZV09SRCkKK1BHX0tFWVdPUkQoImxzbiIsIExTTiwgVU5S RVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgibWFwcGluZyIsIE1BUFBJTkcsIFVOUkVTRVJW RURfS0VZV09SRCkKIFBHX0tFWVdPUkQoIm1hdGNoIiwgTUFUQ0gsIFVOUkVTRVJWRURfS0VZV09S RCkKIFBHX0tFWVdPUkQoIm1hdGVyaWFsaXplZCIsIE1BVEVSSUFMSVpFRCwgVU5SRVNFUlZFRF9L RVlXT1JEKQpAQCAtNDEwLDYgKzQxMSw3IEBAIFBHX0tFWVdPUkQoInRleHQiLCBURVhUX1AsIFVO UkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInRoZW4iLCBUSEVOLCBSRVNFUlZFRF9LRVlX T1JEKQogUEdfS0VZV09SRCgidGllcyIsIFRJRVMsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tF WVdPUkQoInRpbWUiLCBUSU1FLCBDT0xfTkFNRV9LRVlXT1JEKQorUEdfS0VZV09SRCgidGltZW91 dCIsIFRJTUVPVVQsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInRpbWVzdGFtcCIs IFRJTUVTVEFNUCwgQ09MX05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoInRvIiwgVE8sIFJFU0VS VkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ0cmFpbGluZyIsIFRSQUlMSU5HLCBSRVNFUlZFRF9L RVlXT1JEKQpAQCAtNDUwLDYgKzQ1Miw3IEBAIFBHX0tFWVdPUkQoInZlcnNpb24iLCBWRVJTSU9O X1AsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZpZXciLCBWSUVXLCBVTlJFU0VS VkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2aWV3cyIsIFZJRVdTLCBVTlJFU0VSVkVEX0tFWVdP UkQpCiBQR19LRVlXT1JEKCJ2b2xhdGlsZSIsIFZPTEFUSUxFLCBVTlJFU0VSVkVEX0tFWVdPUkQp CitQR19LRVlXT1JEKCJ3YWl0IiwgV0FJVCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09S RCgid2hlbiIsIFdIRU4sIFJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ3aGVyZSIsIFdI RVJFLCBSRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgid2hpdGVzcGFjZSIsIFdISVRFU1BB Q0VfUCwgVU5SRVNFUlZFRF9LRVlXT1JEKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv dGltZXN0YW1wLmggYi9zcmMvaW5jbHVkZS91dGlscy90aW1lc3RhbXAuaAppbmRleCAwM2ExZGU1 NjlmMC4uZWFlZWI3OWM0MTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3RpbWVzdGFt cC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3RpbWVzdGFtcC5oCkBAIC0xMDksNCArMTA5LDYg QEAgZXh0ZXJuIGludAlkYXRlMmlzb3llYXJkYXkoaW50IHllYXIsIGludCBtb24sIGludCBtZGF5 KTsKIAogZXh0ZXJuIGJvb2wgVGltZXN0YW1wVGltZXN0YW1wVHpSZXF1aXJlc1Jld3JpdGUodm9p ZCk7CiAKKyNkZWZpbmUgR2V0Tm93RmxvYXQoKSAoKGZsb2F0OCkgR2V0Q3VycmVudFRpbWVzdGFt cCgpIC8gMTAwMDAwMC4wKQorCiAjZW5kaWYJCQkJCQkJLyogVElNRVNUQU1QX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDIwX2JlZ2luX3dhaXQucGwgYi9zcmMvdGVzdC9y ZWNvdmVyeS90LzAyMF9iZWdpbl93YWl0LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4xY2IzYzU5Y2FjZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDIwX2JlZ2luX3dhaXQucGwKQEAgLTAsMCArMSw4NSBAQAorIyBDaGVja3MgV0FJVCBG T1IKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBQb3N0Z3Jlc05vZGU7Cit1c2Ug VGVzdExpYjsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDg7CisKKyMgSW5pdGlhbGl6ZSBwcmlt YXJ5IG5vZGUKK215ICRub2RlX3ByaW1hcnkgPSBnZXRfbmV3X25vZGUoJ3ByaW1hcnknKTsKKyRu b2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3ByaW1hcnkt PnN0YXJ0OworCisjIEFuZCBzb21lIGNvbnRlbnQgYW5kIHRha2UgYSBiYWNrdXAKKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgd2FpdF90ZXN0IEFT IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgYSIpOworbXkgJGJhY2t1cF9uYW1lID0g J215X2JhY2t1cCc7Ciskbm9kZV9wcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyBV c2luZyB0aGUgYmFja3VwLCBjcmVhdGUgYSBzdHJlYW1pbmcgc3RhbmRieSB3aXRoIGEgMSBzZWNv bmQgZGVsYXkKK215ICRub2RlX3N0YW5kYnkgPSBnZXRfbmV3X25vZGUoJ3N0YW5kYnknKTsKK215 ICRkZWxheSAgICAgICAgPSAxOworJG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgkbm9k ZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3N0 YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcVsKKwlyZWNvdmVyeV9taW5f YXBwbHlfZGVsYXkgPSAnJHtkZWxheX1zJworXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKwor CisjIENoZWNrIHRoYXQgdGltZW91dHMgbWFrZSB1cyB3YWl0IGZvciB0aGUgc3BlY2lmaWVkIHRp bWUgKDFzIGhlcmUpCitteSAkY3VycmVudF90aW1lID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1Qgbm93KCkiKTsKK215ICR0d29fc2Vjb25kcyA9IDIwMDA7ICMg aW4gbWlsbGlzZWNvbmRzCitteSAkc3RhcnRfdGltZSA9IHRpbWUoKTsKKyRub2RlX3N0YW5kYnkt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJCRUdJTiBXQUlUIEZPUiBMU04gJzAvRkZGRkZGRkYn IFRJTUVPVVQgJHR3b19zZWNvbmRzIik7CitteSAkdGltZV93YWl0ZWQgPSAodGltZSgpIC0gJHN0 YXJ0X3RpbWUpICogMTAwMDsgIyBjb252ZXJ0IHRvIG1pbGxpc2Vjb25kcworb2soJHRpbWVfd2Fp dGVkID49ICR0d29fc2Vjb25kcywgIldBSVQgRk9SIFRJTUVPVVQgd2FpdHMgZm9yIGVub3VnaCB0 aW1lIik7CisKKworIyBDaGVjayB0aGF0IHRpbWVvdXRzIGxldCB1cyBzdG9wIHdhaXRpbmcgcmln aHQgYXdheSwgYmVmb3JlIHJlYWNoaW5nIHRhcmdldCBMU04KKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0 ZV9zZXJpZXMoMTEsIDIwKSkiKTsKK215ICRsc24xID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKK215ICgkcmV0LCAk b3V0LCAkZXJyKSA9ICRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywKKwkiQkVHSU4gV0FJ VCBGT1IgTFNOICckbHNuMScgVElNRU9VVCAxIik7CisKK29rKCRyZXQgPT0gMCwgInplcm8gcmV0 dXJuIHZhbHVlIHdoZW4gZmFpbGVkIHRvIFdBSVQgRk9SIExTTiBvbiBzdGFuZGJ5Iik7Citvaygk ZXJyID1+IC9XQVJOSU5HOiAgZGlkbid0IHN0YXJ0IHRyYW5zYWN0aW9uIGJlY2F1c2UgTFNOIHdh cyBub3QgcmVhY2hlZC8sCisJImNvcnJlY3QgZXJyb3IgbWVzc2FnZSB3aGVuIGZhaWxlZCB0byBX QUlUIEZPUiBMU04gb24gc3RhbmRieSIpOworb2soJG91dCBlcSAiZiIsICJpZiBnaXZlbiB0b28g bGl0dGxlIHdhaXQgdGltZSwgV0FJVCBkb2Vzbid0IHJlYWNoIHRhcmdldCBMU04iKTsKKworCisj IENoZWNrIHRoYXQgV0FJVCBGT1Igd29ya3MgZmluZSBhbmQgcmVhY2hlcyB0YXJnZXQgTFNOIGlm IGdpdmVuIG5vIHRpbWVvdXQKKworIyBBZGQgZGF0YSBvbiBwcmltYXJ5LCBtZW1vcml6ZSBwcmlt YXJ5J3MgbGFzdCBMU04KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJ TlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMjEsIDMwKSkiKTsK K215ICRsc24yID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg cGdfY3VycmVudF93YWxfbHNuKCkiKTsKKworIyBXYWl0IGZvciBpdCB0byBhcHBlYXIgb24gcmVw bGljYSwgbWVtb3JpemUgcmVwbGljYSdzIGxhc3QgTFNOCiskbm9kZV9zdGFuZGJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQkVHSU4gV0FJVCBGT1IgTFNOICckbHNuMiciKTsKK215ICRyZWFj aGVkX2xzbiA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qg cGdfbGFzdF93YWxfcmVwbGF5X2xzbigpIik7CisKKyMgTWFrZSBzdXJlIHRoYXQgcHJpbWFyeSdz IGFuZCByZXBsaWNhJ3MgTFNOcyBhcmUgdGhlIHNhbWUgYWZ0ZXIgV0FJVAorbXkgJGNvbXBhcmVf bHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdf bHNuX2NtcCgnJHJlYWNoZWRfbHNuJzo6cGdfbHNuLCAnJGxzbjInOjpwZ19sc24pIik7Citvaygk Y29tcGFyZV9sc25zIGVxIDAsCisJInN0YW5kYnkgcmVhY2hlZCB0aGUgc2FtZSBMU04gYXMgcHJp bWFyeSBiZWZvcmUgc3RhcnRpbmcgdHJhbnNhY3Rpb24iKTsKKworCisjIE1ha2Ugc3VyZSB0aGF0 IGl0J3Mgbm90IGFsbG93ZWQgdG8gdXNlIFdBSVQgRk9SIG9uIHByaW1hcnkKKygkcmV0LCAkb3V0 LCAkZXJyKSA9ICRub2RlX3ByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywKKwkiQkVHSU4gV0FJVCBG T1IgTFNOICcwL0ZGRkZGRkZGJyIpOworCitvaygkcmV0ICE9IDAsICJub24temVybyByZXR1cm4g dmFsdWUgd2hlbiB0cnlpbmcgdG8gV0FJVCBGT1IgTFNOIG9uIHByaW1hcnkiKTsKK29rKCRlcnIg PX4gL0VSUk9SOiAgV0FJVCBGT1IgY2FuIG9ubHkgYmUgdXNlZCBvbiBzdGFuZGJ5LywKKwkiY29y cmVjdCBlcnJvciBtZXNzYWdlIHdoZW4gdHJ5aW5nIHRvIFdBSVQgRk9SIExTTiBvbiBwcmltYXJ5 Iik7Citvaygkb3V0IGVxICcnLCAiZW1wdHkgb3V0cHV0IHdoZW4gdHJ5aW5nIHRvIFdBSVQgRk9S IExTTiBvbiBwcmltYXJ5Iik7CisKKworJG5vZGVfc3RhbmRieS0+c3RvcDsKKyRub2RlX3ByaW1h cnktPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBi L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDNkOTkwNDYzY2U5Li5lZWU5 NWVkZmUxMSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysr IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI2NzksNiArMjY3OSw3IEBA IFdTQUJVRgogV1NBREFUQQogV1NBTkVUV09SS0VWRU5UUwogV1NBUFJPVE9DT0xfSU5GTworV2Fp dENsYXVzZQogV2FpdEV2ZW50CiBXYWl0RXZlbnRBY3Rpdml0eQogV2FpdEV2ZW50Q2xpZW50CkBA IC0yNjg3LDYgKzI2ODgsNyBAQCBXYWl0RXZlbnRJUEMKIFdhaXRFdmVudFNldAogV2FpdEV2ZW50 VGltZW91dAogV2FpdFBNUmVzdWx0CitXYWl0U3RhdGUKIFdhbENsb3NlTWV0aG9kCiBXYWxMZXZl bAogV2FsUmN2RGF0YQo= --=_da2b69cdea9c99d5332e59c96f16d82a--