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.96) (envelope-from ) id 1vvkNG-00HMGK-1s for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Feb 2026 23:02:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vvkNE-00G3o0-1i for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Feb 2026 23:02:24 +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.96) (envelope-from ) id 1vvkNE-00G3nl-0D for pgsql-hackers@lists.postgresql.org; Thu, 26 Feb 2026 23:02:24 +0000 Received: from fout-a6-smtp.messagingengine.com ([103.168.172.149]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vvkNA-00000001TCh-2j08 for pgsql-hackers@postgresql.org; Thu, 26 Feb 2026 23:02:23 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id F184FEC031C; Thu, 26 Feb 2026 18:02:18 -0500 (EST) Received: from phl-imap-14 ([10.202.2.87]) by phl-compute-02.internal (MEProxy); Thu, 26 Feb 2026 18:02:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc:cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1772146938; x=1772233338; bh=kYdn0GDuk1 NGYJ3btPnPRSvWx6poY4xLNC1AA6uBYL8=; b=8uLOJnawsju0eWiyf/1pIXX+gv DXHePwsxC3Ju5pd+KjueFulYOIwGaH+Xd3xaoYMgTPjxCnQRdP86yJXtKYdkRtcy ll+WNzuaepKSC9cZ6iUSW5kfLRFjTKEsx6GP6oJ4oxXrXRUboRTLRTgnnadTWoIK k76siI6K+PdWZ4ZW3b8dpsftydxwJ4t5Iil5qBVtEB18C3/hD0jqKD9kHZzHLEcx j6jHaGPJRbt7XxTcEfY1IAoxvOropItoSXR2mL1jLPVKqwCpCace04yyNFo247nP yLEaLxQe1JlWmtq3QW94TL2geJWlUFfXD/cEVU1s+Zu3Rr4vh4ysMQHrlkRw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t= 1772146938; x=1772233338; bh=kYdn0GDuk1NGYJ3btPnPRSvWx6poY4xLNC1 AA6uBYL8=; b=e0N/OBXop3DS2PzjliXawu2baTEwAUm9eGpNCrVwLSw4fxnnbZn rBXLvNx8W4+s0zwectYNd3L6mmoTOHZYZHPv3Kw5HP4YM9w9sNTj01BdpV53EpDX Rk7bY3EjJuDKAhbuwZ/BvVTY+tRHX+SOyJCP4aIYZK8yhtnaKH9+f70zTYVBTKBj UaVn8kcYLMU8mTZ7CfqllY0fdgPGH7G7yWUCiJ7bR5aKAElBDcEJDugxhJeoaAFu rkc+UtZPGpl4k/xDi4oqVRa65u5D9222BII3IRO8OvxsqZwVGoognDGO1Uygv6YH ppWQ68Em3E95Y5WLNZmpM9EScSjI6T2sjFQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvgeejfeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucenucfjughrpefoggffhffvvefkjghfufgtsehmtderre ertddtnecuhfhrohhmpedfifhrvghguceuuhhrugdfuceoghhrvghgsegsuhhrugdrmhgv qeenucggtffrrghtthgvrhhnpefhveelheeffeffudelvddutdfghfeileeikeeufefhhf elvdffuddvvdejleekleenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgr ihhlfhhrohhmpehgrhgvghessghurhgurdhmvgdpnhgspghrtghpthhtohepvddpmhhoug gvpehsmhhtphhouhhtpdhrtghpthhtohepphhgshhqlhesjhdquggrvhhishdrtghomhdp rhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehpohhsthhgrhgvshhqlhdrohhrgh X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id BA295C40075; Thu, 26 Feb 2026 18:02:18 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: A1gxZgRQNkgk Date: Thu, 26 Feb 2026 18:01:53 -0500 From: "Greg Burd" To: "Jeff Davis" Cc: pgsql-hackers Message-Id: In-Reply-To: <9bb9bdd6-e1fe-48fe-837d-4d0289396f1c@app.fastmail.com> References: <5165C147-B476-4E3D-AAA9-11C0B966FC4D@greg.burd.me> <9394564A-5764-4DCA-8845-8AE102DE61DC@greg.burd.me> <97769442-2ed7-4fe0-a393-7e2b5ff7ff58@app.fastmail.com> <3e1b9075c92808a7356e79087ba51910e5db5a30.camel@j-davis.com> <9bb9bdd6-e1fe-48fe-837d-4d0289396f1c@app.fastmail.com> Subject: Re: Expanding HOT updates for expression and partial indexes Content-Type: multipart/mixed; boundary=53173498dda4441898ece084e13a3b73 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --53173498dda4441898ece084e13a3b73 Content-Type: text/plain Content-Transfer-Encoding: 7bit Okay, here's hoping that the CI bot likes v31. :) -greg --53173498dda4441898ece084e13a3b73 Content-Disposition: attachment; filename*0="v31-0001-Idenfity-modified-indexed-attributes-in-the-exec.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v31-0001-Idenfity-modified-indexed-attributes-in-the-exec.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA4YTQ4NmVlYjZmYTM0MjJhZWY4YzY5ZGExYzYzNjQ1MmUzZGQ5Yzc2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog U3VuLCAyIE5vdiAyMDI1IDExOjM2OjIwIC0wNTAwClN1YmplY3Q6IFtQQVRDSCB2MzFdIElk ZW5maXR5IG1vZGlmaWVkIGluZGV4ZWQgYXR0cmlidXRlcyBpbiB0aGUgZXhlY3V0b3Igb24K IFVQREFURQoKUmVmYWN0b3IgZXhlY3V0b3IgdXBkYXRlIGxvZ2ljIHRvIGRldGVybWluZSB3 aGljaCBpbmRleGVkIGNvbHVtbnMgaGF2ZQphY3R1YWxseSBjaGFuZ2VkIGR1cmluZyBhbiBV UERBVEUgb3BlcmF0aW9uIHJhdGhlciB0aGFuIGxlYXZpbmcgdGhpcyB1cAp0byBIZWFwRGV0 ZXJtaW5lQ29sdW1uc0luZm8oKSBpbiBoZWFwX3VwZGF0ZSgpLiAgRmluZGluZyB0aGlzIHNl dCBvZgphdHRyaWJ1dGVzIGlzIG5vdCBoZWFwLXNwZWNpZmljLCBidXQgbW9yZSBnZW5lcmFs IHRvIGFsbCB0YWJsZSBBTXMgYW5kCmhhdmluZyB0aGlzIGluZm9ybWF0aW9uIGluIHRoZSBl eGVjdXRvciBjb3VsZCBpbmZvcm0gb3RoZXIgZGVjaXNpb25zCmFib3V0IHdoZW4gaW5kZXgg aW5zZXJ0cyBhcmUgcmVxdWlyZWQgYW5kIHdoZW4gdGhleSBhcmUgbm90IHJlZ2FyZGxlc3MK b2YgdGhlIHRhYmxlIEFNJ3MgTVZDQyBpbXBsZW1lbnRhdGlvbiBzdHJhdGVneS4KClRoZSBo ZWFwLW9ubHkgdHVwbGUgZGVjaXNpb24gKEhPVCkgaW4gaGVhcCBmdW5jdGlvbnMgYXMgaXQg YWx3YXlzIGhhcywKYnV0IHRoZSBkZXRlcm1pbmF0aW9uIG9mIHRoZSAibW9kaWZpZWQgaW5k ZXhlZCBhdHRyaWJ1dGVzIiAobWl4X2F0dHJzLAp3YXMga25vd24gYXMgbW9kaWZpZWRfYXR0 cnMpIG5vdyBoYXBwZW5zIG91dHNpZGUgdGhlIGJ1ZmZlciBsb2NrIGFuZCBjYW4KaW5mb3Jt IG90aGVyIGRlY2lzaW9ucyB1bnJlbGF0ZWQgdG8gaGVhcC4KCkV4ZWNVcGRhdGVNb2RJZHhB dHRycygpIHJlcGxhY2VzIEhlYXBEZXRlcm1pbmVzQ29sdW1uc0luZm8oKSBhbmQgaXMKY2Fs bGVkIGJlZm9yZSB0YWJsZV90dXBsZV91cGRhdGUoKSBjcnVjaWFsbHkgd2l0aG91dCB0aGUg bmVlZCBmb3IgYW4KZXhjbHVzaXZlIGJ1ZmZlciBsb2NrIG9uIHRoZSBwYWdlIHRoYXQgaG9s ZHMgdGhlIHR1cGxlIGJlaW5nIHVwZGF0ZWQuClRoaXMgcmVkdWNlcyB0aGUgdGltZSB0aGUg bG9jayBpcyBoZWxkIGxhdGVyIHdpdGhpbgpoZWFwYW1fdHVwbGVfdXBkYXRlKCkgYW5kIGhl YXBfdXBkYXRlKCkuCgpFeGVjVXBkYXRlTW9kSWR4QXR0cnMoKSBpbiB0dXJuIHVzZXMgRXhl Y0NvbXBhcmVTbG90QXR0cnMoKSB0byBpZGVudGlmeQp3aGljaCBhdHRyaWJ1dGVzIGhhdmUg Y2hhbmdlZCBhbmQgdGhlbiBpbnRlcnNlY3RzIHRoYXQgd2l0aCB0aGUgc2V0IG9mCmluZGV4 ZWQgYXR0cmlidXRlcyB0byBpZGVudGlmeSB0aGUgbW9kaWZpZWQgaW5kZXhlZCBzZXQsIHRo ZSBtaXhfYXR0cnMuCgpCZXNpZGVzIGlkZW50aWZ5aW5nIHRoZSBzZXQgb2YgbW9kaWZpZWQg aW5kZXhlZCBhdHRyaWJ1dGVzCkhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIHdhcyBhbHNv IHJlc3BvbnNpYmxlIGZvciBwYXJ0IG9mIHRoZSBsb2dpYwppbnZvbGVkIGluIHRoZSBkZWNp c2lvbiB0byBpbmNsdWRlIHRoZSByZXBsaWNhIGlkZW50aXR5IGtleSBvciBub3QuClRoaXMg bW92ZWQgaW50byBoZWFwX3VwZGF0ZSgpIGFuZCBvdXQgb2YgSGVhcERldGVybWluZUNvbHVt bnNJbmZvKCkKd2hpY2ggaGFzIGJlZW4gcmVuYW1lZCB0byBIZWFwVXBkYXRlTW9kSWR4QXR0 cnMoKSBhcyBpdCBpcyBzdGlsbApyZXF1aXJlZCB3aXRoaW4gc2ltcGxlX2hlYXBfdXBkYXRl KCkgdG8gYmUgYWJsZSB0byBpZGVudGlmeSBtaXhfYXR0cnMKZ2l2ZW4gb25seSBhbiBvbGQg VElEIGFuZCBhIG5ldyBIZWFwVHVwbGUuCgpVcGRhdGVzIHN0ZW1taW5nIGZyb20gbG9naWNh bCByZXBsaWNhdGlvbiBhbHNvIHVzZSB0aGUgbmV3CkV4ZWNVcGRhdGVNb2RJZHhBdHRycygp IGluIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZSgpLgoKVGhpcyBwYXRjaCBhbHNvIGludHJv ZHVjZXMgYSBmZXcgaGVscGVyIGZ1bmN0aW9uczogSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSgp LApIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUoKS4gIFRoZXNlIGFyZSB1c2VkIGluIGJv dGggaGVhcF91cGRhdGUoKSBhbmQKc2ltcGxlX2hlYXBfdXBkYXRlKCkuCgpUaGUgaGVhcF91 cGRhdGUoKSBmdW5jdGlvbiBpcyBjYWxsZWQgbm93IHdpdGggbG9ja21vZGUgcHJlLWRldGVy bWluZWQKYW5kIGEgYm9vbGVhbmluZyBpbmRpY2F0aW5nIGlmIHRoZSB1cGRhdGUgYWxsb3dz IEhPVCB1cGRhdGVzIG9yIG5vdC4KSWYgZHVyaW5nIGhlYXBfdXBkYXRlKCkgdGhlIG5ldyB0 dXBsZSB3aWxsIGZpdCBvbiB0aGUgc2FtZSBwYWdlIGFuZCB0aGF0CmJvb2xlYW4gaXMgdHJ1 ZSwgdGhlIHVwZGF0ZSBpcyBIT1QuICBOb25lIG9mIHRoZSBsb2dpYyByZWxhdGVkIHRvIHdo ZW4KSE9UIGlzIGFsbG93ZWQgaGFzIGNoYW5nZWQuCgpUcmlnZ2VycyBhcmUgZnJlZSB0byB1 c2UgaGVhcF9tb2RpZnlfdHVwbGUoKSBhbmQgdXBkYXRlIGF0dHJpYnV0ZXMgbm90CmZvdW5k IGluIHRoZSBVUERBVEUgc3RhdGVtZW50IG9yIHRyaWdnZXJzIHRoYXQgZmlyZSBkdWUgdG8g YW4gVVBEQVRFLgpXaGVuIHRoYXQgaGFwcGVucyB0aGUgZXhlY3V0b3IgaGFzIG5vIGtub3ds ZWRnZSBvZiB0aG9zZSBjaGFuZ2VzLiAgVGhpcwpmb3JjZWQgSGVhcERldGVybWluZUNvbHVt bnNJbmZvKCkgdG8gc2NhbiBhbGwgaW5kZXhlZCBhdHRyaWJ1dGVzIG9uIGEKcmVsYXRpb24g cmF0aGVyIHRoYW4gb25seSB0aGUgaW50ZXJzZWN0aW9uIG9mIGluZGV4ZWQgYW5kIHRob3Nl CmlkZW50aWZpZWQgYnkgRXhlY0dldEFsbFVwZGF0ZWRDb2xzKCkuICBUaGlzIG9jY3VycyBp biBhdCBsZWFzdCBvbmUgdGVzdAp0aGF0IHVzZXMgdGhlIHRzdmVjdG9yX3VwZGF0ZV90cmln Z2VyKCkgZnVuY3Rpb24gKHRzZWFyY2guc3FsKS4KRXhlY0JSVXBkYXRlVHJpZ2dlcnMoKSBo YXMgYmVlbiBjaGFuZ2VkIHRvIGlkZW50aWZ5IGNoYW5nZXMgdG8gaW5kZXhlZApjb2x1bW5z IG5vdCBmb3VuZCBieSBFeGVjR2V0QWxsVXBkYXRlQ29scygpIGFuZCBhZGQgdGhvc2UgYXR0 cmlidXRlcyB0bwpyaV9leHRyYVVwZGF0ZWRDb2xzLgoKVGhyZWUgdGVzdHMgd2VyZSBhZGp1 c3RlZCB0byBhdm9pZCBpbnN0YWJpbGl0eSBkdWUgdG8gdHVwbGUgb3JkZXJpbmcKZHVyaW5n IGhlYXAgcGFnZSBzY2Fucy4gIFRoaXMgYXZvaWRzIG5vbmRldGVybWluaXN0aWMgcmVzdWx0 cy4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAg fCA0ODEgKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jICAgICAgfCAgMzIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90 YWJsZWFtLmMgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJp Z2dlci5jICAgICAgICAgICAgICAgIHwgIDIwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUmVwbGljYXRpb24uYyAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNUdXBsZXMuYyAgICAgICAgICAgICB8ICA3OCArKysKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8ICA5MyArKystCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAgNDQgKy0KIHNyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaCAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAgIDkgKwogc3JjL2lu Y2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMv aW5jbHVkZS91dGlscy9yZWxjYWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4u Li9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dCAgICB8ICAgMiArLQog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0IHwgICA0ICst CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwgICAgfCAgIDIg Ky0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAg MiArLQogMTcgZmlsZXMgY2hhbmdlZCwgNTc2IGluc2VydGlvbnMoKyksIDIyOCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDk4ZDUzY2FlZWE4Li42 YjM2ZjYyYTZmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTM3LDIwICsz NywyNiBAQAogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nl c3Mvc3VidHJhbnMuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3luY3NjYW4uaCIKKyNpbmNsdWRl ICJhY2Nlc3Mvc3lzYXR0ci5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3ZhbGlkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAu aCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlX2QuaCIKICNp bmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKKyNpbmNsdWRlICJleGVjdXRvci90dXB0YWJs ZS5oIgorI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv YnVmLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cmVkaWNhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUg InV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAj aW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUu aCIKIApAQCAtNjcsMTEgKzczLDggQEAgc3RhdGljIHZvaWQgY2hlY2tfbG9ja19pZl9pbnBs YWNlX3VwZGF0ZWFibGVfcmVsKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkJIEhl YXBUdXBsZSBuZXd0dXApOwogc3RhdGljIHZvaWQgY2hlY2tfaW5wbGFjZV9yZWxfbG9jayhI ZWFwVHVwbGUgb2xkdHVwKTsKICNlbmRpZgotc3RhdGljIEJpdG1hcHNldCAqSGVhcERldGVy bWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIEJpdG1h cHNldCAqaW50ZXJlc3RpbmdfY29scywKLQkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKmV4dGVy bmFsX2NvbHMsCi0JCQkJCQkJCQkJICAgSGVhcFR1cGxlIG9sZHR1cCwgSGVhcFR1cGxlIG5l d3R1cCwKLQkJCQkJCQkJCQkgICBib29sICpoYXNfZXh0ZXJuYWwpOworc3RhdGljIEJpdG1h cHNldCAqSGVhcFVwZGF0ZU1vZElkeEF0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJ CQkJCUhlYXBUdXBsZSBvbGR0dXAsIEhlYXBUdXBsZSBuZXd0dXApOwogc3RhdGljIGJvb2wg aGVhcF9hY3F1aXJlX3R1cGxvY2soUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqdGlkLAogCQkJCQkJCQkgTG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBv bGljeSB3YWl0X3BvbGljeSwKIAkJCQkJCQkJIGJvb2wgKmhhdmVfdHVwbGVfbG9jayk7CkBA IC0zMzAwLDcgKzMzMDMsNyBAQCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRp b24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKQogICoJaGVhcF91cGRhdGUgLSByZXBs YWNlIGEgdHVwbGUKICAqCiAgKiBTZWUgdGFibGVfdHVwbGVfdXBkYXRlKCkgZm9yIGFuIGV4 cGxhbmF0aW9uIG9mIHRoZSBwYXJhbWV0ZXJzLCBleGNlcHQgdGhhdAotICogdGhpcyByb3V0 aW5lIGRpcmVjdGx5IHRha2VzIGEgdHVwbGUgcmF0aGVyIHRoYW4gYSBzbG90LgorICogdGhp cyByb3V0aW5lIGRpcmVjdGx5IHRha2VzIGEgaGVhcCB0dXBsZSByYXRoZXIgdGhhbiBhIHNs b3QuCiAgKgogICogSW4gdGhlIGZhaWx1cmUgY2FzZXMsIHRoZSByb3V0aW5lIGZpbGxzICp0 bWZkIHdpdGggdGhlIHR1cGxlJ3MgdF9jdGlkLAogICogdF94bWF4IChyZXNvbHZpbmcgYSBw b3NzaWJsZSBNdWx0aVhhY3QsIGlmIG5lY2Vzc2FyeSksIGFuZCB0X2NtYXggKHRoZSBsYXN0 CkBAIC0zMzEwLDE3ICszMzEzLDEzIEBAIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpCiBUTV9SZXN1bHQKIGhlYXBf dXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQs IEhlYXBUdXBsZSBuZXd0dXAsCiAJCQlDb21tYW5kSWQgY2lkLCBTbmFwc2hvdCBjcm9zc2No ZWNrLCBib29sIHdhaXQsCi0JCQlUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9k ZSAqbG9ja21vZGUsCi0JCQlUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJ CVRNX0ZhaWx1cmVEYXRhICp0bWZkLCBjb25zdCBMb2NrVHVwbGVNb2RlIGxvY2ttb2RlLAor CQkJY29uc3QgQml0bWFwc2V0ICptaXhfYXR0cnMsIGNvbnN0IGJvb2wgaG90X2FsbG93ZWQp CiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAlUcmFuc2FjdGlvbklkIHhpZCA9IEdldEN1cnJl bnRUcmFuc2FjdGlvbklkKCk7Ci0JQml0bWFwc2V0ICAqaG90X2F0dHJzOwotCUJpdG1hcHNl dCAgKnN1bV9hdHRyczsKLQlCaXRtYXBzZXQgICprZXlfYXR0cnM7Ci0JQml0bWFwc2V0ICAq aWRfYXR0cnM7Ci0JQml0bWFwc2V0ICAqaW50ZXJlc3RpbmdfYXR0cnM7Ci0JQml0bWFwc2V0 ICAqbW9kaWZpZWRfYXR0cnM7CisJQml0bWFwc2V0ICAqaWR4X2F0dHJzLAorCQkJICAgKnJp ZF9hdHRyczsKIAlJdGVtSWQJCWxwOwogCUhlYXBUdXBsZURhdGEgb2xkdHVwOwogCUhlYXBU dXBsZQloZWFwdHVwOwpAQCAtMzMzOSwxMyArMzMzOCwxMiBAQCBoZWFwX3VwZGF0ZShSZWxh dGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUg bmV3dHVwLAogCWJvb2wJCWhhdmVfdHVwbGVfbG9jayA9IGZhbHNlOwogCWJvb2wJCWlzY29t Ym87CiAJYm9vbAkJdXNlX2hvdF91cGRhdGUgPSBmYWxzZTsKLQlib29sCQlzdW1tYXJpemVk X3VwZGF0ZSA9IGZhbHNlOwogCWJvb2wJCWtleV9pbnRhY3Q7CiAJYm9vbAkJYWxsX3Zpc2li bGVfY2xlYXJlZCA9IGZhbHNlOwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWRfbmV3ID0g ZmFsc2U7CiAJYm9vbAkJY2hlY2tlZF9sb2NrZXJzOwogCWJvb2wJCWxvY2tlcl9yZW1haW5z OwotCWJvb2wJCWlkX2hhc19leHRlcm5hbCA9IGZhbHNlOworCWJvb2wJCXJlcF9pZF9rZXlf cmVxdWlyZWQgPSBmYWxzZTsKIAlUcmFuc2FjdGlvbklkIHhtYXhfbmV3X3R1cGxlLAogCQkJ CXhtYXhfb2xkX3R1cGxlOwogCXVpbnQxNgkJaW5mb21hc2tfb2xkX3R1cGxlLApAQCAtMzM3 NiwzMyArMzM3NCwxNCBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3Qg SXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogI2VuZGlmCiAKIAkv KgotCSAqIEZldGNoIHRoZSBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8gYmUgY2hlY2tlZCBmb3Ig dmFyaW91cyBvcGVyYXRpb25zLgotCSAqCi0JICogRm9yIEhPVCBjb25zaWRlcmF0aW9ucywg dGhpcyBpcyB3YXN0ZWQgZWZmb3J0IGlmIHdlIGZhaWwgdG8gdXBkYXRlIG9yCi0JICogaGF2 ZSB0byBwdXQgdGhlIG5ldyB0dXBsZSBvbiBhIGRpZmZlcmVudCBwYWdlLiAgQnV0IHdlIG11 c3QgY29tcHV0ZSB0aGUKLQkgKiBsaXN0IGJlZm9yZSBvYnRhaW5pbmcgYnVmZmVyIGxvY2sg LS0tIGluIHRoZSB3b3JzdCBjYXNlLCBpZiB3ZSBhcmUKLQkgKiBkb2luZyBhbiB1cGRhdGUg b24gb25lIG9mIHRoZSByZWxldmFudCBzeXN0ZW0gY2F0YWxvZ3MsIHdlIGNvdWxkCi0JICog ZGVhZGxvY2sgaWYgd2UgdHJ5IHRvIGZldGNoIHRoZSBsaXN0IGxhdGVyLiAgSW4gYW55IGNh c2UsIHRoZSByZWxjYWNoZQotCSAqIGNhY2hlcyB0aGUgZGF0YSBzbyB0aGlzIGlzIHVzdWFs bHkgcHJldHR5IGNoZWFwLgotCSAqCi0JICogV2UgYWxzbyBuZWVkIGNvbHVtbnMgdXNlZCBi eSB0aGUgcmVwbGljYSBpZGVudGl0eSBhbmQgY29sdW1ucyB0aGF0IGFyZQotCSAqIGNvbnNp ZGVyZWQgdGhlICJrZXkiIG9mIHJvd3MgaW4gdGhlIHRhYmxlLgorCSAqIEZldGNoIHRoZSBh dHRyaWJ1dGVzIHVzZWQgYWNyb3NzIGFsbCBpbmRleGVzIG9uIHRoaXMgcmVsYXRpb24gYXMg d2VsbAorCSAqIGFzIHRoZSByZXBsaWNhIGlkZW50aXR5IGFuZCBjb2x1bW5zLgogCSAqCi0J ICogTm90ZSB0aGF0IHdlIGdldCBjb3BpZXMgb2YgZWFjaCBiaXRtYXAsIHNvIHdlIG5lZWQg bm90IHdvcnJ5IGFib3V0Ci0JICogcmVsY2FjaGUgZmx1c2ggaGFwcGVuaW5nIG1pZHdheSB0 aHJvdWdoLgotCSAqLwotCWhvdF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFw KHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lO Ryk7Ci0Jc3VtX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24s Ci0JCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCk7Ci0Ja2V5X2F0 dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJf QklUTUFQX0tFWSk7Ci0JaWRfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChy ZWxhdGlvbiwKLQkJCQkJCQkJCQkgIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWSk7 Ci0JaW50ZXJlc3RpbmdfYXR0cnMgPSBOVUxMOwotCWludGVyZXN0aW5nX2F0dHJzID0gYm1z X2FkZF9tZW1iZXJzKGludGVyZXN0aW5nX2F0dHJzLCBob3RfYXR0cnMpOwotCWludGVyZXN0 aW5nX2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGludGVyZXN0aW5nX2F0dHJzLCBzdW1fYXR0 cnMpOwotCWludGVyZXN0aW5nX2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGludGVyZXN0aW5n X2F0dHJzLCBrZXlfYXR0cnMpOwotCWludGVyZXN0aW5nX2F0dHJzID0gYm1zX2FkZF9tZW1i ZXJzKGludGVyZXN0aW5nX2F0dHJzLCBpZF9hdHRycyk7CisJICogTk9URTogcmVsY2FjaGUg cmV0dXJucyBjb3BpZXMgb2YgZWFjaCBiaXRtYXAsIHNvIHdlIG5lZWQgbm90IHdvcnJ5CisJ ICogYWJvdXQgcmVsY2FjaGUgZmx1c2ggaGFwcGVuaW5nIG1pZHdheSB0aHJvdWdoLgorCSAq LworCWlkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJ TkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKwlyaWRfYXR0cnMgPSBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZ KTsKIAogCWJsb2NrID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihvdGlkKTsKIAlJTkpF Q1RJT05fUE9JTlQoImhlYXBfdXBkYXRlLWJlZm9yZS1waW4iLCBOVUxMKTsKQEAgLTM0NTYs MjAgKzM0MzUsMTcgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0 ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkJdG1mZC0+Y3RpZCA9 ICpvdGlkOwogCQl0bWZkLT54bWF4ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJCXRtZmQt PmNtYXggPSBJbnZhbGlkQ29tbWFuZElkOwotCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OwogCi0JCWJtc19mcmVlKGhvdF9hdHRycyk7Ci0JCWJtc19mcmVlKHN1bV9hdHRycyk7Ci0J CWJtc19mcmVlKGtleV9hdHRycyk7Ci0JCWJtc19mcmVlKGlkX2F0dHJzKTsKLQkJLyogbW9k aWZpZWRfYXR0cnMgbm90IHlldCBpbml0aWFsaXplZCAqLwotCQlibXNfZnJlZShpbnRlcmVz dGluZ19hdHRycyk7CisJCWJtc19mcmVlKHJpZF9hdHRycyk7CisJCWJtc19mcmVlKGlkeF9h dHRycyk7CisJCS8qIG1peF9hdHRycyBpcyBvd25lZCBieSB0aGUgY2FsbGVyLCBkb24ndCBm cmVlIGl0ICovCisKIAkJcmV0dXJuIFRNX0RlbGV0ZWQ7CiAJfQogCiAJLyoKLQkgKiBGaWxs IGluIGVub3VnaCBkYXRhIGluIG9sZHR1cCBmb3IgSGVhcERldGVybWluZUNvbHVtbnNJbmZv IHRvIHdvcmsKLQkgKiBwcm9wZXJseS4KKwkgKiBGaWxsIGluIGVub3VnaCBkYXRhIGluIG9s ZHR1cCB0byBkZXRlcm1pbmUgcmVwbGljYSBpZGVudGl0eSBhdHRyaWJ1dGUKKwkgKiByZXF1 aXJlbWVudHMuCiAJICovCiAJb2xkdHVwLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlk KHJlbGF0aW9uKTsKIAlvbGR0dXAudF9kYXRhID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdl dEl0ZW0ocGFnZSwgbHApOwpAQCAtMzQ4MCwxNiArMzQ1Niw1OSBAQCBoZWFwX3VwZGF0ZShS ZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVw bGUgbmV3dHVwLAogCW5ld3R1cC0+dF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVs YXRpb24pOwogCiAJLyoKLQkgKiBEZXRlcm1pbmUgY29sdW1ucyBtb2RpZmllZCBieSB0aGUg dXBkYXRlLiAgQWRkaXRpb25hbGx5LCBpZGVudGlmeQotCSAqIHdoZXRoZXIgYW55IG9mIHRo ZSB1bm1vZGlmaWVkIHJlcGxpY2EgaWRlbnRpdHkga2V5IGF0dHJpYnV0ZXMgaW4gdGhlCi0J ICogb2xkIHR1cGxlIGlzIGV4dGVybmFsbHkgc3RvcmVkIG9yIG5vdC4gIFRoaXMgaXMgcmVx dWlyZWQgYmVjYXVzZSBmb3IKLQkgKiBzdWNoIGF0dHJpYnV0ZXMgdGhlIGZsYXR0ZW5lZCB2 YWx1ZSB3b24ndCBiZSBXQUwgbG9nZ2VkIGFzIHBhcnQgb2YgdGhlCi0JICogbmV3IHR1cGxl IHNvIHdlIG11c3QgaW5jbHVkZSBpdCBhcyBwYXJ0IG9mIHRoZSBvbGRfa2V5X3R1cGxlLiAg U2VlCi0JICogRXh0cmFjdFJlcGxpY2FJZGVudGl0eS4KKwkgKiBFeHRyYWN0UmVwbGljYUlk ZW50aXR5KCkgbmVlZHMgdG8ga25vdyBpZiBhIG1vZGlmaWVkIGluZGV4ZWQgYXR0cmJ1dGUK KwkgKiBpcyB1c2VkIGFzIGEgcmVwbGljYSBpbmRlbnRpdHkgb3IgaWYgYW55IG9mIHRoZSBy ZXBsaWNhIGlkZW50aXR5CisJICogYXR0cmlidXRlcyBhcmUgcmVmZXJlbmNlZCBpbiBhbiBp bmRleCwgdW5tb2RpZmllZCwgYW5kIGFyZSBzdG9yZWQKKwkgKiBleHRlcm5hbGx5IGluIHRo ZSBvbGQgdHVwbGUgYmVpbmcgcmVwbGFjZWQuICBJbiB0aG9zZSBjYXNlcyBpdCBtYXkgYmUK KwkgKiBuZWNlc3NhcnkgdG8gV0FMIGxvZyB0aGVtIHRvIHNvIHRoZXkgYXJlIGF2YWlsYWJs ZSB0byByZXBsaWNhcy4KIAkgKi8KLQltb2RpZmllZF9hdHRycyA9IEhlYXBEZXRlcm1pbmVD b2x1bW5zSW5mbyhyZWxhdGlvbiwgaW50ZXJlc3RpbmdfYXR0cnMsCi0JCQkJCQkJCQkJCSAg aWRfYXR0cnMsICZvbGR0dXAsCi0JCQkJCQkJCQkJCSAgbmV3dHVwLCAmaWRfaGFzX2V4dGVy bmFsKTsKKwlyZXBfaWRfa2V5X3JlcXVpcmVkID0gYm1zX292ZXJsYXAobWl4X2F0dHJzLCBy aWRfYXR0cnMpOworCWlmICghcmVwX2lkX2tleV9yZXF1aXJlZCkKKwl7CisJCUJpdG1hcHNl dCAgKmF0dHJzOworCQlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVs YXRpb24pOworCQlpbnQJCQlhdHRpZHggPSAtMTsKKworCQkvKgorCQkgKiBSZWR1Y2UgdGhl IHNldCB1bmRlciByZXZpZXcgdG8gb25seSB0aGUgdW5tb2RpZmllZCBpbmRleGVkIHJlcGxp Y2EKKwkJICogaWRlbnRpdHkga2V5IGF0dHJpYnV0ZXMuICBpZHhfYXR0cnMgaXMgY29waWVk IChieSBibXNfZGlmZmVyZW5jZSgpKQorCQkgKiBub3QgbW9kaWZpZWQgaGVyZS4KKwkJICov CisJCWF0dHJzID0gYm1zX2RpZmZlcmVuY2UoaWR4X2F0dHJzLCBtaXhfYXR0cnMpOworCQlh dHRycyA9IGJtc19pbnRfbWVtYmVycyhhdHRycywgcmlkX2F0dHJzKTsKKworCQl3aGlsZSAo KGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4KSkgPj0gMCkKKwkJewor CQkJLyoKKwkJCSAqIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRybnVtIGlzIHRoZSBub3Jt YWwgYXR0cmlidXRlIG51bWJlcgorCQkJICovCisJCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBh dHRpZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCQkJRGF0dW0J CXZhbHVlOworCQkJYm9vbAkJaXNudWxsOworCisJCQkvKgorCQkJICogU3lzdGVtIGF0dHJp YnV0ZXMgYXJlIG5vdCBhZGRlZCBpbnRvIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQKKwkJ CSAqIGJpdG1hcCBieSByZWxjYWNoZS4KKwkJCSAqLworCQkJQXNzZXJ0KGF0dHJudW0gPiAw KTsKKworCQkJdmFsdWUgPSBoZWFwX2dldGF0dHIoJm9sZHR1cCwgYXR0cm51bSwgdHVwZGVz YywgJmlzbnVsbCk7CisKKwkJCS8qIE5vIG5lZWQgdG8gY2hlY2sgYXR0cmlidXRlcyB0aGF0 IGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCisJCQlpZiAoaXNudWxsIHx8CisJCQkJ VHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAtIDEpLT5hdHRsZW4gIT0g LTEpCisJCQkJY29udGludWU7CisKKwkJCS8qIENoZWNrIGlmIHRoZSBvbGQgdHVwbGUncyBh dHRyaWJ1dGUgaXMgc3RvcmVkIGV4dGVybmFsbHkgKi8KKwkJCWlmIChWQVJBVFRfSVNfRVhU RVJOQUwoKHN0cnVjdCB2YXJsZW5hICopIERhdHVtR2V0UG9pbnRlcih2YWx1ZSkpKQorCQkJ eworCQkJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQor CQl9CisKKwkJYm1zX2ZyZWUoYXR0cnMpOworCX0KIAogCS8qCiAJICogSWYgd2UncmUgbm90 IHVwZGF0aW5nIGFueSAia2V5IiBjb2x1bW4sIHdlIGNhbiBncmFiIGEgd2Vha2VyIGxvY2sg dHlwZS4KQEAgLTM1MDIsOSArMzUyMSw4IEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0 aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsCiAJ ICogaXMgdXBkYXRlcyB0aGF0IGRvbid0IG1hbmlwdWxhdGUga2V5IGNvbHVtbnMsIG5vdCB0 aG9zZSB0aGF0CiAJICogc2VyZW5kaXBpdG91c2x5IGFycml2ZSBhdCB0aGUgc2FtZSBrZXkg dmFsdWVzLgogCSAqLwotCWlmICghYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIGtleV9h dHRycykpCisJaWYgKGxvY2ttb2RlID09IExvY2tUdXBsZU5vS2V5RXhjbHVzaXZlKQogCXsK LQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlTm9LZXlFeGNsdXNpdmU7CiAJCW14YWN0X3N0YXR1 cyA9IE11bHRpWGFjdFN0YXR1c05vS2V5VXBkYXRlOwogCQlrZXlfaW50YWN0ID0gdHJ1ZTsK IApAQCAtMzUyMSw3ICszNTM5LDcgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24s IGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAl9CiAJ ZWxzZQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlRXhjbHVzaXZlOworCQlBc3NlcnQo bG9ja21vZGUgPT0gTG9ja1R1cGxlRXhjbHVzaXZlKTsKIAkJbXhhY3Rfc3RhdHVzID0gTXVs dGlYYWN0U3RhdHVzVXBkYXRlOwogCQlrZXlfaW50YWN0ID0gZmFsc2U7CiAJfQpAQCAtMzUz Miw3ICszNTUwLDYgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0 ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkgKiB3aXRoIHRoZSBu ZXcgdHVwbGUncyBsb2NhdGlvbiwgc28gdGhlcmUncyBncmVhdCByaXNrIG9mIGNvbmZ1c2lv biBpZiB3ZQogCSAqIHVzZSBvdGlkIGFueW1vcmUuCiAJICovCi0KIGwyOgogCWNoZWNrZWRf bG9ja2VycyA9IGZhbHNlOwogCWxvY2tlcl9yZW1haW5zID0gZmFsc2U7CkBAIC0zNjAwLDcg KzM2MTcsNyBAQCBsMjoKIAkJCWJvb2wJCWN1cnJlbnRfaXNfbWVtYmVyID0gZmFsc2U7CiAK IAkJCWlmIChEb2VzTXVsdGlYYWN0SWRDb25mbGljdCgoTXVsdGlYYWN0SWQpIHh3YWl0LCBp bmZvbWFzaywKLQkJCQkJCQkJCQkqbG9ja21vZGUsICZjdXJyZW50X2lzX21lbWJlcikpCisJ CQkJCQkJCQkJbG9ja21vZGUsICZjdXJyZW50X2lzX21lbWJlcikpCiAJCQl7CiAJCQkJTG9j a0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKQEAgLTM2MDksNyArMzYy Niw3IEBAIGwyOgogCQkJCSAqIHJlcXVlc3RpbmcgYSBsb2NrIGFuZCBhbHJlYWR5IGhhdmUg b25lOyBhdm9pZHMgZGVhZGxvY2spLgogCQkJCSAqLwogCQkJCWlmICghY3VycmVudF9pc19t ZW1iZXIpCi0JCQkJCWhlYXBfYWNxdWlyZV90dXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50 X3NlbGYpLCAqbG9ja21vZGUsCisJCQkJCWhlYXBfYWNxdWlyZV90dXBsb2NrKHJlbGF0aW9u LCAmKG9sZHR1cC50X3NlbGYpLCBsb2NrbW9kZSwKIAkJCQkJCQkJCQkgTG9ja1dhaXRCbG9j aywgJmhhdmVfdHVwbGVfbG9jayk7CiAKIAkJCQkvKiB3YWl0IGZvciBtdWx0aXhhY3QgKi8K QEAgLTM2OTQsNyArMzcxMSw3IEBAIGwyOgogCQkJICogbG9jay4KIAkJCSAqLwogCQkJTG9j a0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0JCQloZWFwX2FjcXVpcmVf dHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgKmxvY2ttb2RlLAorCQkJaGVh cF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiksIGxvY2ttb2Rl LAogCQkJCQkJCQkgTG9ja1dhaXRCbG9jaywgJmhhdmVfdHVwbGVfbG9jayk7CiAJCQlYYWN0 TG9ja1RhYmxlV2FpdCh4d2FpdCwgcmVsYXRpb24sICZvbGR0dXAudF9zZWxmLAogCQkJCQkJ CSAgWExUV19VcGRhdGUpOwpAQCAtMzc1NCwxNyArMzc3MSwxNCBAQCBsMjoKIAkJCXRtZmQt PmNtYXggPSBJbnZhbGlkQ29tbWFuZElkOwogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZl cik7CiAJCWlmIChoYXZlX3R1cGxlX2xvY2spCi0JCQlVbmxvY2tUdXBsZVR1cGxvY2socmVs YXRpb24sICYob2xkdHVwLnRfc2VsZiksICpsb2NrbW9kZSk7CisJCQlVbmxvY2tUdXBsZVR1 cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiksIGxvY2ttb2RlKTsKIAkJaWYgKHZt YnVmZmVyICE9IEludmFsaWRCdWZmZXIpCiAJCQlSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsK LQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKIAotCQlibXNfZnJlZShob3RfYXR0cnMp OwotCQlibXNfZnJlZShzdW1fYXR0cnMpOwotCQlibXNfZnJlZShrZXlfYXR0cnMpOwotCQli bXNfZnJlZShpZF9hdHRycyk7Ci0JCWJtc19mcmVlKG1vZGlmaWVkX2F0dHJzKTsKLQkJYm1z X2ZyZWUoaW50ZXJlc3RpbmdfYXR0cnMpOworCQlibXNfZnJlZShyaWRfYXR0cnMpOworCQli bXNfZnJlZShpZHhfYXR0cnMpOworCQkvKiBtaXhfYXR0cnMgaXMgb3duZWQgYnkgdGhlIGNh bGxlciwgZG9uJ3QgZnJlZSBpdCAqLworCiAJCXJldHVybiByZXN1bHQ7CiAJfQogCkBAIC0z Nzk0LDcgKzM4MDgsNyBAQCBsMjoKIAljb21wdXRlX25ld194bWF4X2luZm9tYXNrKEhlYXBU dXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0YSksCiAJCQkJCQkJICBvbGR0dXAu dF9kYXRhLT50X2luZm9tYXNrLAogCQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFz azIsCi0JCQkJCQkJICB4aWQsICpsb2NrbW9kZSwgdHJ1ZSwKKwkJCQkJCQkgIHhpZCwgbG9j a21vZGUsIHRydWUsCiAJCQkJCQkJICAmeG1heF9vbGRfdHVwbGUsICZpbmZvbWFza19vbGRf dHVwbGUsCiAJCQkJCQkJICAmaW5mb21hc2syX29sZF90dXBsZSk7CiAKQEAgLTM5MTEsNyAr MzkyNSw3IEBAIGwyOgogCQljb21wdXRlX25ld194bWF4X2luZm9tYXNrKEhlYXBUdXBsZUhl YWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0YSksCiAJCQkJCQkJCSAgb2xkdHVwLnRfZGF0 YS0+dF9pbmZvbWFzaywKIAkJCQkJCQkJICBvbGR0dXAudF9kYXRhLT50X2luZm9tYXNrMiwK LQkJCQkJCQkJICB4aWQsICpsb2NrbW9kZSwgZmFsc2UsCisJCQkJCQkJCSAgeGlkLCBsb2Nr bW9kZSwgZmFsc2UsCiAJCQkJCQkJCSAgJnhtYXhfbG9ja19vbGRfdHVwbGUsICZpbmZvbWFz a19sb2NrX29sZF90dXBsZSwKIAkJCQkJCQkJICAmaW5mb21hc2syX2xvY2tfb2xkX3R1cGxl KTsKIApAQCAtNDA3MSwzNyArNDA4NSwxNiBAQCBsMjoKIAogCS8qCiAJICogQXQgdGhpcyBw b2ludCBuZXdidWYgYW5kIGJ1ZmZlciBhcmUgYm90aCBwaW5uZWQgYW5kIGxvY2tlZCwgYW5k IG5ld2J1ZgotCSAqIGhhcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSBuZXcgdHVwbGUuICBJZiB0 aGV5IGFyZSB0aGUgc2FtZSBidWZmZXIsIG9ubHkKLQkgKiBvbmUgcGluIGlzIGhlbGQuCisJ ICogaGFzIGVub3VnaCBzcGFjZSBmb3IgdGhlIG5ldyB0dXBsZSBzbyB3ZSBjYW4gdXNlIHRo ZSBIT1QgdXBkYXRlIHBhdGggaWYKKwkgKiB0aGUgY2FsbGVyIGRldGVybWluZWQgdGhhdCBp dCBpcyBhbGxvd2FibGUuCisJICoKKwkgKiBOT1RFOiBJZiBuZXdidWYgPT0gYnVmZmVyIHRo ZW4gb25seSBvbmUgcGluIGlzIGhlbGQuCiAJICovCi0KLQlpZiAobmV3YnVmID09IGJ1ZmZl cikKLQl7Ci0JCS8qCi0JCSAqIFNpbmNlIHRoZSBuZXcgdHVwbGUgaXMgZ29pbmcgaW50byB0 aGUgc2FtZSBwYWdlLCB3ZSBtaWdodCBiZSBhYmxlCi0JCSAqIHRvIGRvIGEgSE9UIHVwZGF0 ZS4gIENoZWNrIGlmIGFueSBvZiB0aGUgaW5kZXggY29sdW1ucyBoYXZlIGJlZW4KLQkJICog Y2hhbmdlZC4KLQkJICovCi0JCWlmICghYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIGhv dF9hdHRycykpCi0JCXsKLQkJCXVzZV9ob3RfdXBkYXRlID0gdHJ1ZTsKLQotCQkJLyoKLQkJ CSAqIElmIG5vbmUgb2YgdGhlIGNvbHVtbnMgdGhhdCBhcmUgdXNlZCBpbiBob3QtYmxvY2tp bmcgaW5kZXhlcwotCQkJICogd2VyZSB1cGRhdGVkLCB3ZSBjYW4gYXBwbHkgSE9ULCBidXQg d2UgZG8gc3RpbGwgbmVlZCB0byBjaGVjawotCQkJICogaWYgd2UgbmVlZCB0byB1cGRhdGUg dGhlIHN1bW1hcml6aW5nIGluZGV4ZXMsIGFuZCB1cGRhdGUgdGhvc2UKLQkJCSAqIGluZGV4 ZXMgaWYgdGhlIGNvbHVtbnMgd2VyZSB1cGRhdGVkLCBvciB3ZSBtYXkgZmFpbCB0byBkZXRl Y3QKLQkJCSAqIGUuZy4gdmFsdWUgYm91bmQgY2hhbmdlcyBpbiBCUklOIG1pbm1heCBpbmRl eGVzLgotCQkJICovCi0JCQlpZiAoYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIHN1bV9h dHRycykpCi0JCQkJc3VtbWFyaXplZF91cGRhdGUgPSB0cnVlOwotCQl9Ci0JfQorCWlmICgo bmV3YnVmID09IGJ1ZmZlcikgJiYgaG90X2FsbG93ZWQpCisJCXVzZV9ob3RfdXBkYXRlID0g dHJ1ZTsKIAllbHNlCi0JewogCQkvKiBTZXQgYSBoaW50IHRoYXQgdGhlIG9sZCBwYWdlIGNv dWxkIHVzZSBwcnVuZS9kZWZyYWcgKi8KIAkJUGFnZVNldEZ1bGwocGFnZSk7Ci0JfQogCiAJ LyoKIAkgKiBDb21wdXRlIHJlcGxpY2EgaWRlbnRpdHkgdHVwbGUgYmVmb3JlIGVudGVyaW5n IHRoZSBjcml0aWNhbCBzZWN0aW9uIHNvCkBAIC00MTExLDggKzQxMDQsNyBAQCBsMjoKIAkg KiBjb2x1bW5zIGFyZSBtb2RpZmllZCBvciBpdCBoYXMgZXh0ZXJuYWwgZGF0YS4KIAkgKi8K IAlvbGRfa2V5X3R1cGxlID0gRXh0cmFjdFJlcGxpY2FJZGVudGl0eShyZWxhdGlvbiwgJm9s ZHR1cCwKLQkJCQkJCQkJCQkgICBibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRycywgaWRfYXR0 cnMpIHx8Ci0JCQkJCQkJCQkJICAgaWRfaGFzX2V4dGVybmFsLAorCQkJCQkJCQkJCSAgIHJl cF9pZF9rZXlfcmVxdWlyZWQsCiAJCQkJCQkJCQkJICAgJm9sZF9rZXlfY29waWVkKTsKIAog CS8qIE5PIEVSRVBPUlQoRVJST1IpIGZyb20gaGVyZSB0aWxsIGNoYW5nZXMgYXJlIGxvZ2dl ZCAqLwpAQCAtNDI0MSw3ICs0MjMzLDcgQEAgbDI6CiAJICogUmVsZWFzZSB0aGUgbG1nciB0 dXBsZSBsb2NrLCBpZiB3ZSBoYWQgaXQuCiAJICovCiAJaWYgKGhhdmVfdHVwbGVfbG9jaykK LQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9j a21vZGUpOworCQlVbmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2Vs ZiksIGxvY2ttb2RlKTsKIAogCXBnc3RhdF9jb3VudF9oZWFwX3VwZGF0ZShyZWxhdGlvbiwg dXNlX2hvdF91cGRhdGUsIG5ld2J1ZiAhPSBidWZmZXIpOwogCkBAIC00MjU1LDMxICs0MjQ3 LDEyIEBAIGwyOgogCQloZWFwX2ZyZWV0dXBsZShoZWFwdHVwKTsKIAl9CiAKLQkvKgotCSAq IElmIGl0IGlzIGEgSE9UIHVwZGF0ZSwgdGhlIHVwZGF0ZSBtYXkgc3RpbGwgbmVlZCB0byB1 cGRhdGUgc3VtbWFyaXplZAotCSAqIGluZGV4ZXMsIGxlc3Qgd2UgZmFpbCB0byB1cGRhdGUg dGhvc2Ugc3VtbWFyaWVzIGFuZCBnZXQgaW5jb3JyZWN0Ci0JICogcmVzdWx0cyAoZm9yIGV4 YW1wbGUsIG1pbm1heCBib3VuZHMgb2YgdGhlIGJsb2NrIG1heSBjaGFuZ2Ugd2l0aCB0aGlz Ci0JICogdXBkYXRlKS4KLQkgKi8KLQlpZiAodXNlX2hvdF91cGRhdGUpCi0JewotCQlpZiAo c3VtbWFyaXplZF91cGRhdGUpCi0JCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemlu ZzsKLQkJZWxzZQotCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKLQl9Ci0JZWxzZQot CQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9BbGw7Ci0KIAlpZiAob2xkX2tleV90dXBsZSAhPSBO VUxMICYmIG9sZF9rZXlfY29waWVkKQogCQloZWFwX2ZyZWV0dXBsZShvbGRfa2V5X3R1cGxl KTsKIAotCWJtc19mcmVlKGhvdF9hdHRycyk7Ci0JYm1zX2ZyZWUoc3VtX2F0dHJzKTsKLQli bXNfZnJlZShrZXlfYXR0cnMpOwotCWJtc19mcmVlKGlkX2F0dHJzKTsKLQlibXNfZnJlZSht b2RpZmllZF9hdHRycyk7Ci0JYm1zX2ZyZWUoaW50ZXJlc3RpbmdfYXR0cnMpOworCWJtc19m cmVlKHJpZF9hdHRycyk7CisJYm1zX2ZyZWUoaWR4X2F0dHJzKTsKKwkvKiBtaXhfYXR0cnMg aXMgb3duZWQgYnkgdGhlIGNhbGxlciwgZG9uJ3QgZnJlZSBpdCAqLwogCiAJcmV0dXJuIFRN X09rOwogfQpAQCAtNDQ1MiwyOCArNDQyNSwxMTMgQEAgaGVhcF9hdHRyX2VxdWFscyhUdXBs ZURlc2MgdHVwZGVzYywgaW50IGF0dHJudW0sIERhdHVtIHZhbHVlMSwgRGF0dW0gdmFsdWUy LAogfQogCiAvKgotICogQ2hlY2sgd2hpY2ggY29sdW1ucyBhcmUgYmVpbmcgdXBkYXRlZC4K LSAqCi0gKiBHaXZlbiBhbiB1cGRhdGVkIHR1cGxlLCBkZXRlcm1pbmUgKGFuZCByZXR1cm4g aW50byB0aGUgb3V0cHV0IGJpdG1hcHNldCksCi0gKiBmcm9tIHRob3NlIGxpc3RlZCBhcyBp bnRlcmVzdGluZywgdGhlIHNldCBvZiBjb2x1bW5zIHRoYXQgY2hhbmdlZC4KLSAqCi0gKiBo YXNfZXh0ZXJuYWwgaW5kaWNhdGVzIGlmIGFueSBvZiB0aGUgdW5tb2RpZmllZCBhdHRyaWJ1 dGVzIChmcm9tIHRob3NlCi0gKiBsaXN0ZWQgYXMgaW50ZXJlc3RpbmcpIG9mIHRoZSBvbGQg dHVwbGUgaXMgYSBtZW1iZXIgb2YgZXh0ZXJuYWxfY29scyBhbmQgaXMKLSAqIHN0b3JlZCBl eHRlcm5hbGx5LgorICogSE9UIHVwZGF0ZXMgYXJlIHBvc3NpYmxlIHdoZW4gZWl0aGVyOiBh KSB0aGVyZSBhcmUgbm8gbW9kaWZpZWQgaW5kZXhlZAorICogYXR0cmlidXRlcywgb3IgYikg dGhlIG1vZGlmaWVkIGF0dHJpYnV0ZXMgYXJlIGFsbCBvbiBzdW1tYXJpemluZyBpbmRleGVz LgorICogTGF0ZXIsIGluIGhlYXBfdXBkYXRlKCksIHdlIGNhbiBjaG9vc2UgdG8gcGVyZm9y bSBhIEhPVCB1cGRhdGUgaWYgdGhlcmUgaXMKKyAqIHNwYWNlIG9uIHRoZSBwYWdlIGZvciB0 aGUgbmV3IHR1cGxlIGFuZCB0aGUgZm9sbG93aW5nIGNvZGUgaGFzIGRldGVybWluZWQKKyAq IHRoYXQgSE9UIGlzIGFsbG93ZWQuCisgKi8KK2Jvb2wKK0hlYXBVcGRhdGVIb3RBbGxvd2Fi bGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAqbWl4X2F0dHJzLAorCQkJ CQkgICBib29sICpzdW1tYXJpemVkX29ubHkpCit7CisJYm9vbAkJaG90X2FsbG93ZWQ7CisK KwkvKgorCSAqIExldCdzIGJlIG9wdGltaXN0aWMgYW5kIHN0YXJ0IG9mZiBieSBhc3N1bWlu ZyB0aGUgYmVzdCBjYXNlLCBubyBpbmRleGVzCisJICogbmVlZCB1cGRhdGluZyBhbmQgSE9U IGlzIGFsbG93YWJsZS4KKwkgKi8KKwlob3RfYWxsb3dlZCA9IHRydWU7CisJKnN1bW1hcml6 ZWRfb25seSA9IGZhbHNlOworCisJLyoKKwkgKiBDaGVjayBmb3IgY2FzZSAoYSk7IHdoZW4g dGhlcmUgYXJlIG5vIG1vZGlmaWVkIGluZGV4IGF0dHJpYnV0ZXMgSE9UIGlzCisJICogYWxs b3dlZC4KKwkgKi8KKwlpZiAoYm1zX2lzX2VtcHR5KG1peF9hdHRycykpCisJCWhvdF9hbGxv d2VkID0gdHJ1ZTsKKwllbHNlCisJeworCQlCaXRtYXBzZXQgICpzdW1fYXR0cnMgPSBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQkJICAgSU5E RVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCk7CisKKwkJLyoKKwkJICogQXQgbGVhc3Qgb25l IGluZGV4IGF0dHJpYnV0ZSB3YXMgbW9kaWZpZWQsIGJ1dCBpcyB0aGlzIGNhc2UgKGIpCisJ CSAqIHdoZXJlIGFsbCB0aGUgbW9kaWZpZWQgaW5kZXggYXR0cmlidXRlcyBhcmUgb25seSB1 c2VkIGJ5CisJCSAqIHN1bW1hcml6aW5nIGluZGV4ZXM/ICBJZiB0aGF0J3MgdGhlIGNhc2Ug d2UgbmVlZCB0byB1cGRhdGUgdGhvc2UKKwkJICogaW5kZXhlcywgYnV0IHRoaXMgY2FuIGJl IGEgSE9UIHVwZGF0ZS4KKwkJICovCisJCWlmIChibXNfaXNfc3Vic2V0KG1peF9hdHRycywg c3VtX2F0dHJzKSkKKwkJeworCQkJaG90X2FsbG93ZWQgPSB0cnVlOworCQkJKnN1bW1hcml6 ZWRfb25seSA9IHRydWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogTm93IHdl IGtub3cgdGhhdCBvbmUgb3IgbW9yZSBpbmRleGVkIGF0dHJpYnV0ZSB3ZXJlIHVwZGF0ZWQg YW5kCisJCQkgKiB0aGF0IHRoZXJlIHdhcyBhdCBsZWFzdCBvbmUgb2YgdGhvc2UgYXR0cmli dXRlcyB3ZXJlIHJlZmVyZW5jZWQKKwkJCSAqIGJ5IGEgbm9uLXN1bW1hcml6aW5nIGluZGV4 LiBIT1QgaXMgbm90IGFsbG93ZWQuCisJCQkgKi8KKwkJCWhvdF9hbGxvd2VkID0gZmFsc2U7 CisJCX0KKworCQlibXNfZnJlZShzdW1fYXR0cnMpOworCX0KKworCXJldHVybiBob3RfYWxs b3dlZDsKK30KKworLyoKKyAqIElmIHdlJ3JlIG5vdCB1cGRhdGluZyBhbnkgImtleSIgYXR0 cmlidXRlcywgd2UgY2FuIGdyYWIgYSB3ZWFrZXIgbG9jayB0eXBlLgorICogVGhpcyBhbGxv d3MgZm9yIG1vcmUgY29uY3VycmVuY3kgd2hlbiB3ZSBhcmUgcnVubmluZyBzaW11bHRhbmVv dXNseSB3aXRoCisgKiBmb3JlaWduIGtleSBjaGVja3MuCisgKi8KK0xvY2tUdXBsZU1vZGUK K0hlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3Qg Qml0bWFwc2V0ICptaXhfYXR0cnMpCit7CisJTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSA9IExv Y2tUdXBsZUV4Y2x1c2l2ZTsKKworCUJpdG1hcHNldCAgKmtleV9hdHRycyA9IFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJCSAgIElOREVYX0FU VFJfQklUTUFQX0tFWSk7CisKKwlpZiAoIWJtc19vdmVybGFwKG1peF9hdHRycywga2V5X2F0 dHJzKSkKKwkJbG9ja21vZGUgPSBMb2NrVHVwbGVOb0tleUV4Y2x1c2l2ZTsKKworCWJtc19m cmVlKGtleV9hdHRycyk7CisKKwlyZXR1cm4gbG9ja21vZGU7Cit9CisKKy8qCisgKiBSZXR1 cm4gYSBCaXRtYXBzZXQgdGhhdCBjb250YWlucyB0aGUgc2V0IG9mIG1vZGlmaWVkIChjaGFu Z2VkKSBpbmRleGVkCisgKiBhdHRyaWJ1dGVzIGJldHdlZW4gb2xkdHVwIGFuZCBuZXd0dXAu CiAgKi8KIHN0YXRpYyBCaXRtYXBzZXQgKgotSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJl bGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJIEJpdG1hcHNldCAqaW50ZXJlc3RpbmdfY29scywK LQkJCQkJCSBCaXRtYXBzZXQgKmV4dGVybmFsX2NvbHMsCi0JCQkJCQkgSGVhcFR1cGxlIG9s ZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJCSBib29sICpoYXNfZXh0ZXJuYWwpCitI ZWFwVXBkYXRlTW9kSWR4QXR0cnMoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0 dXAsIEhlYXBUdXBsZSBuZXd0dXApCiB7CiAJaW50CQkJYXR0aWR4OwotCUJpdG1hcHNldCAg Km1vZGlmaWVkID0gTlVMTDsKKwlCaXRtYXBzZXQgICphdHRycywKKwkJCSAgICptaXhfYXR0 cnMgPSBOVUxMOwogCVR1cGxlRGVzYwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxh dGlvbik7CiAKKwkvKiBHZXQgdGhlIHNldCBvZiBhbGwgYXR0cmlidXRlcyBhY3Jvc3MgYWxs IGluZGV4ZXMgZm9yIHRoaXMgcmVsYXRpb24gKi8KKwlhdHRycyA9IFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKwor CS8qIE5vIGluZGV4ZWQgYXR0cmlidXRlcywgd2UncmUgZG9uZSAqLworCWlmIChibXNfaXNf ZW1wdHkoYXR0cnMpKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogVGhpcyBoZWFwIHVw ZGF0ZSBmdW5jdGlvbiBpcyB1c2VkIG91dHNpZGUgdGhlIGV4ZWN1dG9yIGFuZCBzbyB1bmxp a2UKKwkgKiBoZWFwYW1fdHVwbGVfdXBkYXRlKCkgd2hlcmUgdGhlcmUgaXMgUmVzdWx0UmVs SW5mbyBhbmQgRVN0YXRlIHRvCisJICogcHJvdmlkZSB0aGUgY29uY2lzZSBzZXQgb2YgYXR0 cmlidXRlcyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBtb2RpZmllZAorCSAqICh2aWEgRXhlY0dl dEFsbFVwZGF0ZWRDb2xzKCkpIHdlIHNpbXBseSBjaGVjayBhbGwgaW5kZXhlZCBhdHRyaWJ1 dGVzIHRvCisJICogZmluZCB0aGUgc3Vic2V0IHRoYXQgY2hhbmdlZCB2YWx1ZS4gIFRoYXQn cyB0aGUgIm1vZGlmaWVkIGluZGV4ZWQKKwkgKiBhdHRyaWJ1dGVzIiBvciAibWl4X2F0dHJz Ii4KKwkgKi8KIAlhdHRpZHggPSAtMTsKLQl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21l bWJlcihpbnRlcmVzdGluZ19jb2xzLCBhdHRpZHgpKSA+PSAwKQorCXdoaWxlICgoYXR0aWR4 ID0gYm1zX25leHRfbWVtYmVyKGF0dHJzLCBhdHRpZHgpKSA+PSAwKQogCXsKIAkJLyogYXR0 aWR4IGlzIHplcm8tYmFzZWQsIGF0dHJudW0gaXMgdGhlIG5vcm1hbCBhdHRyaWJ1dGUgbnVt YmVyICovCiAJCUF0dHJOdW1iZXIJYXR0cm51bSA9IGF0dGlkeCArIEZpcnN0TG93SW52YWxp ZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CkBAIC00NDg5LDcgKzQ1NDcsNyBAQCBIZWFwRGV0ZXJt aW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24sCiAJCSAqLwogCQlpZiAoYXR0cm51 bSA9PSAwKQogCQl7Ci0JCQltb2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBh dHRpZHgpOworCQkJbWl4X2F0dHJzID0gYm1zX2FkZF9tZW1iZXIobWl4X2F0dHJzLCBhdHRp ZHgpOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtNDUwMiw3ICs0NTYwLDcgQEAgSGVhcERl dGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAogCQl7CiAJCQlpZiAoYXR0 cm51bSAhPSBUYWJsZU9pZEF0dHJpYnV0ZU51bWJlcikKIAkJCXsKLQkJCQltb2RpZmllZCA9 IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBhdHRpZHgpOworCQkJCW1peF9hdHRycyA9IGJt c19hZGRfbWVtYmVyKG1peF9hdHRycywgYXR0aWR4KTsKIAkJCQljb250aW51ZTsKIAkJCX0K IAkJfQpAQCAtNDUxOCwyOSArNDU3NiwxMiBAQCBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8o UmVsYXRpb24gcmVsYXRpb24sCiAKIAkJaWYgKCFoZWFwX2F0dHJfZXF1YWxzKHR1cGRlc2Ms IGF0dHJudW0sIHZhbHVlMSwKIAkJCQkJCQkgIHZhbHVlMiwgaXNudWxsMSwgaXNudWxsMikp Ci0JCXsKLQkJCW1vZGlmaWVkID0gYm1zX2FkZF9tZW1iZXIobW9kaWZpZWQsIGF0dGlkeCk7 Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCS8qCi0JCSAqIE5vIG5lZWQgdG8gY2hlY2sgYXR0 cmlidXRlcyB0aGF0IGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5LiBOb3RlCi0JCSAqIHRo YXQgc3lzdGVtIGF0dHJpYnV0ZXMgY2FuJ3QgYmUgc3RvcmVkIGV4dGVybmFsbHkuCi0JCSAq LwotCQlpZiAoYXR0cm51bSA8IDAgfHwgaXNudWxsMSB8fAotCQkJVHVwbGVEZXNjQ29tcGFj dEF0dHIodHVwZGVzYywgYXR0cm51bSAtIDEpLT5hdHRsZW4gIT0gLTEpCi0JCQljb250aW51 ZTsKLQotCQkvKgotCQkgKiBDaGVjayBpZiB0aGUgb2xkIHR1cGxlJ3MgYXR0cmlidXRlIGlz IHN0b3JlZCBleHRlcm5hbGx5IGFuZCBpcyBhCi0JCSAqIG1lbWJlciBvZiBleHRlcm5hbF9j b2xzLgotCQkgKi8KLQkJaWYgKFZBUkFUVF9JU19FWFRFUk5BTCgodmFybGVuYSAqKSBEYXR1 bUdldFBvaW50ZXIodmFsdWUxKSkgJiYKLQkJCWJtc19pc19tZW1iZXIoYXR0aWR4LCBleHRl cm5hbF9jb2xzKSkKLQkJCSpoYXNfZXh0ZXJuYWwgPSB0cnVlOworCQkJbWl4X2F0dHJzID0g Ym1zX2FkZF9tZW1iZXIobWl4X2F0dHJzLCBhdHRpZHgpOwogCX0KIAotCXJldHVybiBtb2Rp ZmllZDsKKwlibXNfZnJlZShhdHRycyk7CisKKwlyZXR1cm4gbWl4X2F0dHJzOwogfQogCiAv KgpAQCAtNDU1MiwxNyArNDU5MywxMDggQEAgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJl bGF0aW9uIHJlbGF0aW9uLAogICogdmlhIGVyZXBvcnQoKS4KICAqLwogdm9pZAotc2ltcGxl X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEg Km90aWQsIEhlYXBUdXBsZSB0dXAsCitzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVs YXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cGxlLAog CQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQogewogCVRNX1Jlc3Vs dAlyZXN1bHQ7CiAJVE1fRmFpbHVyZURhdGEgdG1mZDsKIAlMb2NrVHVwbGVNb2RlIGxvY2tt b2RlOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCUJ1ZmZlckhlYXBUdXBsZVRhYmxlU2xv dCAqYnNsb3Q7CisJSGVhcFR1cGxlCW9sZHR1cDsKKwlib29sCQlzaG91bGRGcmVlID0gdHJ1 ZTsKKwlCaXRtYXBzZXQgICppZHhfYXR0cnMsCisJCQkgICAqbWl4X2F0dHJzOworCWJvb2wJ CWhvdF9hbGxvd2VkLAorCQkJCXN1bW1hcml6ZWRfb25seTsKKwlCdWZmZXIJCWJ1ZmZlcjsK IAotCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXAsCi0JCQkJCQkg R2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgSW52YWxpZFNuYXBzaG90LAotCQkJCQkJIHRy dWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKLQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCB1 cGRhdGVfaW5kZXhlcyk7CisJQXNzZXJ0KEl0ZW1Qb2ludGVySXNWYWxpZChvdGlkKSk7CisK KwkvKgorCSAqIEZldGNoIHRoaXMgYml0bWFwIG9mIGludGVyZXN0aW5nIGF0dHJpYnV0ZXMg ZnJvbSByZWxjYWNoZSBiZWZvcmUKKwkgKiBvYnRhaW5pbmcgYSBidWZmZXIgbG9jayBiZWNh dXNlIGlmIHdlIGFyZSBkb2luZyBhbiB1cGRhdGUgb24gb25lIG9mIHRoZQorCSAqIHJlbGV2 YW50IHN5c3RlbSBjYXRhbG9ncyB3ZSBjb3VsZCBkZWFkbG9jayBpZiB3ZSB0cnkgdG8gZmV0 Y2ggdGhlbQorCSAqIGxhdGVyIG9uLiBSZWxjYWNoZSB3aWxsIHJldHVybiBjb3BpZXMgb2Yg ZWFjaCBiaXRtYXAsIHNvIHdlIG5lZWQgbm90CisJICogd29ycnkgYWJvdXQgcmVsY2FjaGUg Zmx1c2ggaGFwcGVuaW5nIG1pZHdheSB0aHJvdWdoIHRoaXMgb3BlcmF0aW9uLgorCSAqLwor CWlkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRF WF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKworCUlOSkVDVElPTl9QT0lOVCgiaGVhcF91cGRh dGUtYmVmb3JlLXBpbiIsIE5VTEwpOworCisJLyoKKwkgKiBUbyB1cGRhdGUgYSBoZWFwIHR1 cGxlIHdlIG5lZWQgdG8gZmluZCB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQKKwkgKiBh dHRyaWJ1dGVzICgibWl4X2F0dHJzIikgc28gYXMgdG8gc2VlIGlmIGEgSE9UIHVwZGF0ZSBp cyBhbGxvd2FibGUgb3IKKwkgKiBub3QuICBXaGVuIHVwZGF0aW5nIGhlYXAgdHVwbGVzIHZp YSBleGVjdXRpb24gb2YgVVBEQVRFIHN0YXRlbWVudHMgdGhpcworCSAqIHNldCBpcyBjb25z dHJ1Y3RlZCBiZWZvcmUgY2FsbGluZyBpbnRvIHRoZSB0YWJsZSBBTSdzIHR1cGxlX3VwZGF0 ZSgpCisJICogZnVuY3Rpb24gYnkgdGhlIGZ1bmN0aW9uIEV4ZWNVcGRhdGVNb2RJZHhBdHRy cygpIHdoaWNoIGNvbXBhcmVzIHRoZQorCSAqIG9sZC9uZXcgVHVwbGVUYWJsZVNsb3RzLiAg SG93ZXZlciwgaGVyZSB3ZSBoYXZlIHRoZSBvbGQgVElEIGFuZCB0aGUgbmV3CisJICogdHVw bGUsIG5vdCB0d28gVHVwbGVUYWJsZVNsb3RzLCBidXQgd2Ugc3RpbGwgbmVlZCB0byBjb25z dHJ1Y3QgYSBzaW1sYXIKKwkgKiBiaXRtYXAgc28gYXMgdG8gYmUgYWJsZSB0byBrbm93IGlm IEhPVCB1cGRhdGVzIGFyZSBhbGxvd2VkIG9yIG5vdC4gIFRvCisJICogZG8gdGhhdCB3ZSBm aXJzdCBoYXZlIHRvIGZldGNoIHRoZSBvbGQgdHVwbGUgaXRzZWxmLiAgQmVjYXVzZQorCSAq IGhlYXBhbV9mZXRjaF9yb3dfdmVyc2lvbigpIGlzIHN0YXRpYywgd2UgaGF2ZSB0byByZXBs aWNhdGUgdGhhdCBjb2RlCisJICogaGVyZS4gVGhpcyBpcyBhIGJpdCByZXBldGl0aXZlIGJl Y2F1c2UgaGVhcF91cGRhdGUoKSB3aWxsIGFnYWluIGZpbmQKKwkgKiBhbmQgZm9ybSB0aGUg b2xkIEhlYXBUdXBsZSBmcm9tIHRoZSBvbGQgVElEIGFuZCBpbiBtb3N0IGNhc2VzIHRoZQor CSAqIGNhbGxlcnMgKGlnbm9yaW5nIGV4dGVuc2lvbnMsIGFsd2F5cyBjYXRhbG9nIHR1cGxl IHVwZGF0ZXMpIGFscmVhZHkgaGFkCisJICogdGhlIHNldCBvZiBjaGFuZ2VkIGF0dHJpYnV0 ZXMgKGUuZy4gdGhlICJyZXBsYWNlcyIgYXJyYXkpLCBidXQgZm9yIG5vdworCSAqIHRoaXMg bWlub3IgcmVwZXRpdGlvbiBvZiB3b3JrIGlzIG5lY2Vzc2FyeS4KKwkgKi8KKworCXNsb3Qg PSBNYWtlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbiksICZUVFNP cHNCdWZmZXJIZWFwVHVwbGUpOworCWJzbG90ID0gKEJ1ZmZlckhlYXBUdXBsZVRhYmxlU2xv dCAqKSBzbG90OworCisJLyoKKwkgKiBTZXQgdGhlIFRJRCBpbiB0aGUgc2xvdCBhbmQgdGhl biBmZXRjaCB0aGUgb2xkIHR1cGxlIHNvIHdlIGNhbiBleGFtaW5lCisJICogaXQKKwkgKi8K Kwlic2xvdC0+YmFzZS50dXBkYXRhLnRfc2VsZiA9ICpvdGlkOworCWlmICghaGVhcF9mZXRj aChyZWxhdGlvbiwgU25hcHNob3RBbnksICZic2xvdC0+YmFzZS50dXBkYXRhLCAmYnVmZmVy LCBmYWxzZSkpCisJeworCQkvKgorCQkgKiBoZWFwX3VwZGF0ZSgpIGNoZWNrcyBmb3IgIUl0 ZW1JZElzTm9ybWFsKGxwKSBhbmQgd2lsbCByZXR1cm4gZmFsc2UKKwkJICogaW4gdGhvc2Ug Y2FzZXMuCisJCSAqLworCQlBc3NlcnQoUmVsYXRpb25TdXBwb3J0c1N5c0NhY2hlKFJlbGF0 aW9uR2V0UmVsaWQocmVsYXRpb24pKSk7CisKKwkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9u ZTsKKworCQkvKiBtaXhfYXR0cnMgbm90IHlldCBpbml0aWFsaXplZCAqLworCQlibXNfZnJl ZShpZHhfYXR0cnMpOworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwor CisJCWVsb2coRVJST1IsICJ0dXBsZSBjb25jdXJyZW50bHkgZGVsZXRlZCIpOworCisJCXJl dHVybjsKKwl9CisKKwlBc3NlcnQoYnVmZmVyICE9IEludmFsaWRCdWZmZXIpOworCisJLyog U3RvcmUgaW4gc2xvdCwgdHJhbnNmZXJyaW5nIGV4aXN0aW5nIHBpbiAqLworCUV4ZWNTdG9y ZVBpbm5lZEJ1ZmZlckhlYXBUdXBsZSgmYnNsb3QtPmJhc2UudHVwZGF0YSwgc2xvdCwgYnVm ZmVyKTsKKwlvbGR0dXAgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIGZhbHNlLCAm c2hvdWxkRnJlZSk7CisKKwltaXhfYXR0cnMgPSBIZWFwVXBkYXRlTW9kSWR4QXR0cnMocmVs YXRpb24sIG9sZHR1cCwgdHVwbGUpOworCWxvY2ttb2RlID0gSGVhcFVwZGF0ZURldGVybWlu ZUxvY2ttb2RlKHJlbGF0aW9uLCBtaXhfYXR0cnMpOworCWhvdF9hbGxvd2VkID0gSGVhcFVw ZGF0ZUhvdEFsbG93YWJsZShyZWxhdGlvbiwgbWl4X2F0dHJzLCAmc3VtbWFyaXplZF9vbmx5 KTsKKworCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgR2V0 Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKKwkJCQkJCSBJbnZhbGlkU25hcHNob3QsIHRydWUg Lyogd2FpdCBmb3IgY29tbWl0ICovICwKKwkJCQkJCSAmdG1mZCwgbG9ja21vZGUsIG1peF9h dHRycywgaG90X2FsbG93ZWQpOworCisJaWYgKHNob3VsZEZyZWUpCisJCWhlYXBfZnJlZXR1 cGxlKG9sZHR1cCk7CisKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwor CWJtc19mcmVlKGlkeF9hdHRycyk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIG5ldyBp bmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBsZQorCSAqCisJICogSWYgdGhl IHVwZGF0ZSBpcyBub3QgSE9ULCB3ZSBtdXN0IHVwZGF0ZSBhbGwgaW5kZXhlcy4gSWYgdGhl IHVwZGF0ZSBpcworCSAqIEhPVCwgaXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1h cml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVyCisJICogdXBkYXRlIG9ubHkgc3VtbWFyaXpl ZCBpbmRleGVzLCBvciBub25lIGF0IGFsbC4KKwkgKi8KKwkqdXBkYXRlX2luZGV4ZXMgPSBU VV9Ob25lOwogCXN3aXRjaCAocmVzdWx0KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6 CkBAIC00NTcyLDYgKzQ3MDQsMTAgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJl bGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAog CQljYXNlIFRNX09rOgogCQkJLyogZG9uZSBzdWNjZXNzZnVsbHkgKi8KKwkJCWlmICghSGVh cFR1cGxlSXNIZWFwT25seSh0dXBsZSkpCisJCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfQWxs OworCQkJZWxzZSBpZiAoc3VtbWFyaXplZF9vbmx5KQorCQkJCSp1cGRhdGVfaW5kZXhlcyA9 IFRVX1N1bW1hcml6aW5nOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBUTV9VcGRhdGVkOgpAQCAt NDU4OCw3ICs0NzI0LDYgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAl9CiB9CiAK LQogLyoKICAqIFJldHVybiB0aGUgTXVsdGlYYWN0U3RhdHVzIGNvcnJlc3BvbmRpbmcgdG8g dGhlIGdpdmVuIHR1cGxlIGxvY2sgbW9kZS4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggM2ZmMzZmNTliZjguLjQ2MDBhZjYxNzkzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTI3LDcg KzI3LDYgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc3luY3NjYW4uaCIKICNpbmNsdWRlICJhY2Nl c3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy90c21hcGkuaCIKLSNpbmNsdWRlICJh Y2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgpA QCAtNDQsNiArNDMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNp bmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKIAogc3RhdGljIHZvaWQgcmVmb3JtX2FuZF9yZXdyaXRlX3R1cGxlKEhlYXBUdXBsZSB0 dXBsZSwKQEAgLTMxNiwxOSArMzE2LDI2IEBAIGhlYXBhbV90dXBsZV9kZWxldGUoUmVsYXRp b24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIHRpZCwgQ29tbWFuZElkIGNpZCwKIHN0YXRpYyBU TV9SZXN1bHQKIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Q b2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQlDb21tYW5kSWQgY2lk LCBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVjaywKLQkJCQkJYm9vbCB3 YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwKLQkJCQkJTG9ja1R1cGxlTW9kZSAqbG9ja21v ZGUsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJCQlib29sIHdhaXQs IFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKKwkJCQkJ Y29uc3QgQml0bWFwc2V0ICptaXhfYXR0cnMsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9p bmRleGVzKQogewogCWJvb2wJCXNob3VsZEZyZWUgPSB0cnVlOwogCUhlYXBUdXBsZQl0dXBs ZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgdHJ1ZSwgJnNob3VsZEZyZWUpOwor CWJvb2wJCWhvdF9hbGxvd2VkOworCWJvb2wJCXN1bW1hcml6ZWRfb25seTsKIAlUTV9SZXN1 bHQJcmVzdWx0OwogCisJQXNzZXJ0KEl0ZW1Qb2ludGVySXNWYWxpZChvdGlkKSk7CisKKwlo b3RfYWxsb3dlZCA9IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUocmVsYXRpb24sIG1peF9hdHRy cywgJnN1bW1hcml6ZWRfb25seSk7CisJKmxvY2ttb2RlID0gSGVhcFVwZGF0ZURldGVybWlu ZUxvY2ttb2RlKHJlbGF0aW9uLCBtaXhfYXR0cnMpOworCiAJLyogVXBkYXRlIHRoZSB0dXBs ZSB3aXRoIHRhYmxlIG9pZCAqLwogCXNsb3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0 UmVsaWQocmVsYXRpb24pOwogCXR1cGxlLT50X3RhYmxlT2lkID0gc2xvdC0+dHRzX3RhYmxl T2lkOwogCiAJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cGxlLCBj aWQsIGNyb3NzY2hlY2ssIHdhaXQsCi0JCQkJCQkgdG1mZCwgbG9ja21vZGUsIHVwZGF0ZV9p bmRleGVzKTsKKwkJCQkJCSB0bWZkLCAqbG9ja21vZGUsIG1peF9hdHRycywgaG90X2FsbG93 ZWQpOwogCUl0ZW1Qb2ludGVyQ29weSgmdHVwbGUtPnRfc2VsZiwgJnNsb3QtPnR0c190aWQp OwogCiAJLyoKQEAgLTM0MSwxNiArMzQ4LDE3IEBAIGhlYXBhbV90dXBsZV91cGRhdGUoUmVs YXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90 LAogCSAqIEhPVCwgaXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQgY29s dW1ucywgc28gd2UgZWl0aGVyCiAJICogdXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRleGVz LCBvciBub25lIGF0IGFsbC4KIAkgKi8KLQlpZiAocmVzdWx0ICE9IFRNX09rKQorCSp1cGRh dGVfaW5kZXhlcyA9IFRVX05vbmU7CisJaWYgKHJlc3VsdCA9PSBUTV9PaykKIAl7Ci0JCUFz c2VydCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfTm9uZSk7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9 IFRVX05vbmU7CisJCWlmIChIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cGxlKSkKKwkJeworCQkJ aWYgKHN1bW1hcml6ZWRfb25seSkKKwkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJp emluZzsKKwkJfQorCQllbHNlCisJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9BbGw7CiAJfQot CWVsc2UgaWYgKCFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cGxlKSkKLQkJQXNzZXJ0KCp1cGRh dGVfaW5kZXhlcyA9PSBUVV9BbGwpOwotCWVsc2UKLQkJQXNzZXJ0KCgqdXBkYXRlX2luZGV4 ZXMgPT0gVFVfU3VtbWFyaXppbmcpIHx8Ci0JCQkgICAoKnVwZGF0ZV9pbmRleGVzID09IFRV X05vbmUpKTsKIAogCWlmIChzaG91bGRGcmVlKQogCQlwZnJlZSh0dXBsZSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYwppbmRleCBkZmRhMWFmNDEyZS4uNDJhY2Q1YjE3YTkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMzU5LDYgKzM1OSw3IEBA IHZvaWQKIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9p bnRlciBvdGlkLAogCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCSAgU25h cHNob3Qgc25hcHNob3QsCisJCQkJCQkgIGNvbnN0IEJpdG1hcHNldCAqbWl4X2F0dHJzLAog CQkJCQkJICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlUTV9SZXN1 bHQJcmVzdWx0OwpAQCAtMzY5LDcgKzM3MCw5IEBAIHNpbXBsZV90YWJsZV90dXBsZV91cGRh dGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQlHZXRDdXJyZW50 Q29tbWFuZElkKHRydWUpLAogCQkJCQkJCQlzbmFwc2hvdCwgSW52YWxpZFNuYXBzaG90LAog CQkJCQkJCQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkJCSZ0bWZkLCAm bG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJJnRtZmQsICZsb2NrbW9kZSwK KwkJCQkJCQkJbWl4X2F0dHJzLAorCQkJCQkJCQl1cGRhdGVfaW5kZXhlcyk7CiAKIAlzd2l0 Y2ggKHJlc3VsdCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmln Z2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKaW5kZXggOThkNDAyYzBh M2IuLjY0ZWZhNTVkZmUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmln Z2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC0yOTc4LDYg KzI5NzgsNyBAQCBFeGVjQlJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3Rh dGUgKmVwcXN0YXRlLAogCQkJCQkgYm9vbCBpc19tZXJnZV91cGRhdGUpCiB7CiAJVHJpZ2dl ckRlc2MgKnRyaWdkZXNjID0gcmVsaW5mby0+cmlfVHJpZ0Rlc2M7CisJVHVwbGVEZXNjCXR1 cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYyk7CiAJ VHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QgPSBFeGVjR2V0VHJpZ2dlck9sZFNsb3QoZXN0YXRl LCByZWxpbmZvKTsKIAlIZWFwVHVwbGUJbmV3dHVwbGUgPSBOVUxMOwogCUhlYXBUdXBsZQl0 cmlndHVwbGU7CkBAIC0yOTg1LDcgKzI5ODYsOSBAQCBFeGVjQlJVcGRhdGVUcmlnZ2VycyhF U3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCWJvb2wJCXNob3VsZF9mcmVl X25ldyA9IGZhbHNlOwogCVRyaWdnZXJEYXRhIExvY1RyaWdnZXJEYXRhID0gezB9OwogCWlu dAkJCWk7Ci0JQml0bWFwc2V0ICAqdXBkYXRlZENvbHM7CisJQml0bWFwc2V0ICAqdXBkYXRl ZENvbHMgPSBOVUxMOworCUJpdG1hcHNldCAgKnJlbWFpbmluZ0NvbHMgPSBOVUxMOworCUJp dG1hcHNldCAgKm1vZGlmaWVkQ29sczsKIAlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlOwogCiAJ LyogRGV0ZXJtaW5lIGxvY2sgbW9kZSB0byB1c2UgKi8KQEAgLTMxMjcsNiArMzEzMCwyMSBA QCBFeGVjQlJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0 YXRlLAogCWlmIChzaG91bGRfZnJlZV90cmlnKQogCQloZWFwX2ZyZWV0dXBsZSh0cmlndHVw bGUpOwogCisJLyoKKwkgKiBCZWZvcmUgVVBEQVRFIHRyaWdnZXJzIG1heSBoYXZlIHVwZGF0 ZWQgYXR0cmlidXRlcyBub3Qga25vd24gdG8KKwkgKiBFeGVjR2V0QWxsVXBkYXRlZENvbHVt bnMoKSB1c2luZyBoZWFwX21vZGlmeV90dXBsZSgpIG9yCisJICogaGVhcF9tb2RpZml5X3R1 cGxlX2J5X2NvbHMoKS4gIEZpbmQgYW5kIHJlY29yZCB0aG9zZSBub3cuCisJICovCisJcmVt YWluaW5nQ29scyA9IGJtc19hZGRfcmFuZ2UoTlVMTCwgMSAtIEZpcnN0TG93SW52YWxpZEhl YXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkJICAgdHVwZGVzYy0+bmF0dHMgLSBGaXJzdExv d0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwlyZW1haW5pbmdDb2xzID0gYm1zX2Rl bF9tZW1iZXJzKHJlbWFpbmluZ0NvbHMsIHVwZGF0ZWRDb2xzKTsKKwltb2RpZmllZENvbHMg PSBFeGVjQ29tcGFyZVNsb3RBdHRycyh0dXBkZXNjLCByZW1haW5pbmdDb2xzLCBvbGRzbG90 LCBuZXdzbG90KTsKKwlyZWxpbmZvLT5yaV9leHRyYVVwZGF0ZWRDb2xzID0KKwkJYm1zX2Fk ZF9tZW1iZXJzKHJlbGluZm8tPnJpX2V4dHJhVXBkYXRlZENvbHMsIG1vZGlmaWVkQ29scyk7 CisKKwlibXNfZnJlZShyZW1haW5pbmdDb2xzKTsKKwlibXNfZnJlZShtb2RpZmllZENvbHMp OworCiAJcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxp Y2F0aW9uLmMKaW5kZXggMjQ5N2VlN2VkYzUuLmMyZTc3NzQwZTc2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1 ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgpAQCAtOTA2LDYgKzkwNyw3IEBAIEV4ZWNT aW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCWJv b2wJCXNraXBfdHVwbGUgPSBmYWxzZTsKIAlSZWxhdGlvbglyZWwgPSByZXN1bHRSZWxJbmZv LT5yaV9SZWxhdGlvbkRlc2M7CiAJSXRlbVBvaW50ZXIgdGlkID0gJihzZWFyY2hzbG90LT50 dHNfdGlkKTsKKwlCaXRtYXBzZXQgICptaXhfYXR0cnM7CiAKIAkvKgogCSAqIFdlIHN1cHBv cnQgb25seSBub24tc3lzdGVtIHRhYmxlcywgd2l0aApAQCAtOTQ0LDggKzk0NiwxMSBAQCBF eGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywK IAkJaWYgKHJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKIAkJCUV4ZWNQYXJ0aXRpb25D aGVjayhyZXN1bHRSZWxJbmZvLCBzbG90LCBlc3RhdGUsIHRydWUpOwogCisJCW1peF9hdHRy cyA9IEV4ZWNVcGRhdGVNb2RJZHhBdHRycyhyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCSAg ZXN0YXRlLCBzZWFyY2hzbG90LCBzbG90KTsKKwogCQlzaW1wbGVfdGFibGVfdHVwbGVfdXBk YXRlKHJlbCwgdGlkLCBzbG90LCBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICZ1 cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSAgbWl4X2F0dHJzLCAmdXBkYXRlX2luZGV4ZXMp OwogCiAJCWNvbmZsaWN0aW5kZXhlcyA9IHJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RB cmJpdGVySW5kZXhlczsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1R1cGxlcy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jCmluZGV4IGI3 NjhlYWU5ZTUzLi4xMDY0ZWJlODQ1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1R1cGxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMu YwpAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK KyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2V4cGFuZGVkZGF0 dW0uaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90 eXBjYWNoZS5oIgpAQCAtMTkyOSw2ICsxOTMwLDgzIEBAIEV4ZWNGZXRjaFNsb3RIZWFwVHVw bGVEYXR1bShUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAlyZXR1cm4gcmV0OwogfQogCisvKgor ICogRXhlY0NvbXBhcmVTbG90QXR0cnMKKyAqCisgKiBDb21wYXJlIHRoZSBzdWJzZXQgb2Yg YXR0cmlidXRlcyBpbiBhdHRycyBiZXd0d2VlbiBUdXBsZVRhYmxlU2xvdHMgdG8gZGV0ZWN0 CisgKiB3aGljaCBhdHRyaWJ1dGVzIGhhdmUgY2hhbmdlZC4KKyAqCisgKiBSZXR1cm5zIGEg Qml0bWFwc2V0IG9mIGF0dHJpYnV0ZSBpbmRpY2VzICh1c2luZworICogRmlyc3RMb3dJbnZh bGlkSGVhcEF0dHJpYnV0ZU51bWJlciBjb252ZW50aW9uKSB0aGF0IGRpZmZlciBiZXR3ZWVu IHRoZSB0d28KKyAqIHNsb3RzLgorICovCitCaXRtYXBzZXQgKgorRXhlY0NvbXBhcmVTbG90 QXR0cnMoVHVwbGVEZXNjIHR1cGRlc2MsIGNvbnN0IEJpdG1hcHNldCAqYXR0cnMsCisJCQkJ CSBUdXBsZVRhYmxlU2xvdCAqczEsIFR1cGxlVGFibGVTbG90ICpzMikKK3sKKwlpbnQJCQlh dHRpZHggPSAtMTsKKwlCaXRtYXBzZXQgICptb2RpZmllZCA9IE5VTEw7CisKKwkvKiBYWFgg d2hhdCBpZiBzbG90cyBkb24ndCBzaGFyZSB0aGUgc2FtZSB0dXBsZURlc2NyaXB0b3IuLi4g Ki8KKwkvKiBBc3NlcnQoczEtPnR0c190dXBsZURlc2NyaXB0b3IgPT0gczItPnR0c190dXBs ZURlc2NyaXB0b3IpOyAqLworCisJd2hpbGUgKChhdHRpZHggPSBibXNfbmV4dF9tZW1iZXIo YXR0cnMsIGF0dGlkeCkpID49IDApCisJeworCQkvKiBhdHRpZHggaXMgemVyby1iYXNlZCwg YXR0cm51bSBpcyB0aGUgbm9ybWFsIGF0dHJpYnV0ZSBudW1iZXIgKi8KKwkJQXR0ck51bWJl cglhdHRybnVtID0gYXR0aWR4ICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJl cjsKKwkJRGF0dW0JCXZhbHVlMSwKKwkJCQkJdmFsdWUyOworCQlib29sCQludWxsMSwKKwkJ CQkJbnVsbDI7CisJCUNvbXBhY3RBdHRyaWJ1dGUgKmF0dDsKKworCQkvKgorCQkgKiBJZiBp dCdzIGEgd2hvbGUtdHVwbGUgcmVmZXJlbmNlLCBzYXkgIm5vdCBlcXVhbCIuICBJdCdzIG5v dCByZWFsbHkKKwkJICogd29ydGggc3VwcG9ydGluZyB0aGlzIGNhc2UsIHNpbmNlIGl0IGNv dWxkIG9ubHkgc3VjY2VlZCBhZnRlciBhCisJCSAqIG5vLW9wIHVwZGF0ZSwgd2hpY2ggaXMg aGFyZGx5IGEgY2FzZSB3b3J0aCBvcHRpbWl6aW5nIGZvci4KKwkJICovCisJCWlmIChhdHRy bnVtID09IDApCisJCXsKKwkJCW1vZGlmaWVkID0gYm1zX2FkZF9tZW1iZXIobW9kaWZpZWQs IGF0dGlkeCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIExpa2V3aXNlLCBh dXRvbWF0aWNhbGx5IHNheSAibm90IGVxdWFsIiBmb3IgYW55IHN5c3RlbSBhdHRyaWJ1dGUK KwkJICogb3RoZXIgdGhhbiB0YWJsZU9JRDsgd2UgY2Fubm90IGV4cGVjdCB0aGVzZSB0byBi ZSBjb25zaXN0ZW50IGluIGEKKwkJICogSE9UIGNoYWluLCBvciBldmVuIHRvIGJlIHNldCBj b3JyZWN0bHkgeWV0IGluIHRoZSBuZXcgdHVwbGUuCisJCSAqLworCQlpZiAoYXR0cm51bSA8 IDApCisJCXsKKwkJCWlmIChhdHRybnVtICE9IFRhYmxlT2lkQXR0cmlidXRlTnVtYmVyKQor CQkJeworCQkJCW1vZGlmaWVkID0gYm1zX2FkZF9tZW1iZXIobW9kaWZpZWQsIGF0dGlkeCk7 CisJCQkJY29udGludWU7CisJCQl9CisJCX0KKworCQlhdHQgPSBUdXBsZURlc2NDb21wYWN0 QXR0cih0dXBkZXNjLCBhdHRybnVtIC0gMSk7CisJCXZhbHVlMSA9IHNsb3RfZ2V0YXR0cihz MSwgYXR0cm51bSwgJm51bGwxKTsKKwkJdmFsdWUyID0gc2xvdF9nZXRhdHRyKHMyLCBhdHRy bnVtLCAmbnVsbDIpOworCisJCS8qIEEgY2hhbmdlIHRvL2Zyb20gTlVMTCwgc28gbm90IGVx dWFsICovCisJCWlmIChudWxsMSAhPSBudWxsMikKKwkJeworCQkJbW9kaWZpZWQgPSBibXNf YWRkX21lbWJlcihtb2RpZmllZCwgYXR0aWR4KTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJ LyogQm90aCBOVUxMLCBubyBjaGFuZ2UvdW5tb2RpZmllZCAqLworCQlpZiAobnVsbDIpCisJ CQljb250aW51ZTsKKworCQlpZiAoIWRhdHVtX2ltYWdlX2VxKHZhbHVlMSwgdmFsdWUyLCBh dHQtPmF0dGJ5dmFsLCBhdHQtPmF0dGxlbikpCisJCQltb2RpZmllZCA9IGJtc19hZGRfbWVt YmVyKG1vZGlmaWVkLCBhdHRpZHgpOworCX0KKworCXJldHVybiBtb2RpZmllZDsKK30KKwog LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoJCQkJY29udmVuaWVuY2UgaW5pdGlhbGl6YXRpb24gcm91dGlu ZXMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMKaW5kZXggNzkzYzc2ZDRmODIuLjQ5MjdmYzg4ZTYxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMTcsNiArMTcsNyBAQAogICoJCUV4ZWNNb2Rp ZnlUYWJsZQkJLSByZXRyaWV2ZSB0aGUgbmV4dCB0dXBsZSBmcm9tIHRoZSBub2RlCiAgKgkJ RXhlY0VuZE1vZGlmeVRhYmxlCS0gc2h1dCBkb3duIHRoZSBNb2RpZnlUYWJsZSBub2RlCiAg KgkJRXhlY1JlU2Nhbk1vZGlmeVRhYmxlIC0gcmVzY2FuIHRoZSBNb2RpZnlUYWJsZSBub2Rl CisgKgkJRXhlY1VwZGF0ZU1vZElkeEF0dHJzIC0gZmluZCBzZXQgb2YgdXBkYXRlZCBpbmRl eGVkIGNvbHVtbnMKICAqCiAgKgkgTk9URVMKICAqCQlUaGUgTW9kaWZ5VGFibGUgbm9kZSBy ZWNlaXZlcyBpbnB1dCBmcm9tIGl0cyBvdXRlclBsYW4sIHdoaWNoIGlzCkBAIC01NCw2ICs1 NSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3RhYmxlYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvdHVwZGVzYy5oIgogI2luY2x1 ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKQEAgLTE4OCw2ICsxOTAsNjggQEAg c3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjTWVyZ2VOb3RNYXRjaGVkKE1vZGlmeVRhYmxl Q29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgICBSZXN1bHRSZWxJbmZvICpyZXN1bHRS ZWxJbmZvLAogCQkJCQkJCQkJCSAgIGJvb2wgY2FuU2V0VGFnKTsKIAorLyoKKyAqIEV4ZWNV cGRhdGVNb2RJZHhBdHRycworICoKKyAqIEZpbmQgdGhlIHNldCBvZiBhdHRyaWJ1dGVzIHJl ZmVyZW5jZWQgYnkgdGhpcyByZWxhdGlvbiBhbmQgdXNlZCBpbiB0aGlzCisgKiBVUERBVEUg dGhhdCBub3cgZGlmZmVyIGluIHZhbHVlLiAgVGhpcyBpcyBkb25lIGJ5IHJldmlld2luZyBz bG90IGRhdHVtIHRoYXQKKyAqIGFyZSBpbiB0aGUgVVBEQVRFIHN0YXRtZW50IGFuZCBhcmUg a25vd24gdG8gYmUgcmVmZXJlbmNlZCBieSBhdCBsZWFzdCBvbmUKKyAqIGluZGV4IGluIHNv bWUgd2F5LiAgVGhpcyBzZXQgaXMgY2FsbGVkIHRoZSAibW9kaWZpZWQgaW5kZXhlZCBhdHRy aWJ1dGVzIiBvcgorICogIm1peF9hdHRycyIuICBBbiBvdmVybGFwIG9mIGEgc2luZ2xlIGlu ZGV4J3MgYXR0cmlidXRlcyBhbmQgdGhpcyAibWl4IiBzZXQKKyAqIHNpZ25hbHMgdGhhdCB0 aGUgYXR0cmlidXRlcyBpbiB0aGUgbmV3X3R0cyB1c2VkIHRvIGZvcm0gdGhlIGluZGV4IGRh dHVtIGhhdmUKKyAqIGNoYW5nZWQuCisgKgorICogUmV0dXJuIGEgQml0bWFwc2V0IHRoYXQg Y29udGFpbnMgdGhlIHNldCBvZiBtb2RpZmllZCAoY2hhbmdlZCkgaW5kZXhlZAorICogYXR0 cmlidXRlcyBiZXR3ZWVuIG9sZHR1cCBhbmQgbmV3dHVwLgorICoKKyAqIE5PVEU6IFRoZXJl IGlzIGEgc2ltbGFyIGZ1bmN0aW9uIGNhbGxlZCBIZWFwVXBkYXRlTW9kSUR4QXR0cnMoKSB0 aGF0IG9wZXJhdGVzCisgKiBvbiB0aGUgb2xkIFRJRCBhbmQgbmV3IEhlYXBUdXBsZSByYXRo ZXIgdGhhbiB0aGUgb2xkL25ldyBUdXBsZVRhYmxlU2xvdHMgYXMKKyAqIHRoaXMgZnVuY3Rp b24gZG9lcy4gIFRoZXNlIHR3byBmdW5jdGlvbnMgc2hvdWxkIG1pcnJvciBvbmUgYW5vdGhl ciB1bnRpbAorICogc29tZWRheSB3aGVuIGNhdGFsb2cgdHVwbGUgdXBkYXRlcyB0cmFjayB0 aGVpciBjaGFuZ2VzIGF2b2lkaW5nIHRoZSBuZWVkIHRvCisgKiByZS1kaXNjb3ZlciB0aGVt IGluIHNpbXBsZV9oZWFwX3VwZGF0ZSgpLgorICovCitCaXRtYXBzZXQgKgorRXhlY1VwZGF0 ZU1vZElkeEF0dHJzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCSAgRVN0 YXRlICplc3RhdGUsCisJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKm9sZF90dHMsCisJCQkJCSAg VHVwbGVUYWJsZVNsb3QgKm5ld190dHMpCit7CisJUmVsYXRpb24JcmVsYXRpb24gPSByZXN1 bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxh dGlvbkdldERlc2NyKHJlbGF0aW9uKTsKKwlCaXRtYXBzZXQgICphdHRycywKKwkJCSAgICpt aXhfYXR0cnMgPSBOVUxMOworCisJLyogSWYgbm8gaW5kZXhlcywgd2UncmUgZG9uZSAqLwor CWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID09IDApCisJCXJldHVybiBOVUxM OworCisJLyoKKwkgKiBHZXQgdGhlIHNldCBvZiBhbGwgYXR0cmlidXRlcyBhY3Jvc3MgYWxs IGluZGV4ZXMgZm9yIHRoaXMgcmVsYXRpb24gZnJvbQorCSAqIHRoZSByZWxjYWNoZSwgaXQg cmV0dXJucyB1cyBhIGNvcHkgb2YgdGhlIGJpdG1hcCBzbyB3ZSBjYW4gbW9kaWZ5IGl0Lgor CSAqLworCWF0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElO REVYX0FUVFJfQklUTUFQX0lOREVYRUQpOworCisJLyoKKwkgKiBGZXRjaCB0aGUgc2V0IG9m IGF0dHJpYnV0ZXMgZXhwbGljaXR5IFNFVCBpbiB0aGUgVVBEQVRFIHN0YXRlbWVudCBvcgor CSAqIHNldCBieSBhIGJlZm9yZSByb3cgdHJpZ2dlciAoZXZlbiBpZiBub3QgbWVudGlvbmVk IGluIHRoZSBTUUwpIGZyb20gdGhlCisJICogZXhlY3V0b3Igc3RhdGUgYW5kIHRoZW4gZmlu ZCB0aGUgaW50ZXJzZWN0aW9uIHdpdGggdGhlIGluZGV4ZWQKKwkgKiBhdHRyaWJ1dGVzLiAg QXR0cmlidXRlcyB0aGF0IGFyZSBTRVQgbWlnaHQgbm90IGNoYW5nZSB2YWx1ZSwgc28gd2Ug aGF2ZQorCSAqIHRvIGV4YW1pbmUgdGhlbSBmb3IgY2hhbmdlcy4KKwkgKi8KKwlhdHRycyA9 IGJtc19pbnRfbWVtYmVycyhhdHRycywgRXhlY0dldEFsbFVwZGF0ZWRDb2xzKHJlc3VsdFJl bEluZm8sIGVzdGF0ZSkpOworCisJLyoKKwkgKiBXaGVuIHRoZXJlIGFyZSBpbmRleGVkIGF0 dHJpYnV0ZXMgbWVudGlvbmVkIGluIHRoZSBVUERBVEUgdGhlbiB3ZSBuZWVkCisJICogdG8g ZmluZCB0aGUgc3Vic2V0IHRoYXQgY2hhbmdlZCB2YWx1ZS4gIFRoYXQncyB0aGUgIm1vZGlm aWVkIGluZGV4ZWQKKwkgKiBhdHRyaWJ1dGVzIiBvciAibWl4X2F0dHJzIi4KKwkgKi8KKwlp ZiAoIWJtc19pc19lbXB0eShhdHRycykpCisJCW1peF9hdHRycyA9IEV4ZWNDb21wYXJlU2xv dEF0dHJzKHR1cGRlc2MsIGF0dHJzLCBvbGRfdHRzLCBuZXdfdHRzKTsKKworCWJtc19mcmVl KGF0dHJzKTsKKworCXJldHVybiBtaXhfYXR0cnM7Cit9CiAKIC8qCiAgKiBWZXJpZnkgdGhh dCB0aGUgdHVwbGVzIHRvIGJlIHByb2R1Y2VkIGJ5IElOU0VSVCBtYXRjaCB0aGUKQEAgLTIx OTUsMTQgKzIyNTksMTcgQEAgRXhlY1VwZGF0ZVByZXBhcmVTbG90KFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCiAgKi8KIHN0YXRpYyBUTV9SZXN1bHQKIEV4ZWNVcGRhdGVBY3Qo TW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJ bmZvLAotCQkJICBJdGVtUG9pbnRlciB0dXBsZWlkLCBIZWFwVHVwbGUgb2xkdHVwbGUsIFR1 cGxlVGFibGVTbG90ICpzbG90LAotCQkJICBib29sIGNhblNldFRhZywgVXBkYXRlQ29udGV4 dCAqdXBkYXRlQ3h0KQorCQkJICBJdGVtUG9pbnRlciB0dXBsZWlkLCBIZWFwVHVwbGUgb2xk dHVwbGUsIFR1cGxlVGFibGVTbG90ICpvbGRTbG90LAorCQkJICBUdXBsZVRhYmxlU2xvdCAq c2xvdCwgYm9vbCBjYW5TZXRUYWcsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCkKIHsKIAlF U3RhdGUJICAgKmVzdGF0ZSA9IGNvbnRleHQtPmVzdGF0ZTsKIAlSZWxhdGlvbglyZXN1bHRS ZWxhdGlvbkRlc2MgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJYm9vbAkJ cGFydGl0aW9uX2NvbnN0cmFpbnRfZmFpbGVkOwogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAKKwkv KiBUaGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQgYXR0cmlidXRlcyB0aGF0IHRyaWdnZXIg bmV3IGluZGV4IGVudHJpZXMgKi8KKwlCaXRtYXBzZXQgICptaXhfYXR0cnMgPSBOVUxMOwor CiAJdXBkYXRlQ3h0LT5jcm9zc1BhcnRVcGRhdGUgPSBmYWxzZTsKIAogCS8qCkBAIC0yMzE5 LDcgKzIzODYsMTYgQEAgbHJlcGxhY2U6CiAJCUV4ZWNDb25zdHJhaW50cyhyZXN1bHRSZWxJ bmZvLCBzbG90LCBlc3RhdGUpOwogCiAJLyoKLQkgKiByZXBsYWNlIHRoZSBoZWFwIHR1cGxl CisJICogTmV4dCB1cCB3ZSBuZWVkIHRvIGZpbmQgb3V0IHRoZSBzZXQgb2YgaW5kZXhlZCBh dHRyaWJ1dGVzIHRoYXQgaGF2ZQorCSAqIGNoYW5nZWQgaW4gdmFsdWUgYW5kIHNob3VsZCB0 cmlnZ2VyIGEgbmV3IGluZGV4IHR1cGxlLiAgV2UgY291bGQgc3RhcnQKKwkgKiB3aXRoIHRo ZSBzZXQgb2YgdXBkYXRlZCBjb2x1bW5zIHZpYSBFeGVjR2V0VXBkYXRlZENvbHMoKSwgYnV0 IGlmIHdlIGRvCisJICogd2Ugd2lsbCBvdmVybG9vayBhdHRyaWJ1dGVzIGRpcmVjdGx5IG1v ZGlmaWVkIGJ5IGhlYXBfbW9kaWZ5X3R1cGxlKCkKKwkgKiB3aGljaCBhcmUgbm90IGtub3du IHRvIEV4ZWNHZXRVcGRhdGVkQ29scygpLgorCSAqLworCW1peF9hdHRycyA9IEV4ZWNVcGRh dGVNb2RJZHhBdHRycyhyZXN1bHRSZWxJbmZvLCBlc3RhdGUsIG9sZFNsb3QsIHNsb3QpOwor CisJLyoKKwkgKiBDYWxsIGludG8gdGhlIHRhYmxlIEFNIHRvIHVwZGF0ZSB0aGUgaGVhcCB0 dXBsZS4KIAkgKgogCSAqIE5vdGU6IGlmIGVzX2Nyb3NzY2hlY2tfc25hcHNob3QgaXNuJ3Qg SW52YWxpZFNuYXBzaG90LCB3ZSBjaGVjayB0aGF0CiAJICogdGhlIHJvdyB0byBiZSB1cGRh dGVkIGlzIHZpc2libGUgdG8gdGhhdCBzbmFwc2hvdCwgYW5kIHRocm93IGEKQEAgLTIzMzMs NiArMjQwOSw3IEBAIGxyZXBsYWNlOgogCQkJCQkJCQllc3RhdGUtPmVzX2Nyb3NzY2hlY2tf c25hcHNob3QsCiAJCQkJCQkJCXRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKIAkJCQkJ CQkJJmNvbnRleHQtPnRtZmQsICZ1cGRhdGVDeHQtPmxvY2ttb2RlLAorCQkJCQkJCQltaXhf YXR0cnMsCiAJCQkJCQkJCSZ1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMpOwogCiAJcmV0dXJu IHJlc3VsdDsKQEAgLTI1NTUsOCArMjYzMiw4IEBAIEV4ZWNVcGRhdGUoTW9kaWZ5VGFibGVD b250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkgKi8K IHJlZG9fYWN0OgogCQlsb2NrZWR0aWQgPSAqdHVwbGVpZDsKLQkJcmVzdWx0ID0gRXhlY1Vw ZGF0ZUFjdChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwgc2xv dCwKLQkJCQkJCQkgICBjYW5TZXRUYWcsICZ1cGRhdGVDeHQpOworCQlyZXN1bHQgPSBFeGVj VXBkYXRlQWN0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLCBv bGRTbG90LAorCQkJCQkJCSAgIHNsb3QsIGNhblNldFRhZywgJnVwZGF0ZUN4dCk7CiAKIAkJ LyoKIAkJICogSWYgRXhlY1VwZGF0ZUFjdCByZXBvcnRzIHRoYXQgYSBjcm9zcy1wYXJ0aXRp b24gdXBkYXRlIHdhcyBkb25lLApAQCAtMzQwNiw4ICszNDgzLDggQEAgbG1lcmdlX21hdGNo ZWQ6CiAJCQkJCUFzc2VydChvbGR0dXBsZSA9PSBOVUxMKTsKIAogCQkJCQlyZXN1bHQgPSBF eGVjVXBkYXRlQWN0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsCi0JCQkJCQkJ CQkJICAgTlVMTCwgbmV3c2xvdCwgY2FuU2V0VGFnLAotCQkJCQkJCQkJCSAgICZ1cGRhdGVD eHQpOworCQkJCQkJCQkJCSAgIE5VTEwsIHJlc3VsdFJlbEluZm8tPnJpX29sZFR1cGxlU2xv dCwKKwkJCQkJCQkJCQkgICBuZXdzbG90LCBjYW5TZXRUYWcsICZ1cGRhdGVDeHQpOwogCiAJ CQkJCS8qCiAJCQkJCSAqIEFzIGluIEV4ZWNVcGRhdGUoKSwgaWYgRXhlY1VwZGF0ZUFjdCgp IHJlcG9ydHMgdGhhdCBhCkBAIC00NTM5LDcgKzQ2MTYsNyBAQCBFeGVjTW9kaWZ5VGFibGUo UGxhblN0YXRlICpwc3RhdGUpCiAJCSAqIEZvciBVUERBVEUvREVMRVRFL01FUkdFLCBmZXRj aCB0aGUgcm93IGlkZW50aXR5IGluZm8gZm9yIHRoZSB0dXBsZQogCQkgKiB0byBiZSB1cGRh dGVkL2RlbGV0ZWQvbWVyZ2VkLiAgRm9yIGEgaGVhcCByZWxhdGlvbiwgdGhhdCdzIGEgVElE OwogCQkgKiBvdGhlcndpc2Ugd2UgbWF5IGhhdmUgYSB3aG9sZXJvdyBqdW5rIGF0dHIgdGhh dCBjYXJyaWVzIHRoZSBvbGQKLQkJICogdHVwbGUgaW4gdG90by4gIEtlZXAgdGhpcyBpbiBz dGVwIHdpdGggdGhlIHBhcnQgb2YKKwkJICogdHVwbGUgaW4gdG90YWwuICBLZWVwIHRoaXMg aW4gc3RlcCB3aXRoIHRoZSBwYXJ0IG9mCiAJCSAqIEV4ZWNJbml0TW9kaWZ5VGFibGUgdGhh dCBzZXRzIHVwIHJpX1Jvd0lkQXR0Tm8uCiAJCSAqLwogCQlpZiAob3BlcmF0aW9uID09IENN RF9VUERBVEUgfHwgb3BlcmF0aW9uID09IENNRF9ERUxFVEUgfHwKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jCmluZGV4IDZiNjM0YzlmZmYxLi5mMzA1MDVkOGFlMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC0yNDc1LDggKzI0NzUsOCBAQCBSZWxh dGlvbkRlc3Ryb3lSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgYm9vbCByZW1lbWJlcl90 dXBkZXNjKQogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9rZXlhdHRyKTsKIAlibXNfZnJlZShy ZWxhdGlvbi0+cmRfcGthdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaWRhdHRyKTsK LQlibXNfZnJlZShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyKTsKIAlibXNfZnJlZShy ZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOworCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9p bmRleGVkYXR0cik7CiAJaWYgKHJlbGF0aW9uLT5yZF9wdWJkZXNjKQogCQlwZnJlZShyZWxh dGlvbi0+cmRfcHViZGVzYyk7CiAJaWYgKHJlbGF0aW9uLT5yZF9vcHRpb25zKQpAQCAtNTI3 Niw4ICs1Mjc2LDggQEAgUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShSZWxhdGlvbiByZWxh dGlvbikKICAqCQkJCQkJCQkJKGJld2FyZTogZXZlbiBpZiBQSyBpcyBkZWZlcnJhYmxlISkK ICAqCUlOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWQlDb2x1bW5zIGluIHRoZSB0YWJs ZSdzIHJlcGxpY2EgaWRlbnRpdHkKICAqCQkJCQkJCQkJaW5kZXggKGVtcHR5IGlmIEZVTEwp Ci0gKglJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcJQ29sdW1ucyB0aGF0IGJsb2Nr IHVwZGF0ZXMgZnJvbSBiZWluZyBIT1QKLSAqCUlOREVYX0FUVFJfQklUTUFQX1NVTU1BUkla RUQJQ29sdW1ucyBpbmNsdWRlZCBpbiBzdW1tYXJpemluZyBpbmRleGVzCisgKglJTkRFWF9B VFRSX0JJVE1BUF9TVU1NQVJJWkVECUNvbHVtbnMgb25seSBpbmNsdWRlZCBpbiBzdW1tYXJp emluZyBpbmRleGVzCisgKglJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVECQlDb2x1bW5zIHJl ZmVyZW5jZWQgYnkgaW5kZXhlcwogICoKICAqIEF0dHJpYnV0ZSBudW1iZXJzIGFyZSBvZmZz ZXQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciBzbyB0aGF0CiAgKiB3 ZSBjYW4gaW5jbHVkZSBzeXN0ZW0gYXR0cmlidXRlcyAoZS5nLiwgT0lEKSBpbiB0aGUgYml0 bWFwIHJlcHJlc2VudGF0aW9uLgpAQCAtNTMwMCw4ICs1MzAwLDggQEAgUmVsYXRpb25HZXRJ bmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQg YXR0cktpbmQpCiAJQml0bWFwc2V0ICAqdWluZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdW5p cXVlIGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpwa2luZGV4YXR0cnM7CS8qIGNvbHVtbnMg aW4gdGhlIHByaW1hcnkgaW5kZXggKi8KIAlCaXRtYXBzZXQgICppZGluZGV4YXR0cnM7CS8q IGNvbHVtbnMgaW4gdGhlIHJlcGxpY2EgaWRlbnRpdHkgKi8KLQlCaXRtYXBzZXQgICpob3Ri bG9ja2luZ2F0dHJzOwkvKiBjb2x1bW5zIHdpdGggSE9UIGJsb2NraW5nIGluZGV4ZXMgKi8K LQlCaXRtYXBzZXQgICpzdW1tYXJpemVkYXR0cnM7CS8qIGNvbHVtbnMgd2l0aCBzdW1tYXJp emluZyBpbmRleGVzICovCisJQml0bWFwc2V0ICAqc3VtbWFyaXplZGF0dHJzOwkvKiBjb2x1 bW5zIG9ubHkgaW4gc3VtbWFyaXppbmcgaW5kZXhlcyAqLworCUJpdG1hcHNldCAgKmluZGV4 ZWRhdHRyczsJLyogY29sdW1ucyByZWZlcmVuY2VkIGJ5IGluZGV4ZXMgKi8KIAlMaXN0CSAg ICppbmRleG9pZGxpc3Q7CiAJTGlzdAkgICAqbmV3aW5kZXhvaWRsaXN0OwogCU9pZAkJCXJl bHBraW5kZXg7CkBAIC01MzIwLDEwICs1MzIwLDEwIEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5k KQogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfcGthdHRyKTsKIAkJCWNhc2Ug SU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZOgogCQkJCXJldHVybiBibXNfY29weShy ZWxhdGlvbi0+cmRfaWRhdHRyKTsKLQkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JM T0NLSU5HOgotCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdh dHRyKTsKIAkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRDoKIAkJCQlyZXR1 cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyKTsKKwkJCWNhc2UgSU5E RVhfQVRUUl9CSVRNQVBfSU5ERVhFRDoKKwkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24t PnJkX2luZGV4ZWRhdHRyKTsKIAkJCWRlZmF1bHQ6CiAJCQkJZWxvZyhFUlJPUiwgInVua25v d24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7CiAJCX0KQEAgLTUzNjYsOCArNTM2Niw4IEBA IHJlc3RhcnQ6CiAJdWluZGV4YXR0cnMgPSBOVUxMOwogCXBraW5kZXhhdHRycyA9IE5VTEw7 CiAJaWRpbmRleGF0dHJzID0gTlVMTDsKLQlob3RibG9ja2luZ2F0dHJzID0gTlVMTDsKIAlz dW1tYXJpemVkYXR0cnMgPSBOVUxMOworCWluZGV4ZWRhdHRycyA9IE5VTEw7CiAJZm9yZWFj aChsLCBpbmRleG9pZGxpc3QpCiAJewogCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQo bCk7CkBAIC01NDI2LDcgKzU0MjYsNyBAQCByZXN0YXJ0OgogCQlpZiAoaW5kZXhEZXNjLT5y ZF9pbmRhbS0+YW1zdW1tYXJpemluZykKIAkJCWF0dHJzID0gJnN1bW1hcml6ZWRhdHRyczsK IAkJZWxzZQotCQkJYXR0cnMgPSAmaG90YmxvY2tpbmdhdHRyczsKKwkJCWF0dHJzID0gJmlu ZGV4ZWRhdHRyczsKIAogCQkvKiBDb2xsZWN0IHNpbXBsZSBhdHRyaWJ1dGUgcmVmZXJlbmNl cyAqLwogCQlmb3IgKGkgPSAwOyBpIDwgaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5kbmF0dHM7 IGkrKykKQEAgLTU0MzUsOSArNTQzNSw5IEBAIHJlc3RhcnQ6CiAKIAkJCS8qCiAJCQkgKiBT aW5jZSB3ZSBoYXZlIGNvdmVyaW5nIGluZGV4ZXMgd2l0aCBub24ta2V5IGNvbHVtbnMsIHdl IG11c3QKLQkJCSAqIGhhbmRsZSB0aGVtIGFjY3VyYXRlbHkgaGVyZS4gbm9uLWtleSBjb2x1 bW5zIG11c3QgYmUgYWRkZWQgaW50bwotCQkJICogaG90YmxvY2tpbmdhdHRycyBvciBzdW1t YXJpemVkYXR0cnMsIHNpbmNlIHRoZXkgYXJlIGluIGluZGV4LAotCQkJICogYW5kIHVwZGF0 ZSBzaG91bGRuJ3QgbWlzcyB0aGVtLgorCQkJICogaGFuZGxlIHRoZW0gYWNjdXJhdGVseSBo ZXJlLiBOb24ta2V5IGNvbHVtbnMgbXVzdCBiZSBhZGRlZCBpbnRvCisJCQkgKiBpbmRleGVk YXR0cnMgb3Igc3VtbWFyaXplZGF0dHJzLCBzaW5jZSB0aGV5IGFyZSBpbiBpbmRleCwgYW5k CisJCQkgKiB1cGRhdGUgc2hvdWxkbid0IG1pc3MgdGhlbS4KIAkJCSAqCiAJCQkgKiBTdW1t YXJpemluZyBpbmRleGVzIGRvIG5vdCBibG9jayBIT1QsIGJ1dCBkbyBuZWVkIHRvIGJlIHVw ZGF0ZWQKIAkJCSAqIHdoZW4gdGhlIGNvbHVtbiB2YWx1ZSBjaGFuZ2VzLCB0aHVzIHJlcXVp cmUgYSBzZXBhcmF0ZQpAQCAtNTQ5OCwxMiArNTQ5OCwyMCBAQCByZXN0YXJ0OgogCQlibXNf ZnJlZSh1aW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKHBraW5kZXhhdHRycyk7CiAJCWJtc19m cmVlKGlkaW5kZXhhdHRycyk7Ci0JCWJtc19mcmVlKGhvdGJsb2NraW5nYXR0cnMpOwogCQli bXNfZnJlZShzdW1tYXJpemVkYXR0cnMpOworCQlibXNfZnJlZShpbmRleGVkYXR0cnMpOwog CiAJCWdvdG8gcmVzdGFydDsKIAl9CiAKKwkvKgorCSAqIFJlY29yZCB3aGF0IGF0dHJpYnV0 ZXMgYXJlIG9ubHkgcmVmZXJlbmNlZCBieSBzdW1tYXJpemluZyBpbmRleGVzLiBUaGVuCisJ ICogYWRkIHRoYXQgaW50byB0aGUgb3RoZXIgaW5kZXhlZCBhdHRyaWJ1dGVzIHRvIHRyYWNr IGFsbCByZWZlcmVuY2VkCisJICogYXR0cmlidXRlcy4KKwkgKi8KKwlzdW1tYXJpemVkYXR0 cnMgPSBibXNfZGVsX21lbWJlcnMoc3VtbWFyaXplZGF0dHJzLCBpbmRleGVkYXR0cnMpOwor CWluZGV4ZWRhdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbmRleGVkYXR0cnMsIHN1bW1hcml6 ZWRhdHRycyk7CisKIAkvKiBEb24ndCBsZWFrIHRoZSBvbGQgdmFsdWVzIG9mIHRoZXNlIGJp dG1hcHMsIGlmIGFueSAqLwogCXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gZmFsc2U7CiAJ Ym1zX2ZyZWUocmVsYXRpb24tPnJkX2tleWF0dHIpOwpAQCAtNTUxMiwxMCArNTUyMCwxMCBA QCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9wa2F0dHIgPSBOVUxMOwogCWJtc19mcmVlKHJl bGF0aW9uLT5yZF9pZGF0dHIpOwogCXJlbGF0aW9uLT5yZF9pZGF0dHIgPSBOVUxMOwotCWJt c19mcmVlKHJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIpOwotCXJlbGF0aW9uLT5yZF9o b3RibG9ja2luZ2F0dHIgPSBOVUxMOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9zdW1tYXJp emVkYXR0cik7CiAJcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyID0gTlVMTDsKKwlibXNf ZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOworCXJlbGF0aW9uLT5yZF9pbmRleGVk YXR0ciA9IE5VTEw7CiAKIAkvKgogCSAqIE5vdyBzYXZlIGNvcGllcyBvZiB0aGUgYml0bWFw cyBpbiB0aGUgcmVsY2FjaGUgZW50cnkuICBXZSBpbnRlbnRpb25hbGx5CkBAIC01NTI4LDgg KzU1MzYsOCBAQCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9rZXlhdHRyID0gYm1zX2NvcHko dWluZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5yZF9wa2F0dHIgPSBibXNfY29weShwa2luZGV4 YXR0cnMpOwogCXJlbGF0aW9uLT5yZF9pZGF0dHIgPSBibXNfY29weShpZGluZGV4YXR0cnMp OwotCXJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBibXNfY29weShob3RibG9ja2lu Z2F0dHJzKTsKIAlyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIgPSBibXNfY29weShzdW1t YXJpemVkYXR0cnMpOworCXJlbGF0aW9uLT5yZF9pbmRleGVkYXR0ciA9IGJtc19jb3B5KGlu ZGV4ZWRhdHRycyk7CiAJcmVsYXRpb24tPnJkX2F0dHJzdmFsaWQgPSB0cnVlOwogCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCkBAIC01NTQyLDEwICs1NTUwLDEwIEBAIHJl c3RhcnQ6CiAJCQlyZXR1cm4gcGtpbmRleGF0dHJzOwogCQljYXNlIElOREVYX0FUVFJfQklU TUFQX0lERU5USVRZX0tFWToKIAkJCXJldHVybiBpZGluZGV4YXR0cnM7Ci0JCWNhc2UgSU5E RVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NLSU5HOgotCQkJcmV0dXJuIGhvdGJsb2NraW5nYXR0 cnM7CiAJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRDoKIAkJCXJldHVybiBz dW1tYXJpemVkYXR0cnM7CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRDoKKwkJ CXJldHVybiBpbmRleGVkYXR0cnM7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5r bm93biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsKIAkJCXJldHVybiBOVUxMOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oCmluZGV4IDNjMDk2MWFiMzZiLi43YWJjOGUyNGYyMSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaApAQCAtMzY1LDEwICszNjUsOSBAQCBleHRlcm4gVE1fUmVzdWx0IGhlYXBfZGVs ZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCwKIGV4 dGVybiB2b2lkIGhlYXBfZmluaXNoX3NwZWN1bGF0aXZlKFJlbGF0aW9uIHJlbGF0aW9uLCBj b25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCk7CiBleHRlcm4gdm9pZCBoZWFwX2Fib3J0X3Nw ZWN1bGF0aXZlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRp ZCk7CiBleHRlcm4gVE1fUmVzdWx0IGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBj b25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsCi0JCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAs Ci0JCQkJCQkJIENvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2Fp dCwKLQkJCQkJCQkgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2tt b2RlLAotCQkJCQkJCSBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CisJCQkJ CQkJIEhlYXBUdXBsZSBuZXd0dXAsIENvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3NzY2hl Y2ssIGJvb2wgd2FpdCwKKwkJCQkJCQkgVE1fRmFpbHVyZURhdGEgKnRtZmQsIGNvbnN0IExv Y2tUdXBsZU1vZGUgbG9ja21vZGUsCisJCQkJCQkJIGNvbnN0IEJpdG1hcHNldCAqbWl4X2F0 dHJzLCBjb25zdCBib29sIGhvdF9hbGxvd2VkKTsKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9s b2NrX3R1cGxlKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwbGUsCiAJCQkJCQkJ CSBDb21tYW5kSWQgY2lkLCBMb2NrVHVwbGVNb2RlIG1vZGUsIExvY2tXYWl0UG9saWN5IHdh aXRfcG9saWN5LAogCQkJCQkJCQkgYm9vbCBmb2xsb3dfdXBkYXRlcywKQEAgLTQzMCw2ICs0 MjksMTIgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICpk ZWFkLCBpbnQgbmRlYWQsCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqdW51c2VkLCBpbnQg bnVudXNlZCk7CiAKKy8qIGluIGhlYXAvaGVhcGFtLmMgKi8KK2V4dGVybiBib29sIEhlYXBV cGRhdGVIb3RBbGxvd2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAq bWl4X2F0dHJzLAorCQkJCQkJCQkgICBib29sICpzdW1tYXJpemVkX29ubHkpOworZXh0ZXJu IExvY2tUdXBsZU1vZGUgSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKFJlbGF0aW9uIHJl bGF0aW9uLAorCQkJCQkJCQkJCQkJIGNvbnN0IEJpdG1hcHNldCAqbWl4X2F0dHJzKTsKKwog LyogaW4gaGVhcC92YWN1dW1sYXp5LmMgKi8KIGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3Jl bChSZWxhdGlvbiByZWwsCiAJCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4 IDA2MDg0NzUyMjQ1Li4xOWM1OGE3Njg1NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC01 NDksNiArNTQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkJCQkJCQkJ IGJvb2wgd2FpdCwKIAkJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLAogCQkJCQkJCQkg TG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCisJCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1p eF9hdHRycywKIAkJCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsK IAogCS8qIHNlZSB0YWJsZV90dXBsZV9sb2NrKCkgZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJh bWV0ZXJzICovCkBAIC0xNTIzLDEyICsxNTI0LDEyIEBAIHN0YXRpYyBpbmxpbmUgVE1fUmVz dWx0CiB0YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlk LCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkgICBDb21tYW5kSWQgY2lkLCBTbmFwc2hv dCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVjaywKIAkJCQkgICBib29sIHdhaXQsIFRN X0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkgICBU VV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkgICBjb25zdCBCaXRtYXBz ZXQgKm1peF9hdHRycywgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCiB7CiAJ cmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+dHVwbGVfdXBkYXRlKHJlbCwgb3RpZCwgc2xvdCwK IAkJCQkJCQkJCQkgY2lkLCBzbmFwc2hvdCwgY3Jvc3NjaGVjaywKLQkJCQkJCQkJCQkgd2Fp dCwgdG1mZCwKLQkJCQkJCQkJCQkgbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJ CQkJCQkgd2FpdCwgdG1mZCwgbG9ja21vZGUsCisJCQkJCQkJCQkJIG1peF9hdHRycywgdXBk YXRlX2luZGV4ZXMpOwogfQogCiAvKgpAQCAtMjAwOSw2ICsyMDEwLDcgQEAgZXh0ZXJuIHZv aWQgc2ltcGxlX3RhYmxlX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVy IHRpZCwKIAkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgc2lt cGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQs CiAJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LCBTbmFwc2hvdCBzbmFwc2hvdCwK KwkJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptaXhfYXR0cnMsCiAJCQkJCQkJCQkgIFRV X1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsKIAogCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaAppbmRleCBkNDZiYTU5ODk1ZC4uMjY2ZDUzMDkxMDMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY3V0b3IuaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImRhdGF0eXBlL3Rp bWVzdGFtcC5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAjaW5jbHVkZSAi Zm1nci5oIgorI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVz L2xvY2tvcHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1 ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC02MDYsNiArNjA3LDEwIEBAIGV4dGVybiBUdXBs ZURlc2MgRXhlY0NsZWFuVHlwZUZyb21UTChMaXN0ICp0YXJnZXRMaXN0KTsKIGV4dGVybiBU dXBsZURlc2MgRXhlY1R5cGVGcm9tRXhwckxpc3QoTGlzdCAqZXhwckxpc3QpOwogZXh0ZXJu IHZvaWQgRXhlY1R5cGVTZXRDb2xOYW1lcyhUdXBsZURlc2MgdHlwZUluZm8sIExpc3QgKm5h bWVzTGlzdCk7CiBleHRlcm4gdm9pZCBVcGRhdGVDaGFuZ2VkUGFyYW1TZXQoUGxhblN0YXRl ICpub2RlLCBCaXRtYXBzZXQgKm5ld2NoZyk7CitleHRlcm4gQml0bWFwc2V0ICpFeGVjQ29t cGFyZVNsb3RBdHRycyhUdXBsZURlc2MgdHVwZGVzYywKKwkJCQkJCQkJCSAgIGNvbnN0IEJp dG1hcHNldCAqYXR0cnMsCisJCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywK KwkJCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpuZXdfdHRzKTsKIAogdHlwZWRlZiBzdHJ1 Y3QgVHVwT3V0cHV0U3RhdGUKIHsKQEAgLTgwMyw1ICs4MDgsOSBAQCBleHRlcm4gUmVzdWx0 UmVsSW5mbyAqRXhlY0xvb2t1cFJlc3VsdFJlbEJ5T2lkKE1vZGlmeVRhYmxlU3RhdGUgKm5v ZGUsCiAJCQkJCQkJCQkJCSAgIE9pZCByZXN1bHRvaWQsCiAJCQkJCQkJCQkJCSAgIGJvb2wg bWlzc2luZ19vaywKIAkJCQkJCQkJCQkJICAgYm9vbCB1cGRhdGVfY2FjaGUpOworZXh0ZXJu IEJpdG1hcHNldCAqRXhlY1VwZGF0ZU1vZElkeEF0dHJzKFJlc3VsdFJlbEluZm8gKnJlbGlu Zm8sCisJCQkJCQkJCQkJRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCQkJVHVwbGVUYWJsZVNs b3QgKm9sZF90dHMsCisJCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKm5ld190dHMpOwogCiAj ZW5kaWYJCQkJCQkJLyogRVhFQ1VUT1JfSCAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggMjM2ODMwZjZi OTMuLjEwZTVlOTA0NGVlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAor KysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAtMTYyLDggKzE2Miw4IEBAIHR5cGVk ZWYgc3RydWN0IFJlbGF0aW9uRGF0YQogCUJpdG1hcHNldCAgKnJkX2tleWF0dHI7CQkvKiBj b2xzIHRoYXQgY2FuIGJlIHJlZidkIGJ5IGZvcmVpZ24ga2V5cyAqLwogCUJpdG1hcHNldCAg KnJkX3BrYXR0cjsJCS8qIGNvbHMgaW5jbHVkZWQgaW4gcHJpbWFyeSBrZXkgKi8KIAlCaXRt YXBzZXQgICpyZF9pZGF0dHI7CQkvKiBpbmNsdWRlZCBpbiByZXBsaWNhIGlkZW50aXR5IGlu ZGV4ICovCi0JQml0bWFwc2V0ICAqcmRfaG90YmxvY2tpbmdhdHRyOyAvKiBjb2xzIGJsb2Nr aW5nIEhPVCB1cGRhdGUgKi8KIAlCaXRtYXBzZXQgICpyZF9zdW1tYXJpemVkYXR0cjsJLyog Y29scyBpbmRleGVkIGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMgKi8KKwlCaXRtYXBzZXQgICpy ZF9pbmRleGVkYXR0cjsgLyogYWxsIGNvbHMgcmVmZXJlbmNlZCBieSBpbmRleGVzICovCiAK IAlQdWJsaWNhdGlvbkRlc2MgKnJkX3B1YmRlc2M7CS8qIHB1YmxpY2F0aW9uIGRlc2NyaXB0 b3IsIG9yIE5VTEwgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2Fj aGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKaW5kZXggMjcwMDIyNDkzOWEu LjU3YjQ2ZWU1NGU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKQEAgLTY5LDggKzY5LDggQEAg dHlwZWRlZiBlbnVtIEluZGV4QXR0ckJpdG1hcEtpbmQKIAlJTkRFWF9BVFRSX0JJVE1BUF9L RVksCiAJSU5ERVhfQVRUUl9CSVRNQVBfUFJJTUFSWV9LRVksCiAJSU5ERVhfQVRUUl9CSVRN QVBfSURFTlRJVFlfS0VZLAotCUlOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORywKIAlJ TkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVELAorCUlOREVYX0FUVFJfQklUTUFQX0lOREVY RUQsCiB9IEluZGV4QXR0ckJpdG1hcEtpbmQ7CiAKIGV4dGVybiBCaXRtYXBzZXQgKlJlbGF0 aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dAppbmRleCA2ZGFi NjBjOTM3Yi4uN2ViYjc4OTBkOTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CkBAIC0yODcsNyArMjg3LDcgQEAgREVUQUlM OiAgQ29sdW1uICJiIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4uCiBJTlNFUlQgSU5UTyBndGVz dDF2IFZBTFVFUyAoOCwgREVGQVVMVCksICg5LCBERUZBVUxUKTsgIC0tIGVycm9yCiBFUlJP UjogIGNhbm5vdCBpbnNlcnQgYSBub24tREVGQVVMVCB2YWx1ZSBpbnRvIGNvbHVtbiAiYiIK IERFVEFJTDogIENvbHVtbiAiYiIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uLgotU0VMRUNUICog RlJPTSBndGVzdDF2OworU0VMRUNUICogRlJPTSBndGVzdDF2IE9SREVSIEJZIGE7CiAgYSB8 IGIgIAogLS0tKy0tLS0KICAzIHwgIDYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAppbmRleCA5Y2VhNTM4YjhlOC4uNDg3N2ExZGRjZTkg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdz Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5v dXQKQEAgLTM3MiwxNSArMzcyLDE1IEBAIElOU0VSVCBJTlRPIHJ3X3ZpZXcxNiAoYSwgYikg VkFMVUVTICgzLCAnUm93IDMnKTsgLS0gc2hvdWxkIGJlIE9LCiBVUERBVEUgcndfdmlldzE2 IFNFVCBhPTMsIGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGZhaWwKIEVSUk9SOiAgbXVs dGlwbGUgYXNzaWdubWVudHMgdG8gc2FtZSBjb2x1bW4gImEiCiBVUERBVEUgcndfdmlldzE2 IFNFVCBhYT0tMyBXSEVSRSBhPTM7IC0tIHNob3VsZCBiZSBPSwotU0VMRUNUICogRlJPTSBi YXNlX3RibDsKK1NFTEVDVCAqIEZST00gYmFzZV90YmwgT1JERVIgQlkgYTsKICBhICB8ICAg YiAgICAKIC0tLS0rLS0tLS0tLS0KKyAtMyB8IFJvdyAzCiAgLTIgfCBSb3cgLTIKICAtMSB8 IFJvdyAtMQogICAwIHwgUm93IDAKICAgMSB8IFJvdyAxCiAgIDIgfCBSb3cgMgotIC0zIHwg Um93IDMKICg2IHJvd3MpCiAKIERFTEVURSBGUk9NIHJ3X3ZpZXcxNiBXSEVSRSBhPS0zOyAt LSBzaG91bGQgYmUgT0sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVy YXRlZF92aXJ0dWFsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0 dWFsLnNxbAppbmRleCBlNzUwODY2ZDJkOC4uODc3MTUyZDZkNjkgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwKQEAgLTEyNyw3ICsxMjcsNyBA QCBBTFRFUiBWSUVXIGd0ZXN0MXYgQUxURVIgQ09MVU1OIGIgU0VUIERFRkFVTFQgMTAwOwog SU5TRVJUIElOVE8gZ3Rlc3QxdiBWQUxVRVMgKDgsIERFRkFVTFQpOyAgLS0gZXJyb3IKIElO U0VSVCBJTlRPIGd0ZXN0MXYgVkFMVUVTICg4LCBERUZBVUxUKSwgKDksIERFRkFVTFQpOyAg LS0gZXJyb3IKIAotU0VMRUNUICogRlJPTSBndGVzdDF2OworU0VMRUNUICogRlJPTSBndGVz dDF2IE9SREVSIEJZIGE7CiBERUxFVEUgRlJPTSBndGVzdDF2IFdIRVJFIGEgPj0gNTsKIERS T1AgVklFVyBndGVzdDF2OwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91 cGRhdGFibGVfdmlld3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3Zp ZXdzLnNxbAppbmRleCAxNjM1YWRkZTJkNC4uMTYwZTc3OTk3MTUgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbApAQCAtMTI1LDcgKzEyNSw3IEBAIElO U0VSVCBJTlRPIHJ3X3ZpZXcxNiBWQUxVRVMgKDMsICdSb3cgMycsIDMpOyAtLSBzaG91bGQg ZmFpbAogSU5TRVJUIElOVE8gcndfdmlldzE2IChhLCBiKSBWQUxVRVMgKDMsICdSb3cgMycp OyAtLSBzaG91bGQgYmUgT0sKIFVQREFURSByd192aWV3MTYgU0VUIGE9MywgYWE9LTMgV0hF UkUgYT0zOyAtLSBzaG91bGQgZmFpbAogVVBEQVRFIHJ3X3ZpZXcxNiBTRVQgYWE9LTMgV0hF UkUgYT0zOyAtLSBzaG91bGQgYmUgT0sKLVNFTEVDVCAqIEZST00gYmFzZV90Ymw7CitTRUxF Q1QgKiBGUk9NIGJhc2VfdGJsIE9SREVSIEJZIGE7CiBERUxFVEUgRlJPTSByd192aWV3MTYg V0hFUkUgYT0tMzsgLS0gc2hvdWxkIGJlIE9LCiAtLSBSZWFkLW9ubHkgdmlld3MKIElOU0VS VCBJTlRPIHJvX3ZpZXcxNyBWQUxVRVMgKDMsICdST1cgMycpOwotLSAKMi41MS4yCgo= --53173498dda4441898ece084e13a3b73--