Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tcL3N-00Gy2m-4o for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Jan 2025 09:05:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tcL3M-00ANfu-85 for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Jan 2025 09:05:08 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tcL3L-00ANfj-IR for pgsql-hackers@lists.postgresql.org; Mon, 27 Jan 2025 09:05:07 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tcL3G-001jYj-2K for pgsql-hackers@postgresql.org; Mon, 27 Jan 2025 09:05:06 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 88074619B6; Mon, 27 Jan 2025 18:04:59 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_d4c5f2510b21db3e97bd094b13bd0c32" Content-Transfer-Encoding: 8bit Date: Mon, 27 Jan 2025 18:04:59 +0900 From: torikoshia To: pgsql-hackers@postgresql.org Cc: Jelte Fennema-Nio , rjuju123@gmail.com, tgl@sss.pgh.pa.us, Bruce Momjian Subject: Re: RFC: Allow EXPLAIN to Output Page Fault Information In-Reply-To: References: <1614321.1735055528@sss.pgh.pa.us> <3861403.1735576764@sss.pgh.pa.us> <1f22794321b745549d54359d343e37b8@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <2c9d6eaf26df17bec13bb03bf1e9bcbb@oss.nttdata.com> X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_d4c5f2510b21db3e97bd094b13bd0c32 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Hi, On Tue, Jan 7, 2025 at 5:09 AM Jelte Fennema-Nio wrote: > The core functionality works well in my opinion. I think it makes sense > to spend the effort to move this from PoC quality to something > committable. Below some of the things that are necessary to do that > after an initial pass over the code (and trying it out): Attached a Patch. On Tue, Jan 7, 2025 at 10:42 PM Atsushi Torikoshi wrote: >> 9. I think this division by 2 could use some explanation in a comment. >> I >> understand that you're doing this because linux divides its >> original >> bytes using 512 bytes[2] and your additional factor of 2 gets that >> to >> 1024 bytes. But that's not clear immediately from the code. >> >> I'm also not convinced that 512 is the blocksize if this logic is >> even correct on every platform. I'm wondering if maybe we should >> simply show the blocks after all. > > Maybe so. I'll look into this and then decide the unit. I looked up the manuals for the following operating systems, as documented in [1], and it seems that all of them—except Windows—support getrusage(2) and return ru_inblock/ru_oublock: Linux, Windows, FreeBSD, OpenBSD, NetBSD, DragonFlyBSD, macOS, AIX, Solaris, and illumos. However, I’m unsure if the unit of these values is consistently 512KB across all operating systems. Additionally, I’m concerned that the timing of when these metrics are incremented might vary between OSs. For example, on Linux, it seems that ru_oublock is incremented when a page is dirtied, as it’s calculated by dividing write_bytes [2] by 9. I’m not sure if other operating systems behave the same way. That said, they all represent the number of storage I/O operations performed or to be performed. Therefore, I believe it would be reasonable to report the raw values as-is, as they should still be useful for understanding storage I/O activity. Example output: =# explain analyze select max(a), max(b) from t_big_ul; (..snip..) Planning: Buffers: shared hit=31 read=54 Storage I/O: read=2744 times write=0 times Planning Time: 30.685 ms Execution: Storage I/O: read=2563600 times write=0 times Execution Time: 1685.272 ms [1] https://www.postgresql.org/docs/devel/supported-platforms.html [2] https://www.kernel.org/doc/Documentation/filesystems/proc.txt -- Regards, Atsushi Torikoshi Seconded from NTT DATA GROUP CORPORATION to SRA OSS K.K. --=_d4c5f2510b21db3e97bd094b13bd0c32 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v1-0001-Add-storage-I-O-tracking-to-BUFFERS-option.patch Content-Disposition: attachment; filename=v1-0001-Add-storage-I-O-tracking-to-BUFFERS-option.patch; size=34637 RnJvbSBkM2M5ZWZjZjFkNDRkZTRhYWZiNWQwOTA1MWRiN2E2ZjdmYzRjNWRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IE1vbiwgMjcgSmFuIDIwMjUgMTY6Mzc6MDYgKzA5MDAKU3ViamVjdDog W1BBVENIIHYxXSBBZGQgc3RvcmFnZSBJL08gdHJhY2tpbmcgdG8gJ0JVRkZFUlMnIG9wdGlvbgoK VGhlICdCVUZGRVJTJyBvcHRpb24gY3VycmVudGx5IGluZGljYXRlcyB3aGV0aGVyIGEgYmxvY2sg aGl0IHRoZSBzaGFyZWQKYnVmZmVyLCBidXQgZG9lcyBub3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiBh IGNhY2hlIGhpdCBpbiB0aGUgT1MgY2FjaGUgb3IKYSBzdG9yYWdlIEkvTyBvcGVyYXRpb24uCldo aWxlIHNoYXJlZCBidWZmZXJzIGFuZCBPUyBjYWNoZSBvZmZlciBzaW1pbGFyIHBlcmZvcm1hbmNl LCBzdG9yYWdlCkkvTyBpcyBzaWduaWZpY2FudGx5IHNsb3dlciBpbiBjb21wYXJpc29uLiAgQnkg bWVhc3VyaW5nIHRoZSBudW1iZXJzIG9mCiBzdG9yYWdlIEkvTyByZWFkIGFuZCB3cml0ZSwgd2Ug Y2FuIGJldHRlciBpZGVudGlmeSBpZiBzdG9yYWdlIEkvTyBpcyBhCiBib3R0bGVuZWNrIGluIHBl cmZvcm1hbmNlLgoKQWRkZWQgdHJhY2tpbmcgb2Ygc3RvcmFnZSBJL08gdXNhZ2UgYnkgY2FsbGlu ZyBnZXRydXNhZ2UoMikgYXQgYm90aCB0aGUKcGxhbm5pbmcgYW5kIGV4ZWN1dGlvbiBwaGFzZSBz dGFydCBhbmQgZW5kIHBvaW50cy4KCkEgbW9yZSBncmFudWxhciBhcHByb2FjaCBhcyB3ZWxsIGFz IGN1cnJlbnQgQlVGRkVSUyBvcHRpb24odHJhY2tpbmcgYXQKZWFjaCBwbGFuIG5vZGUpIHdhcyBj b25zaWRlcmVkIGJ1dCBmb3VuZCB0byBiZSBpbXByYWN0aWNhbCBkdWUgdG8gdGhlCmhpZ2ggcGVy Zm9ybWFuY2UgY29zdCBvZiBmcmVxdWVudCBnZXRydXNhZ2UoKSBjYWxscy4KClRPRE86CkkgYmVs aWV2ZSB0aGlzIGluZm9ybWF0aW9uIGlzIG1haW5seSB1c2VmdWwgd2hlbiB1c2VkIGluIGF1dG9f ZXhwbGFpbi4KSSdsbCBpbXBsZW1lbnQgaXQgbGF0ZXIuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9l eHBsYWluLnNnbWwgICAgICAgICB8ICAyNSArKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYyAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgfCAx MTcgKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYyAgICAgICAgfCAgIDggKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVs LmMgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgfCAgMzUg KysrKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyAgICAgfCAgNjEgKysr KysrKysrKysrKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmggICB8ICAgMiArCiBzcmMvaW5j bHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggICAgIHwgIDE5ICsrKystCiBzcmMvaW5jbHVkZS9w b3J0L3dpbjMyL3N5cy9yZXNvdXJjZS5oIHwgICAyICsKIHNyYy9wb3J0L3dpbjMyZ2V0cnVzYWdl LmMgICAgICAgICAgICAgfCAgIDQgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWlu Lm91dCB8ICAzNyArKysrKysrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAg ICB8ICAgMSArCiAxNSBmaWxlcyBjaGFuZ2VkLCAyOTggaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbAppbmRleCA2MzYxYTE0ZTYuLjdiNDVhMzRmYyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9leHBsYWluLnNnbWwKQEAgLTE5OCwxMyArMTk4LDI0IEBAIFJPTExCQUNLOwogICAgICAg cHJldmlvdXNseSB1bm1vZGlmaWVkIGJsb2NrcyB0aGF0IHdlcmUgY2hhbmdlZCBieSB0aGlzIHF1 ZXJ5OyB3aGlsZSB0aGUKICAgICAgIG51bWJlciBvZiBibG9ja3MgPGVtcGhhc2lzPndyaXR0ZW48 L2VtcGhhc2lzPiBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZgogICAgICAgcHJldmlvdXNseS1kaXJ0 aWVkIGJsb2NrcyBldmljdGVkIGZyb20gY2FjaGUgYnkgdGhpcyBiYWNrZW5kIGR1cmluZwotICAg ICAgcXVlcnkgcHJvY2Vzc2luZy4KLSAgICAgIFRoZSBudW1iZXIgb2YgYmxvY2tzIHNob3duIGZv ciBhbgotICAgICAgdXBwZXItbGV2ZWwgbm9kZSBpbmNsdWRlcyB0aG9zZSB1c2VkIGJ5IGFsbCBp dHMgY2hpbGQgbm9kZXMuICBJbiB0ZXh0Ci0gICAgICBmb3JtYXQsIG9ubHkgbm9uLXplcm8gdmFs dWVzIGFyZSBwcmludGVkLiAgQnVmZmVycyBpbmZvcm1hdGlvbiBpcwotICAgICAgaW5jbHVkZWQg YnkgZGVmYXVsdCB3aGVuIDxsaXRlcmFsPkFOQUxZWkU8L2xpdGVyYWw+IGlzIHVzZWQgYnV0Ci0g ICAgICBvdGhlcndpc2UgaXMgbm90IGluY2x1ZGVkIGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUgZW5h YmxlZCB1c2luZyB0aGlzCi0gICAgICBvcHRpb24uCisgICAgICBxdWVyeSBwcm9jZXNzaW5nLiBJ biB0ZXh0IGZvcm1hdCwgb25seSBub24temVybyB2YWx1ZXMgYXJlIHByaW50ZWQuCisgICAgICBJ ZiBwb3NzaWJsZSwgdGhpcyBvcHRpb24gYWxzbyBkaXNwbGF5cyB0aGUgbnVtYmVyIG9mIHJlYWQg YW5kIHdyaXRlCisgICAgICBvcGVyYXRpb25zIHBlcmZvcm1lZCBvbiBzdG9yYWdlIGR1cmluZyB0 aGUgcGxhbm5pbmcgYW5kIGV4ZWN1dGlvbiBwaGFzZXMsCisgICAgICBzaG93biBhdCB0aGUgZW5k IG9mIHRoZSBwbGFuLiBUaGVzZSB2YWx1ZXMgYXJlIG9idGFpbmVkIGZyb20gdGhlCisgICAgICA8 ZnVuY3Rpb24+Z2V0cnVzYWdlKCk8L2Z1bmN0aW9uPiBzeXN0ZW0gY2FsbC4gTm90ZSB0aGF0IG9u IHBsYXRmb3JtcyB0aGF0CisgICAgICBkbyBub3Qgc3VwcG9ydCA8ZnVuY3Rpb24+Z2V0cnVzYWdl KCk8L2Z1bmN0aW9uPiwgc3VjaCBhcyBXaW5kb3dzLCBubyBvdXRwdXQKKyAgICAgIHdpbGwgYmUg c2hvd24sIGV2ZW4gaWYgcmVhZHMgb3Igd3JpdGVzIGFjdHVhbGx5IG9jY3VyLiBBZGRpdGlvbmFs bHksIGV2ZW4KKyAgICAgIG9uIHBsYXRmb3JtcyB3aGVyZSA8ZnVuY3Rpb24+Z2V0cnVzYWdlKCk8 L2Z1bmN0aW9uPiBpcyBzdXBwb3J0ZWQsIGlmIHRoZQorICAgICAga2VybmVsIGlzIGJ1aWx0IHdp dGhvdXQgdGhlIG5lY2Vzc2FyeSBvcHRpb25zIHRvIHRyYWNrIHN0b3JhZ2UgcmVhZCBhbmQKKyAg ICAgIHdyaXRlIG9wZXJhdGlvbnMsIG5vIG91dHB1dCB3aWxsIGJlIHNob3duLgorICAgICAgVGhl IHRpbWluZyBhbmQgdW5pdCBvZiBtZWFzdXJlbWVudCBmb3IgcmVhZCBhbmQgd3JpdGUgb3BlcmF0 aW9ucyBtYXkgdmFyeQorICAgICAgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4gRm9yIGV4YW1w bGUsIG9uIExpbnV4LCBhIHJlYWQgaXMgY291bnRlZCBvbmx5CisgICAgICBpZiB0aGlzIHByb2Nl c3MgY2F1c2VkIGRhdGEgdG8gYmUgZmV0Y2hlZCBmcm9tIHRoZSBzdG9yYWdlIGxheWVyLCBhbmQg YQorICAgICAgd3JpdGUgaXMgY291bnRlZCBhdCB0aGUgcGFnZS1kaXJ0eWluZyB0aW1lLiBPbiBM aW51eCwgdGhlIHVuaXQgb2YKKyAgICAgIG1lYXN1cmVtZW50IGZvciByZWFkIGFuZCB3cml0ZSBv cGVyYXRpb25zIGlzIDUxMiBLQi4KKyAgICAgIEJ1ZmZlcnMgaW5mb3JtYXRpb24gaXMgaW5jbHVk ZWQgYnkgZGVmYXVsdCB3aGVuIDxsaXRlcmFsPkFOQUxZWkU8L2xpdGVyYWw+CisgICAgICBpcyB1 c2VkIGJ1dCBvdGhlcndpc2UgaXMgbm90IGluY2x1ZGVkIGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUg ZW5hYmxlZCB1c2luZworICAgICAgdGhpcyBvcHRpb24uCiAgICAgIDwvcGFyYT4KICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggNDI4 OTE0MmUyLi4yMmE3Y2U1NTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTI1NDksNyArMjU0 OSw3IEBAIF9icmluX2VuZF9wYXJhbGxlbChCcmluTGVhZGVyICpicmlubGVhZGVyLCBCcmluQnVp bGRTdGF0ZSAqc3RhdGUpCiAJICogb3Igd2UgbWlnaHQgZ2V0IGluY29tcGxldGUgZGF0YS4pCiAJ ICovCiAJZm9yIChpID0gMDsgaSA8IGJyaW5sZWFkZXItPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVk OyBpKyspCi0JCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZicmlubGVhZGVyLT5idWZmZXJ1c2Fn ZVtpXSwgJmJyaW5sZWFkZXItPndhbHVzYWdlW2ldKTsKKwkJSW5zdHJBY2N1bVBhcmFsbGVsUXVl cnkoJmJyaW5sZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCBOVUxMLCAmYnJpbmxlYWRlci0+d2FsdXNh Z2VbaV0pOwogCiAJLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNuYXBzaG90LCBpZiBv bmUgd2FzIHVzZWQgKi8KIAlpZiAoSXNNVkNDU25hcHNob3QoYnJpbmxlYWRlci0+c25hcHNob3Qp KQpAQCAtMjkxMSw3ICsyOTExLDcgQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2Vn bWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJdHVwbGVzb3J0X2F0dGFjaF9zaGFyZWQoc2hhcmVk c29ydCwgc2VnKTsKIAogCS8qIFByZXBhcmUgdG8gdHJhY2sgYnVmZmVyIHVzYWdlIGR1cmluZyBw YXJhbGxlbCBleGVjdXRpb24gKi8KLQlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOworCUluc3Ry U3RhcnRQYXJhbGxlbFF1ZXJ5KE5VTEwpOwogCiAJLyoKIAkgKiBNaWdodCBhcyB3ZWxsIHVzZSBy ZWxpYWJsZSBmaWd1cmUgd2hlbiBkb2xpbmcgb3V0IG1haW50ZW5hbmNlX3dvcmtfbWVtCkBAIC0y OTI2LDggKzI5MjYsOCBAQCBfYnJpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFy YWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWx1c2FnZSA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUluc3RyRW5kUGFyYWxs ZWxRdWVyeSgmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAotCQkJCQkJICAmd2Fs dXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKKwlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoJmJ1 ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwgTlVMTCwKKwkJCQkJCSAgJndhbHVzYWdl W1BhcmFsbGVsV29ya2VyTnVtYmVyXSwgTlVMTCk7CiAKIAlpbmRleF9jbG9zZShpbmRleFJlbCwg aW5kZXhMb2NrbW9kZSk7CiAJdGFibGVfY2xvc2UoaGVhcFJlbCwgaGVhcExvY2ttb2RlKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggN2FiYTg1MmRiLi45OGNmZGU4ODcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xNjE5LDcgKzE2MTksNyBAQCBfYnRf ZW5kX3BhcmFsbGVsKEJUTGVhZGVyICpidGxlYWRlcikKIAkgKiBvciB3ZSBtaWdodCBnZXQgaW5j b21wbGV0ZSBkYXRhLikKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgYnRsZWFkZXItPnBjeHQtPm53 b3JrZXJzX2xhdW5jaGVkOyBpKyspCi0JCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZidGxlYWRl ci0+YnVmZmVydXNhZ2VbaV0sICZidGxlYWRlci0+d2FsdXNhZ2VbaV0pOworCQlJbnN0ckFjY3Vt UGFyYWxsZWxRdWVyeSgmYnRsZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCBOVUxMLCAmYnRsZWFkZXIt PndhbHVzYWdlW2ldKTsKIAogCS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hv dCwgaWYgb25lIHdhcyB1c2VkICovCiAJaWYgKElzTVZDQ1NuYXBzaG90KGJ0bGVhZGVyLT5zbmFw c2hvdCkpCkBAIC0xODI3LDcgKzE4MjcsNyBAQCBfYnRfcGFyYWxsZWxfYnVpbGRfbWFpbihkc21f c2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJfQogCiAJLyogUHJlcGFyZSB0byB0cmFjayBi dWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCUluc3RyU3RhcnRQYXJh bGxlbFF1ZXJ5KCk7CisJSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoTlVMTCk7CiAKIAkvKiBQZXJm b3JtIHNvcnRpbmcgb2Ygc3Bvb2wsIGFuZCBwb3NzaWJseSBhIHNwb29sMiAqLwogCXNvcnRtZW0g PSBtYWludGVuYW5jZV93b3JrX21lbSAvIGJ0c2hhcmVkLT5zY2FudHVwbGVzb3J0c3RhdGVzOwpA QCAtMTgzNyw4ICsxODM3LDggQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQg KnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBw YXJhbGxlbCBleGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywg UEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbHVzYWdlID0gc2htX3RvY19s b29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJh bGxlbFF1ZXJ5KCZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCi0JCQkJCQkgICZ3 YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOworCUluc3RyRW5kUGFyYWxsZWxRdWVyeSgm YnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLCBOVUxMLAorCQkJCQkJICAmd2FsdXNh Z2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLCBOVUxMKTsKIAogI2lmZGVmIEJUUkVFX0JVSUxEX1NU QVRTCiAJaWYgKGxvZ19idHJlZV9idWlsZF9zdGF0cykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRl eCBjMjRlNjZmODIuLmRlNzdjNTkyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMTQ1LDYg KzE0NSw4IEBAIHN0YXRpYyB2b2lkIHNob3dfZm9yZWlnbnNjYW5faW5mbyhGb3JlaWduU2NhblN0 YXRlICpmc3N0YXRlLCBFeHBsYWluU3RhdGUgKmVzKTsKIHN0YXRpYyBjb25zdCBjaGFyICpleHBs YWluX2dldF9pbmRleF9uYW1lKE9pZCBpbmRleElkKTsKIHN0YXRpYyBib29sIHBlZWtfYnVmZmVy X3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSk7CiBzdGF0 aWMgdm9pZCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJV c2FnZSAqdXNhZ2UpOworc3RhdGljIGJvb2wgcGVla19zdG9yYWdlaW9fdXNhZ2UoRXhwbGFpblN0 YXRlICplcywgY29uc3QgU3RvcmFnZUlPVXNhZ2UgKnVzYWdlKTsKK3N0YXRpYyB2b2lkIHNob3df c3RvcmFnZWlvX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IFN0b3JhZ2VJT1VzYWdlICp1 c2FnZSk7CiBzdGF0aWMgdm9pZCBzaG93X3dhbF91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25z dCBXYWxVc2FnZSAqdXNhZ2UpOwogc3RhdGljIHZvaWQgc2hvd19tZW1vcnlfY291bnRlcnMoRXhw bGFpblN0YXRlICplcywKIAkJCQkJCQkJIGNvbnN0IE1lbW9yeUNvbnRleHRDb3VudGVycyAqbWVt X2NvdW50ZXJzKTsKQEAgLTQ3NSw2ICs0NzcsOCBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnko UXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCQlwbGFuZHVyYXRpb247CiAJQnVm ZmVyVXNhZ2UgYnVmdXNhZ2Vfc3RhcnQsCiAJCQkJYnVmdXNhZ2U7CisJU3RvcmFnZUlPVXNhZ2Ug c3RvcmFnZWlvLAorCQkJCXN0b3JhZ2Vpb19zdGFydDsKIAlNZW1vcnlDb250ZXh0Q291bnRlcnMg bWVtX2NvdW50ZXJzOwogCU1lbW9yeUNvbnRleHQgcGxhbm5lcl9jdHggPSBOVUxMOwogCU1lbW9y eUNvbnRleHQgc2F2ZWRfY3R4ID0gTlVMTDsKQEAgLTQ5Niw3ICs1MDAsMTAgQEAgc3RhbmRhcmRf RXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJfQogCiAJ aWYgKGVzLT5idWZmZXJzKQorCXsKIAkJYnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdlOwor CQlHZXRTdG9yYWdlSU9Vc2FnZSgmc3RvcmFnZWlvX3N0YXJ0KTsKKwl9CiAJSU5TVFJfVElNRV9T RVRfQ1VSUkVOVChwbGFuc3RhcnQpOwogCiAJLyogcGxhbiB0aGUgcXVlcnkgKi8KQEAgLTUxOCw5 ICs1MjUsMTcgQEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1 cnNvck9wdGlvbnMsCiAJCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZidWZ1c2FnZSwgJnBnQnVmZmVy VXNhZ2UsICZidWZ1c2FnZV9zdGFydCk7CiAJfQogCisJaWYgKGVzLT5idWZmZXJzKQorCXsKKwkJ R2V0U3RvcmFnZUlPVXNhZ2UoJnN0b3JhZ2Vpbyk7CisJCXN0b3JhZ2Vpby5pbmJsb2NrIC09IHN0 b3JhZ2Vpb19zdGFydC5pbmJsb2NrOworCQlzdG9yYWdlaW8ub3V0YmxvY2sgLT0gc3RvcmFnZWlv X3N0YXJ0Lm91dGJsb2NrOworCX0KKwogCS8qIHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVj ZSBvdXRwdXQgKi8KIAlFeHBsYWluT25lUGxhbihwbGFuLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcs IHBhcmFtcywgcXVlcnlFbnYsCiAJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8g JmJ1ZnVzYWdlIDogTlVMTCksCisJCQkJICAgKGVzLT5idWZmZXJzID8gJnN0b3JhZ2VpbyA6IE5V TEwpLAogCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJzIDogTlVMTCk7CiB9CiAKQEAg LTY0NCw3ICs2NTksNyBAQCB2b2lkCiBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkgICBjb25zdCBj aGFyICpxdWVyeVN0cmluZywgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgICBRdWVyeUVudmly b25tZW50ICpxdWVyeUVudiwgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9uLAotCQkJICAg Y29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLAorCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1 ZnVzYWdlLCBjb25zdCBTdG9yYWdlSU9Vc2FnZSAqcGxhbnN0b3JhZ2VpbywKIAkJCSAgIGNvbnN0 IE1lbW9yeUNvbnRleHRDb3VudGVycyAqbWVtX2NvdW50ZXJzKQogewogCURlc3RSZWNlaXZlciAq ZGVzdDsKQEAgLTY1NCw2ICs2NjksNyBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxh bm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJaW50CQkJZWZs YWdzOwogCWludAkJCWluc3RydW1lbnRfb3B0aW9uID0gMDsKIAlTZXJpYWxpemVNZXRyaWNzIHNl cmlhbGl6ZU1ldHJpY3MgPSB7MH07CisJU3RvcmFnZUlPVXNhZ2Ugc3RvcmFnZWlvX3N0YXJ0Owog CiAJQXNzZXJ0KHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSk7CiAKQEAg LTY2Myw3ICs2NzksMTkgQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlpbnN0cnVtZW50X29wdGlv biB8PSBJTlNUUlVNRU5UX1JPV1M7CiAKIAlpZiAoZXMtPmJ1ZmZlcnMpCisJeworCQlHZXRTdG9y YWdlSU9Vc2FnZSgmc3RvcmFnZWlvX3N0YXJ0KTsKKworCQkvKgorCQkgKiBJbml0aWFsaXplIGds b2JhbCB2YXJpYWJsZSBjb3VudGVycyBmb3IgcGFyYWxsZWwgcXVlcnkgd29ya2Vycy4KKwkJICog RXZlbiBpZiB0aGUgcXVlcnkgaXMgY2FuY2VsbGVkIG9uIHRoZSB3YXksIHRoZSBFWFBMQUlOIGV4 ZWN1dGlvbgorCQkgKiBhbHdheXMgcGFzc2VzIGhlcmUsIHNvIGl0IGNhbiBiZSBpbml0aWFsaXpl ZCBoZXJlLgorCQkgKi8KKwkJcGdTdG9yYWdlSU9Vc2FnZVBhcmFsbGVsLmluYmxvY2sgPSAwOwor CQlwZ1N0b3JhZ2VJT1VzYWdlUGFyYWxsZWwub3V0YmxvY2sgPSAwOworCiAJCWluc3RydW1lbnRf b3B0aW9uIHw9IElOU1RSVU1FTlRfQlVGRkVSUzsKKwl9CiAJaWYgKGVzLT53YWwpCiAJCWluc3Ry dW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfV0FMOwogCkBAIC03NDcsOCArNzc1LDkgQEAgRXhw bGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAogCS8qIENyZWF0ZSB0ZXh0dWFsIGR1bXAgb2YgcGxhbiB0cmVlICov CiAJRXhwbGFpblByaW50UGxhbihlcywgcXVlcnlEZXNjKTsKIAotCS8qIFNob3cgYnVmZmVyIGFu ZC9vciBtZW1vcnkgdXNhZ2UgaW4gcGxhbm5pbmcgKi8KLQlpZiAocGVla19idWZmZXJfdXNhZ2Uo ZXMsIGJ1ZnVzYWdlKSB8fCBtZW1fY291bnRlcnMpCisJLyogU2hvdyBidWZmZXIsIHN0b3JhZ2Ug SS9PLCBhbmQvb3IgbWVtb3J5IHVzYWdlIGluIHBsYW5uaW5nICovCisJaWYgKHBlZWtfYnVmZmVy X3VzYWdlKGVzLCBidWZ1c2FnZSkgfHwgcGVla19zdG9yYWdlaW9fdXNhZ2UoZXMsIHBsYW5zdG9y YWdlaW8pIHx8CisJCW1lbV9jb3VudGVycykKIAl7CiAJCUV4cGxhaW5PcGVuR3JvdXAoIlBsYW5u aW5nIiwgIlBsYW5uaW5nIiwgdHJ1ZSwgZXMpOwogCkBAIC03NjAsOCArNzg5LDEwIEBAIEV4cGxh aW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhw bGFpblN0YXRlICplcywKIAkJfQogCiAJCWlmIChidWZ1c2FnZSkKKwkJewogCQkJc2hvd19idWZm ZXJfdXNhZ2UoZXMsIGJ1ZnVzYWdlKTsKLQorCQkJc2hvd19zdG9yYWdlaW9fdXNhZ2UoZXMsIHBs YW5zdG9yYWdlaW8pOworCQl9CiAJCWlmIChtZW1fY291bnRlcnMpCiAJCQlzaG93X21lbW9yeV9j b3VudGVycyhlcywgbWVtX2NvdW50ZXJzKTsKIApAQCAtODEzLDYgKzg0NCwzNSBAQCBFeHBsYWlu T25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxh aW5TdGF0ZSAqZXMsCiAKIAl0b3RhbHRpbWUgKz0gZWxhcHNlZF90aW1lKCZzdGFydHRpbWUpOwog CisJLyogU2hvdyBzdG9yYWdlIEkvTyB1c2FnZSBpbiBleGVjdXRpb24gKi8KKwlpZiAoZXMtPmJ1 ZmZlcnMpCisJeworCQlTdG9yYWdlSU9Vc2FnZSBzdG9yYWdlaW8gPSB7MH07CisJCVN0b3JhZ2VJ T1VzYWdlIHN0b3JhZ2Vpb19lbmQ7CisKKwkJR2V0U3RvcmFnZUlPVXNhZ2UoJnN0b3JhZ2Vpb19l bmQpOworCQlTdG9yYWdlSU9Vc2FnZUFjY3VtRGlmZigmc3RvcmFnZWlvLCAmc3RvcmFnZWlvX2Vu ZCwgJnN0b3JhZ2Vpb19zdGFydCk7CisJCVN0b3JhZ2VJT1VzYWdlQWRkKCZzdG9yYWdlaW8sICZw Z1N0b3JhZ2VJT1VzYWdlUGFyYWxsZWwpOworCisJCWlmIChwZWVrX3N0b3JhZ2Vpb191c2FnZShl cywgJnN0b3JhZ2VpbykpCisJCXsKKwkJCUV4cGxhaW5PcGVuR3JvdXAoIkV4ZWN1dGlvbiIsICJF eGVjdXRpb24iLCB0cnVlLCBlcyk7CisKKwkJCWlmIChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9S TUFUX1RFWFQpCisJCQl7CisJCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIkV4ZWN1dGlvbjpcbiIpOworCQkJCWVzLT5pbmRlbnQr KzsKKwkJCX0KKwkJCXNob3dfc3RvcmFnZWlvX3VzYWdlKGVzLCAmc3RvcmFnZWlvKTsKKworCQkJ aWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKKwkJCQllcy0+aW5kZW50LS07 CisKKwkJCUV4cGxhaW5DbG9zZUdyb3VwKCJFeGVjdXRpb24iLCAiRXhlY3V0aW9uIiwgdHJ1ZSwg ZXMpOworCQl9CisJfQorCiAJLyoKIAkgKiBXZSBvbmx5IHJlcG9ydCBleGVjdXRpb24gdGltZSBp ZiB3ZSBhY3R1YWxseSByYW4gdGhlIHF1ZXJ5ICh0aGF0IGlzLAogCSAqIHRoZSB1c2VyIHNwZWNp ZmllZCBBTkFMWVpFKSwgYW5kIGlmIHN1bW1hcnkgcmVwb3J0aW5nIGlzIGVuYWJsZWQgKHRoZQpA QCAtNDIzMiw2ICs0MjkyLDU1IEBAIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMs IGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkKIAl9CiB9CiAKKy8qCisgKiBSZXR1cm4gd2hldGhl ciBzaG93X3N0b3JhZ2Vpb191c2FnZSB3b3VsZCBoYXZlIGFueXRoaW5nIHRvIHByaW50LCBpZiBn aXZlbgorICogdGhlIHNhbWUgJ3VzYWdlJyBkYXRhLiAgTm90ZSB0aGF0IHdoZW4gdGhlIGZvcm1h dCBpcyBhbnl0aGluZyBvdGhlciB0aGFuCisgKiB0ZXh0LCB3ZSBwcmludCBldmVuIGlmIHRoZSBj b3VudGVycyBhcmUgYWxsIHplcm9lcy4KKyAqLworc3RhdGljIGJvb2wKK3BlZWtfc3RvcmFnZWlv X3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IFN0b3JhZ2VJT1VzYWdlICp1c2FnZSkKK3sK KwlpZiAodXNhZ2UgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKGVzLT5mb3JtYXQg IT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAodXNhZ2UtPmlu YmxvY2sgPD0gMCAmJiB1c2FnZS0+b3V0YmxvY2sgPD0gMCkKKwkJcmV0dXJuIGZhbHNlOworCisJ ZWxzZQorCQlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFNob3cgc3RvcmFnZSBJL08gdXNhZ2Uu CisgKi8KK3N0YXRpYyB2b2lkCitzaG93X3N0b3JhZ2Vpb191c2FnZShFeHBsYWluU3RhdGUgKmVz LCBjb25zdCBTdG9yYWdlSU9Vc2FnZSAqdXNhZ2UpCit7CisJaWYgKGVzLT5mb3JtYXQgPT0gRVhQ TEFJTl9GT1JNQVRfVEVYVCkKKwl7CisJCS8qIFNob3cgb25seSBwb3NpdGl2ZSBjb3VudGVyIHZh bHVlcy4gKi8KKwkJaWYgKHVzYWdlLT5pbmJsb2NrIDw9IDAgJiYgdXNhZ2UtPm91dGJsb2NrIDw9 IDApCisJCQlyZXR1cm47CisKKwkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGVzLT5zdHIsICJTdG9yYWdlIEkvTzoiKTsKKwkJYXBwZW5kU3RyaW5nSW5m byhlcy0+c3RyLCAiIHJlYWQ9JWxkIHRpbWVzIiwgKGxvbmcpIHVzYWdlLT5pbmJsb2NrKTsKKwkJ YXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiIHdyaXRlPSVsZCB0aW1lcyIsIChsb25nKSB1c2Fn ZS0+b3V0YmxvY2spOworCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGVzLT5zdHIsICdcbicpOwor CX0KKwllbHNlCisJeworCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJTdG9yYWdlIEkvTyBSZWFk IiwgTlVMTCwKKwkJCQkJCQkgICB1c2FnZS0+aW5ibG9jaywgZXMpOworCQlFeHBsYWluUHJvcGVy dHlJbnRlZ2VyKCJTdG9yYWdlIEkvTyBSZWFkIiwgTlVMTCwKKwkJCQkJCQkgICB1c2FnZS0+b3V0 YmxvY2ssIGVzKTsKKwl9Cit9CisKIC8qCiAgKiBTaG93IFdBTCB1c2FnZSBkZXRhaWxzLgogICov CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggODk4OWMwYzg4Li5lMTE2MDFiMjEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9wcmVwYXJlLmMKQEAgLTU3OSw2ICs1NzksOCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4 ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK IAlpbnN0cl90aW1lCXBsYW5kdXJhdGlvbjsKIAlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwK IAkJCQlidWZ1c2FnZTsKKwlTdG9yYWdlSU9Vc2FnZSBzdG9yYWdlaW8sCisJCQkJc3RvcmFnZWlv X3N0YXJ0OwogCU1lbW9yeUNvbnRleHRDb3VudGVycyBtZW1fY291bnRlcnM7CiAJTWVtb3J5Q29u dGV4dCBwbGFubmVyX2N0eCA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBzYXZlZF9jdHggPSBOVUxM OwpAQCAtNTk0LDcgKzU5NiwxMSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpl eGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAl9CiAKIAlpZiAo ZXMtPmJ1ZmZlcnMpCisJewogCQlidWZ1c2FnZV9zdGFydCA9IHBnQnVmZmVyVXNhZ2U7CisJCUdl dFN0b3JhZ2VJT1VzYWdlKCZzdG9yYWdlaW9fc3RhcnQpOworCX0KKwogCUlOU1RSX1RJTUVfU0VU X0NVUlJFTlQocGxhbnN0YXJ0KTsKIAogCS8qIExvb2sgaXQgdXAgaW4gdGhlIGhhc2ggdGFibGUg Ki8KQEAgLTY0NCw2ICs2NTAsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpl eGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAl7CiAJCW1lbXNl dCgmYnVmdXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwogCQlCdWZmZXJVc2FnZUFjY3Vt RGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOworCQlHZXRT dG9yYWdlSU9Vc2FnZSgmc3RvcmFnZWlvKTsKIAl9CiAKIAlwbGFuX2xpc3QgPSBjcGxhbi0+c3Rt dF9saXN0OwpAQCAtNjU2LDYgKzY2Myw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0 bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlpZiAo cHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQogCQkJRXhwbGFpbk9uZVBsYW4ocHN0 bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHBzdGF0ZS0+cF9xdWVyeUVudiwK IAkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwp LAorCQkJCQkJICAgKGVzLT5idWZmZXJzID8gJnN0b3JhZ2VpbyA6IE5VTEwpLAogCQkJCQkJICAg ZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIAkJZWxzZQogCQkJRXhwbGFpbk9u ZVV0aWxpdHkocHN0bXQtPnV0aWxpdHlTdG10LCBpbnRvLCBlcywgcHN0YXRlLCBwYXJhbUxJKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDBkOTJlNjk0ZC4uNjNkNGIx Mzk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTczNyw3ICs3Mzcs NyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0 YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbgogCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9G aW5pc2gocHZzLT5wY3h0KTsKIAogCQlmb3IgKGludCBpID0gMDsgaSA8IHB2cy0+cGN4dC0+bndv cmtlcnNfbGF1bmNoZWQ7IGkrKykKLQkJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZwdnMtPmJ1 ZmZlcl91c2FnZVtpXSwgJnB2cy0+d2FsX3VzYWdlW2ldKTsKKwkJCUluc3RyQWNjdW1QYXJhbGxl bFF1ZXJ5KCZwdnMtPmJ1ZmZlcl91c2FnZVtpXSwgTlVMTCwgJnB2cy0+d2FsX3VzYWdlW2ldKTsK IAl9CiAKIAkvKgpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNt X3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJy Y2FsbGJhY2s7CiAKIAkvKiBQcmVwYXJlIHRvIHRyYWNrIGJ1ZmZlciB1c2FnZSBkdXJpbmcgcGFy YWxsZWwgZXhlY3V0aW9uICovCi0JSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKKwlJbnN0clN0 YXJ0UGFyYWxsZWxRdWVyeShOVUxMKTsKIAogCS8qIFByb2Nlc3MgaW5kZXhlcyB0byBwZXJmb3Jt IHZhY3V1bS9jbGVhbnVwICovCiAJcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfc2FmZV9pbmRleGVz KCZwdnMpOwpAQCAtMTA4NCw4ICsxMDg0LDggQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3Nl Z21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1 cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KIAlidWZmZXJfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1 cCh0b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CiAJd2FsX3Vz YWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRSwg ZmFsc2UpOwotCUluc3RyRW5kUGFyYWxsZWxRdWVyeSgmYnVmZmVyX3VzYWdlW1BhcmFsbGVsV29y a2VyTnVtYmVyXSwKLQkJCQkJCSAgJndhbF91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwor CUluc3RyRW5kUGFyYWxsZWxRdWVyeSgmYnVmZmVyX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVy XSwgTlVMTCwKKwkJCQkJCSAgJndhbF91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sIE5VTEwp OwogCiAJVGlkU3RvcmVEZXRhY2goZGVhZF9pdGVtcyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMKaW5kZXggZmY0ZDlkZDFiLi5hN2Q1ZjBkZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jCkBAIC02NCw2ICs2NCw3IEBACiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9RVUVS WV9URVhUCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDgpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9KSVRfSU5TVFJVTUVOVEFUSU9OIFVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwOSkK ICNkZWZpbmUgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQkJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAw MDAwMDAwQSkKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1NUT1JBR0VJT19VU0FHRQlVSU5UNjRDT05T VCgweEUwMDAwMDAwMDAwMDAwMEIpCiAKICNkZWZpbmUgUEFSQUxMRUxfVFVQTEVfUVVFVUVfU0la RQkJNjU1MzYKIApAQCAtNTk3LDYgKzU5OCw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAljaGFyCSAgICpwc3RtdF9zcGFjZTsK IAljaGFyCSAgICpwYXJhbWxpc3RpbmZvX3NwYWNlOwogCUJ1ZmZlclVzYWdlICpidWZ1c2FnZV9z cGFjZTsKKwlTdG9yYWdlSU9Vc2FnZSAqc3RvcmFnZWlvdXNhZ2Vfc3BhY2U7CiAJV2FsVXNhZ2Ug ICAqd2FsdXNhZ2Vfc3BhY2U7CiAJU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmluc3Ry dW1lbnRhdGlvbiA9IE5VTEw7CiAJU2hhcmVkSml0SW5zdHJ1bWVudGF0aW9uICpqaXRfaW5zdHJ1 bWVudGF0aW9uID0gTlVMTDsKQEAgLTY3OCw2ICs2ODAsMTMgQEAgRXhlY0luaXRQYXJhbGxlbFBs YW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkJICAgbXVsX3Np emUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKIAlzaG1fdG9jX2VzdGltYXRl X2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CiAKKwkvKgorCSAqIFNhbWUgdGhpbmcgZm9yIFN0 b3JhZ2VJT1VzYWdlLgorCSAqLworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGlt YXRvciwKKwkJCQkJCSAgIG11bF9zaXplKHNpemVvZihTdG9yYWdlSU9Vc2FnZSksIHBjeHQtPm53 b3JrZXJzKSk7CisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwor CiAJLyogRXN0aW1hdGUgc3BhY2UgZm9yIHR1cGxlIHF1ZXVlcy4gKi8KIAlzaG1fdG9jX2VzdGlt YXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCiAJCQkJCQkgICBtdWxfc2l6ZShQQVJBTExFTF9U VVBMRV9RVUVVRV9TSVpFLCBwY3h0LT5ud29ya2VycykpOwpAQCAtNzczLDYgKzc4MiwxMiBAQCBF eGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUs CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCB3YWx1 c2FnZV9zcGFjZSk7CiAJcGVpLT53YWxfdXNhZ2UgPSB3YWx1c2FnZV9zcGFjZTsKIAorCS8qIFNh bWUgZm9yIFN0b3JhZ2VJT1VzYWdlLiAqLworCXN0b3JhZ2Vpb3VzYWdlX3NwYWNlID0gc2htX3Rv Y19hbGxvY2F0ZShwY3h0LT50b2MsCisJCQkJCQkJCQkJCW11bF9zaXplKHNpemVvZihTdG9yYWdl SU9Vc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CisJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQ QVJBTExFTF9LRVlfU1RPUkFHRUlPX1VTQUdFLCBzdG9yYWdlaW91c2FnZV9zcGFjZSk7CisJcGVp LT5zdG9yYWdlaW9fdXNhZ2UgPSBzdG9yYWdlaW91c2FnZV9zcGFjZTsKKwogCS8qIFNldCB1cCB0 aGUgdHVwbGUgcXVldWVzIHRoYXQgdGhlIHdvcmtlcnMgd2lsbCB3cml0ZSBpbnRvLiAqLwogCXBl aS0+dHF1ZXVlID0gRXhlY1BhcmFsbGVsU2V0dXBUdXBsZVF1ZXVlcyhwY3h0LCBmYWxzZSk7CiAK QEAgLTExNjgsMTEgKzExODMsMTEgQEAgRXhlY1BhcmFsbGVsRmluaXNoKFBhcmFsbGVsRXhlY3V0 b3JJbmZvICpwZWkpCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvRmluaXNoKHBlaS0+cGN4dCk7 CiAKIAkvKgotCSAqIE5leHQsIGFjY3VtdWxhdGUgYnVmZmVyL1dBTCB1c2FnZS4gIChUaGlzIG11 c3Qgd2FpdCBmb3IgdGhlIHdvcmtlcnMgdG8KLQkgKiBmaW5pc2gsIG9yIHdlIG1pZ2h0IGdldCBp bmNvbXBsZXRlIGRhdGEuKQorCSAqIE5leHQsIGFjY3VtdWxhdGUgYnVmZmVyLCBXQUwsIGFuZCBT dG9yYWdlIEkvTyB1c2FnZS4gKFRoaXMgbXVzdCB3YWl0CisJICogZm9yIHRoZSB3b3JrZXJzIHRv IGZpbmlzaCwgb3Igd2UgbWlnaHQgZ2V0IGluY29tcGxldGUgZGF0YS4pCiAJICovCiAJZm9yIChp ID0gMDsgaSA8IG53b3JrZXJzOyBpKyspCi0JCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZwZWkt PmJ1ZmZlcl91c2FnZVtpXSwgJnBlaS0+d2FsX3VzYWdlW2ldKTsKKwkJSW5zdHJBY2N1bVBhcmFs bGVsUXVlcnkoJnBlaS0+YnVmZmVyX3VzYWdlW2ldLCAmcGVpLT5zdG9yYWdlaW9fdXNhZ2VbaV0s ICZwZWktPndhbF91c2FnZVtpXSk7CiAKIAlwZWktPmZpbmlzaGVkID0gdHJ1ZTsKIH0KQEAgLTE0 MDQsNiArMTQxOSw4IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90 b2MgKnRvYykKIHsKIAlGaXhlZFBhcmFsbGVsRXhlY3V0b3JTdGF0ZSAqZnBlczsKIAlCdWZmZXJV c2FnZSAqYnVmZmVyX3VzYWdlOworCVN0b3JhZ2VJT1VzYWdlICpzdG9yYWdlaW9fdXNhZ2U7CisJ U3RvcmFnZUlPVXNhZ2Ugc3RvcmFnZWlvX3VzYWdlX3N0YXJ0ID0gezB9OwogCVdhbFVzYWdlICAg KndhbF91c2FnZTsKIAlEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyOwogCVF1ZXJ5RGVzYyAgKnF1ZXJ5 RGVzYzsKQEAgLTE0NTcsMTMgKzE0NzQsMTQgQEAgUGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21l bnQgKnNlZywgc2htX3RvYyAqdG9jKQogCUV4ZWNTZXRUdXBsZUJvdW5kKGZwZXMtPnR1cGxlc19u ZWVkZWQsIHF1ZXJ5RGVzYy0+cGxhbnN0YXRlKTsKIAogCS8qCi0JICogUHJlcGFyZSB0byB0cmFj ayBidWZmZXIvV0FMIHVzYWdlIGR1cmluZyBxdWVyeSBleGVjdXRpb24uCisJICogUHJlcGFyZSB0 byB0cmFjayBidWZmZXIsIFdBTCwgYW5kIFN0b3JhZ2VJL08gdXNhZ2UgZHVyaW5nIHF1ZXJ5CisJ ICogZXhlY3V0aW9uLgogCSAqCiAJICogV2UgZG8gdGhpcyBhZnRlciBzdGFydGluZyB1cCB0aGUg ZXhlY3V0b3IgdG8gbWF0Y2ggd2hhdCBoYXBwZW5zIGluIHRoZQogCSAqIGxlYWRlciwgd2hpY2gg YWxzbyBkb2Vzbid0IGNvdW50IGJ1ZmZlciBhY2Nlc3NlcyBhbmQgV0FMIGFjdGl2aXR5IHRoYXQK IAkgKiBvY2N1ciBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cC4KIAkgKi8KLQlJbnN0clN0YXJ0UGFy YWxsZWxRdWVyeSgpOworCUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCZzdG9yYWdlaW9fdXNhZ2Vf c3RhcnQpOwogCiAJLyoKIAkgKiBSdW4gdGhlIHBsYW4uICBJZiB3ZSBzcGVjaWZpZWQgYSB0dXBs ZSBib3VuZCwgYmUgY2FyZWZ1bCBub3QgdG8gZGVtYW5kCkBAIC0xNDc2LDExICsxNDk0LDE0IEBA IFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBT aHV0IGRvd24gdGhlIGV4ZWN1dG9yICovCiAJRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKIAot CS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24uICov CisJLyogUmVwb3J0IGJ1ZmZlciwgV0FMLCBhbmQgc3RvcmFnZUlPIHVzYWdlIGR1cmluZyBwYXJh bGxlbCBleGVjdXRpb24uICovCiAJYnVmZmVyX3VzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQ QVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CisJc3RvcmFnZWlvX3VzYWdlID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfU1RPUkFHRUlPX1VTQUdFLCBmYWxzZSk7CiAJ d2FsX3VzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCBm YWxzZSk7CiAJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KCZidWZmZXJfdXNhZ2VbUGFyYWxsZWxXb3Jr ZXJOdW1iZXJdLAotCQkJCQkJICAmd2FsX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CisJ CQkJCQkgICZzdG9yYWdlaW9fdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAorCQkJCQkJICAm d2FsX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwkJCQkJCSAgJnN0b3JhZ2Vpb191c2Fn ZV9zdGFydCk7CiAKIAkvKiBSZXBvcnQgaW5zdHJ1bWVudGF0aW9uIGRhdGEgaWYgYW55IGluc3Ry dW1lbnRhdGlvbiBvcHRpb25zIGFyZSBzZXQuICovCiAJaWYgKGluc3RydW1lbnRhdGlvbiAhPSBO VUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IDJkMzU2OWIzNy4uNzY2NGUwMWNl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0xMywxNiArMTMsMjEgQEAKICAqLwog I2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KICNpbmNs dWRlIDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKIAogQnVm ZmVyVXNhZ2UgcGdCdWZmZXJVc2FnZTsKIHN0YXRpYyBCdWZmZXJVc2FnZSBzYXZlX3BnQnVmZmVy VXNhZ2U7CisKKy8qIE9ubHkgY291bnQgcGFyYWxsZWwgd29ya2VycycgdXNhZ2UgKi8KK1N0b3Jh Z2VJT1VzYWdlIHBnU3RvcmFnZUlPVXNhZ2VQYXJhbGxlbDsKIFdhbFVzYWdlCXBnV2FsVXNhZ2U7 CiBzdGF0aWMgV2FsVXNhZ2Ugc2F2ZV9wZ1dhbFVzYWdlOwogCiBzdGF0aWMgdm9pZCBCdWZmZXJV c2FnZUFkZChCdWZmZXJVc2FnZSAqZHN0LCBjb25zdCBCdWZmZXJVc2FnZSAqYWRkKTsKK3ZvaWQJ CVN0b3JhZ2VJT1VzYWdlQWRkKFN0b3JhZ2VJT1VzYWdlICpkc3QsIGNvbnN0IFN0b3JhZ2VJT1Vz YWdlICphZGQpOwogc3RhdGljIHZvaWQgV2FsVXNhZ2VBZGQoV2FsVXNhZ2UgKmRzdCwgV2FsVXNh Z2UgKmFkZCk7CiAKIApAQCAtMTk3LDI3ICsyMDIsNDYgQEAgSW5zdHJBZ2dOb2RlKEluc3RydW1l bnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24gKmFkZCkKIAogLyogbm90ZSBjdXJyZW50IHZh bHVlcyBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0b3Igc3RhcnR1cCAqLwogdm9pZAotSW5zdHJTdGFy dFBhcmFsbGVsUXVlcnkodm9pZCkKK0luc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KFN0b3JhZ2VJT1Vz YWdlICpzdG9yYWdlaW91c2FnZSkKIHsKIAlzYXZlX3BnQnVmZmVyVXNhZ2UgPSBwZ0J1ZmZlclVz YWdlOwogCXNhdmVfcGdXYWxVc2FnZSA9IHBnV2FsVXNhZ2U7CisKKwlpZiAoc3RvcmFnZWlvdXNh Z2UgIT0gTlVMTCkKKwkJR2V0U3RvcmFnZUlPVXNhZ2Uoc3RvcmFnZWlvdXNhZ2UpOwogfQogCiAv KiByZXBvcnQgdXNhZ2UgYWZ0ZXIgcGFyYWxsZWwgZXhlY3V0b3Igc2h1dGRvd24gKi8KIHZvaWQK LUluc3RyRW5kUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3 YWx1c2FnZSkKK0luc3RyRW5kUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFN0 b3JhZ2VJT1VzYWdlICpzdG9yYWdlaW91c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlLCBTdG9yYWdl SU9Vc2FnZSAqc3RvcmFnZWlvdXNhZ2Vfc3RhcnQpCiB7CiAJbWVtc2V0KGJ1ZnVzYWdlLCAwLCBz aXplb2YoQnVmZmVyVXNhZ2UpKTsKIAlCdWZmZXJVc2FnZUFjY3VtRGlmZihidWZ1c2FnZSwgJnBn QnVmZmVyVXNhZ2UsICZzYXZlX3BnQnVmZmVyVXNhZ2UpOworCisJaWYgKHN0b3JhZ2Vpb3VzYWdl ICE9IE5VTEwgJiYgc3RvcmFnZWlvdXNhZ2Vfc3RhcnQgIT0gTlVMTCkKKwl7CisJCXN0cnVjdCBT dG9yYWdlSU9Vc2FnZSBzdG9yYWdlaW91c2FnZV9lbmQ7CisKKwkJR2V0U3RvcmFnZUlPVXNhZ2Uo JnN0b3JhZ2Vpb3VzYWdlX2VuZCk7CisKKwkJbWVtc2V0KHN0b3JhZ2Vpb3VzYWdlLCAwLCBzaXpl b2YoU3RvcmFnZUlPVXNhZ2UpKTsKKwkJU3RvcmFnZUlPVXNhZ2VBY2N1bURpZmYoc3RvcmFnZWlv dXNhZ2UsICZzdG9yYWdlaW91c2FnZV9lbmQsIHN0b3JhZ2Vpb3VzYWdlX3N0YXJ0KTsKKworCQll cmVwb3J0KERFQlVHMSwKKwkJCQkoZXJybXNnKCJQYXJhbGxlbCB3b3JrZXIncyBzdG9yYWdlIEkv TyB0aW1lczogaW5ibG9jazolbGQgb3V0YmxvY2s6JWxkIiwKKwkJCQkJCXN0b3JhZ2Vpb3VzYWdl LT5pbmJsb2NrLCBzdG9yYWdlaW91c2FnZS0+b3V0YmxvY2spKSk7CisJfQogCW1lbXNldCh3YWx1 c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7CiAJV2FsVXNhZ2VBY2N1bURpZmYod2FsdXNhZ2Us ICZwZ1dhbFVzYWdlLCAmc2F2ZV9wZ1dhbFVzYWdlKTsKIH0KIAogLyogYWNjdW11bGF0ZSB3b3Jr IGRvbmUgYnkgd29ya2VycyBpbiBsZWFkZXIncyBzdGF0cyAqLwogdm9pZAotSW5zdHJBY2N1bVBh cmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpCitJ bnN0ckFjY3VtUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFN0b3JhZ2VJT1Vz YWdlICpzdG9yYWdlaW91c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKQogewogCUJ1ZmZlclVzYWdl QWRkKCZwZ0J1ZmZlclVzYWdlLCBidWZ1c2FnZSk7CisJaWYgKHN0b3JhZ2Vpb3VzYWdlICE9IE5V TEwpCisJCVN0b3JhZ2VJT1VzYWdlQWRkKCZwZ1N0b3JhZ2VJT1VzYWdlUGFyYWxsZWwsIHN0b3Jh Z2Vpb3VzYWdlKTsKIAlXYWxVc2FnZUFkZCgmcGdXYWxVc2FnZSwgd2FsdXNhZ2UpOwogfQogCkBA IC0yNzMsNiArMjk3LDM3IEBAIEJ1ZmZlclVzYWdlQWNjdW1EaWZmKEJ1ZmZlclVzYWdlICpkc3Qs CiAJCQkJCQkgIGFkZC0+dGVtcF9ibGtfd3JpdGVfdGltZSwgc3ViLT50ZW1wX2Jsa193cml0ZV90 aW1lKTsKIH0KIAorLyogaGVscGVyIGZ1bmN0aW9ucyBmb3IgU3RvcmFnZUlPVXNhZ2UgdXNhZ2Ug YWNjdW11bGF0aW9uICovCit2b2lkCitTdG9yYWdlSU9Vc2FnZUFkZChTdG9yYWdlSU9Vc2FnZSAq ZHN0LCBjb25zdCBTdG9yYWdlSU9Vc2FnZSAqYWRkKQoreworCWRzdC0+aW5ibG9jayArPSBhZGQt PmluYmxvY2s7CisJZHN0LT5vdXRibG9jayArPSBhZGQtPm91dGJsb2NrOworfQorCit2b2lkCitT dG9yYWdlSU9Vc2FnZUFjY3VtRGlmZihTdG9yYWdlSU9Vc2FnZSAqZHN0LCBjb25zdCBTdG9yYWdl SU9Vc2FnZSAqYWRkLCBjb25zdCBTdG9yYWdlSU9Vc2FnZSAqc3ViKQoreworCWRzdC0+aW5ibG9j ayArPSBhZGQtPmluYmxvY2sgLSBzdWItPmluYmxvY2s7CisJZHN0LT5vdXRibG9jayArPSBhZGQt Pm91dGJsb2NrIC0gc3ViLT5vdXRibG9jazsKK30KKworLyogQ2FwdHVyZXMgdGhlIGN1cnJlbnQg c3RvcmFnZSBJL08gdXNhZ2Ugc3RhdGlzdGljcyAqLwordm9pZAorR2V0U3RvcmFnZUlPVXNhZ2Uo U3RvcmFnZUlPVXNhZ2UgKnVzYWdlKQoreworCXN0cnVjdCBydXNhZ2UgcnVzYWdlOworCisJaWYg KGdldHJ1c2FnZShSVVNBR0VfU0VMRiwgJnJ1c2FnZSkpCisJeworCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfU1lTVEVNX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJnZXRydXNh Z2UoKSBmYWlsZWQ6ICVtIikpKTsKKwl9CisJdXNhZ2UtPmluYmxvY2sgPSBydXNhZ2UucnVfaW5i bG9jazsKKwl1c2FnZS0+b3V0YmxvY2sgPSBydXNhZ2UucnVfb3VibG9jazsKK30KKwogLyogaGVs cGVyIGZ1bmN0aW9ucyBmb3IgV0FMIHVzYWdlIGFjY3VtdWxhdGlvbiAqLwogc3RhdGljIHZvaWQK IFdhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3QsIFdhbFVzYWdlICphZGQpCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBs YWluLmgKaW5kZXggZWE3NDE5OTUxLi44ZTY3ZGQ1N2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgK QEAgLTEwOCw2ICsxMDgsNyBAQCBleHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZv IHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0 cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNh Z2UsCisJCQkJCQkgICBjb25zdCBTdG9yYWdlSU9Vc2FnZSAqcGxhbnN0b3JhZ2VpbywKIAkJCQkJ CSAgIGNvbnN0IE1lbW9yeUNvbnRleHRDb3VudGVycyAqbWVtX2NvdW50ZXJzKTsKIAogZXh0ZXJu IHZvaWQgRXhwbGFpblByaW50UGxhbihFeHBsYWluU3RhdGUgKmVzLCBRdWVyeURlc2MgKnF1ZXJ5 RGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFyYWxsZWwuaCBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oCmluZGV4IDVlNzEwNmMzOS4uNWM4 YmM3NmM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFyYWxsZWwuaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFyYWxsZWwuaApAQCAtMjYsNiArMjYsOCBA QCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEV4ZWN1dG9ySW5mbwogCVBsYW5TdGF0ZSAgKnBsYW5z dGF0ZTsJCS8qIHBsYW4gc3VidHJlZSB3ZSdyZSBydW5uaW5nIGluIHBhcmFsbGVsICovCiAJUGFy YWxsZWxDb250ZXh0ICpwY3h0OwkJLyogcGFyYWxsZWwgY29udGV4dCB3ZSdyZSB1c2luZyAqLwog CUJ1ZmZlclVzYWdlICpidWZmZXJfdXNhZ2U7CS8qIHBvaW50cyB0byBidWZ1c2FnZSBhcmVhIGlu IERTTSAqLworCVN0b3JhZ2VJT1VzYWdlICpzdG9yYWdlaW9fdXNhZ2U7CS8qIHBvaW50cyB0byBz dG9yYWdlaW8gdXNhZ2UgYXJlYSBpbgorCQkJCQkJCQkJCSAqIERTTSAqLwogCVdhbFVzYWdlICAg KndhbF91c2FnZTsJCS8qIHdhbHVzYWdlIGFyZWEgaW4gRFNNICovCiAJU2hhcmVkRXhlY3V0b3JJ bnN0cnVtZW50YXRpb24gKmluc3RydW1lbnRhdGlvbjsgLyogb3B0aW9uYWwgKi8KIAlzdHJ1Y3Qg U2hhcmVkSml0SW5zdHJ1bWVudGF0aW9uICpqaXRfaW5zdHJ1bWVudGF0aW9uOwkvKiBvcHRpb25h bCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IDVhNmVmZjc1Yy4uN2ZjNzI4MWIx IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKKysrIGIvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCkBAIC00MSw2ICs0MSwxNCBAQCB0eXBlZGVm IHN0cnVjdCBCdWZmZXJVc2FnZQogCWluc3RyX3RpbWUJdGVtcF9ibGtfd3JpdGVfdGltZTsJLyog dGltZSBzcGVudCB3cml0aW5nIHRlbXAgYmxvY2tzICovCiB9IEJ1ZmZlclVzYWdlOwogCit0eXBl ZGVmIHN0cnVjdCBTdG9yYWdlSU9Vc2FnZQoreworCWxvbmcJCWluYmxvY2s7CQkvKiAjIG9mIHRp bWVzIHRoZSBmaWxlIHN5c3RlbSBoYWQgdG8gcGVyZm9ybQorCQkJCQkJCQkgKiBpbnB1dCAqLwor CWxvbmcJCW91dGJsb2NrOwkJLyogIyBvZiB0aW1lcyB0aGUgZmlsZSBzeXN0ZW0gaGFkIHRvIHBl cmZvcm0KKwkJCQkJCQkJICogb3V0cHV0ICovCit9IFN0b3JhZ2VJT1VzYWdlOworCiAvKgogICog V2FsVXNhZ2UgdHJhY2tzIG9ubHkgV0FMIGFjdGl2aXR5IGxpa2UgV0FMIHJlY29yZHMgZ2VuZXJh dGlvbiB0aGF0CiAgKiBjYW4gYmUgbWVhc3VyZWQgcGVyIHF1ZXJ5IGFuZCBpcyBkaXNwbGF5ZWQg YnkgRVhQTEFJTiBjb21tYW5kLApAQCAtOTksNiArMTA3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV29y a2VySW5zdHJ1bWVudGF0aW9uCiB9IFdvcmtlckluc3RydW1lbnRhdGlvbjsKIAogZXh0ZXJuIFBH RExMSU1QT1JUIEJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7CitleHRlcm4gUEdETExJTVBPUlQg U3RvcmFnZUlPVXNhZ2UgcGdTdG9yYWdlSU9Vc2FnZVBhcmFsbGVsOwogZXh0ZXJuIFBHRExMSU1Q T1JUIFdhbFVzYWdlIHBnV2FsVXNhZ2U7CiAKIGV4dGVybiBJbnN0cnVtZW50YXRpb24gKkluc3Ry QWxsb2MoaW50IG4sIGludCBpbnN0cnVtZW50X29wdGlvbnMsCkBAIC0xMDksMTEgKzExOCwxNSBA QCBleHRlcm4gdm9pZCBJbnN0clN0b3BOb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJs ZSBuVHVwbGVzKTsKIGV4dGVybiB2b2lkIEluc3RyVXBkYXRlVHVwbGVDb3VudChJbnN0cnVtZW50 YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcyk7CiBleHRlcm4gdm9pZCBJbnN0ckVuZExvb3Ao SW5zdHJ1bWVudGF0aW9uICppbnN0cik7CiBleHRlcm4gdm9pZCBJbnN0ckFnZ05vZGUoSW5zdHJ1 bWVudGF0aW9uICpkc3QsIEluc3RydW1lbnRhdGlvbiAqYWRkKTsKLWV4dGVybiB2b2lkIEluc3Ry U3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQpOwotZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1 ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKLWV4dGVybiB2 b2lkIEluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNh Z2UgKndhbHVzYWdlKTsKK2V4dGVybiB2b2lkIEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KFN0b3Jh Z2VJT1VzYWdlICpzdG9yYWdlaW91c2FnZSk7CitleHRlcm4gdm9pZCBJbnN0ckVuZFBhcmFsbGVs UXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBTdG9yYWdlSU9Vc2FnZSAqc3RvcmFnZWlvdXNh Z2UsIFdhbFVzYWdlICp3YWx1c2FnZSwgU3RvcmFnZUlPVXNhZ2UgKnN0b3JhZ2Vpb3VzYWdlX3N0 YXJ0KTsKK2V4dGVybiB2b2lkIEluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpi dWZ1c2FnZSwgU3RvcmFnZUlPVXNhZ2UgKnN0b3JhZ2Vpb3VzYWdlLCBXYWxVc2FnZSAqd2FsdXNh Z2UpOwogZXh0ZXJuIHZvaWQgQnVmZmVyVXNhZ2VBY2N1bURpZmYoQnVmZmVyVXNhZ2UgKmRzdCwK IAkJCQkJCQkJIGNvbnN0IEJ1ZmZlclVzYWdlICphZGQsIGNvbnN0IEJ1ZmZlclVzYWdlICpzdWIp OworZXh0ZXJuIHZvaWQgU3RvcmFnZUlPVXNhZ2VBY2N1bURpZmYoU3RvcmFnZUlPVXNhZ2UgKmRz dCwKKwkJCQkJCQkJCWNvbnN0IFN0b3JhZ2VJT1VzYWdlICphZGQsIGNvbnN0IFN0b3JhZ2VJT1Vz YWdlICpzdWIpOworZXh0ZXJuIHZvaWQgU3RvcmFnZUlPVXNhZ2VBZGQoU3RvcmFnZUlPVXNhZ2Ug KmRzdCwgY29uc3QgU3RvcmFnZUlPVXNhZ2UgKmFkZCk7CitleHRlcm4gdm9pZCBHZXRTdG9yYWdl SU9Vc2FnZShTdG9yYWdlSU9Vc2FnZSAqdXNhZ2UpOwogZXh0ZXJuIHZvaWQgV2FsVXNhZ2VBY2N1 bURpZmYoV2FsVXNhZ2UgKmRzdCwgY29uc3QgV2FsVXNhZ2UgKmFkZCwKIAkJCQkJCQkgIGNvbnN0 IFdhbFVzYWdlICpzdWIpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3J0L3dpbjMyL3N5 cy9yZXNvdXJjZS5oIGIvc3JjL2luY2x1ZGUvcG9ydC93aW4zMi9zeXMvcmVzb3VyY2UuaAppbmRl eCBhMTRmZWViNTguLjI3MGRjMzdjOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9ydC93aW4z Mi9zeXMvcmVzb3VyY2UuaAorKysgYi9zcmMvaW5jbHVkZS9wb3J0L3dpbjMyL3N5cy9yZXNvdXJj ZS5oCkBAIC0xMyw2ICsxMyw4IEBAIHN0cnVjdCBydXNhZ2UKIHsKIAlzdHJ1Y3QgdGltZXZhbCBy dV91dGltZTsJLyogdXNlciB0aW1lIHVzZWQgKi8KIAlzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsJ Lyogc3lzdGVtIHRpbWUgdXNlZCAqLworCWxvbmcJCXJ1X2luYmxvY2s7CQkvKiBDdXJyZW50bHkg YWx3YXlzIDAgZm9yIFdpbmRvd3MgKi8KKwlsb25nCQlydV9vdWJsb2NrOwkJLyogQ3VycmVudGx5 IGFsd2F5cyAwIGZvciBXaW5kb3dzICovCiB9OwogCiBleHRlcm4gaW50CWdldHJ1c2FnZShpbnQg d2hvLCBzdHJ1Y3QgcnVzYWdlICpydXNhZ2UpOwpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvd2luMzJn ZXRydXNhZ2UuYyBiL3NyYy9wb3J0L3dpbjMyZ2V0cnVzYWdlLmMKaW5kZXggNmExOTdjOTQzLi4y N2YwZWEwNTIgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3dpbjMyZ2V0cnVzYWdlLmMKKysrIGIvc3Jj L3BvcnQvd2luMzJnZXRydXNhZ2UuYwpAQCAtNTcsNSArNTcsOSBAQCBnZXRydXNhZ2UoaW50IHdo bywgc3RydWN0IHJ1c2FnZSAqcnVzYWdlKQogCXJ1c2FnZS0+cnVfdXRpbWUudHZfc2VjID0gbGku UXVhZFBhcnQgLyAxMDAwMDAwTDsKIAlydXNhZ2UtPnJ1X3V0aW1lLnR2X3VzZWMgPSBsaS5RdWFk UGFydCAlIDEwMDAwMDBMOwogCisJLyogQ3VycmVudGx5IGFsd2F5cyAwIGZvciBXaW5kb3dzICov CisJcnVzYWdlLT5ydV9pbmJsb2NrID0gMDsKKwlydXNhZ2UtPnJ1X291YmxvY2sgPSAwOworCiAJ cmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxh aW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dAppbmRleCBlZTMx ZTQxZDUuLmY1NjlkOGY2ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9l eHBsYWluLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CkBA IC0xMjcsMTAgKzEyNywxNiBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5 emUsIGJ1ZmZlcnMsIGZvcm1hdCB4bWwpIHNlbGVjdCAqIGZyb20gaW50OAogICAgICAgIDxMb2Nh bC1Xcml0dGVuLUJsb2Nrcz5OPC9Mb2NhbC1Xcml0dGVuLUJsb2Nrcz4gICsKICAgICAgICA8VGVt cC1SZWFkLUJsb2Nrcz5OPC9UZW1wLVJlYWQtQmxvY2tzPiAgICAgICAgICArCiAgICAgICAgPFRl bXAtV3JpdHRlbi1CbG9ja3M+TjwvVGVtcC1Xcml0dGVuLUJsb2Nrcz4gICAgKworICAgICAgIDxT dG9yYWdlLUktTy1SZWFkPk48L1N0b3JhZ2UtSS1PLVJlYWQ+ICAgICAgICAgICsKKyAgICAgICA8 U3RvcmFnZS1JLU8tUmVhZD5OPC9TdG9yYWdlLUktTy1SZWFkPiAgICAgICAgICArCiAgICAgIDwv UGxhbm5pbmc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICA8 UGxhbm5pbmctVGltZT5OLk48L1BsYW5uaW5nLVRpbWU+ICAgICAgICAgICAgICAgICsKICAgICAg PFRyaWdnZXJzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAg IDwvVHJpZ2dlcnM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICA8RXhlY3V0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICA8U3RvcmFnZS1JLU8tUmVhZD5OPC9TdG9yYWdlLUktTy1SZWFkPiAgICAgICAgICArCisg ICAgICAgPFN0b3JhZ2UtSS1PLVJlYWQ+TjwvU3RvcmFnZS1JLU8tUmVhZD4gICAgICAgICAgKwor ICAgICA8L0V4ZWN1dGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK ICAgICAgPEV4ZWN1dGlvbi1UaW1lPk4uTjwvRXhlY3V0aW9uLVRpbWU+ICAgICAgICAgICAgICAr CiAgICA8L1F1ZXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KwogIDwvZXhwbGFpbj4KQEAgLTE3NSw2ICsxODEsOCBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIo J2V4cGxhaW4gKGFuYWx5emUsIHNlcmlhbGl6ZSwgYnVmZmVycywgZm9ybWF0IHlhbWwpIHNlbGVj dAogICAgICBMb2NhbCBXcml0dGVuIEJsb2NrczogTiAgKwogICAgICBUZW1wIFJlYWQgQmxvY2tz OiBOICAgICAgKwogICAgICBUZW1wIFdyaXR0ZW4gQmxvY2tzOiBOICAgKworICAgICBTdG9yYWdl IEkvTyBSZWFkOiBOICAgICAgKworICAgICBTdG9yYWdlIEkvTyBSZWFkOiBOICAgICAgKwogICAg UGxhbm5pbmcgVGltZTogTi5OICAgICAgICAgKwogICAgVHJpZ2dlcnM6ICAgICAgICAgICAgICAg ICAgKwogICAgU2VyaWFsaXphdGlvbjogICAgICAgICAgICAgKwpAQCAtMTkxLDYgKzE5OSw5IEBA IHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgc2VyaWFsaXplLCBidWZm ZXJzLCBmb3JtYXQgeWFtbCkgc2VsZWN0CiAgICAgIExvY2FsIFdyaXR0ZW4gQmxvY2tzOiBOICAr CiAgICAgIFRlbXAgUmVhZCBCbG9ja3M6IE4gICAgICArCiAgICAgIFRlbXAgV3JpdHRlbiBCbG9j a3M6IE4gICArCisgICBFeGVjdXRpb246ICAgICAgICAgICAgICAgICArCisgICAgIFN0b3JhZ2Ug SS9PIFJlYWQ6IE4gICAgICArCisgICAgIFN0b3JhZ2UgSS9PIFJlYWQ6IE4gICAgICArCiAgICBF eGVjdXRpb24gVGltZTogTi5OCiAoMSByb3cpCiAKQEAgLTIzNyw3ICsyNDgsMTMgQEAgc2VsZWN0 IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChidWZmZXJzLCBmb3JtYXQganNvbikgc2VsZWN0ICog ZnJvbSBpbnQ4X3RibCBpOCcKICAgICAgICAiTG9jYWwgRGlydGllZCBCbG9ja3MiOiBOLCAgKwog ICAgICAgICJMb2NhbCBXcml0dGVuIEJsb2NrcyI6IE4sICArCiAgICAgICAgIlRlbXAgUmVhZCBC bG9ja3MiOiBOLCAgICAgICsKLSAgICAgICAiVGVtcCBXcml0dGVuIEJsb2NrcyI6IE4gICAgKwor ICAgICAgICJUZW1wIFdyaXR0ZW4gQmxvY2tzIjogTiwgICArCisgICAgICAgIlN0b3JhZ2UgSS9P IFJlYWQiOiBOLCAgICAgICsKKyAgICAgICAiU3RvcmFnZSBJL08gUmVhZCI6IE4gICAgICAgKwor ICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICJFeGVjdXRpb24iOiB7 ICAgICAgICAgICAgICAgICsKKyAgICAgICAiU3RvcmFnZSBJL08gUmVhZCI6IE4sICAgICAgKwor ICAgICAgICJTdG9yYWdlIEkvTyBSZWFkIjogTiAgICAgICArCiAgICAgIH0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwog IF0KQEAgLTI5OSwxMSArMzE2LDE3IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAo YW5hbHl6ZSwgYnVmZmVycywgZm9ybWF0IGpzb24pIHNlbGVjdCAqIGZyb20gaW50CiAgICAgICAg IkxvY2FsIEkvTyBSZWFkIFRpbWUiOiBOLk4sICArCiAgICAgICAgIkxvY2FsIEkvTyBXcml0ZSBU aW1lIjogTi5OLCArCiAgICAgICAgIlRlbXAgSS9PIFJlYWQgVGltZSI6IE4uTiwgICArCi0gICAg ICAgIlRlbXAgSS9PIFdyaXRlIFRpbWUiOiBOLk4gICArCisgICAgICAgIlRlbXAgSS9PIFdyaXRl IFRpbWUiOiBOLk4sICArCisgICAgICAgIlN0b3JhZ2UgSS9PIFJlYWQiOiBOLCAgICAgICArCisg ICAgICAgIlN0b3JhZ2UgSS9PIFJlYWQiOiBOICAgICAgICArCiAgICAgIH0sICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCiAgICAgICJQbGFubmluZyBUaW1lIjogTi5OLCAgICAgICAgICAr CiAgICAgICJUcmlnZ2VycyI6IFsgICAgICAgICAgICAgICAgICArCiAgICAgIF0sICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICJFeGVjdXRpb24iOiB7ICAgICAgICAgICAgICAg ICArCisgICAgICAgIlN0b3JhZ2UgSS9PIFJlYWQiOiBOLCAgICAgICArCisgICAgICAgIlN0b3Jh Z2UgSS9PIFJlYWQiOiBOICAgICAgICArCisgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCiAgICAgICJFeGVjdXRpb24gVGltZSI6IE4uTiAgICAgICAgICArCiAgICB9ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgXQpAQCAtNDIzLDEyICs0NDYsMTggQEAgc2Vs ZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChtZW1vcnksIGFuYWx5emUsIGZvcm1hdCBqc29u KSBzZWxlY3QgKiBmcm9tIGludDgKICAgICAgICAiTG9jYWwgV3JpdHRlbiBCbG9ja3MiOiBOLCAg KwogICAgICAgICJUZW1wIFJlYWQgQmxvY2tzIjogTiwgICAgICArCiAgICAgICAgIlRlbXAgV3Jp dHRlbiBCbG9ja3MiOiBOLCAgICsKKyAgICAgICAiU3RvcmFnZSBJL08gUmVhZCI6IE4sICAgICAg KworICAgICAgICJTdG9yYWdlIEkvTyBSZWFkIjogTiwgICAgICArCiAgICAgICAgIk1lbW9yeSBV c2VkIjogTiwgICAgICAgICAgICsKICAgICAgICAiTWVtb3J5IEFsbG9jYXRlZCI6IE4gICAgICAg KwogICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICJQbGFubmluZyBU aW1lIjogTi5OLCAgICAgICAgICsKICAgICAgIlRyaWdnZXJzIjogWyAgICAgICAgICAgICAgICAg KwogICAgICBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICJFeGVjdXRpb24i OiB7ICAgICAgICAgICAgICAgICsKKyAgICAgICAiU3RvcmFnZSBJL08gUmVhZCI6IE4sICAgICAg KworICAgICAgICJTdG9yYWdlIEkvTyBSZWFkIjogTiAgICAgICArCisgICAgIH0sICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKICAgICAgIkV4ZWN1dGlvbiBUaW1lIjogTi5OICAgICAgICAg KwogICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgXQpAQCAtNjQxLDYgKzY3 MCw3IEBAIHNlbGVjdCBqc29uYl9wcmV0dHkoCiAgICAgICAgICB9LCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICAgICAiUGxhbm5pbmciOiB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICAgICAgICAgIkxv Y2FsIEhpdCBCbG9ja3MiOiAwLCAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgIlN0b3JhZ2UgSS9PIFJlYWQiOiAwLCAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAg ICAgICAgICAgIlRlbXAgUmVhZCBCbG9ja3MiOiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAr CiAgICAgICAgICAgICAgIkxvY2FsIFJlYWQgQmxvY2tzIjogMCwgICAgICAgICAgICAgICAgICAg ICAgICArCiAgICAgICAgICAgICAgIlNoYXJlZCBIaXQgQmxvY2tzIjogMCwgICAgICAgICAgICAg ICAgICAgICAgICArCkBAIC02NTMsNiArNjgzLDkgQEAgc2VsZWN0IGpzb25iX3ByZXR0eSgKICAg ICAgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKICAgICAgICAgICJUcmlnZ2VycyI6IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKICAgICAgICAgIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICJFeGVjdXRpb24iOiB7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAiU3RvcmFnZSBJL08gUmVhZCI6IDAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIH0sICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKICAgICAgICAgICJQbGFubmluZyBUaW1l IjogMC4wLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKICAgICAgICAgICJFeGVjdXRp b24gVGltZSI6IDAuMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKICAgICAgfSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKZGlmZiAt LWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYTI2NDRhMmU2Li43MzBkZTMyNTUgMTAwNjQ0Ci0tLSBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CkBAIC0yNTU4LDYgKzI1NTgsNyBAQCBTU0wKIFNTTEV4dGVuc2lvbklu Zm9Db250ZXh0CiBTU0xfQ1RYCiBTVEFSVFVQSU5GTworU3RvcmFnZUlPVXNhZ2UKIFNUUkxFTgog U1YKIFNZTkNIUk9OSVpBVElPTl9CQVJSSUVSCgpiYXNlLWNvbW1pdDogMTQ3OTNmNDcxOTJiNWVi MDIxOTdjZDAzYWZiODg1NTlkNzUxNGI3NgotLSAKMi4zNC4xCgo= --=_d4c5f2510b21db3e97bd094b13bd0c32--