Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tBFYG-002iIf-28 for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Nov 2024 15:45:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tBFYD-00FApo-4O for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Nov 2024 15:45:01 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tBFYC-00FApe-DT for pgsql-hackers@lists.postgresql.org; Wed, 13 Nov 2024 15:45:01 +0000 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tBFY9-001gcN-PQ for pgsql-hackers@lists.postgresql.org; Wed, 13 Nov 2024 15:44:59 +0000 Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-a9a039511a7so27640466b.0 for ; Wed, 13 Nov 2024 07:44:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731512696; x=1732117496; 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=IKpTuW4y3nabmXmkDVBa5TNhM9T5CVKfWHGOPu1ZW+4=; b=nov4zPXliCHuvWT7hN0KDfwGC2/AGW5AWHE4l1vAiuFy3gUA5hyjMRIC9UxK64DQDI EQ9teIHUW5m83kiQq1o2M9PHZWAx+4Nude6C148tCRG06tzgnQUNc3OeUI7DmfA2J2aF q1s/8Zx2ivRB5UgE6Q1+a/+u35xw+J2M/8ehgBtTruney3eboAzq1jAE1AnxY2CyWZEE X6WfaphHcUykX8ZYWRwmzx4HUei5+HICCc2C1lE6D8HZuUNjJwqfYf3kFriOO1sRISpf WW8Bc4Iw/o5bZc5RIEYX6gVlYC0kGso5t4MGm/2OvfJHUNqVBa2KelZ/vY+fHuvVJBuh Z/wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731512696; x=1732117496; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=IKpTuW4y3nabmXmkDVBa5TNhM9T5CVKfWHGOPu1ZW+4=; b=M+wPGaOiOOfi7zriuvNU01FKrm63QN/38DAITHIR3wPbYvevvSPTHz4Q+rFwFO/9B8 BIDd/aSKxJ8lUEutQqK864lbslLlMVGxcvFQ9NveoHQbmzV4wWRGPte5RiklUiwynQOO kUAv9McDzF6r+2WhoWAixjVIyYNv9L4ouG/KvqoOdO5qDG0tiRsnZPoKKOzr0QQa8KBi Qy1dIS0h/NDmei/9wuwlWymBxlDYDeiBZBEdPgs+MsLNy8sEQvqnFYEETyKS8jWlQ82v UHAe3S0YopObsABPlgLZsJH7YRURJS2gkbLFdksUB0J4DD1xCfAdTFrceznyKtZrJ064 LHwQ== X-Forwarded-Encrypted: i=1; AJvYcCUZA8tB0zWcSbidiFPqb6DkAWyKtc4nqCUMUujhYI309nyu1sGNfGLat2CoCz1MekHuafHQB8vRw8qoilhu@lists.postgresql.org X-Gm-Message-State: AOJu0YxmE9UOsSUdBz6T3aIFIxV6w6NR/6/bi1I4NS2QQ4QnJCioXfu2 A1sok62PKuqXk+t2xMFwP9GoxVq8b5Bq6wguaFC/auCNl6BnZGrVkJ7ossqxQIVunTs1C07HbfO zSxkX0QCZDEv3jRxXag8NxikWijw= X-Google-Smtp-Source: AGHT+IE5GdRQ+hqNs14wd2Y/0NCaXXAYwK6l9iH/zU0GP5fZTspfZkJbH4XRcoVCm1N3ZC+K+M1PH5U1PCSICO/OwNc= X-Received: by 2002:a17:907:3f86:b0:a9e:c267:34b1 with SMTP id a640c23a62f3a-a9ef0011b95mr841876366b.12.1731512695752; Wed, 13 Nov 2024 07:44:55 -0800 (PST) MIME-Version: 1.0 References: <5ecc35f5-1111-47fc-8a02-36d89490a50d@iki.fi> <24b3deb6-a732-4256-847a-560f4bf39d59@iki.fi> In-Reply-To: <24b3deb6-a732-4256-847a-560f4bf39d59@iki.fi> From: Maxim Orlov Date: Wed, 13 Nov 2024 18:44:44 +0300 Message-ID: Subject: Re: POC: make mxidoff 64 bits To: Heikki Linnakangas Cc: wenhui qiu , Alexander Korotkov , Postgres hackers Content-Type: multipart/mixed; boundary="00000000000027c6990626cd37ab" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000027c6990626cd37ab Content-Type: multipart/alternative; boundary="00000000000027c6980626cd37a9" --00000000000027c6980626cd37a9 Content-Type: text/plain; charset="UTF-8" On Tue, 12 Nov 2024 at 02:31, Heikki Linnakangas wrote: > The wraparound logic is still not correct. Yep, my fault. I forget to reset segment counter if wraparound is happened. Fixed. When I try to select from a table after upgrade that contains > post-wraparound multixids: > > TRAP: failed Assert("offset != 0"), File: > "../src/backend/access/transam/multixact.c", Line: 1353, PID: 63386 > The problem was in converting offset segments. The new_entry index should also bypass the invalid offset (0) value. Fixed. > > On a different note, I'm surprised you're rewriting member segments from > scratch, parsing all the individual member groups and writing them out > again. There's no change to the members file format, except for the > numbering of the files, so you could just copy the files under the new > names without paying attention to the contents. It's not wrong to parse > them in detail, but I'd assume that it would be simpler not to. > Yes, at the beginning I also thought that it would be possible to get by with simple copying. But in case of wraparound, we must "bypass" invalid zero offset value. See, old 32 bit offsets a wrapped at 2^32, thus 0 values appears in multixact.c So, they must be handled. Bypass, in fact. When we are switched to the 64-bit offsets, we have two options: 1). Bypass every ((uint32) offset == 0) value in multixact.c; 2). Convert members and bypass invalid value once. The first options seem too weird for me. So, we have to repack members and bypass invalid value. All patches are for master@38c18710b37a2d -- Best regards, Maxim Orlov. --00000000000027c6980626cd37a9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Tue, 12 Nov 2024 at 02:31, Heikki Linn= akangas <hlinnaka@iki.fi> wrot= e:
The wraparound logic is still not correct.
Yep, my fault. = I forget to reset segment counter if wraparound is happened. Fixed.

When I try to select from a table after upgrade that contains
post-wraparound multixids:

TRAP: failed Assert("offset !=3D 0"), File:
"../src/backend/access/transam/multixact.c", Line: 1353, PID: 633= 86
The problem was in converting offset segments. The = new_entry index should also bypass the invalid offset (0) value. Fixed.
=
=C2=A0

On a different note, I'm surprised you're rewriting member segments= from
scratch, parsing all the individual member groups and writing them out
again. There's no change to the members file format, except for the numbering of the files, so you could just copy the files under the new
names without paying attention to the contents. It's not wrong to parse=
them in detail, but I'd assume that it would be simpler not to.
Yes, at the beginning I al= so thought that it would be possible to get by with simple copying. But in = case of wraparound, we must "bypass" invalid zero offset value. S= ee, old 32 bit offsets a wrapped at 2^32, thus 0 values appears in multixac= t.c So, they must be handled. Bypass, in fact. When we are switched to the = 64-bit offsets, we have two options:
<= span class=3D"gmail-ryNqvb">1). Bypass every ((uint32) offset =3D=3D 0) val= ue in multixact.c;
2). Convert members and bypa= ss invalid value once.

The first options seem too weird for me. So, we have to repack me= mbers and bypass invalid value.

All patches are for master@38c1871= 0b37a2d

--
Best rega= rds,
Maxim Orlov.
--00000000000027c6980626cd37a9-- --00000000000027c6990626cd37ab Content-Type: application/octet-stream; name="v7-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Disposition: attachment; filename="v7-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3g1c8pf0 RnJvbSBmZGI3ZTJlZWUzM2RmYjVkZjcxNGQ4ZDE2MTEyZDRjOTA3NDc1ZDc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgNyBBdWcgMjAyNCAxNjozNToyMiArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjcgMS81XSBV c2UgNjQtYml0IGZvcm1hdCBvdXRwdXQgZm9yIG11bHRpeGFjdCBvZmZzZXRzCgpBdXRob3I6IE1h eGltIE9ybG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1n cmRlc2MvbXhhY3RkZXNjLmMgICB8ICA5ICsrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1n cmRlc2MveGxvZ2Rlc2MuYyAgICB8ICA0ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L211bHRpeGFjdC5jICAgIHwgMjYgKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIHwgIDUgKysrLS0KIHNyYy9iaW4vcGdfY29u dHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYyAgIHwgIDQgKystLQogc3JjL2Jpbi9wZ19yZXNldHdh bC9wZ19yZXNldHdhbC5jICAgICAgICAgfCAgOCArKystLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDMx IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9teGFjdGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9teGFjdGRlc2MuYwppbmRleCAzZThhZDRkNWVmLi4xYjQ4NmRlMzhjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbXhhY3RkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3JtZ3JkZXNjL214YWN0ZGVzYy5jCkBAIC02NSw4ICs2NSw4IEBAIG11bHRpeGFjdF9k ZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJeGxfbXVsdGl4 YWN0X2NyZWF0ZSAqeGxyZWMgPSAoeGxfbXVsdGl4YWN0X2NyZWF0ZSAqKSByZWM7CiAJCWludAkJ CWk7CiAKLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIldSBvZmZzZXQgJXUgbm1lbWJlcnMgJWQ6 ICIsIHhscmVjLT5taWQsCi0JCQkJCQkgeGxyZWMtPm1vZmYsIHhscmVjLT5ubWVtYmVycyk7CisJ CWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXUgb2Zmc2V0ICVsbHUgbm1lbWJlcnMgJWQ6ICIsIHhs cmVjLT5taWQsCisJCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgeGxyZWMtPm1vZmYsIHhscmVj LT5ubWVtYmVycyk7CiAJCWZvciAoaSA9IDA7IGkgPCB4bHJlYy0+bm1lbWJlcnM7IGkrKykKIAkJ CW91dF9tZW1iZXIoYnVmLCAmeGxyZWMtPm1lbWJlcnNbaV0pOwogCX0KQEAgLTc0LDkgKzc0LDEw IEBAIG11bHRpeGFjdF9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCkKIAl7CiAJCXhsX211bHRpeGFjdF90cnVuY2F0ZSAqeGxyZWMgPSAoeGxfbXVsdGl4YWN0X3Ry dW5jYXRlICopIHJlYzsKIAotCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIm9mZnNldHMgWyV1LCAl dSksIG1lbWJlcnMgWyV1LCAldSkiLAorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIm9mZnNldHMg WyV1LCAldSksIG1lbWJlcnMgWyVsbHUsICVsbHUpIiwKIAkJCQkJCSB4bHJlYy0+c3RhcnRUcnVu Y09mZiwgeGxyZWMtPmVuZFRydW5jT2ZmLAotCQkJCQkJIHhscmVjLT5zdGFydFRydW5jTWVtYiwg eGxyZWMtPmVuZFRydW5jTWVtYik7CisJCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgeGxyZWMt PnN0YXJ0VHJ1bmNNZW1iLAorCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIHhscmVjLT5lbmRU cnVuY01lbWIpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3Jk ZXNjL3hsb2dkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYwpp bmRleCAzNjMyOTRkNjIzLi5hYWExOWM4MWM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv eGxvZ2Rlc2MuYwpAQCAtNjYsNyArNjYsNyBAQCB4bG9nX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhM b2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlDaGVja1BvaW50ICpjaGVja3BvaW50ID0gKENoZWNr UG9pbnQgKikgcmVjOwogCiAJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAicmVkbyAlWC8lWDsgIgot CQkJCQkJICJ0bGkgJXU7IHByZXYgdGxpICV1OyBmcHcgJXM7IHdhbF9sZXZlbCAlczsgeGlkICV1 OiV1OyBvaWQgJXU7IG11bHRpICV1OyBvZmZzZXQgJXU7ICIKKwkJCQkJCSAidGxpICV1OyBwcmV2 IHRsaSAldTsgZnB3ICVzOyB3YWxfbGV2ZWwgJXM7IHhpZCAldToldTsgb2lkICV1OyBtdWx0aSAl dTsgb2Zmc2V0ICVsbHU7ICIKIAkJCQkJCSAib2xkZXN0IHhpZCAldSBpbiBEQiAldTsgb2xkZXN0 IG11bHRpICV1IGluIERCICV1OyAiCiAJCQkJCQkgIm9sZGVzdC9uZXdlc3QgY29tbWl0IHRpbWVz dGFtcCB4aWQ6ICV1LyV1OyAiCiAJCQkJCQkgIm9sZGVzdCBydW5uaW5nIHhpZCAldTsgJXMiLApA QCAtNzksNyArNzksNyBAQCB4bG9nX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCQkJCQkJIFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChjaGVja3BvaW50LT5u ZXh0WGlkKSwKIAkJCQkJCSBjaGVja3BvaW50LT5uZXh0T2lkLAogCQkJCQkJIGNoZWNrcG9pbnQt Pm5leHRNdWx0aSwKLQkJCQkJCSBjaGVja3BvaW50LT5uZXh0TXVsdGlPZmZzZXQsCisJCQkJCQkg KHVuc2lnbmVkIGxvbmcgbG9uZykgY2hlY2twb2ludC0+bmV4dE11bHRpT2Zmc2V0LAogCQkJCQkJ IGNoZWNrcG9pbnQtPm9sZGVzdFhpZCwKIAkJCQkJCSBjaGVja3BvaW50LT5vbGRlc3RYaWREQiwK IAkJCQkJCSBjaGVja3BvaW50LT5vbGRlc3RNdWx0aSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v bXVsdGl4YWN0LmMKaW5kZXggOGMzN2Q3ZWJhNy4uYWI5MDkxMmVkMyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTEyNjQsNyArMTI2NCw4IEBAIEdldE5ld011bHRp WGFjdElkKGludCBubWVtYmVycywgTXVsdGlYYWN0T2Zmc2V0ICpvZmZzZXQpCiAKIAlMV0xvY2tS ZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCi0JZGVidWdfZWxvZzQoREVCVUcyLCAiR2V0TmV3 OiByZXR1cm5pbmcgJXUgb2Zmc2V0ICV1IiwgcmVzdWx0LCAqb2Zmc2V0KTsKKwlkZWJ1Z19lbG9n NChERUJVRzIsICJHZXROZXc6IHJldHVybmluZyAldSBvZmZzZXQgJWxsdSIsIHJlc3VsdCwKKwkJ CQkodW5zaWduZWQgbG9uZyBsb25nKSAqb2Zmc2V0KTsKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBA IC0yMjkzLDggKzIyOTQsOSBAQCBNdWx0aVhhY3RHZXRDaGVja3B0TXVsdGkoYm9vbCBpc19zaHV0 ZG93biwKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCiAJZGVidWdfZWxvZzYo REVCVUcyLAotCQkJCSJNdWx0aVhhY3Q6IGNoZWNrcG9pbnQgaXMgbmV4dE11bHRpICV1LCBuZXh0 T2Zmc2V0ICV1LCBvbGRlc3RNdWx0aSAldSBpbiBEQiAldSIsCi0JCQkJKm5leHRNdWx0aSwgKm5l eHRNdWx0aU9mZnNldCwgKm9sZGVzdE11bHRpLCAqb2xkZXN0TXVsdGlEQik7CisJCQkJIk11bHRp WGFjdDogY2hlY2twb2ludCBpcyBuZXh0TXVsdGkgJXUsIG5leHRPZmZzZXQgJWxsdSwgb2xkZXN0 TXVsdGkgJXUgaW4gREIgJXUiLAorCQkJCSpuZXh0TXVsdGksICh1bnNpZ25lZCBsb25nIGxvbmcp ICpuZXh0TXVsdGlPZmZzZXQsICpvbGRlc3RNdWx0aSwKKwkJCQkqb2xkZXN0TXVsdGlEQik7CiB9 CiAKIC8qCkBAIC0yMzI4LDggKzIzMzAsOCBAQCB2b2lkCiBNdWx0aVhhY3RTZXROZXh0TVhhY3Qo TXVsdGlYYWN0SWQgbmV4dE11bHRpLAogCQkJCQkgIE11bHRpWGFjdE9mZnNldCBuZXh0TXVsdGlP ZmZzZXQpCiB7Ci0JZGVidWdfZWxvZzQoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5nIG5leHQg bXVsdGkgdG8gJXUgb2Zmc2V0ICV1IiwKLQkJCQluZXh0TXVsdGksIG5leHRNdWx0aU9mZnNldCk7 CisJZGVidWdfZWxvZzQoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5nIG5leHQgbXVsdGkgdG8g JXUgb2Zmc2V0ICVsbHUiLAorCQkJCW5leHRNdWx0aSwgKHVuc2lnbmVkIGxvbmcgbG9uZykgbmV4 dE11bHRpT2Zmc2V0KTsKIAlMV0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExXX0VYQ0xV U0lWRSk7CiAJTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdCA9IG5leHRNdWx0aTsKIAlNdWx0aVhh Y3RTdGF0ZS0+bmV4dE9mZnNldCA9IG5leHRNdWx0aU9mZnNldDsKQEAgLTI1MTksOCArMjUyMSw4 IEBAIE11bHRpWGFjdEFkdmFuY2VOZXh0TVhhY3QoTXVsdGlYYWN0SWQgbWluTXVsdGksCiAJfQog CWlmIChNdWx0aVhhY3RPZmZzZXRQcmVjZWRlcyhNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldCwg bWluTXVsdGlPZmZzZXQpKQogCXsKLQkJZGVidWdfZWxvZzMoREVCVUcyLCAiTXVsdGlYYWN0OiBz ZXR0aW5nIG5leHQgb2Zmc2V0IHRvICV1IiwKLQkJCQkJbWluTXVsdGlPZmZzZXQpOworCQlkZWJ1 Z19lbG9nMyhERUJVRzIsICJNdWx0aVhhY3Q6IHNldHRpbmcgbmV4dCBvZmZzZXQgdG8gJWxsdSIs CisJCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIG1pbk11bHRpT2Zmc2V0KTsKIAkJTXVsdGlYYWN0 U3RhdGUtPm5leHRPZmZzZXQgPSBtaW5NdWx0aU9mZnNldDsKIAl9CiAJTFdMb2NrUmVsZWFzZShN dWx0aVhhY3RHZW5Mb2NrKTsKQEAgLTMyMTEsMTEgKzMyMTMsMTIgQEAgVHJ1bmNhdGVNdWx0aVhh Y3QoTXVsdGlYYWN0SWQgbmV3T2xkZXN0TXVsdGksIE9pZCBuZXdPbGRlc3RNdWx0aURCKQogCiAJ ZWxvZyhERUJVRzEsICJwZXJmb3JtaW5nIG11bHRpeGFjdCB0cnVuY2F0aW9uOiAiCiAJCSAib2Zm c2V0cyBbJXUsICV1KSwgb2Zmc2V0cyBzZWdtZW50cyBbJWxseCwgJWxseCksICIKLQkJICJtZW1i ZXJzIFsldSwgJXUpLCBtZW1iZXJzIHNlZ21lbnRzIFslbGx4LCAlbGx4KSIsCisJCSAibWVtYmVy cyBbJWxsdSwgJWxsdSksIG1lbWJlcnMgc2VnbWVudHMgWyVsbHgsICVsbHgpIiwKIAkJIG9sZGVz dE11bHRpLCBuZXdPbGRlc3RNdWx0aSwKIAkJICh1bnNpZ25lZCBsb25nIGxvbmcpIE11bHRpWGFj dElkVG9PZmZzZXRTZWdtZW50KG9sZGVzdE11bHRpKSwKIAkJICh1bnNpZ25lZCBsb25nIGxvbmcp IE11bHRpWGFjdElkVG9PZmZzZXRTZWdtZW50KG5ld09sZGVzdE11bHRpKSwKLQkJIG9sZGVzdE9m ZnNldCwgbmV3T2xkZXN0T2Zmc2V0LAorCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgb2xkZXN0T2Zm c2V0LAorCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgbmV3T2xkZXN0T2Zmc2V0LAogCQkgKHVuc2ln bmVkIGxvbmcgbG9uZykgTVhPZmZzZXRUb01lbWJlclNlZ21lbnQob2xkZXN0T2Zmc2V0KSwKIAkJ ICh1bnNpZ25lZCBsb25nIGxvbmcpIE1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50KG5ld09sZGVzdE9m ZnNldCkpOwogCkBAIC0zNDcxLDExICszNDc0LDEyIEBAIG11bHRpeGFjdF9yZWRvKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCiAJCWVsb2coREVCVUcxLCAicmVwbGF5aW5nIG11bHRpeGFjdCB0 cnVuY2F0aW9uOiAiCiAJCQkgIm9mZnNldHMgWyV1LCAldSksIG9mZnNldHMgc2VnbWVudHMgWyVs bHgsICVsbHgpLCAiCi0JCQkgIm1lbWJlcnMgWyV1LCAldSksIG1lbWJlcnMgc2VnbWVudHMgWyVs bHgsICVsbHgpIiwKKwkJCSAibWVtYmVycyBbJWxsdSwgJWxsdSksIG1lbWJlcnMgc2VnbWVudHMg WyVsbHgsICVsbHgpIiwKIAkJCSB4bHJlYy5zdGFydFRydW5jT2ZmLCB4bHJlYy5lbmRUcnVuY09m ZiwKIAkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBNdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudCh4 bHJlYy5zdGFydFRydW5jT2ZmKSwKIAkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBNdWx0aVhhY3RJ ZFRvT2Zmc2V0U2VnbWVudCh4bHJlYy5lbmRUcnVuY09mZiksCi0JCQkgeGxyZWMuc3RhcnRUcnVu Y01lbWIsIHhscmVjLmVuZFRydW5jTWVtYiwKKwkJCSAodW5zaWduZWQgbG9uZyBsb25nKSB4bHJl Yy5zdGFydFRydW5jTWVtYiwKKwkJCSAodW5zaWduZWQgbG9uZyBsb25nKSB4bHJlYy5lbmRUcnVu Y01lbWIsCiAJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgTVhPZmZzZXRUb01lbWJlclNlZ21lbnQo eGxyZWMuc3RhcnRUcnVuY01lbWIpLAogCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIE1YT2Zmc2V0 VG9NZW1iZXJTZWdtZW50KHhscmVjLmVuZFRydW5jTWVtYikpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4IDA1YzczOGQ2NjEuLjcyN2I2ZTc0NGYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCkBAIC04NzYsOCArODc2 LDkgQEAgSW5pdFdhbFJlY292ZXJ5KENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUsIGJvb2wg Kndhc1NodXRkb3duX3B0ciwKIAkJCQkJCQkgVTY0RnJvbUZ1bGxUcmFuc2FjdGlvbklkKGNoZWNr UG9pbnQubmV4dFhpZCksCiAJCQkJCQkJIGNoZWNrUG9pbnQubmV4dE9pZCkpKTsKIAllcmVwb3J0 KERFQlVHMSwKLQkJCShlcnJtc2dfaW50ZXJuYWwoIm5leHQgTXVsdGlYYWN0SWQ6ICV1OyBuZXh0 IE11bHRpWGFjdE9mZnNldDogJXUiLAotCQkJCQkJCSBjaGVja1BvaW50Lm5leHRNdWx0aSwgY2hl Y2tQb2ludC5uZXh0TXVsdGlPZmZzZXQpKSk7CisJCQkoZXJybXNnX2ludGVybmFsKCJuZXh0IE11 bHRpWGFjdElkOiAldTsgbmV4dCBNdWx0aVhhY3RPZmZzZXQ6ICVsbHUiLAorCQkJCQkJCSBjaGVj a1BvaW50Lm5leHRNdWx0aSwKKwkJCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgY2hlY2tQb2lu dC5uZXh0TXVsdGlPZmZzZXQpKSk7CiAJZXJlcG9ydChERUJVRzEsCiAJCQkoZXJybXNnX2ludGVy bmFsKCJvbGRlc3QgdW5mcm96ZW4gdHJhbnNhY3Rpb24gSUQ6ICV1LCBpbiBkYXRhYmFzZSAldSIs CiAJCQkJCQkJIGNoZWNrUG9pbnQub2xkZXN0WGlkLCBjaGVja1BvaW50Lm9sZGVzdFhpZERCKSkp OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jIGIv c3JjL2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jCmluZGV4IDkzYTA1ZDgwY2Eu LjQzYjY3Mjc1NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJv bGRhdGEuYworKysgYi9zcmMvYmluL3BnX2NvbnRyb2xkYXRhL3BnX2NvbnRyb2xkYXRhLmMKQEAg LTI1Myw4ICsyNTMsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCSAgIENvbnRy b2xGaWxlLT5jaGVja1BvaW50Q29weS5uZXh0T2lkKTsKIAlwcmludGYoXygiTGF0ZXN0IGNoZWNr cG9pbnQncyBOZXh0TXVsdGlYYWN0SWQ6ICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxlLT5jaGVj a1BvaW50Q29weS5uZXh0TXVsdGkpOwotCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5l eHRNdWx0aU9mZnNldDogICV1XG4iKSwKLQkJICAgQ29udHJvbEZpbGUtPmNoZWNrUG9pbnRDb3B5 Lm5leHRNdWx0aU9mZnNldCk7CisJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11 bHRpT2Zmc2V0OiAgJWxsdVxuIiksCisJCSAgICh1bnNpZ25lZCBsb25nIGxvbmcpIENvbnRyb2xG aWxlLT5jaGVja1BvaW50Q29weS5uZXh0TXVsdGlPZmZzZXQpOwogCXByaW50ZihfKCJMYXRlc3Qg Y2hlY2twb2ludCdzIG9sZGVzdFhJRDogICAgICAgICV1XG4iKSwKIAkJICAgQ29udHJvbEZpbGUt PmNoZWNrUG9pbnRDb3B5Lm9sZGVzdFhpZCk7CiAJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50 J3Mgb2xkZXN0WElEJ3MgREI6ICAgJXVcbiIpLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNl dHdhbC9wZ19yZXNldHdhbC5jIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCmlu ZGV4IGU5ZGNiNWE2ZDguLjk4NWNkMDY4MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmVzZXR3 YWwvcGdfcmVzZXR3YWwuYworKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMK QEAgLTczNyw4ICs3MzcsOCBAQCBQcmludENvbnRyb2xWYWx1ZXMoYm9vbCBndWVzc2VkKQogCQkg ICBDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0T2lkKTsKIAlwcmludGYoXygiTGF0ZXN0 IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlYYWN0SWQ6ICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxl LmNoZWNrUG9pbnRDb3B5Lm5leHRNdWx0aSk7Ci0JcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50 J3MgTmV4dE11bHRpT2Zmc2V0OiAgJXVcbiIpLAotCQkgICBDb250cm9sRmlsZS5jaGVja1BvaW50 Q29weS5uZXh0TXVsdGlPZmZzZXQpOworCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5l eHRNdWx0aU9mZnNldDogICVsbHVcbiIpLAorCQkgICAodW5zaWduZWQgbG9uZyBsb25nKSBDb250 cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0TXVsdGlPZmZzZXQpOwogCXByaW50ZihfKCJMYXRl c3QgY2hlY2twb2ludCdzIG9sZGVzdFhJRDogICAgICAgICV1XG4iKSwKIAkJICAgQ29udHJvbEZp bGUuY2hlY2tQb2ludENvcHkub2xkZXN0WGlkKTsKIAlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9p bnQncyBvbGRlc3RYSUQncyBEQjogICAldVxuIiksCkBAIC04MDksOCArODA5LDggQEAgUHJpbnRO ZXdDb250cm9sVmFsdWVzKHZvaWQpCiAKIAlpZiAoc2V0X214b2ZmICE9IC0xKQogCXsKLQkJcHJp bnRmKF8oIk5leHRNdWx0aU9mZnNldDogICAgICAgICAgICAgICAgICAgICAgJXVcbiIpLAotCQkJ ICAgQ29udHJvbEZpbGUuY2hlY2tQb2ludENvcHkubmV4dE11bHRpT2Zmc2V0KTsKKwkJcHJpbnRm KF8oIk5leHRNdWx0aU9mZnNldDogICAgICAgICAgICAgICAgICAgICAgJWxsdVxuIiksCisJCQkg ICAodW5zaWduZWQgbG9uZyBsb25nKSBDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0TXVs dGlPZmZzZXQpOwogCX0KIAogCWlmIChzZXRfb2lkICE9IDApCi0tIAoyLjQzLjAKCg== --00000000000027c6990626cd37ab Content-Type: application/octet-stream; name="v7-0004-Get-rid-of-MultiXactMemberFreezeThreshold-call.patch" Content-Disposition: attachment; filename="v7-0004-Get-rid-of-MultiXactMemberFreezeThreshold-call.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3g1c8qj3 RnJvbSAxYjYzMGQyZjgyY2U2OWNkODQ3OWFhYWVjN2RmZTI2NmE3N2ZiNzE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjMgT2N0IDIwMjQgMTg6MjM6MzkgKzAzMDAKU3ViamVjdDogW1BBVENIIHY3IDQvNV0g R2V0IHJpZCBvZiBNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQgY2FsbC4KClNpbmNlIE1h eE11bHRpWGFjdE9mZnNldCBhcmUgVUlOVDY0X01BWCBub3csIE1VTFRJWEFDVF9NRU1CRVJfU0FG RV9USFJFU0hPTEQgYW5kCk1VTFRJWEFDVF9NRU1CRVJfREFOR0VSX1RIUkVTSE9MRCB2YWx1ZXMg YXJlIG5vdCBtZWFuaW5nZnVsIGFueSBtb3JlLiBUaHVzLApNdWx0aVhhY3RNZW1iZXJGcmVlemVU aHJlc2hvbGQgaXMgbm90IG5lZWRlZCB0b28uCgpJbnN0ZWFkLCBzd2l0Y2ggdG8gTVVMVElYQUNU X01FTUJFUl9BVVRPVkFDX1RIUkVTSE9MRCAoZXEgMl4zMikgbWVtYmVycwp0aHJlc2hvbGQuIEl0 IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gZm9yY2UgYXV0b3ZhY3V1bSBvciBu b3QuCgpBdXRob3I6IE1heGltIE9ybG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyB8IDExNyArKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgICB8ICAgMiArLQog c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgfCAgIDQgKy0KIHNyYy9pbmNs dWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCAgICAgICAgIHwgICAxIC0KIDQgZmlsZXMgY2hhbmdlZCwg MTUgaW5zZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vbXVsdGl4YWN0LmMKaW5kZXggNDhlMWMwMTYwYS4uYTgxN2Y1MzllZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTIwNCwxMCArMjA0LDE0IEBAIE1YT2Zmc2V0 VG9NZW1iZXJPZmZzZXQoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCkKIAkJbWVtYmVyX2luX2dyb3Vw ICogc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwogfQogCi0vKiBNdWx0aXhhY3QgbWVtYmVycyB3cmFw YXJvdW5kIHRocmVzaG9sZHMuICovCi0jZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJF U0hPTEQJCShNYXhNdWx0aVhhY3RPZmZzZXQgLyAyKQotI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVS X0RBTkdFUl9USFJFU0hPTEQJXAotCShNYXhNdWx0aVhhY3RPZmZzZXQgLSBNYXhNdWx0aVhhY3RP ZmZzZXQgLyA0KQorLyoKKyAqIE11bHRpeGFjdCBtZW1iZXJzIHdhcm5pbmcgdGhyZXNob2xkLgor ICoKKyAqIElmIGRpZmZlcmVuY2UgYmV0dHdlZW4gbmV4dE9mZnNldCBhbmQgb2xkZXN0T2Zmc2V0 IGV4Y2VlZCB0aGlzIHZhbHVlLCB3ZQorICogdHJpZ2dlciBhdXRvdmFjdXVtaW4gb3JkZXIgdG8g cmVsZWFzZSB0aGUgZGlzayBzcGFjZSwgcmVkdWNlIHRhYmxlIGJsb2F0IGlmCisgKiBwb3NzaWJs ZS4KKyAqLworI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSX0FVVE9WQUNfVEhSRVNIT0xECQlVSU5U NjRDT05TVCgweEZGRkZGRkZGKQogCiBzdGF0aWMgaW5saW5lIE11bHRpWGFjdElkCiBQcmV2aW91 c011bHRpWGFjdElkKE11bHRpWGFjdElkIG11bHRpKQpAQCAtMjYxNiwxNSArMjYyMCwxMyBAQCBH ZXRPbGRlc3RNdWx0aVhhY3RJZCh2b2lkKQogfQogCiAvKgotICogRGV0ZXJtaW5lIGhvdyBhZ2dy ZXNzaXZlbHkgd2UgbmVlZCB0byB2YWN1dW0gaW4gb3JkZXIgdG8gcHJldmVudCBtZW1iZXIKLSAq IHdyYXBhcm91bmQuCisgKiBEZXRlcm1pbmUgaWYgd2UgbmVlZCB0byB2YWN1dW0gZm9yIG1lbWJl ciBvciBub3QuCiAgKgogICogVG8gZG8gc28gZGV0ZXJtaW5lIHdoYXQncyB0aGUgb2xkZXN0IG1l bWJlciBvZmZzZXQgYW5kIGluc3RhbGwgdGhlIGxpbWl0CiAgKiBpbmZvIGluIE11bHRpWGFjdFN0 YXRlLCB3aGVyZSBpdCBjYW4gYmUgdXNlZCB0byBwcmV2ZW50IG92ZXJydW4gb2Ygb2xkIGRhdGEK ICAqIGluIHRoZSBtZW1iZXJzIFNMUlUgYXJlYS4KICAqCi0gKiBUaGUgcmV0dXJuIHZhbHVlIGlz IHRydWUgaWYgZW1lcmdlbmN5IGF1dG92YWN1dW0gaXMgcmVxdWlyZWQgYW5kIGZhbHNlCi0gKiBv dGhlcndpc2UuCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRydWUgaWYgYXV0b3ZhY3V1bSBpcyBy ZXF1aXJlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICovCiBzdGF0aWMgYm9vbAogU2V0T2Zmc2V0 VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQpAQCAtMjcxMiwxMCArMjcxNCwxMCBAQCBTZXRP ZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJTFdMb2NrUmVsZWFzZShNdWx0aVhh Y3RHZW5Mb2NrKTsKIAogCS8qCi0JICogRG8gd2UgbmVlZCBhbiBlbWVyZ2VuY3kgYXV0b3ZhY3V1 bT8JSWYgd2UncmUgbm90IHN1cmUsIGFzc3VtZSB5ZXMuCisJICogRG8gd2UgbmVlZCBhdXRvdmFj dXVtPwlJZiB3ZSdyZSBub3Qgc3VyZSwgYXNzdW1lIHllcy4KIAkgKi8KIAlyZXR1cm4gIW9sZGVz dE9mZnNldEtub3duIHx8Ci0JCShuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0ID4gTVVMVElYQUNU X01FTUJFUl9TQUZFX1RIUkVTSE9MRCk7CisJCShuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0ID4g TVVMVElYQUNUX01FTUJFUl9BVVRPVkFDX1RIUkVTSE9MRCk7CiB9CiAKIC8qCkBAIC0yNzYxLDEw MSArMjc2Myw2IEBAIGZpbmRfbXVsdGl4YWN0X3N0YXJ0KE11bHRpWGFjdElkIG11bHRpLCBNdWx0 aVhhY3RPZmZzZXQgKnJlc3VsdCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotLyoKLSAqIERldGVybWlu ZSBob3cgbWFueSBtdWx0aXhhY3RzLCBhbmQgaG93IG1hbnkgbXVsdGl4YWN0IG1lbWJlcnMsIGN1 cnJlbnRseQotICogZXhpc3QuICBSZXR1cm4gZmFsc2UgaWYgdW5hYmxlIHRvIGRldGVybWluZS4K LSAqLwotc3RhdGljIGJvb2wKLVJlYWRNdWx0aVhhY3RDb3VudHModWludDMyICptdWx0aXhhY3Rz LCBNdWx0aVhhY3RPZmZzZXQgKm1lbWJlcnMpCi17Ci0JTXVsdGlYYWN0T2Zmc2V0IG5leHRPZmZz ZXQ7Ci0JTXVsdGlYYWN0T2Zmc2V0IG9sZGVzdE9mZnNldDsKLQlNdWx0aVhhY3RJZCBvbGRlc3RN dWx0aVhhY3RJZDsKLQlNdWx0aVhhY3RJZCBuZXh0TXVsdGlYYWN0SWQ7Ci0JYm9vbAkJb2xkZXN0 T2Zmc2V0S25vd247Ci0KLQlMV0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExXX1NIQVJF RCk7Ci0JbmV4dE9mZnNldCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0OwotCW9sZGVzdE11 bHRpWGFjdElkID0gTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE11bHRpWGFjdElkOwotCW5leHRNdWx0 aVhhY3RJZCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0TVhhY3Q7Ci0Jb2xkZXN0T2Zmc2V0ID0gTXVs dGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldDsKLQlvbGRlc3RPZmZzZXRLbm93biA9IE11bHRpWGFj dFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93bjsKLQlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxv Y2spOwotCi0JaWYgKCFvbGRlc3RPZmZzZXRLbm93bikKLQkJcmV0dXJuIGZhbHNlOwotCi0JKm1l bWJlcnMgPSBuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0OwotCSptdWx0aXhhY3RzID0gbmV4dE11 bHRpWGFjdElkIC0gb2xkZXN0TXVsdGlYYWN0SWQ7Ci0JcmV0dXJuIHRydWU7Ci19Ci0KLS8qCi0g KiBNdWx0aXhhY3QgbWVtYmVycyBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRoZSBtdWx0aXhhY3RzIHRo YXQgcmVmZXIgdG8gdGhlbQotICogYXJlIG9sZGVyIHRoYW4gZXZlcnkgZGF0bWlubXhpZC4gIGF1 dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlIGFuZAotICogdmFjdXVtX211bHRpeGFj dF9mcmVlemVfdGFibGVfYWdlIHdvcmsgdG9nZXRoZXIgdG8gbWFrZSBzdXJlIHdlIG5ldmVyIGhh dmUKLSAqIHRvbyBtYW55IG11bHRpeGFjdHM7IHdlIGhvcGUgdGhhdCwgYXQgbGVhc3QgdW5kZXIg bm9ybWFsIGNpcmN1bXN0YW5jZXMsCi0gKiB0aGlzIHdpbGwgYWxzbyBiZSBzdWZmaWNpZW50IHRv IGtlZXAgdXMgZnJvbSB1c2luZyB0b28gbWFueSBvZmZzZXRzLgotICogSG93ZXZlciwgaWYgdGhl IGF2ZXJhZ2UgbXVsdGl4YWN0IGhhcyBtYW55IG1lbWJlcnMsIHdlIG1pZ2h0IGV4aGF1c3QgdGhl Ci0gKiBtZW1iZXJzIHNwYWNlIHdoaWxlIHN0aWxsIHVzaW5nIGZldyBlbm91Z2ggbWVtYmVycyB0 aGF0IHRoZXNlIGxpbWl0cyBmYWlsCi0gKiB0byB0cmlnZ2VyIHJlbG1pbm14aWQgYWR2YW5jZW1l bnQgYnkgVkFDVVVNLiAgQXQgdGhhdCBwb2ludCwgd2UnZCBoYXZlIG5vCi0gKiBjaG9pY2UgYnV0 IHRvIHN0YXJ0IGZhaWxpbmcgbXVsdGl4YWN0LWNyZWF0aW5nIG9wZXJhdGlvbnMgd2l0aCBhbiBl cnJvci4KLSAqCi0gKiBUbyBwcmV2ZW50IHRoYXQsIGlmIG1vcmUgdGhhbiBhIHRocmVzaG9sZCBw b3J0aW9uIG9mIHRoZSBtZW1iZXJzIHNwYWNlIGlzCi0gKiB1c2VkLCB3ZSBlZmZlY3RpdmVseSBy ZWR1Y2UgYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgYW5kCi0gKiB0byBhIHZh bHVlIGp1c3QgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgbXVsdGl4YWN0cyBpbiB1c2UuICBXZSBo b3BlIHRoYXQKLSAqIHRoaXMgd2lsbCBxdWlja2x5IHRyaWdnZXIgYXV0b3ZhY3V1bWluZyBvbiB0 aGUgdGFibGUgb3IgdGFibGVzIHdpdGggdGhlCi0gKiBvbGRlc3QgcmVsbWlubXhpZCwgdGh1cyBh bGxvd2luZyBkYXRtaW5teGlkIHZhbHVlcyB0byBhZHZhbmNlIGFuZCByZW1vdmluZwotICogc29t ZSBtZW1iZXJzLgotICoKLSAqIEFzIHRoZSBmcmFjdGlvbiBvZiB0aGUgbWVtYmVyIHNwYWNlIGN1 cnJlbnRseSBpbiB1c2UgZ3Jvd3MsIHdlIGJlY29tZQotICogbW9yZSBhZ2dyZXNzaXZlIGluIGNs YW1waW5nIHRoaXMgdmFsdWUuICBUaGF0IG5vdCBvbmx5IGNhdXNlcyBhdXRvdmFjdXVtCi0gKiB0 byByYW1wIHVwLCBidXQgYWxzbyBtYWtlcyBhbnkgbWFudWFsIHZhY3V1bXMgdGhlIHVzZXIgaXNz dWVzIG1vcmUKLSAqIGFnZ3Jlc3NpdmUuICBUaGlzIGhhcHBlbnMgYmVjYXVzZSB2YWN1dW1fZ2V0 X2N1dG9mZnMoKSB3aWxsIGNsYW1wIHRoZQotICogZnJlZXplIHRhYmxlIGFuZCB0aGUgbWluaW11 bSBmcmVlemUgYWdlIGN1dG9mZnMgYmFzZWQgb24gdGhlIGVmZmVjdGl2ZQotICogYXV0b3ZhY3V1 bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgdGhpcyBmdW5jdGlvbiByZXR1cm5zLiAgSW4gdGhl IHdvcnN0Ci0gKiBjYXNlLCB3ZSdsbCBjbGFpbSB0aGUgZnJlZXplX21heF9hZ2UgdG8gemVybywg YW5kIGV2ZXJ5IHZhY3V1bSBvZiBhbnkKLSAqIHRhYmxlIHdpbGwgZnJlZXplIGV2ZXJ5IG11bHRp eGFjdC4KLSAqLwotaW50Ci1NdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQodm9pZCkKLXsK LQlNdWx0aVhhY3RPZmZzZXQgbWVtYmVyczsKLQl1aW50MzIJCW11bHRpeGFjdHM7Ci0JdWludDMy CQl2aWN0aW1fbXVsdGl4YWN0czsKLQlkb3VibGUJCWZyYWN0aW9uOwotCWludAkJCXJlc3VsdDsK LQotCS8qIElmIHdlIGNhbid0IGRldGVybWluZSBtZW1iZXIgc3BhY2UgdXRpbGl6YXRpb24sIGFz c3VtZSB0aGUgd29yc3QuICovCi0JaWYgKCFSZWFkTXVsdGlYYWN0Q291bnRzKCZtdWx0aXhhY3Rz LCAmbWVtYmVycykpCi0JCXJldHVybiAwOwotCi0JLyogSWYgbWVtYmVyIHNwYWNlIHV0aWxpemF0 aW9uIGlzIGxvdywgbm8gc3BlY2lhbCBhY3Rpb24gaXMgcmVxdWlyZWQuICovCi0JaWYgKG1lbWJl cnMgPD0gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCkKLQkJcmV0dXJuIGF1dG92YWN1 dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOwotCi0JLyoKLQkgKiBDb21wdXRlIGEgdGFyZ2V0 IGZvciByZWxtaW5teGlkIGFkdmFuY2VtZW50LiAgVGhlIG51bWJlciBvZiBtdWx0aXhhY3RzCi0J ICogd2UgdHJ5IHRvIGVsaW1pbmF0ZSBmcm9tIHRoZSBzeXN0ZW0gaXMgYmFzZWQgb24gaG93IGZh ciB3ZSBhcmUgcGFzdAotCSAqIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQuCi0JICov Ci0JZnJhY3Rpb24gPSAoZG91YmxlKSAobWVtYmVycyAtIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9U SFJFU0hPTEQpOwotCWZyYWN0aW9uIC89IChkb3VibGUpIChNVUxUSVhBQ1RfTUVNQkVSX0RBTkdF Ul9USFJFU0hPTEQgLSBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKLQotCXZpY3Rp bV9tdWx0aXhhY3RzID0gbXVsdGl4YWN0cyAqIGZyYWN0aW9uOwotCi0JLyogZnJhY3Rpb24gY291 bGQgYmUgPiAxLjAsIGJ1dCBsb3dlc3QgcG9zc2libGUgZnJlZXplIGFnZSBpcyB6ZXJvICovCi0J aWYgKHZpY3RpbV9tdWx0aXhhY3RzID4gbXVsdGl4YWN0cykKLQkJcmV0dXJuIDA7Ci0JcmVzdWx0 ID0gbXVsdGl4YWN0cyAtIHZpY3RpbV9tdWx0aXhhY3RzOwotCi0JLyoKLQkgKiBDbGFtcCB0byBh dXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwgc28gdGhhdCB3ZSBuZXZlciBtYWtl Ci0JICogYXV0b3ZhY3V1bSBsZXNzIGFnZ3Jlc3NpdmUgdGhhbiBpdCB3b3VsZCBvdGhlcndpc2Ug YmUuCi0JICovCi0JcmV0dXJuIE1pbihyZXN1bHQsIGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6 ZV9tYXhfYWdlKTsKLX0KLQogdHlwZWRlZiBzdHJ1Y3QgbXh0cnVuY2luZm8KIHsKIAlpbnQ2NAkJ ZWFybGllc3RFeGlzdGluZ1BhZ2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IDg2ZjM2YjM2OTUu LmU3NTA2ZTI2OGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0xMTMzLDcgKzExMzMsNyBAQCB2 YWN1dW1fZ2V0X2N1dG9mZnMoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKIAkgKiBub3JtYWxseSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwgYnV0 IG1heSBiZSBsZXNzIGlmIHdlIGFyZQogCSAqIHNob3J0IG9mIG11bHRpeGFjdCBtZW1iZXIgc3Bh Y2UuCiAJICovCi0JZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSA9IE11bHRpWGFj dE1lbWJlckZyZWV6ZVRocmVzaG9sZCgpOworCWVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21h eF9hZ2UgPSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZTsKIAogCS8qCiAJICog QWxtb3N0IHJlYWR5IHRvIHNldCBmcmVlemUgb3V0cHV0IHBhcmFtZXRlcnM7IGNoZWNrIGlmIE9s ZGVzdFhtaW4gb3IKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggZGMzY2Y4N2Fi YS4uMTgwYmI3ZTk2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTExMjIs NyArMTEyMiw3IEBAIGRvX3N0YXJ0X3dvcmtlcih2b2lkKQogCiAJLyogQWxzbyBkZXRlcm1pbmUg dGhlIG9sZGVzdCBkYXRtaW5teGlkIHdlIHdpbGwgY29uc2lkZXIuICovCiAJcmVjZW50TXVsdGkg PSBSZWFkTmV4dE11bHRpWGFjdElkKCk7Ci0JbXVsdGlGb3JjZUxpbWl0ID0gcmVjZW50TXVsdGkg LSBNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQoKTsKKwltdWx0aUZvcmNlTGltaXQgPSBy ZWNlbnRNdWx0aSAtIGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOwogCWlmICht dWx0aUZvcmNlTGltaXQgPCBGaXJzdE11bHRpWGFjdElkKQogCQltdWx0aUZvcmNlTGltaXQgLT0g Rmlyc3RNdWx0aVhhY3RJZDsKIApAQCAtMTkxNSw3ICsxOTE1LDcgQEAgZG9fYXV0b3ZhY3V1bSh2 b2lkKQogCSAqIG5vcm1hbGx5IGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlLCBi dXQgbWF5IGJlIGxlc3MgaWYgd2UgYXJlCiAJICogc2hvcnQgb2YgbXVsdGl4YWN0IG1lbWJlciBz cGFjZS4KIAkgKi8KLQllZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlID0gTXVsdGlY YWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKCk7CisJZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVf bWF4X2FnZSA9IGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOwogCiAJLyoKIAkg KiBGaW5kIHRoZSBwZ19kYXRhYmFzZSBlbnRyeSBhbmQgc2VsZWN0IHRoZSBkZWZhdWx0IGZyZWV6 ZSBhZ2VzLiBXZSB1c2UKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3Qu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAppbmRleCA5MDU4MzYzNGVjLi41YWVm YmRkY2UzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oCkBAIC0xNDMsNyArMTQzLDYgQEAgZXh0ZXJu IHZvaWQgTXVsdGlYYWN0U2V0TmV4dE1YYWN0KE11bHRpWGFjdElkIG5leHRNdWx0aSwKIGV4dGVy biB2b2lkIE11bHRpWGFjdEFkdmFuY2VOZXh0TVhhY3QoTXVsdGlYYWN0SWQgbWluTXVsdGksCiAJ CQkJCQkJCQkgIE11bHRpWGFjdE9mZnNldCBtaW5NdWx0aU9mZnNldCk7CiBleHRlcm4gdm9pZCBN dWx0aVhhY3RBZHZhbmNlT2xkZXN0KE11bHRpWGFjdElkIG9sZGVzdE11bHRpLCBPaWQgb2xkZXN0 TXVsdGlEQik7Ci1leHRlcm4gaW50CU11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCh2b2lk KTsKIAogZXh0ZXJuIHZvaWQgbXVsdGl4YWN0X3R3b3BoYXNlX3JlY292ZXIoVHJhbnNhY3Rpb25J ZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJCQkJICAgdm9pZCAqcmVjZGF0YSwgdWludDMyIGxl bik7Ci0tIAoyLjQzLjAKCg== --00000000000027c6990626cd37ab Content-Type: application/octet-stream; name="v7-0005-TEST-bump-catver.patch" Content-Disposition: attachment; filename="v7-0005-TEST-bump-catver.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3g1c8qm4 RnJvbSBmMjI5MTc3OTUxZTdjMjMzZTRmODI3Y2QxOTk2ZjlhZTllYWM4Zjg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMTMgTm92IDIwMjQgMTY6MzQ6MzQgKzAzMDAKU3ViamVjdDogW1BBVENIIHY3IDUvNV0g VEVTVDogYnVtcCBjYXR2ZXIKCi0tLQogc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCAg fCAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaCB8IDIgKy0KIDIgZmlsZXMg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBn cmFkZS5oCmluZGV4IDJjODVlYzFlOTQuLjE4ZmFlZGM5NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfdXBncmFkZS9wZ191cGdyYWRlLmgKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3Jh ZGUuaApAQCAtMTE5LDcgKzExOSw3IEBAIGV4dGVybiBjaGFyICpvdXRwdXRfZmlsZXNbXTsKICAq CiAgKiBYWFg6IHNob3VsZCBiZSBjaGFuZ2VkIHRvIHRoZSBhY3R1YWwgQ0FUQUxPR19WRVJTSU9O X05PIG9uIGNvbW1pdC4KICAqLwotI2RlZmluZSBNVUxUSVhBQ1RPRkZTRVRfRk9STUFUQ0hBTkdF X0NBVF9WRVIgMjAyNDA5MDQxCisjZGVmaW5lIE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0Vf Q0FUX1ZFUiAyMDI0MTExMTIKIAogLyoKICAqIGxhcmdlIG9iamVjdCBjaHVuayBzaXplIGFkZGVk IHRvIHBnX2NvbnRyb2xkYXRhLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2 ZXJzaW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAppbmRleCA1ZGQ5MWUx OTBhLi4zZDA5Y2FmNWFlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNp b24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaApAQCAtNTcsNiArNTcs NiBAQAogICovCiAKIC8qCQkJCQkJCXl5eXltbWRkTiAqLwotI2RlZmluZSBDQVRBTE9HX1ZFUlNJ T05fTk8JMjAyNDExMTExCisjZGVmaW5lIENBVEFMT0dfVkVSU0lPTl9OTwkyMDI0MTExMTIKIAog I2VuZGlmCi0tIAoyLjQzLjAKCg== --00000000000027c6990626cd37ab Content-Type: application/octet-stream; name="v7-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Disposition: attachment; filename="v7-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3g1c8qe2 RnJvbSAzZjI2ZDRkNGQ4YWViNjE3MjlkYTNmYWY3NTA2YzdkZjJhYTQzNDdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogVHVlLCAxMyBBdWcgMjAyNCAxNDo0NDo1MCArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjcg My81XSBNYWtlIHBnX3VwZ3JhZGUgY29udmVydCBtdWx0aXhhY3Qgb2Zmc2V0cy4KCkF1dGhvcjog TWF4aW0gT3Jsb3YgPG9ybG92bWdAZ21haWwuY29tPgpBdXRob3I6IFl1cmEgU29rb2xvdiA8eS5z b2tvbG92QHBvc3RncmVzcHJvLnJ1PgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211 bHRpeGFjdC5jIHwgICAyICstCiBzcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQgICAgICAgICB8ICAgMSAr CiBzcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jICAgICAgICB8ICA0MiArLQogc3JjL2Jp bi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCAgICAgICAgfCAgMTQgKy0KIHNyYy9iaW4vcGdfdXBn cmFkZS9zZWdyZXNpemUuYyAgICAgICAgIHwgNTI5ICsrKysrKysrKysrKysrKysrKysrKysrKysK IDYgZmlsZXMgY2hhbmdlZCwgNTgzIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5jCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCBjNTFlMDNlODMyLi40OGUxYzAxNjBhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtMTg5MSw3ICsxODkxLDcg QEAgTXVsdGlYYWN0U2htZW1Jbml0KHZvaWQpCiAJCQkJICAicGdfbXVsdGl4YWN0L29mZnNldHMi LCBMV1RSQU5DSEVfTVVMVElYQUNUT0ZGU0VUX0JVRkZFUiwKIAkJCQkgIExXVFJBTkNIRV9NVUxU SVhBQ1RPRkZTRVRfU0xSVSwKIAkJCQkgIFNZTkNfSEFORExFUl9NVUxUSVhBQ1RfT0ZGU0VULAot CQkJCSAgdHJ1ZSk7CisJCQkJICBmYWxzZSk7CiAJU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhN dWx0aVhhY3RPZmZzZXRDdGwsIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFKTsKIAlTaW1wbGVM cnVJbml0KE11bHRpWGFjdE1lbWJlckN0bCwKIAkJCQkgICJtdWx0aXhhY3RfbWVtYmVyIiwgbXVs dGl4YWN0X21lbWJlcl9idWZmZXJzLCAwLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRl L01ha2VmaWxlIGIvc3JjL2Jpbi9wZ191cGdyYWRlL01ha2VmaWxlCmluZGV4IGY4M2QyYjVkMzAu LjcwOTA4ZDYzYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9NYWtlZmlsZQorKysg Yi9zcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUKQEAgLTIxLDYgKzIxLDcgQEAgT0JKUyA9IFwK IAlpbmZvLm8gXAogCW9wdGlvbi5vIFwKIAlwYXJhbGxlbC5vIFwKKwlzZWdyZXNpemUubyBcCiAJ cGdfdXBncmFkZS5vIFwKIAlyZWxmaWxlbnVtYmVyLm8gXAogCXNlcnZlci5vIFwKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfdXBncmFkZS9t ZXNvbi5idWlsZAppbmRleCAzZDg4NDE5Njc0Li4xNmY4OThiYTE0IDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29u LmJ1aWxkCkBAIC0xMCw2ICsxMCw3IEBAIHBnX3VwZ3JhZGVfc291cmNlcyA9IGZpbGVzKAogICAn aW5mby5jJywKICAgJ29wdGlvbi5jJywKICAgJ3BhcmFsbGVsLmMnLAorICAnc2VncmVzaXplLmMn LAogICAncGdfdXBncmFkZS5jJywKICAgJ3JlbGZpbGVudW1iZXIuYycsCiAgICdzZXJ2ZXIuYycs CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jIGIvc3JjL2Jpbi9w Z191cGdyYWRlL3BnX3VwZ3JhZGUuYwppbmRleCA2NjMyMzU4MTZmLi4xNjU0ZTg3N2MwIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jCisrKyBiL3NyYy9iaW4vcGdf dXBncmFkZS9wZ191cGdyYWRlLmMKQEAgLTc1MCw4ICs3NTAsNDIgQEAgY29weV94YWN0X3hsb2df eGlkKHZvaWQpCiAJaWYgKG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNhdF92ZXIgPj0gTVVMVElY QUNUX0ZPUk1BVENIQU5HRV9DQVRfVkVSICYmCiAJCW5ld19jbHVzdGVyLmNvbnRyb2xkYXRhLmNh dF92ZXIgPj0gTVVMVElYQUNUX0ZPUk1BVENIQU5HRV9DQVRfVkVSKQogCXsKLQkJY29weV9zdWJk aXJfZmlsZXMoInBnX211bHRpeGFjdC9vZmZzZXRzIiwgInBnX211bHRpeGFjdC9vZmZzZXRzIik7 Ci0JCWNvcHlfc3ViZGlyX2ZpbGVzKCJwZ19tdWx0aXhhY3QvbWVtYmVycyIsICJwZ19tdWx0aXhh Y3QvbWVtYmVycyIpOworCQkvKgorCQkgKiBJZiB0aGUgb2xkIHNlcnZlciBpcyBiZWZvcmUgdGhl IE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUgorCQkgKiBpdCBtdXN0IGhhdmUg MzItYml0IG11bHRpeGlkIG9mZnNldHMsIHRodXMgaXQgc2hvdWxkIGJlIGNvbnZlcnRlZC4KKwkJ ICovCisJCWlmIChvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyIDwgTVVMVElYQUNUT0ZG U0VUX0ZPUk1BVENIQU5HRV9DQVRfVkVSICYmCisJCQluZXdfY2x1c3Rlci5jb250cm9sZGF0YS5j YXRfdmVyID49IE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUikKKwkJeworCQkJ TXVsdGlYYWN0T2Zmc2V0CQlvbGRlc3Rfb2Zmc2V0LAorCQkJCQkJCQluZXh0X29mZnNldDsKKwor CQkJcmVtb3ZlX25ld19zdWJkaXIoInBnX211bHRpeGFjdC9vZmZzZXRzIiwgZmFsc2UpOworCQkJ cHJlcF9zdGF0dXMoIkNvbnZlcnRpbmcgcGdfbXVsdGl4YWN0L29mZnNldHMgdG8gNjQtYml0Iik7 CisJCQlvbGRlc3Rfb2Zmc2V0ID0gY29udmVydF9tdWx0aXhhY3Rfb2Zmc2V0cygpOworCQkJY2hl Y2tfb2soKTsKKworCQkJcmVtb3ZlX25ld19zdWJkaXIoInBnX211bHRpeGFjdC9tZW1iZXJzIiwg ZmFsc2UpOworCQkJcHJlcF9zdGF0dXMoIkNvbnZlcnRpbmcgcGdfbXVsdGl4YWN0L21lbWJlcnMi KTsKKwkJCWNvbnZlcnRfbXVsdGl4YWN0X21lbWJlcnMob2xkZXN0X29mZnNldCk7CisJCQljaGVj a19vaygpOworCisJCQluZXh0X29mZnNldCA9IG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3Bu dF9ueHRteG9mZjsKKwkJCWlmIChvbGRlc3Rfb2Zmc2V0KQorCQkJeworCQkJCWlmIChuZXh0X29m ZnNldCA8IG9sZGVzdF9vZmZzZXQpCisJCQkJCW5leHRfb2Zmc2V0ICs9ICgoTXVsdGlYYWN0T2Zm c2V0KSAxIDw8IDMyKSAtIDE7CisKKwkJCQluZXh0X29mZnNldCAtPSBvbGRlc3Rfb2Zmc2V0IC0g MTsKKworCQkJCW9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9ueHRteG9mZiA9IG5leHRf b2Zmc2V0OworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJY29weV9zdWJkaXJfZmlsZXMoInBn X211bHRpeGFjdC9vZmZzZXRzIiwgInBnX211bHRpeGFjdC9vZmZzZXRzIik7CisJCQljb3B5X3N1 YmRpcl9maWxlcygicGdfbXVsdGl4YWN0L21lbWJlcnMiLCAicGdfbXVsdGl4YWN0L21lbWJlcnMi KTsKKwkJfQogCiAJCXByZXBfc3RhdHVzKCJTZXR0aW5nIG5leHQgbXVsdGl4YWN0IElEIGFuZCBv ZmZzZXQgZm9yIG5ldyBjbHVzdGVyIik7CiAKQEAgLTc2MCw5ICs3OTQsOSBAQCBjb3B5X3hhY3Rf eGxvZ194aWQodm9pZCkKIAkJICogY291bnRlcnMgaGVyZSBhbmQgdGhlIG9sZGVzdCBtdWx0aSBw cmVzZW50IG9uIHN5c3RlbS4KIAkJICovCiAJCWV4ZWNfcHJvZyhVVElMSVRZX0xPR19GSUxFLCBO VUxMLCB0cnVlLCB0cnVlLAotCQkJCSAgIlwiJXMvcGdfcmVzZXR3YWxcIiAtTyAldSAtbSAldSwl dSBcIiVzXCIiLAorCQkJCSAgIlwiJXMvcGdfcmVzZXR3YWxcIiAtTyAlbGx1IC1tICV1LCV1IFwi JXNcIiIsCiAJCQkJICBuZXdfY2x1c3Rlci5iaW5kaXIsCi0JCQkJICBvbGRfY2x1c3Rlci5jb250 cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmYsCisJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSBvbGRf Y2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmYsCiAJCQkJICBvbGRfY2x1c3Rlci5j b250cm9sZGF0YS5jaGtwbnRfbnh0bXVsdGksCiAJCQkJICBvbGRfY2x1c3Rlci5jb250cm9sZGF0 YS5jaGtwbnRfb2xkc3RNdWx0aSwKIAkJCQkgIG5ld19jbHVzdGVyLnBnZGF0YSk7CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oIGIvc3JjL2Jpbi9wZ191cGdyYWRl L3BnX3VwZ3JhZGUuaAppbmRleCA1M2Y2OTNjMmQ0Li4yYzg1ZWMxZTk0IDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9w Z191cGdyYWRlLmgKQEAgLTExNCw2ICsxMTQsMTMgQEAgZXh0ZXJuIGNoYXIgKm91dHB1dF9maWxl c1tdOwogICovCiAjZGVmaW5lIE1VTFRJWEFDVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUiAyMDEzMDEy MzEKIAorLyoKKyAqIFN3aWN0aCBmcm9tIDMyLWJpdCB0byA2NC1iaXQgZm9yIG11bHRpeGlkIG9m ZnNldHMuCisgKgorICogWFhYOiBzaG91bGQgYmUgY2hhbmdlZCB0byB0aGUgYWN0dWFsIENBVEFM T0dfVkVSU0lPTl9OTyBvbiBjb21taXQuCisgKi8KKyNkZWZpbmUgTVVMVElYQUNUT0ZGU0VUX0ZP Uk1BVENIQU5HRV9DQVRfVkVSIDIwMjQwOTA0MQorCiAvKgogICogbGFyZ2Ugb2JqZWN0IGNodW5r IHNpemUgYWRkZWQgdG8gcGdfY29udHJvbGRhdGEsCiAgKiBjb21taXQgNWY5M2MzNzgwNWU3NDg1 NDg4NDgwOTE2YjQ1ODVlMDk4ZDNjYzg4MwpAQCAtMjMwLDcgKzIzNyw3IEBAIHR5cGVkZWYgc3Ry dWN0CiAJdWludDMyCQljaGtwbnRfbnh0ZXBvY2g7CiAJdWludDMyCQljaGtwbnRfbnh0b2lkOwog CXVpbnQzMgkJY2hrcG50X254dG11bHRpOwotCXVpbnQzMgkJY2hrcG50X254dG14b2ZmOworCXVp bnQ2NAkJY2hrcG50X254dG14b2ZmOwogCXVpbnQzMgkJY2hrcG50X29sZHN0TXVsdGk7CiAJdWlu dDMyCQljaGtwbnRfb2xkc3R4aWQ7CiAJdWludDMyCQlhbGlnbjsKQEAgLTUxNSwzICs1MjIsOCBA QCB0eXBlZGVmIHN0cnVjdAogCUZJTEUJICAgKmZpbGU7CiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhd OwogfSBVcGdyYWRlVGFza1JlcG9ydDsKKworLyogc2VncmVzaXplLmMgKi8KKworTXVsdGlYYWN0 T2Zmc2V0CQljb252ZXJ0X211bHRpeGFjdF9vZmZzZXRzKHZvaWQpOwordm9pZAkJCQljb252ZXJ0 X211bHRpeGFjdF9tZW1iZXJzKE11bHRpWGFjdE9mZnNldCBvbGRlc3Rfb2Zmc2V0KTsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9zZWdyZXNpemUuYyBiL3NyYy9iaW4vcGdfdXBncmFk ZS9zZWdyZXNpemUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xZjAy YmI4YWVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5j CkBAIC0wLDAgKzEsNTI5IEBACisvKgorICoJc2VncmVzaXplLmMKKyAqCisgKglTTFJVIHNlZ21l bnQgcmVzaXplIHV0aWxpdHkKKyAqCisgKglDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKglzcmMvYmluL3BnX3VwZ3JhZGUvc2VncmVzaXpl LmMKKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKKworI2luY2x1ZGUgInBnX3VwZ3Jh ZGUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCisKKy8qIFNlZSBzbHJ1LmggKi8K KyNkZWZpbmUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVAkJMzIKKworLyoKKyAqIFNvbWUga2luZCBv ZiBpdGVyYXRvciBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIFNMUlUgc2VnbWVudC4gIFRo ZSBpZGVhIGlzCisgKiB0byBzcGVjaWZ5IHRoZSBzZWdtZW50IGFuZCBwYWdlIG51bWJlciBhbmQg dGhlbiBtb3ZlIHRocm91Z2ggdGhlIHBhZ2VzLgorICovCit0eXBlZGVmIHN0cnVjdCBTbHJ1U2Vn U3RhdGUKK3sKKwljaGFyCSAgICpkaXI7CisJY2hhcgkgICAqZm47CisJRklMRQkgICAqZmlsZTsK KwlpbnQ2NAkJc2Vnbm87CisJdWludDY0CQlwYWdlbm87CisJYm9vbAkJbGVhZGluZ19nYXA7Cit9 IFNscnVTZWdTdGF0ZTsKKworLyoKKyAqIEdldCBTTFJVIHNlZ21lbnQgZmlsZSBuYW1lIGZyb20g c3RhdGUuCisgKi8KK3N0YXRpYyBpbmxpbmUgY2hhciAqCitTbHJ1RmlsZU5hbWUoU2xydVNlZ1N0 YXRlICpzdGF0ZSkKK3sKKwlBc3NlcnQoc3RhdGUtPnNlZ25vID49IDAgJiYKKwkJICAgc3RhdGUt PnNlZ25vIDw9IElOVDY0Q09OU1QoMHhGRkZGRkYpKTsKKworCXJldHVybiBwc3ByaW50ZigiJXMv JTA0WCIsIHN0YXRlLT5kaXIsICh1bnNpZ25lZCBpbnQpIChzdGF0ZS0+c2Vnbm8pKTsKK30KKwor LyoKKyAqIENyZWF0ZSBTTFJVIHNlZ21lbnQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK2NyZWF0 ZV9zZWdtZW50KFNscnVTZWdTdGF0ZSAqc3RhdGUpCit7CisJQXNzZXJ0KHN0YXRlLT5mbiA9PSBO VUxMKTsKKwlBc3NlcnQoc3RhdGUtPmZpbGUgPT0gTlVMTCk7CisKKwlzdGF0ZS0+Zm4gPSBTbHJ1 RmlsZU5hbWUoc3RhdGUpOworCXN0YXRlLT5maWxlID0gZm9wZW4oc3RhdGUtPmZuLCAid2IiKTsK KwlpZiAoIXN0YXRlLT5maWxlKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBmaWxlIFwi JXNcIjogJW0iLCBzdGF0ZS0+Zm4pOworfQorCisvKgorICogT3BlbiBleGlzdGluZyBTTFJVIHNl Z21lbnQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK29wZW5fc2VnbWVudChTbHJ1U2VnU3RhdGUg KnN0YXRlKQoreworCUFzc2VydChzdGF0ZS0+Zm4gPT0gTlVMTCk7CisJQXNzZXJ0KHN0YXRlLT5m aWxlID09IE5VTEwpOworCisJc3RhdGUtPmZuID0gU2xydUZpbGVOYW1lKHN0YXRlKTsKKwlzdGF0 ZS0+ZmlsZSA9IGZvcGVuKHN0YXRlLT5mbiwgInJiIik7CisJaWYgKCFzdGF0ZS0+ZmlsZSkKKwkJ cGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7Cit9 CisKKy8qCisgKiBDbG9zZSBTTFJVIHNlZ21lbnQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK2Ns b3NlX3NlZ21lbnQoU2xydVNlZ1N0YXRlICpzdGF0ZSkKK3sKKwlpZiAoc3RhdGUtPmZpbGUpCisJ eworCQlmY2xvc2Uoc3RhdGUtPmZpbGUpOworCQlzdGF0ZS0+ZmlsZSA9IE5VTEw7CisJfQorCisJ aWYgKHN0YXRlLT5mbikKKwl7CisJCXBmcmVlKHN0YXRlLT5mbik7CisJCXN0YXRlLT5mbiA9IE5V TEw7CisJfQorfQorCisvKgorICogUmVhZCBuZXh0IHBhZ2UgZnJvbSB0aGUgb2xkIDMyLWJpdCBv ZmZzZXQgc2VnbWVudCBmaWxlLgorICovCitzdGF0aWMgaW50CityZWFkX29sZF9zZWdtZW50X3Bh Z2UoU2xydVNlZ1N0YXRlICpzdGF0ZSwgdm9pZCAqYnVmLCBib29sICplbXB0eSkKK3sKKwlpbnQJ CWxlbjsKKworCS8qIE9wZW4gbmV4dCBzZWdtZW50IGZpbGUsIGlmIG5lZWRlZC4gKi8KKwlpZiAo IXN0YXRlLT5mbikKKwl7CisJCWlmICghc3RhdGUtPnNlZ25vKQorCQkJc3RhdGUtPmxlYWRpbmdf Z2FwID0gdHJ1ZTsKKworCQlvcGVuX3NlZ21lbnQoc3RhdGUpOworCisJCS8qIFNldCBwb3NpdGlv biB0byB0aGUgbmVlZGVkIHBhZ2UuICovCisJCWlmIChzdGF0ZS0+cGFnZW5vID4gMCAmJgorCQkJ ZnNlZWsoc3RhdGUtPmZpbGUsIHN0YXRlLT5wYWdlbm8gKiBCTENLU1osIFNFRUtfU0VUKSkKKwkJ eworCQkJY2xvc2Vfc2VnbWVudChzdGF0ZSk7CisJCX0KKwl9CisKKwlpZiAoc3RhdGUtPmZpbGUp CisJeworCQkvKiBTZWdtZW50IGZpbGUgZG8gZXhpc3RzLCByZWFkIHBhZ2UgZnJvbSBpdC4gKi8K KwkJc3RhdGUtPmxlYWRpbmdfZ2FwID0gZmFsc2U7CisKKwkJbGVuID0gZnJlYWQoYnVmLCBzaXpl b2YoY2hhciksIEJMQ0tTWiwgc3RhdGUtPmZpbGUpOworCisJCS8qIEFyZSB3ZSBkb25lIG9yIHdh cyB0aGVyZSBhbiBlcnJvcj8gKi8KKwkJaWYgKGxlbiA8PSAwKQorCQl7CisJCQlpZiAoZmVycm9y KHN0YXRlLT5maWxlKSkKKwkJCQlwZ19mYXRhbCgiZXJyb3IgcmVhZGluZyBmaWxlIFwiJXNcIjog JW0iLCBzdGF0ZS0+Zm4pOworCisJCQlpZiAoZmVvZihzdGF0ZS0+ZmlsZSkpCisJCQl7CisJCQkJ KmVtcHR5ID0gdHJ1ZTsKKwkJCQlsZW4gPSAtMTsKKworCQkJCWNsb3NlX3NlZ21lbnQoc3RhdGUp OworCQkJfQorCQl9CisJCWVsc2UKKwkJCSplbXB0eSA9IGZhbHNlOworCX0KKwllbHNlIGlmICgh c3RhdGUtPmxlYWRpbmdfZ2FwKQorCXsKKwkJLyogV2UgcmVhY2hlZCB0aGUgbGFzdCBzZWdtZW50 LiAqLworCQlsZW4gPSAtMTsKKwkJKmVtcHR5ID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJLyog U2tpcCBmZXcgZmlyc3Qgc2VnbWVudHMgaWYgdGhleSB3ZXJlIGZyb3plbiBhbmQgcmVtb3ZlZC4g Ki8KKwkJbGVuID0gQkxDS1NaOworCQkqZW1wdHkgPSB0cnVlOworCX0KKworCWlmICgrK3N0YXRl LT5wYWdlbm8gPj0gU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkKKwl7CisJCS8qIFN0YXJ0IGEgbmV3 IHNlZ21lbnQuICovCisJCXN0YXRlLT5zZWdubysrOworCQlzdGF0ZS0+cGFnZW5vID0gMDsKKwor CQljbG9zZV9zZWdtZW50KHN0YXRlKTsKKwl9CisKKwlyZXR1cm4gbGVuOworfQorCisvKgorICog V3JpdGUgbmV4dCBwYWdlIHRvIHRoZSBuZXcgNjQtYml0IG9mZnNldCBzZWdtZW50IGZpbGUuCisg Ki8KK3N0YXRpYyB2b2lkCit3cml0ZV9uZXdfc2VnbWVudF9wYWdlKFNscnVTZWdTdGF0ZSAqc3Rh dGUsIHZvaWQgKmJ1ZikKK3sKKwkvKgorCSAqIENyZWF0ZSBhIG5ldyBzZWdtZW50IGZpbGUgaWYg d2Ugc3RpbGwgZGlkbid0LiAgQ3JlYXRpb24gaXMKKwkgKiBwb3N0cG9uZWQgdW50aWwgdGhlIGZp cnN0IG5vbi1lbXB0eSBwYWdlIGlzIGZvdW5kLiAgVGhpcyBoZWxwcworCSAqIG5vdCB0byBjcmVh dGUgY29tcGxldGVseSBlbXB0eSBzZWdtZW50cy4KKwkgKi8KKwlpZiAoIXN0YXRlLT5maWxlKQor CXsKKwkJY3JlYXRlX3NlZ21lbnQoc3RhdGUpOworCisJCS8qIFdyaXRlIHplcm9lcyB0byB0aGUg cHJldmlvdXNseSBza2lwcGVkIHByZWZpeC4gKi8KKwkJaWYgKHN0YXRlLT5wYWdlbm8gPiAwKQor CQl7CisJCQljaGFyCQl6ZXJvYnVmW0JMQ0tTWl0gPSB7MH07CisKKwkJCWZvciAoaW50NjQgaSA9 IDA7IGkgPCBzdGF0ZS0+cGFnZW5vOyBpKyspCisJCQl7CisJCQkJaWYgKGZ3cml0ZSh6ZXJvYnVm LCBzaXplb2YoY2hhciksIEJMQ0tTWiwgc3RhdGUtPmZpbGUpICE9IEJMQ0tTWikKKwkJCQkJcGdf ZmF0YWwoImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBzdGF0ZS0+Zm4pOworCQkJ fQorCQl9CisJfQorCisJLyogV3JpdGUgcGFnZSB0byB0aGUgbmV3IHNlZ21lbnQgKGlmIGl0IHdh cyBjcmVhdGVkKS4gKi8KKwlpZiAoc3RhdGUtPmZpbGUpCisJeworCQlpZiAoZndyaXRlKGJ1Ziwg c2l6ZW9mKGNoYXIpLCBCTENLU1osIHN0YXRlLT5maWxlKSAhPSBCTENLU1opCisJCQlwZ19mYXRh bCgiY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7CisJfQorCisJ LyoKKwkgKiBEaWQgd2UgcmVhY2ggdGhlIG1heGltdW0gcGFnZSBudW1iZXI/ICBUaGVuIGNsb3Nl IHNlZ21lbnQgZmlsZQorCSAqIGFuZCBjcmVhdGUgYSBuZXcgb25lIG9uIHRoZSBuZXh0IGl0ZXJh dGlvbi4KKwkgKi8KKwlpZiAoKytzdGF0ZS0+cGFnZW5vID49IFNMUlVfUEFHRVNfUEVSX1NFR01F TlQpCisJeworCQkvKiBTdGFydCBhIG5ldyBzZWdtZW50LiAqLworCQlzdGF0ZS0+c2Vnbm8rKzsK KwkJc3RhdGUtPnBhZ2VubyA9IDA7CisKKwkJY2xvc2Vfc2VnbWVudChzdGF0ZSk7CisJfQorfQor Cit0eXBlZGVmIHVpbnQzMiBNdWx0aVhhY3RPZmZzZXRPbGQ7CisKKyNkZWZpbmUgTWF4TXVsdGlY YWN0T2Zmc2V0T2xkCSgoTXVsdGlYYWN0T2Zmc2V0T2xkKSAweEZGRkZGRkZGKQorCisjZGVmaW5l IE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX09MRCAoQkxDS1NaIC8gc2l6ZW9mKE11bHRpWGFj dE9mZnNldE9sZCkpCisjZGVmaW5lIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FVyAoQkxD S1NaIC8gc2l6ZW9mKE11bHRpWGFjdE9mZnNldCkpCisKKy8qCisgKiBDb252ZXJ0IHBnX211bHRp eGFjdC9vZmZzZXRzIHNlZ21lbnRzIGFuZCByZXR1cm4gb2xkZXN0IG11bHRpIG9mZnNldC4KKyAq LworTXVsdGlYYWN0T2Zmc2V0Citjb252ZXJ0X211bHRpeGFjdF9vZmZzZXRzKHZvaWQpCit7CisJ U2xydVNlZ1N0YXRlCQlvbGRzZWcgPSB7MH0sCisJCQkJCQluZXdzZWcgPSB7MH07CisJTXVsdGlY YWN0T2Zmc2V0T2xkCW9sZGJ1ZltNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTERdID0gezB9 OworCU11bHRpWGFjdE9mZnNldAkJbmV3YnVmW01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05F V10gPSB7MH0sCisJCQkJCQlvbGRlc3Rfb2Zmc2V0ID0gMDsKKwl1aW50NjQJCQkJb2xkZXN0X211 bHRpID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X29sZHN0TXVsdGksCisJCQkJCQlu ZXh0X211bHRpID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X254dG11bHRpLAorCQkJ CQkJbXVsdGksCisJCQkJCQlvbGRfZW50cnksCisJCQkJCQluZXdfZW50cnk7CisJYm9vbAkJCQlv bGRlc3Rfb2Zmc2V0X2tub3duID0gZmFsc2U7CisKKwlvbGRzZWcuZGlyID0gcHNwcmludGYoIiVz L3BnX211bHRpeGFjdC9vZmZzZXRzIiwgb2xkX2NsdXN0ZXIucGdkYXRhKTsKKwluZXdzZWcuZGly ID0gcHNwcmludGYoIiVzL3BnX211bHRpeGFjdC9vZmZzZXRzIiwgbmV3X2NsdXN0ZXIucGdkYXRh KTsKKworCW9sZF9lbnRyeSA9IG9sZGVzdF9tdWx0aSAlIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9Q QUdFX09MRDsKKwlvbGRzZWcucGFnZW5vID0gb2xkZXN0X211bHRpIC8gTVVMVElYQUNUX09GRlNF VFNfUEVSX1BBR0VfT0xEOworCW9sZHNlZy5zZWdubyA9IG9sZHNlZy5wYWdlbm8gLyBTTFJVX1BB R0VTX1BFUl9TRUdNRU5UOworCW9sZHNlZy5wYWdlbm8gJT0gU0xSVV9QQUdFU19QRVJfU0VHTUVO VDsKKworCW5ld19lbnRyeSA9IG9sZGVzdF9tdWx0aSAlIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9Q QUdFX05FVzsKKwluZXdzZWcucGFnZW5vID0gb2xkZXN0X211bHRpIC8gTVVMVElYQUNUX09GRlNF VFNfUEVSX1BBR0VfTkVXOworCW5ld3NlZy5zZWdubyA9IG5ld3NlZy5wYWdlbm8gLyBTTFJVX1BB R0VTX1BFUl9TRUdNRU5UOworCW5ld3NlZy5wYWdlbm8gJT0gU0xSVV9QQUdFU19QRVJfU0VHTUVO VDsKKworCWlmIChuZXh0X211bHRpIDwgb2xkZXN0X211bHRpKQorCQluZXh0X211bHRpICs9ICh1 aW50NjQpIDEgPDwgMzI7CS8qIHdyYXBhcm91bmQgKi8KKworCS8qIENvcHkgbXVsdGkgb2Zmc2V0 cyByZWFkaW5nIG9ubHkgbmVlZGVkIHNlZ21lbnQgcGFnZXMgKi8KKwlmb3IgKG11bHRpID0gb2xk ZXN0X211bHRpOyBtdWx0aSA8IG5leHRfbXVsdGk7IG9sZF9lbnRyeSA9IDApCisJeworCQlpbnQJ CW9sZGxlbjsKKwkJYm9vbAllbXB0eTsKKworCQkvKiBIYW5kbGUgcG9zc2libGUgc2VnbWVudCB3 cmFwYXJvdW5kICovCisjZGVmaW5lIE9MRF9PRkZTRVRfU0VHTk9fTUFYCVwKKwkoTWF4TXVsdGlY YWN0SWQgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTEQgLyBTTFJVX1BBR0VTX1BFUl9T RUdNRU5UKQorCQlpZiAob2xkc2VnLnNlZ25vID4gT0xEX09GRlNFVF9TRUdOT19NQVgpCisJCXsK KwkJCW9sZHNlZy5zZWdubyA9IDA7CisJCQlvbGRzZWcucGFnZW5vID0gMDsKKwkJfQorCisJCW9s ZGxlbiA9IHJlYWRfb2xkX3NlZ21lbnRfcGFnZSgmb2xkc2VnLCBvbGRidWYsICZlbXB0eSk7CisJ CWlmIChlbXB0eSB8fCBvbGRsZW4gIT0gQkxDS1NaKQorCQkJcGdfZmF0YWwoImNhbm5vdCByZWFk IHBhZ2UgJWxsdSBmcm9tIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCSAodW5zaWduZWQgbG9uZyBs b25nKSBvbGRzZWcucGFnZW5vLCBvbGRzZWcuZm4pOworCisJCS8qIFNhdmUgb2xkZXN0IG11bHRp IG9mZnNldCAqLworCQlpZiAoIW9sZGVzdF9vZmZzZXRfa25vd24pCisJCXsKKwkJCW9sZGVzdF9v ZmZzZXQgPSBvbGRidWZbb2xkX2VudHJ5XTsKKwkJCW9sZGVzdF9vZmZzZXRfa25vd24gPSB0cnVl OworCQl9CisKKwkJLyogU2tpcCB3cmFwcGVkLWFyb3VuZCBpbnZhbGlkIE11bHRpWGFjdElkcyAq LworCQlpZiAobXVsdGkgPT0gKHVpbnQ2NCkgMSA8PCAzMikKKwkJeworCQkJQXNzZXJ0KG9sZHNl Zy5zZWdubyA9PSAwKTsKKwkJCUFzc2VydChvbGRzZWcucGFnZW5vID09IDEpOworCQkJQXNzZXJ0 KG9sZF9lbnRyeSA9PSAwKTsKKwkJCUFzc2VydChuZXdfZW50cnkgPT0gMCk7CisKKwkJCW11bHRp ICs9IEZpcnN0TXVsdGlYYWN0SWQ7CisJCQlvbGRfZW50cnkgPSBGaXJzdE11bHRpWGFjdElkOwor CQkJbmV3X2VudHJ5ID0gRmlyc3RNdWx0aVhhY3RJZDsKKwkJfQorCisJCS8qIENvcHkgZW50cmll cyB0byB0aGUgbmV3IHBhZ2UgKi8KKwkJZm9yICg7IG11bHRpIDwgbmV4dF9tdWx0aSAmJiBvbGRf ZW50cnkgPCBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTEQ7CisJCQkgbXVsdGkrKywgb2xk X2VudHJ5KyspCisJCXsKKwkJCU11bHRpWGFjdE9mZnNldCBvZmZzZXQgPSBvbGRidWZbb2xkX2Vu dHJ5XTsKKworCQkJLyogSGFuZGxlIHBvc3NpYmxlIG9mZnNldCB3cmFwYXJvdW5kICgxIGJlY29t ZXMgMl4zMikgKi8KKwkJCWlmIChvZmZzZXQgPCBvbGRlc3Rfb2Zmc2V0KQorCQkJCW9mZnNldCAr PSAoKHVpbnQ2NCkgMSA8PCAzMikgLSAxOworCisJCQkvKiBTdWJ0cmFjdCBvbGRlc3Rfb2Zmc2V0 LCBzbyBuZXcgb2Zmc2V0cyB3aWxsIHN0YXJ0IGZyb20gMSAqLworCQkJbmV3YnVmW25ld19lbnRy eSsrXSA9IG9mZnNldCAtIG9sZGVzdF9vZmZzZXQgKyAxOworCisJCQlpZiAobmV3X2VudHJ5ID49 IE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FVykKKwkJCXsKKwkJCQkvKiBIYW5kbGUgcG9z c2libGUgc2VnbWVudCB3cmFwYXJvdW5kICovCisjZGVmaW5lIE5FV19PRkZTRVRfU0VHTk9fTUFY CVwKKwkoTWF4TXVsdGlYYWN0SWQgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9ORVcgLyBT TFJVX1BBR0VTX1BFUl9TRUdNRU5UKQorCQkJCWlmIChuZXdzZWcuc2Vnbm8gPiBORVdfT0ZGU0VU X1NFR05PX01BWCkKKwkJCQl7CisJCQkJCW5ld3NlZy5zZWdubyA9IDA7CisJCQkJCW5ld3NlZy5w YWdlbm8gPSAwOworCQkJCX0KKworCQkJCS8qIFdyaXRlIG5ldyBwYWdlICovCisJCQkJd3JpdGVf bmV3X3NlZ21lbnRfcGFnZSgmbmV3c2VnLCBuZXdidWYpOworCQkJCW5ld19lbnRyeSA9IDA7CisJ CQl9CisJCX0KKwl9CisKKwkvKiBXcml0ZSB0aGUgbGFzdCBpbmNvbXBsZXRlIHBhZ2UgKi8KKwlp ZiAobmV3X2VudHJ5ID4gMCB8fCBvbGRlc3RfbXVsdGkgPT0gbmV4dF9tdWx0aSkKKwl7CisJCW1l bXNldCgmbmV3YnVmW25ld19lbnRyeV0sIDAsCisJCQkgICBzaXplb2YobmV3YnVmWzBdKSAqIChN VUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9ORVcgLSBuZXdfZW50cnkpKTsKKwkJd3JpdGVfbmV3 X3NlZ21lbnRfcGFnZSgmbmV3c2VnLCBuZXdidWYpOworCX0KKworCS8qIFVzZSBuZXh0X29mZnNl dCBhcyBvbGRlc3Rfb2Zmc2V0LCBpZiBvbGRlc3RfbXVsdGkgPT0gbmV4dF9tdWx0aSAqLworCWlm ICghb2xkZXN0X29mZnNldF9rbm93bikKKwl7CisJCUFzc2VydChvbGRlc3RfbXVsdGkgPT0gbmV4 dF9tdWx0aSk7CisJCW9sZGVzdF9vZmZzZXQgPSAoTXVsdGlYYWN0T2Zmc2V0KSBvbGRfY2x1c3Rl ci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmY7CisJfQorCisJLyogUmVsZWFzZSByZXNvdXJj ZXMgKi8KKwljbG9zZV9zZWdtZW50KCZvbGRzZWcpOworCWNsb3NlX3NlZ21lbnQoJm5ld3NlZyk7 CisKKwlwZnJlZShvbGRzZWcuZGlyKTsKKwlwZnJlZShuZXdzZWcuZGlyKTsKKworCXJldHVybiBv bGRlc3Rfb2Zmc2V0OworfQorCisjZGVmaW5lIE1YQUNUX01FTUJFUlNfRkxBR19CWVRFUwkJCTEK KworI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVAJCQk0CisjZGVmaW5lIE1VTFRJ WEFDVF9NRU1CRVJHUk9VUF9TSVpFCQkJXAorCShNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVAg KiAoc2l6ZW9mKFRyYW5zYWN0aW9uSWQpICsgTVhBQ1RfTUVNQkVSU19GTEFHX0JZVEVTKSkKKyNk ZWZpbmUgTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRQkJXAorCShCTENLU1ogLyBNVUxU SVhBQ1RfTUVNQkVSR1JPVVBfU0laRSkKKworI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJf UEFHRQkJCQlcCisJKE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9HUk9VUCAqIE1VTFRJWEFDVF9NRU1C RVJHUk9VUFNfUEVSX1BBR0UpCisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJfRkxBR19CWVRFU19Q RVJfR1JPVVAJXAorCShNWEFDVF9NRU1CRVJTX0ZMQUdfQllURVMgKiBNVUxUSVhBQ1RfTUVNQkVS U19QRVJfR1JPVVApCisKK3R5cGVkZWYgc3RydWN0IE11bHRpWGFjdE1lbWJlcnNDdHgKK3sKKwlT bHJ1U2VnU3RhdGUJc2VnOworCWNoYXIJCQlidWZbQkxDS1NaXTsKKwlpbnQJCQkJZ3JvdXA7CisJ aW50CQkJCW1lbWJlcjsKKwljaGFyCQkgICAqZmxhZzsKKwlUcmFuc2FjdGlvbklkICAqeGlkOwor fSBNdWx0aVhhY3RNZW1iZXJzQ3R4OworCitzdGF0aWMgdm9pZAorTXVsdGlYYWN0TWVtYmVyc0N0 eEluaXQoTXVsdGlYYWN0TWVtYmVyc0N0eCAqY3R4KQoreworCWN0eC0+c2VnLmRpciA9IHBzcHJp bnRmKCIlcy9wZ19tdWx0aXhhY3QvbWVtYmVycyIsIG5ld19jbHVzdGVyLnBnZGF0YSk7CisKKwlj dHgtPmdyb3VwID0gMDsKKwljdHgtPm1lbWJlciA9IDE7CQkvKiBza2lwIGludmFsaWQgemVybyBv ZmZzZXQgKi8KKworCWN0eC0+ZmxhZyA9IChjaGFyICopIGN0eC0+YnVmICsgY3R4LT5ncm91cCAq IE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFOworCWN0eC0+eGlkID0gKFRyYW5zYWN0aW9uSWQg KikoY3R4LT5mbGFnICsgTVhBQ1RfTUVNQkVSU19GTEFHX0JZVEVTICogTVVMVElYQUNUX01FTUJF UlNfUEVSX0dST1VQKTsKKworCWN0eC0+ZmxhZyArPSBjdHgtPm1lbWJlcjsKKwljdHgtPnhpZCAr PSBjdHgtPm1lbWJlcjsKK30KKworc3RhdGljIHZvaWQKK011bHRpWGFjdE1lbWJlcnNDdHhBZGQo TXVsdGlYYWN0TWVtYmVyc0N0eCAqY3R4LCBjaGFyIGZsYWcsIFRyYW5zYWN0aW9uSWQgeGlkKQor eworCS8qIENvcHkgbWVtYmVyJ3MgeGlkIGFuZCBmbGFncyB0byB0aGUgbmV3IHBhZ2UgKi8KKwkq Y3R4LT5mbGFnKysgPSBmbGFnOworCSpjdHgtPnhpZCsrID0geGlkOworCisJaWYgKCsrY3R4LT5t ZW1iZXIgPCBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVApCisJCXJldHVybjsKKworCS8qIFN0 YXJ0IG5leHQgbWVtYmVyIGdyb3VwICovCisJY3R4LT5tZW1iZXIgPSAwOworCisJaWYgKCsrY3R4 LT5ncm91cCA+PSBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBTX1BFUl9QQUdFKQorCXsKKwkJLyogV3Jp dGUgY3VycmVudCBwYWdlIGFuZCBzdGFydCBuZXcgKi8KKwkJd3JpdGVfbmV3X3NlZ21lbnRfcGFn ZSgmY3R4LT5zZWcsIGN0eC0+YnVmKTsKKworCQljdHgtPmdyb3VwID0gMDsKKwkJbWVtc2V0KGN0 eC0+YnVmLCAwLCBCTENLU1opOworCX0KKworCWN0eC0+ZmxhZyA9IChjaGFyICopIGN0eC0+YnVm ICsgY3R4LT5ncm91cCAqIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFOworCWN0eC0+eGlkID0g KFRyYW5zYWN0aW9uSWQgKikoY3R4LT5mbGFnICsgTVhBQ1RfTUVNQkVSU19GTEFHX0JZVEVTICog TVVMVElYQUNUX01FTUJFUlNfUEVSX0dST1VQKTsKK30KKworc3RhdGljIHZvaWQKK011bHRpWGFj dE1lbWJlcnNDdHhGaW5pdChNdWx0aVhhY3RNZW1iZXJzQ3R4ICpjdHgpCit7CisJaWYgKGN0eC0+ ZmxhZyA+IChjaGFyICopIGN0eC0+YnVmKQorCQl3cml0ZV9uZXdfc2VnbWVudF9wYWdlKCZjdHgt PnNlZywgY3R4LT5idWYpOworCisJY2xvc2Vfc2VnbWVudCgmY3R4LT5zZWcpOworCisJcGZyZWUo Y3R4LT5zZWcuZGlyKTsKK30KKworLyoKKyAqIENvbnZlcnQgcGdfbXVsdGl4YWN0L21lbWJlcnMg c2VnbWVudHMsIG9mZnNldHMgd2lsbCBzdGFydCBmcm9tIDEuCisgKgorICovCit2b2lkCitjb252 ZXJ0X211bHRpeGFjdF9tZW1iZXJzKE11bHRpWGFjdE9mZnNldCBvbGRlc3Rfb2Zmc2V0KQorewor CU11bHRpWGFjdE9mZnNldAkJCW5leHRfb2Zmc2V0LAorCQkJCQkJCW9mZnNldDsKKwlTbHJ1U2Vn U3RhdGUJCQlvbGRzZWcgPSB7MH07CisJY2hhcgkJCQkJb2xkYnVmW0JMQ0tTWl0gPSB7MH07CisJ aW50CQkJCQkJb2xkaWR4OworCU11bHRpWGFjdE1lbWJlcnNDdHgJCW5ld2N0eCA9IHswfTsKKwor CW9sZHNlZy5kaXIgPSBwc3ByaW50ZigiJXMvcGdfbXVsdGl4YWN0L21lbWJlcnMiLCBvbGRfY2x1 c3Rlci5wZ2RhdGEpOworCisJbmV4dF9vZmZzZXQgPSAoTXVsdGlYYWN0T2Zmc2V0KSBvbGRfY2x1 c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmY7CisJaWYgKG5leHRfb2Zmc2V0IDwgb2xk ZXN0X29mZnNldCkKKwkJbmV4dF9vZmZzZXQgKz0gKCh1aW50NjQpIDEgPDwgMzIpIC0gMTsKKwor CS8qIEluaXRpYWxpemUgdGhlIG9sZCBzdGFydGluZyBwb3NpdGlvbiAqLworCW9sZHNlZy5wYWdl bm8gPSBvbGRlc3Rfb2Zmc2V0IC8gTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0U7CisJb2xkc2Vn LnNlZ25vID0gb2xkc2VnLnBhZ2VubyAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7CisJb2xkc2Vn LnBhZ2VubyAlPSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOworCisJLyogSW5pdGlhbGl6ZSBuZXcg c3RhcnRpbmcgcG9zaXRpb24gKi8KKwlNdWx0aVhhY3RNZW1iZXJzQ3R4SW5pdCgmbmV3Y3R4KTsK KworCS8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgb3JpZ2luYWwgZGlyZWN0b3J5ICovCisJb2xkaWR4 ID0gb2xkZXN0X29mZnNldCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFOworCWZvciAob2Zm c2V0ID0gb2xkZXN0X29mZnNldDsgb2Zmc2V0IDwgbmV4dF9vZmZzZXQ7KQorCXsKKwkJYm9vbAll bXB0eTsKKwkJaW50CQlvbGRsZW47CisJCWludAkJbmdyb3VwczsKKwkJaW50CQlvbGRncm91cDsK KwkJaW50CQlvbGRtZW1iZXI7CisKKwkJb2xkbGVuID0gcmVhZF9vbGRfc2VnbWVudF9wYWdlKCZv bGRzZWcsIG9sZGJ1ZiwgJmVtcHR5KTsKKwkJaWYgKGVtcHR5IHx8IG9sZGxlbiAhPSBCTENLU1op CisJCQlwZ19mYXRhbCgiY2Fubm90IHJlYWQgcGFnZSAlbGx1IGZyb20gZmlsZSBcIiVzXCI6ICVt IiwKKwkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIG9sZHNlZy5wYWdlbm8sIG9sZHNlZy5mbik7 CisKKwkJLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSBvbGQgbWVtYmVyIGdyb3VwcyAqLworCQluZ3Jv dXBzID0gb2xkbGVuIC8gTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkU7CisJCW9sZG1lbWJlciA9 IG9sZGlkeCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9HUk9VUDsKKwkJb2xkZ3JvdXAgPSBvbGRp ZHggLyBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVA7CisJCXdoaWxlIChvbGRncm91cCA8IG5n cm91cHMgJiYgb2Zmc2V0IDwgbmV4dF9vZmZzZXQpCisJCXsKKwkJCWNoYXIJCSAgICpvbGRmbGFn OworCQkJVHJhbnNhY3Rpb25JZCAgKm9sZHhpZDsKKwkJCWludAkJCQlpOworCisJCQlvbGRmbGFn ID0gKGNoYXIgKikgb2xkYnVmICsgb2xkZ3JvdXAgKiBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0la RTsKKwkJCW9sZHhpZCA9IChUcmFuc2FjdGlvbklkICopKG9sZGZsYWcgKyBNVUxUSVhBQ1RfTUVN QkVSX0ZMQUdfQllURVNfUEVSX0dST1VQKTsKKworCQkJb2xkeGlkICs9IG9sZG1lbWJlcjsKKwkJ CW9sZGZsYWcgKz0gb2xkbWVtYmVyOworCisJCQkvKiBJdGVyYXRlIHRocm91Z2ggdGhlIG9sZCBt ZW1iZXJzICovCisJCQlmb3IgKGkgPSBvbGRtZW1iZXI7CisJCQkJIGkgPCBNVUxUSVhBQ1RfTUVN QkVSU19QRVJfR1JPVVAgJiYgb2Zmc2V0IDwgbmV4dF9vZmZzZXQ7CisJCQkJIGkrKykKKwkJCXsK KwkJCQlNdWx0aVhhY3RNZW1iZXJzQ3R4QWRkKCZuZXdjdHgsICpvbGRmbGFnKyssICpvbGR4aWQr Kyk7CisKKwkJCQlpZiAoKytvZmZzZXQgPT0gKHVpbnQ2NCkgMSA8PCAzMikKKwkJCQl7CisJCQkJ CUFzc2VydChpID09IE1heE11bHRpWGFjdE9mZnNldE9sZCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BF Ul9HUk9VUCk7CisJCQkJCWdvdG8gd3JhcGFyb3VuZDsKKwkJCQl9CisJCQl9CisKKwkJCW9sZGdy b3VwKys7CisJCQlvbGRtZW1iZXIgPSAwOworCQl9CisKKwkJb2xkaWR4ID0gMDsKKworCQljb250 aW51ZTsKKword3JhcGFyb3VuZDoKKyNkZWZpbmUgU0VHTk9fTUFYCU1heE11bHRpWGFjdE9mZnNl dE9sZCAvIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVO VAorI2RlZmluZSBQQUdFTk9fTUFYCU1heE11bHRpWGFjdE9mZnNldE9sZCAvIE1VTFRJWEFDVF9N RU1CRVJTX1BFUl9QQUdFICUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVAorCQlBc3NlcnQoKG9sZHNl Zy5zZWdubyA9PSBTRUdOT19NQVggJiYgb2xkc2VnLnBhZ2VubyA9PSBQQUdFTk9fTUFYICsgMSkg fHwKKwkJCSAgIChvbGRzZWcuc2Vnbm8gPT0gU0VHTk9fTUFYICsgMSAmJiBvbGRzZWcucGFnZW5v ID09IDApKTsKKworCQkvKiBTd2l0Y2ggdG8gc2VnbWVudCAwMDAwICovCisJCWNsb3NlX3NlZ21l bnQoJm9sZHNlZyk7CisJCW9sZHNlZy5zZWdubyA9IDA7CisJCW9sZHNlZy5wYWdlbm8gPSAwOwor CisJCS8qIHNraXAgaW52YWxpZCB6ZXJvIG11bHRpIG9mZnNldCAqLworCQlvbGRpZHggPSAxOwor CX0KKworCU11bHRpWGFjdE1lbWJlcnNDdHhGaW5pdCgmbmV3Y3R4KTsKKworCS8qIFJlbGVhc2Ug cmVzb3VyY2VzICovCisJY2xvc2Vfc2VnbWVudCgmb2xkc2VnKTsKKworCXBmcmVlKG9sZHNlZy5k aXIpOworfQotLSAKMi40My4wCgo= --00000000000027c6990626cd37ab Content-Type: application/octet-stream; name="v7-0002-Use-64-bit-multixact-offsets.patch" Content-Disposition: attachment; filename="v7-0002-Use-64-bit-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3g1c8q61 RnJvbSA4ZDBiM2E2NDgwNGJhM2IwYzQxMDRjZDM3OTA3ZTI5NTk5MzQ5MzdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA2IE1hciAyMDI0IDExOjExOjMzICswMzAwClN1YmplY3Q6IFtQQVRDSCB2NyAy LzVdIFVzZSA2NC1iaXQgbXVsdGl4YWN0IG9mZnNldHMuCgpBdXRob3I6IE1heGltIE9ybG92IDxv cmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhh Y3QuYyB8IDE3MiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmluL3BnX3Jlc2V0d2Fs L3BnX3Jlc2V0d2FsLmMgICAgICB8ICAgMiArLQogc3JjL2Jpbi9wZ19yZXNldHdhbC90LzAwMV9i YXNpYy5wbCAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCAgICAg ICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAg MiArLQogNSBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxNjkgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCBhYjkwOTEyZWQzLi5j NTFlMDNlODMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhh Y3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtOTYs MTQgKzk2LDYgQEAKIC8qCiAgKiBEZWZpbmVzIGZvciBNdWx0aVhhY3RPZmZzZXQgcGFnZSBzaXpl cy4gIEEgcGFnZSBpcyB0aGUgc2FtZSBCTENLU1ogYXMgaXMKICAqIHVzZWQgZXZlcnl3aGVyZSBl bHNlIGluIFBvc3RncmVzLgotICoKLSAqIE5vdGU6IGJlY2F1c2UgTXVsdGlYYWN0T2Zmc2V0cyBh cmUgMzIgYml0cyBhbmQgd3JhcCBhcm91bmQgYXQgMHhGRkZGRkZGRiwKLSAqIE11bHRpWGFjdCBw YWdlIG51bWJlcmluZyBhbHNvIHdyYXBzIGFyb3VuZCBhdAotICogMHhGRkZGRkZGRi9NVUxUSVhB Q1RfT0ZGU0VUU19QRVJfUEFHRSwgYW5kIHNlZ21lbnQgbnVtYmVyaW5nIGF0Ci0gKiAweEZGRkZG RkZGL01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFL1NMUlVfUEFHRVNfUEVSX1NFR01FTlQuICBX ZSBuZWVkCi0gKiB0YWtlIG5vIGV4cGxpY2l0IG5vdGljZSBvZiB0aGF0IGZhY3QgaW4gdGhpcyBt b2R1bGUsIGV4Y2VwdCB3aGVuIGNvbXBhcmluZwotICogc2VnbWVudCBhbmQgcGFnZSBudW1iZXJz IGluIFRydW5jYXRlTXVsdGlYYWN0IChzZWUKLSAqIE11bHRpWGFjdE9mZnNldFBhZ2VQcmVjZWRl cykuCiAgKi8KIAogLyogV2UgbmVlZCBmb3VyIGJ5dGVzIHBlciBvZmZzZXQgKi8KQEAgLTI3Miw5 ICsyNjQsNiBAQCB0eXBlZGVmIHN0cnVjdCBNdWx0aVhhY3RTdGF0ZURhdGEKIAlNdWx0aVhhY3RJ ZCBtdWx0aVN0b3BMaW1pdDsKIAlNdWx0aVhhY3RJZCBtdWx0aVdyYXBMaW1pdDsKIAotCS8qIHN1 cHBvcnQgZm9yIG1lbWJlcnMgYW50aS13cmFwYXJvdW5kIG1lYXN1cmVzICovCi0JTXVsdGlYYWN0 T2Zmc2V0IG9mZnNldFN0b3BMaW1pdDsJLyoga25vd24gaWYgb2xkZXN0T2Zmc2V0S25vd24gKi8K LQogCS8qCiAJICogVGhpcyBpcyB1c2VkIHRvIHNsZWVwIHVudGlsIGEgbXVsdGl4YWN0IG9mZnNl dCBpcyB3cml0dGVuIHdoZW4gd2Ugd2FudAogCSAqIHRvIGNyZWF0ZSB0aGUgbmV4dCBvbmUuCkBA IC00MDksOCArMzk4LDYgQEAgc3RhdGljIGJvb2wgTXVsdGlYYWN0T2Zmc2V0UHJlY2VkZXMoTXVs dGlYYWN0T2Zmc2V0IG9mZnNldDEsCiAJCQkJCQkJCQlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0Mik7 CiBzdGF0aWMgdm9pZCBFeHRlbmRNdWx0aVhhY3RPZmZzZXQoTXVsdGlYYWN0SWQgbXVsdGkpOwog c3RhdGljIHZvaWQgRXh0ZW5kTXVsdGlYYWN0TWVtYmVyKE11bHRpWGFjdE9mZnNldCBvZmZzZXQs IGludCBubWVtYmVycyk7Ci1zdGF0aWMgYm9vbCBNdWx0aVhhY3RPZmZzZXRXb3VsZFdyYXAoTXVs dGlYYWN0T2Zmc2V0IGJvdW5kYXJ5LAotCQkJCQkJCQkJIE11bHRpWGFjdE9mZnNldCBzdGFydCwg dWludDMyIGRpc3RhbmNlKTsKIHN0YXRpYyBib29sIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wg aXNfc3RhcnR1cCk7CiBzdGF0aWMgYm9vbCBmaW5kX211bHRpeGFjdF9zdGFydChNdWx0aVhhY3RJ ZCBtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpyZXN1bHQpOwogc3RhdGljIHZvaWQgV3JpdGVNWmVy b1BhZ2VYbG9nUmVjKGludDY0IHBhZ2VubywgdWludDggaW5mbyk7CkBAIC0xMTY0LDc4ICsxMTUx LDYgQEAgR2V0TmV3TXVsdGlYYWN0SWQoaW50IG5tZW1iZXJzLCBNdWx0aVhhY3RPZmZzZXQgKm9m ZnNldCkKIAllbHNlCiAJCSpvZmZzZXQgPSBuZXh0T2Zmc2V0OwogCi0JLyotLS0tLS0tLS0tCi0J ICogUHJvdGVjdCBhZ2FpbnN0IG92ZXJydW4gb2YgdGhlIG1lbWJlcnMgc3BhY2UgYXMgd2VsbCwg d2l0aCB0aGUKLQkgKiBmb2xsb3dpbmcgcnVsZXM6Ci0JICoKLQkgKiBJZiB3ZSdyZSBwYXN0IG9m ZnNldFN0b3BMaW1pdCwgcmVmdXNlIHRvIGdlbmVyYXRlIG1vcmUgbXVsdGlzLgotCSAqIElmIHdl J3JlIGNsb3NlIHRvIG9mZnNldFN0b3BMaW1pdCwgZW1pdCBhIHdhcm5pbmcuCi0JICoKLQkgKiBB cmJpdHJhcmlseSwgd2Ugc3RhcnQgZW1pdHRpbmcgd2FybmluZ3Mgd2hlbiB3ZSdyZSAyMCBzZWdt ZW50cyBvciBsZXNzCi0JICogZnJvbSBvZmZzZXRTdG9wTGltaXQuCi0JICoKLQkgKiBOb3RlIHdl IGhhdmVuJ3QgdXBkYXRlZCB0aGUgc2hhcmVkIHN0YXRlIHlldCwgc28gaWYgd2UgZmFpbCBhdCB0 aGlzCi0JICogcG9pbnQsIHRoZSBtdWx0aXhhY3QgSUQgd2UgZ3JhYmJlZCBjYW4gc3RpbGwgYmUg dXNlZCBieSB0aGUgbmV4dCBndXkuCi0JICoKLQkgKiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gcG9p bnQgaW4gZm9yY2luZyBhdXRvdmFjdXVtIHJ1bnMgaGVyZTogdGhlCi0JICogbXVsdGl4YWN0IGZy ZWV6ZSBzZXR0aW5ncyB3b3VsZCBoYXZlIHRvIGJlIHJlZHVjZWQgZm9yIHRoYXQgdG8gaGF2ZSBh bnkKLQkgKiBlZmZlY3QuCi0JICotLS0tLS0tLS0tCi0JICovCi0jZGVmaW5lIE9GRlNFVF9XQVJO X1NFR01FTlRTCTIwCi0JaWYgKE11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93biAmJgot CQlNdWx0aVhhY3RPZmZzZXRXb3VsZFdyYXAoTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1p dCwgbmV4dE9mZnNldCwKLQkJCQkJCQkJIG5tZW1iZXJzKSkKLQl7Ci0JCS8qIHNlZSBjb21tZW50 IGluIHRoZSBjb3JyZXNwb25kaW5nIG9mZnNldHMgd3JhcGFyb3VuZCBjYXNlICovCi0JCVNlbmRQ b3N0bWFzdGVyU2lnbmFsKFBNU0lHTkFMX1NUQVJUX0FVVE9WQUNfTEFVTkNIRVIpOwotCi0JCWVy ZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVE KSwKLQkJCQkgZXJybXNnKCJtdWx0aXhhY3QgXCJtZW1iZXJzXCIgbGltaXQgZXhjZWVkZWQiKSwK LQkJCQkgZXJyZGV0YWlsX3BsdXJhbCgiVGhpcyBjb21tYW5kIHdvdWxkIGNyZWF0ZSBhIG11bHRp eGFjdCB3aXRoICV1IG1lbWJlcnMsIGJ1dCB0aGUgcmVtYWluaW5nIHNwYWNlIGlzIG9ubHkgZW5v dWdoIGZvciAldSBtZW1iZXIuIiwKLQkJCQkJCQkJICAiVGhpcyBjb21tYW5kIHdvdWxkIGNyZWF0 ZSBhIG11bHRpeGFjdCB3aXRoICV1IG1lbWJlcnMsIGJ1dCB0aGUgcmVtYWluaW5nIHNwYWNlIGlz IG9ubHkgZW5vdWdoIGZvciAldSBtZW1iZXJzLiIsCi0JCQkJCQkJCSAgTXVsdGlYYWN0U3RhdGUt Pm9mZnNldFN0b3BMaW1pdCAtIG5leHRPZmZzZXQgLSAxLAotCQkJCQkJCQkgIG5tZW1iZXJzLAot CQkJCQkJCQkgIE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQgLSBuZXh0T2Zmc2V0IC0g MSksCi0JCQkJIGVycmhpbnQoIkV4ZWN1dGUgYSBkYXRhYmFzZS13aWRlIFZBQ1VVTSBpbiBkYXRh YmFzZSB3aXRoIE9JRCAldSB3aXRoIHJlZHVjZWQgXCJ2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9t aW5fYWdlXCIgYW5kIFwidmFjdXVtX211bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlXCIgc2V0dGlu Z3MuIiwKLQkJCQkJCSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0TXVsdGlYYWN0REIpKSk7Ci0JfQot Ci0JLyoKLQkgKiBDaGVjayB3aGV0aGVyIHdlIHNob3VsZCBraWNrIGF1dG92YWN1dW0gaW50byBh Y3Rpb24sIHRvIHByZXZlbnQgbWVtYmVycwotCSAqIHdyYXBhcm91bmQuIE5CIHdlIHVzZSBhIG11 Y2ggbGFyZ2VyIHdpbmRvdyB0byB0cmlnZ2VyIGF1dG92YWN1dW0gdGhhbgotCSAqIGp1c3QgdGhl IHdhcm5pbmcgbGltaXQuIFRoZSB3YXJuaW5nIGlzIGp1c3QgYSBtZWFzdXJlIG9mIGxhc3QgcmVz b3J0IC0KLQkgKiB0aGlzIGlzIGluIGxpbmUgd2l0aCBHZXROZXdUcmFuc2FjdGlvbklkJ3MgYmVo YXZpb3VyLgotCSAqLwotCWlmICghTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtub3duIHx8 Ci0JCShNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldCAtIE11bHRpWGFjdFN0YXRlLT5vbGRlc3RP ZmZzZXQKLQkJID4gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCkpCi0JewotCQkvKgot CQkgKiBUbyBhdm9pZCBzd2FtcGluZyB0aGUgcG9zdG1hc3RlciB3aXRoIHNpZ25hbHMsIHdlIGlz c3VlIHRoZSBhdXRvdmFjCi0JCSAqIHJlcXVlc3Qgb25seSB3aGVuIGNyb3NzaW5nIGEgc2VnbWVu dCBib3VuZGFyeS4gV2l0aCBkZWZhdWx0Ci0JCSAqIGNvbXBpbGF0aW9uIHNldHRpbmdzIHRoYXQn cyByb3VnaGx5IGFmdGVyIDUwayBtZW1iZXJzLiAgVGhpcyBzdGlsbAotCQkgKiBnaXZlcyBwbGVu dHkgb2YgY2hhbmNlcyBiZWZvcmUgd2UgZ2V0IGludG8gcmVhbCB0cm91YmxlLgotCQkgKi8KLQkJ aWYgKChNWE9mZnNldFRvTWVtYmVyUGFnZShuZXh0T2Zmc2V0KSAvIFNMUlVfUEFHRVNfUEVSX1NF R01FTlQpICE9Ci0JCQkoTVhPZmZzZXRUb01lbWJlclBhZ2UobmV4dE9mZnNldCArIG5tZW1iZXJz KSAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpKQotCQkJU2VuZFBvc3RtYXN0ZXJTaWduYWwoUE1T SUdOQUxfU1RBUlRfQVVUT1ZBQ19MQVVOQ0hFUik7Ci0JfQotCi0JaWYgKE11bHRpWGFjdFN0YXRl LT5vbGRlc3RPZmZzZXRLbm93biAmJgotCQlNdWx0aVhhY3RPZmZzZXRXb3VsZFdyYXAoTXVsdGlY YWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCwKLQkJCQkJCQkJIG5leHRPZmZzZXQsCi0JCQkJCQkJ CSBubWVtYmVycyArIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFICogU0xSVV9QQUdFU19QRVJf U0VHTUVOVCAqIE9GRlNFVF9XQVJOX1NFR01FTlRTKSkKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCi0JCQkJIGVycm1zZ19w bHVyYWwoImRhdGFiYXNlIHdpdGggT0lEICV1IG11c3QgYmUgdmFjdXVtZWQgYmVmb3JlICVkIG1v cmUgbXVsdGl4YWN0IG1lbWJlciBpcyB1c2VkIiwKLQkJCQkJCQkgICAiZGF0YWJhc2Ugd2l0aCBP SUQgJXUgbXVzdCBiZSB2YWN1dW1lZCBiZWZvcmUgJWQgbW9yZSBtdWx0aXhhY3QgbWVtYmVycyBh cmUgdXNlZCIsCi0JCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCAtIG5l eHRPZmZzZXQgKyBubWVtYmVycywKLQkJCQkJCQkgICBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0TXVs dGlYYWN0REIsCi0JCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCAtIG5l eHRPZmZzZXQgKyBubWVtYmVycyksCi0JCQkJIGVycmhpbnQoIkV4ZWN1dGUgYSBkYXRhYmFzZS13 aWRlIFZBQ1VVTSBpbiB0aGF0IGRhdGFiYXNlIHdpdGggcmVkdWNlZCBcInZhY3V1bV9tdWx0aXhh Y3RfZnJlZXplX21pbl9hZ2VcIiBhbmQgXCJ2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9h Z2VcIiBzZXR0aW5ncy4iKSkpOwotCiAJRXh0ZW5kTXVsdGlYYWN0TWVtYmVyKG5leHRPZmZzZXQs IG5tZW1iZXJzKTsKIAogCS8qCkBAIC0xOTc2LDcgKzE4OTEsNyBAQCBNdWx0aVhhY3RTaG1lbUlu aXQodm9pZCkKIAkJCQkgICJwZ19tdWx0aXhhY3Qvb2Zmc2V0cyIsIExXVFJBTkNIRV9NVUxUSVhB Q1RPRkZTRVRfQlVGRkVSLAogCQkJCSAgTFdUUkFOQ0hFX01VTFRJWEFDVE9GRlNFVF9TTFJVLAog CQkJCSAgU1lOQ19IQU5ETEVSX01VTFRJWEFDVF9PRkZTRVQsCi0JCQkJICBmYWxzZSk7CisJCQkJ ICB0cnVlKTsKIAlTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKE11bHRpWGFjdE9mZnNldEN0bCwg TVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0UpOwogCVNpbXBsZUxydUluaXQoTXVsdGlYYWN0TWVt YmVyQ3RsLAogCQkJCSAgIm11bHRpeGFjdF9tZW1iZXIiLCBtdWx0aXhhY3RfbWVtYmVyX2J1ZmZl cnMsIDAsCkBAIC0yNzIxLDggKzI2MzYsNiBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlz X3N0YXJ0dXApCiAJTXVsdGlYYWN0T2Zmc2V0IG5leHRPZmZzZXQ7CiAJYm9vbAkJb2xkZXN0T2Zm c2V0S25vd24gPSBmYWxzZTsKIAlib29sCQlwcmV2T2xkZXN0T2Zmc2V0S25vd247Ci0JTXVsdGlY YWN0T2Zmc2V0IG9mZnNldFN0b3BMaW1pdCA9IDA7Ci0JTXVsdGlYYWN0T2Zmc2V0IHByZXZPZmZz ZXRTdG9wTGltaXQ7CiAKIAkvKgogCSAqIE5COiBIYXZlIHRvIHByZXZlbnQgY29uY3VycmVudCB0 cnVuY2F0aW9uLCB3ZSBtaWdodCBvdGhlcndpc2UgdHJ5IHRvCkBAIC0yNzM3LDcgKzI2NTAsNiBA QCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJbmV4dE9mZnNldCA9IE11 bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0OwogCXByZXZPbGRlc3RPZmZzZXRLbm93biA9IE11bHRp WGFjdFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93bjsKIAlwcmV2T2xkZXN0T2Zmc2V0ID0gTXVsdGlY YWN0U3RhdGUtPm9sZGVzdE9mZnNldDsKLQlwcmV2T2Zmc2V0U3RvcExpbWl0ID0gTXVsdGlYYWN0 U3RhdGUtPm9mZnNldFN0b3BMaW1pdDsKIAlBc3NlcnQoTXVsdGlYYWN0U3RhdGUtPmZpbmlzaGVk U3RhcnR1cCk7CiAJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKIApAQCAtMjc2OCwx MSArMjY4MCw3IEBAIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAkJb2xk ZXN0T2Zmc2V0S25vd24gPQogCQkJZmluZF9tdWx0aXhhY3Rfc3RhcnQob2xkZXN0TXVsdGlYYWN0 SWQsICZvbGRlc3RPZmZzZXQpOwogCi0JCWlmIChvbGRlc3RPZmZzZXRLbm93bikKLQkJCWVyZXBv cnQoREVCVUcxLAotCQkJCQkoZXJybXNnX2ludGVybmFsKCJvbGRlc3QgTXVsdGlYYWN0SWQgbWVt YmVyIGlzIGF0IG9mZnNldCAldSIsCi0JCQkJCQkJCQkgb2xkZXN0T2Zmc2V0KSkpOwotCQllbHNl CisJCWlmICghb2xkZXN0T2Zmc2V0S25vd24pCiAJCQllcmVwb3J0KExPRywKIAkJCQkJKGVycm1z ZygiTXVsdGlYYWN0IG1lbWJlciB3cmFwYXJvdW5kIHByb3RlY3Rpb25zIGFyZSBkaXNhYmxlZCBi ZWNhdXNlIG9sZGVzdCBjaGVja3BvaW50ZWQgTXVsdGlYYWN0ICV1IGRvZXMgbm90IGV4aXN0IG9u IGRpc2siLAogCQkJCQkJCW9sZGVzdE11bHRpWGFjdElkKSkpOwpAQCAtMjc4NSwyNCArMjY5Myw3 IEBAIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAkgKiBvdmVycnVuIG9m IG9sZCBkYXRhIGluIHRoZSBtZW1iZXJzIFNMUlUgYXJlYS4gV2UgY2FuIG9ubHkgZG8gc28gaWYg dGhlCiAJICogb2xkZXN0IG9mZnNldCBpcyBrbm93biB0aG91Z2guCiAJICovCi0JaWYgKG9sZGVz dE9mZnNldEtub3duKQotCXsKLQkJLyogbW92ZSBiYWNrIHRvIHN0YXJ0IG9mIHRoZSBjb3JyZXNw b25kaW5nIHNlZ21lbnQgKi8KLQkJb2Zmc2V0U3RvcExpbWl0ID0gb2xkZXN0T2Zmc2V0IC0gKG9s ZGVzdE9mZnNldCAlCi0JCQkJCQkJCQkJICAoTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0UgKiBT TFJVX1BBR0VTX1BFUl9TRUdNRU5UKSk7Ci0KLQkJLyogYWx3YXlzIGxlYXZlIG9uZSBzZWdtZW50 IGJlZm9yZSB0aGUgd3JhcGFyb3VuZCBwb2ludCAqLwotCQlvZmZzZXRTdG9wTGltaXQgLT0gKE1V TFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFICogU0xSVV9QQUdFU19QRVJfU0VHTUVOVCk7Ci0KLQkJ aWYgKCFwcmV2T2xkZXN0T2Zmc2V0S25vd24gJiYgIWlzX3N0YXJ0dXApCi0JCQllcmVwb3J0KExP RywKLQkJCQkJKGVycm1zZygiTXVsdGlYYWN0IG1lbWJlciB3cmFwYXJvdW5kIHByb3RlY3Rpb25z IGFyZSBub3cgZW5hYmxlZCIpKSk7Ci0KLQkJZXJlcG9ydChERUJVRzEsCi0JCQkJKGVycm1zZ19p bnRlcm5hbCgiTXVsdGlYYWN0IG1lbWJlciBzdG9wIGxpbWl0IGlzIG5vdyAldSBiYXNlZCBvbiBN dWx0aVhhY3QgJXUiLAotCQkJCQkJCQkgb2Zmc2V0U3RvcExpbWl0LCBvbGRlc3RNdWx0aVhhY3RJ ZCkpKTsKLQl9Ci0JZWxzZSBpZiAocHJldk9sZGVzdE9mZnNldEtub3duKQorCWlmIChwcmV2T2xk ZXN0T2Zmc2V0S25vd24pCiAJewogCQkvKgogCQkgKiBJZiB3ZSBmYWlsZWQgdG8gZ2V0IHRoZSBv bGRlc3Qgb2Zmc2V0IHRoaXMgdGltZSwgYnV0IHdlIGhhdmUgYQpAQCAtMjgxMiwxNCArMjcwMywx MiBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJCSAqLwogCQlvbGRl c3RPZmZzZXQgPSBwcmV2T2xkZXN0T2Zmc2V0OwogCQlvbGRlc3RPZmZzZXRLbm93biA9IHRydWU7 Ci0JCW9mZnNldFN0b3BMaW1pdCA9IHByZXZPZmZzZXRTdG9wTGltaXQ7CiAJfQogCiAJLyogSW5z dGFsbCB0aGUgY29tcHV0ZWQgdmFsdWVzICovCiAJTFdMb2NrQWNxdWlyZShNdWx0aVhhY3RHZW5M b2NrLCBMV19FWENMVVNJVkUpOwogCU11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXQgPSBvbGRl c3RPZmZzZXQ7CiAJTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtub3duID0gb2xkZXN0T2Zm c2V0S25vd247Ci0JTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCA9IG9mZnNldFN0b3BM aW1pdDsKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCiAJLyoKQEAgLTI4Mjks NTQgKzI3MTgsNiBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJCShu ZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0ID4gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9M RCk7CiB9CiAKLS8qCi0gKiBSZXR1cm4gd2hldGhlciBhZGRpbmcgImRpc3RhbmNlIiB0byAic3Rh cnQiIHdvdWxkIG1vdmUgcGFzdCAiYm91bmRhcnkiLgotICoKLSAqIFdlIHVzZSB0aGlzIHRvIGRl dGVybWluZSB3aGV0aGVyIHRoZSBhZGRpdGlvbiBpcyAid3JhcHBpbmcgYXJvdW5kIiB0aGUKLSAq IGJvdW5kYXJ5IHBvaW50LCBoZW5jZSB0aGUgbmFtZS4gIFRoZSByZWFzb24gd2UgZG9uJ3Qgd2Fu dCB0byB1c2UgdGhlIHJlZ3VsYXIKLSAqIDJeMzEtbW9kdWxvIGFyaXRobWV0aWMgaGVyZSBpcyB0 aGF0IHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgdGhlIHdob2xlIG9mCi0gKiB0aGUgMl4zMi0x IHNwYWNlIGhlcmUsIGFsbG93aW5nIGZvciBtb3JlIG11bHRpeGFjdHMgdGhhbiB3b3VsZCBmaXQK LSAqIG90aGVyd2lzZS4KLSAqLwotc3RhdGljIGJvb2wKLU11bHRpWGFjdE9mZnNldFdvdWxkV3Jh cChNdWx0aVhhY3RPZmZzZXQgYm91bmRhcnksIE11bHRpWGFjdE9mZnNldCBzdGFydCwKLQkJCQkJ CSB1aW50MzIgZGlzdGFuY2UpCi17Ci0JTXVsdGlYYWN0T2Zmc2V0IGZpbmlzaDsKLQotCS8qCi0J ICogTm90ZSB0aGF0IG9mZnNldCBudW1iZXIgMCBpcyBub3QgdXNlZCAoc2VlIEdldE11bHRpWGFj dElkTWVtYmVycyksIHNvCi0JICogaWYgdGhlIGFkZGl0aW9uIHdyYXBzIGFyb3VuZCB0aGUgVUlO VF9NQVggYm91bmRhcnksIHNraXAgdGhhdCB2YWx1ZS4KLQkgKi8KLQlmaW5pc2ggPSBzdGFydCAr IGRpc3RhbmNlOwotCWlmIChmaW5pc2ggPCBzdGFydCkKLQkJZmluaXNoKys7Ci0KLQkvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0JICogV2hlbiB0aGUgYm91bmRhcnkgaXMgbnVtZXJpY2FsbHkgZ3JlYXRlciB0 aGFuIHRoZSBzdGFydGluZyBwb2ludCwgYW55Ci0JICogdmFsdWUgbnVtZXJpY2FsbHkgYmV0d2Vl biB0aGUgdHdvIGlzIG5vdCB3cmFwcGVkOgotCSAqCi0JICoJPC0tLS1TLS0tLUItLS0tPgotCSAq CVstLS0pCQkJID0gRiB3cmFwcGVkIHBhc3QgQiAoYW5kIFVJTlRfTUFYKQotCSAqCQkgWy0tLSkJ CSA9IEYgbm90IHdyYXBwZWQKLQkgKgkJCSAgWy0tLS1dID0gRiB3cmFwcGVkIHBhc3QgQgotCSAq Ci0JICogV2hlbiB0aGUgYm91bmRhcnkgaXMgbnVtZXJpY2FsbHkgbGVzcyB0aGFuIHRoZSBzdGFy dGluZyBwb2ludCAoaS5lLiB0aGUKLQkgKiBVSU5UX01BWCB3cmFwYXJvdW5kIG9jY3VycyBzb21l d2hlcmUgaW4gYmV0d2VlbikgdGhlbiBhbGwgdmFsdWVzIGluCi0JICogYmV0d2VlbiBhcmUgd3Jh cHBlZDoKLQkgKgotCSAqCTwtLS0tQi0tLS1TLS0tLT4KLQkgKglbLS0tKQkJCSA9IEYgbm90IHdy YXBwZWQgcGFzdCBCIChidXQgd3JhcHBlZCBwYXN0IFVJTlRfTUFYKQotCSAqCQkgWy0tLSkJCSA9 IEYgd3JhcHBlZCBwYXN0IEIgKGFuZCBVSU5UX01BWCkKLQkgKgkJCSAgWy0tLS1dID0gRiBub3Qg d3JhcHBlZAotCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkgKi8KLQlpZiAoc3RhcnQgPCBib3VuZGFyeSkK LQkJcmV0dXJuIGZpbmlzaCA+PSBib3VuZGFyeSB8fCBmaW5pc2ggPCBzdGFydDsKLQllbHNlCi0J CXJldHVybiBmaW5pc2ggPj0gYm91bmRhcnkgJiYgZmluaXNoIDwgc3RhcnQ7Ci19Ci0KIC8qCiAg KiBGaW5kIHRoZSBzdGFydGluZyBvZmZzZXQgb2YgdGhlIGdpdmVuIE11bHRpWGFjdElkLgogICoK QEAgLTI5OTgsOCArMjgzOSw5IEBAIE11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCh2b2lk KQogCSAqIHdlIHRyeSB0byBlbGltaW5hdGUgZnJvbSB0aGUgc3lzdGVtIGlzIGJhc2VkIG9uIGhv dyBmYXIgd2UgYXJlIHBhc3QKIAkgKiBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xELgog CSAqLwotCWZyYWN0aW9uID0gKGRvdWJsZSkgKG1lbWJlcnMgLSBNVUxUSVhBQ1RfTUVNQkVSX1NB RkVfVEhSRVNIT0xEKSAvCi0JCShNVUxUSVhBQ1RfTUVNQkVSX0RBTkdFUl9USFJFU0hPTEQgLSBN VUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKKwlmcmFjdGlvbiA9IChkb3VibGUpICht ZW1iZXJzIC0gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCk7CisJZnJhY3Rpb24gLz0g KGRvdWJsZSkgKE1VTFRJWEFDVF9NRU1CRVJfREFOR0VSX1RIUkVTSE9MRCAtIE1VTFRJWEFDVF9N RU1CRVJfU0FGRV9USFJFU0hPTEQpOworCiAJdmljdGltX211bHRpeGFjdHMgPSBtdWx0aXhhY3Rz ICogZnJhY3Rpb247CiAKIAkvKiBmcmFjdGlvbiBjb3VsZCBiZSA+IDEuMCwgYnV0IGxvd2VzdCBw b3NzaWJsZSBmcmVlemUgYWdlIGlzIHplcm8gKi8KQEAgLTMzNDUsNyArMzE4Nyw3IEBAIE11bHRp WGFjdElkUHJlY2VkZXNPckVxdWFscyhNdWx0aVhhY3RJZCBtdWx0aTEsIE11bHRpWGFjdElkIG11 bHRpMikKIHN0YXRpYyBib29sCiBNdWx0aVhhY3RPZmZzZXRQcmVjZWRlcyhNdWx0aVhhY3RPZmZz ZXQgb2Zmc2V0MSwgTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDIpCiB7Ci0JaW50MzIJCWRpZmYgPSAo aW50MzIpIChvZmZzZXQxIC0gb2Zmc2V0Mik7CisJaW50NjQJCWRpZmYgPSAoaW50NjQpIChvZmZz ZXQxIC0gb2Zmc2V0Mik7CiAKIAlyZXR1cm4gKGRpZmYgPCAwKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdf cmVzZXR3YWwuYwppbmRleCA5ODVjZDA2ODAyLi4xYWYyY2U0YjkzIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKKysrIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9w Z19yZXNldHdhbC5jCkBAIC0yNjQsNyArMjY0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCiAJCQljYXNlICdPJzoKIAkJCQllcnJubyA9IDA7Ci0JCQkJc2V0X214b2ZmID0gc3Ry dG91bChvcHRhcmcsICZlbmRwdHIsIDApOworCQkJCXNldF9teG9mZiA9IHN0cnRvdTY0KG9wdGFy ZywgJmVuZHB0ciwgMCk7CiAJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAn XDAnIHx8IGVycm5vICE9IDApCiAJCQkJewogCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgYXJn dW1lbnQgZm9yIG9wdGlvbiAlcyIsICItTyIpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNl dHdhbC90LzAwMV9iYXNpYy5wbCBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDFfYmFzaWMucGwK aW5kZXggOTgyOWU0ODEwNi4uZjhhOGVlZjQ0ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXNl dHdhbC90LzAwMV9iYXNpYy5wbAorKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAxX2Jhc2lj LnBsCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVzaCBAY21kLAogICBzcHJpbnRmKCIlZCwlZCIsIGhl eCgkZmlsZXNbMF0pID09IDAgPyAzIDogaGV4KCRmaWxlc1swXSksIGhleCgkZmlsZXNbLTFdKSk7 CiAKIEBmaWxlcyA9IGdldF9zbHJ1X2ZpbGVzKCdwZ19tdWx0aXhhY3Qvb2Zmc2V0cycpOwotJG11 bHQgPSAzMiAqICRibGNrc3ogLyA0OworJG11bHQgPSAzMiAqICRibGNrc3ogLyA4OwogIyAtbSBh cmd1bWVudCBpcyAibmV3LG9sZCIKIHB1c2ggQGNtZCwgJy1tJywKICAgc3ByaW50ZigiJWQsJWQi LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL211bHRpeGFjdC5oCmluZGV4IDdmZmQyNTZjNzQuLjkwNTgzNjM0ZWMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvbXVsdGl4YWN0LmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2RlZmluZSBNdWx0aVhhY3RJ ZElzVmFsaWQobXVsdGkpICgobXVsdGkpICE9IEludmFsaWRNdWx0aVhhY3RJZCkKIAotI2RlZmlu ZSBNYXhNdWx0aVhhY3RPZmZzZXQJKChNdWx0aVhhY3RPZmZzZXQpIDB4RkZGRkZGRkYpCisjZGVm aW5lIE1heE11bHRpWGFjdE9mZnNldAlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRkZGRkYpCiAK IC8qCiAgKiBQb3NzaWJsZSBtdWx0aXhhY3QgbG9jayBtb2RlcyAoInN0YXR1cyIpLiAgVGhlIGZp cnN0IGZvdXIgbW9kZXMgYXJlIGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYy5oIGIvc3Jj L2luY2x1ZGUvYy5oCmluZGV4IDBhNTQ4ZDY5ZDcuLmUxYjMxODdkMGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTY2NCw3ICs2NjQsNyBAQCB0 eXBlZGVmIHVpbnQzMiBTdWJUcmFuc2FjdGlvbklkOwogLyogTXVsdGlYYWN0SWQgbXVzdCBiZSBl cXVpdmFsZW50IHRvIFRyYW5zYWN0aW9uSWQsIHRvIGZpdCBpbiB0X3htYXggKi8KIHR5cGVkZWYg VHJhbnNhY3Rpb25JZCBNdWx0aVhhY3RJZDsKIAotdHlwZWRlZiB1aW50MzIgTXVsdGlYYWN0T2Zm c2V0OwordHlwZWRlZiB1aW50NjQgTXVsdGlYYWN0T2Zmc2V0OwogCiB0eXBlZGVmIHVpbnQzMiBD b21tYW5kSWQ7CiAKLS0gCjIuNDMuMAoK --00000000000027c6990626cd37ab--