From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id pC1wMthCD2SBQw4AWB0awg (envelope-from ) for ; Mon, 13 Mar 2023 11:35:52 -0400 Received: by simark.ca (Postfix, from userid 112) id C0D011E223; Mon, 13 Mar 2023 11:35:52 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=lists.lttng.org header.i=@lists.lttng.org header.a=rsa-sha256 header.s=default header.b=Aa+woEzG; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.lttng.org (lists.lttng.org [167.114.26.123]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 1153A1E110 for ; Mon, 13 Mar 2023 11:35:51 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lists.lttng.org; s=default; t=1678721750; bh=jliQxGnNyS+C4ee7/gAqqyPwL+7Eyq/3VBdQNGntq64=; h=In-Reply-To:Date:Cc:References:To:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=Aa+woEzGCmjzv/lUJrkgHVLXs1tcuBynbByjNKIqjTYi6O5sAxcs6kjsO9A//ARxw kYCdtjijS/tjHav0yTni/rybU9gC0nuxGdGdSoGOzggLEsJX1guWRtFqB5kHnqiGf6 4+777LXfanrIwRSdyZCEqW4qvuXEMvloF3wGwFKJVUnbRNtO9SXiQDeyWCgRfBEStT tIjuVAtC7BBGizeDsFqyxZogRzzleKEkv8f5Jbwrz80HtiSLvzTG27iDttSBX/YMA4 pjSEGWrIw+fGSYDTsr063d0hF9XqlTA6pli67bUZY9YYXrCvvGCz8gV8uGcdO0QtsU /FkBXH/aFmDrg== Received: from lists-lttng01.efficios.com (localhost [IPv6:::1]) by lists.lttng.org (Postfix) with ESMTP id 4Pb12Z3l5hz2BNq; Mon, 13 Mar 2023 11:35:50 -0400 (EDT) Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com [66.111.4.29]) by lists.lttng.org (Postfix) with ESMTPS id 4Pb12X49KRz2BNp for ; Mon, 13 Mar 2023 11:35:48 -0400 (EDT) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id DA1BE5C01A6; Mon, 13 Mar 2023 11:30:35 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Mon, 13 Mar 2023 11:30:35 -0400 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrvddvgedgjeehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptggguffhjgffvefgkfhfvffosehtqhhmtdhhtdejnecuhfhrohhmpefqnhgu rhgvjhcuufhurhpuuceoohhnughrvghjsehsuhhrhidrohhrgheqnecuggftrfgrthhtvg hrnhepieetjeekgfeilefhiefhheevfffhtefhueelfedtueejteffjeeftddtkeejleek necuffhomhgrihhnpeguohhtrghtrdgrthdpihhstgdrohhrghenucevlhhushhtvghruf hiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehonhgurhgvjhesshhurhihrdho rhhg X-ME-Proxy: Feedback-ID: ida81469e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 13 Mar 2023 11:30:34 -0400 (EDT) Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.400.51.1.1\)) In-Reply-To: Date: Mon, 13 Mar 2023 16:30:21 +0100 Cc: lttng-dev@lists.lttng.org, paulmck Message-Id: <3F64E9FA-5E54-4613-9D4B-E49053847CB3@sury.org> References: <09AA2241-0226-44B8-8363-32AEC813CBB4@sury.org> To: Mathieu Desnoyers X-Mailer: Apple Mail (2.3731.400.51.1.1) Subject: Re: [lttng-dev] urcu/rculist.h clarifications - for implementing LRU X-BeenThere: lttng-dev@lists.lttng.org X-Mailman-Version: 2.1.39 Precedence: list List-Id: LTTng development list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: =?utf-8?q?Ond=C5=99ej_Sur=C3=BD_via_lttng-dev?= Reply-To: =?utf-8?B?T25kxZllaiBTdXLDvQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: lttng-dev-bounces@lists.lttng.org Sender: "lttng-dev" SGkgTWF0dGhpZXUsCgpJIHNwZW50IHNvbWUgbW9yZSB0aW1lIHdpdGggdGhlIHVzZXJzcGFjZS1y Y3Ugb24gRnJpZGF5IGFuZCBvdmVyIHdlZWtlbmQgYW5kCm5vdyBJIGFtIGluIG11Y2ggYmV0dGVy IHBsYWNlLgoKPiBPbiAxMy4gMy4gMjAyMywgYXQgMTU6MjksIE1hdGhpZXUgRGVzbm95ZXJzIDxt YXRoaWV1LmRlc25veWVyc0BlZmZpY2lvcy5jb20+IHdyb3RlOgo+IAo+IE9uIDIwMjMtMDMtMTEg MDE6MDQsIE9uZMWZZWogU3Vyw70gdmlhIGx0dG5nLWRldiB3cm90ZToKPj4gSGV5LAo+PiBzbywg d2UgYXJlIGludGVncmF0aW5nIHVzZXJzcGFjZS1yY3UgdG8gQklORCA5ICh5YXkhKSBhbmQgYXMg ZXhwZXJpbWVudCwKPj4gSSBhbSByZXdyaXRpbmcgdGhlIGludGVybmFsIGFkZHJlc3MgZGF0YWJh c2UgKGtlZXBzIHRoZSBpbmZyYXN0cnVjdHVyZQo+PiBpbmZvcm1hdGlvbiBhYm91dCBuYW1lcyBh bmQgYWRkcmVzc2VzKS4KPiAKPiBUaGF0J3MgaW5kZWVkIHZlcnkgaW50ZXJlc3RpbmcgIQoKVGhh bmtzIGZvciB0aGUgdXNlcnNwYWNlLXJjdSEgSXQgc2F2ZXMgYSBsb3Qgb2YgdGltZSAtIHdoaWxl IG15IGNvbGxlYWd1ZSBUb255IEZpbmNoCmFscmVhZHkgd3JvdGUgb3VyIGludGVybmFsIFFTQlIg aW1wbGVtZW50YXRpb24gZnJvbSBzY3JhdGNoLCBpdCB3b3VsZCBiZSB3YXN0ZSBvZgp0aW1lIHRv IHRyeSB0byByZWltcGxlbWVudCB0aGUgQ0RTIHBhcnQgb2YgdGhlIGxpYnJhcnkuCgpUaGlzIGlz IHBhcnQgb2YgbGFyZ2VyIHdvcmsgdG8gcmVwbGFjZSB0aGUgaW50ZXJuYWwgQklORCA5IGRhdGFi YXNlIHRoYXQncyBjdXJyZW50bHkKaW1wbGVtZW50ZWQgYXMgcndsb2NrZWQgUkJUIHdpdGggcXB0 cmllLCBpZiB5b3UgYXJlIGludGVyZXN0ZWQgVG9ueSBoYXMgZ29vZApzdW1tYXJ5IGhlcmU6IGh0 dHBzOi8vZG90YXQuYXQvQC8yMDIzLTAyLTI4LXFwLWJpbmQuaHRtbAoKPj4gVGhlcmUncyBhIGhh c2h0YWJsZSB0byBrZWVwIHRoZSBlbnRyaWVzIGFuZCB0aGVyZSdzIGFzc29jaWF0ZWQgTFJVIGxp c3QuCj4+IEZvciB0aGUgaGFzaHRhYmxlIHRoZSBjZHNfbGZodCBzZWVtcyB0byB3b3JrIHdlbGws IGJ1dCBJIGFtIGtpbmQgb2Ygc3RydWdnbGluZwo+PiB3aXRoIGNkc19saXN0ICh0aGUgdXJjdS9y Y3VsaXN0LmggdmFyaWFudCkuCj4+IFRoZSBuYW1lcyBhbmQgZW50cmllcyB3b3JrcyBpbiBwcmV0 dHkgbXVjaCBzaW1pbGFyIHdheSwgc28gSSBhbSBnb2luZyB0bwo+PiBkZXNjcmliZSBqdXN0IG9u ZS4KPj4gVGhlIHdvcmtob3JzZSBpcyBnZXRfYXR0YWNoZWRfYW5kX2xvY2tlZF9uYW1lKCkgZnVu Y3Rpb24gKEkgYW0gZ29pbmcgdG8KPj4gc2tpcCB0aGUgcGFydHMgd2hlcmUgd2UgY3JlYXRlIGtl eXMsIGNoZWNrcyBpZiBMUlUgbmVlZHMgdG8gYmUgdXBkYXRlZCwgZXRjLikKPiAKPiBJdCB3b3Vs ZCBoZWxwIGlmIHlvdSBjb3VsZCBzaGFyZSBhIGdpdCBicmFuY2ggb2YgeW91ciBwcm90b3R5cGUu IEluIG9yZGVyIHRvIHJlYXNvbgo+IGFib3V0IFJDVSwgd2UgdHlwaWNhbGx5IG5lZWQgdG8gbG9v ayBhdCBib3RoIHRoZSB1cGRhdGUtc2lkZSBhbmQgdGhlIHJlYWQtc2lkZS4KPiBGb3IgaW5zdGFu Y2UgSSBkb24ndCBzZWUgdGhlIHJlYWQtc2lkZSBvZiB0aGUgTFJVIGxpbmtlZC1saXN0IGluIHRo ZSBjb2RlIHNuaXBwZXRzCj4gYmVsb3cuIFdlIGFsc28gbmVlZCB0byBoYXZlIGEgY29tcGxldGUg cGljdHVyZSBvZiB0aGUgb2JqZWN0IGxpZmV0aW1lLCBmcm9tIGFsbG9jYXRpb24KPiB0byByZWNs YWltL3JldXNlLiBJIGRvbid0IHNlZSB3aGVyZSB0aGUgZ3JhY2UgcGVyaW9kcyAoZWl0aGVyIHN5 bmNocm9uaXplX3JjdSBvcgo+IGNhbGxfcmN1KSBhcmUgYmVmb3JlIHJlY2xhaW0gb3IgcmV1c2Ug aW4gdGhlIGNvZGUgc25pcHBldHMgYmVsb3cuCgpTdXJlLCBoYXBweSB0bywgYnV0IEkgZGlkbid0 IHJlYWxseSB3YW50ZWQgdG8gYXNrIHlvdSB0byBsb29rIGRpcmVjdGx5IGF0IHRoZSBjb2RlLCBh bmQKSSBkb24ndCAqZXhwZWN0KiBkaXJlY3QgaGVscCAoYWx0aG91Z2ggYW55IGhlbHAgaXMgc3Vy ZWx5IGFwcHJlY2lhdGVkKS4KClNvLCBwbGVhc2UgYmVhciBpbiBtaW5kIHRoaXMgaXMgZmFyIGZy b20gY29tcGxldGUgYW5kIHRoZSBjb21taXRzIGFyZSB1dHRlciBtZXNzCnNvIGZhcjogaHR0cHM6 Ly9naXRsYWIuaXNjLm9yZy9pc2MtcHJvamVjdHMvYmluZDkvLS9tZXJnZV9yZXF1ZXN0cy83Njgw Cgo+PiBTbyB0aGlzIGlzIHBhcnQgd2l0aCB0aGUgaGFzaHRhYmxlIGxvb2t1cCB3aGljaCBzZWVt cyB0byB3b3JrIHdlbGw6Cj4+ICAgICAgICAgcmN1X3JlYWRfbG9jaygpOwo+PiAgICAgICAgIHN0 cnVjdCBjZHNfbGZodF9pdGVyIGl0ZXI7Cj4+ICAgICAgICAgc3RydWN0IGNkc19sZmh0X25vZGUg Kmh0X25vZGU7Cj4+ICAgICAgICAgY2RzX2xmaHRfbG9va3VwKGFkYi0+bmFtZXNfaHQsIGhhc2h2 YWwsIG5hbWVzX21hdGNoLCAma2V5LCAmaXRlcik7Cj4+ICAgICAgICAgaHRfbm9kZSA9IGNkc19s Zmh0X2l0ZXJfZ2V0X25vZGUoJml0ZXIpOwo+PiAgICAgICAgIGJvb2wgdW5saW5rID0gZmFsc2U7 Cj4+ICAgICAgICAgaWYgKGh0X25vZGUgPT0gTlVMTCkgewo+PiAgICAgICAgICAgICAgICAgLyog QWxsb2NhdGUgYSBuZXcgbmFtZSBhbmQgYWRkIGl0IHRvIHRoZSBoYXNoIHRhYmxlLiAqLwo+PiAg ICAgICAgICAgICAgICAgYWRibmFtZSA9IG5ld19hZGJuYW1lKGFkYiwgbmFtZSwgc3RhcnRfYXRf em9uZSk7Cj4+ICAgICAgICAgICAgICAgICBodF9ub2RlID0gY2RzX2xmaHRfYWRkX3VuaXF1ZShh ZGItPm5hbWVzX2h0LCBoYXNodmFsLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmFtZXNfbWF0Y2gsICZrZXksCj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRibmFtZS0+aHRfbm9kZSk7Cj4+ICAgICAgICAg ICAgICAgICBpZiAoaHRfbm9kZSAhPSAmYWRibmFtZS0+aHRfbm9kZSkgewo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBJU0NfUl9FWElTVFMgKi8KPj4gICAgICAgICAgICAgICAgICAgICAg ICAgZGVzdHJveV9hZGJuYW1lKGFkYm5hbWUpOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICBh ZGJuYW1lID0gTlVMTDsKPj4gICAgICAgICAgICAgICAgIH0KPj4gICAgICAgICB9Cj4+ICAgICAg ICAgaWYgKGFkYm5hbWUgPT0gTlVMTCkgewo+PiAgICAgICAgICAgICAgICAgSU5TSVNUKGh0X25v ZGUgIT0gTlVMTCk7Cj4+ICAgICAgICAgICAgICAgICBhZGJuYW1lID0gY2FhX2NvbnRhaW5lcl9v ZihodF9ub2RlLCBkbnNfYWRibmFtZV90LCBodF9ub2RlKTsKPj4gICAgICAgICAgICAgICAgIHVu bGluayA9IHRydWU7Cj4+ICAgICAgICAgfQo+PiAgICAgICAgIGRuc19hZGJuYW1lX3JlZihhZGJu YW1lKTsKPiAKPiBXaGF0IGlzIHRoaXMgZG5zX2FkYm5hbWVfcmVmKCkgc3VwcG9zZWQgdG8gZG8g PyBBbmQgaXMgdGhlcmUgYSByZWZlcmVuY2UgdG8gYWRibmFtZQo+IHRoYXQgaXMgc3RpbGwgdXNl ZCBhZnRlciByY3VfcmVhZF91bmxvY2soKSA/IFdoYXQgZ3VhcmFudGVlcyB0aGUgZXhpc3RlbmNl IG9mIHRoZQo+IGFkYm5hbWUgYWZ0ZXIgcmN1X3JlYWRfdW5sb2NrKCkgPwoKVGhpcyBpcyBwYXJ0 IG9mIHRoZSBpbnRlcm5hbCByZWZlcmVuY2UgY291bnRpbmcgLSB0aGVyZSdzIGEgbWFjcm8gdGhh dCBleHBlY3RzIGBpc2NfcmVmY291bnRfdCByZWZlcmVuY2VzO2AKbWVtYmVyIG9uIHRoZSBzdHJ1 Y3QgYW5kIGl0IGNyZWF0ZXMgX3JlZiwgX3VucmVmLCBfYXR0YWNoIGFuZCBfZGV0YWNoIGZ1bmN0 aW9ucyBmb3IgZWFjaCBzdHJ1Y3QuCgpUaGUgbGFzdCBfZGV0YWNoL191bnJlZiBjYWxscyBhIGRl c3Ryb3kgZnVuY3Rpb24uCgo+PiAgICAgICAgIHJjdV9yZWFkX3VubG9jaygpOwo+PiBhbmQgaGVy ZSdzIHRoZSBwYXJ0IHdoZXJlIExSVSBnZXRzIHVwZGF0ZWQ6Cj4+ICAgICAgICAgTE9DSygmYWRi bmFtZS0+bG9jayk7IC8qIE11c3QgYmUgdW5sb2NrZWQgYnkgdGhlIGNhbGxlciAqLwo+IAo+IEkg c3VzcGVjdCB5b3UgdXNlIGEgc2NoZW1lIHdoZXJlIHlvdSBob2xkIHRoZSBSQ1UgcmVhZC1zaWRl IHRvIHBlcmZvcm0gdGhlIGxvb2t1cCwgYW5kCj4gdGhlbiB5b3UgdXNlIHRoZSBvYmplY3Qgd2l0 aCBhbiBpbnRlcm5hbCBsb2NrIGhlbGQuIEJ1dCBleHBlY3RpbmcgdGhlIG9iamVjdCB0byBzdGls bAo+IGV4aXN0IGFmdGVyIHJjdSByZWFkIHVubG9jayBpcyBpbmNvcnJlY3QsIHVubGVzcyBzb21l IG90aGVyIHJlZmVyZW5jZSBjb3VudGluZyBzY2hlbWUKPiBpcyB1c2VkLgoKWWVhaCwgSSB3YXMg dHJ5aW5nIHRvIG1pbmltaXplIHRoZSBzZWN0aW9ucyB3aGVyZSB3ZSBob2xkIHRoZSByY3VfcmVh ZCBsb2NrcywgYnV0IEkgZ2F2ZQp1cCBhbmQgbm93IHRoZXJlJ3MgcmN1X3JlYWQgbG9jayBoZWxk IGZvciBsb25nZXIgcGVyaW9kcyBvZiB0aW1lLgoKPj4gICAgICAgICBpZiAoTkFNRV9ERUFEKGFk Ym5hbWUpKSB7Cj4+ICAgICAgICAgICAgICAgICBVTkxPQ0soJmFkYm5hbWUtPmxvY2spOwo+PiAg ICAgICAgICAgICAgICAgZG5zX2FkYm5hbWVfZGV0YWNoKCZhZGJuYW1lKTsKPj4gICAgICAgICAg ICAgICAgIGdvdG8gYWdhaW47Cj4+ICAgICAgICAgfQo+PiAgICAgICAgIGlmIChhZGJuYW1lLT5s YXN0X3VzZWQgKyBBREJfQ0FDSEVfTUlOSU1VTSA8PSBsYXN0X3VwZGF0ZSkgewo+PiAgICAgICAg ICAgICAgICAgYWRibmFtZS0+bGFzdF91c2VkID0gbm93Owo+PiAgICAgICAgICAgICAgICAgTE9D SygmYWRiLT5uYW1lc19scnVfbG9jayk7Cj4+ICAgICAgICAgICAgICAgICBpZiAodW5saW5rKSB7 Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGNkc19saXN0X2RlbF9yY3UoJmFkYm5hbWUtPmxp c3Rfbm9kZSk7Cj4+ICAgICAgICAgICAgICAgICB9Cj4gCj4gVGhpcyBsb29rcyBvZGQuIEkgZG9u J3Qgc2VlIHRoZSBjb2RlIGltcGxlbWVudGluZyB0cmF2ZXJzYWwgb2YgdGhpcyBsaXN0LCBidXQK PiBJIHdvdWxkIGV4cGVjdCBhIGdyYWNlIHBlcmlvZCBiZXR3ZWVuIHVubGluayBvZiB0aGUgbm9k ZSBmcm9tIGEgbGlzdCBhbmQgaW5zZXJ0aW9uCj4gaW50byBhbm90aGVyIGxpc3QsIG90aGVyd2lz ZSBpZiB0aGVyZSBhcmUgUkNVIHJlYWRlcnMgdHJhdmVyc2luZyB0aGUgbGlzdAo+IGNvbmN1cnJl bnRseSwgdGhleSBjYW4gb2JzZXJ2ZSBhbiBpbmNvbnNpc3RlbnQgc3RhdGUuCgpUaGF0J3MgcHJv YmFibHkgdGhlIHBhcnQgSSBhbSBnZXR0aW5nIHdyb25nLiBUaGlzIGFsbCBpcyBmYWlybHkgbmV3 IHRvIG1lIGFuZCBteSBicmFpbgppcyBzdGlsbCBhZGp1c3RpbmcgdG8gdGhlIG5ldyBwYXJhZGln bXMuCgo+PiAgICAgICAgICAgICAgICAgY2RzX2xpc3RfYWRkX3RhaWxfcmN1KCZhZGJuYW1lLT5s aXN0X25vZGUsICZhZGItPm5hbWVzX2xydSk7Cj4+ICAgICAgICAgICAgICAgICBVTkxPQ0soJmFk Yi0+bmFtZXNfbHJ1X2xvY2spOwo+PiAgICAgICAgIH0KPj4gVGhlIE5BTUVfREVBRCBnZXRzIHVw ZGF0ZWQgdW5kZXIgdGhlIGFkYm5hbWUtPmxvY2sgaW4gZXhwaXJlX25hbWUoKToKPj4gICAgICAg ICBpZiAoIU5BTUVfREVBRChhZGJuYW1lKSkgewo+PiAgICAgICAgICAgICAgICAgYWRibmFtZS0+ ZmxhZ3MgfD0gTkFNRV9JU19ERUFEOwo+PiAgICAgICAgICAgICAgICAgLyogUmVtb3ZlIHRoZSBh ZGJuYW1lIGZyb20gdGhlIGhhc2h0YWJsZS4uLiAqLwo+PiAgICAgICAgICAgICAgICAgKHZvaWQp Y2RzX2xmaHRfZGVsKGFkYi0+bmFtZXNfaHQsICZhZGJuYW1lLT5odF9ub2RlKTsKPiAKPiBJIGRv bid0IGhhdmUgdGhlIGZ1bGwgY29udGV4dCBoZXJlLCBidXQgQUZBSVIgY2RzX2xmaHRfZGVsKCkg YWxsb3dzIHR3byByZW1vdmFscwo+IG9mIHRoZSBzYW1lIGh0X25vZGUgdG8gYmUgZG9uZSBjb25j dXJyZW50bHksIGFuZCBvbmx5IG9uZSB3aWxsIHN1Y2NlZWQgKHdoaWNoIGlzCj4gcHJvYmFibHkg d2hhdCBoYXBwZW5zIGhlcmUpLiBjZHNfbGlzdF9kZWxfcmN1KCkgaG93ZXZlciBkb2VzIG5vdCBh bGxvdyBjb25jdXJyZW50Cj4gcmVtb3ZhbHMgb2YgYSBsaXN0X25vZGUuIFNvIGlmIHlvdSBzb21l aG93IGdldCB0d28gUkNVIGxvb2t1cHMgdG8gZmluZCB0aGUgc2FtZQo+IG5vZGUgaW4gZXhwaXJl X25hbWUsIG9uZSB3aWxsIGxpa2VseSBkbyBhbiBleHRyYSB1bmV4cGVjdGVkIGNkc19saXN0X2Rl bF9yY3UoKS4KCkFoLCB0aGF0IG1pZ2h0IGV4cGxhaW4gdGhlIGJlaGF2aW91ci4gIEhvd2V2ZXIg dGhlIGN1cnJlbnQgYnJhbmNoIGRvZXNuJ3QgbWFuaWZlc3QKdGhpcyBhbnltb3JlLgoKPj4gICAg ICAgICAgICAgICAgIC8qIC4uLiBhbmQgTFJVIGxpc3QgKi8KPj4gICAgICAgICAgICAgICAgIExP Q0soJmFkYi0+bmFtZXNfbHJ1X2xvY2spOwo+PiAgICAgICAgICAgICAgICAgY2RzX2xpc3RfZGVs X3JjdSgmYWRibmFtZS0+bGlzdF9ub2RlKTsKPj4gICAgICAgICAgICAgICAgIFVOTE9DSygmYWRi LT5uYW1lc19scnVfbG9jayk7Cj4+ICAgICAgICAgfQo+PiBTbywgbm93IHRoZSBwcm9ibGVtIGlz IHRoYXQgc29tZXRpbWVzIEkgZ2V0IGEgY3Jhc2ggdW5kZXIgbG9hZDoKPj4gKGdkYikgYnQKPj4g IzAgIDB4MDAwMDdmYWU4N2EzNGM5NiBpbiBjZHNfbGlzdF9kZWxfcmN1IChlbGVtPTB4N2ZhZTM3 ZTc4ODgwKSBhdCAvdXNyL2luY2x1ZGUveDg2XzY0LWxpbnV4LWdudS91cmN1L3JjdWxpc3QuaDo3 MQo+PiAjMSAgZ2V0X2F0dGFjaGVkX2FuZF9sb2NrZWRfbmFtZSAoYWRiPWFkYkBlbnRyeT0weDdm YWU4MzAxNDJhMCwgbmFtZT1uYW1lQGVudHJ5PTB4N2ZhZTgwNGZjOWIwLCBzdGFydF9hdF96b25l PXRydWUsIG5vdz08b3B0aW1pemVkIG91dD4pIGF0IGFkYi5jOjE0NDYKPj4gIzIgIDB4MDAwMDdm YWU4N2EzOTJiZiBpbiBkbnNfYWRiX2NyZWF0ZWZpbmQgKGFkYj0weDdmYWU4MzAxNDJhMCwgbG9v cD0weDdmYWU4NDJjM2EyMCwgY2I9Y2JAZW50cnk9MHg3ZmFlODdiMjhkOWYgPGZjdHhfZmluZGRv bmU+LCBjYmFyZz0weDdmYWU3YzY3OTAwMCwgbmFtZT1uYW1lQGVudHJ5PTB4N2ZhZTgwNGZjOWIw LCBxbmFtZT0weDdmYWU3YzY3OTAxMCwgcXR5cGU9MSwgb3B0aW9ucz02Mywgbm93PTxvcHRpbWl6 ZWQgb3V0PiwgdGFyZ2V0PTB4MCwgcG9ydD01MywgZGVwdGg9MSwgcWM9MHg3ZmFlN2M2NTEwNjAs IGZpbmRwPTB4N2ZhZTgwNGZjNjk4KSBhdCBhZGIuYzoyMTQ5Cj4+IChnZGIpIGZyYW1lIDAKPj4g IzAgIDB4MDAwMDdmYWU4N2EzNGM5NiBpbiBjZHNfbGlzdF9kZWxfcmN1IChlbGVtPTB4N2ZhZTM3 ZTc4ODgwKSBhdCAvdXNyL2luY2x1ZGUveDg2XzY0LWxpbnV4LWdudS91cmN1L3JjdWxpc3QuaDo3 MQo+PiA3MSBlbGVtLT5uZXh0LT5wcmV2ID0gZWxlbS0+cHJldjsKPj4gKGdkYikgcHJpbnQgZWxl bS0+bmV4dAo+PiAkMSA9IChzdHJ1Y3QgY2RzX2xpc3RfaGVhZCAqKSAweDAKPj4gKGdkYikgcHJp bnQgZWxlbQo+PiAkMiA9IChzdHJ1Y3QgY2RzX2xpc3RfaGVhZCAqKSAweDdmYWUzN2U3ODg4MAo+ PiBTbywgSSBzdXNwZWN0LCBJIGFtIGRvaW5nIHNvbWV0aGluZyB3cm9uZyB3aGVuIHVwZGF0aW5n IHRoZSBwb3NpdGlvbiBvZiB0aGUgdGhlIG5hbWUgaW4gdGhlIExSVSBsaXN0Lgo+PiBUaGVyZSBh cmUgY291cGxlIG9mIHBsYWNlcyB3aGVyZSB3ZSBpdGVyYXRlIHRocm91Z2ggdGhlIExSVSBsaXN0 IChvdmVybWVtIGNsZWFuaW5nIGNhbiBraWNrLWluLCB0aGUgdXNlciBpbml0aWF0ZWQgY2xlYW5p bmcgY2FuIHN0YXJ0LCBzaHV0ZG93biBjYW4gYmUgaGFwcGVuaW5nLi4uKQo+IAo+IEl0IGdldHMg bWUgdG8gd29uZGVyIHdoZXRoZXIgeW91IHJlYWxseSBuZWVkIFJDVSBmb3IgdGhlIExSVSBsaXN0 ID8gQXJlIHRob3NlIGxvb2t1cHMKPiB2ZXJ5IGZyZXF1ZW50ID8gQW5kIGRvIHRoZXkgdHlwaWNh bGx5IGVuZCB1cCBuZWVkaW5nIHRvIGdyYWIgYSBsb2NrIHRvIHByb3RlY3QgYWdhaW5zdAo+IGNv bmN1cnJlbnQgbGlzdCBtb2RpZmljYXRpb25zID8KClRoZXNlIGFyZSBsb29rdXBzIHRoYXQgaGFw cGVuIGZyZXF1ZW50bHkgd2hlbiB0aGUgY2FjaGUgaXMgY29sZCAtIGl0IGtlZXBzIHRoZSBkZWxl Z2F0aW9uCm1hcHBpbmcgKGUuZy4gKipuYW1lKiogaXMgc2VydmVyIGJ5ICoqbmFtZXNlcnZlcioq IChhZGJuYW1lKSB0aGF0IGhhcyB0aGVzZSAqKklQIGFkZHJlc3NlcyoqCihhZGJlbnRyaWVzKSku CgpUaGVyZSBhcmUgdHdvIG1vcmUgcGxhY2VzIGluIHRoZSByZXNvbHZlciBob3QgcGF0aCB0aGF0 IGFyZSB1c2luZyBoYXNodGFibGVzIG5vdyB3aGljaCBJIGludGVuZAp0byByZXBsYWNlIHdpdGgg cmN1bGZoYXNoOgoKMS4gImZpbmRzIiAodGhpcyBpcyBmb3IgY29hbGVzY2luZyBjbGllbnQgcmVx dWVzdHMsIGUuZy4gaWYgMTAwIGNsaWVudHMgYXNrcyBmb3IgZ29vZ2xlLmNvbSwgdGhlIHNob3Vs ZCBiZQogICBvbmx5IG9uZSBvdXRnb2luZyBxdWVyeSkKCjIuIHJlc29sdmVyIGNvdW50ZXIgLSB0 aGVzZSBhcmUgdXNlZCBhcyBiYW5kYWlkIHByb3RlY3Rpb24gYWdhaW5zdCByYW5kb20tc3ViZG9t YWluIGF0dGFja3MsIGJ1dAogICB0aGUgbG9naWMgaXMgc2ltaWxhciAtIG1ha2UgYSBsb29rdXAg Zm9yIHBhcmVudCBkb21haW4gYW5kIGlmIHRoZSBjb3VudGVyIGV4Y2VlZHMgPGxpbWl0PiwgZHJv cCB0aGUKICAgZXh0cmEgcXVlcnkuCgpUaGVzZSBmb3VyIGFyZSBpbiB0aGUgY29sZCBjYWNoZSBy ZXNvbHZlciBob3RwYXRoIGFuZCBhcmUvd2VyZSBvcmlnaW5hbGx5IHByb3RlY3RlZCBieSBSV0xP Q0sKKHVzaW5nIG5vbi1nbGliYyBSV0xPQ0sgaGVscGVkIGEgYml0LCBidXQgUkNVIGlzIGJldHRl cikuCgo+PiBJcyB0aGVyZSBwZXJoYXBzIGFscmVhZHkgc29tZSBMUlUgaW1wbGVtZW50YXRpb24g dXNpbmcgVXNlcnNwYWNlLVJDVSB0aGF0IEkgY2FuIHRha2UgbG9vayBhdD8KPiAKPiBJIGRvbid0 IGhhdmUgYW4gZXhhbXBsZSBpbXBsZW1lbnRpbmcgYW4gTFJVIHdpdGggYSBsaW5rZWQgbGlzdCBz cGVjaWZpY2FsbHksIGJ1dCB0aGlzIGlzIG5vdAo+IGRpZmZlcmVudCBmcm9tIG90aGVyIGxpbmtl ZC1saXN0IHVzZXMuCgoKVGhhbmsgeW91LApPbmRyZWoKLS0KT25kxZllaiBTdXLDvSAoSGUvSGlt KQpvbmRyZWpAc3VyeS5vcmcKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsdHRuZy1kZXYgbWFpbGluZyBsaXN0Cmx0dG5nLWRldkBsaXN0cy5sdHRuZy5v cmcKaHR0cHM6Ly9saXN0cy5sdHRuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL2x0dG5n LWRldgo=