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 1vO8cc-00BjpY-1M for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Nov 2025 06:03:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vO8cZ-00EDjB-2M for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Nov 2025 06:03:20 +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 1vO8cY-00EDj0-2g for pgsql-hackers@lists.postgresql.org; Wed, 26 Nov 2025 06:03:19 +0000 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vO8cV-001WDk-39 for pgsql-hackers@lists.postgresql.org; Wed, 26 Nov 2025 06:03:18 +0000 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-29812589890so74239825ad.3 for ; Tue, 25 Nov 2025 22:03:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764136996; x=1764741796; 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=4fvggqp+HU6Shgtdf9KnfVU5gwli0bbl6AOTA04o2bE=; b=POhRantfubcjvSYY4EtilOD0iHTICPv4eH92mCH1w5cGuAzcBwtwjpjEEE0Zz/LtEI Ar2kEGrLHiuV1HpsXk+EsyDT6tyo2FfI4iRAgo/WMqbOiVG35oXxsh23EDxWAMX4kHOl O1rvihlPwP84BvHJA8wepgq6OnzttzzdE/s4u4B4vIRMJdEtR+vvHbFjyWh3zaip5jv3 Ze2RSd0mIWGIvlwjNlRb4DkZMR3mpI2RAPlf4qZ1CZJcZpfwog1qnWT4yk3adzZbDwR1 YcGnGXXPuRZEDZfLtqW3UMg7mN9JHtsQbYtoQD6BZjhM+j00jsWfqoRNEtbDeBHds4lt 4OVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764136996; x=1764741796; 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=4fvggqp+HU6Shgtdf9KnfVU5gwli0bbl6AOTA04o2bE=; b=l9TIN/+Wa4d2jQqZV1z/fZU8HhPE8nEWlS5s91xXukz3u6/Mq4mQ21J8BFsefSdEeh tZjHuXgz9o+zuulyiSqYWA7P9LiqThDuGAtYInndIU0xLICuNGqTpcllQp8SHUEfO9CW 33InClCdwe0yWNlOGYd88ItZ+hVFJHBG7OAeeSfpnWkKowl1nUD9/Z1V732RqkfH+7Xb FHnhxFMC7UfXk6S+gM2nzsr+zZBNEJUWWt1dzvGeAS6tVubxVMKUkaZ+7jmmPzvvma9R FJ2B6M0R7ELWC66StdHYaazdCTYaUyJMRBFDybSfF3Z1eDwHrLvdpb3DnPCbexTp1Pql J6WQ== X-Forwarded-Encrypted: i=1; AJvYcCWf0aKrgM375PpDQMPCKpXcNyreB0aoPv5Gz4xIaQz2Bmp/RcCVOYVwO5FGm16G4hveQsOnVhwKJWOSIfAB@lists.postgresql.org X-Gm-Message-State: AOJu0YzOTNMBsi9AdP8YkD/nr2CVKFq+9zcixSvFqEXxmlM2kBGzQaE4 pKa+sv8U6KsuLLOhanJzoHkI1L2OSkib6Hb0Bq1xqTMB5H2d/olwHhf646bFH+NS3Q3HX/qKhLa ceEmeqAzkyhVX3f5vSJt3E9ilJ//HZyY= X-Gm-Gg: ASbGnctxoLZ/0C3QtIjqJRUizqfX/uGt6WfYI3FhaPzlf2g4HpC51/+22gIgNN0lh6o lg7bE2hTX0sAELdQqrhCzjV0ytsMAY9YeRkg87XvEEk9cNREfvC56xK3OfXECpGF2c8XZNLSH69 hZaIv9jz1Cik5DWP/EB6ghz7gbcsHra4DJUeYzrAKZAyJizMc91n57s4dnAybK/oLkJdliL30gi LbIlVjIqaFZA/141fuYj/Ytz0pjRaX/Sn34eRCC5xDjy0yrRy7cSQU15R8/xyufDuKovPY7gExB vL6HmaPZ X-Google-Smtp-Source: AGHT+IEWv9p4Pv/ounfPBI3O7uAZbdghvemwy6ACPvG3KXvXU2WZRr20Z3IVVz61FJPNzzBQTyTkPV3c0hVE29dUB48= X-Received: by 2002:a17:903:1b6f:b0:298:2237:a2eb with SMTP id d9443c01a7336-29b6bead62dmr189765755ad.16.1764136995559; Tue, 25 Nov 2025 22:03:15 -0800 (PST) MIME-Version: 1.0 References: <731ADE6F-01C5-4996-BAEE-5851DFC3F502@gmail.com> In-Reply-To: <731ADE6F-01C5-4996-BAEE-5851DFC3F502@gmail.com> From: Amul Sul Date: Wed, 26 Nov 2025 11:32:04 +0530 X-Gm-Features: AWmQ_bl3fytU1j-uNndViKRbWKG3BUwZm84uWgI-lCPDHKYBSY4acMZBAZsnSs4 Message-ID: Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Chao Li Cc: Jakub Wartak , Robert Haas , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000f4c5340644792656" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f4c5340644792656 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Nov 25, 2025 at 2:21=E2=80=AFPM Chao Li wr= ote: > > Hi Amul, > > I reviewed the patch and got some comments: > Thanks for the review. Replying inline below. > 1 - 0001 - pg_waldump.h > ``` > + * pg_waldump.h - decode and display WAL > + * > + * Copyright (c) 2013-2025, PostgreSQL Global Development Group > ``` > > This header file is brand new, so copyright year should be only 2025. > Fixed in the attached version. > 2 - 0001 - pg_waldump.c > ``` > -static int WalSegSz; > +int WalSegSz =3D DEFAULT_XLOG_SEG_SIZE; > ``` > > 0001 claims a refactoring, but if you initialize WalSegSz with DEFAULT_XL= OG_SEG_SIZE, then the behavior is changing, this change is no longer a pure= refactor. > > I would suggest leave WalSegSz uninitiated (compiler will set 0 to it), t= hen no behavior change, so that 0001 stays a self-contained pure refactor. > Agreed. > The other nit thing is that, as =E2=80=9Cstatic=E2=80=9D is removed, now = =E2=80=9CWalSegSz=E2=80=9D is placed in middle of two static variables, whi= ch looks not good. If I were making the code change, I would have moved Wal= SegSz to after all static variables. > I placed it before the static declaration. > 3 - 0002 > ``` > @@ -383,21 +406,11 @@ WALDumpReadPage(XLogReaderState *state, XLogRecPtr = targetPagePtr, int reqLen, > XLogRecPtr targetPtr, char *readBuff) > { > XLogDumpPrivate *private =3D state->private_data; > - int count =3D XLOG_BLCKSZ; > + int count =3D required_read_len(private, targ= etPagePtr, reqLen); > WALReadError errinfo; > > - if (XLogRecPtrIsValid(private->endptr)) > - { > - if (targetPagePtr + XLOG_BLCKSZ <=3D private->endptr) > - count =3D XLOG_BLCKSZ; > - else if (targetPagePtr + reqLen <=3D private->endptr) > - count =3D private->endptr - targetPagePtr; > - else > - { > - private->endptr_reached =3D true; > - return -1; > - } > - } > + if (private->endptr_reached) > + return -1; > ``` > > This change introduces a logic hole. In old code, it sets private->endptr= _reached =3D true; and return -1. In the code code, count and private->endp= tr_reached assignments are wrapped into required_read_len(). However, requi= red_read_len() doesn=E2=80=99t check if private->endptr_reached has already= been true, so that the logic hole is that, if private->endptr_reached is a= lready true when calling required_read_len(), and required_read_len() retur= ns a positive count, if (private->endptr_reached) will also be satisfied an= d return -1 from the function. > > So, to be safe, we should check =E2=80=9Cif (count < 0) return -1=E2=80= =9D. > I do not really understand the logical hole where the behaviour is the same as the previous, but I like the idea of checking endptr_reached. This is quite unlikely to be true, but it looks like good practice to check that flag before setting it. Did it that way in the attached version. > 4 - 0002 > ``` > +/* Returns the size in bytes of the data to be read. */ > +static inline int > +required_read_len(XLogDumpPrivate *private, XLogRecPtr targetPagePtr, > + int reqLen) > +{ > ``` > > The function comment is too simple. It doesn=E2=80=99t cover the case whe= re -1 is returned. > Okay. > 5 - 0003 > ``` > +my @scenario =3D ( > + { > + 'path' =3D> $node->data_dir > + }); > > -@lines =3D test_pg_waldump('--limit' =3D> 6); > -is(@lines, 6, 'limit option observed'); > +for my $scenario (@scenario) > +{ > ``` > > "my @scenario=E2=80=9D should be "my @scenarios=E2=80=9D, so that for lin= e become "for my $scenario (@scenarios)=E2=80=9D, a little bit clearer. > Done. > 6 - 0003 > ``` > + SKIP: > + { > ``` > > Why SKIP label is defined here? A SKIP label usually follows a skip state= ment, for example: in bin/pg_ctl/t/001_start_stop.pl > ``` > SKIP: > { > skip "unix-style permissions not supported on Windows", 2 > if ($windows_os); > > ok(-f $logFileName); > ok(check_mode_recursive("$tempdir/data", 0700, 0600)); > } > ``` > Yeah, I knew that, but that is needed in the next patch where I wanted to avoid a large diff when introducing SKIP and the associated indentation. This patch is not expected to be committed independently, and I have added a note in the commit message for the same. > 7 - 0004 - Makefile > ``` > $(WIN32RES) \ > compat.o \ > pg_waldump.o \ > + archive_waldump.o \ > rmgrdesc.o \ > xlogreader.o \ > xlogstats.o > ``` > > Obviously the list was in alphabetical order, so archive_waldump.o should= be placed before compat.o. > Done. > 8 - 0004 > ``` > +/* > + * pg_waldump's XLogReaderRoutine->page_read callback to support dumping= WAL > + * files from tar archives. > + */ > +static int > +TarWALDumpReadPage(XLogReaderState *state, XLogRecPtr targetPagePtr, int= reqLen, > + XLogRecPtr targetPtr, char *readBuff) > +{ > + XLogDumpPrivate *private =3D state->private_data; > + int count =3D required_read_len(private, targ= etPagePtr, reqLen); > ``` > > Looking the page_read=E2=80=99s spec: > ``` > /* > * Data input callback > * > * This callback shall read at least reqLen valid bytes of the xl= og page > * starting at targetPagePtr, and store them in readBuf. The cal= lback > * shall return the number of bytes read (never more than XLOG_BL= CKSZ), or > * -1 on failure. The callback shall sleep, if necessary, to wai= t for the > * requested bytes to become available. The callback will not be= invoked > * again for the same page unless more than the returned number o= f bytes > * are needed. > * > * targetRecPtr is the position of the WAL record we're reading. = Usually > * it is equal to targetPagePtr + reqLen, but sometimes xlogreade= r needs > * to read and verify the page or segment header, before it reads= the > * actual WAL record it's interested in. In that case, targetRec= Ptr can > * be used to determine which timeline to read the page from. > * > * The callback shall set ->seg.ws_tli to the TLI of the file the= page was > * read from. > */ > XLogPageReadCB page_read; > ``` > > It says that page_read must read reqLen bytes, otherwise it should wait f= or more bytes. > > However, just calculate how many bytes can read and only read that long, which breaks the protocol. Is it a problem? > The behaviour is the same as the routine used to read the bare WAL file. I don't think there will be any problem for the pg_waldump. > 9 - 0004 > ``` > +/* > + * Create an astreamer that can read WAL from tar file. > + */ > +static astreamer * > +astreamer_waldump_new(XLogDumpPrivate *privateInfo) > +{ > + astreamer_waldump *streamer; > + > + streamer =3D palloc0(sizeof(astreamer_waldump)); > + *((const astreamer_ops **) &streamer->base.bbs_ops) =3D > + &astreamer_waldump_ops; > + > + streamer->privateInfo =3D privateInfo; > + > + return &streamer->base; > +} > ``` > > This function allocates memory for streamer but only returns &streamer->b= ase, so memory of streamer is leaked. > May I know why you think there would be a memory leak? I believe the address of the structure is the same as the address of its first member, base. I am returning base because the goal is to return a generic astreamer type, which is the standard approach used in other archive streamer code. > Also, in the function comment, =E2=80=9Cfrom tar file=E2=80=9D =3D> =E2= =80=9Cfrom a tar file=E2=80=9D. > > 10 - 0004 > ``` > + * End-of-stream processing for a astreamer_waldump stream. > ``` > > Nit typo: a =3D> an > Done. > 11 - 0004 > ``` > + if (!IsValidWalSegSize(WalSegSz)) > + { > + pg_log_error(ngettext("invalid WAL segment size in WAL fi= le from archive \"%s\" (%d byte)", > + "invalid WAL se= gment size in WAL file from archive \"%s\" (%d bytes)", > + WalSegSz), > + privateInfo->archive_name, WalSe= gSz); > + pg_log_error_detail("The WAL segment size must be a power= of two between 1 MB and 1 GB."); > + exit(1); > + } > ``` > > Why don=E2=80=99t pg_fatal()? > This is how we do when we need to emit error details as well. > 12 - 0005 > ``` > + /* Create a temporary file if one does not already exist = */ > + if (!entry->tmpseg_exists) > + { > + write_fp =3D prepare_tmp_write(entry->segno); > + entry->tmpseg_exists =3D true; > + } > + > + /* Flush data from the buffer to the file */ > + perform_tmp_write(entry->segno, &entry->buf, write_fp); > + resetStringInfo(&entry->buf); > + > + /* > + * The change in the current segment entry indicates that= the reading > + * of this file has ended. > + */ > + if (entry !=3D privateInfo->cur_wal && write_fp !=3D NULL= ) > + { > + fclose(write_fp); > + write_fp =3D NULL; > + } > ``` > > When entry->tmpseg_exists is true, then write_fp will not be initialized,= but there should be a check to make sure write_fp is not NULL before perfo= rm_tmp_write(). > perform_tmp_write() has assert for the same. > Also, if write_fp !=3D NULL, should we anyway close the file without cons= idering entry !=3D privateInfo->cur_wal? Otherwise write_fp may be left ope= n. > We read the WAL from the tar file in chunks, and those same chunks are written to the temporary file within the loop. If we close the temporary file now, we will have to open it again later for the next chunk write. Could you elaborate on a scenario where you believe this file might be left open unintentionally? > 13 - 0005 > ``` > + * Use the directory specified by the TEMDIR environment variable= . If it=E2=80=99s > ``` > > Typo: TEMDIR =3D> TMPDIR > Done. > 14 - 0005 > ``` > + * Set up a temporary directory to temporarily store WAL segments. > ``` > > temporary and temporarily are redundant. > I believe that is grammatically correct and clear. > No comment for 0007. > > 15 - 0007 > > I wonder why we need to manually po files? This is the first time I see a= patch including po file changes. > Okay, I included that initially to ensure the PO file update wasn't overlooked during commit. I have removed it to minimize the diff and added the note in the patch commit message. > 16 - 0008 > ``` > + { > + pg_log_error("wal archive not found"); > + pg_log_error_hint("Specify the correct path using= the option -w/--wal-path." > + "Or you must us= e -n/--no-parse-wal when verifying a tar-format backup."); > + exit(1); > + } > ``` > > =E2=80=9Cwal=E2=80=9D should be =E2=80=9CWAL=E2=80=9D. > > In the hint message, there should be a white space between the two senten= ces. > Done. Thanks again for your review comments; they are quite helpful. Kindly take a look at the attached version. Regards, Amul --000000000000f4c5340644792656 Content-Type: application/x-patch; name="v9-0001-Refactor-pg_waldump-Move-some-declarations-to-new.patch" Content-Disposition: attachment; filename="v9-0001-Refactor-pg_waldump-Move-some-declarations-to-new.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miflf3zr0 RnJvbSAzODMyMmI3ZTUwNjJmN2M0NWY0N2UwOTY1NWExYzk2NGU5ZWViNjhiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjQgSnVuIDIwMjUgMTE6MzM6MjAgKzA1MzAKU3ViamVjdDogW1BBVENIIHY5IDEvOF0gUmVm YWN0b3I6IHBnX3dhbGR1bXA6IE1vdmUgc29tZSBkZWNsYXJhdGlvbnMgdG8gbmV3CiBwZ193YWxk dW1wLmgKClRoaXMgY2hhbmdlIHByZXBhcmVzIGZvciBhIHNlY29uZCBzb3VyY2UgZmlsZSBpbiB0 aGlzIGRpcmVjdG9yeSB0bwpzdXBwb3J0IHJlYWRpbmcgV0FMIGZyb20gdGFyIGZpbGVzLiBDb21t b24gc3RydWN0dXJlcywgZGVjbGFyYXRpb25zLAphbmQgZnVuY3Rpb25zIGFyZSBiZWluZyBleHBv cnRlZCB0aHJvdWdoIHRoaXMgaW5jbHVkZSBmaWxlIHNvCnRoZXkgY2FuIGJlIHVzZWQgaW4gYm90 aCBmaWxlcy4KLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIHwgMTIgKysrLS0t LS0tLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIHwgMjcgKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDkgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1 bXAuaAoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgYi9zcmMv YmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCmluZGV4IGM2ZDZiYTc5ZTQ0Li42NjgwMjgwZGJi YyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYworKysgYi9zcmMv YmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi Y29tbW9uL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJjb21tb24vcmVscGF0aC5oIgogI2luY2x1ZGUg ImdldG9wdF9sb25nLmgiCisjaW5jbHVkZSAicGdfd2FsZHVtcC5oIgogI2luY2x1ZGUgInJtZ3Jk ZXNjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZwYWdlLmgiCiAKQEAgLTM3LDIxICszOCwxNCBA QAogICogZ2l2ZSBhIHRob3VnaHQgYWJvdXQgZG9pbmcgdGhlIHNhbWUgaW4gcGdfd2FsaW5zcGVj dCBjb250cmliIG1vZHVsZSBhcyB3ZWxsLgogICovCiAKK2ludAkJCVdhbFNlZ1N6OworCiBzdGF0 aWMgY29uc3QgY2hhciAqcHJvZ25hbWU7CiAKLXN0YXRpYyBpbnQJV2FsU2VnU3o7CiBzdGF0aWMg dm9sYXRpbGUgc2lnX2F0b21pY190IHRpbWVfdG9fc3RvcCA9IGZhbHNlOwogCiBzdGF0aWMgY29u c3QgUmVsRmlsZUxvY2F0b3IgZW1wdHlSZWxGaWxlTG9jYXRvciA9IHswLCAwLCAwfTsKIAotdHlw ZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2YXRlCi17Ci0JVGltZUxpbmVJRAl0aW1lbGluZTsKLQlY TG9nUmVjUHRyCXN0YXJ0cHRyOwotCVhMb2dSZWNQdHIJZW5kcHRyOwotCWJvb2wJCWVuZHB0cl9y ZWFjaGVkOwotfSBYTG9nRHVtcFByaXZhdGU7Ci0KIHR5cGVkZWYgc3RydWN0IFhMb2dEdW1wQ29u ZmlnCiB7CiAJLyogZGlzcGxheSBvcHRpb25zICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dh bGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTI2ZDUyOWY5ZDYKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCkBAIC0wLDAgKzEsMjcg QEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3dhbGR1bXAuaCAtIGRlY29kZSBhbmQg ZGlzcGxheSBXQUwKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQkgIHNyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVm IFBHX1dBTERVTVBfSAorI2RlZmluZSBQR19XQUxEVU1QX0gKKworI2luY2x1ZGUgImFjY2Vzcy94 bG9nZGVmcy5oIgorCitleHRlcm4gaW50CVdhbFNlZ1N6OworCisvKiBDb250YWlucyB0aGUgbmVj ZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGRyaXZlIFdBTCBkZWNvZGluZyAqLwordHlwZWRlZiBzdHJ1 Y3QgWExvZ0R1bXBQcml2YXRlCit7CisJVGltZUxpbmVJRAl0aW1lbGluZTsKKwlYTG9nUmVjUHRy CXN0YXJ0cHRyOworCVhMb2dSZWNQdHIJZW5kcHRyOworCWJvb2wJCWVuZHB0cl9yZWFjaGVkOwor fSBYTG9nRHVtcFByaXZhdGU7CisKKyNlbmRpZgkJCQkJCQkvKiBlbmQgb2YgUEdfV0FMRFVNUF9I ICovCi0tIAoyLjQ3LjEKCg== --000000000000f4c5340644792656 Content-Type: application/x-patch; name="v9-0002-Refactor-pg_waldump-Separate-logic-used-to-calcul.patch" Content-Disposition: attachment; filename="v9-0002-Refactor-pg_waldump-Separate-logic-used-to-calcul.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miflf91p1 RnJvbSAwMWQxNDRmZThhZjRkNDIzMmI0YjA0M2MyZWYxMWIwN2Q3ODViNGJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjYgSnVuIDIwMjUgMTE6NDI6NTMgKzA1MzAKU3ViamVjdDogW1BBVENIIHY5IDIvOF0gUmVm YWN0b3I6IHBnX3dhbGR1bXA6IFNlcGFyYXRlIGxvZ2ljIHVzZWQgdG8gY2FsY3VsYXRlCiB0aGUg cmVxdWlyZWQgcmVhZCBzaXplLgoKVGhpcyByZWZhY3RvcmluZyBwcmVwYXJlcyB0aGUgY29kZWJh c2UgZm9yIGFuIHVwY29taW5nIHBhdGNoIHRoYXQgd2lsbApzdXBwb3J0IHJlYWRpbmcgV0FMIGZy b20gdGFyIGZpbGVzLiBUaGUgbG9naWMgZm9yIGNhbGN1bGF0aW5nIHRoZQpyZXF1aXJlZCByZWFk IHNpemUgaGFzIGJlZW4gdXBkYXRlZCB0byBoYW5kbGUgYm90aCBub3JtYWwgV0FMIGZpbGVzCmFu ZCBXQUwgZmlsZXMgbG9jYXRlZCBpbnNpZGUgYSB0YXIgYXJjaGl2ZS4KLS0tCiBzcmMvYmluL3Bn X3dhbGR1bXAvcGdfd2FsZHVtcC5jIHwgNDYgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdf d2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggNjY4MDI4MGRiYmMuLjJjMTFlMGU1Y2ExIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdf d2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTMyNyw2ICszMjcsMzUgQEAgaWRlbnRpZnlfdGFyZ2V0 X2RpcmVjdG9yeShjaGFyICpkaXJlY3RvcnksIGNoYXIgKmZuYW1lKQogCXJldHVybiBOVUxMOwkJ CQkvKiBub3QgcmVhY2hlZCAqLwogfQogCisvKgorICogUmV0dXJucyB0aGUgc2l6ZSBpbiBieXRl cyBvZiB0aGUgZGF0YSB0byBiZSByZWFkLiBSZXR1cm5zIC0xIGlmIHRoZSBlbmQKKyAqIHBvaW50 IGhhcyBhbHJlYWR5IGJlZW4gcmVhY2hlZC4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK3JlcXVp cmVkX3JlYWRfbGVuKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQ YWdlUHRyLAorCQkJCSAgaW50IHJlcUxlbikKK3sKKwlpbnQJCQljb3VudCA9IFhMT0dfQkxDS1Na OworCisJaWYgKHVubGlrZWx5KHByaXZhdGUtPmVuZHB0cl9yZWFjaGVkKSkKKwkJcmV0dXJuIC0x OworCisJaWYgKFhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUtPmVuZHB0cikpCisJeworCQlpZiAo dGFyZ2V0UGFnZVB0ciArIFhMT0dfQkxDS1NaIDw9IHByaXZhdGUtPmVuZHB0cikKKwkJCWNvdW50 ID0gWExPR19CTENLU1o7CisJCWVsc2UgaWYgKHRhcmdldFBhZ2VQdHIgKyByZXFMZW4gPD0gcHJp dmF0ZS0+ZW5kcHRyKQorCQkJY291bnQgPSBwcml2YXRlLT5lbmRwdHIgLSB0YXJnZXRQYWdlUHRy OworCQllbHNlCisJCXsKKwkJCXByaXZhdGUtPmVuZHB0cl9yZWFjaGVkID0gdHJ1ZTsKKwkJCXJl dHVybiAtMTsKKwkJfQorCX0KKworCXJldHVybiBjb3VudDsKK30KKwogLyogcGdfd2FsZHVtcCdz IFhMb2dSZWFkZXJSb3V0aW5lLT5zZWdtZW50X29wZW4gY2FsbGJhY2sgKi8KIHN0YXRpYyB2b2lk CiBXQUxEdW1wT3BlblNlZ21lbnQoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1NlZ05vIG5l eHRTZWdObywKQEAgLTM4NCwyMSArNDEzLDEyIEBAIFdBTER1bXBSZWFkUGFnZShYTG9nUmVhZGVy U3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsIGludCByZXFMZW4sCiAJCQkJ WExvZ1JlY1B0ciB0YXJnZXRQdHIsIGNoYXIgKnJlYWRCdWZmKQogewogCVhMb2dEdW1wUHJpdmF0 ZSAqcHJpdmF0ZSA9IHN0YXRlLT5wcml2YXRlX2RhdGE7Ci0JaW50CQkJY291bnQgPSBYTE9HX0JM Q0tTWjsKKwlpbnQJCQljb3VudCA9IHJlcXVpcmVkX3JlYWRfbGVuKHByaXZhdGUsIHRhcmdldFBh Z2VQdHIsIHJlcUxlbik7CiAJV0FMUmVhZEVycm9yIGVycmluZm87CiAKLQlpZiAoWExvZ1JlY1B0 cklzVmFsaWQocHJpdmF0ZS0+ZW5kcHRyKSkKLQl7Ci0JCWlmICh0YXJnZXRQYWdlUHRyICsgWExP R19CTENLU1ogPD0gcHJpdmF0ZS0+ZW5kcHRyKQotCQkJY291bnQgPSBYTE9HX0JMQ0tTWjsKLQkJ ZWxzZSBpZiAodGFyZ2V0UGFnZVB0ciArIHJlcUxlbiA8PSBwcml2YXRlLT5lbmRwdHIpCi0JCQlj b3VudCA9IHByaXZhdGUtPmVuZHB0ciAtIHRhcmdldFBhZ2VQdHI7Ci0JCWVsc2UKLQkJewotCQkJ cHJpdmF0ZS0+ZW5kcHRyX3JlYWNoZWQgPSB0cnVlOwotCQkJcmV0dXJuIC0xOwotCQl9Ci0JfQor CS8qIEJhaWwgb3V0IGlmIHRoZSBjb3VudCB0byBiZSByZWFkIGlzIG5vdCB2YWxpZCAqLworCWlm IChjb3VudCA8IDApCisJCXJldHVybiAtMTsKIAogCWlmICghV0FMUmVhZChzdGF0ZSwgcmVhZEJ1 ZmYsIHRhcmdldFBhZ2VQdHIsIGNvdW50LCBwcml2YXRlLT50aW1lbGluZSwKIAkJCQkgJmVycmlu Zm8pKQotLSAKMi40Ny4xCgo= --000000000000f4c5340644792656 Content-Type: application/x-patch; name="v9-0003-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Disposition: attachment; filename="v9-0003-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miflfcyz2 RnJvbSA2MGI0YzMzYjliOTVjM2QyNGE4MjAwZGFlNWNiYzc1YmIwOWRhZWY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTY6MTI6MTEgKzA1MzAKU3ViamVjdDogW1BBVENIIHY5IDMvOF0gUmVm YWN0b3I6IHBnX3dhbGR1bXA6IFJlc3RydWN0dXJlIFRBUCB0ZXN0cy4KClJlc3RydWN0dXJlZCBz b21lIHRlc3RzIHRvIHJ1biBpbnNpZGUgYSBsb29wLCBmYWNpbGl0YXRpbmcgdGhlaXIKcmUtZXhl Y3V0aW9uIGZvciBkZWNvZGluZyBXQUwgZnJvbSB0YXIgYXJjaGl2ZXMuCgo9PSBOT1RFID09CiAg VGhpcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgY29tbWl0dGVkIHNlcGFyYXRlbHkuIEl0IGNhbiBi ZSBtZXJnZWQKICB3aXRoIHRoZSBuZXh0IHBhdGNoLCB3aGljaCBpcyB0aGUgbWFpbiBwYXRjaCBp bXBsZW1lbnRpbmcgdGhpcwogIGZlYXR1cmUuCi0tLQogc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAx X2Jhc2ljLnBsIHwgMTIzICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbCBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAw MV9iYXNpYy5wbAppbmRleCBmMjZkNzVlMDFjZi4uYzhmZGM3Y2I0ZjMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAv dC8wMDFfYmFzaWMucGwKQEAgLTE5OCwyOCArMTk4LDYgQEAgY29tbWFuZF9saWtlKAogCV0sCiAJ cXIvLi8sCiAJJ3J1bnMgd2l0aCBzdGFydCBhbmQgZW5kIHNlZ21lbnQgc3BlY2lmaWVkJyk7Ci1j b21tYW5kX2ZhaWxzX2xpa2UoCi0JWyAncGdfd2FsZHVtcCcsICctLXBhdGgnID0+ICRub2RlLT5k YXRhX2RpciBdLAotCXFyL2Vycm9yOiBubyBzdGFydCBXQUwgbG9jYXRpb24gZ2l2ZW4vLAotCSdw YXRoIG9wdGlvbiByZXF1aXJlcyBzdGFydCBsb2NhdGlvbicpOwotY29tbWFuZF9saWtlKAotCVsK LQkJJ3BnX3dhbGR1bXAnLAotCQknLS1wYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCi0JCSctLXN0 YXJ0JyA9PiAkc3RhcnRfbHNuLAotCQknLS1lbmQnID0+ICRlbmRfbHNuLAotCV0sCi0JcXIvLi8s Ci0JJ3J1bnMgd2l0aCBwYXRoIG9wdGlvbiBhbmQgc3RhcnQgYW5kIGVuZCBsb2NhdGlvbnMnKTsK LWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlbCi0JCSdwZ193YWxkdW1wJywKLQkJJy0tcGF0aCcgPT4g JG5vZGUtPmRhdGFfZGlyLAotCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbiwKLQldLAotCXFyL2Vy cm9yOiBlcnJvciBpbiBXQUwgcmVjb3JkIGF0LywKLQknZmFsbGluZyBvZmYgdGhlIGVuZCBvZiB0 aGUgV0FMIHJlc3VsdHMgaW4gYW4gZXJyb3InKTsKLQogY29tbWFuZF9saWtlKAogCVsKIAkJJ3Bn X3dhbGR1bXAnLCAnLS1xdWlldCcsCkBAIC0yMjcsMTUgKzIwNSw2IEBAIGNvbW1hbmRfbGlrZSgK IAldLAogCXFyL14kLywKIAknbm8gb3V0cHV0IHdpdGggLS1xdWlldCBvcHRpb24nKTsKLWNvbW1h bmRfZmFpbHNfbGlrZSgKLQlbCi0JCSdwZ193YWxkdW1wJywgJy0tcXVpZXQnLAotCQknLS1wYXRo JyA9PiAkbm9kZS0+ZGF0YV9kaXIsCi0JCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuCi0JXSwKLQlx ci9lcnJvcjogZXJyb3IgaW4gV0FMIHJlY29yZCBhdC8sCi0JJ2Vycm9ycyBhcmUgc2hvd24gd2l0 aCAtLXF1aWV0Jyk7Ci0KIAogIyBUZXN0IGZvcjogRGlzcGxheSBhIG1lc3NhZ2UgdGhhdCB3ZSdy ZSBza2lwcGluZyBkYXRhIGlmIGBmcm9tYAogIyB3YXNuJ3QgYSBwb2ludGVyIHRvIHRoZSBzdGFy dCBvZiBhIHJlY29yZC4KQEAgLTI3Miw3ICsyNDEsNiBAQCBzdWIgdGVzdF9wZ193YWxkdW1wCiAK IAlteSAkcmVzdWx0ID0gSVBDOjpSdW46OnJ1biBbCiAJCSdwZ193YWxkdW1wJywKLQkJJy0tcGF0 aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAogCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbiwKIAkJJy0t ZW5kJyA9PiAkZW5kX2xzbiwKIAkJQG9wdHMKQEAgLTI4OCwzOCArMjU2LDgxIEBAIHN1YiB0ZXN0 X3BnX3dhbGR1bXAKIAogbXkgQGxpbmVzOwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXA7Ci1p cyhncmVwKCEvXnJtZ3I6IFx3LywgQGxpbmVzKSwgMCwgJ2FsbCBvdXRwdXQgbGluZXMgYXJlIHJt Z3IgbGluZXMnKTsKK215IEBzY2VuYXJpb3MgPSAoCisJeworCQkncGF0aCcgPT4gJG5vZGUtPmRh dGFfZGlyCisJfSk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1saW1pdCcgPT4gNik7 Ci1pcyhAbGluZXMsIDYsICdsaW1pdCBvcHRpb24gb2JzZXJ2ZWQnKTsKK2ZvciBteSAkc2NlbmFy aW8gKEBzY2VuYXJpb3MpCit7CisJbXkgJHBhdGggPSAkc2NlbmFyaW8tPnsncGF0aCd9OwogCi1A bGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tZnVsbHBhZ2UnKTsKLWlzKGdyZXAoIS9ecm1ncjou KlxiRlBXXGIvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgRlBXJyk7CisJU0tJ UDoKKwl7CisJCWNvbW1hbmRfZmFpbHNfbGlrZSgKKwkJCVsgJ3BnX3dhbGR1bXAnLCAnLS1wYXRo JyA9PiAkcGF0aCBdLAorCQkJcXIvZXJyb3I6IG5vIHN0YXJ0IFdBTCBsb2NhdGlvbiBnaXZlbi8s CisJCQkncGF0aCBvcHRpb24gcmVxdWlyZXMgc3RhcnQgbG9jYXRpb24nKTsKKwkJY29tbWFuZF9s aWtlKAorCQkJWworCQkJCSdwZ193YWxkdW1wJywKKwkJCQknLS1wYXRoJyA9PiAkcGF0aCwKKwkJ CQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbiwKKwkJCQknLS1lbmQnID0+ICRlbmRfbHNuLAorCQkJ XSwKKwkJCXFyLy4vLAorCQkJJ3J1bnMgd2l0aCBwYXRoIG9wdGlvbiBhbmQgc3RhcnQgYW5kIGVu ZCBsb2NhdGlvbnMnKTsKKwkJY29tbWFuZF9mYWlsc19saWtlKAorCQkJWworCQkJCSdwZ193YWxk dW1wJywKKwkJCQknLS1wYXRoJyA9PiAkcGF0aCwKKwkJCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xz biwKKwkJCV0sCisJCQlxci9lcnJvcjogZXJyb3IgaW4gV0FMIHJlY29yZCBhdC8sCisJCQknZmFs bGluZyBvZmYgdGhlIGVuZCBvZiB0aGUgV0FMIHJlc3VsdHMgaW4gYW4gZXJyb3InKTsKIAotQGxp bmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXN0YXRzJyk7Ci1saWtlKCRsaW5lc1swXSwgcXIvV0FM IHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKLWlzKGdyZXAoL15ybWdyOi8s IEBsaW5lcyksIDAsICdubyBybWdyIGxpbmVzIG91dHB1dCcpOworCQljb21tYW5kX2ZhaWxzX2xp a2UoCisJCQlbCisJCQkJJ3BnX3dhbGR1bXAnLCAnLS1xdWlldCcsCisJCQkJJy0tcGF0aCcgPT4g JHBhdGgsCisJCQkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24KKwkJCV0sCisJCQlxci9lcnJvcjog ZXJyb3IgaW4gV0FMIHJlY29yZCBhdC8sCisJCQknZXJyb3JzIGFyZSBzaG93biB3aXRoIC0tcXVp ZXQnKTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXN0YXRzPXJlY29yZCcpOwotbGlr ZSgkbGluZXNbMF0sIHFyL1dBTCBzdGF0aXN0aWNzLywgInN0YXRpc3RpY3Mgb24gc3Rkb3V0Iik7 Ci1pcyhncmVwKC9ecm1ncjovLCBAbGluZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBvdXRwdXQnKTsK KwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoKTsKKwkJaXMoZ3Jl cCghL15ybWdyOiBcdy8sIEBsaW5lcyksIDAsICdhbGwgb3V0cHV0IGxpbmVzIGFyZSBybWdyIGxp bmVzJyk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1ybWdyJyA9PiAnQnRyZWUnKTsK LWlzKGdyZXAoIS9ecm1ncjogQnRyZWUvLCBAbGluZXMpLCAwLCAnb25seSBCdHJlZSBsaW5lcycp OworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsICctLWxpbWl0 JyA9PiA2KTsKKwkJaXMoQGxpbmVzLCA2LCAnbGltaXQgb3B0aW9uIG9ic2VydmVkJyk7CiAKLUBs aW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1mb3JrJyA9PiAnaW5pdCcpOwotaXMoZ3JlcCghL2Zv cmsgaW5pdC8sIEBsaW5lcyksIDAsICdvbmx5IGluaXQgZm9yayBsaW5lcycpOworCQlAbGluZXMg PSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsICctLWZ1bGxwYWdlJyk7CisJCWlz KGdyZXAoIS9ecm1ncjouKlxiRlBXXGIvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBh cmUgRlBXJyk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgKLQknLS1yZWxhdGlvbicgPT4g IiRkZWZhdWx0X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfdDFfb2lkIik7Ci1pcyhncmVw KCEvcmVsICRkZWZhdWx0X3RzX29pZFwvJHBvc3RncmVzX2RiX29pZFwvJHJlbF90MV9vaWQvLCBA bGluZXMpLAotCTAsICdvbmx5IGxpbmVzIGZvciBzZWxlY3RlZCByZWxhdGlvbicpOworCQlAbGlu ZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsICctLXN0YXRzJyk7CisJCWxp a2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8sICJzdGF0aXN0aWNzIG9uIHN0ZG91dCIp OworCQlpcyhncmVwKC9ecm1ncjovLCBAbGluZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBvdXRwdXQn KTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKAotCSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1 bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9vaWQvJHJlbF9pMWFfb2lkIiwKLQknLS1ibG9jaycgPT4g MSk7Ci1pcyhncmVwKCEvXGJibGsgMVxiLywgQGxpbmVzKSwgMCwgJ29ubHkgbGluZXMgZm9yIHNl bGVjdGVkIGJsb2NrJyk7CisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1wYXRoJyA9PiAk cGF0aCwgJy0tc3RhdHM9cmVjb3JkJyk7CisJCWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlz dGljcy8sICJzdGF0aXN0aWNzIG9uIHN0ZG91dCIpOworCQlpcyhncmVwKC9ecm1ncjovLCBAbGlu ZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKIAorCQlAbGluZXMgPSB0ZXN0X3BnX3dh bGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsICctLXJtZ3InID0+ICdCdHJlZScpOworCQlpcyhncmVw KCEvXnJtZ3I6IEJ0cmVlLywgQGxpbmVzKSwgMCwgJ29ubHkgQnRyZWUgbGluZXMnKTsKKworCQlA bGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsICctLWZvcmsnID0+ICdp bml0Jyk7CisJCWlzKGdyZXAoIS9mb3JrIGluaXQvLCBAbGluZXMpLCAwLCAnb25seSBpbml0IGZv cmsgbGluZXMnKTsKKworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBh dGgsCisJCQknLS1yZWxhdGlvbicgPT4gIiRkZWZhdWx0X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lk LyRyZWxfdDFfb2lkIik7CisJCWlzKGdyZXAoIS9yZWwgJGRlZmF1bHRfdHNfb2lkXC8kcG9zdGdy ZXNfZGJfb2lkXC8kcmVsX3QxX29pZC8sIEBsaW5lcyksCisJCQkwLCAnb25seSBsaW5lcyBmb3Ig c2VsZWN0ZWQgcmVsYXRpb24nKTsKKworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0 aCcgPT4gJHBhdGgsCisJCQknLS1yZWxhdGlvbicgPT4gIiRkZWZhdWx0X3RzX29pZC8kcG9zdGdy ZXNfZGJfb2lkLyRyZWxfaTFhX29pZCIsCisJCQknLS1ibG9jaycgPT4gMSk7CisJCWlzKGdyZXAo IS9cYmJsayAxXGIvLCBAbGluZXMpLCAwLCAnb25seSBsaW5lcyBmb3Igc2VsZWN0ZWQgYmxvY2sn KTsKKwl9Cit9CiAKIGRvbmVfdGVzdGluZygpOwotLSAKMi40Ny4xCgo= --000000000000f4c5340644792656 Content-Type: application/x-patch; name="v9-0004-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Disposition: attachment; filename="v9-0004-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miflfgjt3 RnJvbSBiZDJkZTYxZjEzNmRkOTExMWY2OTg3NGFmMjc4MmM0YjJmNmFiMzE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgNSBOb3YgMjAyNSAxNTo0MDozNiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjkgNC84XSBwZ193 YWxkdW1wOiBBZGQgc3VwcG9ydCBmb3IgYXJjaGl2ZWQgV0FMIGRlY29kaW5nLgoKcGdfd2FsZHVt cCBjYW4gbm93IGFjY2VwdCB0aGUgcGF0aCB0byBhIHRhciBhcmNoaXZlIGNvbnRhaW5pbmcgV0FM CmZpbGVzIGFuZCBkZWNvZGUgdGhlbS4gVGhpcyBmZWF0dXJlIHdhcyBhZGRlZCBwcmltYXJpbHkg Zm9yCnBnX3ZlcmlmeWJhY2t1cCwgd2hpY2ggcHJldmlvdXNseSBkaXNhYmxlZCBXQUwgcGFyc2lu ZyBmb3IKdGFyLWZvcm1hdHRlZCBiYWNrdXBzLgoKTm90ZSB0aGF0IHRoaXMgcGF0Y2ggcmVxdWly ZXMgdGhhdCB0aGUgV0FMIGZpbGVzIHdpdGhpbiB0aGUgYXJjaGl2ZSBiZQppbiBzZXF1ZW50aWFs IG9yZGVyOyBhbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIG90aGVyd2lzZS4gVGhlIG5leHQKcGF0 Y2ggaXMgcGxhbm5lZCB0byByZW1vdmUgdGhpcyByZXN0cmljdGlvbi4KLS0tCiBkb2Mvc3JjL3Nn bWwvcmVmL3BnX3dhbGR1bXAuc2dtbCAgICAgfCAgIDggKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9N YWtlZmlsZSAgICAgICAgICB8ICAgNyArLQogc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2Fs ZHVtcC5jIHwgNTk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2Jpbi9wZ193YWxk dW1wL21lc29uLmJ1aWxkICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2Fs ZHVtcC5jICAgICAgfCAyMTggKysrKysrKy0tLQogc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1 bXAuaCAgICAgIHwgIDM0ICsrCiBzcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwgICAg fCAgODQgKysrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgIHwgICAzICsK IDggZmlsZXMgY2hhbmdlZCwgODc4IGluc2VydGlvbnMoKyksIDc2IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYwoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9wZ193YWxkdW1wLnNnbWwKaW5kZXggY2UyM2FkZDU1NzcuLmQwMDRiYjBmNjdlIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL3BnX3dhbGR1bXAuc2dtbApAQCAtMTQxLDEzICsxNDEsMTcgQEAgUG9zdGdyZVNRTCBk b2N1bWVudGF0aW9uCiAgICAgICA8dGVybT48b3B0aW9uPi0tcGF0aD08cmVwbGFjZWFibGU+cGF0 aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAgICAg IDxwYXJhPgotICAgICAgICBTcGVjaWZpZXMgYSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZvciBXQUwg c2VnbWVudCBmaWxlcyBvciBhCi0gICAgICAgIGRpcmVjdG9yeSB3aXRoIGEgPGxpdGVyYWw+cGdf d2FsPC9saXRlcmFsPiBzdWJkaXJlY3RvcnkgdGhhdAorICAgICAgICBTcGVjaWZpZXMgYSB0YXIg YXJjaGl2ZSBvciBhIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIFdBTCBzZWdtZW50IGZpbGVzCisg ICAgICAgIG9yIGEgZGlyZWN0b3J5IHdpdGggYSA8bGl0ZXJhbD5wZ193YWw8L2xpdGVyYWw+IHN1 YmRpcmVjdG9yeSB0aGF0CiAgICAgICAgIGNvbnRhaW5zIHN1Y2ggZmlsZXMuICBUaGUgZGVmYXVs dCBpcyB0byBzZWFyY2ggaW4gdGhlIGN1cnJlbnQKICAgICAgICAgZGlyZWN0b3J5LCB0aGUgPGxp dGVyYWw+cGdfd2FsPC9saXRlcmFsPiBzdWJkaXJlY3Rvcnkgb2YgdGhlCiAgICAgICAgIGN1cnJl bnQgZGlyZWN0b3J5LCBhbmQgdGhlIDxsaXRlcmFsPnBnX3dhbDwvbGl0ZXJhbD4gc3ViZGlyZWN0 b3J5CiAgICAgICAgIG9mIDxlbnZhcj5QR0RBVEE8L2VudmFyPi4KICAgICAgICA8L3BhcmE+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIElmIGEgdGFyIGFyY2hpdmUgaXMgcHJvdmlkZWQsIGl0cyBX QUwgc2VnbWVudCBmaWxlcyBtdXN0IGJlIGluCisgICAgICAgIHNlcXVlbnRpYWwgb3JkZXI7IG90 aGVyd2lzZSwgYW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZC4KKyAgICAgICA8L3BhcmE+CiAgICAg ICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIApkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ193YWxkdW1wL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlCmluZGV4 IDRjMWVlNjQ5NTAxLi5hYWJiODc1NjZhMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1w L01ha2VmaWxlCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZQpAQCAtMyw2ICszLDkg QEAKIFBHRklMRURFU0MgPSAicGdfd2FsZHVtcCAtIGRlY29kZSBhbmQgZGlzcGxheSBXQUwiCiBQ R0FQUElDT049d2luMzIKIAorIyBtYWtlIHRoZXNlIGF2YWlsYWJsZSB0byBUQVAgdGVzdCBzY3Jp cHRzCitleHBvcnQgVEFSCisKIHN1YmRpciA9IHNyYy9iaW4vcGdfd2FsZHVtcAogdG9wX2J1aWxk ZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9i YWwKQEAgLTEwLDEzICsxMywxNSBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZp bGUuZ2xvYmFsCiBPQkpTID0gXAogCSQoUk1HUkRFU0NPQkpTKSBcCiAJJChXSU4zMlJFUykgXAor CWFyY2hpdmVfd2FsZHVtcC5vIFwKIAljb21wYXQubyBcCiAJcGdfd2FsZHVtcC5vIFwKIAlybWdy ZGVzYy5vIFwKIAl4bG9ncmVhZGVyLm8gXAogCXhsb2dzdGF0cy5vCiAKLW92ZXJyaWRlIENQUEZM QUdTIDo9IC1ERlJPTlRFTkQgJChDUFBGTEFHUykKK292ZXJyaWRlIENQUEZMQUdTIDo9IC1ERlJP TlRFTkQgLUkkKGxpYnBxX3NyY2RpcikgJChDUFBGTEFHUykKK0xERkxBR1NfSU5URVJOQUwgKz0g LUwkKHRvcF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzCiAKIFJNR1JERVNDU09V UkNFUyA9ICQoc29ydCAkKG5vdGRpciAkKHdpbGRjYXJkICQodG9wX3NyY2Rpcikvc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjLypkZXNjKi5jKSkpCiBSTUdSREVTQ09CSlMgPSAkKHBhdHN1YnN0 ICUuYywlLm8sJChSTUdSREVTQ1NPVVJDRVMpKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxk dW1wL2FyY2hpdmVfd2FsZHVtcC5jIGIvc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVt cC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42MzE0MWRjMmVlMgot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYwpA QCAtMCwwICsxLDU5NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogYXJjaGl2ZV93YWxk dW1wLmMKKyAqCQlBIGdlbmVyaWMgZmFjaWxpdHkgZm9yIHJlYWRpbmcgV0FMIGRhdGEgZnJvbSB0 YXIgYXJjaGl2ZXMgdmlhIGFyY2hpdmUKKyAqCQlzdHJlYW1lci4KKyAqCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KgorICogSURFTlRJRklDQVRJT04KKyAqCQlzcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxk dW1wLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXNf ZmUuaCIKKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50 ZXJuYWwuaCIKKyNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgiCisjaW5jbHVkZSAiY29tbW9uL2xv Z2dpbmcuaCIKKyNpbmNsdWRlICJmZV91dGlscy9zaW1wbGVfbGlzdC5oIgorI2luY2x1ZGUgInBn X3dhbGR1bXAuaCIKKworLyoKKyAqIEhvdyBtYW55IGJ5dGVzIHNob3VsZCB3ZSB0cnkgdG8gcmVh ZCBmcm9tIGEgZmlsZSBhdCBvbmNlPworICovCisjZGVmaW5lIFJFQURfQ0hVTktfU0laRQkJCQko MTI4ICogMTAyNCkKKworLyogU3RydWN0dXJlIGZvciBzdG9yaW5nIHRoZSBXQUwgc2VnbWVudCBk YXRhIGZyb20gdGhlIGFyY2hpdmUgKi8KK3R5cGVkZWYgc3RydWN0IEFyY2hpdmVkV0FMRW50cnkK K3sKKwl1aW50MzIJCXN0YXR1czsJCQkvKiBoYXNoIHN0YXR1cyAqLworCVhMb2dTZWdObwlzZWdu bzsJCQkvKiBoYXNoIGtleTogV0FMIHNlZ21lbnQgbnVtYmVyICovCisJVGltZUxpbmVJRAl0aW1l bGluZTsJCS8qIHRpbWVsaW5lIG9mIHRoaXMgd2FsIGZpbGUgKi8KKworCVN0cmluZ0luZm9EYXRh IGJ1ZjsKKwlib29sCQl0bXBzZWdfZXhpc3RzOwkvKiBzcGlsbCBmaWxlIGV4aXN0cz8gKi8KKwor CWludAkJCXRvdGFsX3JlYWQ7CQkvKiB0b3RhbCByZWFkIG9mIHRoaXMgV0FMIHNlZ21lbnQsIGlu Y2x1ZGluZworCQkJCQkJCQkgKiBidWZmZXJlZCBhbmQgdGVtcG9yYXJpbHkgd3JpdHRlbiBkYXRh ICovCit9IEFyY2hpdmVkV0FMRW50cnk7CisKKyNkZWZpbmUgU0hfUFJFRklYCQkJCUFyY2hpdmVk V0FMCisjZGVmaW5lIFNIX0VMRU1FTlRfVFlQRQkJCUFyY2hpdmVkV0FMRW50cnkKKyNkZWZpbmUg U0hfS0VZX1RZUEUJCQkJWExvZ1NlZ05vCisjZGVmaW5lIFNIX0tFWQkJCQkJc2Vnbm8KKyNkZWZp bmUgU0hfSEFTSF9LRVkodGIsIGtleSkJbXVybXVyaGFzaDY0KCh1aW50NjQpIGtleSkKKyNkZWZp bmUgU0hfRVFVQUwodGIsIGEsIGIpCQkoYSA9PSBiKQorI2RlZmluZSBTSF9HRVRfSEFTSCh0Yiwg YSkJCWEtPmhhc2gKKyNkZWZpbmUgU0hfU0NPUEUJCQkJc3RhdGljIGlubGluZQorI2RlZmluZSBT SF9SQVdfQUxMT0NBVE9SCQlwZ19tYWxsb2MwCisjZGVmaW5lIFNIX0RFQ0xBUkUKKyNkZWZpbmUg U0hfREVGSU5FCisjaW5jbHVkZSAibGliL3NpbXBsZWhhc2guaCIKKworc3RhdGljIEFyY2hpdmVk V0FMX2hhc2ggKkFyY2hpdmVkV0FMX0hUQUIgPSBOVUxMOworCit0eXBlZGVmIHN0cnVjdCBhc3Ry ZWFtZXJfd2FsZHVtcAoreworCWFzdHJlYW1lcgliYXNlOworCVhMb2dEdW1wUHJpdmF0ZSAqcHJp dmF0ZUluZm87Cit9IGFzdHJlYW1lcl93YWxkdW1wOworCitzdGF0aWMgaW50CXJlYWRfYXJjaGl2 ZV9maWxlKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sIFNpemUgY291bnQpOworc3RhdGlj IEFyY2hpdmVkV0FMRW50cnkgKmdldF9hcmNoaXZlX3dhbF9lbnRyeShYTG9nU2VnTm8gc2Vnbm8s CisJCQkJCQkJCQkJCSAgIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pOworCitzdGF0aWMg YXN0cmVhbWVyICphc3RyZWFtZXJfd2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRlICpwcml2YXRl SW5mbyk7CitzdGF0aWMgdm9pZCBhc3RyZWFtZXJfd2FsZHVtcF9jb250ZW50KGFzdHJlYW1lciAq c3RyZWFtZXIsCisJCQkJCQkJCQkgIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKKwkJCQkJCQkJ CSAgY29uc3QgY2hhciAqZGF0YSwgaW50IGxlbiwKKwkJCQkJCQkJCSAgYXN0cmVhbWVyX2FyY2hp dmVfY29udGV4dCBjb250ZXh0KTsKK3N0YXRpYyB2b2lkIGFzdHJlYW1lcl93YWxkdW1wX2ZpbmFs aXplKGFzdHJlYW1lciAqc3RyZWFtZXIpOworc3RhdGljIHZvaWQgYXN0cmVhbWVyX3dhbGR1bXBf ZnJlZShhc3RyZWFtZXIgKnN0cmVhbWVyKTsKKworc3RhdGljIGJvb2wgbWVtYmVyX2lzX3dhbF9m aWxlKGFzdHJlYW1lcl93YWxkdW1wICpteXN0cmVhbWVyLAorCQkJCQkJCSAgIGFzdHJlYW1lcl9t ZW1iZXIgKm1lbWJlciwKKwkJCQkJCQkgICBYTG9nU2VnTm8gKmN1clNlZ05vLAorCQkJCQkJCSAg IFRpbWVMaW5lSUQgKmN1clRpbWVsaW5lKTsKKworc3RhdGljIGNvbnN0IGFzdHJlYW1lcl9vcHMg YXN0cmVhbWVyX3dhbGR1bXBfb3BzID0geworCS5jb250ZW50ID0gYXN0cmVhbWVyX3dhbGR1bXBf Y29udGVudCwKKwkuZmluYWxpemUgPSBhc3RyZWFtZXJfd2FsZHVtcF9maW5hbGl6ZSwKKwkuZnJl ZSA9IGFzdHJlYW1lcl93YWxkdW1wX2ZyZWUKK307CisKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYg dGhlIGdpdmVuIGZpbGUgaXMgYSB0YXIgYXJjaGl2ZSBhbmQgb3V0cHV0cyBpdHMgY29tcHJlc3Np b24KKyAqIGFsZ29yaXRobS4KKyAqLworYm9vbAoraXNfYXJjaGl2ZV9maWxlKGNvbnN0IGNoYXIg KmZuYW1lLCBwZ19jb21wcmVzc19hbGdvcml0aG0gKmNvbXByZXNzaW9uKQoreworCWludAkJCWZu YW1lX2xlbiA9IHN0cmxlbihmbmFtZSk7CisJcGdfY29tcHJlc3NfYWxnb3JpdGhtIGNvbXByZXNz X2FsZ287CisKKwkvKiBOb3csIGNoZWNrIHRoZSBjb21wcmVzc2lvbiB0eXBlIG9mIHRoZSB0YXIg Ki8KKwlpZiAoZm5hbWVfbGVuID4gNCAmJgorCQlzdHJjbXAoZm5hbWUgKyBmbmFtZV9sZW4gLSA0 LCAiLnRhciIpID09IDApCisJCWNvbXByZXNzX2FsZ28gPSBQR19DT01QUkVTU0lPTl9OT05FOwor CWVsc2UgaWYgKGZuYW1lX2xlbiA+IDQgJiYKKwkJCSBzdHJjbXAoZm5hbWUgKyBmbmFtZV9sZW4g LSA0LCAiLnRneiIpID09IDApCisJCWNvbXByZXNzX2FsZ28gPSBQR19DT01QUkVTU0lPTl9HWklQ OworCWVsc2UgaWYgKGZuYW1lX2xlbiA+IDcgJiYKKwkJCSBzdHJjbXAoZm5hbWUgKyBmbmFtZV9s ZW4gLSA3LCAiLnRhci5neiIpID09IDApCisJCWNvbXByZXNzX2FsZ28gPSBQR19DT01QUkVTU0lP Tl9HWklQOworCWVsc2UgaWYgKGZuYW1lX2xlbiA+IDggJiYKKwkJCSBzdHJjbXAoZm5hbWUgKyBm bmFtZV9sZW4gLSA4LCAiLnRhci5sejQiKSA9PSAwKQorCQljb21wcmVzc19hbGdvID0gUEdfQ09N UFJFU1NJT05fTFo0OworCWVsc2UgaWYgKGZuYW1lX2xlbiA+IDggJiYKKwkJCSBzdHJjbXAoZm5h bWUgKyBmbmFtZV9sZW4gLSA4LCAiLnRhci56c3QiKSA9PSAwKQorCQljb21wcmVzc19hbGdvID0g UEdfQ09NUFJFU1NJT05fWlNURDsKKwllbHNlCisJCXJldHVybiBmYWxzZTsKKworCSpjb21wcmVz c2lvbiA9IGNvbXByZXNzX2FsZ287CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIEluaXRp YWxpemVzIHRoZSB0YXIgYXJjaGl2ZSByZWFkZXIgdG8gcmVhZCBXQUwgZmlsZXMgZnJvbSB0aGUg YXJjaGl2ZSwKKyAqIGNyZWF0ZXMgYSBoYXNoIHRhYmxlIHRvIHN0b3JlIHRoZW0sIHBlcmZvcm1z IHF1aWNrIGV4aXN0ZW5jZSBjaGVja3MgZm9yIFdBTAorICogZW50cmllcyBpbiB0aGUgYXJjaGl2 ZSBhbmQgcmV0cmlldmVzIHRoZSBXQUwgc2VnbWVudCBzaXplLCBhbmQgc2V0cyB1cAorICogZmls dGVyaW5nIGNyaXRlcmlhIGZvciByZWxldmFudCBlbnRyaWVzLgorICovCit2b2lkCitpbml0X2Fy Y2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sIGNvbnN0IGNoYXIgKndh bGRpciwKKwkJCQkJcGdfY29tcHJlc3NfYWxnb3JpdGhtIGNvbXByZXNzaW9uKQoreworCWludAkJ CWZkOworCWFzdHJlYW1lciAgKnN0cmVhbWVyOworCUFyY2hpdmVkV0FMRW50cnkgKmVudHJ5ID0g TlVMTDsKKwlYTG9nTG9uZ1BhZ2VIZWFkZXIgbG9uZ2hkcjsKKworCS8qIE9wZW4gdGFyIGFyY2hp dmUgYW5kIHN0b3JlIGl0cyBmaWxlIGRlc2NyaXB0b3IgKi8KKwlmZCA9IG9wZW5fZmlsZV9pbl9k aXJlY3Rvcnkod2FsZGlyLCBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1lKTsKKworCWlmIChmZCA8 IDApCisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiIsIHByaXZhdGVJbmZv LT5hcmNoaXZlX25hbWUpOworCisJcHJpdmF0ZUluZm8tPmFyY2hpdmVfZmQgPSBmZDsKKworCXN0 cmVhbWVyID0gYXN0cmVhbWVyX3dhbGR1bXBfbmV3KHByaXZhdGVJbmZvKTsKKworCS8qIEJlZm9y ZSB0aGF0IHdlIG11c3QgcGFyc2UgdGhlIHRhciBhcmNoaXZlLiAqLworCXN0cmVhbWVyID0gYXN0 cmVhbWVyX3Rhcl9wYXJzZXJfbmV3KHN0cmVhbWVyKTsKKworCS8qIEJlZm9yZSB0aGF0IHdlIG11 c3QgZGVjb21wcmVzcywgaWYgYXJjaGl2ZSBpcyBjb21wcmVzc2VkLiAqLworCWlmIChjb21wcmVz c2lvbiA9PSBQR19DT01QUkVTU0lPTl9HWklQKQorCQlzdHJlYW1lciA9IGFzdHJlYW1lcl9nemlw X2RlY29tcHJlc3Nvcl9uZXcoc3RyZWFtZXIpOworCWVsc2UgaWYgKGNvbXByZXNzaW9uID09IFBH X0NPTVBSRVNTSU9OX0xaNCkKKwkJc3RyZWFtZXIgPSBhc3RyZWFtZXJfbHo0X2RlY29tcHJlc3Nv cl9uZXcoc3RyZWFtZXIpOworCWVsc2UgaWYgKGNvbXByZXNzaW9uID09IFBHX0NPTVBSRVNTSU9O X1pTVEQpCisJCXN0cmVhbWVyID0gYXN0cmVhbWVyX3pzdGRfZGVjb21wcmVzc29yX25ldyhzdHJl YW1lcik7CisKKwlwcml2YXRlSW5mby0+YXJjaGl2ZV9zdHJlYW1lciA9IHN0cmVhbWVyOworCisJ LyogSGFzaCB0YWJsZSBzdG9yaW5nIFdBTCBlbnRyaWVzIHJlYWQgZnJvbSB0aGUgYXJjaGl2ZSAq LworCUFyY2hpdmVkV0FMX0hUQUIgPSBBcmNoaXZlZFdBTF9jcmVhdGUoMTYsIE5VTEwpOworCisJ LyoKKwkgKiBWZXJpZnkgdGhhdCB0aGUgYXJjaGl2ZSBjb250YWlucyB2YWxpZCBXQUwgZmlsZXMg YW5kIGZldGNoIFdBTCBzZWdtZW50CisJICogc2l6ZQorCSAqLworCXdoaWxlIChlbnRyeSA9PSBO VUxMIHx8IGVudHJ5LT5idWYubGVuIDwgWExPR19CTENLU1opCisJeworCQlpZiAocmVhZF9hcmNo aXZlX2ZpbGUocHJpdmF0ZUluZm8sIFhMT0dfQkxDS1NaKSA9PSAwKQorCQkJcGdfZmF0YWwoImNv dWxkIG5vdCBmaW5kIFdBTCBpbiBcIiVzXCIgYXJjaGl2ZSIsCisJCQkJCSBwcml2YXRlSW5mby0+ YXJjaGl2ZV9uYW1lKTsKKworCQllbnRyeSA9IHByaXZhdGVJbmZvLT5jdXJfd2FsOworCX0KKwor CS8qIFNldCBXYWxTZWdTeiBpZiBXQUwgZGF0YSBpcyBzdWNjZXNzZnVsbHkgcmVhZCAqLworCWxv bmdoZHIgPSAoWExvZ0xvbmdQYWdlSGVhZGVyKSBlbnRyeS0+YnVmLmRhdGE7CisKKwlXYWxTZWdT eiA9IGxvbmdoZHItPnhscF9zZWdfc2l6ZTsKKworCWlmICghSXNWYWxpZFdhbFNlZ1NpemUoV2Fs U2VnU3opKQorCXsKKwkJcGdfbG9nX2Vycm9yKG5nZXR0ZXh0KCJpbnZhbGlkIFdBTCBzZWdtZW50 IHNpemUgaW4gV0FMIGZpbGUgZnJvbSBhcmNoaXZlIFwiJXNcIiAoJWQgYnl0ZSkiLAorCQkJCQkJ CSAgImludmFsaWQgV0FMIHNlZ21lbnQgc2l6ZSBpbiBXQUwgZmlsZSBmcm9tIGFyY2hpdmUgXCIl c1wiICglZCBieXRlcykiLAorCQkJCQkJCSAgV2FsU2VnU3opLAorCQkJCQkgcHJpdmF0ZUluZm8t PmFyY2hpdmVfbmFtZSwgV2FsU2VnU3opOworCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJUaGUgV0FM IHNlZ21lbnQgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIGJldHdlZW4gMSBNQiBhbmQgMSBH Qi4iKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKgorCSAqIFdpdGggdGhlIFdBTCBzZWdtZW50IHNp emUgYXZhaWxhYmxlLCB3ZSBjYW4gbm93IGluaXRpYWxpemUgdGhlCisJICogZGVwZW5kZW50IHN0 YXJ0IGFuZCBlbmQgc2VnbWVudCBudW1iZXJzLgorCSAqLworCUFzc2VydCghWExvZ1JlY1B0cklz SW52YWxpZChwcml2YXRlSW5mby0+c3RhcnRwdHIpKTsKKwlYTEJ5dGVUb1NlZyhwcml2YXRlSW5m by0+c3RhcnRwdHIsIHByaXZhdGVJbmZvLT5zdGFydFNlZ05vLCBXYWxTZWdTeik7CisKKwlpZiAo WExvZ1JlY1B0cklzSW52YWxpZChwcml2YXRlSW5mby0+ZW5kcHRyKSkKKwkJcHJpdmF0ZUluZm8t PmVuZFNlZ05vID0gVUlOVDY0X01BWDsKKwllbHNlCisJCVhMQnl0ZVRvU2VnKHByaXZhdGVJbmZv LT5lbmRwdHIsIHByaXZhdGVJbmZvLT5lbmRTZWdObywgV2FsU2VnU3opOworfQorCisvKgorICog UmVsZWFzZSB0aGUgYXJjaGl2ZSBzdHJlYW1lciBjaGFpbiBhbmQgY2xvc2UgdGhlIGFyY2hpdmUg ZmlsZS4KKyAqLwordm9pZAorZnJlZV9hcmNoaXZlX3JlYWRlcihYTG9nRHVtcFByaXZhdGUgKnBy aXZhdGVJbmZvKQoreworCS8qCisJICogTkI6IE5vcm1hbGx5LCBhc3RyZWFtZXJfZmluYWxpemUo KSBpcyBjYWxsZWQgYmVmb3JlIGFzdHJlYW1lcl9mcmVlKCkgdG8KKwkgKiBmbHVzaCBhbnkgcmVt YWluaW5nIGJ1ZmZlcmVkIGRhdGEgb3IgdG8gZW5zdXJlIHRoZSBlbmQgb2YgdGhlIHRhcgorCSAq IGFyY2hpdmUgaXMgcmVhY2hlZC4gSG93ZXZlciwgd2hlbiBkZWNvZGluZyBhIFdBTCBmaWxlLCBv bmNlIHdlIGhpdCB0aGUKKwkgKiBlbmQgTFNOLCBhbnkgcmVtYWluaW5nIFdBTCBkYXRhIGluIHRo ZSBidWZmZXIgb3IgdGhlIHRhciBhcmNoaXZlJ3MKKwkgKiB1bnJlYWNoZWQgZW5kIGNhbiBiZSBz YWZlbHkgaWdub3JlZC4KKwkgKi8KKwlhc3RyZWFtZXJfZnJlZShwcml2YXRlSW5mby0+YXJjaGl2 ZV9zdHJlYW1lcik7CisKKwkvKiBDbG9zZSB0aGUgZmlsZS4gKi8KKwlpZiAoY2xvc2UocHJpdmF0 ZUluZm8tPmFyY2hpdmVfZmQpICE9IDApCisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNsb3Nl IGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCSBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1lKTsKK30K KworLyoKKyAqIENvcGllcyBXQUwgZGF0YSBmcm9tIGFzdHJlYW1lciB0byByZWFkQnVmZjsgaWYg dW5hdmFpbGFibGUsIGZldGNoZXMgbW9yZQorICogZnJvbSB0aGUgdGFyIGFyY2hpdmUgdmlhIGFz dHJlYW1lci4KKyAqLworaW50CityZWFkX2FyY2hpdmVfd2FsX3BhZ2UoWExvZ0R1bXBQcml2YXRl ICpwcml2YXRlSW5mbywgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLAorCQkJCQkgIFNpemUgY291 bnQsIGNoYXIgKnJlYWRCdWZmKQoreworCWNoYXIJICAgKnAgPSByZWFkQnVmZjsKKwlTaXplCQlu Ynl0ZXMgPSBjb3VudDsKKwlYTG9nUmVjUHRyCXJlY3B0ciA9IHRhcmdldFBhZ2VQdHI7CisJWExv Z1NlZ05vCXNlZ25vOworCUFyY2hpdmVkV0FMRW50cnkgKmVudHJ5OworCisJWExCeXRlVG9TZWco dGFyZ2V0UGFnZVB0ciwgc2Vnbm8sIFdhbFNlZ1N6KTsKKwllbnRyeSA9IGdldF9hcmNoaXZlX3dh bF9lbnRyeShzZWdubywgcHJpdmF0ZUluZm8pOworCisJd2hpbGUgKG5ieXRlcyA+IDApCisJewor CQljaGFyCSAgICpidWYgPSBlbnRyeS0+YnVmLmRhdGE7CisJCWludAkJCWxlbiA9IGVudHJ5LT5i dWYubGVuOworCisJCS8qIFdBTCByZWNvcmQgcmFuZ2UgdGhhdCB0aGUgYnVmZmVyIGNvbnRhaW5z ICovCisJCVhMb2dSZWNQdHIJZW5kUHRyOworCQlYTG9nUmVjUHRyCXN0YXJ0UHRyOworCisJCVhM b2dTZWdOb09mZnNldFRvUmVjUHRyKGVudHJ5LT5zZWdubywgZW50cnktPnRvdGFsX3JlYWQsCisJ CQkJCQkJCVdhbFNlZ1N6LCBlbmRQdHIpOworCQlzdGFydFB0ciA9IGVuZFB0ciAtIGxlbjsKKwor CQkvKgorCQkgKiBwZ193YWxkdW1wIG1heSByZXF1ZXN0IHRvIHJlLXJlYWQgdGhlIGN1cnJlbnRs eSBhY3RpdmUgcGFnZSwgYnV0CisJCSAqIG5ldmVyIGEgcGFnZSBvbGRlciB0aGFuIHRoZSBjdXJy ZW50IG9uZS4gVGhlcmVmb3JlLCBhbnkgZnVsbHkKKwkJICogY29uc3VtZWQgV0FMIGRhdGEgcHJl Y2VkaW5nIHRoZSBjdXJyZW50IHBhZ2UgY2FuIGJlIHNhZmVseQorCQkgKiBkaXNjYXJkZWQuCisJ CSAqLworCQlpZiAocmVjcHRyID49IGVuZFB0cikKKwkJeworCQkJLyogRGlzY2FyZCB0aGUgYnVm ZmVyZWQgZGF0YSAqLworCQkJcmVzZXRTdHJpbmdJbmZvKCZlbnRyeS0+YnVmKTsKKwkJCWxlbiA9 IDA7CisKKwkJCS8qCisJCQkgKiBQdXNoIGJhY2sgdGhlIHBhcnRpYWwgcGFnZSBkYXRhIGZvciB0 aGUgY3VycmVudCBwYWdlIHRvIHRoZQorCQkJICogYnVmZmVyLCBlbnN1cmluZyBpdCByZW1haW5z IGF2YWlsYWJsZSBmb3IgcmUtcmVhZGluZyBpZgorCQkJICogcmVxdWVzdGVkLgorCQkJICovCisJ CQlpZiAocCA+IHJlYWRCdWZmKQorCQkJeworCQkJCUFzc2VydCgoY291bnQgLSBuYnl0ZXMpID4g MCk7CisJCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmZW50cnktPmJ1ZiwgcmVhZEJ1ZmYsIGNv dW50IC0gbmJ5dGVzKTsKKwkJCX0KKwkJfQorCisJCWlmIChsZW4gPiAwICYmIHJlY3B0ciA+IHN0 YXJ0UHRyKQorCQl7CisJCQlpbnQJCQlza2lwQnl0ZXMgPSAwOworCisJCQkvKgorCQkJICogVGhl IHJlcXVpcmVkIG9mZnNldCBpcyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIsIHNvIHNr aXAKKwkJCSAqIGJ5dGVzIHVudGlsIHJlYWNoaW5nIHRoZSBkZXNpcmVkIG9mZnNldCBvZiB0aGUg dGFyZ2V0IHBhZ2UuCisJCQkgKi8KKwkJCXNraXBCeXRlcyA9IHJlY3B0ciAtIHN0YXJ0UHRyOwor CisJCQlidWYgKz0gc2tpcEJ5dGVzOworCQkJbGVuIC09IHNraXBCeXRlczsKKwkJfQorCisJCWlm IChsZW4gPiAwKQorCQl7CisJCQlpbnQJCQlyZWFkQnl0ZXMgPSBsZW4gPj0gbmJ5dGVzID8gbmJ5 dGVzIDogbGVuOworCisJCQkvKiBFbnN1cmUgdGhlIHJlYWRpbmcgcGFnZSBpcyBpbiB0aGUgYnVm ZmVyICovCisJCQlBc3NlcnQocmVjcHRyID49IHN0YXJ0UHRyICYmIHJlY3B0ciA8IGVuZFB0cik7 CisKKwkJCW1lbWNweShwLCBidWYsIHJlYWRCeXRlcyk7CisKKwkJCS8qIFVwZGF0ZSBzdGF0ZSBm b3IgcmVhZCAqLworCQkJbmJ5dGVzIC09IHJlYWRCeXRlczsKKwkJCXAgKz0gcmVhZEJ5dGVzOwor CQkJcmVjcHRyICs9IHJlYWRCeXRlczsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBG ZXRjaCBtb3JlIGRhdGE7IHJhaXNlIGFuIGVycm9yIGlmIGl0J3Mgbm90IHRoZSBjdXJyZW50IHNl Z21lbnQKKwkJCSAqIGJlaW5nIHJlYWQgYnkgdGhlIGFyY2hpdmUgc3RyZWFtZXIgb3IgaWYgcmVh ZGluZyBvZiB0aGUKKwkJCSAqIGFyY2hpdmVkIGZpbGUgaGFzIGZpbmlzaGVkLgorCQkJICovCisJ CQlpZiAocHJpdmF0ZUluZm8tPmN1cl93YWwgIT0gZW50cnkgfHwKKwkJCQlyZWFkX2FyY2hpdmVf ZmlsZShwcml2YXRlSW5mbywgUkVBRF9DSFVOS19TSVpFKSA9PSAwKQorCQkJeworCQkJCWNoYXIJ CWZuYW1lW01BWEZOQU1FTEVOXTsKKworCQkJCVhMb2dGaWxlTmFtZShmbmFtZSwgcHJpdmF0ZUlu Zm8tPnRpbWVsaW5lLCBlbnRyeS0+c2Vnbm8sCisJCQkJCQkJIFdhbFNlZ1N6KTsKKwkJCQlwZ19m YXRhbCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCIgZnJvbSBhcmNoaXZlIFwiJXNcIjogcmVh ZCAlbGxkIG9mICVsbGQiLAorCQkJCQkJIGZuYW1lLCBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1l LAorCQkJCQkJIChsb25nIGxvbmcgaW50KSBjb3VudCAtIG5ieXRlcywKKwkJCQkJCSAobG9uZyBs b25nIGludCkgbmJ5dGVzKTsKKwkJCX0KKwkJfQorCX0KKworCS8qCisJICogU2hvdWxkIGhhdmUg ZWl0aGVyIGhhdmUgc3VjY2Vzc2Z1bGx5IHJlYWQgYWxsIHRoZSByZXF1ZXN0ZWQgYnl0ZXMgb3IK KwkgKiByZXBvcnRlZCBhIGZhaWx1cmUgYmVmb3JlIHRoaXMgcG9pbnQuCisJICovCisJQXNzZXJ0 KG5ieXRlcyA9PSAwKTsKKworCS8qCisJICogTkI6IFdlIHJldHVybiB0aGUgZml4ZWQgdmFsdWUg cHJvdmlkZWQgYXMgaW5wdXQuIEFsdGhvdWdoIHdlIGNvdWxkCisJICogcmV0dXJuIGEgYm9vbGVh biBzaW5jZSB3ZSBlaXRoZXIgc3VjY2Vzc2Z1bGx5IHJlYWQgdGhlIFdBTCBwYWdlIG9yCisJICog cmFpc2UgYW4gZXJyb3IsIGJ1dCB0aGUgY2FsbGVyIGV4cGVjdHMgdGhpcyB2YWx1ZSB0byBiZSBy ZXR1cm5lZC4gVGhlCisJICogcm91dGluZSB0aGF0IHJlYWRzIFdBTCBwYWdlcyBmcm9tIHRoZSBw aHlzaWNhbCBXQUwgZmlsZSBmb2xsb3dzIHRoZQorCSAqIHNhbWUgY29udmVudGlvbi4KKwkgKi8K KwlyZXR1cm4gY291bnQ7Cit9CisKKy8qCisgKiBSZWFkcyB0aGUgYXJjaGl2ZSBmaWxlIGFuZCBw YXNzZXMgaXQgdG8gdGhlIGFyY2hpdmUgc3RyZWFtZXIgZm9yCisgKiBkZWNvbXByZXNzaW9uLgor ICovCitzdGF0aWMgaW50CityZWFkX2FyY2hpdmVfZmlsZShYTG9nRHVtcFByaXZhdGUgKnByaXZh dGVJbmZvLCBTaXplIGNvdW50KQoreworCWludAkJCXJjOworCWNoYXIJICAgKmJ1ZmZlcjsKKwor CWJ1ZmZlciA9IHBnX21hbGxvYyhSRUFEX0NIVU5LX1NJWkUgKiBzaXplb2YodWludDgpKTsKKwor CXJjID0gcmVhZChwcml2YXRlSW5mby0+YXJjaGl2ZV9mZCwgYnVmZmVyLCBjb3VudCk7CisJaWYg KHJjIDwgMCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsCisJ CQkJIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworCisJLyoKKwkgKiBEZWNvbXByZXNzIChp ZiByZXF1aXJlZCksIGFuZCB0aGVuIHBhcnNlIHRoZSBwcmV2aW91c2x5IHJlYWQgY29udGVudHMK KwkgKiBvZiB0aGUgdGFyIGZpbGUuCisJICovCisJaWYgKHJjID4gMCkKKwkJYXN0cmVhbWVyX2Nv bnRlbnQocHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFtZXIsIE5VTEwsCisJCQkJCQkgIGJ1ZmZl ciwgcmMsIEFTVFJFQU1FUl9VTktOT1dOKTsKKwlwZ19mcmVlKGJ1ZmZlcik7CisKKwlyZXR1cm4g cmM7Cit9CisKKy8qCisgKiBSZXR1cm5zIHRoZSBhcmNoaXZlZCBXQUwgZW50cnkgZnJvbSB0aGUg aGFzaCB0YWJsZSBpZiBpdCBleGlzdHMuIE90aGVyd2lzZSwKKyAqIGl0IGludm9rZXMgdGhlIHJv dXRpbmUgdG8gcmVhZCB0aGUgYXJjaGl2ZWQgZmlsZSBhbmQgcmV0cmlldmUgdGhlIGVudHJ5IGlm CisgKiBpdCBpcyBub3QgYWxyZWFkeSBpbiBoYXNoIHRhYmxlLgorICovCitzdGF0aWMgQXJjaGl2 ZWRXQUxFbnRyeSAqCitnZXRfYXJjaGl2ZV93YWxfZW50cnkoWExvZ1NlZ05vIHNlZ25vLCBYTG9n RHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKQoreworCUFyY2hpdmVkV0FMRW50cnkgKmVudHJ5ID0g TlVMTDsKKwljaGFyCQlmbmFtZVtNQVhGTkFNRUxFTl07CisKKwkvKiBTZWFyY2ggaGFzaCB0YWJs ZSAqLworCWVudHJ5ID0gQXJjaGl2ZWRXQUxfbG9va3VwKEFyY2hpdmVkV0FMX0hUQUIsIHNlZ25v KTsKKworCWlmIChlbnRyeSAhPSBOVUxMKQorCQlyZXR1cm4gZW50cnk7CisKKwkvKiBOZWVkZWQg V0FMIHlldCB0byBiZSBkZWNvZGVkIGZyb20gYXJjaGl2ZSwgZG8gdGhlIHNhbWUgKi8KKwl3aGls ZSAoMSkKKwl7CisJCWVudHJ5ID0gcHJpdmF0ZUluZm8tPmN1cl93YWw7CisKKwkJLyogRmV0Y2gg bW9yZSBkYXRhICovCisJCWlmIChyZWFkX2FyY2hpdmVfZmlsZShwcml2YXRlSW5mbywgUkVBRF9D SFVOS19TSVpFKSA9PSAwKQorCQkJYnJlYWs7CQkJLyogYXJjaGl2ZSBmaWxlIGVuZGVkICovCisK KwkJLyoKKwkJICogRWl0aGVyLCBoZXJlIGZvciB0aGUgZmlyc3QgdGltZSwgb3IgdGhlIGFyY2hp dmVkIHN0cmVhbWVyIGlzCisJCSAqIHJlYWRpbmcgYSBub24tV0FMIGZpbGUgb3IgYW4gaXJyZWxl dmFudCBXQUwgZmlsZS4KKwkJICovCisJCWlmIChlbnRyeSA9PSBOVUxMKQorCQkJY29udGludWU7 CisKKwkJLyogRm91bmQgdGhlIHJlcXVpcmVkIGVudHJ5ICovCisJCWlmIChlbnRyeS0+c2Vnbm8g PT0gc2Vnbm8pCisJCQlyZXR1cm4gZW50cnk7CisKKwkJLyoKKwkJICogSWdub3JlIGlmIHRoZSB0 aW1lbGluZSBpcyBkaWZmZXJlbnQgb3IgdGhlIGN1cnJlbnQgc2VnbWVudCBpcyBub3QKKwkJICog dGhlIGRlc2lyZWQgb25lLgorCQkgKi8KKwkJaWYgKHByaXZhdGVJbmZvLT50aW1lbGluZSAhPSBl bnRyeS0+dGltZWxpbmUgfHwKKwkJCXByaXZhdGVJbmZvLT5zdGFydFNlZ05vID4gZW50cnktPnNl Z25vIHx8CisJCQlwcml2YXRlSW5mby0+ZW5kU2VnTm8gPCBlbnRyeS0+c2Vnbm8pCisJCXsKKwkJ CXByaXZhdGVJbmZvLT5jdXJfd2FsID0gTlVMTDsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoK KwkJICogWFhYOiBJZiB0aGUgc2VnbWVudCBiZWluZyByZWFkIG5vdCB0aGUgcmVxdWVzdGVkIG9u ZSwgdGhlIGRhdGEgbXVzdAorCQkgKiBiZSBidWZmZXJlZCwgYXMgd2UgY3VycmVudGx5IGxhY2sg dGhlIG1lY2hhbmlzbSB0byB3cml0ZSBpdCB0byBhCisJCSAqIHRlbXBvcmFyeSBmaWxlLiBUaGlz IGlzIGEga25vd24gbGltaXRhdGlvbiB0aGF0IHdpbGwgYmUgZml4ZWQgaW4gdGhlCisJCSAqIG5l eHQgcGF0Y2gsIGFzIHRoZSBidWZmZXIgY291bGQgZ3JvdyB1cCB0byB0aGUgZnVsbCBXQUwgc2Vn bWVudAorCQkgKiBzaXplLgorCQkgKi8KKwkJaWYgKHNlZ25vID4gZW50cnktPnNlZ25vKQorCQkJ Y29udGludWU7CisKKwkJLyogV0FMIHNlZ21lbnRzIG11c3QgYmUgYXJjaGl2ZWQgaW4gb3JkZXIg Ki8KKwkJcGdfbG9nX2Vycm9yKCJXQUwgZmlsZXMgYXJlIG5vdCBhcmNoaXZlZCBpbiBzZXF1ZW50 aWFsIG9yZGVyIik7CisJCXBnX2xvZ19lcnJvcl9kZXRhaWwoIkV4cGVjdGluZyBzZWdtZW50IG51 bWJlciAiIFVJTlQ2NF9GT1JNQVQgIiBidXQgZm91bmQgIiBVSU5UNjRfRk9STUFUICIuIiwKKwkJ CQkJCQlzZWdubywgZW50cnktPnNlZ25vKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKiBSZXF1ZXN0 ZWQgV0FMIHNlZ21lbnQgbm90IGZvdW5kICovCisJWExvZ0ZpbGVOYW1lKGZuYW1lLCBwcml2YXRl SW5mby0+dGltZWxpbmUsIHNlZ25vLCBXYWxTZWdTeik7CisJcGdfZmF0YWwoImNvdWxkIG5vdCBm aW5kIGZpbGUgXCIlc1wiIGluIGFyY2hpdmUiLCBmbmFtZSk7Cit9CisKKy8qCisgKiBDcmVhdGUg YW4gYXN0cmVhbWVyIHRoYXQgY2FuIHJlYWQgV0FMIGZyb20gYSB0YXIgZmlsZS4KKyAqLworc3Rh dGljIGFzdHJlYW1lciAqCithc3RyZWFtZXJfd2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRlICpw cml2YXRlSW5mbykKK3sKKwlhc3RyZWFtZXJfd2FsZHVtcCAqc3RyZWFtZXI7CisKKwlzdHJlYW1l ciA9IHBhbGxvYzAoc2l6ZW9mKGFzdHJlYW1lcl93YWxkdW1wKSk7CisJKigoY29uc3QgYXN0cmVh bWVyX29wcyAqKikgJnN0cmVhbWVyLT5iYXNlLmJic19vcHMpID0KKwkJJmFzdHJlYW1lcl93YWxk dW1wX29wczsKKworCXN0cmVhbWVyLT5wcml2YXRlSW5mbyA9IHByaXZhdGVJbmZvOworCisJcmV0 dXJuICZzdHJlYW1lci0+YmFzZTsKK30KKworLyoKKyAqIE1haW4gZW50cnkgcG9pbnQgb2YgdGhl IGFyY2hpdmUgc3RyZWFtZXIgZm9yIHJlYWRpbmcgV0FMIGRhdGEgZnJvbSBhIHRhcgorICogZmls ZS4gSWYgYSBtZW1iZXIgaXMgaWRlbnRpZmllZCBhcyBhIHZhbGlkIFdBTCBmaWxlLCBhIGhhc2gg ZW50cnkgaXMgY3JlYXRlZAorICogZm9yIGl0LCBhbmQgaXRzIGNvbnRlbnRzIGFyZSBjb3BpZWQg aW50byB0aGF0IGVudHJ5J3MgYnVmZmVyLCBtYWtpbmcgdGhlbQorICogYWNjZXNzaWJsZSB0byB0 aGUgZGVjb2Rpbmcgcm91dGluZS4KKyAqLworc3RhdGljIHZvaWQKK2FzdHJlYW1lcl93YWxkdW1w X2NvbnRlbnQoYXN0cmVhbWVyICpzdHJlYW1lciwgYXN0cmVhbWVyX21lbWJlciAqbWVtYmVyLAor CQkJCQkJICBjb25zdCBjaGFyICpkYXRhLCBpbnQgbGVuLAorCQkJCQkJICBhc3RyZWFtZXJfYXJj aGl2ZV9jb250ZXh0IGNvbnRleHQpCit7CisJYXN0cmVhbWVyX3dhbGR1bXAgKm15c3RyZWFtZXIg PSAoYXN0cmVhbWVyX3dhbGR1bXAgKikgc3RyZWFtZXI7CisJWExvZ0R1bXBQcml2YXRlICpwcml2 YXRlSW5mbyA9IG15c3RyZWFtZXItPnByaXZhdGVJbmZvOworCisJQXNzZXJ0KGNvbnRleHQgIT0g QVNUUkVBTUVSX1VOS05PV04pOworCisJc3dpdGNoIChjb250ZXh0KQorCXsKKwkJY2FzZSBBU1RS RUFNRVJfTUVNQkVSX0hFQURFUjoKKwkJCXsKKwkJCQlYTG9nU2VnTm8Jc2Vnbm87CisJCQkJVGlt ZUxpbmVJRAl0aW1lbGluZTsKKwkJCQlBcmNoaXZlZFdBTEVudHJ5ICplbnRyeTsKKwkJCQlib29s CQlmb3VuZDsKKworCQkJCXBnX2xvZ19kZWJ1ZygicmVhZGluZyBcIiVzXCIiLCBtZW1iZXItPnBh dGhuYW1lKTsKKworCQkJCWlmICghbWVtYmVyX2lzX3dhbF9maWxlKG15c3RyZWFtZXIsIG1lbWJl ciwKKwkJCQkJCQkJCQkmc2Vnbm8sICZ0aW1lbGluZSkpCisJCQkJCWJyZWFrOworCisJCQkJZW50 cnkgPSBBcmNoaXZlZFdBTF9pbnNlcnQoQXJjaGl2ZWRXQUxfSFRBQiwgc2Vnbm8sICZmb3VuZCk7 CisKKwkJCQkvKgorCQkJCSAqIFNob3VsZG4ndCBoYXBwZW4sIGJ1dCBpZiBpdCBkb2VzLCBzaW1w bHkgaWdub3JlIHRoZQorCQkJCSAqIGR1cGxpY2F0ZSBXQUwgZmlsZS4KKwkJCQkgKi8KKwkJCQlp ZiAoZm91bmQpCisJCQkJeworCQkJCQlwZ19sb2dfd2FybmluZygiaWdub3JpbmcgZHVwbGljYXRl IFdBTCBmaWxlIGZvdW5kIGluIGFyY2hpdmU6IFwiJXNcIiIsCisJCQkJCQkJCSAgIG1lbWJlci0+ cGF0aG5hbWUpOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCQlpbml0U3RyaW5nSW5mbygmZW50 cnktPmJ1Zik7CisJCQkJZW50cnktPnRpbWVsaW5lID0gdGltZWxpbmU7CisJCQkJZW50cnktPnRv dGFsX3JlYWQgPSAwOworCisJCQkJcHJpdmF0ZUluZm8tPmN1cl93YWwgPSBlbnRyeTsKKwkJCX0K KwkJCWJyZWFrOworCisJCWNhc2UgQVNUUkVBTUVSX01FTUJFUl9DT05URU5UUzoKKwkJCWlmIChw cml2YXRlSW5mby0+Y3VyX3dhbCkKKwkJCXsKKwkJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKCZw cml2YXRlSW5mby0+Y3VyX3dhbC0+YnVmLCBkYXRhLCBsZW4pOworCQkJCXByaXZhdGVJbmZvLT5j dXJfd2FsLT50b3RhbF9yZWFkICs9IGxlbjsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgQVNU UkVBTUVSX01FTUJFUl9UUkFJTEVSOgorCQkJcHJpdmF0ZUluZm8tPmN1cl93YWwgPSBOVUxMOwor CQkJYnJlYWs7CisKKwkJY2FzZSBBU1RSRUFNRVJfQVJDSElWRV9UUkFJTEVSOgorCQkJYnJlYWs7 CisKKwkJZGVmYXVsdDoKKwkJCS8qIFNob3VsZG4ndCBoYXBwZW4uICovCisJCQlwZ19mYXRhbCgi dW5leHBlY3RlZCBzdGF0ZSB3aGlsZSBwYXJzaW5nIHRhciBmaWxlIik7CisJfQorfQorCisvKgor ICogRW5kLW9mLXN0cmVhbSBwcm9jZXNzaW5nIGZvciBhbiBhc3RyZWFtZXJfd2FsZHVtcCBzdHJl YW0uCisgKi8KK3N0YXRpYyB2b2lkCithc3RyZWFtZXJfd2FsZHVtcF9maW5hbGl6ZShhc3RyZWFt ZXIgKnN0cmVhbWVyKQoreworCUFzc2VydChzdHJlYW1lci0+YmJzX25leHQgPT0gTlVMTCk7Cit9 CisKKy8qCisgKiBGcmVlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYSBhc3RyZWFtZXJfd2FsZHVt cCBzdHJlYW0uCisgKi8KK3N0YXRpYyB2b2lkCithc3RyZWFtZXJfd2FsZHVtcF9mcmVlKGFzdHJl YW1lciAqc3RyZWFtZXIpCit7CisJQXNzZXJ0KHN0cmVhbWVyLT5iYnNfbmV4dCA9PSBOVUxMKTsK KwlwZnJlZShzdHJlYW1lcik7Cit9CisKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGFyY2hp dmUgbWVtYmVyIG5hbWUgbWF0Y2hlcyB0aGUgV0FMIG5hbWluZyBmb3JtYXQuIElmCisgKiBzdWNj ZXNzZnVsLCBpdCBhbHNvIG91dHB1dHMgdGhlIFdBTCBzZWdtZW50IG51bWJlciwgYW5kIHRpbWVs aW5lLgorICovCitzdGF0aWMgYm9vbAorbWVtYmVyX2lzX3dhbF9maWxlKGFzdHJlYW1lcl93YWxk dW1wICpteXN0cmVhbWVyLCBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCisJCQkJICAgWExvZ1Nl Z05vICpjdXJTZWdObywgVGltZUxpbmVJRCAqY3VyVGltZWxpbmUpCit7CisJaW50CQkJcGF0aGxl bjsKKwlYTG9nU2VnTm8Jc2VnTm87CisJVGltZUxpbmVJRAl0aW1lbGluZTsKKwljaGFyCSAgICpm bmFtZTsKKworCS8qIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gbm9ybWFsIGZpbGVzLiAqLwor CWlmIChtZW1iZXItPmlzX2RpcmVjdG9yeSB8fCBtZW1iZXItPmlzX2xpbmspCisJCXJldHVybiBm YWxzZTsKKworCXBhdGhsZW4gPSBzdHJsZW4obWVtYmVyLT5wYXRobmFtZSk7CisJaWYgKHBhdGhs ZW4gPCBYTE9HX0ZOQU1FX0xFTikKKwkJcmV0dXJuIGZhbHNlOworCisJLyogV0FMIGZpbGUgY291 bGQgYmUgd2l0aCBmdWxsIHBhdGggKi8KKwlmbmFtZSA9IG1lbWJlci0+cGF0aG5hbWUgKyAocGF0 aGxlbiAtIFhMT0dfRk5BTUVfTEVOKTsKKwlpZiAoIUlzWExvZ0ZpbGVOYW1lKGZuYW1lKSkKKwkJ cmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBYWFg6IE9uIHNvbWUgc3lzdGVtcyAoZS5nLiwgT3Bl bkJTRCksIHRoZSB0YXIgdXRpbGl0eSBpbmNsdWRlcworCSAqIFBheEhlYWRlcnMgd2hlbiBjcmVh dGluZyBhbiBhcmNoaXZlLiBUaGVzZSBhcmUgc3BlY2lhbCBlbnRyaWVzIHRoYXQKKwkgKiBzdG9y ZSBleHRlbmRlZCBtZXRhZGF0YSBmb3IgdGhlIGZpbGUgZW50cnkgaW1tZWRpYXRlbHkgZm9sbG93 aW5nIHRoZW0sCisJICogYW5kIHRoZXkgc2hhcmUgdGhlIGV4YWN0IHNhbWUgbmFtZSBhcyB0aGF0 IGZpbGUuCisJICovCisJaWYgKHN0cnN0cihtZW1iZXItPnBhdGhuYW1lLCAiUGF4SGVhZGVycy4i KSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogUGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICovCisJ WExvZ0Zyb21GaWxlTmFtZShmbmFtZSwgJnRpbWVsaW5lLCAmc2VnTm8sIFdhbFNlZ1N6KTsKKwor CSpjdXJTZWdObyA9IHNlZ05vOworCSpjdXJUaW1lbGluZSA9IHRpbWVsaW5lOworCisJcmV0dXJu IHRydWU7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQgYi9z cmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQKaW5kZXggOTM3ZTBkNjg4NDEuLmYzMWUwZDFj ZDg2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQKKysrIGIvc3Jj L2Jpbi9wZ193YWxkdW1wL21lc29uLmJ1aWxkCkBAIC0xLDYgKzEsNyBAQAogIyBDb3B5cmlnaHQg KGMpIDIwMjItMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKIAogcGdf d2FsZHVtcF9zb3VyY2VzID0gZmlsZXMoCisgICdhcmNoaXZlX3dhbGR1bXAuYycsCiAgICdjb21w YXQuYycsCiAgICdwZ193YWxkdW1wLmMnLAogICAncm1ncmRlc2MuYycsCkBAIC0xOCw3ICsxOSw3 IEBAIGVuZGlmCiAKIHBnX3dhbGR1bXAgPSBleGVjdXRhYmxlKCdwZ193YWxkdW1wJywKICAgcGdf d2FsZHVtcF9zb3VyY2VzLAotICBkZXBlbmRlbmNpZXM6IFtmcm9udGVuZF9jb2RlLCBsejQsIHpz dGRdLAorICBkZXBlbmRlbmNpZXM6IFtmcm9udGVuZF9jb2RlLCBsejQsIHpzdGQsIGxpYnBxXSwK ICAgY19hcmdzOiBbJy1ERlJPTlRFTkQnXSwgIyBuZWVkZWQgZm9yIHhsb2dyZWFkZXIgZXQgYWwK ICAga3dhcmdzOiBkZWZhdWx0X2Jpbl9hcmdzLAogKQpAQCAtMjksNiArMzAsNyBAQCB0ZXN0cyAr PSB7CiAgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAnYmQnOiBtZXNvbi5j dXJyZW50X2J1aWxkX2RpcigpLAogICAndGFwJzogeworICAgICdlbnYnOiB7J1RBUic6IHRhci5m b3VuZCgpID8gdGFyLmZ1bGxfcGF0aCgpIDogJyd9LAogICAgICd0ZXN0cyc6IFsKICAgICAgICd0 LzAwMV9iYXNpYy5wbCcsCiAgICAgICAndC8wMDJfc2F2ZV9mdWxscGFnZS5wbCcsCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIGIvc3JjL2Jpbi9wZ193YWxkdW1w L3BnX3dhbGR1bXAuYwppbmRleCAyYzExZTBlNWNhMS4uMWVlZGY4ZTAxYjQgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1w L3BnX3dhbGR1bXAuYwpAQCAtMzgsNyArMzgsNyBAQAogICogZ2l2ZSBhIHRob3VnaHQgYWJvdXQg ZG9pbmcgdGhlIHNhbWUgaW4gcGdfd2FsaW5zcGVjdCBjb250cmliIG1vZHVsZSBhcyB3ZWxsLgog ICovCiAKLWludAkJCVdhbFNlZ1N6OworaW50CQkJV2FsU2VnU3ogPSBERUZBVUxUX1hMT0dfU0VH X1NJWkU7CiAKIHN0YXRpYyBjb25zdCBjaGFyICpwcm9nbmFtZTsKIApAQCAtMTc4LDcgKzE3OCw3 IEBAIHNwbGl0X3BhdGgoY29uc3QgY2hhciAqcGF0aCwgY2hhciAqKmRpciwgY2hhciAqKmZuYW1l KQogICoKICAqIHJldHVybiBhIHJlYWQgb25seSBmZAogICovCi1zdGF0aWMgaW50CitpbnQKIG9w ZW5fZmlsZV9pbl9kaXJlY3RvcnkoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpm bmFtZSkKIHsKIAlpbnQJCQlmZCA9IC0xOwpAQCAtNDQ0LDYgKzQ0NCw0NSBAQCBXQUxEdW1wUmVh ZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBp bnQgcmVxTGVuLAogCXJldHVybiBjb3VudDsKIH0KIAorLyoKKyAqIHBnX3dhbGR1bXAncyBYTG9n UmVhZGVyUm91dGluZS0+c2VnbWVudF9vcGVuIGNhbGxiYWNrIHRvIHN1cHBvcnQgZHVtcGluZyBX QUwKKyAqIGZpbGVzIGZyb20gdGFyIGFyY2hpdmVzLgorICovCitzdGF0aWMgdm9pZAorVGFyV0FM RHVtcE9wZW5TZWdtZW50KFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dTZWdObyBuZXh0U2Vn Tm8sCisJCQkJCSAgVGltZUxpbmVJRCAqdGxpX3ApCit7CisJLyogTm8gYWN0aW9uIG5lZWRlZCAq LworfQorCisvKgorICogcGdfd2FsZHVtcCdzIFhMb2dSZWFkZXJSb3V0aW5lLT5zZWdtZW50X2Ns b3NlIGNhbGxiYWNrLgorICovCitzdGF0aWMgdm9pZAorVGFyV0FMRHVtcENsb3NlU2VnbWVudChY TG9nUmVhZGVyU3RhdGUgKnN0YXRlKQoreworCS8qIE5vIGFjdGlvbiBuZWVkZWQgKi8KK30KKwor LyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+cGFnZV9yZWFkIGNhbGxiYWNr IHRvIHN1cHBvcnQgZHVtcGluZyBXQUwKKyAqIGZpbGVzIGZyb20gdGFyIGFyY2hpdmVzLgorICov CitzdGF0aWMgaW50CitUYXJXQUxEdW1wUmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwg WExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAorCQkJCSAgIFhMb2dSZWNQdHIg dGFyZ2V0UHRyLCBjaGFyICpyZWFkQnVmZikKK3sKKwlYTG9nRHVtcFByaXZhdGUgKnByaXZhdGUg PSBzdGF0ZS0+cHJpdmF0ZV9kYXRhOworCWludAkJCWNvdW50ID0gcmVxdWlyZWRfcmVhZF9sZW4o cHJpdmF0ZSwgdGFyZ2V0UGFnZVB0ciwgcmVxTGVuKTsKKworCS8qIEJhaWwgb3V0IGlmIHRoZSBj b3VudCB0byBiZSByZWFkIGlzIG5vdCB2YWxpZCAqLworCWlmIChjb3VudCA8IDApCisJCXJldHVy biAtMTsKKworCS8qIFJlYWQgdGhlIFdBTCBwYWdlIGZyb20gdGhlIGFyY2hpdmUgc3RyZWFtZXIg Ki8KKwlyZXR1cm4gcmVhZF9hcmNoaXZlX3dhbF9wYWdlKHByaXZhdGUsIHRhcmdldFBhZ2VQdHIs IGNvdW50LCByZWFkQnVmZik7Cit9CisKIC8qCiAgKiBCb29sZWFuIHRvIHJldHVybiB3aGV0aGVy IHRoZSBnaXZlbiBXQUwgcmVjb3JkIG1hdGNoZXMgYSBzcGVjaWZpYyByZWxhdGlvbgogICogYW5k IG9wdGlvbmFsbHkgYmxvY2suCkBAIC03ODEsOCArODIwLDggQEAgdXNhZ2Uodm9pZCkKIAlwcmlu dGYoXygiICAtRiwgLS1mb3JrPUZPUksgICAgICAgIG9ubHkgc2hvdyByZWNvcmRzIHRoYXQgbW9k aWZ5IGJsb2NrcyBpbiBmb3JrIEZPUks7XG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZCBuYW1lcyBhcmUgbWFpbiwgZnNtLCB2bSwgaW5pdFxuIikpOwogCXByaW50ZihfKCIg IC1uLCAtLWxpbWl0PU4gICAgICAgICAgbnVtYmVyIG9mIHJlY29yZHMgdG8gZGlzcGxheVxuIikp OwotCXByaW50ZihfKCIgIC1wLCAtLXBhdGg9UEFUSCAgICAgICAgZGlyZWN0b3J5IGluIHdoaWNo IHRvIGZpbmQgV0FMIHNlZ21lbnQgZmlsZXMgb3IgYVxuIgotCQkJICIgICAgICAgICAgICAgICAg ICAgICAgICAgZGlyZWN0b3J5IHdpdGggYSAuL3BnX3dhbCB0aGF0IGNvbnRhaW5zIHN1Y2ggZmls ZXNcbiIKKwlwcmludGYoXygiICAtcCwgLS1wYXRoPVBBVEggICAgICAgIHRhciBhcmNoaXZlIG9y IGEgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGZpbmQgV0FMIHNlZ21lbnQgZmlsZXMgb3JcbiIKKwkJ CSAiICAgICAgICAgICAgICAgICAgICAgICAgIGEgZGlyZWN0b3J5IHdpdGggYSAuL3BnX3dhbCB0 aGF0IGNvbnRhaW5zIHN1Y2ggZmlsZXNcbiIKIAkJCSAiICAgICAgICAgICAgICAgICAgICAgICAg IChkZWZhdWx0OiBjdXJyZW50IGRpcmVjdG9yeSwgLi9wZ193YWwsICRQR0RBVEEvcGdfd2FsKVxu IikpOwogCXByaW50ZihfKCIgIC1xLCAtLXF1aWV0ICAgICAgICAgICAgZG8gbm90IHByaW50IGFu eSBvdXRwdXQsIGV4Y2VwdCBmb3IgZXJyb3JzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXIsIC0tcm1n cj1STUdSICAgICAgICBvbmx5IHNob3cgcmVjb3JkcyBnZW5lcmF0ZWQgYnkgcmVzb3VyY2UgbWFu YWdlciBSTUdSO1xuIgpAQCAtODE0LDcgKzg1MywxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAlYTG9nUmVjb3JkICpyZWNvcmQ7CiAJWExvZ1JlY1B0cglmaXJzdF9yZWNvcmQ7CiAJ Y2hhcgkgICAqd2FsZGlyID0gTlVMTDsKKwljaGFyCSAgICp3YWxwYXRoID0gTlVMTDsKIAljaGFy CSAgICplcnJvcm1zZzsKKwlib29sCQlpc19hcmNoaXZlID0gZmFsc2U7CisJcGdfY29tcHJlc3Nf YWxnb3JpdGhtIGNvbXByZXNzaW9uOwogCiAJc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRp b25zW10gPSB7CiAJCXsiYmtwLWRldGFpbHMiLCBub19hcmd1bWVudCwgTlVMTCwgJ2InfSwKQEAg LTk0Niw3ICs5ODgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQl9CiAJCQkJ YnJlYWs7CiAJCQljYXNlICdwJzoKLQkJCQl3YWxkaXIgPSBwZ19zdHJkdXAob3B0YXJnKTsKKwkJ CQl3YWxwYXRoID0gcGdfc3RyZHVwKG9wdGFyZyk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdxJzoK IAkJCQljb25maWcucXVpZXQgPSB0cnVlOwpAQCAtMTExMCwxMCArMTE1MiwyMCBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAkJZ290byBiYWRfYXJndW1lbnQ7CiAJfQogCi0JaWYgKHdh bGRpciAhPSBOVUxMKQorCWlmICh3YWxwYXRoICE9IE5VTEwpCiAJeworCQkvKiB2YWxpZGF0ZSBw YXRoIHBvaW50cyB0byB0YXIgYXJjaGl2ZSAqLworCQlpZiAoaXNfYXJjaGl2ZV9maWxlKHdhbHBh dGgsICZjb21wcmVzc2lvbikpCisJCXsKKwkJCWNoYXIJICAgKmZuYW1lID0gTlVMTDsKKworCQkJ c3BsaXRfcGF0aCh3YWxwYXRoLCAmd2FsZGlyLCAmZm5hbWUpOworCisJCQlwcml2YXRlLmFyY2hp dmVfbmFtZSA9IGZuYW1lOworCQkJaXNfYXJjaGl2ZSA9IHRydWU7CisJCX0KIAkJLyogdmFsaWRh dGUgcGF0aCBwb2ludHMgdG8gZGlyZWN0b3J5ICovCi0JCWlmICghdmVyaWZ5X2RpcmVjdG9yeSh3 YWxkaXIpKQorCQllbHNlIGlmICghdmVyaWZ5X2RpcmVjdG9yeSh3YWxwYXRoKSkKIAkJewogCQkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHdhbGRp cik7CiAJCQlnb3RvIGJhZF9hcmd1bWVudDsKQEAgLTExMzEsNiArMTE4MywxNyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAkJaW50CQkJZmQ7CiAJCVhMb2dTZWdObwlzZWdubzsKIAor CQkvKgorCQkgKiBJZiBhIHRhciBhcmNoaXZlIGlzIHBhc3NlZCB1c2luZyB0aGUgLS1wYXRoIG9w dGlvbiwgYWxsIG90aGVyCisJCSAqIGFyZ3VtZW50cyBiZWNvbWUgdW5uZWNlc3NhcnkuCisJCSAq LworCQlpZiAoaXNfYXJjaGl2ZSkKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJ1bm5lY2Vzc2FyeSBj b21tYW5kLWxpbmUgYXJndW1lbnRzIHNwZWNpZmllZCB3aXRoIHRhciBhcmNoaXZlIChmaXJzdCBp cyBcIiVzXCIpIiwKKwkJCQkJCSBhcmd2W29wdGluZF0pOworCQkJZ290byBiYWRfYXJndW1lbnQ7 CisJCX0KKwogCQlzcGxpdF9wYXRoKGFyZ3Zbb3B0aW5kXSwgJmRpcmVjdG9yeSwgJmZuYW1lKTsK IAogCQlpZiAod2FsZGlyID09IE5VTEwgJiYgZGlyZWN0b3J5ICE9IE5VTEwpCkBAIC0xMTQxLDY5 ICsxMjA0LDc3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCXBnX2ZhdGFsKCJj b3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHdhbGRpcik7CiAJCX0KIAotCQl3 YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUpOwotCQlmZCA9 IG9wZW5fZmlsZV9pbl9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSk7Ci0JCWlmIChmZCA8IDApCi0J CQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIiLCBmbmFtZSk7Ci0JCWNsb3Nl KGZkKTsKLQotCQkvKiBwYXJzZSBwb3NpdGlvbiBmcm9tIGZpbGUgKi8KLQkJWExvZ0Zyb21GaWxl TmFtZShmbmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZzZWdubywgV2FsU2VnU3opOwotCi0JCWlm ICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5zdGFydHB0cikpCi0JCQlYTG9nU2VnTm9PZmZz ZXRUb1JlY1B0cihzZWdubywgMCwgV2FsU2VnU3osIHByaXZhdGUuc3RhcnRwdHIpOwotCQllbHNl IGlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5zdGFydHB0ciwgc2Vnbm8sIFdhbFNlZ1N6KSkKKwkJ aWYgKGZuYW1lICE9IE5VTEwgJiYgaXNfYXJjaGl2ZV9maWxlKGZuYW1lLCAmY29tcHJlc3Npb24p KQogCQl7Ci0JCQlwZ19sb2dfZXJyb3IoInN0YXJ0IFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5v dCBpbnNpZGUgZmlsZSBcIiVzXCIiLAotCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcml2YXRlLnN0 YXJ0cHRyKSwKLQkJCQkJCSBmbmFtZSk7Ci0JCQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJCXByaXZh dGUuYXJjaGl2ZV9uYW1lID0gZm5hbWU7CisJCQlpc19hcmNoaXZlID0gdHJ1ZTsKIAkJfQotCi0J CS8qIG5vIHNlY29uZCBmaWxlIHNwZWNpZmllZCwgc2V0IGVuZCBwb3NpdGlvbiAqLwotCQlpZiAo IShvcHRpbmQgKyAxIDwgYXJnYykgJiYgIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRy KSkKLQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vICsgMSwgMCwgV2FsU2VnU3osIHBy aXZhdGUuZW5kcHRyKTsKLQotCQkvKiBwYXJzZSBFTkRTRUcgaWYgcGFzc2VkICovCi0JCWlmIChv cHRpbmQgKyAxIDwgYXJnYykKKwkJZWxzZQogCQl7Ci0JCQlYTG9nU2VnTm8JZW5kc2Vnbm87Ci0K LQkJCS8qIGlnbm9yZSBkaXJlY3RvcnksIGFscmVhZHkgaGF2ZSB0aGF0ICovCi0JCQlzcGxpdF9w YXRoKGFyZ3Zbb3B0aW5kICsgMV0sICZkaXJlY3RvcnksICZmbmFtZSk7Ci0KKwkJCXdhbGRpciA9 IGlkZW50aWZ5X3RhcmdldF9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSk7CiAJCQlmZCA9IG9wZW5f ZmlsZV9pbl9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSk7CiAJCQlpZiAoZmQgPCAwKQogCQkJCXBn X2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiIsIGZuYW1lKTsKIAkJCWNsb3NlKGZk KTsKIAogCQkJLyogcGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICovCi0JCQlYTG9nRnJvbUZpbGVO YW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJmVuZHNlZ25vLCBXYWxTZWdTeik7CisJCQlY TG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJnNlZ25vLCBXYWxTZWdT eik7CiAKLQkJCWlmIChlbmRzZWdubyA8IHNlZ25vKQotCQkJCXBnX2ZhdGFsKCJFTkRTRUcgJXMg aXMgYmVmb3JlIFNUQVJUU0VHICVzIiwKLQkJCQkJCSBhcmd2W29wdGluZCArIDFdLCBhcmd2W29w dGluZF0pOworCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLnN0YXJ0cHRyKSkKKwkJ CQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubywgMCwgV2FsU2VnU3osIHByaXZhdGUuc3Rh cnRwdHIpOworCQkJZWxzZSBpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuc3RhcnRwdHIsIHNlZ25v LCBXYWxTZWdTeikpCisJCQl7CisJCQkJcGdfbG9nX2Vycm9yKCJzdGFydCBXQUwgbG9jYXRpb24g JVgvJTA4WCBpcyBub3QgaW5zaWRlIGZpbGUgXCIlc1wiIiwKKwkJCQkJCQkgTFNOX0ZPUk1BVF9B UkdTKHByaXZhdGUuc3RhcnRwdHIpLAorCQkJCQkJCSBmbmFtZSk7CisJCQkJZ290byBiYWRfYXJn dW1lbnQ7CisJCQl9CiAKLQkJCWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5lbmRwdHIp KQotCQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKGVuZHNlZ25vICsgMSwgMCwgV2FsU2VnU3os Ci0JCQkJCQkJCQkJcHJpdmF0ZS5lbmRwdHIpOworCQkJLyogbm8gc2Vjb25kIGZpbGUgc3BlY2lm aWVkLCBzZXQgZW5kIHBvc2l0aW9uICovCisJCQlpZiAoIShvcHRpbmQgKyAxIDwgYXJnYykgJiYg IVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKKwkJCQlYTG9nU2VnTm9PZmZzZXRU b1JlY1B0cihzZWdubyArIDEsIDAsIFdhbFNlZ1N6LCBwcml2YXRlLmVuZHB0cik7CiAKLQkJCS8q IHNldCBzZWdubyB0byBlbmRzZWdubyBmb3IgY2hlY2sgb2YgLS1lbmQgKi8KLQkJCXNlZ25vID0g ZW5kc2Vnbm87Ci0JCX0KKwkJCS8qIHBhcnNlIEVORFNFRyBpZiBwYXNzZWQgKi8KKwkJCWlmIChv cHRpbmQgKyAxIDwgYXJnYykKKwkJCXsKKwkJCQlYTG9nU2VnTm8JZW5kc2Vnbm87CiAKKwkJCQkv KiBpZ25vcmUgZGlyZWN0b3J5LCBhbHJlYWR5IGhhdmUgdGhhdCAqLworCQkJCXNwbGl0X3BhdGgo YXJndltvcHRpbmQgKyAxXSwgJmRpcmVjdG9yeSwgJmZuYW1lKTsKIAotCQlpZiAoIVhMQnl0ZUlu U2VnKHByaXZhdGUuZW5kcHRyLCBzZWdubywgV2FsU2VnU3opICYmCi0JCQlwcml2YXRlLmVuZHB0 ciAhPSAoc2Vnbm8gKyAxKSAqIFdhbFNlZ1N6KQotCQl7Ci0JCQlwZ19sb2dfZXJyb3IoImVuZCBX QUwgbG9jYXRpb24gJVgvJTA4WCBpcyBub3QgaW5zaWRlIGZpbGUgXCIlc1wiIiwKLQkJCQkJCSBM U05fRk9STUFUX0FSR1MocHJpdmF0ZS5lbmRwdHIpLAotCQkJCQkJIGFyZ3ZbYXJnYyAtIDFdKTsK LQkJCWdvdG8gYmFkX2FyZ3VtZW50OworCQkJCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeSh3 YWxkaXIsIGZuYW1lKTsKKwkJCQlpZiAoZmQgPCAwKQorCQkJCQlwZ19mYXRhbCgiY291bGQgbm90 IG9wZW4gZmlsZSBcIiVzXCIiLCBmbmFtZSk7CisJCQkJY2xvc2UoZmQpOworCisJCQkJLyogcGFy c2UgcG9zaXRpb24gZnJvbSBmaWxlICovCisJCQkJWExvZ0Zyb21GaWxlTmFtZShmbmFtZSwgJnBy aXZhdGUudGltZWxpbmUsICZlbmRzZWdubywgV2FsU2VnU3opOworCisJCQkJaWYgKGVuZHNlZ25v IDwgc2Vnbm8pCisJCQkJCXBnX2ZhdGFsKCJFTkRTRUcgJXMgaXMgYmVmb3JlIFNUQVJUU0VHICVz IiwKKwkJCQkJCQkgYXJndltvcHRpbmQgKyAxXSwgYXJndltvcHRpbmRdKTsKKworCQkJCWlmICgh WExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5lbmRwdHIpKQorCQkJCQlYTG9nU2VnTm9PZmZzZXRU b1JlY1B0cihlbmRzZWdubyArIDEsIDAsIFdhbFNlZ1N6LAorCQkJCQkJCQkJCQlwcml2YXRlLmVu ZHB0cik7CisKKwkJCQkvKiBzZXQgc2Vnbm8gdG8gZW5kc2Vnbm8gZm9yIGNoZWNrIG9mIC0tZW5k ICovCisJCQkJc2Vnbm8gPSBlbmRzZWdubzsKKwkJCX0KKworCisJCQlpZiAoIVhMQnl0ZUluU2Vn KHByaXZhdGUuZW5kcHRyLCBzZWdubywgV2FsU2VnU3opICYmCisJCQkJcHJpdmF0ZS5lbmRwdHIg IT0gKHNlZ25vICsgMSkgKiBXYWxTZWdTeikKKwkJCXsKKwkJCQlwZ19sb2dfZXJyb3IoImVuZCBX QUwgbG9jYXRpb24gJVgvJTA4WCBpcyBub3QgaW5zaWRlIGZpbGUgXCIlc1wiIiwKKwkJCQkJCQkg TFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuZW5kcHRyKSwKKwkJCQkJCQkgYXJndlthcmdjIC0gMV0p OworCQkJCWdvdG8gYmFkX2FyZ3VtZW50OworCQkJfQogCQl9CiAJfQotCWVsc2UKLQkJd2FsZGly ID0gaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeSh3YWxkaXIsIE5VTEwpOworCWVsc2UgaWYgKCFp c19hcmNoaXZlKQorCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbHBhdGgs IE5VTEwpOwogCiAJLyogd2UgZG9uJ3Qga25vdyB3aGF0IHRvIHByaW50ICovCiAJaWYgKCFYTG9n UmVjUHRySXNWYWxpZChwcml2YXRlLnN0YXJ0cHRyKSkKQEAgLTEyMTUsMTIgKzEyODYsMzYgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJLyogZG9uZSB3aXRoIGFyZ3VtZW50IHBhcnNp bmcsIGRvIHRoZSBhY3R1YWwgd29yayAqLwogCiAJLyogd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5l ZWQsIHN0YXJ0IHJlYWRpbmcgKi8KLQl4bG9ncmVhZGVyX3N0YXRlID0KLQkJWExvZ1JlYWRlckFs bG9jYXRlKFdhbFNlZ1N6LCB3YWxkaXIsCi0JCQkJCQkgICBYTF9ST1VUSU5FKC5wYWdlX3JlYWQg PSBXQUxEdW1wUmVhZFBhZ2UsCi0JCQkJCQkJCQkgIC5zZWdtZW50X29wZW4gPSBXQUxEdW1wT3Bl blNlZ21lbnQsCi0JCQkJCQkJCQkgIC5zZWdtZW50X2Nsb3NlID0gV0FMRHVtcENsb3NlU2VnbWVu dCksCi0JCQkJCQkgICAmcHJpdmF0ZSk7CisJaWYgKGlzX2FyY2hpdmUpCisJeworCQkvKgorCQkg KiBBIE5VTEwgV0FMIGRpcmVjdG9yeSBpbmRpY2F0ZXMgdGhhdCB0aGUgYXJjaGl2ZSBmaWxlIGlz IGxvY2F0ZWQgaW4KKwkJICogdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIHBn X3dhbGR1bXAgZXhlY3V0aW9uCisJCSAqLworCQl3YWxkaXIgPSB3YWxkaXIgPyBwZ19zdHJkdXAo d2FsZGlyKSA6IHBnX3N0cmR1cCgiLiIpOworCisJCS8qIFNldCB1cCBmb3IgcmVhZGluZyB0YXIg ZmlsZSAqLworCQlpbml0X2FyY2hpdmVfcmVhZGVyKCZwcml2YXRlLCB3YWxkaXIsIGNvbXByZXNz aW9uKTsKKworCQkvKiBSb3V0aW5lIHRvIGRlY29kZSBXQUwgZmlsZXMgaW4gdGFyIGFyY2hpdmUg Ki8KKwkJeGxvZ3JlYWRlcl9zdGF0ZSA9CisJCQlYTG9nUmVhZGVyQWxsb2NhdGUoV2FsU2VnU3os IHdhbGRpciwKKwkJCQkJCQkgICBYTF9ST1VUSU5FKC5wYWdlX3JlYWQgPSBUYXJXQUxEdW1wUmVh ZFBhZ2UsCisJCQkJCQkJCQkJICAuc2VnbWVudF9vcGVuID0gVGFyV0FMRHVtcE9wZW5TZWdtZW50 LAorCQkJCQkJCQkJCSAgLnNlZ21lbnRfY2xvc2UgPSBUYXJXQUxEdW1wQ2xvc2VTZWdtZW50KSwK KwkJCQkJCQkgICAmcHJpdmF0ZSk7CisJfQorCWVsc2UKKwl7CisJCS8qIFJvdXRpbmUgdG8gZGVj b2RlIFdBTCBmaWxlcyAqLworCQl4bG9ncmVhZGVyX3N0YXRlID0KKwkJCVhMb2dSZWFkZXJBbGxv Y2F0ZShXYWxTZWdTeiwgd2FsZGlyLAorCQkJCQkJCSAgIFhMX1JPVVRJTkUoLnBhZ2VfcmVhZCA9 IFdBTER1bXBSZWFkUGFnZSwKKwkJCQkJCQkJCQkgIC5zZWdtZW50X29wZW4gPSBXQUxEdW1wT3Bl blNlZ21lbnQsCisJCQkJCQkJCQkJICAuc2VnbWVudF9jbG9zZSA9IFdBTER1bXBDbG9zZVNlZ21l bnQpLAorCQkJCQkJCSAgICZwcml2YXRlKTsKKwl9CisKIAlpZiAoIXhsb2dyZWFkZXJfc3RhdGUp CiAJCXBnX2ZhdGFsKCJvdXQgb2YgbWVtb3J5IHdoaWxlIGFsbG9jYXRpbmcgYSBXQUwgcmVhZGlu ZyBwcm9jZXNzb3IiKTsKIApAQCAtMTMyOSw2ICsxNDI0LDkgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAKIAlYTG9nUmVhZGVyRnJlZSh4bG9ncmVhZGVyX3N0YXRlKTsKIAorCWlmIChp c19hcmNoaXZlKQorCQlmcmVlX2FyY2hpdmVfcmVhZGVyKCZwcml2YXRlKTsKKwogCXJldHVybiBF WElUX1NVQ0NFU1M7CiAKIGJhZF9hcmd1bWVudDoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2Fs ZHVtcC9wZ193YWxkdW1wLmggYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCmluZGV4 IDkyNmQ1MjlmOWQ2Li5lYzdhMzNkNDBlMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1w L3BnX3dhbGR1bXAuaAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCkBAIC0x Miw5ICsxMiwxMyBAQAogI2RlZmluZSBQR19XQUxEVU1QX0gKIAogI2luY2x1ZGUgImFjY2Vzcy94 bG9nZGVmcy5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2FzdHJlYW1lci5oIgogCiBleHRlcm4gaW50 CVdhbFNlZ1N6OwogCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitzdHJ1Y3QgQXJjaGl2ZWRX QUxFbnRyeTsKKwogLyogQ29udGFpbnMgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBkcml2 ZSBXQUwgZGVjb2RpbmcgKi8KIHR5cGVkZWYgc3RydWN0IFhMb2dEdW1wUHJpdmF0ZQogewpAQCAt MjIsNiArMjYsMzYgQEAgdHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2YXRlCiAJWExvZ1JlY1B0 cglzdGFydHB0cjsKIAlYTG9nUmVjUHRyCWVuZHB0cjsKIAlib29sCQllbmRwdHJfcmVhY2hlZDsK KworCS8qIEZpZWxkcyByZXF1aXJlZCB0byByZWFkIFdBTCBmcm9tIGFyY2hpdmUgKi8KKwljaGFy CSAgICphcmNoaXZlX25hbWU7CS8qIFRhciBhcmNoaXZlIG5hbWUgKi8KKwlpbnQJCQlhcmNoaXZl X2ZkOwkJLyogRmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgb3BlbiB0YXIgZmlsZSAqLworCisJYXN0 cmVhbWVyICAqYXJjaGl2ZV9zdHJlYW1lcjsKKworCS8qIFdoYXQgdGhlIGFyY2hpdmUgc3RyZWFt ZXIgaXMgY3VycmVudGx5IHJlYWRpbmcgKi8KKwlzdHJ1Y3QgQXJjaGl2ZWRXQUxFbnRyeSAqY3Vy X3dhbDsKKworCS8qCisJICogQWx0aG91Z2ggdGhlc2UgdmFsdWVzIGNhbiBiZSBlYXNpbHkgZGVy aXZlZCBmcm9tIHN0YXJ0cHRyIGFuZCBlbmRwdHIsCisJICogZG9pbmcgc28gcmVwZWF0ZWRseSBm b3IgZWFjaCBhcmNoaXZlZCBtZW1iZXIgd291bGQgYmUgaW5lZmZpY2llbnQsIGFzCisJICogaXQg d291bGQgaW52b2x2ZSByZWNhbGN1bGF0aW5nIGFuZCBmaWx0ZXJpbmcgb3V0IGlycmVsZXZhbnQg V0FMCisJICogc2VnbWVudHMuCisJICovCisJWExvZ1NlZ05vCXN0YXJ0U2VnTm87CisJWExvZ1Nl Z05vCWVuZFNlZ05vOwogfSBYTG9nRHVtcFByaXZhdGU7CiAKK2V4dGVybiBpbnQJb3Blbl9maWxl X2luX2RpcmVjdG9yeShjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKmZuYW1lKTsK KworZXh0ZXJuIGJvb2wgaXNfYXJjaGl2ZV9maWxlKGNvbnN0IGNoYXIgKmZuYW1lLAorCQkJCQkJ CXBnX2NvbXByZXNzX2FsZ29yaXRobSAqY29tcHJlc3Npb24pOworZXh0ZXJuIHZvaWQgaW5pdF9h cmNoaXZlX3JlYWRlcihYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAorCQkJCQkJCQljb25z dCBjaGFyICp3YWxkaXIsCisJCQkJCQkJCXBnX2NvbXByZXNzX2FsZ29yaXRobSBjb21wcmVzc2lv bik7CitleHRlcm4gdm9pZCBmcmVlX2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJp dmF0ZUluZm8pOworZXh0ZXJuIGludAlyZWFkX2FyY2hpdmVfd2FsX3BhZ2UoWExvZ0R1bXBQcml2 YXRlICpwcml2YXRlSW5mbywKKwkJCQkJCQkJICBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsCisJ CQkJCQkJCSAgU2l6ZSBjb3VudCwgY2hhciAqcmVhZEJ1ZmYpOworCiAjZW5kaWYJCQkJCQkJLyog ZW5kIG9mIFBHX1dBTERVTVBfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3Qv MDAxX2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4IGM4 ZmRjN2NiNGYzLi5iMTJiYmM2Zjk1YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3Qv MDAxX2Jhc2ljLnBsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbApAQCAt MywxMCArMywxMyBAQAogCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwn OwordXNlIEN3ZDsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKK215ICR0YXIgPSAkRU5We1RBUn07 CisKIHByb2dyYW1faGVscF9vaygncGdfd2FsZHVtcCcpOwogcHJvZ3JhbV92ZXJzaW9uX29rKCdw Z193YWxkdW1wJyk7CiBwcm9ncmFtX29wdGlvbnNfaGFuZGxpbmdfb2soJ3BnX3dhbGR1bXAnKTsK QEAgLTIzNSw3ICsyMzgsNyBAQCBjb21tYW5kX2xpa2UoCiBzdWIgdGVzdF9wZ193YWxkdW1wCiB7 CiAJbG9jYWwgJFRlc3Q6OkJ1aWxkZXI6OkxldmVsID0gJFRlc3Q6OkJ1aWxkZXI6OkxldmVsICsg MTsKLQlteSBAb3B0cyA9IEBfOworCW15ICgkcGF0aCwgQG9wdHMpID0gQF87CiAKIAlteSAoJHN0 ZG91dCwgJHN0ZGVycik7CiAKQEAgLTI0Myw2ICsyNDYsNyBAQCBzdWIgdGVzdF9wZ193YWxkdW1w CiAJCSdwZ193YWxkdW1wJywKIAkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24sCiAJCSctLWVuZCcg PT4gJGVuZF9sc24sCisJCSctLXBhdGgnID0+ICRwYXRoLAogCQlAb3B0cwogCSAgXSwKIAkgICc+ JyA9PiBcJHN0ZG91dCwKQEAgLTI1NCwxMSArMjU4LDUwIEBAIHN1YiB0ZXN0X3BnX3dhbGR1bXAK IAlyZXR1cm4gQGxpbmVzOwogfQogCi1teSBAbGluZXM7CisjIENyZWF0ZSBhIHRhciBhcmNoaXZl LCBzb3J0aW5nIHRoZSBmaWxlIG9yZGVyCitzdWIgZ2VuZXJhdGVfYXJjaGl2ZQoreworCW15ICgk YXJjaGl2ZSwgJGRpcmVjdG9yeSwgJGNvbXByZXNzaW9uX2ZsYWdzKSA9IEBfOworCisJbXkgQGZp bGVzOworCW9wZW5kaXIgbXkgJGRoLCAkZGlyZWN0b3J5IG9yIGRpZSAib3BlbmRpcjogJCEiOwor CXdoaWxlIChteSAkZW50cnkgPSByZWFkZGlyICRkaCkgeworCQkjIFNraXAgJy4nIGFuZCAnLi4n CisJCW5leHQgaWYgJGVudHJ5IGVxICcuJyB8fCAkZW50cnkgZXEgJy4uJzsKKwkJcHVzaCBAZmls ZXMsICRlbnRyeTsKKwl9CisJY2xvc2VkaXIgJGRoOworCisJQGZpbGVzID0gc29ydCBAZmlsZXM7 CisKKwkjIG1vdmUgaW50byB0aGUgV0FMIGRpcmVjdG9yeSBiZWZvcmUgYXJjaGl2aW5nIGZpbGVz CisJbXkgJGN3ZCA9IGdldGN3ZDsKKwljaGRpcigkZGlyZWN0b3J5KSB8fCBkaWUgImNoZGlyOiAk ISI7CisJY29tbWFuZF9vayhbJHRhciwgJGNvbXByZXNzaW9uX2ZsYWdzLCAkYXJjaGl2ZSwgQGZp bGVzXSk7CisJY2hkaXIoJGN3ZCkgfHwgZGllICJjaGRpcjogJCEiOworfQorCitteSAkdG1wX2Rp ciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyX3Nob3J0KCk7CiAKIG15IEBzY2Vu YXJpb3MgPSAoCiAJewotCQkncGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyCisJCSdwYXRoJyA9PiAk bm9kZS0+ZGF0YV9kaXIsCisJCSdpc19hcmNoaXZlJyA9PiAwLAorCQknZW5hYmxlZCcgPT4gMQor CX0sCisJeworCQkncGF0aCcgPT4gIiR0bXBfZGlyL3BnX3dhbC50YXIiLAorCQknY29tcHJlc3Np b25fbWV0aG9kJyA9PiAnbm9uZScsCisJCSdjb21wcmVzc2lvbl9mbGFncycgPT4gJy1jZicsCisJ CSdpc19hcmNoaXZlJyA9PiAxLAorCQknZW5hYmxlZCcgPT4gMQorCX0sCisJeworCQkncGF0aCcg PT4gIiR0bXBfZGlyL3BnX3dhbC50YXIuZ3oiLAorCQknY29tcHJlc3Npb25fbWV0aG9kJyA9PiAn Z3ppcCcsCisJCSdjb21wcmVzc2lvbl9mbGFncycgPT4gJy1jemYnLAorCQknaXNfYXJjaGl2ZScg PT4gMSwKKwkJJ2VuYWJsZWQnID0+IGNoZWNrX3BnX2NvbmZpZygiI2RlZmluZSBIQVZFX0xJQlog MSIpCiAJfSk7CiAKIGZvciBteSAkc2NlbmFyaW8gKEBzY2VuYXJpb3MpCkBAIC0yNjcsNiArMzEw LDE5IEBAIGZvciBteSAkc2NlbmFyaW8gKEBzY2VuYXJpb3MpCiAKIAlTS0lQOgogCXsKKwkJc2tp cCAidGFyIGNvbW1hbmQgaXMgbm90IGF2YWlsYWJsZSIsIDMKKwkJICBpZiAhZGVmaW5lZCAkdGFy OworCQlza2lwICIkc2NlbmFyaW8tPnsnY29tcHJlc3Npb25fbWV0aG9kJ30gY29tcHJlc3Npb24g bm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkIiwgMworCQkgIGlmICEkc2NlbmFyaW8tPnsnZW5h YmxlZCd9ICYmICRzY2VuYXJpby0+eydpc19hcmNoaXZlJ307CisKKwkJICAjIGNyZWF0ZSBwZ193 YWwgYXJjaGl2ZQorCQkgIGlmICgkc2NlbmFyaW8tPnsnaXNfYXJjaGl2ZSd9KQorCQkgIHsKKwkJ CSAgZ2VuZXJhdGVfYXJjaGl2ZSgkcGF0aCwKKwkJCQkgICRub2RlLT5kYXRhX2RpciAuICcvcGdf d2FsJywKKwkJCQkgICRzY2VuYXJpby0+eydjb21wcmVzc2lvbl9mbGFncyd9KTsKKwkJICB9CisK IAkJY29tbWFuZF9mYWlsc19saWtlKAogCQkJWyAncGdfd2FsZHVtcCcsICctLXBhdGgnID0+ICRw YXRoIF0sCiAJCQlxci9lcnJvcjogbm8gc3RhcnQgV0FMIGxvY2F0aW9uIGdpdmVuLywKQEAgLTI5 OCwzOCArMzU0LDQyIEBAIGZvciBteSAkc2NlbmFyaW8gKEBzY2VuYXJpb3MpCiAJCQlxci9lcnJv cjogZXJyb3IgaW4gV0FMIHJlY29yZCBhdC8sCiAJCQknZXJyb3JzIGFyZSBzaG93biB3aXRoIC0t cXVpZXQnKTsKIAotCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgp OworCQlteSBAbGluZXM7CisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCk7CiAJCWlz KGdyZXAoIS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1n ciBsaW5lcycpOwogCi0JCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1wYXRoJyA9PiAkcGF0 aCwgJy0tbGltaXQnID0+IDYpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICct LWxpbWl0JyA9PiA2KTsKIAkJaXMoQGxpbmVzLCA2LCAnbGltaXQgb3B0aW9uIG9ic2VydmVkJyk7 CiAKLQkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1mdWxs cGFnZScpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLWZ1bGxwYWdlJyk7 CiAJCWlzKGdyZXAoIS9ecm1ncjouKlxiRlBXXGIvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBs aW5lcyBhcmUgRlBXJyk7CiAKLQkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ ICRwYXRoLCAnLS1zdGF0cycpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICct LXN0YXRzJyk7CiAJCWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8sICJzdGF0aXN0 aWNzIG9uIHN0ZG91dCIpOwogCQlpcyhncmVwKC9ecm1ncjovLCBAbGluZXMpLCAwLCAnbm8gcm1n ciBsaW5lcyBvdXRwdXQnKTsKIAotCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcg PT4gJHBhdGgsICctLXN0YXRzPXJlY29yZCcpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAo JHBhdGgsICctLXN0YXRzPXJlY29yZCcpOwogCQlsaWtlKCRsaW5lc1swXSwgcXIvV0FMIHN0YXRp c3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKIAkJaXMoZ3JlcCgvXnJtZ3I6LywgQGxp bmVzKSwgMCwgJ25vIHJtZ3IgbGluZXMgb3V0cHV0Jyk7CiAKLQkJQGxpbmVzID0gdGVzdF9wZ193 YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1ybWdyJyA9PiAnQnRyZWUnKTsKKwkJQGxpbmVz ID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAnLS1ybWdyJyA9PiAnQnRyZWUnKTsKIAkJaXMoZ3Jl cCghL15ybWdyOiBCdHJlZS8sIEBsaW5lcyksIDAsICdvbmx5IEJ0cmVlIGxpbmVzJyk7CiAKLQkJ QGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1mb3JrJyA9PiAn aW5pdCcpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLWZvcmsnID0+ICdp bml0Jyk7CiAJCWlzKGdyZXAoIS9mb3JrIGluaXQvLCBAbGluZXMpLCAwLCAnb25seSBpbml0IGZv cmsgbGluZXMnKTsKIAotCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBh dGgsCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwKIAkJCSctLXJlbGF0aW9uJyA9 PiAiJGRlZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9vaWQvJHJlbF90MV9vaWQiKTsKIAkJaXMo Z3JlcCghL3JlbCAkZGVmYXVsdF90c19vaWRcLyRwb3N0Z3Jlc19kYl9vaWRcLyRyZWxfdDFfb2lk LywgQGxpbmVzKSwKIAkJCTAsICdvbmx5IGxpbmVzIGZvciBzZWxlY3RlZCByZWxhdGlvbicpOwog Ci0JCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1wYXRoJyA9PiAkcGF0aCwKKwkJQGxpbmVz ID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLAogCQkJJy0tcmVsYXRpb24nID0+ICIkZGVmYXVsdF90 c19vaWQvJHBvc3RncmVzX2RiX29pZC8kcmVsX2kxYV9vaWQiLAogCQkJJy0tYmxvY2snID0+IDEp OwogCQlpcyhncmVwKCEvXGJibGsgMVxiLywgQGxpbmVzKSwgMCwgJ29ubHkgbGluZXMgZm9yIHNl bGVjdGVkIGJsb2NrJyk7CisKKwkJIyBDbGVhbnVwLgorCQl1bmxpbmsgJHBhdGggaWYgJHNjZW5h cmlvLT57J2lzX2FyY2hpdmUnfTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5k ZXggNTdhOGYwMzY2YTUuLjk4MWNkYjY5MTc1IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApA QCAtMTM5LDYgKzEzOSw4IEBAIEFyY2hpdmVPcHRzCiBBcmNoaXZlU2h1dGRvd25DQgogQXJjaGl2 ZVN0YXJ0dXBDQgogQXJjaGl2ZVN0cmVhbVN0YXRlCitBcmNoaXZlZFdBTEVudHJ5CitBcmNoaXZl ZFdBTF9oYXNoCiBBcmNoaXZlck91dHB1dAogQXJjaGl2ZXJTdGFnZQogQXJyYXlBbmFseXplRXh0 cmFEYXRhCkBAIC0zNDY2LDYgKzM0NjgsNyBAQCBhc3RyZWFtZXJfcmVjb3ZlcnlfaW5qZWN0b3IK IGFzdHJlYW1lcl90YXJfYXJjaGl2ZXIKIGFzdHJlYW1lcl90YXJfcGFyc2VyCiBhc3RyZWFtZXJf dmVyaWZ5Cithc3RyZWFtZXJfd2FsZHVtcAogYXN0cmVhbWVyX3pzdGRfZnJhbWUKIGF1dGhfcGFz c3dvcmRfaG9va190eXAKIGF1dG92YWNfdGFibGUKLS0gCjIuNDcuMQoK --000000000000f4c5340644792656 Content-Type: application/x-patch; name="v9-0005-pg_waldump-Remove-the-restriction-on-the-order-of.patch" Content-Disposition: attachment; filename="v9-0005-pg_waldump-Remove-the-restriction-on-the-order-of.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miflfjwu4 RnJvbSA0ODE1ZWI2ZWYyMTgyYjhlZjU1MTJiZWQ4NDJhZWE5ODIxNTAyODUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgNiBOb3YgMjAyNSAxMzo0ODozMyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjkgNS84XSBwZ193 YWxkdW1wOiBSZW1vdmUgdGhlIHJlc3RyaWN0aW9uIG9uIHRoZSBvcmRlciBvZgogYXJjaGl2ZWQg V0FMIGZpbGVzLgoKV2l0aCBwcmV2aW91cyBwYXRjaCwgcGdfd2FsZHVtcCB3b3VsZCBzdG9wIGRl Y29kaW5nIGlmIFdBTCBmaWxlcyB3ZXJlCm5vdCBpbiB0aGUgcmVxdWlyZWQgc2VxdWVuY2UuIFdp dGggdGhpcyBwYXRjaCwgZGVjb2Rpbmcgd2lsbCBub3cKY29udGludWUuICBBbnkgV0FMIGZpbGUg dGhhdCBpcyBvdXQgb2Ygb3JkZXIgd2lsbCBiZSB3cml0dGVuIHRvIGEKdGVtcG9yYXJ5IGxvY2F0 aW9uLCBmcm9tIHdoaWNoIGl0IHdpbGwgYmUgcmVhZCBsYXRlci4gT25jZSBhIHRlbXBvcmFyeQpm aWxlIGhhcyBiZWVuIHJlYWQsIGl0IHdpbGwgYmUgcmVtb3ZlZC4KLS0tCiBkb2Mvc3JjL3NnbWwv cmVmL3BnX3dhbGR1bXAuc2dtbCAgICAgfCAgIDggKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9hcmNo aXZlX3dhbGR1bXAuYyB8IDIzMyArKysrKysrKysrKysrKysrKysrKysrKystLS0KIHNyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgICAgICB8ICA0MSArKysrLQogc3JjL2Jpbi9wZ193YWxk dW1wL3BnX3dhbGR1bXAuaCAgICAgIHwgICA0ICsKIHNyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9i YXNpYy5wbCAgICB8ICAgMyArLQogNSBmaWxlcyBjaGFuZ2VkLCAyNjUgaW5zZXJ0aW9ucygrKSwg MjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1w LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbAppbmRleCBkMDA0YmIwZjY3 ZS4uMjVmOTZmODYxNjggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCkBAIC0xNDksOCArMTQ5 LDEyIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAgICBvZiA8ZW52YXI+UEdEQVRB PC9lbnZhcj4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgotICAgICAgICBJZiBhIHRh ciBhcmNoaXZlIGlzIHByb3ZpZGVkLCBpdHMgV0FMIHNlZ21lbnQgZmlsZXMgbXVzdCBiZSBpbgot ICAgICAgICBzZXF1ZW50aWFsIG9yZGVyOyBvdGhlcndpc2UsIGFuIGVycm9yIHdpbGwgYmUgcmVw b3J0ZWQuCisgICAgICAgIElmIGEgdGFyIGFyY2hpdmUgaXMgcHJvdmlkZWQgYW5kIGl0cyBXQUwg c2VnbWVudCBmaWxlcyBhcmUgbm90IGluCisgICAgICAgIHNlcXVlbnRpYWwgb3JkZXIsIHRob3Nl IGZpbGVzIHdpbGwgYmUgd3JpdHRlbiB0byBhIHRlbXBvcmFyeSBkaXJlY3RvcnkKKyAgICAgICAg bmFtZWQgc3RhcnRpbmcgd2l0aCA8ZmlsZW5hbWU+d2FsZHVtcC88L2ZpbGVuYW1lPi4gVGhpcyBk aXJlY3Rvcnkgd2lsbCBiZQorICAgICAgICBjcmVhdGVkIGluc2lkZSB0aGUgZGlyZWN0b3J5IHNw ZWNpZmllZCBieSB0aGUgPGVudmFyPlRNUERJUjwvZW52YXI+CisgICAgICAgIGVudmlyb25tZW50 IHZhcmlhYmxlIGlmIGl0IGlzIHNldDsgb3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGNyZWF0ZWQgd2l0 aGluCisgICAgICAgIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgdGFyIGFyY2hpdmUuCiAgICAg ICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMgYi9zcmMvYmluL3Bn X3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMKaW5kZXggNjMxNDFkYzJlZTIuLjIwMzg4NzZhNTE2 IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMKKysrIGIv c3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5jCkBAIC0xNyw2ICsxNyw3IEBACiAj aW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRlcm5hbC5oIgor I2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKICNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgi CiAjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zaW1wbGVf bGlzdC5oIgpAQCAtMjcsNiArMjgsOSBAQAogICovCiAjZGVmaW5lIFJFQURfQ0hVTktfU0laRQkJ CQkoMTI4ICogMTAyNCkKIAorLyogVGVtcG9yYXJ5IGV4cG9ydGVkIFdBTCBmaWxlIGRpcmVjdG9y eSAqLworc3RhdGljIGNoYXIgKlRtcFdhbFNlZ0RpciA9IE5VTEw7CisKIC8qIFN0cnVjdHVyZSBm b3Igc3RvcmluZyB0aGUgV0FMIHNlZ21lbnQgZGF0YSBmcm9tIHRoZSBhcmNoaXZlICovCiB0eXBl ZGVmIHN0cnVjdCBBcmNoaXZlZFdBTEVudHJ5CiB7CkBAIC02NSw2ICs2OSwxMSBAQCB0eXBlZGVm IHN0cnVjdCBhc3RyZWFtZXJfd2FsZHVtcAogc3RhdGljIGludAlyZWFkX2FyY2hpdmVfZmlsZShY TG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBTaXplIGNvdW50KTsKIHN0YXRpYyBBcmNoaXZl ZFdBTEVudHJ5ICpnZXRfYXJjaGl2ZV93YWxfZW50cnkoWExvZ1NlZ05vIHNlZ25vLAogCQkJCQkJ CQkJCQkgICBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKTsKK3N0YXRpYyB2b2lkIHNldHVw X3RtcHNlZ19kaXIoY29uc3QgY2hhciAqd2FsZGlyKTsKK3N0YXRpYyB2b2lkIGNsZWFudXBfdG1w c2VnX2Rpcl9hdGV4aXQodm9pZCk7CisKK3N0YXRpYyBGSUxFICpwcmVwYXJlX3RtcF93cml0ZShY TG9nU2VnTm8gc2Vnbm8pOworc3RhdGljIHZvaWQgcGVyZm9ybV90bXBfd3JpdGUoWExvZ1NlZ05v IHNlZ25vLCBTdHJpbmdJbmZvIGJ1ZiwgRklMRSAqZmlsZSk7CiAKIHN0YXRpYyBhc3RyZWFtZXIg KmFzdHJlYW1lcl93YWxkdW1wX25ldyhYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKTsKIHN0 YXRpYyB2b2lkIGFzdHJlYW1lcl93YWxkdW1wX2NvbnRlbnQoYXN0cmVhbWVyICpzdHJlYW1lciwK QEAgLTEyMCwxMCArMTI5LDExIEBAIGlzX2FyY2hpdmVfZmlsZShjb25zdCBjaGFyICpmbmFtZSwg cGdfY29tcHJlc3NfYWxnb3JpdGhtICpjb21wcmVzc2lvbikKIH0KIAogLyoKLSAqIEluaXRpYWxp emVzIHRoZSB0YXIgYXJjaGl2ZSByZWFkZXIgdG8gcmVhZCBXQUwgZmlsZXMgZnJvbSB0aGUgYXJj aGl2ZSwKLSAqIGNyZWF0ZXMgYSBoYXNoIHRhYmxlIHRvIHN0b3JlIHRoZW0sIHBlcmZvcm1zIHF1 aWNrIGV4aXN0ZW5jZSBjaGVja3MgZm9yIFdBTAotICogZW50cmllcyBpbiB0aGUgYXJjaGl2ZSBh bmQgcmV0cmlldmVzIHRoZSBXQUwgc2VnbWVudCBzaXplLCBhbmQgc2V0cyB1cAotICogZmlsdGVy aW5nIGNyaXRlcmlhIGZvciByZWxldmFudCBlbnRyaWVzLgorICogSW5pdGlhbGl6ZXMgdGhlIHRh ciBhcmNoaXZlIHJlYWRlciwgY3JlYXRlcyBhIGhhc2ggdGFibGUgZm9yIFdBTCBlbnRyaWVzLAor ICogY2hlY2tzIGZvciBleGlzdGluZyB2YWxpZCBXQUwgc2VnbWVudHMgaW4gdGhlIGFyY2hpdmUg ZmlsZSBhbmQgcmV0cmlldmVzIHRoZQorICogc2VnbWVudCBzaXplLCBhbmQgc2V0cyB1cCBmaWx0 ZXJzIGZvciByZWxldmFudCBlbnRyaWVzLiBJdCBhbHNvIGNvbmZpZ3VyZXMgYQorICogdGVtcG9y YXJ5IGRpcmVjdG9yeSBmb3Igb3V0LW9mLW9yZGVyIFdBTCBkYXRhIGFuZCByZWdpc3RlcnMgYW4g ZXhpdCBjYWxsYmFjaworICogdG8gY2xlYW4gdXAgdGVtcG9yYXJ5IGZpbGVzLgogICovCiB2b2lk CiBpbml0X2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sIGNvbnN0 IGNoYXIgKndhbGRpciwKQEAgLTE5OSw2ICsyMDksMTMgQEAgaW5pdF9hcmNoaXZlX3JlYWRlcihY TG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBjb25zdCBjaGFyICp3YWxkaXIsCiAJCXByaXZh dGVJbmZvLT5lbmRTZWdObyA9IFVJTlQ2NF9NQVg7CiAJZWxzZQogCQlYTEJ5dGVUb1NlZyhwcml2 YXRlSW5mby0+ZW5kcHRyLCBwcml2YXRlSW5mby0+ZW5kU2VnTm8sIFdhbFNlZ1N6KTsKKworCS8q CisJICogU2V0dXAgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0byBzdG9yZSBXQUwgc2VnbWVudHMgYW5k IHNldCB1cCBhbiBleGl0CisJICogY2FsbGJhY2sgdG8gcmVtb3ZlIGl0IHVwb24gY29tcGxldGlv bi4KKwkgKi8KKwlzZXR1cF90bXBzZWdfZGlyKHdhbGRpcik7CisJYXRleGl0KGNsZWFudXBfdG1w c2VnX2Rpcl9hdGV4aXQpOwogfQogCiAvKgpAQCAtMzc0LDEzICszOTEsMTYgQEAgcmVhZF9hcmNo aXZlX2ZpbGUoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywgU2l6ZSBjb3VudCkKIC8qCiAg KiBSZXR1cm5zIHRoZSBhcmNoaXZlZCBXQUwgZW50cnkgZnJvbSB0aGUgaGFzaCB0YWJsZSBpZiBp dCBleGlzdHMuIE90aGVyd2lzZSwKICAqIGl0IGludm9rZXMgdGhlIHJvdXRpbmUgdG8gcmVhZCB0 aGUgYXJjaGl2ZWQgZmlsZSBhbmQgcmV0cmlldmUgdGhlIGVudHJ5IGlmCi0gKiBpdCBpcyBub3Qg YWxyZWFkeSBpbiBoYXNoIHRhYmxlLgorICogaXQgaXMgbm90IGFscmVhZHkgcHJlc2VudCBpbiB0 aGUgaGFzaCB0YWJsZS4gSWYgdGhlIGFyY2hpdmUgc3RyZWFtZXIgaGFwcGVucworICogdG8gYmUg cmVhZGluZyBhIFdBTCBmcm9tIGFyY2hpdmUgZmlsZSB0aGF0IGlzIG5vdCBjdXJyZW50bHkgbmVl ZGVkLCB0aGF0IFdBTAorICogZGF0YSBpcyB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGZpbGUuCiAg Ki8KIHN0YXRpYyBBcmNoaXZlZFdBTEVudHJ5ICoKIGdldF9hcmNoaXZlX3dhbF9lbnRyeShYTG9n U2VnTm8gc2Vnbm8sIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pCiB7CiAJQXJjaGl2ZWRX QUxFbnRyeSAqZW50cnkgPSBOVUxMOwogCWNoYXIJCWZuYW1lW01BWEZOQU1FTEVOXTsKKwlGSUxF CSAgICp3cml0ZV9mcCA9IE5VTEw7CiAKIAkvKiBTZWFyY2ggaGFzaCB0YWJsZSAqLwogCWVudHJ5 ID0gQXJjaGl2ZWRXQUxfbG9va3VwKEFyY2hpdmVkV0FMX0hUQUIsIHNlZ25vKTsKQEAgLTM5NCw4 ICs0MTQsMTEgQEAgZ2V0X2FyY2hpdmVfd2FsX2VudHJ5KFhMb2dTZWdObyBzZWdubywgWExvZ0R1 bXBQcml2YXRlICpwcml2YXRlSW5mbykKIAkJZW50cnkgPSBwcml2YXRlSW5mby0+Y3VyX3dhbDsK IAogCQkvKiBGZXRjaCBtb3JlIGRhdGEgKi8KLQkJaWYgKHJlYWRfYXJjaGl2ZV9maWxlKHByaXZh dGVJbmZvLCBSRUFEX0NIVU5LX1NJWkUpID09IDApCi0JCQlicmVhazsJCQkvKiBhcmNoaXZlIGZp bGUgZW5kZWQgKi8KKwkJaWYgKGVudHJ5ID09IE5VTEwgfHwgZW50cnktPmJ1Zi5sZW4gPT0gMCkK KwkJeworCQkJaWYgKHJlYWRfYXJjaGl2ZV9maWxlKHByaXZhdGVJbmZvLCBSRUFEX0NIVU5LX1NJ WkUpID09IDApCisJCQkJYnJlYWs7CQkJLyogYXJjaGl2ZSBmaWxlIGVuZGVkICovCisJCX0KIAog CQkvKgogCQkgKiBFaXRoZXIsIGhlcmUgZm9yIHRoZSBmaXJzdCB0aW1lLCBvciB0aGUgYXJjaGl2 ZWQgc3RyZWFtZXIgaXMKQEAgLTQyMSwyMCArNDQ0LDMxIEBAIGdldF9hcmNoaXZlX3dhbF9lbnRy eShYTG9nU2VnTm8gc2Vnbm8sIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pCiAJCX0KIAog CQkvKgotCQkgKiBYWFg6IElmIHRoZSBzZWdtZW50IGJlaW5nIHJlYWQgbm90IHRoZSByZXF1ZXN0 ZWQgb25lLCB0aGUgZGF0YSBtdXN0Ci0JCSAqIGJlIGJ1ZmZlcmVkLCBhcyB3ZSBjdXJyZW50bHkg bGFjayB0aGUgbWVjaGFuaXNtIHRvIHdyaXRlIGl0IHRvIGEKLQkJICogdGVtcG9yYXJ5IGZpbGUu IFRoaXMgaXMgYSBrbm93biBsaW1pdGF0aW9uIHRoYXQgd2lsbCBiZSBmaXhlZCBpbiB0aGUKLQkJ ICogbmV4dCBwYXRjaCwgYXMgdGhlIGJ1ZmZlciBjb3VsZCBncm93IHVwIHRvIHRoZSBmdWxsIFdB TCBzZWdtZW50Ci0JCSAqIHNpemUuCisJCSAqIEFyY2hpdmUgc3RyZWFtZXIgaXMgY3VycmVudGx5 IHJlYWRpbmcgYSBmaWxlIHRoYXQgaXNuJ3QgdGhlIG9uZQorCQkgKiBhc2tlZCBmb3IsIGJ1dCBp dCdzIHJlcXVpcmVkIGZvciBhIGZ1dHVyZSBmZWF0dXJlLiBJdCBzaG91bGQgYmUKKwkJICogd3Jp dHRlbiB0byBhIHRlbXBvcmFyeSBsb2NhdGlvbiBmb3IgcmV0cmlldmFsIHdoZW4gbmVlZGVkLgog CQkgKi8KLQkJaWYgKHNlZ25vID4gZW50cnktPnNlZ25vKQotCQkJY29udGludWU7CiAKLQkJLyog V0FMIHNlZ21lbnRzIG11c3QgYmUgYXJjaGl2ZWQgaW4gb3JkZXIgKi8KLQkJcGdfbG9nX2Vycm9y KCJXQUwgZmlsZXMgYXJlIG5vdCBhcmNoaXZlZCBpbiBzZXF1ZW50aWFsIG9yZGVyIik7Ci0JCXBn X2xvZ19lcnJvcl9kZXRhaWwoIkV4cGVjdGluZyBzZWdtZW50IG51bWJlciAiIFVJTlQ2NF9GT1JN QVQgIiBidXQgZm91bmQgIiBVSU5UNjRfRk9STUFUICIuIiwKLQkJCQkJCQlzZWdubywgZW50cnkt PnNlZ25vKTsKLQkJZXhpdCgxKTsKKwkJLyogQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUgaWYgb25l IGRvZXMgbm90IGFscmVhZHkgZXhpc3QgKi8KKwkJaWYgKCFlbnRyeS0+dG1wc2VnX2V4aXN0cykK KwkJeworCQkJd3JpdGVfZnAgPSBwcmVwYXJlX3RtcF93cml0ZShlbnRyeS0+c2Vnbm8pOworCQkJ ZW50cnktPnRtcHNlZ19leGlzdHMgPSB0cnVlOworCQl9CisKKwkJLyogRmx1c2ggZGF0YSBmcm9t IHRoZSBidWZmZXIgdG8gdGhlIGZpbGUgKi8KKwkJcGVyZm9ybV90bXBfd3JpdGUoZW50cnktPnNl Z25vLCAmZW50cnktPmJ1Ziwgd3JpdGVfZnApOworCQlyZXNldFN0cmluZ0luZm8oJmVudHJ5LT5i dWYpOworCisJCS8qCisJCSAqIFRoZSBjaGFuZ2UgaW4gdGhlIGN1cnJlbnQgc2VnbWVudCBlbnRy eSBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVhZGluZworCQkgKiBvZiB0aGlzIGZpbGUgaGFzIGVuZGVk LgorCQkgKi8KKwkJaWYgKGVudHJ5ICE9IHByaXZhdGVJbmZvLT5jdXJfd2FsICYmIHdyaXRlX2Zw ICE9IE5VTEwpCisJCXsKKwkJCWZjbG9zZSh3cml0ZV9mcCk7CisJCQl3cml0ZV9mcCA9IE5VTEw7 CisJCX0KIAl9CiAKIAkvKiBSZXF1ZXN0ZWQgV0FMIHNlZ21lbnQgbm90IGZvdW5kICovCkBAIC00 NDMsNyArNDc3LDE2NiBAQCBnZXRfYXJjaGl2ZV93YWxfZW50cnkoWExvZ1NlZ05vIHNlZ25vLCBY TG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKQogfQogCiAvKgotICogQ3JlYXRlIGFuIGFzdHJl YW1lciB0aGF0IGNhbiByZWFkIFdBTCBmcm9tIGEgdGFyIGZpbGUuCisgKiBTZXQgdXAgYSB0ZW1w b3JhcnkgZGlyZWN0b3J5IHRvIHRlbXBvcmFyaWx5IHN0b3JlIFdBTCBzZWdtZW50cy4KKyAqLwor c3RhdGljIHZvaWQKK3NldHVwX3RtcHNlZ19kaXIoY29uc3QgY2hhciAqd2FsZGlyKQoreworCWNo YXIJICAgKnRlbXBsYXRlOworCisJLyoKKwkgKiBVc2UgdGhlIGRpcmVjdG9yeSBzcGVjaWZpZWQg YnkgdGhlIFRNUERJUiBlbnZpcm9ubWVudCB2YXJpYWJsZS4gSWYgaXQncworCSAqIG5vdCBzZXQs IHVzZSB0aGUgcHJvdmlkZWQgV0FMIGRpcmVjdG9yeSB0byBleHRyYWN0IFdBTCBmaWxlCisJICog dGVtcG9yYXJpbHkuCisJICovCisJdGVtcGxhdGUgPSBwc3ByaW50ZigiJXMvd2FsZHVtcF90bXAt WFhYWFhYIiwKKwkJCQkJCWdldGVudigiVE1QRElSIikgPyBnZXRlbnYoIlRNUERJUiIpIDogd2Fs ZGlyKTsKKwlUbXBXYWxTZWdEaXIgPSBta2R0ZW1wKHRlbXBsYXRlKTsKKworCWlmIChUbXBXYWxT ZWdEaXIgPT0gTlVMTCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwi JXNcIjogJW0iLCB0ZW1wbGF0ZSk7CisKKwljYW5vbmljYWxpemVfcGF0aChUbXBXYWxTZWdEaXIp OworCisJcGdfbG9nX2RlYnVnKCJjcmVhdGVkIGRpcmVjdG9yeSBcIiVzXCIiLCBUbXBXYWxTZWdE aXIpOworfQorCisvKgorICogUmVtb3ZlcyB0aGUgdGVtcG9yYXJpbHkgc3RvcmUgV0FMIHNlZ21l bnRzLCBpZiBhbnksIGF0IGV4aXRpbmcuCisgKi8KK3N0YXRpYyB2b2lkCitjbGVhbnVwX3RtcHNl Z19kaXJfYXRleGl0KHZvaWQpCit7CisJQXJjaGl2ZWRXQUxfaXRlcmF0b3IgaXQ7CisJQXJjaGl2 ZWRXQUxFbnRyeSAqZW50cnk7CisKKwkvKiBSZW1vdmUgdGVtcG9yYXJ5IHNlZ21lbnRzICovCisJ QXJjaGl2ZWRXQUxfc3RhcnRfaXRlcmF0ZShBcmNoaXZlZFdBTF9IVEFCLCAmaXQpOworCXdoaWxl ICgoZW50cnkgPSBBcmNoaXZlZFdBTF9pdGVyYXRlKEFyY2hpdmVkV0FMX0hUQUIsICZpdCkpICE9 IE5VTEwpCisJeworCQlpZiAoZW50cnktPnRtcHNlZ19leGlzdHMpCisJCXsKKwkJCXJlbW92ZV90 bXBfd2Fsc2VnKGVudHJ5LT5zZWdubywgZmFsc2UpOworCQkJZW50cnktPnRtcHNlZ19leGlzdHMg PSBmYWxzZTsKKwkJfQorCX0KKworCS8qIFJlbW92ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5ICovCisJ aWYgKHJtZGlyKFRtcFdhbFNlZ0RpcikgPT0gMCkKKwkJcGdfbG9nX2RlYnVnKCJyZW1vdmVkIGRp cmVjdG9yeSBcIiVzXCIiLCBUbXBXYWxTZWdEaXIpOworfQorCisvKgorICogR2VuZXJhdGUgdGhl IHRlbXBvcmFyeSBXQUwgZmlsZSBwYXRoLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgY2FsbGVyIGlz IHJlc3BvbnNpYmxlIHRvIHBmcmVlIGl0LgorICovCitjaGFyICoKK2dldF90bXBfd2Fsc2VnX3Bh dGgoWExvZ1NlZ05vIHNlZ25vKQoreworCWNoYXIJICAgKmZwYXRoID0gKGNoYXIgKikgcGFsbG9j KE1BWFBHUEFUSCk7CisKKwlBc3NlcnQoVG1wV2FsU2VnRGlyKTsKKworCXNucHJpbnRmKGZwYXRo LCBNQVhQR1BBVEgsICIlcy8lMDhYJTA4WCIsCisJCQkgVG1wV2FsU2VnRGlyLAorCQkJICh1aW50 MzIpIChzZWdubyAvIFhMb2dTZWdtZW50c1BlclhMb2dJZChXYWxTZWdTeikpLAorCQkJICh1aW50 MzIpIChzZWdubyAlIFhMb2dTZWdtZW50c1BlclhMb2dJZChXYWxTZWdTeikpKTsKKworCXJldHVy biBmcGF0aDsKK30KKworLyoKKyAqIFJvdXRpbmUgdG8gY2hlY2sgd2hldGhlciBhIHRlbXBvcmFy eSBmaWxlIGV4aXN0cyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgV0FMCisgKiBzZWdtZW50IG51bWJl ci4KKyAqLworYm9vbAordG1wX3dhbHNlZ19leGlzdHMoWExvZ1NlZ05vIHNlZ25vKQoreworCUFy Y2hpdmVkV0FMRW50cnkgKmVudHJ5OworCisJZW50cnkgPSBBcmNoaXZlZFdBTF9sb29rdXAoQXJj aGl2ZWRXQUxfSFRBQiwgc2Vnbm8pOworCisJaWYgKGVudHJ5ID09IE5VTEwpCisJCXJldHVybiBm YWxzZTsKKworCXJldHVybiBlbnRyeS0+dG1wc2VnX2V4aXN0czsKK30KKworLyoKKyAqIENyZWF0 ZSBhbiBlbXB0eSBwbGFjZWhvbGRlciBmaWxlIGFuZCByZXR1cm4gaXRzIGhhbmRsZS4KKyAqLwor c3RhdGljIEZJTEUgKgorcHJlcGFyZV90bXBfd3JpdGUoWExvZ1NlZ05vIHNlZ25vKQoreworCUZJ TEUJICAgKmZpbGU7CisJY2hhcgkgICAqZnBhdGg7CisKKwlmcGF0aCA9IGdldF90bXBfd2Fsc2Vn X3BhdGgoc2Vnbm8pOworCisJLyogQ3JlYXRlIGFuIGVtcHR5IHBsYWNlaG9sZGVyICovCisJZmls ZSA9IGZvcGVuKGZwYXRoLCBQR19CSU5BUllfVyk7CisJaWYgKGZpbGUgPT0gTlVMTCkKKwkJcGdf ZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVtIiwgZnBhdGgpOworCisjaWZu ZGVmIFdJTjMyCisJaWYgKGNobW9kKGZwYXRoLCBwZ19maWxlX2NyZWF0ZV9tb2RlKSkKKwkJcGdf ZmF0YWwoImNvdWxkIG5vdCBzZXQgcGVybWlzc2lvbnMgb24gZmlsZSBcIiVzXCI6ICVtIiwKKwkJ CQkgZnBhdGgpOworI2VuZGlmCisKKwlwZ19sb2dfZGVidWcoInRlbXBvcmFyaWx5IGV4cG9ydGlu ZyBmaWxlIFwiJXNcIiIsIGZwYXRoKTsKKwlwZnJlZShmcGF0aCk7CisKKwlyZXR1cm4gZmlsZTsK K30KKworLyoKKyAqIFdyaXRlIGJ1ZmZlciBkYXRhIHRvIHRoZSBnaXZlbiBmaWxlIGhhbmRsZS4K KyAqLworc3RhdGljIHZvaWQKK3BlcmZvcm1fdG1wX3dyaXRlKFhMb2dTZWdObyBzZWdubywgU3Ry aW5nSW5mbyBidWYsIEZJTEUgKmZpbGUpCit7CisJQXNzZXJ0KGZpbGUpOworCisJZXJybm8gPSAw OworCWlmIChidWYtPmxlbiA+IDAgJiYgZndyaXRlKGJ1Zi0+ZGF0YSwgYnVmLT5sZW4sIDEsIGZp bGUpICE9IDEpCisJeworCQkvKgorCQkgKiBJZiB3cml0ZSBkaWRuJ3Qgc2V0IGVycm5vLCBhc3N1 bWUgcHJvYmxlbSBpcyBubyBkaXNrIHNwYWNlCisJCSAqLworCQlpZiAoZXJybm8gPT0gMCkKKwkJ CWVycm5vID0gRU5PU1BDOworCQlwZ19mYXRhbCgiY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIl c1wiOiAlbSIsCisJCQkJIGdldF90bXBfd2Fsc2VnX3BhdGgoc2Vnbm8pKTsKKwl9Cit9CisKKy8q CisgKiBSZW1vdmUgdGVtcG9yYXJ5IGZpbGUKKyAqLwordm9pZAorcmVtb3ZlX3RtcF93YWxzZWco WExvZ1NlZ05vIHNlZ25vLCBib29sIHVwZGF0ZV9lbnRyeSkKK3sKKwljaGFyCSAgICpmcGF0aCA9 IGdldF90bXBfd2Fsc2VnX3BhdGgoc2Vnbm8pOworCisJaWYgKHVubGluayhmcGF0aCkgPT0gMCkK KwkJcGdfbG9nX2RlYnVnKCJyZW1vdmVkIGZpbGUgXCIlc1wiIiwgZnBhdGgpOworCXBmcmVlKGZw YXRoKTsKKworCS8qIFVwZGF0ZSBlbnRyeSBpZiByZXF1ZXN0ZWQgKi8KKwlpZiAodXBkYXRlX2Vu dHJ5KQorCXsKKwkJQXJjaGl2ZWRXQUxFbnRyeSAqZW50cnk7CisKKwkJZW50cnkgPSBBcmNoaXZl ZFdBTF9sb29rdXAoQXJjaGl2ZWRXQUxfSFRBQiwgc2Vnbm8pOworCQlBc3NlcnQoZW50cnkgIT0g TlVMTCk7CisJCWVudHJ5LT50bXBzZWdfZXhpc3RzID0gZmFsc2U7CisJfQorfQorCisvKgorICog Q3JlYXRlIGFuIGFzdHJlYW1lciB0aGF0IGNhbiByZWFkIFdBTCBmcm9tIHRhciBmaWxlLgogICov CiBzdGF0aWMgYXN0cmVhbWVyICoKIGFzdHJlYW1lcl93YWxkdW1wX25ldyhYTG9nRHVtcFByaXZh dGUgKnByaXZhdGVJbmZvKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1 bXAuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggMWVlZGY4ZTAxYjQu LjkxNzlmM2VhNGM0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5j CisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTQ3NCwxMiArNDc0LDUx IEBAIFRhcldBTER1bXBSZWFkUGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRy IHRhcmdldFBhZ2VQdHIsIGludCByZXFMZW4sCiB7CiAJWExvZ0R1bXBQcml2YXRlICpwcml2YXRl ID0gc3RhdGUtPnByaXZhdGVfZGF0YTsKIAlpbnQJCQljb3VudCA9IHJlcXVpcmVkX3JlYWRfbGVu KHByaXZhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbik7CisJWExvZ1NlZ05vCW5leHRTZWdObzsK IAogCS8qIEJhaWwgb3V0IGlmIHRoZSBjb3VudCB0byBiZSByZWFkIGlzIG5vdCB2YWxpZCAqLwog CWlmIChjb3VudCA8IDApCiAJCXJldHVybiAtMTsKIAotCS8qIFJlYWQgdGhlIFdBTCBwYWdlIGZy b20gdGhlIGFyY2hpdmUgc3RyZWFtZXIgKi8KKwkvKgorCSAqIElmIHRoZSB0YXJnZXQgcGFnZSBp cyBpbiBhIGRpZmZlcmVudCBzZWdtZW50LCBmaXJzdCBjaGVjayBmb3IgdGhlIFdBTAorCSAqIHNl Z21lbnQncyBwaHlzaWNhbCBleGlzdGVuY2UgaW4gdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkuCisJ ICovCisJbmV4dFNlZ05vID0gc3RhdGUtPnNlZy53c19zZWdubzsKKwlpZiAoIVhMQnl0ZUluU2Vn KHRhcmdldFBhZ2VQdHIsIG5leHRTZWdObywgV2FsU2VnU3opKQorCXsKKwkJaWYgKHN0YXRlLT5z ZWcud3NfZmlsZSA+PSAwKQorCQl7CisJCQljbG9zZShzdGF0ZS0+c2VnLndzX2ZpbGUpOworCQkJ c3RhdGUtPnNlZy53c19maWxlID0gLTE7CisKKwkJCS8qIFJlbW92ZSB0aGlzIGZpbGUsIGFzIGl0 IGlzIG5vIGxvbmdlciBuZWVkZWQuICovCisJCQlyZW1vdmVfdG1wX3dhbHNlZyhuZXh0U2VnTm8s IHRydWUpOworCQl9CisKKwkJWExCeXRlVG9TZWcodGFyZ2V0UGFnZVB0ciwgbmV4dFNlZ05vLCBX YWxTZWdTeik7CisJCXN0YXRlLT5zZWcud3NfdGxpID0gcHJpdmF0ZS0+dGltZWxpbmU7CisJCXN0 YXRlLT5zZWcud3Nfc2Vnbm8gPSBuZXh0U2VnTm87CisKKwkJLyoKKwkJICogSWYgdGhlIG5leHQg c2VnbWVudCBleGlzdHMsIG9wZW4gaXQgYW5kIGNvbnRpbnVlIHJlYWRpbmcgZnJvbSB0aGVyZQor CQkgKi8KKwkJaWYgKHRtcF93YWxzZWdfZXhpc3RzKG5leHRTZWdObykpCisJCXsKKwkJCWNoYXIJ ICAgKmZwYXRoOworCisJCQlmcGF0aCA9IGdldF90bXBfd2Fsc2VnX3BhdGgobmV4dFNlZ05vKTsK KwkJCXN0YXRlLT5zZWcud3NfZmlsZSA9IG9wZW4oZnBhdGgsIE9fUkRPTkxZIHwgUEdfQklOQVJZ LCAwKTsKKwkJCXBmcmVlKGZwYXRoKTsKKwkJfQorCX0KKworCS8qIENvbnRpbnVlIHJlYWRpbmcg ZnJvbSB0aGUgb3BlbiBXQUwgc2VnbWVudCwgaWYgYW55ICovCisJaWYgKHN0YXRlLT5zZWcud3Nf ZmlsZSA+PSAwKQorCQlyZXR1cm4gV0FMRHVtcFJlYWRQYWdlKHN0YXRlLCB0YXJnZXRQYWdlUHRy LCBjb3VudCwgdGFyZ2V0UHRyLAorCQkJCQkJCSAgIHJlYWRCdWZmKTsKKworCS8qIE90aGVyd2lz ZSwgcmVhZCB0aGUgV0FMIHBhZ2UgZnJvbSB0aGUgYXJjaGl2ZSBzdHJlYW1lciAqLwogCXJldHVy biByZWFkX2FyY2hpdmVfd2FsX3BhZ2UocHJpdmF0ZSwgdGFyZ2V0UGFnZVB0ciwgY291bnQsIHJl YWRCdWZmKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAu aCBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKaW5kZXggZWM3YTMzZDQwZTAuLjAz ZTAyNjI1YmExIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCisr KyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKQEAgLTU4LDQgKzU4LDggQEAgZXh0 ZXJuIGludAlyZWFkX2FyY2hpdmVfd2FsX3BhZ2UoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5m bywKIAkJCQkJCQkJICBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsCiAJCQkJCQkJCSAgU2l6ZSBj b3VudCwgY2hhciAqcmVhZEJ1ZmYpOwogCitleHRlcm4gY2hhciAqZ2V0X3RtcF93YWxzZWdfcGF0 aChYTG9nU2VnTm8gc2Vnbm8pOworZXh0ZXJuIGJvb2wgdG1wX3dhbHNlZ19leGlzdHMoWExvZ1Nl Z05vIHNlZ25vKTsKK2V4dGVybiB2b2lkIHJlbW92ZV90bXBfd2Fsc2VnKFhMb2dTZWdObyBzZWdu bywgYm9vbCB1cGRhdGVfZW50cnkpOworCiAjZW5kaWYJCQkJCQkJLyogZW5kIG9mIFBHX1dBTERV TVBfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsIGIv c3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4IGIxMmJiYzZmOTViLi5kNzUy YjVkZDY1NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCisr KyBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbApAQCAtNyw2ICs3LDcgQEAgdXNl IEN3ZDsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7Cit1c2UgTGlzdDo6VXRpbCBxdyhzaHVmZmxlKTsK IAogbXkgJHRhciA9ICRFTlZ7VEFSfTsKIApAQCAtMjcyLDcgKzI3Myw3IEBAIHN1YiBnZW5lcmF0 ZV9hcmNoaXZlCiAJfQogCWNsb3NlZGlyICRkaDsKIAotCUBmaWxlcyA9IHNvcnQgQGZpbGVzOwor CUBmaWxlcyA9IHNodWZmbGUgQGZpbGVzOwogCiAJIyBtb3ZlIGludG8gdGhlIFdBTCBkaXJlY3Rv cnkgYmVmb3JlIGFyY2hpdmluZyBmaWxlcwogCW15ICRjd2QgPSBnZXRjd2Q7Ci0tIAoyLjQ3LjEK Cg== --000000000000f4c5340644792656 Content-Type: application/x-patch; name="v9-0006-pg_verifybackup-Delay-default-WAL-directory-prepa.patch" Content-Disposition: attachment; filename="v9-0006-pg_verifybackup-Delay-default-WAL-directory-prepa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miflfnik5 RnJvbSBkNDE5OTQ1NmI0OTQxZGFiMmRkNmRjNjMyNmIxODA0NWY1Mjk3ZTQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTYgSnVsIDIwMjUgMTQ6NDc6NDMgKzA1MzAKU3ViamVjdDogW1BBVENIIHY5IDYvOF0gcGdf dmVyaWZ5YmFja3VwOiBEZWxheSBkZWZhdWx0IFdBTCBkaXJlY3RvcnkKIHByZXBhcmF0aW9uLgoK V2UgYXJlIG5vdCBzdXJlIHdoZXRoZXIgdG8gcGFyc2UgV0FMIGZyb20gYSBkaXJlY3Rvcnkgb3Ig YW4gYXJjaGl2ZQp1bnRpbCB0aGUgYmFja3VwIGZvcm1hdCBpcyBrbm93bi4gVGhlcmVmb3JlLCB3 ZSBkZWxheSBwcmVwYXJpbmcgdGhlCmRlZmF1bHQgV0FMIGRpcmVjdG9yeSB1bnRpbCB0aGUgcG9p bnQgb2YgcGFyc2luZy4gVGhpcyBkZWxheSBpcwpoYXJtbGVzcywgYXMgdGhlIFdBTCBkaXJlY3Rv cnkgaXMgbm90IHVzZWQgZWxzZXdoZXJlLgotLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3Bn X3ZlcmlmeWJhY2t1cC5jIHwgOCArKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9u cygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1 cC9wZ192ZXJpZnliYWNrdXAuYyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJh Y2t1cC5jCmluZGV4IDhkNWJlZmE5NDdmLi5hNTAyZTc5NWIyZSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKKysrIGIvc3JjL2Jpbi9wZ192ZXJp ZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKQEAgLTI4NSwxMCArMjg1LDYgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCW1hbmlmZXN0X3BhdGggPSBwc3ByaW50ZigiJXMvYmFja3Vw X21hbmlmZXN0IiwKIAkJCQkJCQkJIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSk7CiAKLQkvKiBC eSBkZWZhdWx0LCBsb29rIGZvciB0aGUgV0FMIGluIHRoZSBiYWNrdXAgZGlyZWN0b3J5LCB0b28u ICovCi0JaWYgKHdhbF9kaXJlY3RvcnkgPT0gTlVMTCkKLQkJd2FsX2RpcmVjdG9yeSA9IHBzcHJp bnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOwotCiAJLyoKIAkgKiBU cnkgdG8gcmVhZCB0aGUgbWFuaWZlc3QuIFdlIHRyZWF0IGFueSBlcnJvcnMgZW5jb3VudGVyZWQg d2hpbGUgcGFyc2luZwogCSAqIHRoZSBtYW5pZmVzdCBhcyBmYXRhbDsgdGhlcmUgZG9lc24ndCBz ZWVtIHRvIGJlIG11Y2ggcG9pbnQgaW4gdHJ5aW5nIHRvCkBAIC0zNjgsNiArMzY0LDEwIEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmIChjb250ZXh0LmZvcm1hdCA9PSAncCcgJiYg IWNvbnRleHQuc2tpcF9jaGVja3N1bXMpCiAJCXZlcmlmeV9iYWNrdXBfY2hlY2tzdW1zKCZjb250 ZXh0KTsKIAorCS8qIEJ5IGRlZmF1bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4gdGhlIGJhY2t1cCBk aXJlY3RvcnksIHRvby4gKi8KKwlpZiAod2FsX2RpcmVjdG9yeSA9PSBOVUxMKQorCQl3YWxfZGly ZWN0b3J5ID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSk7 CisKIAkvKgogCSAqIFRyeSB0byBwYXJzZSB0aGUgcmVxdWlyZWQgcmFuZ2VzIG9mIFdBTCByZWNv cmRzLCB1bmxlc3Mgd2Ugd2VyZSB0b2xkCiAJICogbm90IHRvIGRvIHNvLgotLSAKMi40Ny4xCgo= --000000000000f4c5340644792656 Content-Type: application/x-patch; name="v9-0007-pg_verifybackup-Rename-the-wal-directory-switch-t.patch" Content-Disposition: attachment; filename="v9-0007-pg_verifybackup-Rename-the-wal-directory-switch-t.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miflfrm86 RnJvbSBjZjVkNjM4OGE3ZGRiYjJhYmYyNmQ3NzQ5ZmY5NDdlMzMzOGRiZTk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzI6MTQgKzA1MzAKU3ViamVjdDogW1BBVENIIHY5IDcvOF0gcGdf dmVyaWZ5YmFja3VwOiBSZW5hbWUgdGhlIHdhbC1kaXJlY3Rvcnkgc3dpdGNoIHRvCiB3YWwtcGF0 aAoKV2l0aCBwcmV2aW91cyBwYXRjaGVzIHRvIHBnX3dhbGR1bXAgY2FuIG5vdyBkZWNvZGUgV0FM IGRpcmVjdGx5IGZyb20KdGFyIGZpbGVzLiAgVGhpcyBtZWFucyB5b3UnbGwgYmUgYWJsZSB0byBz cGVjaWZ5IGEgdGFyIGFyY2hpdmUgcGF0aAppbnN0ZWFkIG9mIGEgdHJhZGl0aW9uYWwgV0FMIGRp cmVjdG9yeS4KClRvIGtlZXAgdGhpbmdzIGNvbnNpc3RlbnQgYW5kIG1vcmUgdmVyc2F0aWxlLCB3 ZSBzaG91bGQgYWxzbwpnZW5lcmFsaXplIHRoZSBpbnB1dCBzd2l0Y2ggZm9yIHBnX3ZlcmlmeWJh Y2t1cC4gSXQgc2hvdWxkIGFjY2VwdAplaXRoZXIgYSBkaXJlY3Rvcnkgb3IgYSB0YXIgZmlsZSBw YXRoIHRoYXQgY29udGFpbnMgV0FMcy4gVGhpcyBjaGFuZ2UKd2lsbCBhbHNvIGFsaWduaW5nIGl0 IHdpdGggdGhlIGV4aXN0aW5nIG1hbmlmZXN0LXBhdGggc3dpdGNoIG5hbWluZy4KCj09IE5PVEUg PT0KICBUaGUgY29ycmVzcG9uZGluZyBQTyBmaWxlcyByZXF1aXJlIHVwZGF0aW5nIGR1ZSB0byB0 aGlzIGNoYW5nZS4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21sICAg ICB8ICAyICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyB8IDIy ICsrKysrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3X3dh bC5wbCAgICAgIHwgIDQgKystLQogMyBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAx NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJh Y2t1cC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbAppbmRleCA2 MWMxMjk3NWU0YS4uZTliOGJmZDUxYjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdf dmVyaWZ5YmFja3VwLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAu c2dtbApAQCAtMjYxLDcgKzI2MSw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgICAg IDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9uPi13IDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXRoPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+Ci0gICAgICA8 dGVybT48b3B0aW9uPi0td2FsLWRpcmVjdG9yeT08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGF0aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9wdGlv bj4tLXdhbC1wYXRoPTxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXRoPC9yZXBsYWNl YWJsZT48L29wdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAg ICAgICAgIFRyeSB0byBwYXJzZSBXQUwgZmlsZXMgc3RvcmVkIGluIHRoZSBzcGVjaWZpZWQgZGly ZWN0b3J5LCByYXRoZXIgdGhhbgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAv cGdfdmVyaWZ5YmFja3VwLmMgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNr dXAuYwppbmRleCBhNTAyZTc5NWIyZS4uOWZjZDZiZTAwNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5 YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHZl cmlmeV9maWxlX2NoZWNrc3VtKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCSB1 aW50OCAqYnVmZmVyKTsKIHN0YXRpYyB2b2lkIHBhcnNlX3JlcXVpcmVkX3dhbCh2ZXJpZmllcl9j b250ZXh0ICpjb250ZXh0LAogCQkJCQkJCSAgIGNoYXIgKnBnX3dhbGR1bXBfcGF0aCwKLQkJCQkJ CQkgICBjaGFyICp3YWxfZGlyZWN0b3J5KTsKKwkJCQkJCQkgICBjaGFyICp3YWxfcGF0aCk7CiBz dGF0aWMgYXN0cmVhbWVyICpjcmVhdGVfYXJjaGl2ZV92ZXJpZmllcih2ZXJpZmllcl9jb250ZXh0 ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgY2hhciAqYXJjaGl2ZV9uYW1lLAogCQkJCQkJCQkJCSAg T2lkIHRibHNwY19vaWQsCkBAIC0xMjYsNyArMTI2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJCXsicHJvZ3Jlc3MiLCBub19hcmd1bWVudCwgTlVMTCwgJ1AnfSwKIAkJeyJxdWll dCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAncSd9LAogCQl7InNraXAtY2hlY2tzdW1zIiwgbm9fYXJn dW1lbnQsIE5VTEwsICdzJ30sCi0JCXsid2FsLWRpcmVjdG9yeSIsIHJlcXVpcmVkX2FyZ3VtZW50 LCBOVUxMLCAndyd9LAorCQl7IndhbC1wYXRoIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd3 J30sCiAJCXtOVUxMLCAwLCBOVUxMLCAwfQogCX07CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAljaGFyCSAgICptYW5pZmVzdF9wYXRoID0gTlVMTDsK IAlib29sCQlub19wYXJzZV93YWwgPSBmYWxzZTsKIAlib29sCQlxdWlldCA9IGZhbHNlOwotCWNo YXIJICAgKndhbF9kaXJlY3RvcnkgPSBOVUxMOworCWNoYXIJICAgKndhbF9wYXRoID0gTlVMTDsK IAljaGFyCSAgICpwZ193YWxkdW1wX3BhdGggPSBOVUxMOwogCURJUgkJICAgKmRpcjsKIApAQCAt MjIxLDggKzIyMSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWNvbnRleHQu c2tpcF9jaGVja3N1bXMgPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJY2FzZSAndyc6Ci0JCQkJd2Fs X2RpcmVjdG9yeSA9IHBzdHJkdXAob3B0YXJnKTsKLQkJCQljYW5vbmljYWxpemVfcGF0aCh3YWxf ZGlyZWN0b3J5KTsKKwkJCQl3YWxfcGF0aCA9IHBzdHJkdXAob3B0YXJnKTsKKwkJCQljYW5vbmlj YWxpemVfcGF0aCh3YWxfcGF0aCk7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCS8qIGdl dG9wdF9sb25nIGFscmVhZHkgZW1pdHRlZCBhIGNvbXBsYWludCAqLwpAQCAtMzY1LDE1ICszNjUs MTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXZlcmlmeV9iYWNrdXBfY2hlY2tz dW1zKCZjb250ZXh0KTsKIAogCS8qIEJ5IGRlZmF1bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4gdGhl IGJhY2t1cCBkaXJlY3RvcnksIHRvby4gKi8KLQlpZiAod2FsX2RpcmVjdG9yeSA9PSBOVUxMKQot CQl3YWxfZGlyZWN0b3J5ID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2Rp cmVjdG9yeSk7CisJaWYgKHdhbF9wYXRoID09IE5VTEwpCisJCXdhbF9wYXRoID0gcHNwcmludGYo IiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSk7CiAKIAkvKgogCSAqIFRyeSB0 byBwYXJzZSB0aGUgcmVxdWlyZWQgcmFuZ2VzIG9mIFdBTCByZWNvcmRzLCB1bmxlc3Mgd2Ugd2Vy ZSB0b2xkCiAJICogbm90IHRvIGRvIHNvLgogCSAqLwogCWlmICghbm9fcGFyc2Vfd2FsKQotCQlw YXJzZV9yZXF1aXJlZF93YWwoJmNvbnRleHQsIHBnX3dhbGR1bXBfcGF0aCwgd2FsX2RpcmVjdG9y eSk7CisJCXBhcnNlX3JlcXVpcmVkX3dhbCgmY29udGV4dCwgcGdfd2FsZHVtcF9wYXRoLCB3YWxf cGF0aCk7CiAKIAkvKgogCSAqIElmIGV2ZXJ5dGhpbmcgbG9va3MgT0ssIHRlbGwgdGhlIHVzZXIg dGhpcywgdW5sZXNzIHdlIHdlcmUgYXNrZWQgdG8KQEAgLTExOTgsNyArMTE5OCw3IEBAIHZlcmlm eV9maWxlX2NoZWNrc3VtKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIG1hbmlmZXN0X2ZpbGUg Km0sCiAgKi8KIHN0YXRpYyB2b2lkCiBwYXJzZV9yZXF1aXJlZF93YWwodmVyaWZpZXJfY29udGV4 dCAqY29udGV4dCwgY2hhciAqcGdfd2FsZHVtcF9wYXRoLAotCQkJCSAgIGNoYXIgKndhbF9kaXJl Y3RvcnkpCisJCQkJICAgY2hhciAqd2FsX3BhdGgpCiB7CiAJbWFuaWZlc3RfZGF0YSAqbWFuaWZl c3QgPSBjb250ZXh0LT5tYW5pZmVzdDsKIAltYW5pZmVzdF93YWxfcmFuZ2UgKnRoaXNfd2FsX3Jh bmdlID0gbWFuaWZlc3QtPmZpcnN0X3dhbF9yYW5nZTsKQEAgLTEyMDgsNyArMTIwOCw3IEBAIHBh cnNlX3JlcXVpcmVkX3dhbCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpwZ193YWxk dW1wX3BhdGgsCiAJCWNoYXIJICAgKnBnX3dhbGR1bXBfY21kOwogCiAJCXBnX3dhbGR1bXBfY21k ID0gcHNwcmludGYoIlwiJXNcIiAtLXF1aWV0IC0tcGF0aD1cIiVzXCIgLS10aW1lbGluZT0ldSAt LXN0YXJ0PSVYLyUwOFggLS1lbmQ9JVgvJTA4WFxuIiwKLQkJCQkJCQkJICBwZ193YWxkdW1wX3Bh dGgsIHdhbF9kaXJlY3RvcnksIHRoaXNfd2FsX3JhbmdlLT50bGksCisJCQkJCQkJCSAgcGdfd2Fs ZHVtcF9wYXRoLCB3YWxfcGF0aCwgdGhpc193YWxfcmFuZ2UtPnRsaSwKIAkJCQkJCQkJICBMU05f Rk9STUFUX0FSR1ModGhpc193YWxfcmFuZ2UtPnN0YXJ0X2xzbiksCiAJCQkJCQkJCSAgTFNOX0ZP Uk1BVF9BUkdTKHRoaXNfd2FsX3JhbmdlLT5lbmRfbHNuKSk7CiAJCWZmbHVzaChOVUxMKTsKQEAg LTEzNzYsNyArMTM3Niw3IEBAIHVzYWdlKHZvaWQpCiAJcHJpbnRmKF8oIiAgLVAsIC0tcHJvZ3Jl c3MgICAgICAgICAgICAgIHNob3cgcHJvZ3Jlc3MgaW5mb3JtYXRpb25cbiIpKTsKIAlwcmludGYo XygiICAtcSwgLS1xdWlldCAgICAgICAgICAgICAgICAgZG8gbm90IHByaW50IGFueSBvdXRwdXQs IGV4Y2VwdCBmb3IgZXJyb3JzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXMsIC0tc2tpcC1jaGVja3N1 bXMgICAgICAgIHNraXAgY2hlY2tzdW0gdmVyaWZpY2F0aW9uXG4iKSk7Ci0JcHJpbnRmKF8oIiAg LXcsIC0td2FsLWRpcmVjdG9yeT1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FMIGZp bGVzXG4iKSk7CisJcHJpbnRmKF8oIiAgLXcsIC0td2FsLXBhdGg9UEFUSCAgICAgICAgIHVzZSBz cGVjaWZpZWQgcGF0aCBmb3IgV0FMIGZpbGVzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLVYsIC0tdmVy c2lvbiAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRc biIpKTsKIAlwcmludGYoXygiICAtPywgLS1oZWxwICAgICAgICAgICAgICAgICAgc2hvdyB0aGlz IGhlbHAsIHRoZW4gZXhpdFxuIikpOwogCXByaW50ZihfKCJcblJlcG9ydCBidWdzIHRvIDwlcz4u XG4iKSwgUEFDS0FHRV9CVUdSRVBPUlQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnli YWNrdXAvdC8wMDdfd2FsLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdfd2FsLnBs CmluZGV4IGJhYmM0ZjBhODZiLi5iMDdmODA3MTliMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192 ZXJpZnliYWNrdXAvdC8wMDdfd2FsLnBsCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3Qv MDA3X3dhbC5wbApAQCAtNDIsMTAgKzQyLDEwIEBAIGNvbW1hbmRfb2soWyAncGdfdmVyaWZ5YmFj a3VwJywgJy0tbm8tcGFyc2Utd2FsJywgJGJhY2t1cF9wYXRoIF0sCiBjb21tYW5kX29rKAogCVsK IAkJJ3BnX3ZlcmlmeWJhY2t1cCcsCi0JCSctLXdhbC1kaXJlY3RvcnknID0+ICRyZWxvY2F0ZWRf cGdfd2FsLAorCQknLS13YWwtcGF0aCcgPT4gJHJlbG9jYXRlZF9wZ193YWwsCiAJCSRiYWNrdXBf cGF0aAogCV0sCi0JJy0td2FsLWRpcmVjdG9yeSBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IFdBTCBk aXJlY3RvcnknKTsKKwknLS13YWwtcGF0aCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IFdBTCBkaXJl Y3RvcnknKTsKIAogIyBNb3ZlIGRpcmVjdG9yeSBiYWNrIHRvIG9yaWdpbmFsIGxvY2F0aW9uLgog cmVuYW1lKCRyZWxvY2F0ZWRfcGdfd2FsLCAkb3JpZ2luYWxfcGdfd2FsKSB8fCBkaWUgInJlbmFt ZSBwZ193YWwgYmFjazogJCEiOwotLSAKMi40Ny4xCgo= --000000000000f4c5340644792656 Content-Type: application/x-patch; name="v9-0008-pg_verifybackup-enabled-WAL-parsing-for-tar-forma.patch" Content-Disposition: attachment; filename="v9-0008-pg_verifybackup-enabled-WAL-parsing-for-tar-forma.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miflfvxd7 RnJvbSBiNTZkNTFiOTA5NGIzZTlhZGVhYjM0ODBhMWM4MWQ0N2M1YTA3YmJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzQ6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHY5IDgvOF0gcGdf dmVyaWZ5YmFja3VwOiBlbmFibGVkIFdBTCBwYXJzaW5nIGZvciB0YXItZm9ybWF0CiBiYWNrdXAK Ck5vdyB0aGF0IHBnX3dhbGR1bXAgc3VwcG9ydHMgZGVjb2RpbmcgZnJvbSB0YXIgYXJjaGl2ZXMs IHdlIHNob3VsZApsZXZlcmFnZSB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gcmVtb3ZlIHRoZSBwcmV2 aW91cyByZXN0cmljdGlvbiBvbiBXQUwKcGFyc2luZyBmb3IgdGFyLWJhY2tlZCBmb3JtYXRzLgot LS0KIGRvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwgICAgICAgICB8ICA1ICst CiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyAgICAgfCA2NiArKysr KysrKysrKysrLS0tLS0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwMl9hbGdvcml0aG0u cGwgICAgfCAgNCAtLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5w bCAgIHwgIDQgKy0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsICAgICAg ICB8ICA1ICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50YXIucGwg fCAgNSArLQogNiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbAppbmRleCBlOWI4YmZkNTFiMS4u MTZiNTBiNWE0ZGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3Vw LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbApAQCAtMzYs MTAgKzM2LDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICA8bGl0ZXJhbD5iYWNrdXBf bWFuaWZlc3Q8L2xpdGVyYWw+IGdlbmVyYXRlZCBieSB0aGUgc2VydmVyIGF0IHRoZSB0aW1lCiAg ICBvZiB0aGUgYmFja3VwLiBUaGUgYmFja3VwIG1heSBiZSBzdG9yZWQgZWl0aGVyIGluIHRoZSAi cGxhaW4iIG9yIHRoZSAidGFyIgogICAgZm9ybWF0OyB0aGlzIGluY2x1ZGVzIHRhci1mb3JtYXQg YmFja3VwcyBjb21wcmVzc2VkIHdpdGggYW55IGFsZ29yaXRobQotICAgc3VwcG9ydGVkIGJ5IDxh cHBsaWNhdGlvbj5wZ19iYXNlYmFja3VwPC9hcHBsaWNhdGlvbj4uIEhvd2V2ZXIsIGF0IHByZXNl bnQsCi0gICA8bGl0ZXJhbD5XQUw8L2xpdGVyYWw+IHZlcmlmaWNhdGlvbiBpcyBzdXBwb3J0ZWQg b25seSBmb3IgcGxhaW4tZm9ybWF0Ci0gICBiYWNrdXBzLiBUaGVyZWZvcmUsIGlmIHRoZSBiYWNr dXAgaXMgc3RvcmVkIGluIHRhci1mb3JtYXQsIHRoZQotICAgPGxpdGVyYWw+LW4sIC0tbm8tcGFy c2Utd2FsPC9saXRlcmFsPiBvcHRpb24gc2hvdWxkIGJlIHVzZWQuCisgICBzdXBwb3J0ZWQgYnkg PGFwcGxpY2F0aW9uPnBnX2Jhc2ViYWNrdXA8L2FwcGxpY2F0aW9uPi4KICAgPC9wYXJhPgogCiAg IDxwYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFj a3VwLmMgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYwppbmRleCA5 ZmNkNmJlMDA0ZS4uNDBlYzI0YzU5ODQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFj a3VwL3BnX3ZlcmlmeWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3Zl cmlmeWJhY2t1cC5jCkBAIC03NCw3ICs3NCw5IEBAIHBnX25vcmV0dXJuIHN0YXRpYyB2b2lkIHJl cG9ydF9tYW5pZmVzdF9lcnJvcihKc29uTWFuaWZlc3RQYXJzZUNvbnRleHQgKmNvbnRleHQsCiAJ CQkJCQkJCQkJCSAgY29uc3QgY2hhciAqZm10LC4uLikKIAkJCXBnX2F0dHJpYnV0ZV9wcmludGYo MiwgMyk7CiAKLXN0YXRpYyB2b2lkIHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRleHQg KmNvbnRleHQsIERJUiAqZGlyKTsKK3N0YXRpYyB2b2lkIHZlcmlmeV90YXJfYmFja3VwKHZlcmlm aWVyX2NvbnRleHQgKmNvbnRleHQsIERJUiAqZGlyLAorCQkJCQkJCSAgY2hhciAqKmJhc2VfYXJj aGl2ZV9wYXRoLAorCQkJCQkJCSAgY2hhciAqKndhbF9hcmNoaXZlX3BhdGgpOwogc3RhdGljIHZv aWQgdmVyaWZ5X3BsYWluX2JhY2t1cF9kaXJlY3RvcnkodmVyaWZpZXJfY29udGV4dCAqY29udGV4 dCwKIAkJCQkJCQkJCQkgIGNoYXIgKnJlbHBhdGgsIGNoYXIgKmZ1bGxwYXRoLAogCQkJCQkJCQkJ CSAgRElSICpkaXIpOwpAQCAtODMsNyArODUsOSBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfcGxhaW5f YmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hhciAqcmVscGF0aCwKIHN0 YXRpYyB2b2lkIHZlcmlmeV9jb250cm9sX2ZpbGUoY29uc3QgY2hhciAqY29udHJvbHBhdGgsCiAJ CQkJCQkJCXVpbnQ2NCBtYW5pZmVzdF9zeXN0ZW1faWRlbnRpZmllcik7CiBzdGF0aWMgdm9pZCBw cmVjaGVja190YXJfYmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hhciAq cmVscGF0aCwKLQkJCQkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFyZmls ZXMpOworCQkJCQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0YXJmaWxlcywK KwkJCQkJCQkJCSBjaGFyICoqYmFzZV9hcmNoaXZlX3BhdGgsCisJCQkJCQkJCQkgY2hhciAqKndh bF9hcmNoaXZlX3BhdGgpOwogc3RhdGljIHZvaWQgdmVyaWZ5X3Rhcl9maWxlKHZlcmlmaWVyX2Nv bnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBhdGgsCiAJCQkJCQkJY2hhciAqZnVsbHBhdGgsIGFz dHJlYW1lciAqc3RyZWFtZXIpOwogc3RhdGljIHZvaWQgcmVwb3J0X2V4dHJhX2JhY2t1cF9maWxl cyh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0KTsKQEAgLTEzNiw2ICsxNDAsOCBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAlib29sCQlub19wYXJzZV93YWwgPSBmYWxzZTsKIAlib29s CQlxdWlldCA9IGZhbHNlOwogCWNoYXIJICAgKndhbF9wYXRoID0gTlVMTDsKKwljaGFyCSAgICpi YXNlX2FyY2hpdmVfcGF0aCA9IE5VTEw7CisJY2hhcgkgICAqd2FsX2FyY2hpdmVfcGF0aCA9IE5V TEw7CiAJY2hhcgkgICAqcGdfd2FsZHVtcF9wYXRoID0gTlVMTDsKIAlESVIJCSAgICpkaXI7CiAK QEAgLTMyNywxNyArMzMzLDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXBmcmVl KHBhdGgpOwogCX0KIAotCS8qCi0JICogWFhYOiBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQgY29u c2lkZXIgZW5oYW5jaW5nIHBnX3dhbGR1bXAgdG8gcmVhZCBXQUwKLQkgKiBmaWxlcyBmcm9tIGFu IGFyY2hpdmUuCi0JICovCi0JaWYgKCFub19wYXJzZV93YWwgJiYgY29udGV4dC5mb3JtYXQgPT0g J3QnKQotCXsKLQkJcGdfbG9nX2Vycm9yKCJwZ193YWxkdW1wIGNhbm5vdCByZWFkIHRhciBmaWxl cyIpOwotCQlwZ19sb2dfZXJyb3JfaGludCgiWW91IG11c3QgdXNlIC1uLy0tbm8tcGFyc2Utd2Fs IHdoZW4gdmVyaWZ5aW5nIGEgdGFyLWZvcm1hdCBiYWNrdXAuIik7Ci0JCWV4aXQoMSk7Ci0JfQot CiAJLyoKIAkgKiBQZXJmb3JtIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9mIHZlcmlmaWNhdGlvbiBh cHByb3ByaWF0ZSBiYXNlZCBvbiB0aGUKIAkgKiBiYWNrdXAgZm9ybWF0LiBUaGlzIHdpbGwgY2xv c2UgJ2RpcicuCkBAIC0zNDYsNyArMzQxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCXZlcmlmeV9wbGFpbl9iYWNrdXBfZGlyZWN0b3J5KCZjb250ZXh0LCBOVUxMLCBjb250ZXh0 LmJhY2t1cF9kaXJlY3RvcnksCiAJCQkJCQkJCQkgIGRpcik7CiAJZWxzZQotCQl2ZXJpZnlfdGFy X2JhY2t1cCgmY29udGV4dCwgZGlyKTsKKwkJdmVyaWZ5X3Rhcl9iYWNrdXAoJmNvbnRleHQsIGRp ciwgJmJhc2VfYXJjaGl2ZV9wYXRoLCAmd2FsX2FyY2hpdmVfcGF0aCk7CiAKIAkvKgogCSAqIFRo ZSAibWF0Y2hlZCIgZmxhZyBzaG91bGQgbm93IGJlIHNldCBvbiBldmVyeSBlbnRyeSBpbiB0aGUg aGFzaCB0YWJsZS4KQEAgLTM2NCw5ICszNTksMjggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJaWYgKGNvbnRleHQuZm9ybWF0ID09ICdwJyAmJiAhY29udGV4dC5za2lwX2NoZWNrc3Vt cykKIAkJdmVyaWZ5X2JhY2t1cF9jaGVja3N1bXMoJmNvbnRleHQpOwogCi0JLyogQnkgZGVmYXVs dCwgbG9vayBmb3IgdGhlIFdBTCBpbiB0aGUgYmFja3VwIGRpcmVjdG9yeSwgdG9vLiAqLworCS8q CisJICogQnkgZGVmYXVsdCwgV0FMIGZpbGVzIGFyZSBleHBlY3RlZCB0byBiZSBmb3VuZCBpbiB0 aGUgYmFja3VwIGRpcmVjdG9yeQorCSAqIGZvciBwbGFpbi1mb3JtYXQgYmFja3Vwcy4gSW4gdGhl IGNhc2Ugb2YgdGFyLWZvcm1hdCBiYWNrdXBzLCBpZiBhCisJICogc2VwYXJhdGUgV0FMIGFyY2hp dmUgaXMgbm90IGZvdW5kLCB0aGUgV0FMIGZpbGVzIGFyZSBtb3N0IGxpa2VseQorCSAqIGluY2x1 ZGVkIHdpdGhpbiB0aGUgbWFpbiBkYXRhIGRpcmVjdG9yeSBhcmNoaXZlLgorCSAqLwogCWlmICh3 YWxfcGF0aCA9PSBOVUxMKQotCQl3YWxfcGF0aCA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBjb250 ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOworCXsKKwkJaWYgKGNvbnRleHQuZm9ybWF0ID09ICdwJykK KwkJCXdhbF9wYXRoID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2RpcmVj dG9yeSk7CisJCWVsc2UgaWYgKHdhbF9hcmNoaXZlX3BhdGgpCisJCQl3YWxfcGF0aCA9IHdhbF9h cmNoaXZlX3BhdGg7CisJCWVsc2UgaWYgKGJhc2VfYXJjaGl2ZV9wYXRoKQorCQkJd2FsX3BhdGgg PSBiYXNlX2FyY2hpdmVfcGF0aDsKKwkJZWxzZQorCQl7CisJCQlwZ19sb2dfZXJyb3IoIldBTCBh cmNoaXZlIG5vdCBmb3VuZCIpOworCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlNwZWNpZnkgdGhlIGNv cnJlY3QgcGF0aCB1c2luZyB0aGUgb3B0aW9uIC13Ly0td2FsLXBhdGguICAiCisJCQkJCQkJICAi T3IgeW91IG11c3QgdXNlIC1uLy0tbm8tcGFyc2Utd2FsIHdoZW4gdmVyaWZ5aW5nIGEgdGFyLWZv cm1hdCBiYWNrdXAuIik7CisJCQlleGl0KDEpOworCQl9CisJfQogCiAJLyoKIAkgKiBUcnkgdG8g cGFyc2UgdGhlIHJlcXVpcmVkIHJhbmdlcyBvZiBXQUwgcmVjb3JkcywgdW5sZXNzIHdlIHdlcmUg dG9sZApAQCAtNzg3LDcgKzgwMSw4IEBAIHZlcmlmeV9jb250cm9sX2ZpbGUoY29uc3QgY2hhciAq Y29udHJvbHBhdGgsIHVpbnQ2NCBtYW5pZmVzdF9zeXN0ZW1faWRlbnRpZmllcikKICAqIGNsb3Nl IHdoZW4gd2UncmUgZG9uZSB3aXRoIGl0LgogICovCiBzdGF0aWMgdm9pZAotdmVyaWZ5X3Rhcl9i YWNrdXAodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgRElSICpkaXIpCit2ZXJpZnlfdGFyX2Jh Y2t1cCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBESVIgKmRpciwgY2hhciAqKmJhc2VfYXJj aGl2ZV9wYXRoLAorCQkJCSAgY2hhciAqKndhbF9hcmNoaXZlX3BhdGgpCiB7CiAJc3RydWN0IGRp cmVudCAqZGlyZW50OwogCVNpbXBsZVB0ckxpc3QgdGFyZmlsZXMgPSB7TlVMTCwgTlVMTH07CkBA IC04MTYsNyArODMxLDggQEAgdmVyaWZ5X3Rhcl9iYWNrdXAodmVyaWZpZXJfY29udGV4dCAqY29u dGV4dCwgRElSICpkaXIpCiAJCQljaGFyCSAgICpmdWxscGF0aDsKIAogCQkJZnVsbHBhdGggPSBw c3ByaW50ZigiJXMvJXMiLCBjb250ZXh0LT5iYWNrdXBfZGlyZWN0b3J5LCBmaWxlbmFtZSk7Ci0J CQlwcmVjaGVja190YXJfYmFja3VwX2ZpbGUoY29udGV4dCwgZmlsZW5hbWUsIGZ1bGxwYXRoLCAm dGFyZmlsZXMpOworCQkJcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKGNvbnRleHQsIGZpbGVuYW1l LCBmdWxscGF0aCwgJnRhcmZpbGVzLAorCQkJCQkJCQkJIGJhc2VfYXJjaGl2ZV9wYXRoLCB3YWxf YXJjaGl2ZV9wYXRoKTsKIAkJCXBmcmVlKGZ1bGxwYXRoKTsKIAkJfQogCX0KQEAgLTg3NSwxMSAr ODkxLDEzIEBAIHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIERJ UiAqZGlyKQogICoKICAqIFRoZSBhcmd1bWVudHMgdG8gdGhpcyBmdW5jdGlvbiBhcmUgbW9zdGx5 IHRoZSBzYW1lIGFzIHRoZQogICogdmVyaWZ5X3BsYWluX2JhY2t1cF9maWxlLiBUaGUgYWRkaXRp b25hbCBhcmd1bWVudCBvdXRwdXRzIGEgbGlzdCBvZiB2YWxpZAotICogdGFyIGZpbGVzLgorICog dGFyIGZpbGVzLCBhbG9uZyB3aXRoIHRoZSBmdWxsIHBhdGhzIHRvIHRoZSBtYWluIGFyY2hpdmUg YW5kIHRoZSBXQUwKKyAqIGRpcmVjdG9yeSBhcmNoaXZlLgogICovCiBzdGF0aWMgdm9pZAogcHJl Y2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJl bHBhdGgsCi0JCQkJCQkgY2hhciAqZnVsbHBhdGgsIFNpbXBsZVB0ckxpc3QgKnRhcmZpbGVzKQor CQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0YXJmaWxlcywKKwkJCQkJCSBj aGFyICoqYmFzZV9hcmNoaXZlX3BhdGgsIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKQogewogCXN0 cnVjdCBzdGF0IHNiOwogCU9pZAkJCXRibHNwY19vaWQgPSBJbnZhbGlkT2lkOwpAQCAtOTE4LDkg KzkzNiwxNyBAQCBwcmVjaGVja190YXJfYmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAqY29u dGV4dCwgY2hhciAqcmVscGF0aCwKIAkgKiBleHRlbnNpb24gc3VjaCBhcyAuZ3osIC5sejQsIG9y IC56c3QuCiAJICovCiAJaWYgKHN0cm5jbXAoImJhc2UiLCByZWxwYXRoLCA0KSA9PSAwKQorCXsK IAkJc3VmZml4ID0gcmVscGF0aCArIDQ7CisKKwkJKmJhc2VfYXJjaGl2ZV9wYXRoID0gcHN0cmR1 cChmdWxscGF0aCk7CisJfQogCWVsc2UgaWYgKHN0cm5jbXAoInBnX3dhbCIsIHJlbHBhdGgsIDYp ID09IDApCisJewogCQlzdWZmaXggPSByZWxwYXRoICsgNjsKKworCQkqd2FsX2FyY2hpdmVfcGF0 aCA9IHBzdHJkdXAoZnVsbHBhdGgpOworCX0KIAllbHNlCiAJewogCQkvKiBFeHBlY3RlZCBhIDx0 YWJsZXNwYWNlb2lkPi50YXIgZmlsZSBoZXJlLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192 ZXJpZnliYWNrdXAvdC8wMDJfYWxnb3JpdGhtLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAv dC8wMDJfYWxnb3JpdGhtLnBsCmluZGV4IGFlMTZjMTFiYzRkLi40ZjI4NGE5ZTgyOCAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDJfYWxnb3JpdGhtLnBsCisrKyBiL3Ny Yy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbApAQCAtMzAsMTAgKzMwLDYg QEAgc3ViIHRlc3RfY2hlY2tzdW1zCiAJewogCQkjIEFkZCBzd2l0Y2ggdG8gZ2V0IGEgdGFyLWZv cm1hdCBiYWNrdXAKIAkJcHVzaCBAYmFja3VwLCAoJy0tZm9ybWF0JyA9PiAndGFyJyk7Ci0KLQkJ IyBBZGQgc3dpdGNoIHRvIHNraXAgV0FMIHZlcmlmaWNhdGlvbiwgd2hpY2ggaXMgbm90IHlldCBz dXBwb3J0ZWQgZm9yCi0JCSMgdGFyLWZvcm1hdCBiYWNrdXBzCi0JCXB1c2ggQHZlcmlmeSwgKCct LW5vLXBhcnNlLXdhbCcpOwogCX0KIAogCSMgQSBiYWNrdXAgd2l0aCBhIGJvZ3VzIGFsZ29yaXRo bSBzaG91bGQgZmFpbC4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAz X2NvcnJ1cHRpb24ucGwgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwM19jb3JydXB0aW9u LnBsCmluZGV4IDFkZDYwZjcwOWNmLi5mMWViZGJiNDZiNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5wbAorKysgYi9zcmMvYmluL3BnX3Zlcmlm eWJhY2t1cC90LzAwM19jb3JydXB0aW9uLnBsCkBAIC0xOTMsMTAgKzE5Myw4IEBAIGZvciBteSAk c2NlbmFyaW8gKEBzY2VuYXJpbykKIAkJCWNvbW1hbmRfb2soWyAkdGFyLCAnLWNmJyA9PiAiJHRh cl9iYWNrdXBfcGF0aC9iYXNlLnRhciIsICcuJyBdKTsKIAkJCWNoZGlyKCRjd2QpIHx8IGRpZSAi Y2hkaXI6ICQhIjsKIAotCQkJIyBOb3cgY2hlY2sgdGhhdCB0aGUgYmFja3VwIG5vIGxvbmdlciB2 ZXJpZmllcy4gV2UgbXVzdCB1c2UgLW4KLQkJCSMgaGVyZSwgYmVjYXVzZSBwZ193YWxkdW1wIGNh bid0IHlldCByZWFkIFdBTCBmcm9tIGEgdGFyZmlsZS4KIAkJCWNvbW1hbmRfZmFpbHNfbGlrZSgK LQkJCQlbICdwZ192ZXJpZnliYWNrdXAnLCAnLS1uby1wYXJzZS13YWwnLCAkdGFyX2JhY2t1cF9w YXRoIF0sCisJCQkJWyAncGdfdmVyaWZ5YmFja3VwJywgJHRhcl9iYWNrdXBfcGF0aCBdLAogCQkJ CSRzY2VuYXJpby0+eydmYWlsc19saWtlJ30sCiAJCQkJImNvcnJ1cHQgYmFja3VwIGZhaWxzIHZl cmlmaWNhdGlvbjogJG5hbWUiKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNr dXAvdC8wMDhfdW50YXIucGwgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwOF91bnRhci5w bAppbmRleCBiYzNkNmIzNTJhZC4uMDkwNzlhOTRmZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf dmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3QvMDA4X3VudGFyLnBsCkBAIC00Nyw3ICs0Nyw2IEBAIG15ICR0c29pZCA9ICRwcmltYXJ5LT5z YWZlX3BzcWwoCiAJCVNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWUg PSAncmVncmVzc190czEnKSk7CiAKIG15ICRiYWNrdXBfcGF0aCA9ICRwcmltYXJ5LT5iYWNrdXBf ZGlyIC4gJy9zZXJ2ZXItYmFja3VwJzsKLW15ICRleHRyYWN0X3BhdGggPSAkcHJpbWFyeS0+YmFj a3VwX2RpciAuICcvZXh0cmFjdGVkLWJhY2t1cCc7CiAKIG15IEB0ZXN0X2NvbmZpZ3VyYXRpb24g PSAoCiAJewpAQCAtMTIzLDE0ICsxMjIsMTIgQEAgZm9yIG15ICR0YyAoQHRlc3RfY29uZmlndXJh dGlvbikKIAkJIyBWZXJpZnkgdGFyIGJhY2t1cC4KIAkJJHByaW1hcnktPmNvbW1hbmRfb2soCiAJ CQlbCi0JCQkJJ3BnX3ZlcmlmeWJhY2t1cCcsICctLW5vLXBhcnNlLXdhbCcsCi0JCQkJJy0tZXhp dC1vbi1lcnJvcicsICRiYWNrdXBfcGF0aCwKKwkJCQkncGdfdmVyaWZ5YmFja3VwJywgJy0tZXhp dC1vbi1lcnJvcicsICRiYWNrdXBfcGF0aCwKIAkJCV0sCiAJCQkidmVyaWZ5IGJhY2t1cCwgY29t cHJlc3Npb24gJG1ldGhvZCIpOwogCiAJCSMgQ2xlYW51cC4KIAkJcm10cmVlKCRiYWNrdXBfcGF0 aCk7Ci0JCXJtdHJlZSgkZXh0cmFjdF9wYXRoKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVudF91bnRhci5wbCBiL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3QvMDEwX2NsaWVudF91bnRhci5wbAppbmRleCBiNjJmYWViNWFjZi4uNWIwZTc2 ZWU2OWQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVudF91 bnRhci5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50YXIu cGwKQEAgLTMyLDcgKzMyLDYgQEAgcHJpbnQgJGpmICRqdW5rX2RhdGE7CiBjbG9zZSAkamY7CiAK IG15ICRiYWNrdXBfcGF0aCA9ICRwcmltYXJ5LT5iYWNrdXBfZGlyIC4gJy9jbGllbnQtYmFja3Vw JzsKLW15ICRleHRyYWN0X3BhdGggPSAkcHJpbWFyeS0+YmFja3VwX2RpciAuICcvZXh0cmFjdGVk LWJhY2t1cCc7CiAKIG15IEB0ZXN0X2NvbmZpZ3VyYXRpb24gPSAoCiAJewpAQCAtMTM3LDEzICsx MzYsMTEgQEAgZm9yIG15ICR0YyAoQHRlc3RfY29uZmlndXJhdGlvbikKIAkJIyBWZXJpZnkgdGFy IGJhY2t1cC4KIAkJJHByaW1hcnktPmNvbW1hbmRfb2soCiAJCQlbCi0JCQkJJ3BnX3ZlcmlmeWJh Y2t1cCcsICctLW5vLXBhcnNlLXdhbCcsCi0JCQkJJy0tZXhpdC1vbi1lcnJvcicsICRiYWNrdXBf cGF0aCwKKwkJCQkncGdfdmVyaWZ5YmFja3VwJywgJy0tZXhpdC1vbi1lcnJvcicsICRiYWNrdXBf cGF0aCwKIAkJCV0sCiAJCQkidmVyaWZ5IGJhY2t1cCwgY29tcHJlc3Npb24gJG1ldGhvZCIpOwog CiAJCSMgQ2xlYW51cC4KLQkJcm10cmVlKCRleHRyYWN0X3BhdGgpOwogCQlybXRyZWUoJGJhY2t1 cF9wYXRoKTsKIAl9CiB9Ci0tIAoyLjQ3LjEKCg== --000000000000f4c5340644792656--