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 1vpkAz-00EuVh-2U for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Feb 2026 09:36:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vpkAy-00EuI0-1v for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Feb 2026 09:36:56 +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.96) (envelope-from ) id 1vpkAx-00EuHq-2V for pgsql-hackers@lists.postgresql.org; Tue, 10 Feb 2026 09:36:56 +0000 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vpkAv-00000001Pe4-1QXB for pgsql-hackers@lists.postgresql.org; Tue, 10 Feb 2026 09:36:54 +0000 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-3562258142fso1710113a91.3 for ; Tue, 10 Feb 2026 01:36:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770716212; cv=none; d=google.com; s=arc-20240605; b=JbvuUPwpeHu8dnBmXVElTQlti6LS0OusvOwnwnVzcRGurPTdyCUQxYgoZTsQ3Urjiw wKJ2QQjkM6A8elCUMi7yrmAhurM7vqqIt5Z46t3CedIQyYZJGunCYgWcjotsNvnzV2je HWVjvK0t8hUo2v/HumQeQ0hB85aHTIL04SoXrpbr9ZGPengGkSp0+yckDftVioxZOohd ToYSQdnxxMxtQgCHu2pgY+QIbyjpn4k3C+oQfpYbBu7LB2YeONnoA/zUmo/O/0q8mXTd K6fYkFX1Unwsx+6M6SMHLv11YXtt3sVKd1mT4VHIzeGS5KiAjN/q/2TP2+SmAKdHQwzM tuDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=0CDNlSRMk0JSX/KMbODj7UCHQT0lrjU38ymZg5ki9wA=; fh=gxYgzVwtlH58UlgsoiuFq5D/zT1dO1Vsn/FI/sKmq5A=; b=lB+NJ62q1iGFmDleSdBLhfzS8ubuvwibAiMjcDwKSCfc4F2H0CM/w5DU5DU2Z0QMq9 mUSg28Z4EWQUE3JrZIZYWClkm9CzfgxwtZ0x1pPD/v6+OlS9tCOWzgzYqjReA40plKvA xK4gn4RpZPT2Viap23wauEnJz1R7SVmk3MPXXhUu8wK72zi+btZMr+EJQNm2av5UX010 zCsrOV67lv4bB317V1iQLu5ymkx5Zj6Wp2xBq0nK5amFTlwSrmrJ2XNTgUWgHN3XFTtB XR0EG0Q/IFP42BZCTnrOEQmxopMUdfOJ1DsmC+6x3oUkKMPM260sEir48/tkw0bQKtaa fxAQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770716212; x=1771321012; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=0CDNlSRMk0JSX/KMbODj7UCHQT0lrjU38ymZg5ki9wA=; b=W4D1X4Yn2NYkDAJLKploArhLgzn77CE7TwCBQ7BtKPpl0Y2VhHRtR4R3K48O5ldDTU 0QdRKqYBA6ioH9J0+kjq4H9LqXZmQNVNHUcWK1x/oHIbbscEg8dj2a1XeoeqA8WPkSey Ye0uad3apHPMQtsB2jCMCmx7t/Fi8kzaqluDkDXIm/wn1Bn+U9LTcfUeQl0cLs0lv4nD 7b+UxELL1Fu36Hm4wcRmPUuQyWKXUWyxhM1KyQeh2foBu9i/r4MpOirgHauhIINZKu/Z M9Yfvwu2wks3zi0H6u+kfko8Xu7rObmfkhQBBuqVUoXvExMm+CT9zuPkg27JzLNGJyNu 53cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770716212; x=1771321012; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=0CDNlSRMk0JSX/KMbODj7UCHQT0lrjU38ymZg5ki9wA=; b=lx1O7BX1hTskuZD9vO1yX3V7q2nJoPrMEsdehgvjn+mOhn+QPotPp3V3bBP3+++r+9 PUKGIL6hQ9WuJprqQKjOvXfUnL0WDJmT/jBrPS45ooT8hqNB2kL4qvbW/3X89biiWR1a 4HwnGpsoW+MImuajy/46hTC4MmKla9h2r595y5+6RFrT7sMBkjqF1wL7iCTjN6O/WnXz sli6cx10xDfLY8oJbbhKF1s7CY1qDnjnL4M3DITyOPHRZJkTEtkJC0fJ+6DzSfK9dt+a a1brDNXtGTPVAEVT8kAiav8Dmd5gsXxHUHgPDGjZZb+KEWfqno37RBepWJhNIgBV3xC2 HQpw== X-Forwarded-Encrypted: i=1; AJvYcCWLlcYPJofY7nAYRtGLNcRqlWOLVKL18e9Gr/ux7HP0Cwl7xGyxPLWV5+G+MXs3XNS8s3no+oym+TCHnOfb@lists.postgresql.org X-Gm-Message-State: AOJu0YziIa7G0Ens/RTaJ8/H73JXhEW9+Pp/u8ShXFHX086eFE4fRuVv 5PSyf3L75wYsOc7hOEdyhcdUV/yTM6A5V9BHG87z2JFinb1ng/inIl4gXi+rWutHgb1KzSrd12i e8xjBKw9Wbu7y+ZsxE0cJi8S4chfqByQ= X-Gm-Gg: AZuq6aJ1mZzvpmkCZEq5QuagiLib4Cuk2D+Xqg/6fLc9wydnCoUzU659ey6rZ6JoLD4 TpeAYTt9TLoajEecE9bnhSXRzWgTvXbYsVnrP6RGealJFmgbYbSfLfLjdvQLSAKEyx0tnjsQ7ND 6c5YQ8L6sjQ1VUMKY421rTro1Y91oEtI4VP73L0uroTV1pJDQ1nDOYHInlZQeoyTDEvUgL4DMf5 LHTTraHd6HTnvGw99kGqeKLrm1CtXYFJ0bIxb+qdPnQfD3AGLdq6YLyo36RNZmghJ9++NaKBrNZ xYOmlIl2FQ== X-Received: by 2002:a17:90b:6c3:b0:354:7c90:8c6 with SMTP id 98e67ed59e1d1-354b3e4503dmr9482399a91.25.1770716212201; Tue, 10 Feb 2026 01:36:52 -0800 (PST) MIME-Version: 1.0 References: <731ADE6F-01C5-4996-BAEE-5851DFC3F502@gmail.com> In-Reply-To: From: Amul Sul Date: Tue, 10 Feb 2026 15:06:12 +0530 X-Gm-Features: AZwV_QhHVHg0mMirKnotPvEf8ezjMV9RczUS2TLnuRs0TaR7GE6uctU9Jd4hL3U Message-ID: Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Robert Haas Cc: Chao Li , Jakub Wartak , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000d3b226064a74fe29" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d3b226064a74fe29 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 4, 2026 at 6:39=E2=80=AFPM Amul Sul wrote: > > On Wed, Jan 28, 2026 at 2:41=E2=80=AFAM Robert Haas wrote: > > > > On Tue, Jan 27, 2026 at 7:07=E2=80=AFAM Amul Sul wr= ote: > > > In the attached version, I am using the WAL segment name as the hash > > > key, which is much more straightforward. I have rewritten > > > read_archive_wal_page(), and it looks much cleaner than before. The > > > logic to discard irrelevant WAL files is still within > > > get_archive_wal_entry. I added an explanation for setting cur_wal to > > > NULL, which is now handled in the separate function I mentioned > > > previously. > > > > > > Kindly have a look at the attached version; let me know if you are > > > still not happy with the current approach for filtering/discarding > > > irrelevant WAL segments. It isn't much different from the previous > > > version, but I have tried to keep it in a separate routine for better > > > code readability, with comments to make it easier to understand. I > > > also added a comment for ArchivedWALFile. > > > > I feel like the division of labor between get_archive_wal_entry() and > > read_archive_wal_page() is odd. I noticed this in the last version, > > too, and it still seems to be the case. get_archive_wal_entry() first > > calls ArchivedWAL_lookup(). If that finds an entry, it just returns. > > If it doesn't, it loops until an entry for the requested file shows up > > and then returns it. Then control returns to read_archive_wal_page() > > which loops some more until we have all the data we need for the > > requested file. But it seems odd to me to have two separate loops > > here. I think that the first loop is going to call read_archive_file() > > until we find the beginning of the file that we care about and then > > the second one is going to call read_archive_file() some more until we > > have read enough of it to satisfy the request. It feels odd to me to > > do it that way, as if we told somebody to first wait until 9 o'clock > > and then wait another 30 minutes, instead of just telling them to wait > > until 9:30. I realize it's not quite the same thing, because apart > > from calling read_archive_file(), the two loops do different things, > > but I still think it looks odd. > > > > + /* > > + * Ignore if the timeline is different or the current segment is not > > + * the desired one. > > + */ > > + XLogFromFileName(entry->fname, &curSegTimeline, &curSegNo, WalSegSz); > > + if (privateInfo->timeline !=3D curSegTimeline || > > + privateInfo->startSegNo > curSegNo || > > + privateInfo->endSegNo < curSegNo || > > + segno > curSegNo) > > + { > > + free_archive_wal_entry(entry->fname, privateInfo); > > + continue; > > + } > > > > The comment doesn't match the code. If it did, the test would be > > (privateInfo->timeline !=3D curSegTimeline || segno !=3D curSegno). But > > instead the segno test is > rather than !=3D, and the checks against > > startSegNo and endSegNo aren't explained at all. I think I understand > > why the segno test uses > rather than !=3D, but it's the point of the > > comment to explain things like that, rather than leaving the reader to > > guess. And I don't know why we also need to test startSegNo and > > endSegNo. > > > > I also wonder what the point is of doing XLogFromFileName() on the > > fname provided by the caller and then again on entry->fname. Couldn't > > you just compare the strings? > > > > Again, the division of labor is really odd here. It's the job of > > astreamer_waldump_content() to skip things that aren't WAL files at > > all, but it's the job of get_archive_wal_entry() to skip things that > > are WAL files but not the one we want. I disagree with putting those > > checks in completely separate parts of the code. > > > > Keeping the timeline and segment start-end range checks inside the > archive streamer creates a circular dependency that cannot be resolved > without a 'dirty hack'. We must read the first available WAL file page > to determine the wal_segment_size before it can calculate the target > segment range. Moving the checks inside the streamer would make it > impossible to process that initial file, as the necessary filtering > parameters -- would still be unknown which would need to be skipped > for the first read somehow. What if later we realized that the first > WAL file which was allowed to be streamed by skipping that check is > irrelevant and doesn't fall under the start-end segment range? > Please have a look at the attached version, specifically patch 0005. In astreamer_waldump_content(), I have moved the WAL file filtration check from get_archive_wal_entry(). This check will be skipped during the initial read in init_archive_reader(), which instead performs it explicitly once it determines the WAL segment size and the start/end segments. To access the WAL segment size inside astreamer_waldump_content(), I have moved the WAL segment size variable into the XLogDumpPrivate structure in the separate 0004 patch. Regards, Amul --000000000000d3b226064a74fe29 Content-Type: application/x-patch; name="v12-0001-Refactor-pg_waldump-Move-some-declarations-to-ne.patch" Content-Disposition: attachment; filename="v12-0001-Refactor-pg_waldump-Move-some-declarations-to-ne.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlgejw220 RnJvbSAwNzMxZGI0OGJiOGQxNTRhYTcyZDJjOTU2ZGVjOTVhODEyN2FlMDdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mjg6MzIgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMiAxLzldIFJl ZmFjdG9yOiBwZ193YWxkdW1wOiBNb3ZlIHNvbWUgZGVjbGFyYXRpb25zIHRvIG5ldwogcGdfd2Fs ZHVtcC5oCgpUaGlzIGNoYW5nZSBwcmVwYXJlcyBmb3IgYSBzZWNvbmQgc291cmNlIGZpbGUgaW4g dGhpcyBkaXJlY3RvcnkgdG8Kc3VwcG9ydCByZWFkaW5nIFdBTCBmcm9tIHRhciBmaWxlcy4gQ29t bW9uIHN0cnVjdHVyZXMsIGRlY2xhcmF0aW9ucywKYW5kIGZ1bmN0aW9ucyBhcmUgYmVpbmcgZXhw b3J0ZWQgdGhyb3VnaCB0aGlzIGluY2x1ZGUgZmlsZSBzbwp0aGV5IGNhbiBiZSB1c2VkIGluIGJv dGggZmlsZXMuCi0tLQogc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyB8ICA5ICstLS0t LS0tLQogc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaCB8IDI1ICsrKysrKysrKysrKysr KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5o CgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggZjM0NDYzODVkNmEuLjRiNzQxMWE2NDk4IDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb21t b24vbG9nZ2luZy5oIgogI2luY2x1ZGUgImNvbW1vbi9yZWxwYXRoLmgiCiAjaW5jbHVkZSAiZ2V0 b3B0X2xvbmcuaCIKKyNpbmNsdWRlICJwZ193YWxkdW1wLmgiCiAjaW5jbHVkZSAicm1ncmRlc2Mu aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKIApAQCAtNDMsMTQgKzQ0LDYgQEAgc3Rh dGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCB0aW1lX3RvX3N0b3AgPSBmYWxzZTsKIAogc3RhdGlj IGNvbnN0IFJlbEZpbGVMb2NhdG9yIGVtcHR5UmVsRmlsZUxvY2F0b3IgPSB7MCwgMCwgMH07CiAK LXR5cGVkZWYgc3RydWN0IFhMb2dEdW1wUHJpdmF0ZQotewotCVRpbWVMaW5lSUQJdGltZWxpbmU7 Ci0JWExvZ1JlY1B0cglzdGFydHB0cjsKLQlYTG9nUmVjUHRyCWVuZHB0cjsKLQlib29sCQllbmRw dHJfcmVhY2hlZDsKLX0gWExvZ0R1bXBQcml2YXRlOwotCiB0eXBlZGVmIHN0cnVjdCBYTG9nRHVt cENvbmZpZwogewogCS8qIGRpc3BsYXkgb3B0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z193YWxkdW1wL3BnX3dhbGR1bXAuaCBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI4ODU0Mzg1NmU1Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaApAQCAtMCwwICsx LDI1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ193YWxkdW1wLmggLSBkZWNvZGUg YW5kIGRpc3BsYXkgV0FMCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJICBzcmMv YmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lm bmRlZiBQR19XQUxEVU1QX0gKKyNkZWZpbmUgUEdfV0FMRFVNUF9ICisKKyNpbmNsdWRlICJhY2Nl c3MveGxvZ2RlZnMuaCIKKworLyogQ29udGFpbnMgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0 byBkcml2ZSBXQUwgZGVjb2RpbmcgKi8KK3R5cGVkZWYgc3RydWN0IFhMb2dEdW1wUHJpdmF0ZQor eworCVRpbWVMaW5lSUQJdGltZWxpbmU7CisJWExvZ1JlY1B0cglzdGFydHB0cjsKKwlYTG9nUmVj UHRyCWVuZHB0cjsKKwlib29sCQllbmRwdHJfcmVhY2hlZDsKK30gWExvZ0R1bXBQcml2YXRlOwor CisjZW5kaWYJCQkJCQkJLyogZW5kIG9mIFBHX1dBTERVTVBfSCAqLwotLSAKMi40Ny4xCgo= --000000000000d3b226064a74fe29 Content-Type: application/x-patch; name="v12-0002-Refactor-pg_waldump-Separate-logic-used-to-calcu.patch" Content-Disposition: attachment; filename="v12-0002-Refactor-pg_waldump-Separate-logic-used-to-calcu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlgek04s1 RnJvbSAwOWY4ODdmN2Y2YjRjMTQyYjUyN2RjNjQxMGJjNzgxODg0NjQ2NjgxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mzg6MTYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMiAyLzldIFJl ZmFjdG9yOiBwZ193YWxkdW1wOiBTZXBhcmF0ZSBsb2dpYyB1c2VkIHRvCiBjYWxjdWxhdGUgdGhl IHJlcXVpcmVkIHJlYWQgc2l6ZS4KClRoaXMgcmVmYWN0b3JpbmcgcHJlcGFyZXMgdGhlIGNvZGVi YXNlIGZvciBhbiB1cGNvbWluZyBwYXRjaCB0aGF0IHdpbGwKc3VwcG9ydCByZWFkaW5nIFdBTCBm cm9tIHRhciBmaWxlcy4gVGhlIGxvZ2ljIGZvciBjYWxjdWxhdGluZyB0aGUKcmVxdWlyZWQgcmVh ZCBzaXplIGhhcyBiZWVuIHVwZGF0ZWQgdG8gaGFuZGxlIGJvdGggbm9ybWFsIFdBTCBmaWxlcwph bmQgV0FMIGZpbGVzIGxvY2F0ZWQgaW5zaWRlIGEgdGFyIGFyY2hpdmUuCi0tLQogc3JjL2Jpbi9w Z193YWxkdW1wL3BnX3dhbGR1bXAuYyB8IDQzICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgYi9zcmMvYmluL3Bn X3dhbGR1bXAvcGdfd2FsZHVtcC5jCmluZGV4IDRiNzQxMWE2NDk4Li45NThhNzFhMDFjZiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYworKysgYi9zcmMvYmluL3Bn X3dhbGR1bXAvcGdfd2FsZHVtcC5jCkBAIC0zMjYsNiArMzI2LDMyIEBAIGlkZW50aWZ5X3Rhcmdl dF9kaXJlY3RvcnkoY2hhciAqZGlyZWN0b3J5LCBjaGFyICpmbmFtZSwgaW50ICpXYWxTZWdTeikK IAlyZXR1cm4gTlVMTDsJCQkJLyogbm90IHJlYWNoZWQgKi8KIH0KIAorLyoKKyAqIFJldHVybnMg dGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGRhdGEgdG8gYmUgcmVhZC4gUmV0dXJucyAtMSBpZiB0 aGUgZW5kCisgKiBwb2ludCBoYXMgYWxyZWFkeSBiZWVuIHJlYWNoZWQuCisgKi8KK3N0YXRpYyBp bmxpbmUgaW50CityZXF1aXJlZF9yZWFkX2xlbihYTG9nRHVtcFByaXZhdGUgKnByaXZhdGUsIFhM b2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwKKwkJCQkgIGludCByZXFMZW4pCit7CisJaW50CQkJY291 bnQgPSBYTE9HX0JMQ0tTWjsKKworCWlmIChYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLT5lbmRw dHIpKQorCXsKKwkJaWYgKHRhcmdldFBhZ2VQdHIgKyBYTE9HX0JMQ0tTWiA8PSBwcml2YXRlLT5l bmRwdHIpCisJCQljb3VudCA9IFhMT0dfQkxDS1NaOworCQllbHNlIGlmICh0YXJnZXRQYWdlUHRy ICsgcmVxTGVuIDw9IHByaXZhdGUtPmVuZHB0cikKKwkJCWNvdW50ID0gcHJpdmF0ZS0+ZW5kcHRy IC0gdGFyZ2V0UGFnZVB0cjsKKwkJZWxzZQorCQl7CisJCQlwcml2YXRlLT5lbmRwdHJfcmVhY2hl ZCA9IHRydWU7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwlyZXR1cm4gY291bnQ7Cit9CisK IC8qIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+c2VnbWVudF9vcGVuIGNhbGxiYWNr ICovCiBzdGF0aWMgdm9pZAogV0FMRHVtcE9wZW5TZWdtZW50KFhMb2dSZWFkZXJTdGF0ZSAqc3Rh dGUsIFhMb2dTZWdObyBuZXh0U2VnTm8sCkBAIC0zODMsMjEgKzQwOSwxMiBAQCBXQUxEdW1wUmVh ZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBp bnQgcmVxTGVuLAogCQkJCVhMb2dSZWNQdHIgdGFyZ2V0UHRyLCBjaGFyICpyZWFkQnVmZikKIHsK IAlYTG9nRHVtcFByaXZhdGUgKnByaXZhdGUgPSBzdGF0ZS0+cHJpdmF0ZV9kYXRhOwotCWludAkJ CWNvdW50ID0gWExPR19CTENLU1o7CisJaW50CQkJY291bnQgPSByZXF1aXJlZF9yZWFkX2xlbihw cml2YXRlLCB0YXJnZXRQYWdlUHRyLCByZXFMZW4pOwogCVdBTFJlYWRFcnJvciBlcnJpbmZvOwog Ci0JaWYgKFhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUtPmVuZHB0cikpCi0JewotCQlpZiAodGFy Z2V0UGFnZVB0ciArIFhMT0dfQkxDS1NaIDw9IHByaXZhdGUtPmVuZHB0cikKLQkJCWNvdW50ID0g WExPR19CTENLU1o7Ci0JCWVsc2UgaWYgKHRhcmdldFBhZ2VQdHIgKyByZXFMZW4gPD0gcHJpdmF0 ZS0+ZW5kcHRyKQotCQkJY291bnQgPSBwcml2YXRlLT5lbmRwdHIgLSB0YXJnZXRQYWdlUHRyOwot CQllbHNlCi0JCXsKLQkJCXByaXZhdGUtPmVuZHB0cl9yZWFjaGVkID0gdHJ1ZTsKLQkJCXJldHVy biAtMTsKLQkJfQotCX0KKwkvKiBCYWlsIG91dCBpZiB0aGUgY291bnQgdG8gYmUgcmVhZCBpcyBu b3QgdmFsaWQgKi8KKwlpZiAoY291bnQgPCAwKQorCQlyZXR1cm4gLTE7CiAKIAlpZiAoIVdBTFJl YWQoc3RhdGUsIHJlYWRCdWZmLCB0YXJnZXRQYWdlUHRyLCBjb3VudCwgcHJpdmF0ZS0+dGltZWxp bmUsCiAJCQkJICZlcnJpbmZvKSkKLS0gCjIuNDcuMQoK --000000000000d3b226064a74fe29 Content-Type: application/x-patch; name="v12-0003-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Disposition: attachment; filename="v12-0003-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlgek4iv2 RnJvbSAwNWQyYzQyMThkOWMzNDk2ODc4ZjM0MmM5YzMyZmY1MTQ4ZDNkNmE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTE6MDY6MDUgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMiAzLzldIFJl ZmFjdG9yOiBwZ193YWxkdW1wOiBSZXN0cnVjdHVyZSBUQVAgdGVzdHMuCgpSZXN0cnVjdHVyZWQg dGVzdHMgdGhhdCBkbyBub3QgaGF2ZSBhIFdBTCBmaWxlIGFyZ3VtZW50IHRvIHJ1biB3aXRoaW4K YSBsb29wLCBmYWNpbGl0YXRpbmcgdGhlaXIgcmUtZXhlY3V0aW9uIGZvciBkZWNvZGluZyBXQUwg ZnJvbSB0YXIKYXJjaGl2ZXMuCgo9PSBOT1RFID09CiAgVGhpcyBpcyBub3QgaW50ZW5kZWQgdG8g YmUgY29tbWl0dGVkIHNlcGFyYXRlbHkuIEl0IGNhbiBiZSBtZXJnZWQKICB3aXRoIHRoZSBuZXh0 IHBhdGNoLCB3aGljaCBpcyB0aGUgbWFpbiBwYXRjaCBpbXBsZW1lbnRpbmcgdGhpcwogIGZlYXR1 cmUuCi0tLQogc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsIHwgMTIzICsrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyks IDU2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9i YXNpYy5wbCBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbAppbmRleCA1ZGI1ZDIw MTM2Zi4uMzI4OGZhZGNmNDggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9i YXNpYy5wbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKQEAgLTE5OCwy OCArMTk4LDYgQEAgY29tbWFuZF9saWtlKAogCV0sCiAJcXIvLi8sCiAJJ3J1bnMgd2l0aCBzdGFy dCBhbmQgZW5kIHNlZ21lbnQgc3BlY2lmaWVkJyk7Ci1jb21tYW5kX2ZhaWxzX2xpa2UoCi0JWyAn cGdfd2FsZHVtcCcsICctLXBhdGgnID0+ICRub2RlLT5kYXRhX2RpciBdLAotCXFyL2Vycm9yOiBu byBzdGFydCBXQUwgbG9jYXRpb24gZ2l2ZW4vLAotCSdwYXRoIG9wdGlvbiByZXF1aXJlcyBzdGFy dCBsb2NhdGlvbicpOwotY29tbWFuZF9saWtlKAotCVsKLQkJJ3BnX3dhbGR1bXAnLAotCQknLS1w YXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCi0JCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAotCQkn LS1lbmQnID0+ICRlbmRfbHNuLAotCV0sCi0JcXIvLi8sCi0JJ3J1bnMgd2l0aCBwYXRoIG9wdGlv biBhbmQgc3RhcnQgYW5kIGVuZCBsb2NhdGlvbnMnKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlb Ci0JCSdwZ193YWxkdW1wJywKLQkJJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAotCQknLS1z dGFydCcgPT4gJHN0YXJ0X2xzbiwKLQldLAotCXFyL2Vycm9yOiBlcnJvciBpbiBXQUwgcmVjb3Jk IGF0LywKLQknZmFsbGluZyBvZmYgdGhlIGVuZCBvZiB0aGUgV0FMIHJlc3VsdHMgaW4gYW4gZXJy b3InKTsKLQogY29tbWFuZF9saWtlKAogCVsKIAkJJ3BnX3dhbGR1bXAnLCAnLS1xdWlldCcsCkBA IC0yMjcsMTUgKzIwNSw2IEBAIGNvbW1hbmRfbGlrZSgKIAldLAogCXFyL14kLywKIAknbm8gb3V0 cHV0IHdpdGggLS1xdWlldCBvcHRpb24nKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlbCi0JCSdw Z193YWxkdW1wJywgJy0tcXVpZXQnLAotCQknLS1wYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCi0J CSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuCi0JXSwKLQlxci9lcnJvcjogZXJyb3IgaW4gV0FMIHJl Y29yZCBhdC8sCi0JJ2Vycm9ycyBhcmUgc2hvd24gd2l0aCAtLXF1aWV0Jyk7Ci0KIAogIyBUZXN0 IGZvcjogRGlzcGxheSBhIG1lc3NhZ2UgdGhhdCB3ZSdyZSBza2lwcGluZyBkYXRhIGlmIGBmcm9t YAogIyB3YXNuJ3QgYSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiBhIHJlY29yZC4KQEAgLTI3Miw3 ICsyNDEsNiBAQCBzdWIgdGVzdF9wZ193YWxkdW1wCiAKIAlteSAkcmVzdWx0ID0gSVBDOjpSdW46 OnJ1biBbCiAJCSdwZ193YWxkdW1wJywKLQkJJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAog CQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbiwKIAkJJy0tZW5kJyA9PiAkZW5kX2xzbiwKIAkJQG9w dHMKQEAgLTI4OCwzOCArMjU2LDgxIEBAIHN1YiB0ZXN0X3BnX3dhbGR1bXAKIAogbXkgQGxpbmVz OwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXA7Ci1pcyhncmVwKCEvXnJtZ3I6IFx3LywgQGxp bmVzKSwgMCwgJ2FsbCBvdXRwdXQgbGluZXMgYXJlIHJtZ3IgbGluZXMnKTsKK215IEBzY2VuYXJp b3MgPSAoCisJeworCQkncGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyCisJfSk7CiAKLUBsaW5lcyA9 IHRlc3RfcGdfd2FsZHVtcCgnLS1saW1pdCcgPT4gNik7Ci1pcyhAbGluZXMsIDYsICdsaW1pdCBv cHRpb24gb2JzZXJ2ZWQnKTsKK2ZvciBteSAkc2NlbmFyaW8gKEBzY2VuYXJpb3MpCit7CisJbXkg JHBhdGggPSAkc2NlbmFyaW8tPnsncGF0aCd9OwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAo Jy0tZnVsbHBhZ2UnKTsKLWlzKGdyZXAoIS9ecm1ncjouKlxiRlBXXGIvLCBAbGluZXMpLCAwLCAn YWxsIG91dHB1dCBsaW5lcyBhcmUgRlBXJyk7CisJU0tJUDoKKwl7CisJCWNvbW1hbmRfZmFpbHNf bGlrZSgKKwkJCVsgJ3BnX3dhbGR1bXAnLCAnLS1wYXRoJyA9PiAkcGF0aCBdLAorCQkJcXIvZXJy b3I6IG5vIHN0YXJ0IFdBTCBsb2NhdGlvbiBnaXZlbi8sCisJCQkncGF0aCBvcHRpb24gcmVxdWly ZXMgc3RhcnQgbG9jYXRpb24nKTsKKwkJY29tbWFuZF9saWtlKAorCQkJWworCQkJCSdwZ193YWxk dW1wJywKKwkJCQknLS1wYXRoJyA9PiAkcGF0aCwKKwkJCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xz biwKKwkJCQknLS1lbmQnID0+ICRlbmRfbHNuLAorCQkJXSwKKwkJCXFyLy4vLAorCQkJJ3J1bnMg d2l0aCBwYXRoIG9wdGlvbiBhbmQgc3RhcnQgYW5kIGVuZCBsb2NhdGlvbnMnKTsKKwkJY29tbWFu ZF9mYWlsc19saWtlKAorCQkJWworCQkJCSdwZ193YWxkdW1wJywKKwkJCQknLS1wYXRoJyA9PiAk cGF0aCwKKwkJCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbiwKKwkJCV0sCisJCQlxci9lcnJvcjog ZXJyb3IgaW4gV0FMIHJlY29yZCBhdC8sCisJCQknZmFsbGluZyBvZmYgdGhlIGVuZCBvZiB0aGUg V0FMIHJlc3VsdHMgaW4gYW4gZXJyb3InKTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCct LXN0YXRzJyk7Ci1saWtlKCRsaW5lc1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGlj cyBvbiBzdGRvdXQiKTsKLWlzKGdyZXAoL15ybWdyOi8sIEBsaW5lcyksIDAsICdubyBybWdyIGxp bmVzIG91dHB1dCcpOworCQljb21tYW5kX2ZhaWxzX2xpa2UoCisJCQlbCisJCQkJJ3BnX3dhbGR1 bXAnLCAnLS1xdWlldCcsCisJCQkJJy0tcGF0aCcgPT4gJHBhdGgsCisJCQkJJy0tc3RhcnQnID0+ ICRzdGFydF9sc24KKwkJCV0sCisJCQlxci9lcnJvcjogZXJyb3IgaW4gV0FMIHJlY29yZCBhdC8s CisJCQknZXJyb3JzIGFyZSBzaG93biB3aXRoIC0tcXVpZXQnKTsKIAotQGxpbmVzID0gdGVzdF9w Z193YWxkdW1wKCctLXN0YXRzPXJlY29yZCcpOwotbGlrZSgkbGluZXNbMF0sIHFyL1dBTCBzdGF0 aXN0aWNzLywgInN0YXRpc3RpY3Mgb24gc3Rkb3V0Iik7Ci1pcyhncmVwKC9ecm1ncjovLCBAbGlu ZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxk dW1wKCctLXBhdGgnID0+ICRwYXRoKTsKKwkJaXMoZ3JlcCghL15ybWdyOiBcdy8sIEBsaW5lcyks IDAsICdhbGwgb3V0cHV0IGxpbmVzIGFyZSBybWdyIGxpbmVzJyk7CiAKLUBsaW5lcyA9IHRlc3Rf cGdfd2FsZHVtcCgnLS1ybWdyJyA9PiAnQnRyZWUnKTsKLWlzKGdyZXAoIS9ecm1ncjogQnRyZWUv LCBAbGluZXMpLCAwLCAnb25seSBCdHJlZSBsaW5lcycpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dh bGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsICctLWxpbWl0JyA9PiA2KTsKKwkJaXMoQGxpbmVzLCA2 LCAnbGltaXQgb3B0aW9uIG9ic2VydmVkJyk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgn LS1mb3JrJyA9PiAnaW5pdCcpOwotaXMoZ3JlcCghL2ZvcmsgaW5pdC8sIEBsaW5lcyksIDAsICdv bmx5IGluaXQgZm9yayBsaW5lcycpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0 aCcgPT4gJHBhdGgsICctLWZ1bGxwYWdlJyk7CisJCWlzKGdyZXAoIS9ecm1ncjouKlxiRlBXXGIv LCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgRlBXJyk7CiAKLUBsaW5lcyA9IHRl c3RfcGdfd2FsZHVtcCgKLQknLS1yZWxhdGlvbicgPT4gIiRkZWZhdWx0X3RzX29pZC8kcG9zdGdy ZXNfZGJfb2lkLyRyZWxfdDFfb2lkIik7Ci1pcyhncmVwKCEvcmVsICRkZWZhdWx0X3RzX29pZFwv JHBvc3RncmVzX2RiX29pZFwvJHJlbF90MV9vaWQvLCBAbGluZXMpLAotCTAsICdvbmx5IGxpbmVz IGZvciBzZWxlY3RlZCByZWxhdGlvbicpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0t cGF0aCcgPT4gJHBhdGgsICctLXN0YXRzJyk7CisJCWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3Rh dGlzdGljcy8sICJzdGF0aXN0aWNzIG9uIHN0ZG91dCIpOworCQlpcyhncmVwKC9ecm1ncjovLCBA bGluZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKIAotQGxpbmVzID0gdGVzdF9wZ193 YWxkdW1wKAotCSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9v aWQvJHJlbF9pMWFfb2lkIiwKLQknLS1ibG9jaycgPT4gMSk7Ci1pcyhncmVwKCEvXGJibGsgMVxi LywgQGxpbmVzKSwgMCwgJ29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIGJsb2NrJyk7CisJCUBsaW5l cyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1wYXRoJyA9PiAkcGF0aCwgJy0tc3RhdHM9cmVjb3JkJyk7 CisJCWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8sICJzdGF0aXN0aWNzIG9uIHN0 ZG91dCIpOworCQlpcyhncmVwKC9ecm1ncjovLCBAbGluZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBv dXRwdXQnKTsKIAorCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgs ICctLXJtZ3InID0+ICdCdHJlZScpOworCQlpcyhncmVwKCEvXnJtZ3I6IEJ0cmVlLywgQGxpbmVz KSwgMCwgJ29ubHkgQnRyZWUgbGluZXMnKTsKKworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAo Jy0tcGF0aCcgPT4gJHBhdGgsICctLWZvcmsnID0+ICdpbml0Jyk7CisJCWlzKGdyZXAoIS9mb3Jr IGluaXQvLCBAbGluZXMpLCAwLCAnb25seSBpbml0IGZvcmsgbGluZXMnKTsKKworCQlAbGluZXMg PSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsCisJCQknLS1yZWxhdGlvbicgPT4g IiRkZWZhdWx0X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfdDFfb2lkIik7CisJCWlzKGdy ZXAoIS9yZWwgJGRlZmF1bHRfdHNfb2lkXC8kcG9zdGdyZXNfZGJfb2lkXC8kcmVsX3QxX29pZC8s IEBsaW5lcyksCisJCQkwLCAnb25seSBsaW5lcyBmb3Igc2VsZWN0ZWQgcmVsYXRpb24nKTsKKwor CQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsCisJCQknLS1yZWxh dGlvbicgPT4gIiRkZWZhdWx0X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfaTFhX29pZCIs CisJCQknLS1ibG9jaycgPT4gMSk7CisJCWlzKGdyZXAoIS9cYmJsayAxXGIvLCBAbGluZXMpLCAw LCAnb25seSBsaW5lcyBmb3Igc2VsZWN0ZWQgYmxvY2snKTsKKwl9Cit9CiAKIGRvbmVfdGVzdGlu ZygpOwotLSAKMi40Ny4xCgo= --000000000000d3b226064a74fe29 Content-Type: application/x-patch; name="v12-0004-Refactor-pg_waldump-Move-WAL-segment-size-to-XLo.patch" Content-Disposition: attachment; filename="v12-0004-Refactor-pg_waldump-Move-WAL-segment-size-to-XLo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlgeka6x3 RnJvbSBjMDBhNjcyOGNkZTkyN2Y0YmIwOTJhOTU2OTRkMWZjZDJjMTcyMDVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgNCBGZWIgMjAyNiAxNTozMTo1MSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjEyIDQvOV0gUmVm YWN0b3I6IHBnX3dhbGR1bXA6IE1vdmUgV0FMIHNlZ21lbnQgc2l6ZSB0bwogWExvZ0R1bXBQcml2 YXRlLgoKUmVsb2NhdGUgdGhlIFdBTCBzZWdtZW50IHNpemUgdmFyaWFibGUgdG8gdGhlIFhMb2dE dW1wUHJpdmF0ZQpzdHJ1Y3R1cmUgYW5kIHJlbmFtZSBpdCB0byBzZWdzaXplIGZvciBjb25zaXN0 ZW5jeS4gVGhpcyBjaGFuZ2UgaXMKcmVxdWlyZWQgdG8gbWFrZSB0aGUgc2VnbWVudCBzaXplIGFj Y2Vzc2libGUgdG8gdGhlIGFyY2hpdmUgc3RyZWFtZXIKY29kZSwgd2hlcmUgcGFzc2luZyBpdCBh cyBhIGZ1bmN0aW9uIGFyZ3VtZW50IGlzIG5vdCBmZWFzaWJsZS4KLS0tCiBzcmMvYmluL3BnX3dh bGR1bXAvcGdfd2FsZHVtcC5jIHwgMjYgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIHNyYy9i aW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggfCAgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDE0IGlu c2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2Fs ZHVtcC9wZ193YWxkdW1wLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCmluZGV4 IDk1OGE3MWEwMWNmLi41ZDMxYjE1ZGJkOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1w L3BnX3dhbGR1bXAuYworKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCkBAIC04 MTEsNyArODExLDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJWExvZ1JlY1B0cglm aXJzdF9yZWNvcmQ7CiAJY2hhcgkgICAqd2FsZGlyID0gTlVMTDsKIAljaGFyCSAgICplcnJvcm1z ZzsKLQlpbnQJCQlXYWxTZWdTejsKIAogCXN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9u c1tdID0gewogCQl7ImJrcC1kZXRhaWxzIiwgbm9fYXJndW1lbnQsIE5VTEwsICdiJ30sCkBAIC04 NjUsNiArODY0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJbWVtc2V0KCZzdGF0 cywgMCwgc2l6ZW9mKFhMb2dTdGF0cykpOwogCiAJcHJpdmF0ZS50aW1lbGluZSA9IDE7CisJcHJp dmF0ZS5zZWdzaXplID0gMDsKIAlwcml2YXRlLnN0YXJ0cHRyID0gSW52YWxpZFhMb2dSZWNQdHI7 CiAJcHJpdmF0ZS5lbmRwdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlwcml2YXRlLmVuZHB0cl9y ZWFjaGVkID0gZmFsc2U7CkBAIC0xMTM4LDE4ICsxMTM4LDE4IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wi OiAlbSIsIHdhbGRpcik7CiAJCX0KIAotCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0 b3J5KHdhbGRpciwgZm5hbWUsICZXYWxTZWdTeik7CisJCXdhbGRpciA9IGlkZW50aWZ5X3Rhcmdl dF9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSwgJnByaXZhdGUuc2Vnc2l6ZSk7CiAJCWZkID0gb3Bl bl9maWxlX2luX2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lKTsKIAkJaWYgKGZkIDwgMCkKIAkJCXBn X2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiIsIGZuYW1lKTsKIAkJY2xvc2UoZmQp OwogCiAJCS8qIHBhcnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLwotCQlYTG9nRnJvbUZpbGVOYW1l KGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJnNlZ25vLCBXYWxTZWdTeik7CisJCVhMb2dGcm9t RmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmc2Vnbm8sIHByaXZhdGUuc2Vnc2l6 ZSk7CiAKIAkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLnN0YXJ0cHRyKSkKLQkJCVhM b2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vLCAwLCBXYWxTZWdTeiwgcHJpdmF0ZS5zdGFydHB0 cik7Ci0JCWVsc2UgaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRlLnN0YXJ0cHRyLCBzZWdubywgV2Fs U2VnU3opKQorCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2Vnbm8sIDAsIHByaXZhdGUuc2Vn c2l6ZSwgcHJpdmF0ZS5zdGFydHB0cik7CisJCWVsc2UgaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRl LnN0YXJ0cHRyLCBzZWdubywgcHJpdmF0ZS5zZWdzaXplKSkKIAkJewogCQkJcGdfbG9nX2Vycm9y KCJzdGFydCBXQUwgbG9jYXRpb24gJVgvJTA4WCBpcyBub3QgaW5zaWRlIGZpbGUgXCIlc1wiIiwK IAkJCQkJCSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5zdGFydHB0ciksCkBAIC0xMTU5LDcgKzEx NTksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCQkvKiBubyBzZWNvbmQgZmls ZSBzcGVjaWZpZWQsIHNldCBlbmQgcG9zaXRpb24gKi8KIAkJaWYgKCEob3B0aW5kICsgMSA8IGFy Z2MpICYmICFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0cikpCi0JCQlYTG9nU2VnTm9P ZmZzZXRUb1JlY1B0cihzZWdubyArIDEsIDAsIFdhbFNlZ1N6LCBwcml2YXRlLmVuZHB0cik7CisJ CQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubyArIDEsIDAsIHByaXZhdGUuc2Vnc2l6ZSwg cHJpdmF0ZS5lbmRwdHIpOwogCiAJCS8qIHBhcnNlIEVORFNFRyBpZiBwYXNzZWQgKi8KIAkJaWYg KG9wdGluZCArIDEgPCBhcmdjKQpAQCAtMTE3NSwxNCArMTE3NSwxNCBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAkJCWNsb3NlKGZkKTsKIAogCQkJLyogcGFyc2UgcG9zaXRpb24gZnJv bSBmaWxlICovCi0JCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwg JmVuZHNlZ25vLCBXYWxTZWdTeik7CisJCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmcHJpdmF0 ZS50aW1lbGluZSwgJmVuZHNlZ25vLCBwcml2YXRlLnNlZ3NpemUpOwogCiAJCQlpZiAoZW5kc2Vn bm8gPCBzZWdubykKIAkJCQlwZ19mYXRhbCgiRU5EU0VHICVzIGlzIGJlZm9yZSBTVEFSVFNFRyAl cyIsCiAJCQkJCQkgYXJndltvcHRpbmQgKyAxXSwgYXJndltvcHRpbmRdKTsKIAogCQkJaWYgKCFY TG9nUmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0cikpCi0JCQkJWExvZ1NlZ05vT2Zmc2V0VG9S ZWNQdHIoZW5kc2Vnbm8gKyAxLCAwLCBXYWxTZWdTeiwKKwkJCQlYTG9nU2VnTm9PZmZzZXRUb1Jl Y1B0cihlbmRzZWdubyArIDEsIDAsIHByaXZhdGUuc2Vnc2l6ZSwKIAkJCQkJCQkJCQlwcml2YXRl LmVuZHB0cik7CiAKIAkJCS8qIHNldCBzZWdubyB0byBlbmRzZWdubyBmb3IgY2hlY2sgb2YgLS1l bmQgKi8KQEAgLTExOTAsOCArMTE5MCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog CQl9CiAKIAotCQlpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuZW5kcHRyLCBzZWdubywgV2FsU2Vn U3opICYmCi0JCQlwcml2YXRlLmVuZHB0ciAhPSAoc2Vnbm8gKyAxKSAqIFdhbFNlZ1N6KQorCQlp ZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuZW5kcHRyLCBzZWdubywgcHJpdmF0ZS5zZWdzaXplKSAm JgorCQkJcHJpdmF0ZS5lbmRwdHIgIT0gKHNlZ25vICsgMSkgKiBwcml2YXRlLnNlZ3NpemUpCiAJ CXsKIAkJCXBnX2xvZ19lcnJvcigiZW5kIFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNp ZGUgZmlsZSBcIiVzXCIiLAogCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcml2YXRlLmVuZHB0ciks CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJfQog CX0KIAllbHNlCi0JCXdhbGRpciA9IGlkZW50aWZ5X3RhcmdldF9kaXJlY3Rvcnkod2FsZGlyLCBO VUxMLCAmV2FsU2VnU3opOworCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdh bGRpciwgTlVMTCwgJnByaXZhdGUuc2Vnc2l6ZSk7CiAKIAkvKiB3ZSBkb24ndCBrbm93IHdoYXQg dG8gcHJpbnQgKi8KIAlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuc3RhcnRwdHIpKQpA QCAtMTIxMyw3ICsxMjEzLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAkvKiB3 ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCwgc3RhcnQgcmVhZGluZyAqLwogCXhsb2dyZWFkZXJf c3RhdGUgPQotCQlYTG9nUmVhZGVyQWxsb2NhdGUoV2FsU2VnU3osIHdhbGRpciwKKwkJWExvZ1Jl YWRlckFsbG9jYXRlKHByaXZhdGUuc2Vnc2l6ZSwgd2FsZGlyLAogCQkJCQkJICAgWExfUk9VVElO RSgucGFnZV9yZWFkID0gV0FMRHVtcFJlYWRQYWdlLAogCQkJCQkJCQkJICAuc2VnbWVudF9vcGVu ID0gV0FMRHVtcE9wZW5TZWdtZW50LAogCQkJCQkJCQkJICAuc2VnbWVudF9jbG9zZSA9IFdBTER1 bXBDbG9zZVNlZ21lbnQpLApAQCAtMTIzNCw3ICsxMjM0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJICogYSBzZWdtZW50IChlLmcuIHdlIHdlcmUgdXNlZCBpbiBmaWxlIG1vZGUp LgogCSAqLwogCWlmIChmaXJzdF9yZWNvcmQgIT0gcHJpdmF0ZS5zdGFydHB0ciAmJgotCQlYTG9n U2VnbWVudE9mZnNldChwcml2YXRlLnN0YXJ0cHRyLCBXYWxTZWdTeikgIT0gMCkKKwkJWExvZ1Nl Z21lbnRPZmZzZXQocHJpdmF0ZS5zdGFydHB0ciwgcHJpdmF0ZS5zZWdzaXplKSAhPSAwKQogCQlw Z19sb2dfaW5mbyhuZ2V0dGV4dCgiZmlyc3QgcmVjb3JkIGlzIGFmdGVyICVYLyUwOFgsIGF0ICVY LyUwOFgsIHNraXBwaW5nIG92ZXIgJXUgYnl0ZSIsCiAJCQkJCQkJICJmaXJzdCByZWNvcmQgaXMg YWZ0ZXIgJVgvJTA4WCwgYXQgJVgvJTA4WCwgc2tpcHBpbmcgb3ZlciAldSBieXRlcyIsCiAJCQkJ CQkJIChmaXJzdF9yZWNvcmQgLSBwcml2YXRlLnN0YXJ0cHRyKSksCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1 bXAuaAppbmRleCBiODg1NDM4NTZlNS4uNGYxYjJhYjY2OGIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1 bXAuaApAQCAtMTcsNiArMTcsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2YXRlCiB7 CiAJVGltZUxpbmVJRAl0aW1lbGluZTsKKwlpbnQJCQlzZWdzaXplOwogCVhMb2dSZWNQdHIJc3Rh cnRwdHI7CiAJWExvZ1JlY1B0cgllbmRwdHI7CiAJYm9vbAkJZW5kcHRyX3JlYWNoZWQ7Ci0tIAoy LjQ3LjEKCg== --000000000000d3b226064a74fe29 Content-Type: application/x-patch; name="v12-0005-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Disposition: attachment; filename="v12-0005-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlgekh6e4 RnJvbSBkMWJiNThlYjc5NmI4ZDFkMjVlYjgzNmMyMWRkODc0Y2I0NmY2MzU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMTAgRmViIDIwMjYgMTE6NDI6MzYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMiA1LzldIHBn X3dhbGR1bXA6IEFkZCBzdXBwb3J0IGZvciBhcmNoaXZlZCBXQUwgZGVjb2RpbmcuCgpwZ193YWxk dW1wIGNhbiBub3cgYWNjZXB0IHRoZSBwYXRoIHRvIGEgdGFyIGFyY2hpdmUgY29udGFpbmluZyBX QUwKZmlsZXMgYW5kIGRlY29kZSB0aGVtLiBUaGlzIGZlYXR1cmUgd2FzIGFkZGVkIHByaW1hcmls eSBmb3IKcGdfdmVyaWZ5YmFja3VwLCB3aGljaCBwcmV2aW91c2x5IGRpc2FibGVkIFdBTCBwYXJz aW5nIGZvcgp0YXItZm9ybWF0dGVkIGJhY2t1cHMuCgpOb3RlIHRoYXQgdGhpcyBwYXRjaCByZXF1 aXJlcyB0aGF0IHRoZSBXQUwgZmlsZXMgd2l0aGluIHRoZSBhcmNoaXZlIGJlCmluIHNlcXVlbnRp YWwgb3JkZXI7IGFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgb3RoZXJ3aXNlLiBUaGUgbmV4dApw YXRjaCBpcyBwbGFubmVkIHRvIHJlbW92ZSB0aGlzIHJlc3RyaWN0aW9uLgotLS0KIGRvYy9zcmMv c2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sICAgICB8ICAgOCArLQogc3JjL2Jpbi9wZ193YWxkdW1w L01ha2VmaWxlICAgICAgICAgIHwgICA3ICstCiBzcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93 YWxkdW1wLmMgfCA2NjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmluL3BnX3dh bGR1bXAvbWVzb24uYnVpbGQgICAgICAgfCAgIDQgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193 YWxkdW1wLmMgICAgICB8IDI0MiArKysrKysrLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2Fs ZHVtcC5oICAgICAgfCAgNDUgKysKIHNyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbCAg ICB8ICA4MyArKystCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgfCAgIDMg KwogOCBmaWxlcyBjaGFuZ2VkLCA5ODYgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5jCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL3BnX3dhbGR1bXAuc2dtbAppbmRleCBjZTIzYWRkNTU3Ny4uZDAwNGJiMGY2N2UgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCkBAIC0xNDEsMTMgKzE0MSwxNyBAQCBQb3N0Z3JlU1FM IGRvY3VtZW50YXRpb24KICAgICAgIDx0ZXJtPjxvcHRpb24+LS1wYXRoPTxyZXBsYWNlYWJsZT5w YXRoPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAg ICAgPHBhcmE+Ci0gICAgICAgIFNwZWNpZmllcyBhIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIFdB TCBzZWdtZW50IGZpbGVzIG9yIGEKLSAgICAgICAgZGlyZWN0b3J5IHdpdGggYSA8bGl0ZXJhbD5w Z193YWw8L2xpdGVyYWw+IHN1YmRpcmVjdG9yeSB0aGF0CisgICAgICAgIFNwZWNpZmllcyBhIHRh ciBhcmNoaXZlIG9yIGEgZGlyZWN0b3J5IHRvIHNlYXJjaCBmb3IgV0FMIHNlZ21lbnQgZmlsZXMK KyAgICAgICAgb3IgYSBkaXJlY3Rvcnkgd2l0aCBhIDxsaXRlcmFsPnBnX3dhbDwvbGl0ZXJhbD4g c3ViZGlyZWN0b3J5IHRoYXQKICAgICAgICAgY29udGFpbnMgc3VjaCBmaWxlcy4gIFRoZSBkZWZh dWx0IGlzIHRvIHNlYXJjaCBpbiB0aGUgY3VycmVudAogICAgICAgICBkaXJlY3RvcnksIHRoZSA8 bGl0ZXJhbD5wZ193YWw8L2xpdGVyYWw+IHN1YmRpcmVjdG9yeSBvZiB0aGUKICAgICAgICAgY3Vy cmVudCBkaXJlY3RvcnksIGFuZCB0aGUgPGxpdGVyYWw+cGdfd2FsPC9saXRlcmFsPiBzdWJkaXJl Y3RvcnkKICAgICAgICAgb2YgPGVudmFyPlBHREFUQTwvZW52YXI+LgogICAgICAgIDwvcGFyYT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgSWYgYSB0YXIgYXJjaGl2ZSBpcyBwcm92aWRlZCwgaXRz IFdBTCBzZWdtZW50IGZpbGVzIG11c3QgYmUgaW4KKyAgICAgICAgc2VxdWVudGlhbCBvcmRlcjsg b3RoZXJ3aXNlLCBhbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkLgorICAgICAgIDwvcGFyYT4KICAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3dhbGR1bXAvTWFrZWZpbGUgYi9zcmMvYmluL3BnX3dhbGR1bXAvTWFrZWZpbGUKaW5k ZXggNGMxZWU2NDk1MDEuLmFhYmI4NzU2NmEyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1 bXAvTWFrZWZpbGUKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlCkBAIC0zLDYgKzMs OSBAQAogUEdGSUxFREVTQyA9ICJwZ193YWxkdW1wIC0gZGVjb2RlIGFuZCBkaXNwbGF5IFdBTCIK IFBHQVBQSUNPTj13aW4zMgogCisjIG1ha2UgdGhlc2UgYXZhaWxhYmxlIHRvIFRBUCB0ZXN0IHNj cmlwdHMKK2V4cG9ydCBUQVIKKwogc3ViZGlyID0gc3JjL2Jpbi9wZ193YWxkdW1wCiB0b3BfYnVp bGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmds b2JhbApAQCAtMTAsMTMgKzEzLDE1IEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtl ZmlsZS5nbG9iYWwKIE9CSlMgPSBcCiAJJChSTUdSREVTQ09CSlMpIFwKIAkkKFdJTjMyUkVTKSBc CisJYXJjaGl2ZV93YWxkdW1wLm8gXAogCWNvbXBhdC5vIFwKIAlwZ193YWxkdW1wLm8gXAogCXJt Z3JkZXNjLm8gXAogCXhsb2dyZWFkZXIubyBcCiAJeGxvZ3N0YXRzLm8KIAotb3ZlcnJpZGUgQ1BQ RkxBR1MgOj0gLURGUk9OVEVORCAkKENQUEZMQUdTKQorb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLURG Uk9OVEVORCAtSSQobGlicHFfc3JjZGlyKSAkKENQUEZMQUdTKQorTERGTEFHU19JTlRFUk5BTCAr PSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRpbHMKIAogUk1HUkRFU0NT T1VSQ0VTID0gJChzb3J0ICQobm90ZGlyICQod2lsZGNhcmQgJCh0b3Bfc3JjZGlyKS9zcmMvYmFj a2VuZC9hY2Nlc3Mvcm1ncmRlc2MvKmRlc2MqLmMpKSkKIFJNR1JERVNDT0JKUyA9ICQocGF0c3Vi c3QgJS5jLCUubywkKFJNR1JERVNDU09VUkNFUykpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dh bGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxk dW1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI3YTVhNWM2ZDVk Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5j CkBAIC0wLDAgKzEsNjY5IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBhcmNoaXZlX3dh bGR1bXAuYworICoJCUEgZ2VuZXJpYyBmYWNpbGl0eSBmb3IgcmVhZGluZyBXQUwgZGF0YSBmcm9t IHRhciBhcmNoaXZlcyB2aWEgYXJjaGl2ZQorICoJCXN0cmVhbWVyLgorICoKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJCXNyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dh bGR1bXAuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jl c19mZS5oIgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ19p bnRlcm5hbC5oIgorI2luY2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKKyNpbmNsdWRlICJjb21tb24v bG9nZ2luZy5oIgorI2luY2x1ZGUgImZlX3V0aWxzL3NpbXBsZV9saXN0LmgiCisjaW5jbHVkZSAi cGdfd2FsZHVtcC5oIgorCisvKgorICogSG93IG1hbnkgYnl0ZXMgc2hvdWxkIHdlIHRyeSB0byBy ZWFkIGZyb20gYSBmaWxlIGF0IG9uY2U/CisgKi8KKyNkZWZpbmUgUkVBRF9DSFVOS19TSVpFCQkJ CSgxMjggKiAxMDI0KQorCisvKgorICogQ2hlY2sgaWYgdGhlIHN0YXJ0IHNlZ21lbnQgbnVtYmVy IGlzIHplcm87IHRoaXMgaW5kaWNhdGVzIGEgcmVxdWVzdCB0byByZWFkCisgKiBhbnkgV0FMIGZp bGUuCisgKi8KKyNkZWZpbmUgUkVBRF9BTllfV0FMKHByaXZhdGVJbmZvKQkoKHByaXZhdGVJbmZv KS0+c3RhcnRfc2Vnbm8gPT0gMCkKKworLyoKKyAqIEhhc2ggZW50cnkgcmVwcmVzZW50aW5nIGEg V0FMIHNlZ21lbnQgcmV0cmlldmVkIGZyb20gdGhlIGFyY2hpdmUuCisgKgorICogV2hpbGUgV0FM IHNlZ21lbnRzIGFyZSB0eXBpY2FsbHkgcmVhZCBzZXF1ZW50aWFsbHksIGluZGl2aWR1YWwgZW50 cmllcworICogbWFpbnRhaW4gdGhlaXIgb3duIGJ1ZmZlcnMgZm9yIHRoZSBmb2xsb3dpbmcgcmVh c29uczoKKyAqCisgKiAxLiBCb3VuZGFyeSBIYW5kbGluZzogVGhlIGFyY2hpdmUgc3RyZWFtZXIg cHJvdmlkZXMgYSBjb250aW51b3VzIGJ5dGUKKyAqIHN0cmVhbS4gQSBzaW5nbGUgc3RyZWFtaW5n IGNodW5rIG1heSBjb250YWluIHRoZSBlbmQgb2Ygb25lIFdBTCBzZWdtZW50CisgKiBhbmQgdGhl IHN0YXJ0IG9mIHRoZSBuZXh0LiBTZXBhcmF0ZSBidWZmZXJzIGFsbG93IHVzIHRvIGVhc2lseQor ICogcGFydGl0aW9uIGFuZCB0cmFjayB0aGVzZSBieXRlcyBieSB0aGVpciByZXNwZWN0aXZlIHNl Z21lbnRzLgorICoKKyAqIDIuIE91dC1vZi1PcmRlciBTdXBwb3J0OiBEZWRpY2F0ZWQgYnVmZmVy cyBzaW1wbGlmeSBsb2dpYyBpZiBzZWdtZW50cworICogYXJlIGV2ZXIgYXJjaGl2ZWQgb3IgcmV0 cmlldmVkIG91dCBvZiBzZXF1ZW5jZS4KKyAqCisgKiBUbyBtaW5pbWl6ZSB0aGUgbWVtb3J5IGZv b3RwcmludCwgZW50cmllcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBidWZmZXJzIGFyZQorICogZnJl ZWQgaW1tZWRpYXRlbHkgb25jZSBjb25zdW1lZC4gU2luY2UgcGdfd2FsZHVtcCBkb2VzIG5vdCBy ZXF1ZXN0IHRoZSBzYW1lCisgKiBieXRlcyB0d2ljZSwgYSBzZWdtZW50IGlzIGRpc2NhcmRlZCBh cyBzb29uIGFzIGl0IG1vdmVzIHBhc3QgaXQuCisgKi8KK3R5cGVkZWYgc3RydWN0IEFyY2hpdmVk V0FMRmlsZQoreworCXVpbnQzMgkJc3RhdHVzOwkJCS8qIGhhc2ggc3RhdHVzICovCisJY29uc3Qg Y2hhciAqZm5hbWU7CQkJLyogaGFzaCBrZXk6IFdBTCBzZWdtZW50IG5hbWUgKi8KKworCVN0cmlu Z0luZm8JYnVmOwkJCS8qIGhvbGRzIFdBTCBieXRlcyByZWFkIGZyb20gYXJjaGl2ZSAqLworCisJ aW50CQkJcmVhZF9sZW47CQkvKiB0b3RhbCBieXRlcyBvZiBhIFdBTCByZWFkIGZyb20gYXJjaGl2 ZSAqLworfSBBcmNoaXZlZFdBTEZpbGU7CisKK3N0YXRpYyB1aW50MzIgaGFzaF9zdHJpbmdfcG9p bnRlcihjb25zdCBjaGFyICpzKTsKKyNkZWZpbmUgU0hfUFJFRklYCQkJCUFyY2hpdmVkV0FMCisj ZGVmaW5lIFNIX0VMRU1FTlRfVFlQRQkJCUFyY2hpdmVkV0FMRmlsZQorI2RlZmluZSBTSF9LRVlf VFlQRQkJCQljb25zdCBjaGFyICoKKyNkZWZpbmUgU0hfS0VZCQkJCQlmbmFtZQorI2RlZmluZSBT SF9IQVNIX0tFWSh0Yiwga2V5KQloYXNoX3N0cmluZ19wb2ludGVyKGtleSkKKyNkZWZpbmUgU0hf RVFVQUwodGIsIGEsIGIpCQkoc3RyY21wKGEsIGIpID09IDApCisjZGVmaW5lIFNIX1NDT1BFCQkJ CXN0YXRpYyBpbmxpbmUKKyNkZWZpbmUgU0hfUkFXX0FMTE9DQVRPUgkJcGdfbWFsbG9jMAorI2Rl ZmluZSBTSF9ERUNMQVJFCisjZGVmaW5lIFNIX0RFRklORQorI2luY2x1ZGUgImxpYi9zaW1wbGVo YXNoLmgiCisKK3R5cGVkZWYgc3RydWN0IGFzdHJlYW1lcl93YWxkdW1wCit7CisJYXN0cmVhbWVy CWJhc2U7CisJWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbzsKK30gYXN0cmVhbWVyX3dhbGR1 bXA7CisKK3N0YXRpYyBBcmNoaXZlZFdBTEZpbGUgKmdldF9hcmNoaXZlX3dhbF9lbnRyeShjb25z dCBjaGFyICpmbmFtZSwKKwkJCQkJCQkJCQkJICBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZv LAorCQkJCQkJCQkJCQkgIGludCBXYWxTZWdTeik7CitzdGF0aWMgaW50CXJlYWRfYXJjaGl2ZV9m aWxlKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sIFNpemUgY291bnQpOworCitzdGF0aWMg YXN0cmVhbWVyICphc3RyZWFtZXJfd2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRlICpwcml2YXRl SW5mbyk7CitzdGF0aWMgdm9pZCBhc3RyZWFtZXJfd2FsZHVtcF9jb250ZW50KGFzdHJlYW1lciAq c3RyZWFtZXIsCisJCQkJCQkJCQkgIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKKwkJCQkJCQkJ CSAgY29uc3QgY2hhciAqZGF0YSwgaW50IGxlbiwKKwkJCQkJCQkJCSAgYXN0cmVhbWVyX2FyY2hp dmVfY29udGV4dCBjb250ZXh0KTsKK3N0YXRpYyB2b2lkIGFzdHJlYW1lcl93YWxkdW1wX2ZpbmFs aXplKGFzdHJlYW1lciAqc3RyZWFtZXIpOworc3RhdGljIHZvaWQgYXN0cmVhbWVyX3dhbGR1bXBf ZnJlZShhc3RyZWFtZXIgKnN0cmVhbWVyKTsKKworc3RhdGljIGJvb2wgbWVtYmVyX2lzX3dhbF9m aWxlKGFzdHJlYW1lcl93YWxkdW1wICpteXN0cmVhbWVyLAorCQkJCQkJCSAgIGFzdHJlYW1lcl9t ZW1iZXIgKm1lbWJlciwKKwkJCQkJCQkgICBjaGFyICoqZm5hbWUpOworCitzdGF0aWMgY29uc3Qg YXN0cmVhbWVyX29wcyBhc3RyZWFtZXJfd2FsZHVtcF9vcHMgPSB7CisJLmNvbnRlbnQgPSBhc3Ry ZWFtZXJfd2FsZHVtcF9jb250ZW50LAorCS5maW5hbGl6ZSA9IGFzdHJlYW1lcl93YWxkdW1wX2Zp bmFsaXplLAorCS5mcmVlID0gYXN0cmVhbWVyX3dhbGR1bXBfZnJlZQorfTsKKworLyoKKyAqIFJl dHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIHRhciBhcmNoaXZlIGFuZCBvdXRwdXRz IGl0cyBjb21wcmVzc2lvbgorICogYWxnb3JpdGhtLgorICovCitib29sCitpc19hcmNoaXZlX2Zp bGUoY29uc3QgY2hhciAqZm5hbWUsIHBnX2NvbXByZXNzX2FsZ29yaXRobSAqY29tcHJlc3Npb24p Cit7CisJaW50CQkJZm5hbWVfbGVuID0gc3RybGVuKGZuYW1lKTsKKworCS8qIE5vdywgY2hlY2sg dGhlIGNvbXByZXNzaW9uIHR5cGUgb2YgdGhlIHRhciAqLworCWlmIChmbmFtZV9sZW4gPiA0ICYm CisJCXN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDQsICIudGFyIikgPT0gMCkKKwkJKmNvbXBy ZXNzaW9uID0gUEdfQ09NUFJFU1NJT05fTk9ORTsKKwllbHNlIGlmIChmbmFtZV9sZW4gPiA0ICYm CisJCQkgc3RyY21wKGZuYW1lICsgZm5hbWVfbGVuIC0gNCwgIi50Z3oiKSA9PSAwKQorCQkqY29t cHJlc3Npb24gPSBQR19DT01QUkVTU0lPTl9HWklQOworCWVsc2UgaWYgKGZuYW1lX2xlbiA+IDcg JiYKKwkJCSBzdHJjbXAoZm5hbWUgKyBmbmFtZV9sZW4gLSA3LCAiLnRhci5neiIpID09IDApCisJ CSpjb21wcmVzc2lvbiA9IFBHX0NPTVBSRVNTSU9OX0daSVA7CisJZWxzZSBpZiAoZm5hbWVfbGVu ID4gOCAmJgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDgsICIudGFyLmx6NCIpID09 IDApCisJCSpjb21wcmVzc2lvbiA9IFBHX0NPTVBSRVNTSU9OX0xaNDsKKwllbHNlIGlmIChmbmFt ZV9sZW4gPiA4ICYmCisJCQkgc3RyY21wKGZuYW1lICsgZm5hbWVfbGVuIC0gOCwgIi50YXIuenN0 IikgPT0gMCkKKwkJKmNvbXByZXNzaW9uID0gUEdfQ09NUFJFU1NJT05fWlNURDsKKwllbHNlCisJ CXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogSW5pdGlhbGl6ZXMg dGhlIHRhciBhcmNoaXZlIHJlYWRlciwgY3JlYXRlcyBhIGhhc2ggdGFibGUgZm9yIFdBTCBlbnRy aWVzLAorICogY2hlY2tzIGZvciBleGlzdGluZyB2YWxpZCBXQUwgc2VnbWVudHMgaW4gdGhlIGFy Y2hpdmUgZmlsZSBhbmQgcmV0cmlldmVzIHRoZQorICogc2VnbWVudCBzaXplLCBhbmQgc2V0cyB1 cCBmaWx0ZXJzIGZvciByZWxldmFudCBlbnRyaWVzLgorICovCit2b2lkCitpbml0X2FyY2hpdmVf cmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sIGNvbnN0IGNoYXIgKndhbGRpciwK KwkJCQkJaW50ICpXYWxTZWdTeiwgcGdfY29tcHJlc3NfYWxnb3JpdGhtIGNvbXByZXNzaW9uKQor eworCWludAkJCWZkOworCWFzdHJlYW1lciAgKnN0cmVhbWVyOworCUFyY2hpdmVkV0FMRmlsZSAq ZW50cnkgPSBOVUxMOworCVhMb2dMb25nUGFnZUhlYWRlciBsb25naGRyOworCVhMb2dTZWdObwlz ZWdubzsKKwlUaW1lTGluZUlECXRpbWVsaW5lOworCisJLyogT3BlbiB0YXIgYXJjaGl2ZSBhbmQg c3RvcmUgaXRzIGZpbGUgZGVzY3JpcHRvciAqLworCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9y eSh3YWxkaXIsIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworCisJaWYgKGZkIDwgMCkKKwkJ cGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIiwgcHJpdmF0ZUluZm8tPmFyY2hp dmVfbmFtZSk7CisKKwlwcml2YXRlSW5mby0+YXJjaGl2ZV9mZCA9IGZkOworCisJc3RyZWFtZXIg PSBhc3RyZWFtZXJfd2FsZHVtcF9uZXcocHJpdmF0ZUluZm8pOworCisJLyogQmVmb3JlIHRoYXQg d2UgbXVzdCBwYXJzZSB0aGUgdGFyIGFyY2hpdmUuICovCisJc3RyZWFtZXIgPSBhc3RyZWFtZXJf dGFyX3BhcnNlcl9uZXcoc3RyZWFtZXIpOworCisJLyogQmVmb3JlIHRoYXQgd2UgbXVzdCBkZWNv bXByZXNzLCBpZiBhcmNoaXZlIGlzIGNvbXByZXNzZWQuICovCisJaWYgKGNvbXByZXNzaW9uID09 IFBHX0NPTVBSRVNTSU9OX0daSVApCisJCXN0cmVhbWVyID0gYXN0cmVhbWVyX2d6aXBfZGVjb21w cmVzc29yX25ldyhzdHJlYW1lcik7CisJZWxzZSBpZiAoY29tcHJlc3Npb24gPT0gUEdfQ09NUFJF U1NJT05fTFo0KQorCQlzdHJlYW1lciA9IGFzdHJlYW1lcl9sejRfZGVjb21wcmVzc29yX25ldyhz dHJlYW1lcik7CisJZWxzZSBpZiAoY29tcHJlc3Npb24gPT0gUEdfQ09NUFJFU1NJT05fWlNURCkK KwkJc3RyZWFtZXIgPSBhc3RyZWFtZXJfenN0ZF9kZWNvbXByZXNzb3JfbmV3KHN0cmVhbWVyKTsK KworCXByaXZhdGVJbmZvLT5hcmNoaXZlX3N0cmVhbWVyID0gc3RyZWFtZXI7CisKKwkvKgorCSAq IEhhc2ggdGFibGUgc3RvcmluZyBXQUwgZW50cmllcyByZWFkIGZyb20gdGhlIGFyY2hpdmUgd2l0 aCBhbiBhcmJpdHJhcnkKKwkgKiBpbml0aWFsIHNpemUKKwkgKi8KKwlwcml2YXRlSW5mby0+YXJj aGl2ZV93YWxfaHRhYiA9IEFyY2hpdmVkV0FMX2NyZWF0ZSg4LCBOVUxMKTsKKworCS8qCisJICog VmVyaWZ5IHRoYXQgdGhlIGFyY2hpdmUgY29udGFpbnMgdmFsaWQgV0FMIGZpbGVzIGFuZCBmZXRj aCBXQUwgc2VnbWVudAorCSAqIHNpemUKKwkgKi8KKwl3aGlsZSAoZW50cnkgPT0gTlVMTCB8fCBl bnRyeS0+YnVmLT5sZW4gPCBYTE9HX0JMQ0tTWikKKwl7CisJCWlmIChyZWFkX2FyY2hpdmVfZmls ZShwcml2YXRlSW5mbywgWExPR19CTENLU1opID09IDApCisJCQlwZ19mYXRhbCgiY291bGQgbm90 IGZpbmQgV0FMIGluIGFyY2hpdmUgXCIlc1wiIiwKKwkJCQkJIHByaXZhdGVJbmZvLT5hcmNoaXZl X25hbWUpOworCisJCWVudHJ5ID0gcHJpdmF0ZUluZm8tPmN1cl9maWxlOworCX0KKworCS8qIFNl dCBXYWxTZWdTeiBpZiBXQUwgZGF0YSBpcyBzdWNjZXNzZnVsbHkgcmVhZCAqLworCWxvbmdoZHIg PSAoWExvZ0xvbmdQYWdlSGVhZGVyKSBlbnRyeS0+YnVmLT5kYXRhOworCisJaWYgKCFJc1ZhbGlk V2FsU2VnU2l6ZShsb25naGRyLT54bHBfc2VnX3NpemUpKQorCXsKKwkJcGdfbG9nX2Vycm9yKG5n ZXR0ZXh0KCJpbnZhbGlkIFdBTCBzZWdtZW50IHNpemUgaW4gV0FMIGZpbGUgZnJvbSBhcmNoaXZl IFwiJXNcIiAoJWQgYnl0ZSkiLAorCQkJCQkJCSAgImludmFsaWQgV0FMIHNlZ21lbnQgc2l6ZSBp biBXQUwgZmlsZSBmcm9tIGFyY2hpdmUgXCIlc1wiICglZCBieXRlcykiLAorCQkJCQkJCSAgbG9u Z2hkci0+eGxwX3NlZ19zaXplKSwKKwkJCQkJIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUsIGxv bmdoZHItPnhscF9zZWdfc2l6ZSk7CisJCXBnX2xvZ19lcnJvcl9kZXRhaWwoIlRoZSBXQUwgc2Vn bWVudCBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28gYmV0d2VlbiAxIE1CIGFuZCAxIEdCLiIp OworCQlleGl0KDEpOworCX0KKworCSpXYWxTZWdTeiA9IGxvbmdoZHItPnhscF9zZWdfc2l6ZTsK KworCS8qCisJICogV2l0aCB0aGUgV0FMIHNlZ21lbnQgc2l6ZSBhdmFpbGFibGUsIHdlIGNhbiBu b3cgaW5pdGlhbGl6ZSB0aGUKKwkgKiBkZXBlbmRlbnQgc3RhcnQgYW5kIGVuZCBzZWdtZW50IG51 bWJlcnMuCisJICovCisJQXNzZXJ0KCFYTG9nUmVjUHRySXNJbnZhbGlkKHByaXZhdGVJbmZvLT5z dGFydHB0cikpOworCVhMQnl0ZVRvU2VnKHByaXZhdGVJbmZvLT5zdGFydHB0ciwgcHJpdmF0ZUlu Zm8tPnN0YXJ0X3NlZ25vLCAqV2FsU2VnU3opOworCisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlk KHByaXZhdGVJbmZvLT5lbmRwdHIpKQorCQlYTEJ5dGVUb1NlZyhwcml2YXRlSW5mby0+ZW5kcHRy LCBwcml2YXRlSW5mby0+ZW5kX3NlZ25vLCAqV2FsU2VnU3opOworCisJLyoKKwkgKiBUaGlzIFdB TCByZWNvcmQgd2FzIGZldGNoZWQgYmVmb3JlIHRoZSBmaWx0ZXJpbmcgcGFyYW1ldGVycworCSAq IChzdGFydF9zZWdubyBhbmQgZW5kX3NlZ25vKSB3ZXJlIGZ1bGx5IGluaXRpYWxpemVkLiBQZXJm b3JtIHRoZQorCSAqIHJlbGV2YW5jZSBjaGVjayBhZ2FpbnN0IHRoZSB1c2VyLXByb3ZpZGVkIHJh bmdlIG5vdzsgaWYgdGhlIFdBTCBmYWxscworCSAqIG91dHNpZGUgdGhpcyByYW5nZSwgcmVtb3Zl IGl0IGZyb20gdGhlIGhhc2ggdGFibGUuIFN1YnNlcXVlbnQgV0FMIHdpbGwKKwkgKiBiZSBmaWx0 ZXJlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBhcmNoaXZlZCBzdHJlYW1lciB1c2luZyB0aGUgdXBk YXRlZAorCSAqIHN0YXJ0X3NlZ25vIGFuZCBlbmRfc2Vnbm8gdmFsdWVzLgorCSAqLworCVhMb2dG cm9tRmlsZU5hbWUoZW50cnktPmZuYW1lLCAmdGltZWxpbmUsICZzZWdubywgcHJpdmF0ZUluZm8t PnNlZ3NpemUpOworCWlmIChwcml2YXRlSW5mby0+dGltZWxpbmUgIT0gdGltZWxpbmUgfHwKKwkJ cHJpdmF0ZUluZm8tPnN0YXJ0X3NlZ25vID4gc2Vnbm8gfHwKKwkJcHJpdmF0ZUluZm8tPmVuZF9z ZWdubyA8IHNlZ25vKQorCQlmcmVlX2FyY2hpdmVfd2FsX2VudHJ5KGVudHJ5LT5mbmFtZSwgcHJp dmF0ZUluZm8pOworfQorCisvKgorICogUmVsZWFzZSB0aGUgYXJjaGl2ZSBzdHJlYW1lciBjaGFp biBhbmQgY2xvc2UgdGhlIGFyY2hpdmUgZmlsZS4KKyAqLwordm9pZAorZnJlZV9hcmNoaXZlX3Jl YWRlcihYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKQoreworCS8qCisJICogTkI6IE5vcm1h bGx5LCBhc3RyZWFtZXJfZmluYWxpemUoKSBpcyBjYWxsZWQgYmVmb3JlIGFzdHJlYW1lcl9mcmVl KCkgdG8KKwkgKiBmbHVzaCBhbnkgcmVtYWluaW5nIGJ1ZmZlcmVkIGRhdGEgb3IgdG8gZW5zdXJl IHRoZSBlbmQgb2YgdGhlIHRhcgorCSAqIGFyY2hpdmUgaXMgcmVhY2hlZC4gSG93ZXZlciwgd2hl biBkZWNvZGluZyBhIFdBTCBmaWxlLCBvbmNlIHdlIGhpdCB0aGUKKwkgKiBlbmQgTFNOLCBhbnkg cmVtYWluaW5nIFdBTCBkYXRhIGluIHRoZSBidWZmZXIgb3IgdGhlIHRhciBhcmNoaXZlJ3MKKwkg KiB1bnJlYWNoZWQgZW5kIGNhbiBiZSBzYWZlbHkgaWdub3JlZC4KKwkgKi8KKwlhc3RyZWFtZXJf ZnJlZShwcml2YXRlSW5mby0+YXJjaGl2ZV9zdHJlYW1lcik7CisKKwkvKiBDbG9zZSB0aGUgZmls ZS4gKi8KKwlpZiAoY2xvc2UocHJpdmF0ZUluZm8tPmFyY2hpdmVfZmQpICE9IDApCisJCXBnX2xv Z19lcnJvcigiY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCSBwcml2YXRl SW5mby0+YXJjaGl2ZV9uYW1lKTsKK30KKworLyoKKyAqIENvcGllcyBXQUwgZGF0YSBmcm9tIGFz dHJlYW1lciB0byByZWFkQnVmZjsgaWYgdW5hdmFpbGFibGUsIGZldGNoZXMgbW9yZQorICogZnJv bSB0aGUgdGFyIGFyY2hpdmUgdmlhIGFzdHJlYW1lci4KKyAqLworaW50CityZWFkX2FyY2hpdmVf d2FsX3BhZ2UoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywgWExvZ1JlY1B0ciB0YXJnZXRQ YWdlUHRyLAorCQkJCQkgIFNpemUgY291bnQsIGNoYXIgKnJlYWRCdWZmLCBpbnQgV2FsU2VnU3op Cit7CisJY2hhcgkgICAqcCA9IHJlYWRCdWZmOworCVNpemUJCW5ieXRlcyA9IGNvdW50OworCVhM b2dSZWNQdHIJcmVjcHRyID0gdGFyZ2V0UGFnZVB0cjsKKwlYTG9nU2VnTm8Jc2Vnbm87CisJY2hh cgkJZm5hbWVbTUFYRk5BTUVMRU5dOworCUFyY2hpdmVkV0FMRmlsZSAqZW50cnk7CisKKwkvKiBJ ZGVudGlmeSB0aGUgc2VnbWVudCBhbmQgbG9jYXRlIGl0cyBlbnRyeSBpbiB0aGUgYXJjaGl2ZSBo YXNoICovCisJWExCeXRlVG9TZWcodGFyZ2V0UGFnZVB0ciwgc2Vnbm8sIFdhbFNlZ1N6KTsKKwlY TG9nRmlsZU5hbWUoZm5hbWUsIHByaXZhdGVJbmZvLT50aW1lbGluZSwgc2Vnbm8sIFdhbFNlZ1N6 KTsKKwllbnRyeSA9IGdldF9hcmNoaXZlX3dhbF9lbnRyeShmbmFtZSwgcHJpdmF0ZUluZm8sIFdh bFNlZ1N6KTsKKworCXdoaWxlIChuYnl0ZXMgPiAwKQorCXsKKwkJY2hhcgkgICAqYnVmID0gZW50 cnktPmJ1Zi0+ZGF0YTsKKwkJaW50CQkJYnVmTGVuID0gZW50cnktPmJ1Zi0+bGVuOworCQlYTG9n UmVjUHRyCWVuZFB0cjsKKwkJWExvZ1JlY1B0cglzdGFydFB0cjsKKworCQkvKiBDYWxjdWxhdGUg dGhlIExTTiByYW5nZSBjdXJyZW50bHkgcmVzaWRpbmcgaW4gdGhlIGJ1ZmZlciAqLworCQlYTG9n U2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubywgZW50cnktPnJlYWRfbGVuLCBXYWxTZWdTeiwgZW5k UHRyKTsKKwkJc3RhcnRQdHIgPSBlbmRQdHIgLSBidWZMZW47CisKKwkJLyoKKwkJICogQ29weSB0 aGUgcmVxdWVzdGVkIFdBTCByZWNvcmQgaWYgaXQgZXhpc3RzIGluIHRoZSBidWZmZXIuCisJCSAq LworCQlpZiAoYnVmTGVuID4gMCAmJiBzdGFydFB0ciA8PSByZWNwdHIgJiYgcmVjcHRyIDwgZW5k UHRyKQorCQl7CisJCQlpbnQJCQljb3B5Qnl0ZXM7CisJCQlpbnQJCQlvZmZzZXQgPSByZWNwdHIg LSBzdGFydFB0cjsKKworCQkJLyoKKwkJCSAqIEdpdmVuIHN0YXJ0UHRyIDw9IHJlY3B0ciA8IGVu ZFB0ciBhbmQgYSB0b3RhbCBidWZmZXIgc2l6ZQorCQkJICogJ2J1ZkxlbicsIHRoZSBvZmZzZXQg KHJlY3B0ciAtIHN0YXJ0UHRyKSB3aWxsIGFsd2F5cyBiZSBsZXNzCisJCQkgKiB0aGFuICdidWZM ZW4nLgorCQkJICovCisJCQlBc3NlcnQob2Zmc2V0IDwgYnVmTGVuKTsKKworCQkJY29weUJ5dGVz ID0gTWluKG5ieXRlcywgYnVmTGVuIC0gb2Zmc2V0KTsKKwkJCW1lbWNweShwLCBidWYgKyBvZmZz ZXQsIGNvcHlCeXRlcyk7CisKKwkJCS8qIFVwZGF0ZSBzdGF0ZSBmb3IgcmVhZCAqLworCQkJcmVj cHRyICs9IGNvcHlCeXRlczsKKwkJCW5ieXRlcyAtPSBjb3B5Qnl0ZXM7CisJCQlwICs9IGNvcHlC eXRlczsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBCZWZvcmUgc3RhcnRpbmcgdGhl IGFjdHVhbCBkZWNvZGluZyBsb29wLCBwZ193YWxkdW1wIHRyaWVzIHRvCisJCQkgKiBsb2NhdGUg dGhlIGZpcnN0IHZhbGlkIHJlY29yZCBmcm9tIHRoZSB1c2VyLXNwZWNpZmllZCBzdGFydAorCQkJ ICogcG9zaXRpb24sIHdoaWNoIG1pZ2h0IG5vdCBiZSB0aGUgc3RhcnQgb2YgYSBXQUwgcmVjb3Jk IGFuZAorCQkJICogY291bGQgZmFsbCBpbiB0aGUgbWlkZGxlIG9mIGEgcmVjb3JkIHRoYXQgc3Bh bnMgbXVsdGlwbGUgcGFnZXMuCisJCQkgKiBDb25zZXF1ZW50bHksIHRoZSB2YWxpZCBzdGFydCBw b3NpdGlvbiB0aGUgZGVjb2RlciBpcyBsb29raW5nCisJCQkgKiBmb3IgY291bGQgYmUgZmFyIGF3 YXkgZnJvbSB0aGF0IGluaXRpYWwgcG9zaXRpb24uCisJCQkgKgorCQkJICogVGhpcyBtYXkgaW52 b2x2ZSByZWFkaW5nIGFjcm9zcyBtdWx0aXBsZSBwYWdlcywgYW5kIHRoaXMKKwkJCSAqIHByZS1y ZWFkaW5nIGZldGNoZXMgZGF0YSBpbiBtdWx0aXBsZSByb3VuZHMgZnJvbSB0aGUgYXJjaGl2ZQor CQkJICogc3RyZWFtZXI7IG5vcm1hbGx5LCB3ZSB3b3VsZCB0aHJvdyBhd2F5IGV4aXN0aW5nIGJ1 ZmZlcgorCQkJICogY29udGVudHMgdG8gZmV0Y2ggdGhlIG5leHQgc2V0IG9mIGRhdGEsIGJ1dCB0 aGF0IGV4aXN0aW5nIGRhdGEKKwkJCSAqIG1pZ2h0IGJlIG5lZWRlZCBvbmNlIHRoZSBtYWluIGxv b3Agc3RhcnRzLiBCZWNhdXNlIHByZXZpb3VzbHkKKwkJCSAqIHJlYWQgZGF0YSBjYW5ub3QgYmUg cmUtcmVhZCBieSB0aGUgYXJjaGl2ZSBzdHJlYW1lciwgd2UgZGVsYXkKKwkJCSAqIHJlc2V0dGlu ZyB0aGUgYnVmZmVyIHVudGlsIHRoZSBtYWluIGRlY29kaW5nIGxvb3AgaXMgZW50ZXJlZC4KKwkJ CSAqCisJCQkgKiBPbmNlIHBnX3dhbGR1bXAgaGFzIGVudGVyZWQgdGhlIG1haW4gbG9vcCwgaXQg bWF5IHJlLXJlYWQgdGhlCisJCQkgKiBjdXJyZW50bHkgYWN0aXZlIHBhZ2UsIGJ1dCBuZXZlciBh biBvbGRlciBvbmU7IHRoZXJlZm9yZSwgYW55CisJCQkgKiBmdWxseSBjb25zdW1lZCBXQUwgZGF0 YSBwcmVjZWRpbmcgdGhlIGN1cnJlbnQgcGFnZSBjYW4gdGhlbiBiZQorCQkJICogc2FmZWx5IGRp c2NhcmRlZC4KKwkJCSAqLworCQkJaWYgKHByaXZhdGVJbmZvLT5kZWNvZGluZ19zdGFydGVkKQor CQkJeworCQkJCXJlc2V0U3RyaW5nSW5mbyhlbnRyeS0+YnVmKTsKKworCQkJCS8qCisJCQkJICog UHVzaCBiYWNrIHRoZSBwYXJ0aWFsIHBhZ2UgZGF0YSBmb3IgdGhlIGN1cnJlbnQgcGFnZSB0byB0 aGUKKwkJCQkgKiBidWZmZXIsIGVuc3VyaW5nIGl0IHJlbWFpbnMgZnVsbCBwYWdlIGF2YWlsYWJs ZSBmb3IKKwkJCQkgKiByZS1yZWFkaW5nIGlmIHJlcXVlc3RlZC4KKwkJCQkgKi8KKwkJCQlpZiAo cCA+IHJlYWRCdWZmKQorCQkJCXsKKwkJCQkJQXNzZXJ0KChjb3VudCAtIG5ieXRlcykgPiAwKTsK KwkJCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhlbnRyeS0+YnVmLCByZWFkQnVmZiwgY291bnQg LSBuYnl0ZXMpOworCQkJCX0KKwkJCX0KKworCQkJLyoKKwkJCSAqIE5vdywgZmV0Y2ggbW9yZSBk YXRhOyByYWlzZSBhbiBlcnJvciBpZiBpdCdzIG5vdCB0aGUgY3VycmVudAorCQkJICogc2VnbWVu dCBiZWluZyByZWFkIGJ5IHRoZSBhcmNoaXZlIHN0cmVhbWVyIG9yIGlmIHJlYWRpbmcgb2YgdGhl CisJCQkgKiBhcmNoaXZlZCBmaWxlIGhhcyBmaW5pc2hlZC4KKwkJCSAqLworCQkJaWYgKHByaXZh dGVJbmZvLT5jdXJfZmlsZSAhPSBlbnRyeSB8fAorCQkJCXJlYWRfYXJjaGl2ZV9maWxlKHByaXZh dGVJbmZvLCBSRUFEX0NIVU5LX1NJWkUpID09IDApCisJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBy ZWFkIGZpbGUgXCIlc1wiIGZyb20gYXJjaGl2ZSBcIiVzXCI6IHJlYWQgJWxsZCBvZiAlbGxkIiwK KwkJCQkJCSBmbmFtZSwgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSwKKwkJCQkJCSAobG9uZyBs b25nIGludCkgY291bnQgLSBuYnl0ZXMsCisJCQkJCQkgKGxvbmcgbG9uZyBpbnQpIG5ieXRlcyk7 CisJCX0KKwl9CisKKwkvKgorCSAqIFNob3VsZCBoYXZlIGVpdGhlciBoYXZlIHN1Y2Nlc3NmdWxs eSByZWFkIGFsbCB0aGUgcmVxdWVzdGVkIGJ5dGVzIG9yCisJICogcmVwb3J0ZWQgYSBmYWlsdXJl IGJlZm9yZSB0aGlzIHBvaW50LgorCSAqLworCUFzc2VydChuYnl0ZXMgPT0gMCk7CisKKwkvKgor CSAqIE5COiBXZSByZXR1cm4gdGhlIGZpeGVkIHZhbHVlIHByb3ZpZGVkIGFzIGlucHV0LiBBbHRo b3VnaCB3ZSBjb3VsZAorCSAqIHJldHVybiBhIGJvb2xlYW4gc2luY2Ugd2UgZWl0aGVyIHN1Y2Nl c3NmdWxseSByZWFkIHRoZSBXQUwgcGFnZSBvcgorCSAqIHJhaXNlIGFuIGVycm9yLCBidXQgdGhl IGNhbGxlciBleHBlY3RzIHRoaXMgdmFsdWUgdG8gYmUgcmV0dXJuZWQuIFRoZQorCSAqIHJvdXRp bmUgdGhhdCByZWFkcyBXQUwgcGFnZXMgZnJvbSB0aGUgcGh5c2ljYWwgV0FMIGZpbGUgZm9sbG93 cyB0aGUKKwkgKiBzYW1lIGNvbnZlbnRpb24uCisJICovCisJcmV0dXJuIGNvdW50OworfQorCisv KgorICogQ2xlYXJzIHRoZSBidWZmZXIgb2YgYSBXQUwgZW50cnkgdGhhdCBpcyBiZWluZyBpZ25v cmVkLiAgVGhpcyBmcmVlcyB1cCBtZW1vcnkKKyAqIGFuZCBwcmV2ZW50cyB0aGUgYWNjdW11bGF0 aW9uIG9mIGlycmVsZXZhbnQgV0FMIGRhdGEuICBBZGRpdGlvbmFsbHksCisgKiBjb25kaXRpb25h bGx5IHNldHRpbmcgY3VyX2ZpbGUgd2l0aGluIHByaXZhdGVpbmZvIHRvIE5VTEwgZW5zdXJlcyB0 aGUKKyAqIGFyY2hpdmUgc3RyZWFtZXIgc2tpcHMgdW5uZWNlc3NhcnkgY29weSBvcGVyYXRpb25z CisgKi8KK3ZvaWQKK2ZyZWVfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5hbWUsIFhM b2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pCit7CisJQXJjaGl2ZWRXQUxGaWxlICplbnRyeTsK KworCWVudHJ5ID0gQXJjaGl2ZWRXQUxfbG9va3VwKHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9o dGFiLCBmbmFtZSk7CisKKwlpZiAoZW50cnkgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyogRGVz dHJveSB0aGUgYnVmZmVyICovCisJZGVzdHJveVN0cmluZ0luZm8oZW50cnktPmJ1Zik7CisJZW50 cnktPmJ1ZiA9IE5VTEw7CisKKwkvKiBTZXQgY3VyX2ZpbGUgdG8gTlVMTCBpZiBpdCBtYXRjaGVz IHRoZSBlbnRyeSBiZWluZyBpZ25vcmVkICovCisJaWYgKHByaXZhdGVJbmZvLT5jdXJfZmlsZSA9 PSBlbnRyeSkKKwkJcHJpdmF0ZUluZm8tPmN1cl9maWxlID0gTlVMTDsKKworCUFyY2hpdmVkV0FM X2RlbGV0ZV9pdGVtKHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFiLCBlbnRyeSk7Cit9CisK Ky8qCisgKiBSZXR1cm5zIHRoZSBhcmNoaXZlZCBXQUwgZW50cnkgZnJvbSB0aGUgaGFzaCB0YWJs ZSBpZiBpdCBleGlzdHMuICBPdGhlcndpc2UsCisgKiBpdCBpbnZva2VzIHRoZSByb3V0aW5lIHRv IHJlYWQgdGhlIGFyY2hpdmVkIGZpbGUsIHdoaWNoIHRoZW4gcG9wdWxhdGVzIHRoZQorICogZW50 cnkgaW4gdGhlIGhhc2ggdGFibGUgaWYgdGhhdCBXQUwgZXhpc3RzIGluIHRoZSBhcmNoaXZlLgor ICovCitzdGF0aWMgQXJjaGl2ZWRXQUxGaWxlICoKK2dldF9hcmNoaXZlX3dhbF9lbnRyeShjb25z dCBjaGFyICpmbmFtZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKKwkJCQkJICBpbnQg V2FsU2VnU3opCit7CisJQXJjaGl2ZWRXQUxGaWxlICplbnRyeSA9IE5VTEw7CisKKwkvKiBTZWFy Y2ggaGFzaCB0YWJsZSAqLworCWVudHJ5ID0gQXJjaGl2ZWRXQUxfbG9va3VwKHByaXZhdGVJbmZv LT5hcmNoaXZlX3dhbF9odGFiLCBmbmFtZSk7CisKKwlpZiAoZW50cnkgIT0gTlVMTCkKKwkJcmV0 dXJuIGVudHJ5OworCisJLyoKKwkgKiBUaGUgcmVxdWVzdGVkIFdBTCBlbnRyeSBoYXMgbm90IGJl ZW4gcmVhZCBmcm9tIHRoZSBhcmNoaXZlIHlldDsgaW52b2tlCisJICogdGhlIGFyY2hpdmUgc3Ry ZWFtZXIgdG8gcmVhZCBpdC4KKwkgKi8KKwl3aGlsZSAoMSkKKwl7CisJCS8qIEZldGNoIG1vcmUg ZGF0YSAqLworCQlpZiAocmVhZF9hcmNoaXZlX2ZpbGUocHJpdmF0ZUluZm8sIFJFQURfQ0hVTktf U0laRSkgPT0gMCkKKwkJCWJyZWFrOwkJCQkvKiBhcmNoaXZlIGZpbGUgZW5kZWQgKi8KKworCQkv KgorCQkgKiBBcmNoaXZlZCBzdHJlYW1lciBpcyByZWFkaW5nIGEgbm9uLVdBTCBmaWxlIG9yIGFu IGlycmVsZXZhbnQgV0FMCisJCSAqIGZpbGUuCisJCSAqLworCQlpZiAocHJpdmF0ZUluZm8tPmN1 cl9maWxlID09IE5VTEwpCisJCQljb250aW51ZTsKKworCQllbnRyeSA9IHByaXZhdGVJbmZvLT5j dXJfZmlsZTsKKworCQkvKiBGb3VuZCB0aGUgcmVxdWlyZWQgZW50cnkgKi8KKwkJaWYgKHN0cmNt cChmbmFtZSwgZW50cnktPmZuYW1lKSA9PSAwKQorCQkJcmV0dXJuIGVudHJ5OworCisJCS8qIFdB TCBzZWdtZW50cyBtdXN0IGJlIGFyY2hpdmVkIGluIG9yZGVyICovCisJCXBnX2xvZ19lcnJvcigi V0FMIGZpbGVzIGFyZSBub3QgYXJjaGl2ZWQgaW4gc2VxdWVudGlhbCBvcmRlciIpOworCQlwZ19s b2dfZXJyb3JfZGV0YWlsKCJFeHBlY3Rpbmcgc2VnbWVudCBcIiVzXCIgYnV0IGZvdW5kIFwiJXNc Ii4iLAorCQkJCQkJCWZuYW1lLCBlbnRyeS0+Zm5hbWUpOworCQlleGl0KDEpOworCX0KKworCS8q IFJlcXVlc3RlZCBXQUwgc2VnbWVudCBub3QgZm91bmQgKi8KKwlwZ19mYXRhbCgiY291bGQgbm90 IGZpbmQgV0FMIFwiJXNcIiBpbiBhcmNoaXZlIFwiJXNcIiIsCisJCQkgZm5hbWUsIHByaXZhdGVJ bmZvLT5hcmNoaXZlX25hbWUpOworfQorCisvKgorICogUmVhZHMgdGhlIGFyY2hpdmUgZmlsZSBh bmQgcGFzc2VzIGl0IHRvIHRoZSBhcmNoaXZlIHN0cmVhbWVyIGZvcgorICogZGVjb21wcmVzc2lv bi4KKyAqLworc3RhdGljIGludAorcmVhZF9hcmNoaXZlX2ZpbGUoWExvZ0R1bXBQcml2YXRlICpw cml2YXRlSW5mbywgU2l6ZSBjb3VudCkKK3sKKwlpbnQJCQlyYzsKKwljaGFyCSAgICpidWZmZXI7 CisKKwlidWZmZXIgPSBwZ19tYWxsb2MoY291bnQgKiBzaXplb2YodWludDgpKTsKKworCXJjID0g cmVhZChwcml2YXRlSW5mby0+YXJjaGl2ZV9mZCwgYnVmZmVyLCBjb3VudCk7CisJaWYgKHJjIDwg MCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJIHBy aXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworCisJLyoKKwkgKiBEZWNvbXByZXNzIChpZiByZXF1 aXJlZCksIGFuZCB0aGVuIHBhcnNlIHRoZSBwcmV2aW91c2x5IHJlYWQgY29udGVudHMKKwkgKiBv ZiB0aGUgdGFyIGZpbGUuCisJICovCisJaWYgKHJjID4gMCkKKwkJYXN0cmVhbWVyX2NvbnRlbnQo cHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFtZXIsIE5VTEwsCisJCQkJCQkgIGJ1ZmZlciwgcmMs IEFTVFJFQU1FUl9VTktOT1dOKTsKKwlwZ19mcmVlKGJ1ZmZlcik7CisKKwlyZXR1cm4gcmM7Cit9 CisKKy8qCisgKiBDcmVhdGUgYW4gYXN0cmVhbWVyIHRoYXQgY2FuIHJlYWQgV0FMIGZyb20gYSB0 YXIgZmlsZS4KKyAqLworc3RhdGljIGFzdHJlYW1lciAqCithc3RyZWFtZXJfd2FsZHVtcF9uZXco WExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbykKK3sKKwlhc3RyZWFtZXJfd2FsZHVtcCAqc3Ry ZWFtZXI7CisKKwlzdHJlYW1lciA9IHBhbGxvYzAoc2l6ZW9mKGFzdHJlYW1lcl93YWxkdW1wKSk7 CisJKigoY29uc3QgYXN0cmVhbWVyX29wcyAqKikgJnN0cmVhbWVyLT5iYXNlLmJic19vcHMpID0K KwkJJmFzdHJlYW1lcl93YWxkdW1wX29wczsKKworCXN0cmVhbWVyLT5wcml2YXRlSW5mbyA9IHBy aXZhdGVJbmZvOworCisJcmV0dXJuICZzdHJlYW1lci0+YmFzZTsKK30KKworLyoKKyAqIE1haW4g ZW50cnkgcG9pbnQgb2YgdGhlIGFyY2hpdmUgc3RyZWFtZXIgZm9yIHJlYWRpbmcgV0FMIGRhdGEg ZnJvbSBhIHRhcgorICogZmlsZS4gSWYgYSBtZW1iZXIgaXMgaWRlbnRpZmllZCBhcyBhIHZhbGlk IFdBTCBmaWxlLCBhIGhhc2ggZW50cnkgaXMgY3JlYXRlZAorICogZm9yIGl0LCBhbmQgaXRzIGNv bnRlbnRzIGFyZSBjb3BpZWQgaW50byB0aGF0IGVudHJ5J3MgYnVmZmVyLCBtYWtpbmcgdGhlbQor ICogYWNjZXNzaWJsZSB0byB0aGUgZGVjb2Rpbmcgcm91dGluZS4KKyAqLworc3RhdGljIHZvaWQK K2FzdHJlYW1lcl93YWxkdW1wX2NvbnRlbnQoYXN0cmVhbWVyICpzdHJlYW1lciwgYXN0cmVhbWVy X21lbWJlciAqbWVtYmVyLAorCQkJCQkJICBjb25zdCBjaGFyICpkYXRhLCBpbnQgbGVuLAorCQkJ CQkJICBhc3RyZWFtZXJfYXJjaGl2ZV9jb250ZXh0IGNvbnRleHQpCit7CisJYXN0cmVhbWVyX3dh bGR1bXAgKm15c3RyZWFtZXIgPSAoYXN0cmVhbWVyX3dhbGR1bXAgKikgc3RyZWFtZXI7CisJWExv Z0R1bXBQcml2YXRlICpwcml2YXRlSW5mbyA9IG15c3RyZWFtZXItPnByaXZhdGVJbmZvOworCisJ QXNzZXJ0KGNvbnRleHQgIT0gQVNUUkVBTUVSX1VOS05PV04pOworCisJc3dpdGNoIChjb250ZXh0 KQorCXsKKwkJY2FzZSBBU1RSRUFNRVJfTUVNQkVSX0hFQURFUjoKKwkJCXsKKwkJCQljaGFyCSAg ICpmbmFtZSA9IE5VTEw7CisJCQkJQXJjaGl2ZWRXQUxGaWxlICplbnRyeTsKKwkJCQlib29sCQlm b3VuZDsKKworCQkJCXBnX2xvZ19kZWJ1ZygicmVhZGluZyBcIiVzXCIiLCBtZW1iZXItPnBhdGhu YW1lKTsKKworCQkJCWlmICghbWVtYmVyX2lzX3dhbF9maWxlKG15c3RyZWFtZXIsIG1lbWJlciwg JmZuYW1lKSkKKwkJCQkJYnJlYWs7CisKKwkJCQkvKgorCQkJCSAqIEZ1cnRoZXIgY2hlY2tzIGFy ZSBza2lwcGVkIGlmIGFueSBXQUwgZmlsZSBjYW4gYmUgcmVhZC4KKwkJCQkgKiBUaGlzIHR5cGlj YWxseSBvY2N1cnMgZHVyaW5nIGluaXRpYWwgdmVyaWZpY2F0aW9uLgorCQkJCSAqLworCQkJCWlm ICghUkVBRF9BTllfV0FMKHByaXZhdGVJbmZvKSkKKwkJCQl7CisJCQkJCVhMb2dTZWdObwlzZWdu bzsKKwkJCQkJVGltZUxpbmVJRAl0aW1lbGluZTsKKworCQkJCQkvKgorCQkJCQkgKiBTa2lwIHRo ZSBzZWdtZW50IGlmIHRoZSB0aW1lbGluZSBkb2VzIG5vdCBtYXRjaCwgaWYgaXQKKwkJCQkJICog ZmFsbHMgb3V0c2lkZSB0aGUgY2FsbGVyLXNwZWNpZmllZCByYW5nZS4KKwkJCQkJICovCisJCQkJ CVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZ0aW1lbGluZSwgJnNlZ25vLCBwcml2YXRlSW5mby0+ c2Vnc2l6ZSk7CisJCQkJCWlmIChwcml2YXRlSW5mby0+dGltZWxpbmUgIT0gdGltZWxpbmUgfHwK KwkJCQkJCXByaXZhdGVJbmZvLT5zdGFydF9zZWdubyA+IHNlZ25vIHx8CisJCQkJCQlwcml2YXRl SW5mby0+ZW5kX3NlZ25vIDwgc2Vnbm8pCisJCQkJCXsKKwkJCQkJCWZyZWUoZm5hbWUpOworCQkJ CQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisKKwkJCQllbnRyeSA9IEFyY2hpdmVkV0FMX2luc2Vy dChwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiwKKwkJCQkJCQkJCQkgICBmbmFtZSwgJmZv dW5kKTsKKworCQkJCS8qCisJCQkJICogU2hvdWxkbid0IGhhcHBlbiwgYnV0IGlmIGl0IGRvZXMs IHNpbXBseSBpZ25vcmUgdGhlCisJCQkJICogZHVwbGljYXRlIFdBTCBmaWxlLgorCQkJCSAqLwor CQkJCWlmIChmb3VuZCkKKwkJCQl7CisJCQkJCXBnX2xvZ193YXJuaW5nKCJpZ25vcmluZyBkdXBs aWNhdGUgV0FMIFwiJXNcIiBmb3VuZCBpbiBhcmNoaXZlIFwiJXNcIiIsCisJCQkJCQkJCSAgIG1l bWJlci0+cGF0aG5hbWUsIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworCQkJCQlicmVhazsK KwkJCQl9CisKKwkJCQllbnRyeS0+YnVmID0gbWFrZVN0cmluZ0luZm8oKTsKKwkJCQllbnRyeS0+ cmVhZF9sZW4gPSAwOworCQkJCXByaXZhdGVJbmZvLT5jdXJfZmlsZSA9IGVudHJ5OworCQkJfQor CQkJYnJlYWs7CisKKwkJY2FzZSBBU1RSRUFNRVJfTUVNQkVSX0NPTlRFTlRTOgorCQkJaWYgKHBy aXZhdGVJbmZvLT5jdXJfZmlsZSkKKwkJCXsKKwkJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKHBy aXZhdGVJbmZvLT5jdXJfZmlsZS0+YnVmLCBkYXRhLCBsZW4pOworCQkJCXByaXZhdGVJbmZvLT5j dXJfZmlsZS0+cmVhZF9sZW4gKz0gbGVuOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBBU1RS RUFNRVJfTUVNQkVSX1RSQUlMRVI6CisJCQlwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPSBOVUxMOwor CQkJYnJlYWs7CisKKwkJY2FzZSBBU1RSRUFNRVJfQVJDSElWRV9UUkFJTEVSOgorCQkJYnJlYWs7 CisKKwkJZGVmYXVsdDoKKwkJCS8qIFNob3VsZG4ndCBoYXBwZW4uICovCisJCQlwZ19mYXRhbCgi dW5leHBlY3RlZCBzdGF0ZSB3aGlsZSBwYXJzaW5nIHRhciBmaWxlIik7CisJfQorfQorCisvKgor ICogRW5kLW9mLXN0cmVhbSBwcm9jZXNzaW5nIGZvciBhbiBhc3RyZWFtZXJfd2FsZHVtcCBzdHJl YW0uCisgKi8KK3N0YXRpYyB2b2lkCithc3RyZWFtZXJfd2FsZHVtcF9maW5hbGl6ZShhc3RyZWFt ZXIgKnN0cmVhbWVyKQoreworCUFzc2VydChzdHJlYW1lci0+YmJzX25leHQgPT0gTlVMTCk7Cit9 CisKKy8qCisgKiBGcmVlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYSBhc3RyZWFtZXJfd2FsZHVt cCBzdHJlYW0uCisgKi8KK3N0YXRpYyB2b2lkCithc3RyZWFtZXJfd2FsZHVtcF9mcmVlKGFzdHJl YW1lciAqc3RyZWFtZXIpCit7CisJQXNzZXJ0KHN0cmVhbWVyLT5iYnNfbmV4dCA9PSBOVUxMKTsK KwlwZnJlZShzdHJlYW1lcik7Cit9CisKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGFyY2hp dmUgbWVtYmVyIG5hbWUgbWF0Y2hlcyB0aGUgV0FMIG5hbWluZyBmb3JtYXQuIElmCisgKiBzdWNj ZXNzZnVsLCBpdCBhbHNvIG91dHB1dHMgdGhlIFdBTCBzZWdtZW50IG5hbWUuCisgKi8KK3N0YXRp YyBib29sCittZW1iZXJfaXNfd2FsX2ZpbGUoYXN0cmVhbWVyX3dhbGR1bXAgKm15c3RyZWFtZXIs IGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKKwkJCQkgICBjaGFyICoqZm5hbWUpCit7CisJaW50 CQkJcGF0aGxlbjsKKwljaGFyCQlwYXRobmFtZVtNQVhQR1BBVEhdOworCWNoYXIJICAgKmZpbGVu YW1lOworCisJLyogV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBub3JtYWwgZmlsZXMuICovCisJ aWYgKG1lbWJlci0+aXNfZGlyZWN0b3J5IHx8IG1lbWJlci0+aXNfbGluaykKKwkJcmV0dXJuIGZh bHNlOworCisJaWYgKHN0cmxlbihtZW1iZXItPnBhdGhuYW1lKSA8IFhMT0dfRk5BTUVfTEVOKQor CQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIEZvciBhIGNvcnJlY3QgY29tcGFyaXNvbiwgd2Ug bXVzdCByZW1vdmUgYW55ICcuJyBvciAnLi4nIGNvbXBvbmVudHMKKwkgKiBmcm9tIHRoZSBtZW1i ZXIgcGF0aG5hbWUuIFNpbWlsYXIgdG8gbWVtYmVyX3ZlcmlmeV9oZWFkZXIoKSwgd2UgcHJlcGVu ZAorCSAqICcuLycgdG8gdGhlIHBhdGggc28gdGhhdCBjYW5vbmljYWxpemVfcGF0aCgpIGNhbiBw cm9wZXJseSByZXNvbHZlIGFuZAorCSAqIHN0cmlwIHRoZXNlIHJlZmVyZW5jZXMgZnJvbSB0aGUg dGFyIG1lbWJlciBuYW1lCisJICovCisJc25wcmludGYocGF0aG5hbWUsIE1BWFBHUEFUSCwgIi4v JXMiLCBtZW1iZXItPnBhdGhuYW1lKTsKKwljYW5vbmljYWxpemVfcGF0aChwYXRobmFtZSk7CisJ cGF0aGxlbiA9IHN0cmxlbihwYXRobmFtZSk7CisKKwkvKiBXQUwgZmlsZXMgZnJvbSB0aGUgdG9w LWxldmVsIG9yIHBnX3dhbCBkaXJlY3Rvcnkgd2lsbCBiZSBkZWNvZGVkICovCisJaWYgKHBhdGhs ZW4gPiBYTE9HX0ZOQU1FX0xFTiAmJgorCQlzdHJuY21wKHBhdGhuYW1lLCBYTE9HRElSLCBzdHJs ZW4oWExPR0RJUikpICE9IDApCisJCXJldHVybiBmYWxzZTsKKworCS8qIFdBTCBmaWxlIGNvdWxk IGJlIHdpdGggZnVsbCBwYXRoICovCisJZmlsZW5hbWUgPSBwYXRobmFtZSArIChwYXRobGVuIC0g WExPR19GTkFNRV9MRU4pOworCWlmICghSXNYTG9nRmlsZU5hbWUoZmlsZW5hbWUpKQorCQlyZXR1 cm4gZmFsc2U7CisKKwkqZm5hbWUgPSBwbnN0cmR1cChmaWxlbmFtZSwgWExPR19GTkFNRV9MRU4p OworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGZpbGVt YXAgaGFzaCB0YWJsZS4KKyAqLworc3RhdGljIHVpbnQzMgoraGFzaF9zdHJpbmdfcG9pbnRlcihj b25zdCBjaGFyICpzKQoreworCXVuc2lnbmVkIGNoYXIgKnNzID0gKHVuc2lnbmVkIGNoYXIgKikg czsKKworCXJldHVybiBoYXNoX2J5dGVzKHNzLCBzdHJsZW4ocykpOworfQpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ193YWxkdW1wL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ193YWxkdW1wL21lc29u LmJ1aWxkCmluZGV4IDYzM2E5ODc0YmI1Li41Mjk2ZjIxYjgyYyAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ193YWxkdW1wL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5i dWlsZApAQCAtMSw2ICsxLDcgQEAKICMgQ29weXJpZ2h0IChjKSAyMDIyLTIwMjYsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKIHBnX3dhbGR1bXBfc291cmNlcyA9IGZpbGVz KAorICAnYXJjaGl2ZV93YWxkdW1wLmMnLAogICAnY29tcGF0LmMnLAogICAncGdfd2FsZHVtcC5j JywKICAgJ3JtZ3JkZXNjLmMnLApAQCAtMTgsNyArMTksNyBAQCBlbmRpZgogCiBwZ193YWxkdW1w ID0gZXhlY3V0YWJsZSgncGdfd2FsZHVtcCcsCiAgIHBnX3dhbGR1bXBfc291cmNlcywKLSAgZGVw ZW5kZW5jaWVzOiBbZnJvbnRlbmRfY29kZSwgbHo0LCB6c3RkXSwKKyAgZGVwZW5kZW5jaWVzOiBb ZnJvbnRlbmRfY29kZSwgbGlicHEsIGx6NCwgenN0ZF0sCiAgIGNfYXJnczogWyctREZST05URU5E J10sICMgbmVlZGVkIGZvciB4bG9ncmVhZGVyIGV0IGFsCiAgIGt3YXJnczogZGVmYXVsdF9iaW5f YXJncywKICkKQEAgLTI5LDYgKzMwLDcgQEAgdGVzdHMgKz0gewogICAnc2QnOiBtZXNvbi5jdXJy ZW50X3NvdXJjZV9kaXIoKSwKICAgJ2JkJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKICAg J3RhcCc6IHsKKyAgICAnZW52JzogeydUQVInOiB0YXIuZm91bmQoKSA/IHRhci5mdWxsX3BhdGgo KSA6ICcnfSwKICAgICAndGVzdHMnOiBbCiAgICAgICAndC8wMDFfYmFzaWMucGwnLAogICAgICAg J3QvMDAyX3NhdmVfZnVsbHBhZ2UucGwnLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1w L3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggNWQz MWIxNWRiZDguLjZkMDQ0NjJkMDM5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTE3Niw3 ICsxNzYsNyBAQCBzcGxpdF9wYXRoKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKipkaXIsIGNoYXIg KipmbmFtZSkKICAqCiAgKiByZXR1cm4gYSByZWFkIG9ubHkgZmQKICAqLwotc3RhdGljIGludAor aW50CiBvcGVuX2ZpbGVfaW5fZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3Qg Y2hhciAqZm5hbWUpCiB7CiAJaW50CQkJZmQgPSAtMTsKQEAgLTQ0MCw2ICs0NDAsNjcgQEAgV0FM RHVtcFJlYWRQYWdlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFn ZVB0ciwgaW50IHJlcUxlbiwKIAlyZXR1cm4gY291bnQ7CiB9CiAKKy8qCisgKiBwZ193YWxkdW1w J3MgWExvZ1JlYWRlclJvdXRpbmUtPnNlZ21lbnRfb3BlbiBjYWxsYmFjayB0byBzdXBwb3J0IGR1 bXBpbmcgV0FMCisgKiBmaWxlcyBmcm9tIHRhciBhcmNoaXZlcy4KKyAqLworc3RhdGljIHZvaWQK K1RhcldBTER1bXBPcGVuU2VnbWVudChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nU2VnTm8g bmV4dFNlZ05vLAorCQkJCQkgIFRpbWVMaW5lSUQgKnRsaV9wKQoreworCS8qIE5vIGFjdGlvbiBu ZWVkZWQgKi8KK30KKworLyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+c2Vn bWVudF9jbG9zZSBjYWxsYmFjay4KKyAqLworc3RhdGljIHZvaWQKK1RhcldBTER1bXBDbG9zZVNl Z21lbnQoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSkKK3sKKwkvKiBObyBhY3Rpb24gbmVlZGVkICov Cit9CisKKy8qCisgKiBwZ193YWxkdW1wJ3MgWExvZ1JlYWRlclJvdXRpbmUtPnBhZ2VfcmVhZCBj YWxsYmFjayB0byBzdXBwb3J0IGR1bXBpbmcgV0FMCisgKiBmaWxlcyBmcm9tIHRhciBhcmNoaXZl cy4KKyAqLworc3RhdGljIGludAorVGFyV0FMRHVtcFJlYWRQYWdlKFhMb2dSZWFkZXJTdGF0ZSAq c3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcUxlbiwKKwkJCQkgICBYTG9n UmVjUHRyIHRhcmdldFB0ciwgY2hhciAqcmVhZEJ1ZmYpCit7CisJWExvZ0R1bXBQcml2YXRlICpw cml2YXRlID0gc3RhdGUtPnByaXZhdGVfZGF0YTsKKwlpbnQJCQljb3VudCA9IHJlcXVpcmVkX3Jl YWRfbGVuKHByaXZhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbik7CisJaW50CQkJV2FsU2VnU3og PSBzdGF0ZS0+c2VnY3h0LndzX3NlZ3NpemU7CisJWExvZ1NlZ05vCW5leHRTZWdObzsKKworCS8q IEJhaWwgb3V0IGlmIHRoZSBjb3VudCB0byBiZSByZWFkIGlzIG5vdCB2YWxpZCAqLworCWlmIChj b3VudCA8IDApCisJCXJldHVybiAtMTsKKworCS8qCisJICogSWYgdGhlIHRhcmdldCBwYWdlIGlz IGluIGEgZGlmZmVyZW50IHNlZ21lbnQsIGZyZWUgdGhlIGJ1ZmZlciBzcGFjZQorCSAqIG9jY3Vw aWVkIGJ5IHRoZSBwcmV2aW91cyBzZWdtZW50IGRhdGEuIFNpbmNlIHBnX3dhbGR1bXAgbmV2ZXIg cmVxdWVzdHMKKwkgKiB0aGUgc2FtZSBXQUwgYnl0ZXMgdHdpY2UsIG1vdmluZyB0byBhIG5ldyBz ZWdtZW50IGltcGxpZXMgdGhlIHByZXZpb3VzCisJICogYnVmZmVyJ3MgZGF0YSBhbmQgdGhhdCBz ZWdtZW50IHdpbGwgbm90IGJlIG5lZWRlZCBhZ2Fpbi4KKwkgKi8KKwluZXh0U2VnTm8gPSBzdGF0 ZS0+c2VnLndzX3NlZ25vOworCWlmICghWExCeXRlSW5TZWcodGFyZ2V0UGFnZVB0ciwgbmV4dFNl Z05vLCBXYWxTZWdTeikpCisJeworCQljaGFyCQlmbmFtZVtNQVhGTkFNRUxFTl07CisKKwkJWExv Z0ZpbGVOYW1lKGZuYW1lLCBzdGF0ZS0+c2VnLndzX3RsaSwgbmV4dFNlZ05vLCBXYWxTZWdTeik7 CisJCWZyZWVfYXJjaGl2ZV93YWxfZW50cnkoZm5hbWUsIHByaXZhdGUpOworCisJCVhMQnl0ZVRv U2VnKHRhcmdldFBhZ2VQdHIsIG5leHRTZWdObywgV2FsU2VnU3opOworCQlzdGF0ZS0+c2VnLndz X3RsaSA9IHByaXZhdGUtPnRpbWVsaW5lOworCQlzdGF0ZS0+c2VnLndzX3NlZ25vID0gbmV4dFNl Z05vOworCX0KKworCS8qIFJlYWQgdGhlIFdBTCBwYWdlIGZyb20gdGhlIGFyY2hpdmUgc3RyZWFt ZXIgKi8KKwlyZXR1cm4gcmVhZF9hcmNoaXZlX3dhbF9wYWdlKHByaXZhdGUsIHRhcmdldFBhZ2VQ dHIsIGNvdW50LCByZWFkQnVmZiwKKwkJCQkJCQkJIFdhbFNlZ1N6KTsKK30KKwogLyoKICAqIEJv b2xlYW4gdG8gcmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIFdBTCByZWNvcmQgbWF0Y2hlcyBhIHNw ZWNpZmljIHJlbGF0aW9uCiAgKiBhbmQgb3B0aW9uYWxseSBibG9jay4KQEAgLTc3Nyw4ICs4Mzgs OCBAQCB1c2FnZSh2b2lkKQogCXByaW50ZihfKCIgIC1GLCAtLWZvcms9Rk9SSyAgICAgICAgb25s eSBzaG93IHJlY29yZHMgdGhhdCBtb2RpZnkgYmxvY2tzIGluIGZvcmsgRk9SSztcbiIKIAkJCSAi ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkIG5hbWVzIGFyZSBtYWluLCBmc20sIHZtLCBp bml0XG4iKSk7CiAJcHJpbnRmKF8oIiAgLW4sIC0tbGltaXQ9TiAgICAgICAgICBudW1iZXIgb2Yg cmVjb3JkcyB0byBkaXNwbGF5XG4iKSk7Ci0JcHJpbnRmKF8oIiAgLXAsIC0tcGF0aD1QQVRIICAg ICAgICBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gZmluZCBXQUwgc2VnbWVudCBmaWxlcyBvciBhXG4i Ci0JCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgd2l0aCBhIC4vcGdfd2Fs IHRoYXQgY29udGFpbnMgc3VjaCBmaWxlc1xuIgorCXByaW50ZihfKCIgIC1wLCAtLXBhdGg9UEFU SCAgICAgICAgdGFyIGFyY2hpdmUgb3IgYSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gZmluZCBXQUwg c2VnbWVudCBmaWxlcyBvclxuIgorCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgYSBkaXJl Y3Rvcnkgd2l0aCBhIC4vcGdfd2FsIHRoYXQgY29udGFpbnMgc3VjaCBmaWxlc1xuIgogCQkJICIg ICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6IGN1cnJlbnQgZGlyZWN0b3J5LCAuL3Bn X3dhbCwgJFBHREFUQS9wZ193YWwpXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXEsIC0tcXVpZXQgICAg ICAgICAgICBkbyBub3QgcHJpbnQgYW55IG91dHB1dCwgZXhjZXB0IGZvciBlcnJvcnNcbiIpKTsK IAlwcmludGYoXygiICAtciwgLS1ybWdyPVJNR1IgICAgICAgIG9ubHkgc2hvdyByZWNvcmRzIGdl bmVyYXRlZCBieSByZXNvdXJjZSBtYW5hZ2VyIFJNR1I7XG4iCkBAIC04MTAsNyArODcxLDkgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJWExvZ1JlY29yZCAqcmVjb3JkOwogCVhMb2dS ZWNQdHIJZmlyc3RfcmVjb3JkOwogCWNoYXIJICAgKndhbGRpciA9IE5VTEw7CisJY2hhcgkgICAq d2FscGF0aCA9IE5VTEw7CiAJY2hhcgkgICAqZXJyb3Jtc2c7CisJcGdfY29tcHJlc3NfYWxnb3Jp dGhtIGNvbXByZXNzaW9uOwogCiAJc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10g PSB7CiAJCXsiYmtwLWRldGFpbHMiLCBub19hcmd1bWVudCwgTlVMTCwgJ2InfSwKQEAgLTg2OCw2 ICs5MzEsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJcHJpdmF0ZS5zdGFydHB0 ciA9IEludmFsaWRYTG9nUmVjUHRyOwogCXByaXZhdGUuZW5kcHRyID0gSW52YWxpZFhMb2dSZWNQ dHI7CiAJcHJpdmF0ZS5lbmRwdHJfcmVhY2hlZCA9IGZhbHNlOworCXByaXZhdGUuZGVjb2Rpbmdf c3RhcnRlZCA9IGZhbHNlOworCXByaXZhdGUuYXJjaGl2ZV9uYW1lID0gTlVMTDsKKwlwcml2YXRl LnN0YXJ0X3NlZ25vID0gMDsKKwlwcml2YXRlLmVuZF9zZWdubyA9IFVJTlQ2NF9NQVg7CiAKIAlj b25maWcucXVpZXQgPSBmYWxzZTsKIAljb25maWcuYmtwX2RldGFpbHMgPSBmYWxzZTsKQEAgLTk0 Myw3ICsxMDEwLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJfQogCQkJCWJy ZWFrOwogCQkJY2FzZSAncCc6Ci0JCQkJd2FsZGlyID0gcGdfc3RyZHVwKG9wdGFyZyk7CisJCQkJ d2FscGF0aCA9IHBnX3N0cmR1cChvcHRhcmcpOwogCQkJCWJyZWFrOwogCQkJY2FzZSAncSc6CiAJ CQkJY29uZmlnLnF1aWV0ID0gdHJ1ZTsKQEAgLTExMDcsMTAgKzExNzQsMTkgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCWdvdG8gYmFkX2FyZ3VtZW50OwogCX0KIAotCWlmICh3YWxk aXIgIT0gTlVMTCkKKwlpZiAod2FscGF0aCAhPSBOVUxMKQogCXsKKwkJLyogdmFsaWRhdGUgcGF0 aCBwb2ludHMgdG8gdGFyIGFyY2hpdmUgKi8KKwkJaWYgKGlzX2FyY2hpdmVfZmlsZSh3YWxwYXRo LCAmY29tcHJlc3Npb24pKQorCQl7CisJCQljaGFyCSAgICpmbmFtZSA9IE5VTEw7CisKKwkJCXNw bGl0X3BhdGgod2FscGF0aCwgJndhbGRpciwgJmZuYW1lKTsKKworCQkJcHJpdmF0ZS5hcmNoaXZl X25hbWUgPSBmbmFtZTsKKwkJfQogCQkvKiB2YWxpZGF0ZSBwYXRoIHBvaW50cyB0byBkaXJlY3Rv cnkgKi8KLQkJaWYgKCF2ZXJpZnlfZGlyZWN0b3J5KHdhbGRpcikpCisJCWVsc2UgaWYgKCF2ZXJp ZnlfZGlyZWN0b3J5KHdhbHBhdGgpKQogCQl7CiAJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBv cGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgd2FsZGlyKTsKIAkJCWdvdG8gYmFkX2FyZ3VtZW50 OwpAQCAtMTEyOCw2ICsxMjA0LDE3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlp bnQJCQlmZDsKIAkJWExvZ1NlZ05vCXNlZ25vOwogCisJCS8qCisJCSAqIElmIGEgdGFyIGFyY2hp dmUgaXMgcGFzc2VkIHVzaW5nIHRoZSAtLXBhdGggb3B0aW9uLCBhbGwgb3RoZXIKKwkJICogYXJn dW1lbnRzIGJlY29tZSB1bm5lY2Vzc2FyeS4KKwkJICovCisJCWlmIChwcml2YXRlLmFyY2hpdmVf bmFtZSkKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJ1bm5lY2Vzc2FyeSBjb21tYW5kLWxpbmUgYXJn dW1lbnRzIHNwZWNpZmllZCB3aXRoIHRhciBhcmNoaXZlIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJ CQkJCSBhcmd2W29wdGluZF0pOworCQkJZ290byBiYWRfYXJndW1lbnQ7CisJCX0KKwogCQlzcGxp dF9wYXRoKGFyZ3Zbb3B0aW5kXSwgJmRpcmVjdG9yeSwgJmZuYW1lKTsKIAogCQlpZiAod2FsZGly ID09IE5VTEwgJiYgZGlyZWN0b3J5ICE9IE5VTEwpCkBAIC0xMTM4LDY5ICsxMjI1LDc2IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBk aXJlY3RvcnkgXCIlc1wiOiAlbSIsIHdhbGRpcik7CiAJCX0KIAotCQl3YWxkaXIgPSBpZGVudGlm eV90YXJnZXRfZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUsICZwcml2YXRlLnNlZ3NpemUpOwotCQlm ZCA9IG9wZW5fZmlsZV9pbl9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSk7Ci0JCWlmIChmZCA8IDAp Ci0JCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIiLCBmbmFtZSk7Ci0JCWNs b3NlKGZkKTsKLQotCQkvKiBwYXJzZSBwb3NpdGlvbiBmcm9tIGZpbGUgKi8KLQkJWExvZ0Zyb21G aWxlTmFtZShmbmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZzZWdubywgcHJpdmF0ZS5zZWdzaXpl KTsKLQotCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuc3RhcnRwdHIpKQotCQkJWExv Z1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2Vnbm8sIDAsIHByaXZhdGUuc2Vnc2l6ZSwgcHJpdmF0ZS5z dGFydHB0cik7Ci0JCWVsc2UgaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRlLnN0YXJ0cHRyLCBzZWdu bywgcHJpdmF0ZS5zZWdzaXplKSkKKwkJaWYgKGZuYW1lICE9IE5VTEwgJiYgaXNfYXJjaGl2ZV9m aWxlKGZuYW1lLCAmY29tcHJlc3Npb24pKQogCQl7Ci0JCQlwZ19sb2dfZXJyb3IoInN0YXJ0IFdB TCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIiLAotCQkJCQkJIExT Tl9GT1JNQVRfQVJHUyhwcml2YXRlLnN0YXJ0cHRyKSwKLQkJCQkJCSBmbmFtZSk7Ci0JCQlnb3Rv IGJhZF9hcmd1bWVudDsKKwkJCXByaXZhdGUuYXJjaGl2ZV9uYW1lID0gZm5hbWU7CiAJCX0KLQot CQkvKiBubyBzZWNvbmQgZmlsZSBzcGVjaWZpZWQsIHNldCBlbmQgcG9zaXRpb24gKi8KLQkJaWYg KCEob3B0aW5kICsgMSA8IGFyZ2MpICYmICFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0 cikpCi0JCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubyArIDEsIDAsIHByaXZhdGUuc2Vn c2l6ZSwgcHJpdmF0ZS5lbmRwdHIpOwotCi0JCS8qIHBhcnNlIEVORFNFRyBpZiBwYXNzZWQgKi8K LQkJaWYgKG9wdGluZCArIDEgPCBhcmdjKQorCQllbHNlCiAJCXsKLQkJCVhMb2dTZWdObwllbmRz ZWdubzsKLQotCQkJLyogaWdub3JlIGRpcmVjdG9yeSwgYWxyZWFkeSBoYXZlIHRoYXQgKi8KLQkJ CXNwbGl0X3BhdGgoYXJndltvcHRpbmQgKyAxXSwgJmRpcmVjdG9yeSwgJmZuYW1lKTsKLQorCQkJ d2FsZGlyID0gaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lLCAmcHJpdmF0 ZS5zZWdzaXplKTsKIAkJCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1l KTsKIAkJCWlmIChmZCA8IDApCiAJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIl c1wiIiwgZm5hbWUpOwogCQkJY2xvc2UoZmQpOwogCiAJCQkvKiBwYXJzZSBwb3NpdGlvbiBmcm9t IGZpbGUgKi8KLQkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAm ZW5kc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSk7CisJCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAm cHJpdmF0ZS50aW1lbGluZSwgJnNlZ25vLCBwcml2YXRlLnNlZ3NpemUpOwogCi0JCQlpZiAoZW5k c2Vnbm8gPCBzZWdubykKLQkJCQlwZ19mYXRhbCgiRU5EU0VHICVzIGlzIGJlZm9yZSBTVEFSVFNF RyAlcyIsCi0JCQkJCQkgYXJndltvcHRpbmQgKyAxXSwgYXJndltvcHRpbmRdKTsKKwkJCWlmICgh WExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5zdGFydHB0cikpCisJCQkJWExvZ1NlZ05vT2Zmc2V0 VG9SZWNQdHIoc2Vnbm8sIDAsIHByaXZhdGUuc2Vnc2l6ZSwgcHJpdmF0ZS5zdGFydHB0cik7CisJ CQllbHNlIGlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5zdGFydHB0ciwgc2Vnbm8sIHByaXZhdGUu c2Vnc2l6ZSkpCisJCQl7CisJCQkJcGdfbG9nX2Vycm9yKCJzdGFydCBXQUwgbG9jYXRpb24gJVgv JTA4WCBpcyBub3QgaW5zaWRlIGZpbGUgXCIlc1wiIiwKKwkJCQkJCQkgTFNOX0ZPUk1BVF9BUkdT KHByaXZhdGUuc3RhcnRwdHIpLAorCQkJCQkJCSBmbmFtZSk7CisJCQkJZ290byBiYWRfYXJndW1l bnQ7CisJCQl9CiAKLQkJCWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5lbmRwdHIpKQot CQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKGVuZHNlZ25vICsgMSwgMCwgcHJpdmF0ZS5zZWdz aXplLAotCQkJCQkJCQkJCXByaXZhdGUuZW5kcHRyKTsKKwkJCS8qIG5vIHNlY29uZCBmaWxlIHNw ZWNpZmllZCwgc2V0IGVuZCBwb3NpdGlvbiAqLworCQkJaWYgKCEob3B0aW5kICsgMSA8IGFyZ2Mp ICYmICFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0cikpCisJCQkJWExvZ1NlZ05vT2Zm c2V0VG9SZWNQdHIoc2Vnbm8gKyAxLCAwLCBwcml2YXRlLnNlZ3NpemUsIHByaXZhdGUuZW5kcHRy KTsKIAotCQkJLyogc2V0IHNlZ25vIHRvIGVuZHNlZ25vIGZvciBjaGVjayBvZiAtLWVuZCAqLwot CQkJc2Vnbm8gPSBlbmRzZWdubzsKLQkJfQorCQkJLyogcGFyc2UgRU5EU0VHIGlmIHBhc3NlZCAq LworCQkJaWYgKG9wdGluZCArIDEgPCBhcmdjKQorCQkJeworCQkJCVhMb2dTZWdObwllbmRzZWdu bzsKIAorCQkJCS8qIGlnbm9yZSBkaXJlY3RvcnksIGFscmVhZHkgaGF2ZSB0aGF0ICovCisJCQkJ c3BsaXRfcGF0aChhcmd2W29wdGluZCArIDFdLCAmZGlyZWN0b3J5LCAmZm5hbWUpOwogCi0JCWlm ICghWExCeXRlSW5TZWcocHJpdmF0ZS5lbmRwdHIsIHNlZ25vLCBwcml2YXRlLnNlZ3NpemUpICYm Ci0JCQlwcml2YXRlLmVuZHB0ciAhPSAoc2Vnbm8gKyAxKSAqIHByaXZhdGUuc2Vnc2l6ZSkKLQkJ ewotCQkJcGdfbG9nX2Vycm9yKCJlbmQgV0FMIGxvY2F0aW9uICVYLyUwOFggaXMgbm90IGluc2lk ZSBmaWxlIFwiJXNcIiIsCi0JCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuZW5kcHRyKSwK LQkJCQkJCSBhcmd2W2FyZ2MgLSAxXSk7Ci0JCQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJCQlmZCA9 IG9wZW5fZmlsZV9pbl9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSk7CisJCQkJaWYgKGZkIDwgMCkK KwkJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIiwgZm5hbWUpOworCQkJ CWNsb3NlKGZkKTsKKworCQkJCS8qIHBhcnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLworCQkJCVhM b2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmZW5kc2Vnbm8sIHByaXZh dGUuc2Vnc2l6ZSk7CisKKwkJCQlpZiAoZW5kc2Vnbm8gPCBzZWdubykKKwkJCQkJcGdfZmF0YWwo IkVORFNFRyAlcyBpcyBiZWZvcmUgU1RBUlRTRUcgJXMiLAorCQkJCQkJCSBhcmd2W29wdGluZCAr IDFdLCBhcmd2W29wdGluZF0pOworCisJCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRl LmVuZHB0cikpCisJCQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKGVuZHNlZ25vICsgMSwgMCwg cHJpdmF0ZS5zZWdzaXplLAorCQkJCQkJCQkJCQlwcml2YXRlLmVuZHB0cik7CisKKwkJCQkvKiBz ZXQgc2Vnbm8gdG8gZW5kc2Vnbm8gZm9yIGNoZWNrIG9mIC0tZW5kICovCisJCQkJc2Vnbm8gPSBl bmRzZWdubzsKKwkJCX0KKworCisJCQlpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuZW5kcHRyLCBz ZWdubywgcHJpdmF0ZS5zZWdzaXplKSAmJgorCQkJCXByaXZhdGUuZW5kcHRyICE9IChzZWdubyAr IDEpICogcHJpdmF0ZS5zZWdzaXplKQorCQkJeworCQkJCXBnX2xvZ19lcnJvcigiZW5kIFdBTCBs b2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIiLAorCQkJCQkJCSBMU05f Rk9STUFUX0FSR1MocHJpdmF0ZS5lbmRwdHIpLAorCQkJCQkJCSBhcmd2W2FyZ2MgLSAxXSk7CisJ CQkJZ290byBiYWRfYXJndW1lbnQ7CisJCQl9CiAJCX0KIAl9Ci0JZWxzZQotCQl3YWxkaXIgPSBp ZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbGRpciwgTlVMTCwgJnByaXZhdGUuc2Vnc2l6ZSk7 CisJZWxzZSBpZiAoIXByaXZhdGUuYXJjaGl2ZV9uYW1lKQorCQl3YWxkaXIgPSBpZGVudGlmeV90 YXJnZXRfZGlyZWN0b3J5KHdhbHBhdGgsIE5VTEwsICZwcml2YXRlLnNlZ3NpemUpOwogCiAJLyog d2UgZG9uJ3Qga25vdyB3aGF0IHRvIHByaW50ICovCiAJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChw cml2YXRlLnN0YXJ0cHRyKSkKQEAgLTEyMTIsMTIgKzEzMDYsMzYgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAJLyogZG9uZSB3aXRoIGFyZ3VtZW50IHBhcnNpbmcsIGRvIHRoZSBhY3R1 YWwgd29yayAqLwogCiAJLyogd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQsIHN0YXJ0IHJlYWRp bmcgKi8KLQl4bG9ncmVhZGVyX3N0YXRlID0KLQkJWExvZ1JlYWRlckFsbG9jYXRlKHByaXZhdGUu c2Vnc2l6ZSwgd2FsZGlyLAotCQkJCQkJICAgWExfUk9VVElORSgucGFnZV9yZWFkID0gV0FMRHVt cFJlYWRQYWdlLAotCQkJCQkJCQkJICAuc2VnbWVudF9vcGVuID0gV0FMRHVtcE9wZW5TZWdtZW50 LAotCQkJCQkJCQkJICAuc2VnbWVudF9jbG9zZSA9IFdBTER1bXBDbG9zZVNlZ21lbnQpLAotCQkJ CQkJICAgJnByaXZhdGUpOworCWlmIChwcml2YXRlLmFyY2hpdmVfbmFtZSkKKwl7CisJCS8qCisJ CSAqIEEgTlVMTCBXQUwgZGlyZWN0b3J5IGluZGljYXRlcyB0aGF0IHRoZSBhcmNoaXZlIGZpbGUg aXMgbG9jYXRlZCBpbgorCQkgKiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUg cGdfd2FsZHVtcCBleGVjdXRpb24KKwkJICovCisJCWlmICh3YWxkaXIgPT0gTlVMTCkKKwkJCXdh bGRpciA9IHBnX3N0cmR1cCgiLiIpOworCisJCS8qIFNldCB1cCBmb3IgcmVhZGluZyB0YXIgZmls ZSAqLworCQlpbml0X2FyY2hpdmVfcmVhZGVyKCZwcml2YXRlLCB3YWxkaXIsICZwcml2YXRlLnNl Z3NpemUsIGNvbXByZXNzaW9uKTsKKworCQkvKiBSb3V0aW5lIHRvIGRlY29kZSBXQUwgZmlsZXMg aW4gdGFyIGFyY2hpdmUgKi8KKwkJeGxvZ3JlYWRlcl9zdGF0ZSA9CisJCQlYTG9nUmVhZGVyQWxs b2NhdGUocHJpdmF0ZS5zZWdzaXplLCB3YWxkaXIsCisJCQkJCQkJICAgWExfUk9VVElORSgucGFn ZV9yZWFkID0gVGFyV0FMRHVtcFJlYWRQYWdlLAorCQkJCQkJCQkJCSAgLnNlZ21lbnRfb3BlbiA9 IFRhcldBTER1bXBPcGVuU2VnbWVudCwKKwkJCQkJCQkJCQkgIC5zZWdtZW50X2Nsb3NlID0gVGFy V0FMRHVtcENsb3NlU2VnbWVudCksCisJCQkJCQkJICAgJnByaXZhdGUpOworCX0KKwllbHNlCisJ eworCQl4bG9ncmVhZGVyX3N0YXRlID0KKwkJCVhMb2dSZWFkZXJBbGxvY2F0ZShwcml2YXRlLnNl Z3NpemUsIHdhbGRpciwKKwkJCQkJCQkgICBYTF9ST1VUSU5FKC5wYWdlX3JlYWQgPSBXQUxEdW1w UmVhZFBhZ2UsCisJCQkJCQkJCQkJICAuc2VnbWVudF9vcGVuID0gV0FMRHVtcE9wZW5TZWdtZW50 LAorCQkJCQkJCQkJCSAgLnNlZ21lbnRfY2xvc2UgPSBXQUxEdW1wQ2xvc2VTZWdtZW50KSwKKwkJ CQkJCQkgICAmcHJpdmF0ZSk7CisJfQorCiAJaWYgKCF4bG9ncmVhZGVyX3N0YXRlKQogCQlwZ19m YXRhbCgib3V0IG9mIG1lbW9yeSB3aGlsZSBhbGxvY2F0aW5nIGEgV0FMIHJlYWRpbmcgcHJvY2Vz c29yIik7CiAKQEAgLTEyNDUsNiArMTM2Myw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogCWlmIChjb25maWcuc3RhdHMgPT0gdHJ1ZSAmJiAhY29uZmlnLnF1aWV0KQogCQlzdGF0cy5z dGFydHB0ciA9IGZpcnN0X3JlY29yZDsKIAorCS8qIEZsYWcgaW5kaWNhdGluZyB0aGF0IHRoZSBk ZWNvZGluZyBsb29wIGhhcyBiZWVuIGVudGVyZWQgKi8KKwlwcml2YXRlLmRlY29kaW5nX3N0YXJ0 ZWQgPSB0cnVlOworCiAJZm9yICg7OykKIAl7CiAJCWlmICh0aW1lX3RvX3N0b3ApCkBAIC0xMzI2 LDYgKzE0NDcsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCVhMb2dSZWFkZXJG cmVlKHhsb2dyZWFkZXJfc3RhdGUpOwogCisJaWYgKHByaXZhdGUuYXJjaGl2ZV9uYW1lKQorCQlm cmVlX2FyY2hpdmVfcmVhZGVyKCZwcml2YXRlKTsKKwogCXJldHVybiBFWElUX1NVQ0NFU1M7CiAK IGJhZF9hcmd1bWVudDoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1w LmggYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCmluZGV4IDRmMWIyYWI2NjhiLi4w MmRhMmM0M2IwOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaAor KysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCkBAIC0xMiw2ICsxMiwxMSBAQAog I2RlZmluZSBQR19XQUxEVU1QX0gKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgorI2lu Y2x1ZGUgImZlX3V0aWxzL2FzdHJlYW1lci5oIgorCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICov CitzdHJ1Y3QgQXJjaGl2ZWRXQUxGaWxlOworc3RydWN0IEFyY2hpdmVkV0FMX2hhc2g7CiAKIC8q IENvbnRhaW5zIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gZHJpdmUgV0FMIGRlY29kaW5n ICovCiB0eXBlZGVmIHN0cnVjdCBYTG9nRHVtcFByaXZhdGUKQEAgLTIxLDYgKzI2LDQ2IEBAIHR5 cGVkZWYgc3RydWN0IFhMb2dEdW1wUHJpdmF0ZQogCVhMb2dSZWNQdHIJc3RhcnRwdHI7CiAJWExv Z1JlY1B0cgllbmRwdHI7CiAJYm9vbAkJZW5kcHRyX3JlYWNoZWQ7CisJYm9vbAkJZGVjb2Rpbmdf c3RhcnRlZDsKKworCS8qIEZpZWxkcyByZXF1aXJlZCB0byByZWFkIFdBTCBmcm9tIGFyY2hpdmUg Ki8KKwljaGFyCSAgICphcmNoaXZlX25hbWU7CS8qIFRhciBhcmNoaXZlIG5hbWUgKi8KKwlpbnQJ CQlhcmNoaXZlX2ZkOwkJLyogRmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgb3BlbiB0YXIgZmlsZSAq LworCisJYXN0cmVhbWVyICAqYXJjaGl2ZV9zdHJlYW1lcjsKKworCS8qIFdoYXQgdGhlIGFyY2hp dmUgc3RyZWFtZXIgaXMgY3VycmVudGx5IHJlYWRpbmcgKi8KKwlzdHJ1Y3QgQXJjaGl2ZWRXQUxG aWxlICpjdXJfZmlsZTsKKworCS8qCisJICogSGFzaCB0YWJsZSBvZiBhbGwgV0FMIGZpbGVzIHRo YXQgdGhlIGFyY2hpdmUgc3RyZWFtIGhhcyByZWFkLCBpbmNsdWRpbmcKKwkgKiB0aGUgb25lIGN1 cnJlbnRseSBpbiBwcm9ncmVzcy4KKwkgKi8KKwlzdHJ1Y3QgQXJjaGl2ZWRXQUxfaGFzaCAqYXJj aGl2ZV93YWxfaHRhYjsKKworCS8qCisJICogQWx0aG91Z2ggdGhlc2UgdmFsdWVzIGNhbiBiZSBl YXNpbHkgZGVyaXZlZCBmcm9tIHN0YXJ0cHRyIGFuZCBlbmRwdHIsCisJICogZG9pbmcgc28gcmVw ZWF0ZWRseSBmb3IgZWFjaCBhcmNoaXZlZCBtZW1iZXIgd291bGQgYmUgaW5lZmZpY2llbnQsIGFz CisJICogaXQgd291bGQgaW52b2x2ZSByZWNhbGN1bGF0aW5nIGFuZCBmaWx0ZXJpbmcgb3V0IGly cmVsZXZhbnQgV0FMCisJICogc2VnbWVudHMuCisJICovCisJWExvZ1NlZ05vCXN0YXJ0X3NlZ25v OworCVhMb2dTZWdObwllbmRfc2Vnbm87CiB9IFhMb2dEdW1wUHJpdmF0ZTsKIAorZXh0ZXJuIGlu dAlvcGVuX2ZpbGVfaW5fZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hh ciAqZm5hbWUpOworCitleHRlcm4gYm9vbCBpc19hcmNoaXZlX2ZpbGUoY29uc3QgY2hhciAqZm5h bWUsCisJCQkJCQkJcGdfY29tcHJlc3NfYWxnb3JpdGhtICpjb21wcmVzc2lvbik7CitleHRlcm4g dm9pZCBpbml0X2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sCisJ CQkJCQkJCWNvbnN0IGNoYXIgKndhbGRpciwgaW50ICpXYWxTZWdTeiwKKwkJCQkJCQkJcGdfY29t cHJlc3NfYWxnb3JpdGhtIGNvbXByZXNzaW9uKTsKK2V4dGVybiB2b2lkIGZyZWVfYXJjaGl2ZV9y ZWFkZXIoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbyk7CitleHRlcm4gaW50CXJlYWRfYXJj aGl2ZV93YWxfcGFnZShYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAorCQkJCQkJCQkgIFhM b2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwKKwkJCQkJCQkJICBTaXplIGNvdW50LCBjaGFyICpyZWFk QnVmZiwKKwkJCQkJCQkJICBpbnQgV2FsU2VnU3opOworZXh0ZXJuIHZvaWQgZnJlZV9hcmNoaXZl X3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFtZSwKKwkJCQkJCQkJICAgWExvZ0R1bXBQcml2YXRl ICpwcml2YXRlSW5mbyk7CisKICNlbmRpZgkJCQkJCQkvKiBlbmQgb2YgUEdfV0FMRFVNUF9IICov CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmlu L3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKaW5kZXggMzI4OGZhZGNmNDguLmNhZTU0M2M4OTkw IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKKysrIGIvc3Jj L2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCkBAIC0zLDEwICszLDEzIEBACiAKIHVzZSBz dHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgQ3dkOwogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIAorbXkgJHRhciA9ICRFTlZ7VEFSfTsKKwogcHJvZ3JhbV9oZWxwX29rKCdw Z193YWxkdW1wJyk7CiBwcm9ncmFtX3ZlcnNpb25fb2soJ3BnX3dhbGR1bXAnKTsKIHByb2dyYW1f b3B0aW9uc19oYW5kbGluZ19vaygncGdfd2FsZHVtcCcpOwpAQCAtMjM1LDcgKzIzOCw3IEBAIGNv bW1hbmRfbGlrZSgKIHN1YiB0ZXN0X3BnX3dhbGR1bXAKIHsKIAlsb2NhbCAkVGVzdDo6QnVpbGRl cjo6TGV2ZWwgPSAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgKyAxOwotCW15IEBvcHRzID0gQF87CisJ bXkgKCRwYXRoLCBAb3B0cykgPSBAXzsKIAogCW15ICgkc3Rkb3V0LCAkc3RkZXJyKTsKIApAQCAt MjQzLDYgKzI0Niw3IEBAIHN1YiB0ZXN0X3BnX3dhbGR1bXAKIAkJJ3BnX3dhbGR1bXAnLAogCQkn LS1zdGFydCcgPT4gJHN0YXJ0X2xzbiwKIAkJJy0tZW5kJyA9PiAkZW5kX2xzbiwKKwkJJy0tcGF0 aCcgPT4gJHBhdGgsCiAJCUBvcHRzCiAJICBdLAogCSAgJz4nID0+IFwkc3Rkb3V0LApAQCAtMjU0 LDExICsyNTgsNTAgQEAgc3ViIHRlc3RfcGdfd2FsZHVtcAogCXJldHVybiBAbGluZXM7CiB9CiAK LW15IEBsaW5lczsKKyMgQ3JlYXRlIGEgdGFyIGFyY2hpdmUsIHNvcnRpbmcgdGhlIGZpbGUgb3Jk ZXIKK3N1YiBnZW5lcmF0ZV9hcmNoaXZlCit7CisJbXkgKCRhcmNoaXZlLCAkZGlyZWN0b3J5LCAk Y29tcHJlc3Npb25fZmxhZ3MpID0gQF87CisKKwlteSBAZmlsZXM7CisJb3BlbmRpciBteSAkZGgs ICRkaXJlY3Rvcnkgb3IgZGllICJvcGVuZGlyOiAkISI7CisJd2hpbGUgKG15ICRlbnRyeSA9IHJl YWRkaXIgJGRoKSB7CisJCSMgU2tpcCAnLicgYW5kICcuLicKKwkJbmV4dCBpZiAkZW50cnkgZXEg Jy4nIHx8ICRlbnRyeSBlcSAnLi4nOworCQlwdXNoIEBmaWxlcywgJGVudHJ5OworCX0KKwljbG9z ZWRpciAkZGg7CisKKwlAZmlsZXMgPSBzb3J0IEBmaWxlczsKKworCSMgbW92ZSBpbnRvIHRoZSBX QUwgZGlyZWN0b3J5IGJlZm9yZSBhcmNoaXZpbmcgZmlsZXMKKwlteSAkY3dkID0gZ2V0Y3dkOwor CWNoZGlyKCRkaXJlY3RvcnkpIHx8IGRpZSAiY2hkaXI6ICQhIjsKKwljb21tYW5kX29rKFskdGFy LCAkY29tcHJlc3Npb25fZmxhZ3MsICRhcmNoaXZlLCBAZmlsZXNdKTsKKwljaGRpcigkY3dkKSB8 fCBkaWUgImNoZGlyOiAkISI7Cit9CisKK215ICR0bXBfZGlyID0gUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM6OnRlbXBkaXJfc2hvcnQoKTsKIAogbXkgQHNjZW5hcmlvcyA9ICgKIAl7Ci0JCSdwYXRo JyA9PiAkbm9kZS0+ZGF0YV9kaXIKKwkJJ3BhdGgnID0+ICRub2RlLT5kYXRhX2RpciwKKwkJJ2lz X2FyY2hpdmUnID0+IDAsCisJCSdlbmFibGVkJyA9PiAxCisJfSwKKwl7CisJCSdwYXRoJyA9PiAi JHRtcF9kaXIvcGdfd2FsLnRhciIsCisJCSdjb21wcmVzc2lvbl9tZXRob2QnID0+ICdub25lJywK KwkJJ2NvbXByZXNzaW9uX2ZsYWdzJyA9PiAnLWNmJywKKwkJJ2lzX2FyY2hpdmUnID0+IDEsCisJ CSdlbmFibGVkJyA9PiAxCisJfSwKKwl7CisJCSdwYXRoJyA9PiAiJHRtcF9kaXIvcGdfd2FsLnRh ci5neiIsCisJCSdjb21wcmVzc2lvbl9tZXRob2QnID0+ICdnemlwJywKKwkJJ2NvbXByZXNzaW9u X2ZsYWdzJyA9PiAnLWN6ZicsCisJCSdpc19hcmNoaXZlJyA9PiAxLAorCQknZW5hYmxlZCcgPT4g Y2hlY2tfcGdfY29uZmlnKCIjZGVmaW5lIEhBVkVfTElCWiAxIikKIAl9KTsKIAogZm9yIG15ICRz Y2VuYXJpbyAoQHNjZW5hcmlvcykKQEAgLTI2Nyw2ICszMTAsMTkgQEAgZm9yIG15ICRzY2VuYXJp byAoQHNjZW5hcmlvcykKIAogCVNLSVA6CiAJeworCQlza2lwICJ0YXIgY29tbWFuZCBpcyBub3Qg YXZhaWxhYmxlIiwgMworCQkgIGlmICFkZWZpbmVkICR0YXI7CisJCXNraXAgIiRzY2VuYXJpby0+ eydjb21wcmVzc2lvbl9tZXRob2QnfSBjb21wcmVzc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMg YnVpbGQiLCAzCisJCSAgaWYgISRzY2VuYXJpby0+eydlbmFibGVkJ30gJiYgJHNjZW5hcmlvLT57 J2lzX2FyY2hpdmUnfTsKKworCQkgICMgY3JlYXRlIHBnX3dhbCBhcmNoaXZlCisJCSAgaWYgKCRz Y2VuYXJpby0+eydpc19hcmNoaXZlJ30pCisJCSAgeworCQkJICBnZW5lcmF0ZV9hcmNoaXZlKCRw YXRoLAorCQkJCSAgJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ193YWwnLAorCQkJCSAgJHNjZW5hcmlv LT57J2NvbXByZXNzaW9uX2ZsYWdzJ30pOworCQkgIH0KKwogCQljb21tYW5kX2ZhaWxzX2xpa2Uo CiAJCQlbICdwZ193YWxkdW1wJywgJy0tcGF0aCcgPT4gJHBhdGggXSwKIAkJCXFyL2Vycm9yOiBu byBzdGFydCBXQUwgbG9jYXRpb24gZ2l2ZW4vLApAQCAtMjk4LDM4ICszNTQsNDEgQEAgZm9yIG15 ICRzY2VuYXJpbyAoQHNjZW5hcmlvcykKIAkJCXFyL2Vycm9yOiBlcnJvciBpbiBXQUwgcmVjb3Jk IGF0LywKIAkJCSdlcnJvcnMgYXJlIHNob3duIHdpdGggLS1xdWlldCcpOwogCi0JCUBsaW5lcyA9 IHRlc3RfcGdfd2FsZHVtcCgnLS1wYXRoJyA9PiAkcGF0aCk7CisJCW15IEBsaW5lcyA9IHRlc3Rf cGdfd2FsZHVtcCgkcGF0aCk7CiAJCWlzKGdyZXAoIS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAn YWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5lcycpOwogCi0JCUBsaW5lcyA9IHRlc3RfcGdf d2FsZHVtcCgnLS1wYXRoJyA9PiAkcGF0aCwgJy0tbGltaXQnID0+IDYpOworCQlAbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLWxpbWl0JyA9PiA2KTsKIAkJaXMoQGxpbmVzLCA2LCAn bGltaXQgb3B0aW9uIG9ic2VydmVkJyk7CiAKLQkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCct LXBhdGgnID0+ICRwYXRoLCAnLS1mdWxscGFnZScpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1 bXAoJHBhdGgsICctLWZ1bGxwYWdlJyk7CiAJCWlzKGdyZXAoIS9ecm1ncjouKlxiRlBXXGIvLCBA bGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgRlBXJyk7CiAKLQkJQGxpbmVzID0gdGVz dF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1zdGF0cycpOworCQlAbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLXN0YXRzJyk7CiAJCWxpa2UoJGxpbmVzWzBdLCBxci9X QUwgc3RhdGlzdGljcy8sICJzdGF0aXN0aWNzIG9uIHN0ZG91dCIpOwogCQlpcyhncmVwKC9ecm1n cjovLCBAbGluZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKIAotCQlAbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsICctLXN0YXRzPXJlY29yZCcpOworCQlA bGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLXN0YXRzPXJlY29yZCcpOwogCQlsaWtl KCRsaW5lc1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsK IAkJaXMoZ3JlcCgvXnJtZ3I6LywgQGxpbmVzKSwgMCwgJ25vIHJtZ3IgbGluZXMgb3V0cHV0Jyk7 CiAKLQkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1ybWdy JyA9PiAnQnRyZWUnKTsKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAnLS1ybWdy JyA9PiAnQnRyZWUnKTsKIAkJaXMoZ3JlcCghL15ybWdyOiBCdHJlZS8sIEBsaW5lcyksIDAsICdv bmx5IEJ0cmVlIGxpbmVzJyk7CiAKLQkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgn ID0+ICRwYXRoLCAnLS1mb3JrJyA9PiAnaW5pdCcpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1 bXAoJHBhdGgsICctLWZvcmsnID0+ICdpbml0Jyk7CiAJCWlzKGdyZXAoIS9mb3JrIGluaXQvLCBA bGluZXMpLCAwLCAnb25seSBpbml0IGZvcmsgbGluZXMnKTsKIAotCQlAbGluZXMgPSB0ZXN0X3Bn X3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgk cGF0aCwKIAkJCSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9v aWQvJHJlbF90MV9vaWQiKTsKIAkJaXMoZ3JlcCghL3JlbCAkZGVmYXVsdF90c19vaWRcLyRwb3N0 Z3Jlc19kYl9vaWRcLyRyZWxfdDFfb2lkLywgQGxpbmVzKSwKIAkJCTAsICdvbmx5IGxpbmVzIGZv ciBzZWxlY3RlZCByZWxhdGlvbicpOwogCi0JCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1w YXRoJyA9PiAkcGF0aCwKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLAogCQkJJy0t cmVsYXRpb24nID0+ICIkZGVmYXVsdF90c19vaWQvJHBvc3RncmVzX2RiX29pZC8kcmVsX2kxYV9v aWQiLAogCQkJJy0tYmxvY2snID0+IDEpOwogCQlpcyhncmVwKCEvXGJibGsgMVxiLywgQGxpbmVz KSwgMCwgJ29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIGJsb2NrJyk7CisKKwkJIyBDbGVhbnVwLgor CQl1bmxpbmsgJHBhdGggaWYgJHNjZW5hcmlvLT57J2lzX2FyY2hpdmUnfTsKIAl9CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggOWY1ZWU4ZmQ0ODIuLjJjZDg3ZGU4NGVlIDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTQ0LDYgKzE0NCw4IEBAIEFyY2hpdmVPcHRzCiBB cmNoaXZlU2h1dGRvd25DQgogQXJjaGl2ZVN0YXJ0dXBDQgogQXJjaGl2ZVN0cmVhbVN0YXRlCitB cmNoaXZlZFdBTEZpbGUKK0FyY2hpdmVkV0FMX2hhc2gKIEFyY2hpdmVyT3V0cHV0CiBBcmNoaXZl clN0YWdlCiBBcnJheUFuYWx5emVFeHRyYURhdGEKQEAgLTM1MDYsNiArMzUwOCw3IEBAIGFzdHJl YW1lcl9yZWNvdmVyeV9pbmplY3RvcgogYXN0cmVhbWVyX3Rhcl9hcmNoaXZlcgogYXN0cmVhbWVy X3Rhcl9wYXJzZXIKIGFzdHJlYW1lcl92ZXJpZnkKK2FzdHJlYW1lcl93YWxkdW1wCiBhc3RyZWFt ZXJfenN0ZF9mcmFtZQogYXV0aF9wYXNzd29yZF9ob29rX3R5cAogYXV0b3ZhY190YWJsZQotLSAK Mi40Ny4xCgo= --000000000000d3b226064a74fe29 Content-Type: application/x-patch; name="v12-0006-pg_waldump-Remove-the-restriction-on-the-order-o.patch" Content-Disposition: attachment; filename="v12-0006-pg_waldump-Remove-the-restriction-on-the-order-o.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlgeknb25 RnJvbSA3N2UyOWQzMTYyYWZlYzQ2ZDllZDlmM2Q1OTJiZGJlZWU2MzQ3YjM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjcgSmFuIDIwMjYgMTU6Mzg6MzQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMiA2LzldIHBn X3dhbGR1bXA6IFJlbW92ZSB0aGUgcmVzdHJpY3Rpb24gb24gdGhlIG9yZGVyIG9mCiBhcmNoaXZl ZCBXQUwgZmlsZXMuCgpXaXRoIHByZXZpb3VzIHBhdGNoLCBwZ193YWxkdW1wIHdvdWxkIHN0b3Ag ZGVjb2RpbmcgaWYgV0FMIGZpbGVzIHdlcmUKbm90IGluIHRoZSByZXF1aXJlZCBzZXF1ZW5jZS4g V2l0aCB0aGlzIHBhdGNoLCBkZWNvZGluZyB3aWxsIG5vdwpjb250aW51ZS4gIEFueSBXQUwgZmls ZSB0aGF0IGlzIG91dCBvZiBvcmRlciB3aWxsIGJlIHdyaXR0ZW4gdG8gYQp0ZW1wb3JhcnkgbG9j YXRpb24sIGZyb20gd2hpY2ggaXQgd2lsbCBiZSByZWFkIGxhdGVyLiBPbmNlIGEgdGVtcG9yYXJ5 CmZpbGUgaGFzIGJlZW4gcmVhZCwgaXQgd2lsbCBiZSByZW1vdmVkLgotLS0KIGRvYy9zcmMvc2dt bC9yZWYvcGdfd2FsZHVtcC5zZ21sICAgICB8ICAgOCArLQogc3JjL2Jpbi9wZ193YWxkdW1wL2Fy Y2hpdmVfd2FsZHVtcC5jIHwgMTcxICsrKysrKysrKysrKysrKysrKysrKysrKystLQogc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyAgICAgIHwgIDMxICsrKystCiBzcmMvYmluL3BnX3dh bGR1bXAvcGdfd2FsZHVtcC5oICAgICAgfCAgIDMgKwogc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAx X2Jhc2ljLnBsICAgIHwgICAzICstCiA1IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCsp LCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1 bXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCmluZGV4IGQwMDRiYjBm NjdlLi4yN2FkZjc3NzU1YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1w LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwKQEAgLTE0OSw4ICsx NDksMTIgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICAgIG9mIDxlbnZhcj5QR0RB VEE8L2VudmFyPi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIElmIGEg dGFyIGFyY2hpdmUgaXMgcHJvdmlkZWQsIGl0cyBXQUwgc2VnbWVudCBmaWxlcyBtdXN0IGJlIGlu Ci0gICAgICAgIHNlcXVlbnRpYWwgb3JkZXI7IG90aGVyd2lzZSwgYW4gZXJyb3Igd2lsbCBiZSBy ZXBvcnRlZC4KKyAgICAgICAgSWYgYSB0YXIgYXJjaGl2ZSBpcyBwcm92aWRlZCBhbmQgaXRzIFdB TCBzZWdtZW50IGZpbGVzIGFyZSBub3QgaW4KKyAgICAgICAgc2VxdWVudGlhbCBvcmRlciwgdGhv c2UgZmlsZXMgd2lsbCBiZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeQorICAgICAg ICBuYW1lZCBzdGFydGluZyB3aXRoIDxmaWxlbmFtZT53YWxkdW1wX3RtcDwvZmlsZW5hbWU+LiBU aGlzIGRpcmVjdG9yeSB3aWxsIGJlCisgICAgICAgIGNyZWF0ZWQgaW5zaWRlIHRoZSBkaXJlY3Rv cnkgc3BlY2lmaWVkIGJ5IHRoZSA8ZW52YXI+VE1QRElSPC9lbnZhcj4KKyAgICAgICAgZW52aXJv bm1lbnQgdmFyaWFibGUgaWYgaXQgaXMgc2V0OyBvdGhlcndpc2UsIGl0IHdpbGwgYmUgY3JlYXRl ZCB3aXRoaW4KKyAgICAgICAgdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSB0YXIgYXJjaGl2ZS4K ICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4K ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYyBiL3NyYy9i aW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYwppbmRleCAyN2E1YTVjNmQ1ZC4uYjEzNTMw ODhjNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYwor KysgYi9zcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMKQEAgLTE3LDYgKzE3LDcg QEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFs LmgiCisjaW5jbHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgogI2luY2x1ZGUgImNvbW1vbi9oYXNo Zm4uaCIKICNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3Np bXBsZV9saXN0LmgiCkBAIC0yNyw2ICsyOCw5IEBACiAgKi8KICNkZWZpbmUgUkVBRF9DSFVOS19T SVpFCQkJCSgxMjggKiAxMDI0KQogCisvKiBUZW1wb3JhcnkgZXhwb3J0ZWQgV0FMIGZpbGUgZGly ZWN0b3J5ICovCitjaGFyCSAgICpUbXBXYWxTZWdEaXIgPSBOVUxMOworCiAvKgogICogQ2hlY2sg aWYgdGhlIHN0YXJ0IHNlZ21lbnQgbnVtYmVyIGlzIHplcm87IHRoaXMgaW5kaWNhdGVzIGEgcmVx dWVzdCB0byByZWFkCiAgKiBhbnkgV0FMIGZpbGUuCkBAIC01Nyw2ICs2MSw4IEBAIHR5cGVkZWYg c3RydWN0IEFyY2hpdmVkV0FMRmlsZQogCWNvbnN0IGNoYXIgKmZuYW1lOwkJCS8qIGhhc2gga2V5 OiBXQUwgc2VnbWVudCBuYW1lICovCiAKIAlTdHJpbmdJbmZvCWJ1ZjsJCQkvKiBob2xkcyBXQUwg Ynl0ZXMgcmVhZCBmcm9tIGFyY2hpdmUgKi8KKwlib29sCQlzcGlsbGVkOwkJLyogdHJ1ZSBpZiB0 aGUgV0FMIGRhdGEgd2FzIHNwaWxsZWQgdG8gYQorCQkJCQkJCQkgKiB0ZW1wb3JhcnkgZmlsZSAq LwogCiAJaW50CQkJcmVhZF9sZW47CQkvKiB0b3RhbCBieXRlcyBvZiBhIFdBTCByZWFkIGZyb20g YXJjaGl2ZSAqLwogfSBBcmNoaXZlZFdBTEZpbGU7CkBAIC04NCw2ICs5MCwxMSBAQCBzdGF0aWMg QXJjaGl2ZWRXQUxGaWxlICpnZXRfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5hbWUs CiAJCQkJCQkJCQkJCSAgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKIAkJCQkJCQkJCQkJ ICBpbnQgV2FsU2VnU3opOwogc3RhdGljIGludAlyZWFkX2FyY2hpdmVfZmlsZShYTG9nRHVtcFBy aXZhdGUgKnByaXZhdGVJbmZvLCBTaXplIGNvdW50KTsKK3N0YXRpYyB2b2lkIHNldHVwX3RtcHdh bF9kaXIoY29uc3QgY2hhciAqd2FsZGlyKTsKK3N0YXRpYyB2b2lkIGNsZWFudXBfdG1wd2FsX2Rp cl9hdGV4aXQodm9pZCk7CisKK3N0YXRpYyBGSUxFICpwcmVwYXJlX3RtcF93cml0ZShjb25zdCBj aGFyICpmbmFtZSk7CitzdGF0aWMgdm9pZCBwZXJmb3JtX3RtcF93cml0ZShjb25zdCBjaGFyICpm bmFtZSwgU3RyaW5nSW5mbyBidWYsIEZJTEUgKmZpbGUpOwogCiBzdGF0aWMgYXN0cmVhbWVyICph c3RyZWFtZXJfd2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbyk7CiBzdGF0 aWMgdm9pZCBhc3RyZWFtZXJfd2FsZHVtcF9jb250ZW50KGFzdHJlYW1lciAqc3RyZWFtZXIsCkBA IC0xMzcsNyArMTQ4LDkgQEAgaXNfYXJjaGl2ZV9maWxlKGNvbnN0IGNoYXIgKmZuYW1lLCBwZ19j b21wcmVzc19hbGdvcml0aG0gKmNvbXByZXNzaW9uKQogLyoKICAqIEluaXRpYWxpemVzIHRoZSB0 YXIgYXJjaGl2ZSByZWFkZXIsIGNyZWF0ZXMgYSBoYXNoIHRhYmxlIGZvciBXQUwgZW50cmllcywK ICAqIGNoZWNrcyBmb3IgZXhpc3RpbmcgdmFsaWQgV0FMIHNlZ21lbnRzIGluIHRoZSBhcmNoaXZl IGZpbGUgYW5kIHJldHJpZXZlcyB0aGUKLSAqIHNlZ21lbnQgc2l6ZSwgYW5kIHNldHMgdXAgZmls dGVycyBmb3IgcmVsZXZhbnQgZW50cmllcy4KKyAqIHNlZ21lbnQgc2l6ZSwgYW5kIHNldHMgdXAg ZmlsdGVycyBmb3IgcmVsZXZhbnQgZW50cmllcy4gSXQgYWxzbyBjb25maWd1cmVzIGEKKyAqIHRl bXBvcmFyeSBkaXJlY3RvcnkgZm9yIG91dC1vZi1vcmRlciBXQUwgZGF0YSBhbmQgcmVnaXN0ZXJz IGFuIGV4aXQgY2FsbGJhY2sKKyAqIHRvIGNsZWFuIHVwIHRlbXBvcmFyeSBmaWxlcy4KICAqLwog dm9pZAogaW5pdF9hcmNoaXZlX3JlYWRlcihYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBj b25zdCBjaGFyICp3YWxkaXIsCkBAIC0yMzAsNiArMjQzLDEzIEBAIGluaXRfYXJjaGl2ZV9yZWFk ZXIoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywgY29uc3QgY2hhciAqd2FsZGlyLAogCQlw cml2YXRlSW5mby0+c3RhcnRfc2Vnbm8gPiBzZWdubyB8fAogCQlwcml2YXRlSW5mby0+ZW5kX3Nl Z25vIDwgc2Vnbm8pCiAJCWZyZWVfYXJjaGl2ZV93YWxfZW50cnkoZW50cnktPmZuYW1lLCBwcml2 YXRlSW5mbyk7CisKKwkvKgorCSAqIFNldHVwIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gc3RvcmUg V0FMIHNlZ21lbnRzIGFuZCBzZXQgdXAgYW4gZXhpdAorCSAqIGNhbGxiYWNrIHRvIHJlbW92ZSBp dCB1cG9uIGNvbXBsZXRpb24uCisJICovCisJc2V0dXBfdG1wd2FsX2Rpcih3YWxkaXIpOworCWF0 ZXhpdChjbGVhbnVwX3RtcHdhbF9kaXJfYXRleGl0KTsKIH0KIAogLyoKQEAgLTM5Niw2ICs0MTYs MTcgQEAgZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFtZSwgWExvZ0R1bXBQ cml2YXRlICpwcml2YXRlSW5mbykKIAlkZXN0cm95U3RyaW5nSW5mbyhlbnRyeS0+YnVmKTsKIAll bnRyeS0+YnVmID0gTlVMTDsKIAorCS8qIFJlbW92ZSB0ZW1wb3JhcnkgZmlsZSBpZiBhbnkgKi8K KwlpZiAoZW50cnktPnNwaWxsZWQpCisJeworCQljaGFyCQlmcGF0aFtNQVhQR1BBVEhdOworCisJ CXNucHJpbnRmKGZwYXRoLCBNQVhQR1BBVEgsICIlcy8lcyIsIFRtcFdhbFNlZ0RpciwgZm5hbWUp OworCisJCWlmICh1bmxpbmsoZnBhdGgpID09IDApCisJCQlwZ19sb2dfZGVidWcoInJlbW92ZWQg ZmlsZSBcIiVzXCIiLCBmcGF0aCk7CisJfQorCiAJLyogU2V0IGN1cl9maWxlIHRvIE5VTEwgaWYg aXQgbWF0Y2hlcyB0aGUgZW50cnkgYmVpbmcgaWdub3JlZCAqLwogCWlmIChwcml2YXRlSW5mby0+ Y3VyX2ZpbGUgPT0gZW50cnkpCiAJCXByaXZhdGVJbmZvLT5jdXJfZmlsZSA9IE5VTEw7CkBAIC00 MDcsMTIgKzQzOCwxNiBAQCBmcmVlX2FyY2hpdmVfd2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1l LCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKQogICogUmV0dXJucyB0aGUgYXJjaGl2ZWQg V0FMIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFibGUgaWYgaXQgZXhpc3RzLiAgT3RoZXJ3aXNlLAog ICogaXQgaW52b2tlcyB0aGUgcm91dGluZSB0byByZWFkIHRoZSBhcmNoaXZlZCBmaWxlLCB3aGlj aCB0aGVuIHBvcHVsYXRlcyB0aGUKICAqIGVudHJ5IGluIHRoZSBoYXNoIHRhYmxlIGlmIHRoYXQg V0FMIGV4aXN0cyBpbiB0aGUgYXJjaGl2ZS4KKyAqIElmIHRoZSBhcmNoaXZlIHN0cmVhbWVyIGhh cHBlbnMgdG8gYmUgcmVhZGluZyBhCisgKiBXQUwgZnJvbSBhcmNoaXZlIGZpbGUgdGhhdCBpcyBu b3QgY3VycmVudGx5IG5lZWRlZCwgdGhhdCBXQUwgZGF0YSBpcyB3cml0dGVuCisgKiB0byBhIHRl bXBvcmFyeSBmaWxlLgogICovCiBzdGF0aWMgQXJjaGl2ZWRXQUxGaWxlICoKIGdldF9hcmNoaXZl X3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFtZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5m bywKIAkJCQkJICBpbnQgV2FsU2VnU3opCiB7CiAJQXJjaGl2ZWRXQUxGaWxlICplbnRyeSA9IE5V TEw7CisJRklMRQkgICAqd3JpdGVfZnAgPSBOVUxMOwogCiAJLyogU2VhcmNoIGhhc2ggdGFibGUg Ki8KIAllbnRyeSA9IEFyY2hpdmVkV0FMX2xvb2t1cChwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxf aHRhYiwgZm5hbWUpOwpAQCAtNDI2LDI4ICs0NjEsNTkgQEAgZ2V0X2FyY2hpdmVfd2FsX2VudHJ5 KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAogCSAqLwog CXdoaWxlICgxKQogCXsKKwkJLyoKKwkJICogVGhlIFdBTCBmaWxlIGVudHJ5IGN1cnJlbnRseSBi ZWluZyBwcm9jZXNzZWQgbWF5IGNoYW5nZSBkdXJpbmcKKwkJICogYXJjaGl2ZSBzdHJlYW1lciBl eGVjdXRpb24uIFRoZXJlZm9yZSwgbWFpbnRhaW4gYSBsb2NhbCB2YXJpYWJsZSB0bworCQkgKiBy ZWZlcmVuY2UgdGhlIHByZXZpb3VzIGVudHJ5LCBlbnN1cmluZyB0aGF0IGFueSByZW1haW5pbmcg ZGF0YSBpbgorCQkgKiBpdHMgYnVmZmVyIGlzIHN1Y2Nlc3NmdWxseSBmbHVzaGVkIHRvIHRoZSB0 ZW1wb3JhcnkgZmlsZSBiZWZvcmUKKwkJICogc3dpdGNoaW5nIHRvIHRoZSBuZXh0IFdBTCBlbnRy eS4KKwkJICovCisJCWVudHJ5ID0gcHJpdmF0ZUluZm8tPmN1cl9maWxlOworCiAJCS8qIEZldGNo IG1vcmUgZGF0YSAqLwotCQlpZiAocmVhZF9hcmNoaXZlX2ZpbGUocHJpdmF0ZUluZm8sIFJFQURf Q0hVTktfU0laRSkgPT0gMCkKLQkJCWJyZWFrOwkJCQkvKiBhcmNoaXZlIGZpbGUgZW5kZWQgKi8K KwkJaWYgKGVudHJ5ID09IE5VTEwgfHwgZW50cnktPmJ1Zi0+bGVuID09IDApCisJCXsKKwkJCWlm IChyZWFkX2FyY2hpdmVfZmlsZShwcml2YXRlSW5mbywgUkVBRF9DSFVOS19TSVpFKSA9PSAwKQor CQkJCWJyZWFrOwkJCS8qIGFyY2hpdmUgZmlsZSBlbmRlZCAqLworCQl9CiAKIAkJLyoKIAkJICog QXJjaGl2ZWQgc3RyZWFtZXIgaXMgcmVhZGluZyBhIG5vbi1XQUwgZmlsZSBvciBhbiBpcnJlbGV2 YW50IFdBTAogCQkgKiBmaWxlLgogCQkgKi8KLQkJaWYgKHByaXZhdGVJbmZvLT5jdXJfZmlsZSA9 PSBOVUxMKQorCQlpZiAoZW50cnkgPT0gTlVMTCkKIAkJCWNvbnRpbnVlOwogCi0JCWVudHJ5ID0g cHJpdmF0ZUluZm8tPmN1cl9maWxlOwotCiAJCS8qIEZvdW5kIHRoZSByZXF1aXJlZCBlbnRyeSAq LwogCQlpZiAoc3RyY21wKGZuYW1lLCBlbnRyeS0+Zm5hbWUpID09IDApCiAJCQlyZXR1cm4gZW50 cnk7CiAKLQkJLyogV0FMIHNlZ21lbnRzIG11c3QgYmUgYXJjaGl2ZWQgaW4gb3JkZXIgKi8KLQkJ cGdfbG9nX2Vycm9yKCJXQUwgZmlsZXMgYXJlIG5vdCBhcmNoaXZlZCBpbiBzZXF1ZW50aWFsIG9y ZGVyIik7Ci0JCXBnX2xvZ19lcnJvcl9kZXRhaWwoIkV4cGVjdGluZyBzZWdtZW50IFwiJXNcIiBi dXQgZm91bmQgXCIlc1wiLiIsCi0JCQkJCQkJZm5hbWUsIGVudHJ5LT5mbmFtZSk7Ci0JCWV4aXQo MSk7CisJCS8qCisJCSAqIEFyY2hpdmUgc3RyZWFtZXIgaXMgY3VycmVudGx5IHJlYWRpbmcgYSBm aWxlIHRoYXQgaXNuJ3QgdGhlIG9uZQorCQkgKiBhc2tlZCBmb3IsIGJ1dCBpdCdzIHJlcXVpcmVk IGluIHRoZSBmdXR1cmUuIEl0IHNob3VsZCBiZSB3cml0dGVuIHRvCisJCSAqIGEgdGVtcG9yYXJ5 IGxvY2F0aW9uIGZvciByZXRyaWV2YWwgd2hlbiBuZWVkZWQuCisJCSAqLworCisJCS8qIENyZWF0 ZSBhIHRlbXBvcmFyeSBmaWxlIGlmIG9uZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0ICovCisJCWlm ICghZW50cnktPnNwaWxsZWQpCisJCXsKKwkJCXdyaXRlX2ZwID0gcHJlcGFyZV90bXBfd3JpdGUo ZW50cnktPmZuYW1lKTsKKwkJCWVudHJ5LT5zcGlsbGVkID0gdHJ1ZTsKKwkJfQorCisJCS8qIEZs dXNoIGRhdGEgZnJvbSB0aGUgYnVmZmVyIHRvIHRoZSBmaWxlICovCisJCXBlcmZvcm1fdG1wX3dy aXRlKGVudHJ5LT5mbmFtZSwgZW50cnktPmJ1Ziwgd3JpdGVfZnApOworCQlyZXNldFN0cmluZ0lu Zm8oZW50cnktPmJ1Zik7CisKKwkJLyoKKwkJICogVGhlIGNoYW5nZSBpbiB0aGUgY3VycmVudCBz ZWdtZW50IGVudHJ5IGluZGljYXRlcyB0aGF0IHRoZSByZWFkaW5nCisJCSAqIG9mIHRoaXMgZmls ZSBoYXMgZW5kZWQuCisJCSAqLworCQlpZiAoZW50cnkgIT0gcHJpdmF0ZUluZm8tPmN1cl9maWxl ICYmIHdyaXRlX2ZwICE9IE5VTEwpCisJCXsKKwkJCWZjbG9zZSh3cml0ZV9mcCk7CisJCQl3cml0 ZV9mcCA9IE5VTEw7CisJCX0KIAl9CiAKIAkvKiBSZXF1ZXN0ZWQgV0FMIHNlZ21lbnQgbm90IGZv dW5kICovCkBAIC00ODUsNyArNTUxLDg4IEBAIHJlYWRfYXJjaGl2ZV9maWxlKFhMb2dEdW1wUHJp dmF0ZSAqcHJpdmF0ZUluZm8sIFNpemUgY291bnQpCiB9CiAKIC8qCi0gKiBDcmVhdGUgYW4gYXN0 cmVhbWVyIHRoYXQgY2FuIHJlYWQgV0FMIGZyb20gYSB0YXIgZmlsZS4KKyAqIFNldCB1cCBhIHRl bXBvcmFyeSBkaXJlY3RvcnkgdG8gdGVtcG9yYXJpbHkgc3RvcmUgV0FMIHNlZ21lbnRzLgorICov CitzdGF0aWMgdm9pZAorc2V0dXBfdG1wd2FsX2Rpcihjb25zdCBjaGFyICp3YWxkaXIpCit7CisJ Y2hhcgkgICAqdGVtcGxhdGU7CisKKwkvKgorCSAqIFVzZSB0aGUgZGlyZWN0b3J5IHNwZWNpZmll ZCBieSB0aGUgVE1QRElSIGVudmlyb25tZW50IHZhcmlhYmxlLiBJZiBpdCdzCisJICogbm90IHNl dCwgdXNlIHRoZSBwcm92aWRlZCBXQUwgZGlyZWN0b3J5IHRvIGV4dHJhY3QgV0FMIGZpbGUKKwkg KiB0ZW1wb3JhcmlseS4KKwkgKi8KKwl0ZW1wbGF0ZSA9IHBzcHJpbnRmKCIlcy93YWxkdW1wX3Rt cC1YWFhYWFgiLAorCQkJCQkJZ2V0ZW52KCJUTVBESVIiKSA/IGdldGVudigiVE1QRElSIikgOiB3 YWxkaXIpOworCVRtcFdhbFNlZ0RpciA9IG1rZHRlbXAodGVtcGxhdGUpOworCisJaWYgKFRtcFdh bFNlZ0RpciA9PSBOVUxMKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBkaXJlY3Rvcnkg XCIlc1wiOiAlbSIsIHRlbXBsYXRlKTsKKworCWNhbm9uaWNhbGl6ZV9wYXRoKFRtcFdhbFNlZ0Rp cik7CisKKwlwZ19sb2dfZGVidWcoImNyZWF0ZWQgZGlyZWN0b3J5IFwiJXNcIiIsIFRtcFdhbFNl Z0Rpcik7Cit9CisKKy8qCisgKiBSZW1vdmUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhdCBleGl0LCBp ZiBhbnkuCisgKi8KK3N0YXRpYyB2b2lkCitjbGVhbnVwX3RtcHdhbF9kaXJfYXRleGl0KHZvaWQp Cit7CisJcm10cmVlKFRtcFdhbFNlZ0RpciwgdHJ1ZSk7Cit9CisKKy8qCisgKiBDcmVhdGUgYW4g ZW1wdHkgcGxhY2Vob2xkZXIgZmlsZSBhbmQgcmV0dXJuIGl0cyBoYW5kbGUuCisgKi8KK3N0YXRp YyBGSUxFICoKK3ByZXBhcmVfdG1wX3dyaXRlKGNvbnN0IGNoYXIgKmZuYW1lKQoreworCWNoYXIJ CWZwYXRoW01BWFBHUEFUSF07CisJRklMRQkgICAqZmlsZTsKKworCXNucHJpbnRmKGZwYXRoLCBN QVhQR1BBVEgsICIlcy8lcyIsIFRtcFdhbFNlZ0RpciwgZm5hbWUpOworCisJLyogQ3JlYXRlIGFu IGVtcHR5IHBsYWNlaG9sZGVyICovCisJZmlsZSA9IGZvcGVuKGZwYXRoLCBQR19CSU5BUllfVyk7 CisJaWYgKGZpbGUgPT0gTlVMTCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZmlsZSBc IiVzXCI6ICVtIiwgZnBhdGgpOworCisjaWZuZGVmIFdJTjMyCisJaWYgKGNobW9kKGZwYXRoLCBw Z19maWxlX2NyZWF0ZV9tb2RlKSkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBzZXQgcGVybWlzc2lv bnMgb24gZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkgZnBhdGgpOworI2VuZGlmCisKKwlwZ19sb2df ZGVidWcoInNwaWxsaW5nIHRvIHRlbXBvcmFyeSBmaWxlIFwiJXNcIiIsIGZwYXRoKTsKKworCXJl dHVybiBmaWxlOworfQorCisvKgorICogV3JpdGUgYnVmZmVyIGRhdGEgdG8gdGhlIGdpdmVuIGZp bGUgaGFuZGxlLgorICovCitzdGF0aWMgdm9pZAorcGVyZm9ybV90bXBfd3JpdGUoY29uc3QgY2hh ciAqZm5hbWUsIFN0cmluZ0luZm8gYnVmLCBGSUxFICpmaWxlKQoreworCUFzc2VydChmaWxlKTsK KworCWVycm5vID0gMDsKKwlpZiAoYnVmLT5sZW4gPiAwICYmIGZ3cml0ZShidWYtPmRhdGEsIGJ1 Zi0+bGVuLCAxLCBmaWxlKSAhPSAxKQorCXsKKwkJLyoKKwkJICogSWYgd3JpdGUgZGlkbid0IHNl dCBlcnJubywgYXNzdW1lIHByb2JsZW0gaXMgbm8gZGlzayBzcGFjZQorCQkgKi8KKwkJaWYgKGVy cm5vID09IDApCisJCQllcnJubyA9IEVOT1NQQzsKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCB3cml0 ZSB0byBmaWxlIFwiJXNcIjogJW0iLCBmbmFtZSk7CisJfQorfQorCisvKgorICogQ3JlYXRlIGFu IGFzdHJlYW1lciB0aGF0IGNhbiByZWFkIFdBTCBmcm9tIHRhciBmaWxlLgogICovCiBzdGF0aWMg YXN0cmVhbWVyICoKIGFzdHJlYW1lcl93YWxkdW1wX25ldyhYTG9nRHVtcFByaXZhdGUgKnByaXZh dGVJbmZvKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3Ny Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggNmQwNDQ2MmQwMzkuLmZhZjMwMGFm MmJlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3Ny Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTQ3OCwyNSArNDc4LDQ2IEBAIFRhcldB TER1bXBSZWFkUGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBh Z2VQdHIsIGludCByZXFMZW4sCiAJCXJldHVybiAtMTsKIAogCS8qCi0JICogSWYgdGhlIHRhcmdl dCBwYWdlIGlzIGluIGEgZGlmZmVyZW50IHNlZ21lbnQsIGZyZWUgdGhlIGJ1ZmZlciBzcGFjZQot CSAqIG9jY3VwaWVkIGJ5IHRoZSBwcmV2aW91cyBzZWdtZW50IGRhdGEuIFNpbmNlIHBnX3dhbGR1 bXAgbmV2ZXIgcmVxdWVzdHMKLQkgKiB0aGUgc2FtZSBXQUwgYnl0ZXMgdHdpY2UsIG1vdmluZyB0 byBhIG5ldyBzZWdtZW50IGltcGxpZXMgdGhlIHByZXZpb3VzCi0JICogYnVmZmVyJ3MgZGF0YSBh bmQgdGhhdCBzZWdtZW50IHdpbGwgbm90IGJlIG5lZWRlZCBhZ2Fpbi4KKwkgKiBJZiB0aGUgdGFy Z2V0IHBhZ2UgaXMgaW4gYSBkaWZmZXJlbnQgc2VnbWVudCwgZnJlZSB0aGUgYnVmZmVyIGFuZC9v cgorCSAqIHRlbXBvcmFyeSBmaWxlIGRpc2sgc3BhY2Ugb2NjdXBpZWQgYnkgdGhlIHByZXZpb3Vz IHNlZ21lbnQncyBkYXRhLgorCSAqIFNpbmNlIHBnX3dhbGR1bXAgbmV2ZXIgcmVxdWVzdHMgdGhl IHNhbWUgV0FMIGJ5dGVzIHR3aWNlLCBtb3ZpbmcgdG8gYQorCSAqIG5ldyBzZWdtZW50IGltcGxp ZXMgdGhlIHByZXZpb3VzIGJ1ZmZlcidzIGRhdGEgYW5kIHRoYXQgc2VnbWVudCB3aWxsCisJICog bm90IGJlIG5lZWRlZCBhZ2Fpbi4KKwkgKgorCSAqIEFmdGVyd2FyZCwgY2hlY2sgZm9yIHRoZSBu ZXh0IHJlcXVpcmVkIFdBTCBzZWdtZW50J3MgcGh5c2ljYWwgZXhpc3RlbmNlCisJICogaW4gdGhl IHRlbXBvcmFyeSBkaXJlY3RvcnkgZmlyc3QgYmVmb3JlIGludm9raW5nIHRoZSBhcmNoaXZlIHN0 cmVhbWVyLgogCSAqLwogCW5leHRTZWdObyA9IHN0YXRlLT5zZWcud3Nfc2Vnbm87CiAJaWYgKCFY TEJ5dGVJblNlZyh0YXJnZXRQYWdlUHRyLCBuZXh0U2VnTm8sIFdhbFNlZ1N6KSkKIAl7CiAJCWNo YXIJCWZuYW1lW01BWEZOQU1FTEVOXTsKIAorCQlpZiAoc3RhdGUtPnNlZy53c19maWxlID49IDAp CisJCXsKKwkJCWNsb3NlKHN0YXRlLT5zZWcud3NfZmlsZSk7CisJCQlzdGF0ZS0+c2VnLndzX2Zp bGUgPSAtMTsKKwkJfQorCiAJCVhMb2dGaWxlTmFtZShmbmFtZSwgc3RhdGUtPnNlZy53c190bGks IG5leHRTZWdObywgV2FsU2VnU3opOwogCQlmcmVlX2FyY2hpdmVfd2FsX2VudHJ5KGZuYW1lLCBw cml2YXRlKTsKIAogCQlYTEJ5dGVUb1NlZyh0YXJnZXRQYWdlUHRyLCBuZXh0U2VnTm8sIFdhbFNl Z1N6KTsKIAkJc3RhdGUtPnNlZy53c190bGkgPSBwcml2YXRlLT50aW1lbGluZTsKIAkJc3RhdGUt PnNlZy53c19zZWdubyA9IG5leHRTZWdObzsKKworCQkvKgorCQkgKiBJZiB0aGUgbmV4dCBzZWdt ZW50IGV4aXN0cywgb3BlbiBpdCBhbmQgY29udGludWUgcmVhZGluZyBmcm9tIHRoZXJlCisJCSAq LworCQlYTG9nRmlsZU5hbWUoZm5hbWUsIHN0YXRlLT5zZWcud3NfdGxpLCBuZXh0U2VnTm8sIFdh bFNlZ1N6KTsKKwkJc3RhdGUtPnNlZy53c19maWxlID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeShU bXBXYWxTZWdEaXIsIGZuYW1lKTsKIAl9CiAKLQkvKiBSZWFkIHRoZSBXQUwgcGFnZSBmcm9tIHRo ZSBhcmNoaXZlIHN0cmVhbWVyICovCisJLyogQ29udGludWUgcmVhZGluZyBmcm9tIHRoZSBvcGVu IFdBTCBzZWdtZW50LCBpZiBhbnkgKi8KKwlpZiAoc3RhdGUtPnNlZy53c19maWxlID49IDApCisJ CXJldHVybiBXQUxEdW1wUmVhZFBhZ2Uoc3RhdGUsIHRhcmdldFBhZ2VQdHIsIGNvdW50LCB0YXJn ZXRQdHIsCisJCQkJCQkJICAgcmVhZEJ1ZmYpOworCisJLyogT3RoZXJ3aXNlLCByZWFkIHRoZSBX QUwgcGFnZSBmcm9tIHRoZSBhcmNoaXZlIHN0cmVhbWVyICovCiAJcmV0dXJuIHJlYWRfYXJjaGl2 ZV93YWxfcGFnZShwcml2YXRlLCB0YXJnZXRQYWdlUHRyLCBjb3VudCwgcmVhZEJ1ZmYsCiAJCQkJ CQkJCSBXYWxTZWdTeik7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2Fs ZHVtcC5oIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaAppbmRleCAwMmRhMmM0M2Iw OC4uNDc2Zjc0ZTI4NDYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1w LmgKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaApAQCAtMTgsNiArMTgsOSBA QAogc3RydWN0IEFyY2hpdmVkV0FMRmlsZTsKIHN0cnVjdCBBcmNoaXZlZFdBTF9oYXNoOwogCisv KiBUZW1wb3JhcnkgZGlyZWN0b3J5ICovCitleHRlcm4gY2hhciAqVG1wV2FsU2VnRGlyOworCiAv KiBDb250YWlucyB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGRyaXZlIFdBTCBkZWNvZGlu ZyAqLwogdHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2YXRlCiB7CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFf YmFzaWMucGwKaW5kZXggY2FlNTQzYzg5OTAuLjU1YTIxYzcxMjA4IDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3Qv MDAxX2Jhc2ljLnBsCkBAIC03LDYgKzcsNyBAQCB1c2UgQ3dkOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9y ZTsKK3VzZSBMaXN0OjpVdGlsIHF3KHNodWZmbGUpOwogCiBteSAkdGFyID0gJEVOVntUQVJ9Owog CkBAIC0yNzIsNyArMjczLDcgQEAgc3ViIGdlbmVyYXRlX2FyY2hpdmUKIAl9CiAJY2xvc2VkaXIg JGRoOwogCi0JQGZpbGVzID0gc29ydCBAZmlsZXM7CisJQGZpbGVzID0gc2h1ZmZsZSBAZmlsZXM7 CiAKIAkjIG1vdmUgaW50byB0aGUgV0FMIGRpcmVjdG9yeSBiZWZvcmUgYXJjaGl2aW5nIGZpbGVz CiAJbXkgJGN3ZCA9IGdldGN3ZDsKLS0gCjIuNDcuMQoK --000000000000d3b226064a74fe29 Content-Type: application/x-patch; name="v12-0007-pg_verifybackup-Delay-default-WAL-directory-prep.patch" Content-Disposition: attachment; filename="v12-0007-pg_verifybackup-Delay-default-WAL-directory-prep.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlgekt5g6 RnJvbSA4Y2I3MDg1MTU3MWUyNjhhNmJlNzc2M2M4NDVkNzliOWE4YjUwY2MwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTYgSnVsIDIwMjUgMTQ6NDc6NDMgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMiA3LzldIHBn X3ZlcmlmeWJhY2t1cDogRGVsYXkgZGVmYXVsdCBXQUwgZGlyZWN0b3J5CiBwcmVwYXJhdGlvbi4K CldlIGFyZSBub3Qgc3VyZSB3aGV0aGVyIHRvIHBhcnNlIFdBTCBmcm9tIGEgZGlyZWN0b3J5IG9y IGFuIGFyY2hpdmUKdW50aWwgdGhlIGJhY2t1cCBmb3JtYXQgaXMga25vd24uIFRoZXJlZm9yZSwg d2UgZGVsYXkgcHJlcGFyaW5nIHRoZQpkZWZhdWx0IFdBTCBkaXJlY3RvcnkgdW50aWwgdGhlIHBv aW50IG9mIHBhcnNpbmcuIFRoaXMgZGVsYXkgaXMKaGFybWxlc3MsIGFzIHRoZSBXQUwgZGlyZWN0 b3J5IGlzIG5vdCB1c2VkIGVsc2V3aGVyZS4KLS0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9w Z192ZXJpZnliYWNrdXAuYyB8IDggKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNr dXAvcGdfdmVyaWZ5YmFja3VwLmMgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnli YWNrdXAuYwppbmRleCBmOWYyZDQ1N2YyZi4uYWIwMWM0ZDAwM2EgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCkBAIC0yODUsMTAgKzI4NSw2IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCQltYW5pZmVzdF9wYXRoID0gcHNwcmludGYoIiVzL2JhY2t1 cF9tYW5pZmVzdCIsCiAJCQkJCQkJCSBjb250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOwogCi0JLyog QnkgZGVmYXVsdCwgbG9vayBmb3IgdGhlIFdBTCBpbiB0aGUgYmFja3VwIGRpcmVjdG9yeSwgdG9v LiAqLwotCWlmICh3YWxfZGlyZWN0b3J5ID09IE5VTEwpCi0JCXdhbF9kaXJlY3RvcnkgPSBwc3By aW50ZigiJXMvcGdfd2FsIiwgY29udGV4dC5iYWNrdXBfZGlyZWN0b3J5KTsKLQogCS8qCiAJICog VHJ5IHRvIHJlYWQgdGhlIG1hbmlmZXN0LiBXZSB0cmVhdCBhbnkgZXJyb3JzIGVuY291bnRlcmVk IHdoaWxlIHBhcnNpbmcKIAkgKiB0aGUgbWFuaWZlc3QgYXMgZmF0YWw7IHRoZXJlIGRvZXNuJ3Qg c2VlbSB0byBiZSBtdWNoIHBvaW50IGluIHRyeWluZyB0bwpAQCAtMzY4LDYgKzM2NCwxMCBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAoY29udGV4dC5mb3JtYXQgPT0gJ3AnICYm ICFjb250ZXh0LnNraXBfY2hlY2tzdW1zKQogCQl2ZXJpZnlfYmFja3VwX2NoZWNrc3VtcygmY29u dGV4dCk7CiAKKwkvKiBCeSBkZWZhdWx0LCBsb29rIGZvciB0aGUgV0FMIGluIHRoZSBiYWNrdXAg ZGlyZWN0b3J5LCB0b28uICovCisJaWYgKHdhbF9kaXJlY3RvcnkgPT0gTlVMTCkKKwkJd2FsX2Rp cmVjdG9yeSA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJlY3Rvcnkp OworCiAJLyoKIAkgKiBUcnkgdG8gcGFyc2UgdGhlIHJlcXVpcmVkIHJhbmdlcyBvZiBXQUwgcmVj b3JkcywgdW5sZXNzIHdlIHdlcmUgdG9sZAogCSAqIG5vdCB0byBkbyBzby4KLS0gCjIuNDcuMQoK --000000000000d3b226064a74fe29 Content-Type: application/x-patch; name="v12-0008-pg_verifybackup-Rename-the-wal-directory-switch-.patch" Content-Disposition: attachment; filename="v12-0008-pg_verifybackup-Rename-the-wal-directory-switch-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlgekyep7 RnJvbSBjMmIwMzA5ZGVlYjQwMWQxY2ZkMGVkNjE0MGQwYTFkMzdiZGQ3ZTI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzI6MTQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMiA4LzldIHBn X3ZlcmlmeWJhY2t1cDogUmVuYW1lIHRoZSB3YWwtZGlyZWN0b3J5IHN3aXRjaCB0bwogd2FsLXBh dGgKCldpdGggcHJldmlvdXMgcGF0Y2hlcyB0byBwZ193YWxkdW1wIGNhbiBub3cgZGVjb2RlIFdB TCBkaXJlY3RseSBmcm9tCnRhciBmaWxlcy4gIFRoaXMgbWVhbnMgeW91J2xsIGJlIGFibGUgdG8g c3BlY2lmeSBhIHRhciBhcmNoaXZlIHBhdGgKaW5zdGVhZCBvZiBhIHRyYWRpdGlvbmFsIFdBTCBk aXJlY3RvcnkuCgpUbyBrZWVwIHRoaW5ncyBjb25zaXN0ZW50IGFuZCBtb3JlIHZlcnNhdGlsZSwg d2Ugc2hvdWxkIGFsc28KZ2VuZXJhbGl6ZSB0aGUgaW5wdXQgc3dpdGNoIGZvciBwZ192ZXJpZnli YWNrdXAuIEl0IHNob3VsZCBhY2NlcHQKZWl0aGVyIGEgZGlyZWN0b3J5IG9yIGEgdGFyIGZpbGUg cGF0aCB0aGF0IGNvbnRhaW5zIFdBTHMuIFRoaXMgY2hhbmdlCndpbGwgYWxzbyBhbGlnbmluZyBp dCB3aXRoIHRoZSBleGlzdGluZyBtYW5pZmVzdC1wYXRoIHN3aXRjaCBuYW1pbmcuCgo9PSBOT1RF ID09CiAgVGhlIGNvcnJlc3BvbmRpbmcgUE8gZmlsZXMgcmVxdWlyZSB1cGRhdGluZyBkdWUgdG8g dGhpcyBjaGFuZ2UuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbCAg ICAgfCAgMiArLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMgfCAy MiArKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwN193 YWwucGwgICAgICB8ICA0ICsrLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwg MTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnli YWNrdXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwKaW5kZXgg NjFjMTI5NzVlNGEuLmU5YjhiZmQ1MWIxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3Bn X3ZlcmlmeWJhY2t1cC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3Vw LnNnbWwKQEAgLTI2MSw3ICsyNjEsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogICAg ICA8dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+PG9wdGlvbj4tdyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGF0aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgotICAgICAg PHRlcm0+PG9wdGlvbj4tLXdhbC1kaXJlY3Rvcnk9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhdGg8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxvcHRp b24+LS13YWwtcGF0aD08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0aDwvcmVwbGFj ZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxwYXJhPgog ICAgICAgICBUcnkgdG8gcGFyc2UgV0FMIGZpbGVzIHN0b3JlZCBpbiB0aGUgc3BlY2lmaWVkIGRp cmVjdG9yeSwgcmF0aGVyIHRoYW4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3BnX3ZlcmlmeWJhY2t1cC5jIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFj a3VwLmMKaW5kZXggYWIwMWM0ZDAwM2EuLjMxMDNkMzZmMWI5IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYworKysgYi9zcmMvYmluL3BnX3Zlcmlm eWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYwpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCB2 ZXJpZnlfZmlsZV9jaGVja3N1bSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkg dWludDggKmJ1ZmZlcik7CiBzdGF0aWMgdm9pZCBwYXJzZV9yZXF1aXJlZF93YWwodmVyaWZpZXJf Y29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkgICBjaGFyICpwZ193YWxkdW1wX3BhdGgsCi0JCQkJ CQkJICAgY2hhciAqd2FsX2RpcmVjdG9yeSk7CisJCQkJCQkJICAgY2hhciAqd2FsX3BhdGgpOwog c3RhdGljIGFzdHJlYW1lciAqY3JlYXRlX2FyY2hpdmVfdmVyaWZpZXIodmVyaWZpZXJfY29udGV4 dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIGNoYXIgKmFyY2hpdmVfbmFtZSwKIAkJCQkJCQkJCQkg IE9pZCB0YmxzcGNfb2lkLApAQCAtMTI2LDcgKzEyNiw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCQl7InByb2dyZXNzIiwgbm9fYXJndW1lbnQsIE5VTEwsICdQJ30sCiAJCXsicXVp ZXQiLCBub19hcmd1bWVudCwgTlVMTCwgJ3EnfSwKIAkJeyJza2lwLWNoZWNrc3VtcyIsIG5vX2Fy Z3VtZW50LCBOVUxMLCAncyd9LAotCQl7IndhbC1kaXJlY3RvcnkiLCByZXF1aXJlZF9hcmd1bWVu dCwgTlVMTCwgJ3cnfSwKKwkJeyJ3YWwtcGF0aCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAn dyd9LAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwogCkBAIC0xMzUsNyArMTM1LDcgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJY2hhcgkgICAqbWFuaWZlc3RfcGF0aCA9IE5VTEw7 CiAJYm9vbAkJbm9fcGFyc2Vfd2FsID0gZmFsc2U7CiAJYm9vbAkJcXVpZXQgPSBmYWxzZTsKLQlj aGFyCSAgICp3YWxfZGlyZWN0b3J5ID0gTlVMTDsKKwljaGFyCSAgICp3YWxfcGF0aCA9IE5VTEw7 CiAJY2hhcgkgICAqcGdfd2FsZHVtcF9wYXRoID0gTlVMTDsKIAlESVIJCSAgICpkaXI7CiAKQEAg LTIyMSw4ICsyMjEsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQljb250ZXh0 LnNraXBfY2hlY2tzdW1zID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3cnOgotCQkJCXdh bF9kaXJlY3RvcnkgPSBwc3RyZHVwKG9wdGFyZyk7Ci0JCQkJY2Fub25pY2FsaXplX3BhdGgod2Fs X2RpcmVjdG9yeSk7CisJCQkJd2FsX3BhdGggPSBwc3RyZHVwKG9wdGFyZyk7CisJCQkJY2Fub25p Y2FsaXplX3BhdGgod2FsX3BhdGgpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQkvKiBn ZXRvcHRfbG9uZyBhbHJlYWR5IGVtaXR0ZWQgYSBjb21wbGFpbnQgKi8KQEAgLTM2NSwxNSArMzY1 LDE1IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl2ZXJpZnlfYmFja3VwX2NoZWNr c3VtcygmY29udGV4dCk7CiAKIAkvKiBCeSBkZWZhdWx0LCBsb29rIGZvciB0aGUgV0FMIGluIHRo ZSBiYWNrdXAgZGlyZWN0b3J5LCB0b28uICovCi0JaWYgKHdhbF9kaXJlY3RvcnkgPT0gTlVMTCkK LQkJd2FsX2RpcmVjdG9yeSA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9k aXJlY3RvcnkpOworCWlmICh3YWxfcGF0aCA9PSBOVUxMKQorCQl3YWxfcGF0aCA9IHBzcHJpbnRm KCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOwogCiAJLyoKIAkgKiBUcnkg dG8gcGFyc2UgdGhlIHJlcXVpcmVkIHJhbmdlcyBvZiBXQUwgcmVjb3JkcywgdW5sZXNzIHdlIHdl cmUgdG9sZAogCSAqIG5vdCB0byBkbyBzby4KIAkgKi8KIAlpZiAoIW5vX3BhcnNlX3dhbCkKLQkJ cGFyc2VfcmVxdWlyZWRfd2FsKCZjb250ZXh0LCBwZ193YWxkdW1wX3BhdGgsIHdhbF9kaXJlY3Rv cnkpOworCQlwYXJzZV9yZXF1aXJlZF93YWwoJmNvbnRleHQsIHBnX3dhbGR1bXBfcGF0aCwgd2Fs X3BhdGgpOwogCiAJLyoKIAkgKiBJZiBldmVyeXRoaW5nIGxvb2tzIE9LLCB0ZWxsIHRoZSB1c2Vy IHRoaXMsIHVubGVzcyB3ZSB3ZXJlIGFza2VkIHRvCkBAIC0xMTk4LDcgKzExOTgsNyBAQCB2ZXJp ZnlfZmlsZV9jaGVja3N1bSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBtYW5pZmVzdF9maWxl ICptLAogICovCiBzdGF0aWMgdm9pZAogcGFyc2VfcmVxdWlyZWRfd2FsKHZlcmlmaWVyX2NvbnRl eHQgKmNvbnRleHQsIGNoYXIgKnBnX3dhbGR1bXBfcGF0aCwKLQkJCQkgICBjaGFyICp3YWxfZGly ZWN0b3J5KQorCQkJCSAgIGNoYXIgKndhbF9wYXRoKQogewogCW1hbmlmZXN0X2RhdGEgKm1hbmlm ZXN0ID0gY29udGV4dC0+bWFuaWZlc3Q7CiAJbWFuaWZlc3Rfd2FsX3JhbmdlICp0aGlzX3dhbF9y YW5nZSA9IG1hbmlmZXN0LT5maXJzdF93YWxfcmFuZ2U7CkBAIC0xMjA4LDcgKzEyMDgsNyBAQCBw YXJzZV9yZXF1aXJlZF93YWwodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hhciAqcGdfd2Fs ZHVtcF9wYXRoLAogCQljaGFyCSAgICpwZ193YWxkdW1wX2NtZDsKIAogCQlwZ193YWxkdW1wX2Nt ZCA9IHBzcHJpbnRmKCJcIiVzXCIgLS1xdWlldCAtLXBhdGg9XCIlc1wiIC0tdGltZWxpbmU9JXUg LS1zdGFydD0lWC8lMDhYIC0tZW5kPSVYLyUwOFhcbiIsCi0JCQkJCQkJCSAgcGdfd2FsZHVtcF9w YXRoLCB3YWxfZGlyZWN0b3J5LCB0aGlzX3dhbF9yYW5nZS0+dGxpLAorCQkJCQkJCQkgIHBnX3dh bGR1bXBfcGF0aCwgd2FsX3BhdGgsIHRoaXNfd2FsX3JhbmdlLT50bGksCiAJCQkJCQkJCSAgTFNO X0ZPUk1BVF9BUkdTKHRoaXNfd2FsX3JhbmdlLT5zdGFydF9sc24pLAogCQkJCQkJCQkgIExTTl9G T1JNQVRfQVJHUyh0aGlzX3dhbF9yYW5nZS0+ZW5kX2xzbikpOwogCQlmZmx1c2goTlVMTCk7CkBA IC0xMzc2LDcgKzEzNzYsNyBAQCB1c2FnZSh2b2lkKQogCXByaW50ZihfKCIgIC1QLCAtLXByb2dy ZXNzICAgICAgICAgICAgICBzaG93IHByb2dyZXNzIGluZm9ybWF0aW9uXG4iKSk7CiAJcHJpbnRm KF8oIiAgLXEsIC0tcXVpZXQgICAgICAgICAgICAgICAgIGRvIG5vdCBwcmludCBhbnkgb3V0cHV0 LCBleGNlcHQgZm9yIGVycm9yc1xuIikpOwogCXByaW50ZihfKCIgIC1zLCAtLXNraXAtY2hlY2tz dW1zICAgICAgICBza2lwIGNoZWNrc3VtIHZlcmlmaWNhdGlvblxuIikpOwotCXByaW50ZihfKCIg IC13LCAtLXdhbC1kaXJlY3Rvcnk9UEFUSCAgICB1c2Ugc3BlY2lmaWVkIHBhdGggZm9yIFdBTCBm aWxlc1xuIikpOworCXByaW50ZihfKCIgIC13LCAtLXdhbC1wYXRoPVBBVEggICAgICAgICB1c2Ug c3BlY2lmaWVkIHBhdGggZm9yIFdBTCBmaWxlc1xuIikpOwogCXByaW50ZihfKCIgIC1WLCAtLXZl cnNpb24gICAgICAgICAgICAgICBvdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiwgdGhlbiBleGl0 XG4iKSk7CiAJcHJpbnRmKF8oIiAgLT8sIC0taGVscCAgICAgICAgICAgICAgICAgIHNob3cgdGhp cyBoZWxwLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYoXygiXG5SZXBvcnQgYnVncyB0byA8JXM+ LlxuIiksIFBBQ0tBR0VfQlVHUkVQT1JUKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5 YmFja3VwL3QvMDA3X3dhbC5wbCBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3X3dhbC5w bAppbmRleCA3OTA4N2ExZjZiZS4uOGFkMjIzNDQ1M2QgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf dmVyaWZ5YmFja3VwL3QvMDA3X3dhbC5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90 LzAwN193YWwucGwKQEAgLTQyLDEwICs0MiwxMCBAQCBjb21tYW5kX29rKFsgJ3BnX3ZlcmlmeWJh Y2t1cCcsICctLW5vLXBhcnNlLXdhbCcsICRiYWNrdXBfcGF0aCBdLAogY29tbWFuZF9vaygKIAlb CiAJCSdwZ192ZXJpZnliYWNrdXAnLAotCQknLS13YWwtZGlyZWN0b3J5JyA9PiAkcmVsb2NhdGVk X3BnX3dhbCwKKwkJJy0td2FsLXBhdGgnID0+ICRyZWxvY2F0ZWRfcGdfd2FsLAogCQkkYmFja3Vw X3BhdGgKIAldLAotCSctLXdhbC1kaXJlY3RvcnkgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBXQUwg ZGlyZWN0b3J5Jyk7CisJJy0td2FsLXBhdGggY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBXQUwgZGly ZWN0b3J5Jyk7CiAKICMgTW92ZSBkaXJlY3RvcnkgYmFjayB0byBvcmlnaW5hbCBsb2NhdGlvbi4K IHJlbmFtZSgkcmVsb2NhdGVkX3BnX3dhbCwgJG9yaWdpbmFsX3BnX3dhbCkgfHwgZGllICJyZW5h bWUgcGdfd2FsIGJhY2s6ICQhIjsKLS0gCjIuNDcuMQoK --000000000000d3b226064a74fe29 Content-Type: application/x-patch; name="v12-0009-pg_verifybackup-enabled-WAL-parsing-for-tar-form.patch" Content-Disposition: attachment; filename="v12-0009-pg_verifybackup-enabled-WAL-parsing-for-tar-form.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlgel3ao8 RnJvbSA4YWJlYWRlZTQ5MGYxZDdkNzUxZDcxYzNhMTQ5MDk4NmNiZTI2ZjM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzQ6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMiA5LzldIHBn X3ZlcmlmeWJhY2t1cDogZW5hYmxlZCBXQUwgcGFyc2luZyBmb3IgdGFyLWZvcm1hdAogYmFja3Vw CgpOb3cgdGhhdCBwZ193YWxkdW1wIHN1cHBvcnRzIGRlY29kaW5nIGZyb20gdGFyIGFyY2hpdmVz LCB3ZSBzaG91bGQKbGV2ZXJhZ2UgdGhpcyBmdW5jdGlvbmFsaXR5IHRvIHJlbW92ZSB0aGUgcHJl dmlvdXMgcmVzdHJpY3Rpb24gb24gV0FMCnBhcnNpbmcgZm9yIHRhci1iYWNrZWQgZm9ybWF0cy4K LS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21sICAgICAgICAgfCAgNSAr LQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMgICAgIHwgNjYgKysr KysrKysrKysrKy0tLS0tLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDJfYWxnb3JpdGht LnBsICAgIHwgIDQgLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRpb24u cGwgICB8ICA0ICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwOF91bnRhci5wbCAgICAg ICAgfCAgNSArLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMTBfY2xpZW50X3VudGFyLnBs IHwgIDUgKy0KIDYgZmlsZXMgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwKaW5kZXggZTliOGJmZDUxYjEu LjE2YjUwYjVhNGRmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1 cC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwKQEAgLTM2 LDEwICszNiw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgPGxpdGVyYWw+YmFja3Vw X21hbmlmZXN0PC9saXRlcmFsPiBnZW5lcmF0ZWQgYnkgdGhlIHNlcnZlciBhdCB0aGUgdGltZQog ICAgb2YgdGhlIGJhY2t1cC4gVGhlIGJhY2t1cCBtYXkgYmUgc3RvcmVkIGVpdGhlciBpbiB0aGUg InBsYWluIiBvciB0aGUgInRhciIKICAgIGZvcm1hdDsgdGhpcyBpbmNsdWRlcyB0YXItZm9ybWF0 IGJhY2t1cHMgY29tcHJlc3NlZCB3aXRoIGFueSBhbGdvcml0aG0KLSAgIHN1cHBvcnRlZCBieSA8 YXBwbGljYXRpb24+cGdfYmFzZWJhY2t1cDwvYXBwbGljYXRpb24+LiBIb3dldmVyLCBhdCBwcmVz ZW50LAotICAgPGxpdGVyYWw+V0FMPC9saXRlcmFsPiB2ZXJpZmljYXRpb24gaXMgc3VwcG9ydGVk IG9ubHkgZm9yIHBsYWluLWZvcm1hdAotICAgYmFja3Vwcy4gVGhlcmVmb3JlLCBpZiB0aGUgYmFj a3VwIGlzIHN0b3JlZCBpbiB0YXItZm9ybWF0LCB0aGUKLSAgIDxsaXRlcmFsPi1uLCAtLW5vLXBh cnNlLXdhbDwvbGl0ZXJhbD4gb3B0aW9uIHNob3VsZCBiZSB1c2VkLgorICAgc3VwcG9ydGVkIGJ5 IDxhcHBsaWNhdGlvbj5wZ19iYXNlYmFja3VwPC9hcHBsaWNhdGlvbj4uCiAgIDwvcGFyYT4KIAog ICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJh Y2t1cC5jIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKaW5kZXgg MzEwM2QzNmYxYjkuLmNjNDkyNzI4YWU4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC9wZ192ZXJpZnliYWNrdXAuYworKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192 ZXJpZnliYWNrdXAuYwpAQCAtNzQsNyArNzQsOSBAQCBwZ19ub3JldHVybiBzdGF0aWMgdm9pZCBy ZXBvcnRfbWFuaWZlc3RfZXJyb3IoSnNvbk1hbmlmZXN0UGFyc2VDb250ZXh0ICpjb250ZXh0LAog CQkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmZtdCwuLi4pCiAJCQlwZ19hdHRyaWJ1dGVfcHJpbnRm KDIsIDMpOwogCi1zdGF0aWMgdm9pZCB2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJpZmllcl9jb250ZXh0 ICpjb250ZXh0LCBESVIgKmRpcik7CitzdGF0aWMgdm9pZCB2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJp Zmllcl9jb250ZXh0ICpjb250ZXh0LCBESVIgKmRpciwKKwkJCQkJCQkgIGNoYXIgKipiYXNlX2Fy Y2hpdmVfcGF0aCwKKwkJCQkJCQkgIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKTsKIHN0YXRpYyB2 b2lkIHZlcmlmeV9wbGFpbl9iYWNrdXBfZGlyZWN0b3J5KHZlcmlmaWVyX2NvbnRleHQgKmNvbnRl eHQsCiAJCQkJCQkJCQkJICBjaGFyICpyZWxwYXRoLCBjaGFyICpmdWxscGF0aCwKIAkJCQkJCQkJ CQkgIERJUiAqZGlyKTsKQEAgLTgzLDcgKzg1LDkgQEAgc3RhdGljIHZvaWQgdmVyaWZ5X3BsYWlu X2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBhdGgsCiBz dGF0aWMgdm9pZCB2ZXJpZnlfY29udHJvbF9maWxlKGNvbnN0IGNoYXIgKmNvbnRyb2xwYXRoLAog CQkJCQkJCQl1aW50NjQgbWFuaWZlc3Rfc3lzdGVtX2lkZW50aWZpZXIpOwogc3RhdGljIHZvaWQg cHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIg KnJlbHBhdGgsCi0JCQkJCQkJCQkgY2hhciAqZnVsbHBhdGgsIFNpbXBsZVB0ckxpc3QgKnRhcmZp bGVzKTsKKwkJCQkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFyZmlsZXMs CisJCQkJCQkJCQkgY2hhciAqKmJhc2VfYXJjaGl2ZV9wYXRoLAorCQkJCQkJCQkJIGNoYXIgKip3 YWxfYXJjaGl2ZV9wYXRoKTsKIHN0YXRpYyB2b2lkIHZlcmlmeV90YXJfZmlsZSh2ZXJpZmllcl9j b250ZXh0ICpjb250ZXh0LCBjaGFyICpyZWxwYXRoLAogCQkJCQkJCWNoYXIgKmZ1bGxwYXRoLCBh c3RyZWFtZXIgKnN0cmVhbWVyKTsKIHN0YXRpYyB2b2lkIHJlcG9ydF9leHRyYV9iYWNrdXBfZmls ZXModmVyaWZpZXJfY29udGV4dCAqY29udGV4dCk7CkBAIC0xMzYsNiArMTQwLDggQEAgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJYm9vbAkJbm9fcGFyc2Vfd2FsID0gZmFsc2U7CiAJYm9v bAkJcXVpZXQgPSBmYWxzZTsKIAljaGFyCSAgICp3YWxfcGF0aCA9IE5VTEw7CisJY2hhcgkgICAq YmFzZV9hcmNoaXZlX3BhdGggPSBOVUxMOworCWNoYXIJICAgKndhbF9hcmNoaXZlX3BhdGggPSBO VUxMOwogCWNoYXIJICAgKnBnX3dhbGR1bXBfcGF0aCA9IE5VTEw7CiAJRElSCQkgICAqZGlyOwog CkBAIC0zMjcsMTcgKzMzMyw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlwZnJl ZShwYXRoKTsKIAl9CiAKLQkvKgotCSAqIFhYWDogSW4gdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNv bnNpZGVyIGVuaGFuY2luZyBwZ193YWxkdW1wIHRvIHJlYWQgV0FMCi0JICogZmlsZXMgZnJvbSBh biBhcmNoaXZlLgotCSAqLwotCWlmICghbm9fcGFyc2Vfd2FsICYmIGNvbnRleHQuZm9ybWF0ID09 ICd0JykKLQl7Ci0JCXBnX2xvZ19lcnJvcigicGdfd2FsZHVtcCBjYW5ub3QgcmVhZCB0YXIgZmls ZXMiKTsKLQkJcGdfbG9nX2Vycm9yX2hpbnQoIllvdSBtdXN0IHVzZSAtbi8tLW5vLXBhcnNlLXdh bCB3aGVuIHZlcmlmeWluZyBhIHRhci1mb3JtYXQgYmFja3VwLiIpOwotCQlleGl0KDEpOwotCX0K LQogCS8qCiAJICogUGVyZm9ybSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBvZiB2ZXJpZmljYXRpb24g YXBwcm9wcmlhdGUgYmFzZWQgb24gdGhlCiAJICogYmFja3VwIGZvcm1hdC4gVGhpcyB3aWxsIGNs b3NlICdkaXInLgpAQCAtMzQ2LDcgKzM0MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogCQl2ZXJpZnlfcGxhaW5fYmFja3VwX2RpcmVjdG9yeSgmY29udGV4dCwgTlVMTCwgY29udGV4 dC5iYWNrdXBfZGlyZWN0b3J5LAogCQkJCQkJCQkJICBkaXIpOwogCWVsc2UKLQkJdmVyaWZ5X3Rh cl9iYWNrdXAoJmNvbnRleHQsIGRpcik7CisJCXZlcmlmeV90YXJfYmFja3VwKCZjb250ZXh0LCBk aXIsICZiYXNlX2FyY2hpdmVfcGF0aCwgJndhbF9hcmNoaXZlX3BhdGgpOwogCiAJLyoKIAkgKiBU aGUgIm1hdGNoZWQiIGZsYWcgc2hvdWxkIG5vdyBiZSBzZXQgb24gZXZlcnkgZW50cnkgaW4gdGhl IGhhc2ggdGFibGUuCkBAIC0zNjQsOSArMzU5LDI4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCWlmIChjb250ZXh0LmZvcm1hdCA9PSAncCcgJiYgIWNvbnRleHQuc2tpcF9jaGVja3N1 bXMpCiAJCXZlcmlmeV9iYWNrdXBfY2hlY2tzdW1zKCZjb250ZXh0KTsKIAotCS8qIEJ5IGRlZmF1 bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4gdGhlIGJhY2t1cCBkaXJlY3RvcnksIHRvby4gKi8KKwkv KgorCSAqIEJ5IGRlZmF1bHQsIFdBTCBmaWxlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgZm91bmQgaW4g dGhlIGJhY2t1cCBkaXJlY3RvcnkKKwkgKiBmb3IgcGxhaW4tZm9ybWF0IGJhY2t1cHMuIEluIHRo ZSBjYXNlIG9mIHRhci1mb3JtYXQgYmFja3VwcywgaWYgYQorCSAqIHNlcGFyYXRlIFdBTCBhcmNo aXZlIGlzIG5vdCBmb3VuZCwgdGhlIFdBTCBmaWxlcyBhcmUgbW9zdCBsaWtlbHkKKwkgKiBpbmNs dWRlZCB3aXRoaW4gdGhlIG1haW4gZGF0YSBkaXJlY3RvcnkgYXJjaGl2ZS4KKwkgKi8KIAlpZiAo d2FsX3BhdGggPT0gTlVMTCkKLQkJd2FsX3BhdGggPSBwc3ByaW50ZigiJXMvcGdfd2FsIiwgY29u dGV4dC5iYWNrdXBfZGlyZWN0b3J5KTsKKwl7CisJCWlmIChjb250ZXh0LmZvcm1hdCA9PSAncCcp CisJCQl3YWxfcGF0aCA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJl Y3RvcnkpOworCQllbHNlIGlmICh3YWxfYXJjaGl2ZV9wYXRoKQorCQkJd2FsX3BhdGggPSB3YWxf YXJjaGl2ZV9wYXRoOworCQllbHNlIGlmIChiYXNlX2FyY2hpdmVfcGF0aCkKKwkJCXdhbF9wYXRo ID0gYmFzZV9hcmNoaXZlX3BhdGg7CisJCWVsc2UKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJXQUwg YXJjaGl2ZSBub3QgZm91bmQiKTsKKwkJCXBnX2xvZ19lcnJvcl9oaW50KCJTcGVjaWZ5IHRoZSBj b3JyZWN0IHBhdGggdXNpbmcgdGhlIG9wdGlvbiAtdy8tLXdhbC1wYXRoLiAgIgorCQkJCQkJCSAg Ik9yIHlvdSBtdXN0IHVzZSAtbi8tLW5vLXBhcnNlLXdhbCB3aGVuIHZlcmlmeWluZyBhIHRhci1m b3JtYXQgYmFja3VwLiIpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KIAogCS8qCiAJICogVHJ5IHRv IHBhcnNlIHRoZSByZXF1aXJlZCByYW5nZXMgb2YgV0FMIHJlY29yZHMsIHVubGVzcyB3ZSB3ZXJl IHRvbGQKQEAgLTc4Nyw3ICs4MDEsOCBAQCB2ZXJpZnlfY29udHJvbF9maWxlKGNvbnN0IGNoYXIg KmNvbnRyb2xwYXRoLCB1aW50NjQgbWFuaWZlc3Rfc3lzdGVtX2lkZW50aWZpZXIpCiAgKiBjbG9z ZSB3aGVuIHdlJ3JlIGRvbmUgd2l0aCBpdC4KICAqLwogc3RhdGljIHZvaWQKLXZlcmlmeV90YXJf YmFja3VwKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIERJUiAqZGlyKQordmVyaWZ5X3Rhcl9i YWNrdXAodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgRElSICpkaXIsIGNoYXIgKipiYXNlX2Fy Y2hpdmVfcGF0aCwKKwkJCQkgIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKQogewogCXN0cnVjdCBk aXJlbnQgKmRpcmVudDsKIAlTaW1wbGVQdHJMaXN0IHRhcmZpbGVzID0ge05VTEwsIE5VTEx9OwpA QCAtODE2LDcgKzgzMSw4IEBAIHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRleHQgKmNv bnRleHQsIERJUiAqZGlyKQogCQkJY2hhcgkgICAqZnVsbHBhdGg7CiAKIAkJCWZ1bGxwYXRoID0g cHNwcmludGYoIiVzLyVzIiwgY29udGV4dC0+YmFja3VwX2RpcmVjdG9yeSwgZmlsZW5hbWUpOwot CQkJcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKGNvbnRleHQsIGZpbGVuYW1lLCBmdWxscGF0aCwg JnRhcmZpbGVzKTsKKwkJCXByZWNoZWNrX3Rhcl9iYWNrdXBfZmlsZShjb250ZXh0LCBmaWxlbmFt ZSwgZnVsbHBhdGgsICZ0YXJmaWxlcywKKwkJCQkJCQkJCSBiYXNlX2FyY2hpdmVfcGF0aCwgd2Fs X2FyY2hpdmVfcGF0aCk7CiAJCQlwZnJlZShmdWxscGF0aCk7CiAJCX0KIAl9CkBAIC04NzUsMTEg Kzg5MSwxMyBAQCB2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBE SVIgKmRpcikKICAqCiAgKiBUaGUgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIG1vc3Rs eSB0aGUgc2FtZSBhcyB0aGUKICAqIHZlcmlmeV9wbGFpbl9iYWNrdXBfZmlsZS4gVGhlIGFkZGl0 aW9uYWwgYXJndW1lbnQgb3V0cHV0cyBhIGxpc3Qgb2YgdmFsaWQKLSAqIHRhciBmaWxlcy4KKyAq IHRhciBmaWxlcywgYWxvbmcgd2l0aCB0aGUgZnVsbCBwYXRocyB0byB0aGUgbWFpbiBhcmNoaXZl IGFuZCB0aGUgV0FMCisgKiBkaXJlY3RvcnkgYXJjaGl2ZS4KICAqLwogc3RhdGljIHZvaWQKIHBy ZWNoZWNrX3Rhcl9iYWNrdXBfZmlsZSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpy ZWxwYXRoLAotCQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0YXJmaWxlcykK KwkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFyZmlsZXMsCisJCQkJCQkg Y2hhciAqKmJhc2VfYXJjaGl2ZV9wYXRoLCBjaGFyICoqd2FsX2FyY2hpdmVfcGF0aCkKIHsKIAlz dHJ1Y3Qgc3RhdCBzYjsKIAlPaWQJCQl0YmxzcGNfb2lkID0gSW52YWxpZE9pZDsKQEAgLTkxOCw5 ICs5MzYsMTcgQEAgcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNv bnRleHQsIGNoYXIgKnJlbHBhdGgsCiAJICogZXh0ZW5zaW9uIHN1Y2ggYXMgLmd6LCAubHo0LCBv ciAuenN0LgogCSAqLwogCWlmIChzdHJuY21wKCJiYXNlIiwgcmVscGF0aCwgNCkgPT0gMCkKKwl7 CiAJCXN1ZmZpeCA9IHJlbHBhdGggKyA0OworCisJCSpiYXNlX2FyY2hpdmVfcGF0aCA9IHBzdHJk dXAoZnVsbHBhdGgpOworCX0KIAllbHNlIGlmIChzdHJuY21wKCJwZ193YWwiLCByZWxwYXRoLCA2 KSA9PSAwKQorCXsKIAkJc3VmZml4ID0gcmVscGF0aCArIDY7CisKKwkJKndhbF9hcmNoaXZlX3Bh dGggPSBwc3RyZHVwKGZ1bGxwYXRoKTsKKwl9CiAJZWxzZQogCXsKIAkJLyogRXhwZWN0ZWQgYSA8 dGFibGVzcGFjZW9pZD4udGFyIGZpbGUgaGVyZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf dmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbCBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3QvMDAyX2FsZ29yaXRobS5wbAppbmRleCAwNTU2MTkxZWM5ZC4uZWRjNTE1ZDU5MDQgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbAorKysgYi9z cmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwMl9hbGdvcml0aG0ucGwKQEAgLTMwLDEwICszMCw2 IEBAIHN1YiB0ZXN0X2NoZWNrc3VtcwogCXsKIAkJIyBBZGQgc3dpdGNoIHRvIGdldCBhIHRhci1m b3JtYXQgYmFja3VwCiAJCXB1c2ggQGJhY2t1cCwgKCctLWZvcm1hdCcgPT4gJ3RhcicpOwotCi0J CSMgQWRkIHN3aXRjaCB0byBza2lwIFdBTCB2ZXJpZmljYXRpb24sIHdoaWNoIGlzIG5vdCB5ZXQg c3VwcG9ydGVkIGZvcgotCQkjIHRhci1mb3JtYXQgYmFja3VwcwotCQlwdXNoIEB2ZXJpZnksICgn LS1uby1wYXJzZS13YWwnKTsKIAl9CiAKIAkjIEEgYmFja3VwIHdpdGggYSBib2d1cyBhbGdvcml0 aG0gc2hvdWxkIGZhaWwuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAw M19jb3JydXB0aW9uLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlv bi5wbAppbmRleCBiMWQ2NWI4YWEwZi4uODgyZDc1ZDlkYzIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfdmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRpb24ucGwKKysrIGIvc3JjL2Jpbi9wZ192ZXJp ZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5wbApAQCAtMTkzLDEwICsxOTMsOCBAQCBmb3IgbXkg JHNjZW5hcmlvIChAc2NlbmFyaW8pCiAJCQljb21tYW5kX29rKFsgJHRhciwgJy1jZicgPT4gIiR0 YXJfYmFja3VwX3BhdGgvYmFzZS50YXIiLCAnLicgXSk7CiAJCQljaGRpcigkY3dkKSB8fCBkaWUg ImNoZGlyOiAkISI7CiAKLQkJCSMgTm93IGNoZWNrIHRoYXQgdGhlIGJhY2t1cCBubyBsb25nZXIg dmVyaWZpZXMuIFdlIG11c3QgdXNlIC1uCi0JCQkjIGhlcmUsIGJlY2F1c2UgcGdfd2FsZHVtcCBj YW4ndCB5ZXQgcmVhZCBXQUwgZnJvbSBhIHRhcmZpbGUuCiAJCQljb21tYW5kX2ZhaWxzX2xpa2Uo Ci0JCQkJWyAncGdfdmVyaWZ5YmFja3VwJywgJy0tbm8tcGFyc2Utd2FsJywgJHRhcl9iYWNrdXBf cGF0aCBdLAorCQkJCVsgJ3BnX3ZlcmlmeWJhY2t1cCcsICR0YXJfYmFja3VwX3BhdGggXSwKIAkJ CQkkc2NlbmFyaW8tPnsnZmFpbHNfbGlrZSd9LAogCQkJCSJjb3JydXB0IGJhY2t1cCBmYWlscyB2 ZXJpZmljYXRpb246ICRuYW1lIik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFj a3VwL3QvMDA4X3VudGFyLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDhfdW50YXIu cGwKaW5kZXggYWU2N2FlODVhMzEuLjE2MWMwOGMxOTBkIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X3ZlcmlmeWJhY2t1cC90LzAwOF91bnRhci5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1 cC90LzAwOF91bnRhci5wbApAQCAtNDcsNyArNDcsNiBAQCBteSAkdHNvaWQgPSAkcHJpbWFyeS0+ c2FmZV9wc3FsKAogCQlTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1l ID0gJ3JlZ3Jlc3NfdHMxJykpOwogCiBteSAkYmFja3VwX3BhdGggPSAkcHJpbWFyeS0+YmFja3Vw X2RpciAuICcvc2VydmVyLWJhY2t1cCc7Ci1teSAkZXh0cmFjdF9wYXRoID0gJHByaW1hcnktPmJh Y2t1cF9kaXIgLiAnL2V4dHJhY3RlZC1iYWNrdXAnOwogCiBteSBAdGVzdF9jb25maWd1cmF0aW9u ID0gKAogCXsKQEAgLTEyMywxNCArMTIyLDEyIEBAIGZvciBteSAkdGMgKEB0ZXN0X2NvbmZpZ3Vy YXRpb24pCiAJCSMgVmVyaWZ5IHRhciBiYWNrdXAuCiAJCSRwcmltYXJ5LT5jb21tYW5kX29rKAog CQkJWwotCQkJCSdwZ192ZXJpZnliYWNrdXAnLCAnLS1uby1wYXJzZS13YWwnLAotCQkJCSctLWV4 aXQtb24tZXJyb3InLCAkYmFja3VwX3BhdGgsCisJCQkJJ3BnX3ZlcmlmeWJhY2t1cCcsICctLWV4 aXQtb24tZXJyb3InLCAkYmFja3VwX3BhdGgsCiAJCQldLAogCQkJInZlcmlmeSBiYWNrdXAsIGNv bXByZXNzaW9uICRtZXRob2QiKTsKIAogCQkjIENsZWFudXAuCiAJCXJtdHJlZSgkYmFja3VwX3Bh dGgpOwotCQlybXRyZWUoJGV4dHJhY3RfcGF0aCk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50YXIucGwgYi9zcmMvYmluL3BnX3Zl cmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50YXIucGwKaW5kZXggMWFjN2I1ZGI3NWEuLjk2NzBm YmU0ZmRhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRf dW50YXIucGwKKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMTBfY2xpZW50X3VudGFy LnBsCkBAIC0zMiw3ICszMiw2IEBAIHByaW50ICRqZiAkanVua19kYXRhOwogY2xvc2UgJGpmOwog CiBteSAkYmFja3VwX3BhdGggPSAkcHJpbWFyeS0+YmFja3VwX2RpciAuICcvY2xpZW50LWJhY2t1 cCc7Ci1teSAkZXh0cmFjdF9wYXRoID0gJHByaW1hcnktPmJhY2t1cF9kaXIgLiAnL2V4dHJhY3Rl ZC1iYWNrdXAnOwogCiBteSBAdGVzdF9jb25maWd1cmF0aW9uID0gKAogCXsKQEAgLTEzNywxMyAr MTM2LDExIEBAIGZvciBteSAkdGMgKEB0ZXN0X2NvbmZpZ3VyYXRpb24pCiAJCSMgVmVyaWZ5IHRh ciBiYWNrdXAuCiAJCSRwcmltYXJ5LT5jb21tYW5kX29rKAogCQkJWwotCQkJCSdwZ192ZXJpZnli YWNrdXAnLCAnLS1uby1wYXJzZS13YWwnLAotCQkJCSctLWV4aXQtb24tZXJyb3InLCAkYmFja3Vw X3BhdGgsCisJCQkJJ3BnX3ZlcmlmeWJhY2t1cCcsICctLWV4aXQtb24tZXJyb3InLCAkYmFja3Vw X3BhdGgsCiAJCQldLAogCQkJInZlcmlmeSBiYWNrdXAsIGNvbXByZXNzaW9uICRtZXRob2QiKTsK IAogCQkjIENsZWFudXAuCi0JCXJtdHJlZSgkZXh0cmFjdF9wYXRoKTsKIAkJcm10cmVlKCRiYWNr dXBfcGF0aCk7CiAJfQogfQotLSAKMi40Ny4xCgo= --000000000000d3b226064a74fe29--