From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.devel Subject: Re: MPS: weak hash tables Date: Thu, 04 Jul 2024 20:05:19 +0000 Message-ID: References: <-plQctKgNkvp-LJ9ov2QAiXQKxd9V-hI0yz_opRGxQtbknubCjH4rH2-ymgbw_Qr1ZhB1rtlmiEW8XtuIVNr7nR_Yj20AH6WkH6kUGp68g0=@protonmail.com> <_mNcR6ailVKpYHLxgfo_tJlYGeR0AQIzQWluspYYp5_g5pIIKkHLNfFkklQQgOKNiVW8jn8NS3i2dJ7_B2Qyx9v-Dq3MQ9mP8HNL30UWsqY=@protonmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_u4jpJLk5yAygEVMYXGNtGBROPNHwGz4BpCzosbp6q8" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="32068"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Helmut Eller , Eli Zaretskii , Emacs Devel To: =?utf-8?Q?Gerd_M=C3=B6llmann?= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Jul 05 07:34:36 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sPbad-00087q-AQ for ged-emacs-devel@m.gmane-mx.org; Fri, 05 Jul 2024 07:34:35 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sPbZI-0003vy-8k; Fri, 05 Jul 2024 01:33:12 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sPSi3-0006zC-SR for emacs-devel@gnu.org; Thu, 04 Jul 2024 16:05:40 -0400 Original-Received: from mail-4316.protonmail.ch ([185.70.43.16]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sPShy-00024U-On for emacs-devel@gnu.org; Thu, 04 Jul 2024 16:05:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1720123523; x=1720382723; bh=1+komc79BbNu+EnI7/e0TtWmRfDMHFecxtwx4NACP1k=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=e5b9rCvvQHEytATl7XLYcD+NI4EX09zDN9RY9gyCGYjEKczygfH/8ENq9JDwIRWRp RlddTuv3KO4kIudv2cg01OQB07zQuoRi2K3plF1jmW9BwsN4KEm0VxEst6P659gijf aJF/lyyPrD6YyuuK+tEnjFovgaYAK4upFI2POE0bxOWVjrD2Pv1j5SRtAVsh3vCXqa zHXOrCbkdfGAJqPOlOqrf/cBTBFm/FIzJVSz6Bt2qtoTWRw8U689kMNixdBagJPnUw ACzYE0lqTGKjaNsTBWDJMKfKo+hLYR+7p9ot2gMR7TbdvSVCJH5LBxxpITk7HskWbK 3+Lr0dW/Xfjkw== In-Reply-To: Feedback-ID: 112775352:user:proton X-Pm-Message-ID: 93bff6e9b2ae6043baa15809e7bd1cfab972ae92 Received-SPF: pass client-ip=185.70.43.16; envelope-from=pipcet@protonmail.com; helo=mail-4316.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 05 Jul 2024 01:33:10 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:321372 Archived-At: This is a multi-part message in MIME format. --b1_u4jpJLk5yAygEVMYXGNtGBROPNHwGz4BpCzosbp6q8 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Thursday, July 4th, 2024 at 16:53, Gerd M=C3=B6llmann wrote: > Pip Cet pipcet@protonmail.com writes: > > I believe we can make key-or-value tables work, and gain a potentially > > useful debugging aid, by allowing struct igc_header to contain a > > tagged pointer to an extended "header" structure which resides in > > external (non-MPS) memory (a "remote reference" in MPS speak, which is > > usually forbidden in AMC pools but appears to work if it's non-MPS > > memory); we'd use the extended header instead of the header word to > > determine object size, hash, and object type. That extended header > > could then contain a Lisp_Object which would be scanned and kept alive > > while the object belonging to the header is allocated, not just while > > it's still reachable. >=20 >=20 > Ah, I thought what you wrote in the other mail was related to the > IA-32 software emulation shit^Wrequirement, sorry. It's both: 1. change the IGC header to be a uint64_t, because bitfields don't always b= ehave as expected. 2. use the low-order bits to distinguish extended external extra dependency= headers from ordinary one-word headers. (This fixes the remaining IA32 bug= ) 3. keep track of an extra dependency (or a hash table thereof) in the exthd= r 4. implement key-or-value weakness 5. implement two-stage finalization and get rid of SPLAT_PVEC 6. give all objects an IGC header (which is now just a struct { uint64_t })= and get rid of igc_has_header 7. use two-stage finalization to shrink weak hash tables which lose their c= ontents I've done (1)-(4) and (5) for bignums. It all seems to work, though two-sta= ge finalization really is in two stages: you've got to collect several time= s until the bignums are actually freed. I'll be honest, this is mostly to see (a) whether MPS can do it (it can!) a= nd (b) for some Ideas I Have which probably won't ever come to fruition. Th= e idea here is that every object (even conses) can keep alive an extra obje= ct (which, in turn, can keep alive other objects) while it is allocated (no= t just while it is reachable). No extra memory is used until the extra obje= ct actually becomes non-nil, which doesn't happen, for bignums, until they = become unreachable. Once they're deallocated, the extra object possibly bec= omes unreachable, so it's queued for finalization, which it does by freeing= the bignum PVEC's exthdr and the bignum data itself. > > So if we (puthash a b key-or-value-hash), we'd make `a' keep alive` b' > > and vice versa, but once they're no longer strongly reachable from > > other objects, they'd be collected. (I've tried this, it works). > >=20 > > And we could finalize objects appearing in weak hash tables. > >=20 > > This would cause some memory fragmentation (xmalloc isn't moving), but > > I don't think that's much of an issue: if you're using exotic weak > > hashes, you're already creating unmovable allocations in > > weak_hash_pool; if you're debugging, you probably don't care. > >=20 > > However, the functional gains are minimal and so far no one has > > demanded key-or-value hashes... >=20 > This all gets rather complicated :-/. I'm depressed. I do realize it's very complicated. As I said, it's about a Big Idea that I= had a while ago, but which I couldn't implement back then because mark-and= -sweep GC made it impossible. I'm still trying to think of a way to use the= external header to find and store retaining paths... I'm attaching the (ugly bit manipulation) code just in case I've convinced = you, but I've got to admit I'm not fully convinced myself. I've got to slee= p over it. Feel free, of course, not to read it :-) Pip --b1_u4jpJLk5yAygEVMYXGNtGBROPNHwGz4BpCzosbp6q8 Content-Type: text/x-patch; name=0003-allow-IGC-to-keep-track-of-an-extra-dependency-in-th.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0003-allow-IGC-to-keep-track-of-an-extra-dependency-in-th.patch RnJvbSBjZDIyOWY4MzQ2MzAwYjQzNWEyNGJkZWM4NmVlMmFlY2YxZjYxYmEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAcHJvdG9ubWFpbC5jb20+CkRhdGU6 IFRodSwgNCBKdWwgMjAyNCAxODo0Mzo1NCArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMy81XSBhbGxv dyBJR0MgdG8ga2VlcCB0cmFjayBvZiBhbiBleHRyYSBkZXBlbmRlbmN5IGluIHRoZQogZXh0aGRy CgotLS0KIHNyYy9pZ2MuYyB8IDc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA3OCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvc3JjL2lnYy5jIGIvc3JjL2lnYy5jCmluZGV4IDliZTMwZmNiM2NmLi5iYzY5 NzcwMGJmNyAxMDA2NDQKLS0tIGEvc3JjL2lnYy5jCisrKyBiL3NyYy9pZ2MuYwpAQCAtNTQyLDYg KzU0MiwyMiBAQCBpZ2NfaGVhZGVyX253b3JkcyAoY29uc3Qgc3RydWN0IGlnY19oZWFkZXIgKmgp CiAgIHJldHVybiBJR0NfSEVBREVSX05XT1JEUyAoaCk7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgaWdj X2V4dGhkciAqCitpZ2NfZXh0ZXJuYWxfaGVhZGVyIChzdHJ1Y3QgaWdjX2hlYWRlciAqaCkKK3sK KyAgaWYgKElHQ19IRUFERVJfVEFHIChoKSAhPSBJR0NfVEFHX0VYVEhEUikKKyAgICB7CisgICAg ICBzdHJ1Y3QgaWdjX2V4dGhkciAqZXh0aGRyID0geG1hbGxvYyAoc2l6ZW9mICpleHRoZHIpOwor ICAgICAgZXh0aGRyLT5ud29yZHMgPSBJR0NfSEVBREVSX05XT1JEUyAoaCk7CisgICAgICBleHRo ZHItPmhhc2ggPSBJR0NfSEVBREVSX0hBU0ggKGgpOworICAgICAgZXh0aGRyLT5vYmpfdHlwZSA9 IElHQ19IRUFERVJfVFlQRSAoaCk7CisgICAgICBleHRoZHItPmV4dHJhX2RlcGVuZGVuY3kgPSBR bmlsOworICAgICAgaC0+diA9IChpbnRwdHJfdClleHRoZHIgKyBJR0NfVEFHX0VYVEhEUjsKKyAg ICB9CisKKyAgcmV0dXJuIElHQ19IRUFERVJfRVhUSERSIChoKTsKK30KKwogLyogVmFsdWUgaXMg dGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIG9iamVjdCBkZXNjcmliZWQgYnkgaGVhZGVyIEguCiAg ICBUaGlzIGluY2x1ZGVzIHRoZSBoZWFkZXIgaXRzZWxmLiAqLwogCkBAIC0xNjY3LDYgKzE2ODMs MTIgQEAgZGZsdF9zY2FuX29iaiAobXBzX3NzX3Qgc3MsIG1wc19hZGRyX3QgYmFzZV9zdGFydCwg bXBzX2FkZHJfdCBiYXNlX2xpbWl0LAogCSAgfQogICAgICAgfQogCisgICAgaWYgKElHQ19IRUFE RVJfVEFHIChoZWFkZXIpID09IElHQ19UQUdfRVhUSERSKQorICAgICAgeworCXN0cnVjdCBpZ2Nf ZXh0aGRyICpleHRoZHIgPSBJR0NfSEVBREVSX0VYVEhEUiAoaGVhZGVyKTsKKwlJR0NfRklYMTJf T0JKIChzcywgJmV4dGhkci0+ZXh0cmFfZGVwZW5kZW5jeSk7CisgICAgICB9CisKICAgICBzd2l0 Y2ggKGlnY19oZWFkZXJfdHlwZSAoaGVhZGVyKSkKICAgICAgIHsKICAgICAgIGNhc2UgSUdDX09C Sl9JTlZBTElEOgpAQCAtNDI1MSw2ICs0MjczLDYxIEBAIERFRlVOICgiaWdjLS1yb290cyIsIEZp Z2NfX3Jvb3RzLCBTaWdjX19yb290cywgMCwgMCwgMCwgZG9jIDogLyogKi8pCiAgIHJldHVybiBy b290czsKIH0KIAorREVGVU4gKCJpZ2MtYWRkLWV4dHJhLWRlcGVuZGVuY3kiLCBGaWdjX2FkZF9l eHRyYV9kZXBlbmRlbmN5LAorICAgICAgIFNpZ2NfYWRkX2V4dHJhX2RlcGVuZGVuY3ksIDIsIDIs IDAsIGRvYyA6IC8qICovKQorICAoTGlzcF9PYmplY3Qgb2JqLCBMaXNwX09iamVjdCBkZXBlbmRl bmN5KQoreworICBtcHNfd29yZF90IHdvcmQgPSBYTEkgKG9iaik7CisgIG1wc193b3JkX3QgdGFn ID0gd29yZCAmIElHQ19UQUdfTUFTSzsKKyAgbXBzX2FkZHJfdCBjbGllbnQgPSBOVUxMOworICBz d2l0Y2ggKHRhZykKKyAgICB7CisgICAgY2FzZSBMaXNwX1R5cGVfVW51c2VkMDoKKyAgICAgIGVt YWNzX2Fib3J0ICgpOworCisgICAgY2FzZSBMaXNwX0ludDA6CisgICAgY2FzZSBMaXNwX0ludDE6 CisgICAgICByZXR1cm4gUW5pbDsKKworICAgIGNhc2UgTGlzcF9TeW1ib2w6CisgICAgICB7CisJ cHRyZGlmZl90IG9mZiA9IHdvcmQgXiB0YWc7CisJY2xpZW50ID0gKG1wc19hZGRyX3QpICgoY2hh ciAqKSBsaXNwc3ltICsgb2ZmKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBM aXNwX1N0cmluZzoKKyAgICBjYXNlIExpc3BfVmVjdG9ybGlrZToKKyAgICBjYXNlIExpc3BfQ29u czoKKyAgICBjYXNlIExpc3BfRmxvYXQ6CisgICAgICBjbGllbnQgPSAobXBzX2FkZHJfdCkgKHdv cmQgXiB0YWcpOworICAgICAgYnJlYWs7CisgICAgfQorCisgIC8qIE9iamVjdHMgaW4gdGhlIHRo ZSBkdW1wIGhhdmUgaWdjX2hlYWRlcnMsIHRvby4gKi8KKyAgaWYgKCFoYXNfaGVhZGVyIChjbGll bnQsIHRhZyA9PSBMaXNwX1ZlY3Rvcmxpa2UpKQorICAgIHsKKyAgICAgIHJldHVybiBRbmlsOwor ICAgIH0KKworICBzdHJ1Y3QgaWdjX2hlYWRlciAqaCA9IGNsaWVudF90b19iYXNlIChjbGllbnQp OworICBzdHJ1Y3QgaWdjX2V4dGhkciAqZXh0aGRyID0gaWdjX2V4dGVybmFsX2hlYWRlciAoaCk7 CisgIGlmIChIQVNIX1RBQkxFX1AgKGV4dGhkci0+ZXh0cmFfZGVwZW5kZW5jeSkpCisgICAgRnB1 dGhhc2ggKGRlcGVuZGVuY3ksIFF0LCBleHRoZHItPmV4dHJhX2RlcGVuZGVuY3kpOworICBlbHNl IGlmIChIQVNIX1RBQkxFX1AgKGRlcGVuZGVuY3kpIHx8ICFOSUxQIChleHRoZHItPmV4dHJhX2Rl cGVuZGVuY3kpKQorICAgIHsKKyAgICAgIExpc3BfT2JqZWN0IGhhc2ggPSBDQUxMTiAoRm1ha2Vf aGFzaF90YWJsZSk7CisgICAgICBGcHV0aGFzaCAoZGVwZW5kZW5jeSwgUXQsIGhhc2gpOworICAg ICAgaWYgKCFOSUxQIChleHRoZHItPmV4dHJhX2RlcGVuZGVuY3kpKQorCUZwdXRoYXNoIChleHRo ZHItPmV4dHJhX2RlcGVuZGVuY3ksIFF0LCBoYXNoKTsKKyAgICAgIGV4dGhkci0+ZXh0cmFfZGVw ZW5kZW5jeSA9IGhhc2g7CisgICAgfQorICBlbHNlCisgICAgZXh0aGRyLT5leHRyYV9kZXBlbmRl bmN5ID0gZGVwZW5kZW5jeTsKKworICByZXR1cm4gUXQ7Cit9CisKIHN0YXRpYyB2b2lkCiBtYWtl X2FyZW5hIChzdHJ1Y3QgaWdjICpnYykKIHsKQEAgLTQ2NzgsNiArNDc1NSw3IEBAIHN5bXNfb2Zf aWdjICh2b2lkKQogICBkZWZzdWJyICgmU2lnY19pbmZvKTsKICAgZGVmc3ViciAoJlNpZ2NfX3Jv b3RzKTsKICAgZGVmc3ViciAoJlNpZ2NfX2NvbGxlY3QpOworICBkZWZzdWJyICgmU2lnY19hZGRf ZXh0cmFfZGVwZW5kZW5jeSk7CiAgIERFRlNZTSAoUWFtYmlnLCAiYW1iaWciKTsKICAgREVGU1lN IChRZXhhY3QsICJleGFjdCIpOwogICBGcHJvdmlkZSAoaW50ZXJuX2Nfc3RyaW5nICgibXBzIiks IFFuaWwpOwotLSAKMi40NS4yCgo= --b1_u4jpJLk5yAygEVMYXGNtGBROPNHwGz4BpCzosbp6q8 Content-Type: text/x-patch; name=0005-finalize-bignums-later.-This-avoids-the-need-for-spl.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0005-finalize-bignums-later.-This-avoids-the-need-for-spl.patch RnJvbSAzYTBkMmI0MzlkZDkxYjU2OWY3ZTAzYzUyOTg3YmVkZDMwMzRjMzhiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAcHJvdG9ubWFpbC5jb20+CkRhdGU6 IFRodSwgNCBKdWwgMjAyNCAxOToxNDo1NyArMDAwMApTdWJqZWN0OiBbUEFUQ0ggNS81XSBmaW5h bGl6ZSBiaWdudW1zIGxhdGVyLiBUaGlzIGF2b2lkcyB0aGUgbmVlZCBmb3IKIHNwbGF0dGluZyBQ VkVDcy4KCi0tLQogc3JjL2lnYy5jICAgICB8IDIxICsrKysrKysrKysrKysrKysrKysrLQogc3Jj L2xpc3AuaCAgICB8ICAxICsKIHNyYy9wZHVtcGVyLmMgfCAgMiArLQogMyBmaWxlcyBjaGFuZ2Vk LCAyMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9pZ2Mu YyBiL3NyYy9pZ2MuYwppbmRleCA3YTQyNDcwZjA2MS4uMTY0MGE0OTBjNmIgMTAwNjQ0Ci0tLSBh L3NyYy9pZ2MuYworKysgYi9zcmMvaWdjLmMKQEAgLTM4Myw2ICszODMsNyBAQCBvYmpfdHlwZV9u YW1lIChlbnVtIGlnY19vYmpfdHlwZSB0eXBlKQogICAiUFZFQ19OT1JNQUxfVkVDVE9SIiwKICAg IlBWRUNfRlJFRSIsCiAgICJQVkVDX0JJR05VTSIsCisgICJQVkVDX0JJR05VTV9GSU5BTElaRVIi LAogICAiUFZFQ19NQVJLRVIiLAogICAiUFZFQ19PVkVSTEFZIiwKICAgIlBWRUNfRklOQUxJWkVS IiwKQEAgLTI0NDgsNiArMjQ0OSw5IEBAIGZpeF92ZWN0b3IgKG1wc19zc190IHNzLCBzdHJ1Y3Qg TGlzcF9WZWN0b3IgKnYpCiAgICAgICBjYXNlIFBWRUNfQklHTlVNOgogCWJyZWFrOwogCisgICAg ICBjYXNlIFBWRUNfQklHTlVNX0ZJTkFMSVpFUjoKKwlicmVhazsKKwogICAgICAgY2FzZSBQVkVD X05BVElWRV9DT01QX1VOSVQ6CiAJSUdDX0ZJWF9DQUxMX0ZOIChzcywgc3RydWN0IExpc3BfTmF0 aXZlX0NvbXBfVW5pdCwgdiwgZml4X2NvbXBfdW5pdCk7CiAJYnJlYWs7CkBAIC0zMTAxLDYgKzMx MDUsMTUgQEAgZmluYWxpemVfZmluYWxpemVyIChzdHJ1Y3QgTGlzcF9GaW5hbGl6ZXIgKmYpCiAj ZGVmaW5lIFNQTEFUX1BWRUModikJCQkJIFwKICAgKCgodiktPmhlYWRlci5zaXplICY9IH5QVkVD X1RZUEVfTUFTSyksIFhTRVRQVkVDVFlQRSh2LCBQVkVDX0ZSRUUpKQogCitzdGF0aWMgTGlzcF9P YmplY3QKK21ha2VfYmlnbnVtX2ZpbmFsaXplciAoc3RydWN0IExpc3BfQmlnbnVtICpuKQorewor ICBzdHJ1Y3QgTGlzcF9CaWdudW0gKmIgPSBBTExPQ0FURV9QTEFJTl9QU0VVRE9WRUNUT1IgKHN0 cnVjdCBMaXNwX0JpZ251bSwKKwkJCQkJCSAgICAgICBQVkVDX0JJR05VTV9GSU5BTElaRVIpOwor ICBtZW1jcHkgKCZiLT52YWx1ZSwgJm4tPnZhbHVlLCBzaXplb2YgKGItPnZhbHVlKSk7CisgIHJl dHVybiBtYWtlX2xpc3BfcHRyIChiLCBMaXNwX1ZlY3Rvcmxpa2UpOworfQorCiBzdGF0aWMgdm9p ZAogZmluYWxpemVfdmVjdG9yIChtcHNfYWRkcl90IHYpCiB7CkBAIC0zMTExLDYgKzMxMjQsMTIg QEAgZmluYWxpemVfdmVjdG9yIChtcHNfYWRkcl90IHYpCiAgICAgICBlbWFjc19hYm9ydCAoKTsK IAogICAgIGNhc2UgUFZFQ19CSUdOVU06CisgICAgICBGaWdjX2FkZF9leHRyYV9kZXBlbmRlbmN5 IChtYWtlX2xpc3BfcHRyICh2ZWMsIExpc3BfVmVjdG9ybGlrZSksCisJCQkJIG1ha2VfYmlnbnVt X2ZpbmFsaXplciAodiksCisJCQkJIFF0KTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQVkVD X0JJR05VTV9GSU5BTElaRVI6CiAgICAgICBmaW5hbGl6ZV9iaWdudW0gKHYpOwogICAgICAgYnJl YWs7CiAKQEAgLTMyMDEsNyArMzIyMCw2IEBAIGZpbmFsaXplX3ZlY3RvciAobXBzX2FkZHJfdCB2 KQogICAgICAgaWdjX2Fzc2VydCAoISJmaW5hbGl6YXRpb24gbm90IGltcGxlbWVudGVkIik7CiAg ICAgICBicmVhazsKICAgICB9Ci0gIFNQTEFUX1BWRUMgKHZlYyk7CiB9CiAKIHN0YXRpYyB2b2lk CkBAIC0zMjYyLDYgKzMyODAsNyBAQCBtYXliZV9maW5hbGl6ZSAobXBzX2FkZHJfdCBjbGllbnQs IGVudW0gcHZlY190eXBlIHRhZykKICAgc3dpdGNoICh0YWcpCiAgICAgewogICAgIGNhc2UgUFZF Q19CSUdOVU06CisgICAgY2FzZSBQVkVDX0JJR05VTV9GSU5BTElaRVI6CiAgICAgY2FzZSBQVkVD X0ZPTlQ6CiAgICAgY2FzZSBQVkVDX1RIUkVBRDoKICAgICBjYXNlIFBWRUNfTVVURVg6CmRpZmYg LS1naXQgYS9zcmMvbGlzcC5oIGIvc3JjL2xpc3AuaAppbmRleCAzNGJmNDgzYjUxMS4uYTdlMTFh NDM4OTkgMTAwNjQ0Ci0tLSBhL3NyYy9saXNwLmgKKysrIGIvc3JjL2xpc3AuaApAQCAtMTAyNyw2 ICsxMDI3LDcgQEAgREVGSU5FX0dEQl9TWU1CT0xfRU5EIChQU0VVRE9WRUNUT1JfRkxBRykKICAg UFZFQ19OT1JNQUxfVkVDVE9SLCAvKiBTaG91bGQgYmUgZmlyc3QsIGZvciBzeGhhc2hfb2JqLiAg Ki8KICAgUFZFQ19GUkVFLAogICBQVkVDX0JJR05VTSwKKyAgUFZFQ19CSUdOVU1fRklOQUxJWkVS LAogICBQVkVDX01BUktFUiwKICAgUFZFQ19PVkVSTEFZLAogICBQVkVDX0ZJTkFMSVpFUiwKZGlm ZiAtLWdpdCBhL3NyYy9wZHVtcGVyLmMgYi9zcmMvcGR1bXBlci5jCmluZGV4IDczNzE5NTY3Zjgw Li43NmM3Y2Y3MzgzZCAxMDA2NDQKLS0tIGEvc3JjL3BkdW1wZXIuYworKysgYi9zcmMvcGR1bXBl ci5jCkBAIC0zMTMxLDcgKzMxMzEsNyBAQCBkdW1wX3ZlY3Rvcmxpa2UgKHN0cnVjdCBkdW1wX2Nv bnRleHQgKmN0eCwKICAgICAgICAgICAgICAgICAgTGlzcF9PYmplY3QgbHYsCiAgICAgICAgICAg ICAgICAgIGR1bXBfb2ZmIG9mZnNldCkKIHsKLSNpZiBDSEVDS19TVFJVQ1RTICYmICFkZWZpbmVk IEhBU0hfcHZlY190eXBlXzkxNDE2NkEzQjQKKyNpZiBDSEVDS19TVFJVQ1RTICYmICFkZWZpbmVk IEhBU0hfcHZlY190eXBlXzVGN0FCRDNBNjcKICMgZXJyb3IgInB2ZWNfdHlwZSBjaGFuZ2VkLiBT ZWUgQ0hFQ0tfU1RSVUNUUyBjb21tZW50IGluIGNvbmZpZy5oLiIKICNlbmRpZgogICBjb25zdCBz dHJ1Y3QgTGlzcF9WZWN0b3IgKnYgPSBYVkVDVE9SIChsdik7Ci0tIAoyLjQ1LjIKCg== --b1_u4jpJLk5yAygEVMYXGNtGBROPNHwGz4BpCzosbp6q8 Content-Type: text/x-patch; name=0004-implement-key-or-value-hash-tables.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0004-implement-key-or-value-hash-tables.patch RnJvbSAyODlhY2I0YTQwNTk1Yjc2MDRiMWM0ZTA3MjQyNTEwZDI1MzdlMjE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAcHJvdG9ubWFpbC5jb20+CkRhdGU6 IFRodSwgNCBKdWwgMjAyNCAxOTowMDoxOCArMDAwMApTdWJqZWN0OiBbUEFUQ0ggNC81XSBpbXBs ZW1lbnQga2V5LW9yLXZhbHVlIGhhc2ggdGFibGVzCgotLS0KIHNyYy9mbnMuYyB8IDIxICsrKysr KysrKysrKysrKystCiBzcmMvaWdjLmMgfCA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDc4IGluc2VydGlv bnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9mbnMuYyBiL3NyYy9mbnMu YwppbmRleCAyMjFlMjM5YzYzOS4uNGZhYTBjZDUxZDggMTAwNjQ0Ci0tLSBhL3NyYy9mbnMuYwor KysgYi9zcmMvZm5zLmMKQEAgLTU1MDgsNiArNTUwOCw3IEBAIGFsbG9jYXRlX3dlYWtfaGFzaF90 YWJsZSAoaGFzaF90YWJsZV93ZWFrbmVzc190IHdlYWssIHNzaXplX3Qgc2l6ZSwgc3NpemVfdCBp bmRlCiAgICAgICByZXQtPnN0cm9uZy0+aW5kZXggPSByZXQtPnN0cm9uZy0+ZW50cmllcyArIDMg KiBzaXplOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWFrX0tleV9BbmRfVmFsdWU6CisgICAg Y2FzZSBXZWFrX0tleV9Pcl9WYWx1ZToKICAgICAgIHJldC0+c3Ryb25nLT5rZXkgPSByZXQtPndl YWstPmVudHJpZXM7CiAgICAgICByZXQtPnN0cm9uZy0+dmFsdWUgPSByZXQtPndlYWstPmVudHJp ZXMgKyBzaXplOwogICAgICAgcmV0LT5zdHJvbmctPmluZGV4ID0gcmV0LT5zdHJvbmctPmVudHJp ZXMgKyAyICogc2l6ZTsKQEAgLTU2NjEsNiArNTY2Miw3IEBAIG1heWJlX3Jlc2l6ZV93ZWFrX2hh c2hfdGFibGUgKHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJsZSAqaCkKIAkgIHN0cm9uZy0+aW5k ZXggPSBzdHJvbmctPmVudHJpZXMgKyAzICogbmV3X3NpemU7CiAJICBicmVhazsKIAljYXNlIFdl YWtfS2V5X0FuZF9WYWx1ZToKKwljYXNlIFdlYWtfS2V5X09yX1ZhbHVlOgogCSAgc3Ryb25nLT5r ZXkgPSB3ZWFrLT5lbnRyaWVzOwogCSAgc3Ryb25nLT52YWx1ZSA9IHdlYWstPmVudHJpZXMgKyBu ZXdfc2l6ZTsKIAkgIHN0cm9uZy0+aW5kZXggPSBzdHJvbmctPmVudHJpZXMgKyAyICogbmV3X3Np emU7CkBAIC01NzQyLDYgKzU3NDQsMTEgQEAgd2Vha19oYXNoX3B1dCAoc3RydWN0IExpc3BfV2Vh a19IYXNoX1RhYmxlICpoLCBMaXNwX09iamVjdCBrZXksIExpc3BfT2JqZWN0IHZhbHUKICAgLyog SW5jcmVtZW50IGNvdW50IGFmdGVyIHJlc2l6aW5nIGJlY2F1c2UgcmVzaXppbmcgbWF5IGZhaWwu ICAqLwogICBtYXliZV9yZXNpemVfd2Vha19oYXNoX3RhYmxlIChoKTsKIAorICBpZiAoaC0+c3Ry b25nLT53ZWFrbmVzcyA9PSBXZWFrX0tleV9Pcl9WYWx1ZSkKKyAgICB7CisgICAgICBGaWdjX2Fk ZF9leHRyYV9kZXBlbmRlbmN5IChrZXksIHZhbHVlLCBtYWtlX2xpc3Bfd2Vha19oYXNoX3RhYmxl IChoKSk7CisgICAgICBGaWdjX2FkZF9leHRyYV9kZXBlbmRlbmN5ICh2YWx1ZSwga2V5LCBtYWtl X2xpc3Bfd2Vha19oYXNoX3RhYmxlIChoKSk7CisgICAgfQogICAvKiBTdG9yZSBrZXkvdmFsdWUg aW4gdGhlIGtleV9hbmRfdmFsdWUgdmVjdG9yLiAgKi8KICAgcHRyZGlmZl90IGkgPSBYRklYTlVN IChoLT5zdHJvbmctPm5leHRfZnJlZSk7CiAgIC8vZWFzc2VydCAoaGFzaF91bnVzZWRfZW50cnlf a2V5X3AgKEhBU0hfS0VZIChoLCBpKSkpOwpAQCAtNjU0Niw3ICs2NTUzLDE5IEBAIERFRlVOICgi cHV0aGFzaCIsIEZwdXRoYXNoLCBTcHV0aGFzaCwgMywgMywgMCwKICAgICAgIExpc3BfT2JqZWN0 IGhhc2ggPSB3ZWFrX2hhc2hfZnJvbV9rZXkgKHdoLCBrZXkpOwogICAgICAgcHRyZGlmZl90IGkg PSB3ZWFrX2hhc2hfbG9va3VwX3dpdGhfaGFzaCAod2gsIGtleSwgaGFzaCk7CiAgICAgICBpZiAo aSA+PSAwKQotCXNldF93ZWFrX2hhc2hfdmFsdWVfc2xvdCAod2gsIGksIHZhbHVlKTsKKwl7CisJ ICBpZiAod2gtPnN0cm9uZy0+d2Vha25lc3MgPT0gV2Vha19LZXlfT3JfVmFsdWUpCisJICAgIHsK KwkgICAgICBGaWdjX3JlbW92ZV9leHRyYV9kZXBlbmRlbmN5IChrZXksIHRhYmxlKTsKKwkgICAg ICBGaWdjX3JlbW92ZV9leHRyYV9kZXBlbmRlbmN5ICh2YWx1ZSwgdGFibGUpOworCSAgICB9CisJ ICBzZXRfd2Vha19oYXNoX3ZhbHVlX3Nsb3QgKHdoLCBpLCB2YWx1ZSk7CisJICBpZiAod2gtPnN0 cm9uZy0+d2Vha25lc3MgPT0gV2Vha19LZXlfT3JfVmFsdWUpCisJICAgIHsKKwkgICAgICBGaWdj X2FkZF9leHRyYV9kZXBlbmRlbmN5IChrZXksIHZhbHVlLCB0YWJsZSk7CisJICAgICAgRmlnY19h ZGRfZXh0cmFfZGVwZW5kZW5jeSAodmFsdWUsIGtleSwgdGFibGUpOworCSAgICB9CisJfQogICAg ICAgZWxzZQogCXdlYWtfaGFzaF9wdXQgKHdoLCBrZXksIHZhbHVlLCBoYXNoKTsKICAgICAgIHJl dHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL3NyYy9pZ2MuYyBiL3NyYy9pZ2MuYwppbmRleCBiYzY5 NzcwMGJmNy4uN2E0MjQ3MGYwNjEgMTAwNjQ0Ci0tLSBhL3NyYy9pZ2MuYworKysgYi9zcmMvaWdj LmMKQEAgLTIwMTksNiArMjAxOSw3IEBAIGZpeF93ZWFrX2hhc2hfdGFibGVfc3Ryb25nX3BhcnQg KG1wc19zc190IHNzLCBzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGVfU3Ryb25nCiAJICAgIGxp bWl0ID0gMyAqIFhGSVhOVU0gKHQtPnRhYmxlX3NpemUpOwogCSAgICBicmVhazsKIAkgIGNhc2Ug V2Vha19LZXlfQW5kX1ZhbHVlOgorCSAgY2FzZSBXZWFrX0tleV9Pcl9WYWx1ZToKIAkgICAgbGlt aXQgPSAyICogWEZJWE5VTSAodC0+dGFibGVfc2l6ZSk7CiAJICAgIGJyZWFrOwogCSAgZGVmYXVs dDoKQEAgLTIwNTQsNiArMjA1NSw3IEBAIGZpeF93ZWFrX2hhc2hfdGFibGVfd2Vha19wYXJ0ICht cHNfc3NfdCBzcywgc3RydWN0IExpc3BfV2Vha19IYXNoX1RhYmxlX1dlYWtfUGFyCiAJICAgIGxp bWl0ID0gWEZJWE5VTSAodC0+dGFibGVfc2l6ZSk7CiAJICAgIGJyZWFrOwogCSAgY2FzZSBXZWFr X0tleV9BbmRfVmFsdWU6CisJICBjYXNlIFdlYWtfS2V5X09yX1ZhbHVlOgogCSAgICBsaW1pdCA9 IDIgKiBYRklYTlVNICh0LT50YWJsZV9zaXplKTsKIAkgICAgYnJlYWs7CiAJICBkZWZhdWx0OgpA QCAtMjA3NCw3ICsyMDc2LDggQEAgZml4X3dlYWtfaGFzaF90YWJsZV93ZWFrX3BhcnQgKG1wc19z c190IHNzLCBzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGVfV2Vha19QYXIKIAkJICAgIC53ZWFr ID0gdywKIAkJICB9OwogCQl3ZWFrX2hhc2hfc3BsYXRfZnJvbV90YWJsZQotCQkgICgmcHNldWRv X2gsICgodC0+d2Vha25lc3MgPT0gV2Vha19LZXlfQW5kX1ZhbHVlKSA/CisJCSAgKCZwc2V1ZG9f aCwgKCh0LT53ZWFrbmVzcyA9PSBXZWFrX0tleV9BbmRfVmFsdWUgfHwKKwkJCQl0LT53ZWFrbmVz cyA9PSBXZWFrX0tleV9Pcl9WYWx1ZSkgPwogCQkJICAgICAgIChpICUgWEZJWE5VTSAodC0+dGFi bGVfc2l6ZSkpIDogaSkpOwogCSAgICAgIH0KIAkgIH0KQEAgLTM5OTAsNiArMzk5Myw3IEBAIGln Y19hbGxvY193ZWFrX2hhc2hfdGFibGVfc3Ryb25nX3BhcnQgKGhhc2hfdGFibGVfd2Vha25lc3Nf dCB3ZWFrLAogICAgICAgdG90YWxfc2l6ZSA9IDMgKiBzaXplICsgKChwdHJkaWZmX3QpMSA8PCBp bmRleF9iaXRzKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2Vha19LZXlfQW5kX1ZhbHVlOgor ICAgIGNhc2UgV2Vha19LZXlfT3JfVmFsdWU6CiAgICAgICB0b3RhbF9zaXplID0gMiAqIHNpemUg KyAoKHB0cmRpZmZfdCkxIDw8IGluZGV4X2JpdHMpOwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVs dDoKQEAgLTQwMTQsNiArNDAxOCw3IEBAIGlnY19hbGxvY193ZWFrX2hhc2hfdGFibGVfd2Vha19w YXJ0IChoYXNoX3RhYmxlX3dlYWtuZXNzX3Qgd2VhaywKICAgICAgIHRvdGFsX3NpemUgPSBzaXpl OwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWFrX0tleV9BbmRfVmFsdWU6CisgICAgY2FzZSBX ZWFrX0tleV9Pcl9WYWx1ZToKICAgICAgIHRvdGFsX3NpemUgPSAyICogc2l6ZTsKICAgICAgIGJy ZWFrOwogICAgIGRlZmF1bHQ6CkBAIC00Mjc0LDggKzQyNzksOCBAQCBERUZVTiAoImlnYy0tcm9v dHMiLCBGaWdjX19yb290cywgU2lnY19fcm9vdHMsIDAsIDAsIDAsIGRvYyA6IC8qICovKQogfQog CiBERUZVTiAoImlnYy1hZGQtZXh0cmEtZGVwZW5kZW5jeSIsIEZpZ2NfYWRkX2V4dHJhX2RlcGVu ZGVuY3ksCi0gICAgICAgU2lnY19hZGRfZXh0cmFfZGVwZW5kZW5jeSwgMiwgMiwgMCwgZG9jIDog LyogKi8pCi0gIChMaXNwX09iamVjdCBvYmosIExpc3BfT2JqZWN0IGRlcGVuZGVuY3kpCisgICAg ICAgU2lnY19hZGRfZXh0cmFfZGVwZW5kZW5jeSwgMywgMywgMCwgZG9jIDogLyogKi8pCisgIChM aXNwX09iamVjdCBvYmosIExpc3BfT2JqZWN0IGRlcGVuZGVuY3ksIExpc3BfT2JqZWN0IGtleSkK IHsKICAgbXBzX3dvcmRfdCB3b3JkID0gWExJIChvYmopOwogICBtcHNfd29yZF90IHRhZyA9IHdv cmQgJiBJR0NfVEFHX01BU0s7CkBAIC00MzEzLDE3ICs0MzE4LDYwIEBAIERFRlVOICgiaWdjLWFk ZC1leHRyYS1kZXBlbmRlbmN5IiwgRmlnY19hZGRfZXh0cmFfZGVwZW5kZW5jeSwKICAgc3RydWN0 IGlnY19oZWFkZXIgKmggPSBjbGllbnRfdG9fYmFzZSAoY2xpZW50KTsKICAgc3RydWN0IGlnY19l eHRoZHIgKmV4dGhkciA9IGlnY19leHRlcm5hbF9oZWFkZXIgKGgpOwogICBpZiAoSEFTSF9UQUJM RV9QIChleHRoZHItPmV4dHJhX2RlcGVuZGVuY3kpKQotICAgIEZwdXRoYXNoIChkZXBlbmRlbmN5 LCBRdCwgZXh0aGRyLT5leHRyYV9kZXBlbmRlbmN5KTsKLSAgZWxzZSBpZiAoSEFTSF9UQUJMRV9Q IChkZXBlbmRlbmN5KSB8fCAhTklMUCAoZXh0aGRyLT5leHRyYV9kZXBlbmRlbmN5KSkKKyAgICBG cHV0aGFzaCAoa2V5LCBkZXBlbmRlbmN5LCBleHRoZHItPmV4dHJhX2RlcGVuZGVuY3kpOworICBl bHNlCiAgICAgewogICAgICAgTGlzcF9PYmplY3QgaGFzaCA9IENBTExOIChGbWFrZV9oYXNoX3Rh YmxlKTsKLSAgICAgIEZwdXRoYXNoIChkZXBlbmRlbmN5LCBRdCwgaGFzaCk7Ci0gICAgICBpZiAo IU5JTFAgKGV4dGhkci0+ZXh0cmFfZGVwZW5kZW5jeSkpCi0JRnB1dGhhc2ggKGV4dGhkci0+ZXh0 cmFfZGVwZW5kZW5jeSwgUXQsIGhhc2gpOworICAgICAgRnB1dGhhc2ggKGtleSwgZGVwZW5kZW5j eSwgaGFzaCk7CiAgICAgICBleHRoZHItPmV4dHJhX2RlcGVuZGVuY3kgPSBoYXNoOwogICAgIH0K KworICByZXR1cm4gUXQ7Cit9CisKK0RFRlVOICgiaWdjLXJlbW92ZS1leHRyYS1kZXBlbmRlbmN5 IiwgRmlnY19yZW1vdmVfZXh0cmFfZGVwZW5kZW5jeSwKKyAgICAgICBTaWdjX3JlbW92ZV9leHRy YV9kZXBlbmRlbmN5LCAyLCAyLCAwLCBkb2MgOiAvKiAqLykKKyAgKExpc3BfT2JqZWN0IG9iaiwg TGlzcF9PYmplY3Qga2V5KQoreworICBtcHNfd29yZF90IHdvcmQgPSBYTEkgKG9iaik7CisgIG1w c193b3JkX3QgdGFnID0gd29yZCAmIElHQ19UQUdfTUFTSzsKKyAgbXBzX2FkZHJfdCBjbGllbnQg PSBOVUxMOworICBzd2l0Y2ggKHRhZykKKyAgICB7CisgICAgY2FzZSBMaXNwX1R5cGVfVW51c2Vk MDoKKyAgICAgIGVtYWNzX2Fib3J0ICgpOworCisgICAgY2FzZSBMaXNwX0ludDA6CisgICAgY2Fz ZSBMaXNwX0ludDE6CisgICAgICByZXR1cm4gUW5pbDsKKworICAgIGNhc2UgTGlzcF9TeW1ib2w6 CisgICAgICB7CisJcHRyZGlmZl90IG9mZiA9IHdvcmQgXiB0YWc7CisJY2xpZW50ID0gKG1wc19h ZGRyX3QpICgoY2hhciAqKSBsaXNwc3ltICsgb2ZmKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOwor CisgICAgY2FzZSBMaXNwX1N0cmluZzoKKyAgICBjYXNlIExpc3BfVmVjdG9ybGlrZToKKyAgICBj YXNlIExpc3BfQ29uczoKKyAgICBjYXNlIExpc3BfRmxvYXQ6CisgICAgICBjbGllbnQgPSAobXBz X2FkZHJfdCkgKHdvcmQgXiB0YWcpOworICAgICAgYnJlYWs7CisgICAgfQorCisgIC8qIE9iamVj dHMgaW4gdGhlIHRoZSBkdW1wIGhhdmUgaWdjX2hlYWRlcnMsIHRvby4gKi8KKyAgaWYgKCFoYXNf aGVhZGVyIChjbGllbnQsIHRhZyA9PSBMaXNwX1ZlY3Rvcmxpa2UpKQorICAgIHsKKyAgICAgIHJl dHVybiBRbmlsOworICAgIH0KKworICBzdHJ1Y3QgaWdjX2hlYWRlciAqaCA9IGNsaWVudF90b19i YXNlIChjbGllbnQpOworICBzdHJ1Y3QgaWdjX2V4dGhkciAqZXh0aGRyID0gaWdjX2V4dGVybmFs X2hlYWRlciAoaCk7CisgIGlmIChIQVNIX1RBQkxFX1AgKGV4dGhkci0+ZXh0cmFfZGVwZW5kZW5j eSkpCisgICAgRnJlbWhhc2ggKGtleSwgZXh0aGRyLT5leHRyYV9kZXBlbmRlbmN5KTsKICAgZWxz ZQotICAgIGV4dGhkci0+ZXh0cmFfZGVwZW5kZW5jeSA9IGRlcGVuZGVuY3k7CisgICAgcmV0dXJu IFFuaWw7CiAKICAgcmV0dXJuIFF0OwogfQpAQCAtNDc1Niw2ICs0ODA0LDcgQEAgc3ltc19vZl9p Z2MgKHZvaWQpCiAgIGRlZnN1YnIgKCZTaWdjX19yb290cyk7CiAgIGRlZnN1YnIgKCZTaWdjX19j b2xsZWN0KTsKICAgZGVmc3ViciAoJlNpZ2NfYWRkX2V4dHJhX2RlcGVuZGVuY3kpOworICBkZWZz dWJyICgmU2lnY19yZW1vdmVfZXh0cmFfZGVwZW5kZW5jeSk7CiAgIERFRlNZTSAoUWFtYmlnLCAi YW1iaWciKTsKICAgREVGU1lNIChRZXhhY3QsICJleGFjdCIpOwogICBGcHJvdmlkZSAoaW50ZXJu X2Nfc3RyaW5nICgibXBzIiksIFFuaWwpOwotLSAKMi40NS4yCgo= --b1_u4jpJLk5yAygEVMYXGNtGBROPNHwGz4BpCzosbp6q8 Content-Type: text/x-patch; name=0001-Ugly-hack-to-satisfy-MPS-single-access-rules.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-Ugly-hack-to-satisfy-MPS-single-access-rules.patch RnJvbSBhMzdjNTJmODJlYzg5YThiOWJkODhjODBiNzgwMWE3ZWQyMzI5Y2JiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAcHJvdG9ubWFpbC5jb20+CkRhdGU6 IFRodSwgNCBKdWwgMjAyNCAxODoxNzoxNiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMS81XSBVZ2x5 IGhhY2sgdG8gc2F0aXNmeSBNUFMgc2luZ2xlLWFjY2VzcyBydWxlcy4KCi0tLQogc3JjL2lnYy5j IHwgODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9pZ2MuYyBiL3NyYy9pZ2MuYwppbmRleCA2MjRiYjMxYjJlZC4uYjI0 ZmYxOWExMzcgMTAwNjQ0Ci0tLSBhL3NyYy9pZ2MuYworKysgYi9zcmMvaWdjLmMKQEAgLTQ1OSwy MSArNDU5LDQ1IEBAIHB2ZWNfdHlwZV9uYW1lIChlbnVtIHB2ZWNfdHlwZSB0eXBlKQogCiBlbnVt CiB7Ci0gIElHQ19UWVBFX0JJVFMgPSA2LAotICBJR0NfSEFTSF9CSVRTID0gMjYsCi0gIElHQ19T SVpFX0JJVFMgPSAzMiwKLSAgSUdDX0hBU0hfTUFTSyA9ICgxIDw8IElHQ19IQVNIX0JJVFMpIC0g MSwKKyAgSUdDX0hFQURFUl9UQUdfQklUUyA9IDIsCisgIElHQ19IRUFERVJfVFlQRV9CSVRTID0g NiwKKyAgSUdDX0hFQURFUl9IQVNIX0JJVFMgPSAyNCwKKyAgSUdDX0hFQURFUl9OV09SRFNfQklU UyA9IDMyLAorICBJR0NfSEVBREVSX1RBR19NQVNLID0gKDFMTCA8PCBJR0NfSEVBREVSX1RBR19C SVRTKSAtIDEsCisgIElHQ19IRUFERVJfVFlQRV9NQVNLID0gKDEgPDwgSUdDX0hFQURFUl9UWVBF X0JJVFMpIC0gMSwKKyAgSUdDX0hFQURFUl9IQVNIX01BU0sgPSAoMSA8PCBJR0NfSEVBREVSX0hB U0hfQklUUykgLSAxLAogfTsKIAotc3RhdGljX2Fzc2VydCAoSUdDX09CSl9OVU1fVFlQRVMgLSAx IDwgKDEgPDwgSUdDX1RZUEVfQklUUykpOworc3RhdGljX2Fzc2VydCAoSUdDX09CSl9OVU1fVFlQ RVMgLSAxIDwgKDEgPDwgSUdDX0hFQURFUl9UWVBFX0JJVFMpKTsKIAogc3RydWN0IGlnY19oZWFk ZXIKIHsKLSAgZW51bSBpZ2Nfb2JqX3R5cGUgb2JqX3R5cGUgOiBJR0NfVFlQRV9CSVRTOwotICBt cHNfd29yZF90IGhhc2ggOiBJR0NfSEFTSF9CSVRTOwotICBtcHNfd29yZF90IG53b3JkcyA6IElH Q19TSVpFX0JJVFM7CisgIHVpbnQ2NF90IHY7CiB9OwogCisjZGVmaW5lIElHQ19IRUFERVJfTldP UkRTKGgpICgoaCktPnYgPj4gKDY0IC0gSUdDX0hFQURFUl9OV09SRFNfQklUUykpCisjZGVmaW5l IElHQ19IRUFERVJfSEFTSChoKSAoKChoKS0+diA+PiAoSUdDX0hFQURFUl9UWVBFX0JJVFMgKyBJ R0NfSEVBREVSX1RBR19CSVRTKSkgJiBJR0NfSEVBREVSX0hBU0hfTUFTSykKKyNkZWZpbmUgSUdD X0hFQURFUl9UWVBFKGgpICgoKGgpLT52ID4+IElHQ19IRUFERVJfVEFHX0JJVFMpICYgSUdDX0hF QURFUl9UWVBFX01BU0spCisjZGVmaW5lIElHQ19IRUFERVJfVEFHKGgpICgoaCktPnYgJiBJR0Nf SEVBREVSX1RBR19NQVNLKQorCitlbnVtIGlnY190YWcKK3sKKyAgSUdDX1RBR19OVUxMID0gMCwg LyogZW50aXJlIHZhbHVlIG11c3QgYmUgMCB0byBhdm9pZCBNUFMgaXNzdWVzICovCisgIElHQ19U QUdfT0JKID0gMSwgLyogSUdDIG9iamVjdCAqLworfTsKKworc3RhdGljIGVudW0gaWdjX29ial90 eXBlCitpZ2NfaGVhZGVyX3R5cGUgKHN0cnVjdCBpZ2NfaGVhZGVyICpoKQoreworICByZXR1cm4g SUdDX0hFQURFUl9UWVBFIChoKTsKK30KKworc3RhdGljIHVuc2lnbmVkCitpZ2NfaGVhZGVyX2hh c2ggKHN0cnVjdCBpZ2NfaGVhZGVyICpoKQoreworICByZXR1cm4gSUdDX0hFQURFUl9IQVNIICho KTsKK30KKwogc3RydWN0IGlnY19md2QKIHsKICAgc3RydWN0IGlnY19oZWFkZXIgaGVhZGVyOwpA QCAtNDk1LDE0ICs1MTksMjAgQEAgdG9fYnl0ZXMgKG1wc193b3JkX3QgbndvcmRzKQogICByZXR1 cm4gbndvcmRzICogc2l6ZW9mIChtcHNfd29yZF90KTsKIH0KIAorc3RhdGljIHNpemVfdAoraWdj X2hlYWRlcl9ud29yZHMgKGNvbnN0IHN0cnVjdCBpZ2NfaGVhZGVyICpoKQoreworICByZXR1cm4g SUdDX0hFQURFUl9OV09SRFMgKGgpOworfQorCiAvKiBWYWx1ZSBpcyB0aGUgc2l6ZSBpbiBieXRl cyBvZiB0aGUgb2JqZWN0IGRlc2NyaWJlZCBieSBoZWFkZXIgSC4KICAgIFRoaXMgaW5jbHVkZXMg dGhlIGhlYWRlciBpdHNlbGYuICovCiAKIHN0YXRpYyBtcHNfd29yZF90CiBvYmpfc2l6ZSAoY29u c3Qgc3RydWN0IGlnY19oZWFkZXIgKmgpCiB7Ci0gIG1wc193b3JkX3QgbmJ5dGVzID0gdG9fYnl0 ZXMgKGgtPm53b3Jkcyk7Ci0gIGlnY19hc3NlcnQgKGgtPm9ial90eXBlID09IElHQ19PQkpfUEFE IHx8IG5ieXRlcyA+PSBzaXplb2YgKHN0cnVjdCBpZ2NfZndkKSk7CisgIG1wc193b3JkX3QgbmJ5 dGVzID0gdG9fYnl0ZXMgKGlnY19oZWFkZXJfbndvcmRzIChoKSk7CisgIGlnY19hc3NlcnQgKElH Q19IRUFERVJfVFlQRSAoaCkgPT0gSUdDX09CSl9QQUQgfHwgbmJ5dGVzID49IHNpemVvZiAoc3Ry dWN0IGlnY19md2QpKTsKICAgcmV0dXJuIG5ieXRlczsKIH0KIApAQCAtNTIyLDE1ICs1NTIsMTQg QEAgb2JqX2NsaWVudF9zaXplIChjb25zdCBzdHJ1Y3QgaWdjX2hlYWRlciAqaCkKIHNldF9oZWFk ZXIgKHN0cnVjdCBpZ2NfaGVhZGVyICpoLCBlbnVtIGlnY19vYmpfdHlwZSB0eXBlLAogCSAgICBt cHNfd29yZF90IG5ieXRlcywgbXBzX3dvcmRfdCBoYXNoKQogewotI2lmIElHQ19TSVpFX0JJVFMg Pj0gMzIgJiYgSU5UUFRSX01BWCA+IElOVF9NQVgKKyNpZiBJR0NfTldPUkRTX0JJVFMgPj0gMzIg JiYgSU5UUFRSX01BWCA+IElOVF9NQVgKICAgLyogT24gMzItYml0IGFyY2hpdGVjdHVyZSB0aGUg YXNzZXJ0aW9uIGJlbG93IGlzIHJlZHVuZGFudCBhbmQKICAgICAgY2F1c2VzIGNvbXBpbGVyIHdh cm5pbmdzLiAgKi8KLSAgaWdjX2Fzc2VydCAobmJ5dGVzIDwgKChzaXplX3QpIDEgPDwgSUdDX1NJ WkVfQklUUykpOworICBpZ2NfYXNzZXJ0IChuYnl0ZXMgPCAoKHNpemVfdCkgMSA8PCBJR0NfSEVB REVSX05XT1JEU19CSVRTKSk7CiAjZW5kaWYKICAgaWdjX2Fzc2VydCAodHlwZSA9PSBJR0NfT0JK X1BBRCB8fCBuYnl0ZXMgPj0gc2l6ZW9mIChzdHJ1Y3QgaWdjX2Z3ZCkpOwotICBoLT5vYmpfdHlw ZSA9IHR5cGU7Ci0gIGgtPm53b3JkcyA9IHRvX3dvcmRzIChuYnl0ZXMpOwotICBoLT5oYXNoID0g aGFzaDsKKyAgaC0+diA9ICh0b193b3JkcyAobmJ5dGVzKSA8PCAoNjQgLSBJR0NfSEVBREVSX05X T1JEU19CSVRTKSkgKworICAgIChoYXNoIDw8IChJR0NfSEVBREVSX1RBR19CSVRTICsgSUdDX0hF QURFUl9UWVBFX0JJVFMpKSArICh0eXBlIDw8IElHQ19IRUFERVJfVEFHX0JJVFMpICsgSUdDX1RB R19PQko7CiB9CiAKIC8qIEdpdmVuIGEgcG9pbnRlciB0byB0aGUgY2xpZW50IGFyZWEgb2YgYW4g b2JqZWN0LCBDTElFTlQsIHJldHVybgpAQCAtNTg3LDcgKzYxNiw3IEBAIGFsbG9jX3NpemUgKHNp emVfdCBuYnl0ZXMpCiBhbGxvY19oYXNoICh2b2lkKQogewogICBzdGF0aWMgdW5zaWduZWQgY291 bnQgPSAwOwotICByZXR1cm4gY291bnQrKzsKKyAgcmV0dXJuIGNvdW50KysgJiBJR0NfSEVBREVS X0hBU0hfTUFTSzsKIH0KIAogLyogVGhpcyBydW5zIGluIHZhcmlvdXMgcGxhY2VzIGZvciAtLWVu YWJsZS1jaGVja2luZz1pZ2NfY2hlY2tfZndkLiAgU2VlCkBAIC02MDAsNyArNjI5LDcgQEAgaWdj X2NoZWNrX2Z3ZCAodm9pZCAqY2xpZW50KQogICBpZiAoaGFzX2hlYWRlciAoY2xpZW50LCB0cnVl KSkKICAgICB7CiAgICAgICBzdHJ1Y3QgaWdjX2hlYWRlciAqaCA9IGNsaWVudF90b19iYXNlIChj bGllbnQpOwotICAgICAgaWdjX2Fzc2VydCAoaC0+b2JqX3R5cGUgIT0gSUdDX09CSl9GV0QpOwor ICAgICAgaWdjX2Fzc2VydCAoSUdDX0hFQURFUl9UWVBFIChoKSAhPSBJR0NfT0JKX0ZXRCk7CiAg ICAgICBpZ2NfYXNzZXJ0IChvYmpfc2l6ZSAoaCkgPj0gc2l6ZW9mIChzdHJ1Y3QgaWdjX2Z3ZCkp OwogICAgIH0KIH0KQEAgLTEzNTgsOSArMTM4Nyw5IEBAIGRmbHRfZndkIChtcHNfYWRkcl90IG9s ZF9iYXNlX2FkZHIsIG1wc19hZGRyX3QgbmV3X2Jhc2VfYWRkcikKIHsKICAgc3RydWN0IGlnY19o ZWFkZXIgKmggPSBvbGRfYmFzZV9hZGRyOwogICBpZ2NfYXNzZXJ0IChvYmpfc2l6ZSAoaCkgPj0g c2l6ZW9mIChzdHJ1Y3QgaWdjX2Z3ZCkpOwotICBpZ2NfYXNzZXJ0IChoLT5vYmpfdHlwZSAhPSBJ R0NfT0JKX1BBRCk7CisgIGlnY19hc3NlcnQgKElHQ19IRUFERVJfVFlQRSAoaCkgIT0gSUdDX09C Sl9QQUQpOwogICBzdHJ1Y3QgaWdjX2Z3ZCAqZiA9IG9sZF9iYXNlX2FkZHI7Ci0gIGYtPmhlYWRl ci5vYmpfdHlwZSA9IElHQ19PQkpfRldEOworICBzZXRfaGVhZGVyICgmZi0+aGVhZGVyLCBJR0Nf T0JKX0ZXRCwgdG9fYnl0ZXMgKElHQ19IRUFERVJfTldPUkRTIChoKSksIDApOwogICBmLT5uZXdf YmFzZV9hZGRyID0gbmV3X2Jhc2VfYWRkcjsKIH0KIApAQCAtMTM2OCw3ICsxMzk3LDcgQEAgZGZs dF9md2QgKG1wc19hZGRyX3Qgb2xkX2Jhc2VfYWRkciwgbXBzX2FkZHJfdCBuZXdfYmFzZV9hZGRy KQogaXNfZGZsdF9md2QgKG1wc19hZGRyX3QgYmFzZV9hZGRyKQogewogICBzdHJ1Y3QgaWdjX2Z3 ZCAqZiA9IGJhc2VfYWRkcjsKLSAgaWYgKGYtPmhlYWRlci5vYmpfdHlwZSA9PSBJR0NfT0JKX0ZX RCkKKyAgaWYgKElHQ19IRUFERVJfVFlQRSAoJmYtPmhlYWRlcikgPT0gSUdDX09CSl9GV0QpCiAg ICAgcmV0dXJuIGYtPm5ld19iYXNlX2FkZHI7CiAgIHJldHVybiBOVUxMOwogfQpAQCAtMTYwMiw3 ICsxNjMxLDcgQEAgZGZsdF9zY2FuX29iaiAobXBzX3NzX3Qgc3MsIG1wc19hZGRyX3QgYmFzZV9z dGFydCwgbXBzX2FkZHJfdCBiYXNlX2xpbWl0LAogICAgIGlmIChjbG9zdXJlKQogICAgICAgewog CXN0cnVjdCBpZ2Nfc3RhdHMgKnN0ID0gY2xvc3VyZTsKLQltcHNfd29yZF90IG9ial90eXBlID0g aGVhZGVyLT5vYmpfdHlwZTsKKwltcHNfd29yZF90IG9ial90eXBlID0gaWdjX2hlYWRlcl90eXBl IChoZWFkZXIpOwogCWlnY19hc3NlcnQgKG9ial90eXBlIDwgSUdDX09CSl9OVU1fVFlQRVMpOwog CXNpemVfdCBzaXplID0gb2JqX3NpemUgKGhlYWRlcik7CiAJc3QtPm9ialtvYmpfdHlwZV0ubmJ5 dGVzICs9IHNpemU7CkBAIC0xNjIxLDcgKzE2NTAsNyBAQCBkZmx0X3NjYW5fb2JqIChtcHNfc3Nf dCBzcywgbXBzX2FkZHJfdCBiYXNlX3N0YXJ0LCBtcHNfYWRkcl90IGJhc2VfbGltaXQsCiAJICB9 CiAgICAgICB9CiAKLSAgICBzd2l0Y2ggKGhlYWRlci0+b2JqX3R5cGUpCisgICAgc3dpdGNoIChp Z2NfaGVhZGVyX3R5cGUgKGhlYWRlcikpCiAgICAgICB7CiAgICAgICBjYXNlIElHQ19PQkpfSU5W QUxJRDoKICAgICAgIGNhc2UgSUdDX09CSl9CVUlMVElOX1NZTUJPTDoKQEAgLTMxMzgsNyArMzE2 Nyw3IEBAIGZpbmFsaXplIChzdHJ1Y3QgaWdjICpnYywgbXBzX2FkZHJfdCBiYXNlKQogewogICBt cHNfYWRkcl90IGNsaWVudCA9IGJhc2VfdG9fY2xpZW50IChiYXNlKTsKICAgc3RydWN0IGlnY19o ZWFkZXIgKmggPSBiYXNlOwotICBzd2l0Y2ggKGgtPm9ial90eXBlKQorICBzd2l0Y2ggKGlnY19o ZWFkZXJfdHlwZSAoaCkpCiAgICAgewogICAgIGNhc2UgSUdDX09CSl9JTlZBTElEOgogICAgIGNh c2UgSUdDX09CSl9QQUQ6CkBAIC0zNTQ3LDEyICszNTc2LDEyIEBAIGlnY19oYXNoIChMaXNwX09i amVjdCBrZXkpCiAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydGlvbiBpcyB2ZXJ5IGV4cGVu c2l2ZS4KICAgICAgIC8vIGlnY19hc3NlcnQgKG1wc19hcmVuYV9oYXNfYWRkciAoZ2xvYmFsX2ln Yy0+YXJlbmEsIGNsaWVudCkpOwogICAgICAgc3RydWN0IGlnY19oZWFkZXIgKmggPSBjbGllbnRf dG9fYmFzZSAoY2xpZW50KTsKLSAgICAgIHJldHVybiBoLT5oYXNoOworICAgICAgcmV0dXJuIGln Y19oZWFkZXJfaGFzaCAoaCk7CiAgICAgfQogCiAgIC8qIFVzZSBhIGhhc2ggdGhhdCB3b3VsZCBm aXQgaW50byBpZ2NfaGVhZGVyOjpoYXNoIHNvIHRoYXQgd2UKICAgICAgY2FuIGtlZXAgdGhlIGhh c2ggb25jZSBhIG5vbi1NUFMgb2JqZWN0IGlzIGNvcGllZCB0byBNUFMuICovCi0gIHJldHVybiB3 b3JkICYgSUdDX0hBU0hfTUFTSzsKKyAgcmV0dXJuIHdvcmQgJiBJR0NfSEVBREVSX0hBU0hfTUFT SzsKIH0KIAogLyogQWxsb2NhdGUgYW4gb2JqZWN0IG9mIGNsaWVudCBzaXplIFNJWkUgYW5kIG9m IHR5cGUgVFlQRSBmcm9tCkBAIC0zODI3LDcgKzM4NTYsNyBAQCBpZ2NfYWxsb2NfbGlzcF9vYmpf dmVjIChzaXplX3QgbikKIHdlYWtfaGFzaF9maW5kX2RlcGVuZGVudCAobXBzX2FkZHJfdCBiYXNl KQogewogICBzdHJ1Y3QgaWdjX2hlYWRlciAqaCA9IGJhc2U7Ci0gIHN3aXRjaCAoaC0+b2JqX3R5 cGUpCisgIHN3aXRjaCAoaWdjX2hlYWRlcl90eXBlIChoKSkKICAgICB7CiAgICAgY2FzZSBJR0Nf T0JKX1dFQUtfSEFTSF9UQUJMRV9XRUFLX1BBUlQ6CiAgICAgICB7CkBAIC00NDA4LDcgKzQ0Mzcs NyBAQCBwdXJlX29ial90eXBlX2FuZF9oYXNoIChzaXplX3QgKmhhc2hfbywgZW51bSBpZ2Nfb2Jq X3R5cGUgdHlwZSwgdm9pZCAqY2xpZW50KQogICAgICAgcmV0dXJuIHR5cGU7CiAKICAgICBjYXNl IElHQ19PQkpfU1RSSU5HX0RBVEE6Ci0gICAgICAqaGFzaF9vID0gKHVpbnRwdHJfdCkgY2xpZW50 ICYgSUdDX0hBU0hfTUFTSzsKKyAgICAgICpoYXNoX28gPSAodWludHB0cl90KSBjbGllbnQgJiBJ R0NfSEVBREVSX0hBU0hfTUFTSzsKICAgICAgIHJldHVybiB0eXBlOwogCiAgICAgY2FzZSBJR0Nf T0JKX0ZMT0FUOgpAQCAtNDQ2MCw5ICs0NDg5LDkgQEAgaWdjX2R1bXBfZmluaXNoX29iaiAodm9p ZCAqY2xpZW50LCBlbnVtIGlnY19vYmpfdHlwZSB0eXBlLAogICAgICAgJiYgIWlzX2luX2R1bXAp CiAgICAgewogICAgICAgc3RydWN0IGlnY19oZWFkZXIgKmggPSBjbGllbnRfdG9fYmFzZSAoY2xp ZW50KTsKLSAgICAgIGlmIChoLT5vYmpfdHlwZSA9PSBJR0NfT0JKX01BUktFUl9WRUNUT1IpCisg ICAgICBpZiAoaWdjX2hlYWRlcl90eXBlIChoKSA9PSBJR0NfT0JKX01BUktFUl9WRUNUT1IpCiAJ aWdjX2Fzc2VydCAoKHR5cGUgPT0gSUdDX09CSl9WRUNUT1IKLQkJICAgICAmJiBoLT5vYmpfdHlw ZSA9PSBJR0NfT0JKX01BUktFUl9WRUNUT1IpCisJCSAgICAgJiYgaWdjX2hlYWRlcl90eXBlICho KSA9PSBJR0NfT0JKX01BUktFUl9WRUNUT1IpCiAJCSAgICB8fCBoLT5vYmpfdHlwZSA9PSB0eXBl KTsKICAgICAgIGlnY19hc3NlcnQgKGJhc2UgKyBvYmpfc2l6ZSAoaCkgPj0gZW5kKTsKICAgICAg ICpvdXQgPSAqaDsKQEAgLTQ1MjYsNyArNDU1NSw3IEBAIGNoZWNrX2R1bXAgKG1wc19hZGRyX3Qg c3RhcnQsIG1wc19hZGRyX3QgZW5kKQogICAgIHsKICAgICAgIGVhc3NlcnQgKHAgPCBlbmQpOwog ICAgICAgc3RydWN0IGlnY19oZWFkZXIgKmggPSBwOwotICAgICAgaWYgKGgtPm9ial90eXBlICE9 IElHQ19PQkpfUEFEKQorICAgICAgaWYgKElHQ19IRUFERVJfVFlQRSAoaCkgIT0gSUdDX09CSl9Q QUQpCiAJewogCSAgbXBzX2FkZHJfdCBvYmogPSBwZHVtcGVyX25leHRfb2JqZWN0ICgmaXQpOwog CSAgZWFzc2VydCAocCA9PSBvYmopOwotLSAKMi40NS4yCgo= --b1_u4jpJLk5yAygEVMYXGNtGBROPNHwGz4BpCzosbp6q8 Content-Type: text/x-patch; name=0002-Allow-IGC-headers-to-be-pointers-to-an-external-exte.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0002-Allow-IGC-headers-to-be-pointers-to-an-external-exte.patch RnJvbSA4NzA2MmYwYzA1YTQ2YTE0NmQxYmQ2M2M2MzFkYTgzYWMwYTY0NDYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAcHJvdG9ubWFpbC5jb20+CkRhdGU6 IFRodSwgNCBKdWwgMjAyNCAxODoxNzo0MyArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMi81XSBBbGxv dyBJR0MgaGVhZGVycyB0byBiZSBwb2ludGVycyB0byBhbiBleHRlcm5hbCBleHRlbmRlZAogcmVh bCBoZWFkZXIKCi0tLQogc3JjL2lnYy5jIHwgMTcgKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2lnYy5jIGIvc3JjL2ln Yy5jCmluZGV4IGIyNGZmMTlhMTM3Li45YmUzMGZjYjNjZiAxMDA2NDQKLS0tIGEvc3JjL2lnYy5j CisrKyBiL3NyYy9pZ2MuYwpAQCAtNDgwLDIxICs0ODAsMzYgQEAgI2RlZmluZSBJR0NfSEVBREVS X0hBU0goaCkgKCgoaCktPnYgPj4gKElHQ19IRUFERVJfVFlQRV9CSVRTICsgSUdDX0hFQURFUl9U QUdfQkkKICNkZWZpbmUgSUdDX0hFQURFUl9UWVBFKGgpICgoKGgpLT52ID4+IElHQ19IRUFERVJf VEFHX0JJVFMpICYgSUdDX0hFQURFUl9UWVBFX01BU0spCiAjZGVmaW5lIElHQ19IRUFERVJfVEFH KGgpICgoaCktPnYgJiBJR0NfSEVBREVSX1RBR19NQVNLKQogCitzdHJ1Y3QgaWdjX2V4dGhkcgor eworICBFTUFDU19VSU5UIG53b3JkczsKKyAgRU1BQ1NfVUlOVCBoYXNoOworICBlbnVtIGlnY19v YmpfdHlwZSBvYmpfdHlwZTsKKyAgTGlzcF9PYmplY3QgZXh0cmFfZGVwZW5kZW5jeTsKK307CisK KyNkZWZpbmUgSUdDX0hFQURFUl9FWFRIRFIoaCkgKChzdHJ1Y3QgaWdjX2V4dGhkciAqKShpbnRw dHJfdCkoKGgpLT52ICYgfklHQ19IRUFERVJfVEFHX01BU0spKQorCiBlbnVtIGlnY190YWcKIHsK ICAgSUdDX1RBR19OVUxMID0gMCwgLyogZW50aXJlIHZhbHVlIG11c3QgYmUgMCB0byBhdm9pZCBN UFMgaXNzdWVzICovCiAgIElHQ19UQUdfT0JKID0gMSwgLyogSUdDIG9iamVjdCAqLworICBJR0Nf VEFHX0VYVEhEUiA9IDIsIC8qIHBvaW50ZXIgdG8gYWxpZ25lZCBleHRlcm5hbCBoZWFkZXIgKi8K IH07CiAKIHN0YXRpYyBlbnVtIGlnY19vYmpfdHlwZQogaWdjX2hlYWRlcl90eXBlIChzdHJ1Y3Qg aWdjX2hlYWRlciAqaCkKIHsKKyAgaWYgKElHQ19IRUFERVJfVEFHIChoKSA9PSBJR0NfVEFHX0VY VEhEUikKKyAgICByZXR1cm4gSUdDX0hFQURFUl9FWFRIRFIgKGgpLT5vYmpfdHlwZTsKICAgcmV0 dXJuIElHQ19IRUFERVJfVFlQRSAoaCk7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZAogaWdjX2hlYWRl cl9oYXNoIChzdHJ1Y3QgaWdjX2hlYWRlciAqaCkKIHsKKyAgaWYgKElHQ19IRUFERVJfVEFHICho KSA9PSBJR0NfVEFHX0VYVEhEUikKKyAgICByZXR1cm4gSUdDX0hFQURFUl9FWFRIRFIgKGgpLT5o YXNoOwogICByZXR1cm4gSUdDX0hFQURFUl9IQVNIIChoKTsKIH0KIApAQCAtNTIyLDYgKzUzNyw4 IEBAIHRvX2J5dGVzIChtcHNfd29yZF90IG53b3JkcykKIHN0YXRpYyBzaXplX3QKIGlnY19oZWFk ZXJfbndvcmRzIChjb25zdCBzdHJ1Y3QgaWdjX2hlYWRlciAqaCkKIHsKKyAgaWYgKElHQ19IRUFE RVJfVEFHIChoKSA9PSBJR0NfVEFHX0VYVEhEUikKKyAgICByZXR1cm4gSUdDX0hFQURFUl9FWFRI RFIgKGgpLT5ud29yZHM7CiAgIHJldHVybiBJR0NfSEVBREVSX05XT1JEUyAoaCk7CiB9CiAKLS0g CjIuNDUuMgoK --b1_u4jpJLk5yAygEVMYXGNtGBROPNHwGz4BpCzosbp6q8--