From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from shelob.surriel.com (shelob.surriel.com [96.67.55.147]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 60B8AC54EBD for ; Sun, 8 Jan 2023 22:25:08 +0000 (UTC) Received: from localhost ([::1] helo=shelob.surriel.com) by shelob.surriel.com with esmtp (Exim 4.96) (envelope-from ) id 1pEe5w-0000sz-36; Sun, 08 Jan 2023 17:24:48 -0500 Received: from ngcobalt04.manitu.net ([217.11.48.104]) by shelob.surriel.com with esmtps (TLS1.2) tls TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1pEe5t-0000b0-1Q for kernelnewbies@kernelnewbies.org; Sun, 08 Jan 2023 17:24:45 -0500 Received: from [IPV6:2001:9e8:a28a:6900:3e97:eff:feb4:2f60] (unknown [IPv6:2001:9e8:a28a:6900:3e97:eff:feb4:2f60]) (Authenticated sender: cstalp) by ngcobalt04.manitu.net (Postfix) with ESMTPSA id 0A79A1060F01 for ; Sun, 8 Jan 2023 23:24:41 +0100 (CET) Message-ID: <77ba5293-292c-9163-9a54-a2066e93fe14@chrishell.de> Date: Sun, 8 Jan 2023 23:24:41 +0100 MIME-Version: 1.0 Subject: Re: linked list within a kernel probe To: kernelnewbies@kernelnewbies.org References: <75bc2d47-a2f9-187b-8ac8-e0ee2c10226a@chrishell.de> Content-Language: en-GB From: chrishell In-Reply-To: <75bc2d47-a2f9-187b-8ac8-e0ee2c10226a@chrishell.de> X-BeenThere: kernelnewbies@kernelnewbies.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Learn about the Linux kernel List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: kernelnewbies-bounces@kernelnewbies.org VG8gc2hvcnRlbiBteSBwcm9iYmxlbSBkZXNjcmlwdGlvbjogSSBjcmVhdGVkIGEgbGlua2VkIGxp c3Qgd2l0aGluIGEgCmZ1bmN0aW9uLCB3aGljaCBpcyBjYWxsZWQgaW4gdGhlIG1vZHVsZSBfaW5p dCBmdW5jdGlvbi4gUmlnaHQgYWZ0ZXIgCmxlYXZpbmcgdGhpcyBmdW5jdGlvbiBJIHRlc3RlZCB0 aGlzIGxpc3Qgd2l0aGluIHRoZSBfaW5pdCBmdW5jdGlvbiwgCndoaWNoIHdvcmtlZC4gQnV0IHdp dGhpbiB0aGUga3Byb2JlIGZ1bmN0aW9uLCB0aGUgYWNjZXNzIHRvIHRoYXQgbGlua2VkIApsaXN0 IGxlYWRzIHRvIGtlcm5lbCBvb3BzIG9yIGV2ZW4ga2VybmVsIHBhbmljcwoKSG9wZSB0aGVyZSBp cyBzb21lb25lIHdobyBjYW4gZ2l2ZSBtZSBhIGhpbnQuCgpUaGFua3MgaW4gYWR2YW5jZQoKQlIg L0NocmlzdGlhbgoKCgpBbSAwMy4wMS4yMyB1bSAxOTo1MiBzY2hyaWViIGNocmlzaGVsbDoKPiBI ZWxsbyBvdXQgdGhlcmUsIEkgaGF2ZSBhbiBpc3N1ZSB3aXRoIGEgbGlua2VkIGxpc3Qgd2hpY2gg aG9sZHMgcG9pbnRlcnMgCj4gdG8gbWVtb3J5IHBhZ2VzIGZvciBhIGtwcm9iZS4gVGhlIGxpbmtl ZCBsaXN0IGdldCBpbml0aWFsaXNlZCBidXQgSSAKPiBjYW5ub3QgdXNlIGl0IHdpdGhpbiB0aGUg a3Byb2JlLgo+IAo+IEkgdXNlIG1haW4gb3IgaGVhZCBwb2ludGVyIHRvIGhvbGQgZXZlcnl0aGlu ZyBpbiBvbmUgcGxhY2U6Cj4gCj4gc3RydWN0IGtwcm9iZV9oZWFkIHsKPiAgwqDCoMKgwqBzdHJ1 Y3QgbGlzdF9oZWFkwqDCoMKgICpwX21lbV9jYWNoZTsKPiAgwqDCoMKgwqBzdHJ1Y3Qga3Byb2Jl X2Zzb3BzwqDCoMKgICpwZm9wczsKPiAgwqDCoMKgwqBzdHJ1Y3Qga3Byb2JlwqDCoMKgwqDCoMKg wqDCoCAqcFByb2JlOwo+IH07Cj4gCj4gYW5kIHRoZSBwb2ludGVyIHRvIGFjY2VzcyBldmVyeXRo aW5nOgo+IAo+IHN0YXRpYyBzdHJ1Y3Qga3Byb2JlX2hlYWQgKnBIZWFkOwo+IAo+IHRoZW4gSSBo YXZlIHRoZSBzdHJ1Y3R1cmUgd2hpY2ggdGhpcyBsaXN0IGlzIG1hZGUgb2Y6Cj4gCj4gc3RydWN0 IGtwcm9iZV9tZW1fY2FjaGUgewo+IAo+ICDCoMKgwqDCoHZvaWTCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICpwX3BhZ2U7Cj4gIMKgwqDCoMKgX191MzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemU7 Cj4gIMKgwqDCoMKgX191OMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGlydHk7Cj4gIMKgwqDCoMKg c3RydWN0IGxpc3RfaGVhZMKgwqDCoCBsaXN0X2VsZW1lbnQ7Cj4gfTsKPiAKPiAKPiB0aGUgbGlz dCBsb29rcyBsaWtlOgo+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBf X19fX19fX19fX19fX19fX19fX8KgwqAgX19fX19fX19fX19fX19fX18KPiAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfDwtfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8LXwKPiBwSGVhZC0+ cF9tZW1fY2FjaGUtPnwga3Byb2JlX21lbV9jYWNoZSB8LT58IGtyb2JlX21lbV9jYWNoZSB8LT58 IC4uLgo+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tLS0t LS0tLS0tLS0tLcKgIC0tLS0tLS0tLS0tLS0tLS0tLS0KPiAKPiB0aGUgcF9wYWdlIHBvaW50ZXIg aXMgdGhlIHBvaW50ZXIgdG8gdGhlIGFsbG9hY3RlZCBwYWdlLiBUaGVyZWZvcmUgZWFjaCAKPiBl bGVtZW50IG9mIHRoYXQgbGlua2VkIGxpc3QgaG9sZHMgYSBwb2ludGVyIHRvIGFsbG9jYXRlZCBt ZW1vcnkgc2VnbWVudC4KPiAKPiBpbiB0aGUgX19pbml0IGZ1bmN0aW9uIEkgZG8sIGFtb25nIG90 aGVyIHRoaW5ncywgYWxsb2NhdGUgc29tZSBtZW1vcnkgCj4gZm9yIHRoYXQgc3RydWN0dXJlLCB0 aG91Z2h0IGEgc3RhdGljIHN0cnVjdCB3b3VsZCBiZSBhbHNvIHN1ZmZpY2llbnQuCj4gCj4gLyog Y3JlYXRlIHRoZSBoZWFkIHN0b3JhZ2UgcmVjb3JkICovCj4gcEhlYWQgPSAoc3RydWN0IGtwcm9i ZV9oZWFkKikga3phbGxvYyhzaXplb2Yoc3RydWN0IGtwcm9iZV9oZWFkKSwgCj4gR0ZQX0tFUk5F TCk7Cj4gIMKgwqDCoMKgaWYocEhlYWQgPT0gTlVMTCkKPiAgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IC1FTk9NRU07Cj4gCj4gdGhlbiBJIGNyZWF0ZSB0aGUgbGlua2VkIGxpc3Qgd2l0aCB0aGlzIGZ1 bmN0aW9uOgo+IAo+IHN0YXRpYyBfX3U4IF9rcHJvYmVfc2V0dXBfY2FjaGVfZWxlbWVudHMoIHN0 cnVjdCBrcHJvYmVfaGVhZCAqcEhlYWQsIAo+IF9fdTE2IGVsZW1lbnRzLCBfX3UzMiBzaXplKQo+ IHsKPiAgwqDCoMKgwqB1bnNpZ25lZCBpbnTCoMKgwqDCoMKgIGNvdW50wqDCoMKgwqAgPSAwOwo+ ICDCoMKgwqDCoF9fdTjCoMKgwqDCoMKgwqDCoCByY8KgwqDCoCA9IDA7Cj4gIMKgwqDCoMKgc3Ry dWN0IGxpc3RfaGVhZCBsb2NhbF9oZWFkOwo+IAo+ICDCoMKgwqDCoElOSVRfTElTVF9IRUFEKCZs b2NhbF9oZWFkKTsKPiAKPiAgwqDCoMKgwqBpZihwSGVhZCAhPSBOVUxMKSB7Cj4gCj4gIMKgwqDC oMKgwqDCoMKgIHByX2VycigiY3JlYXRlIGxpc3Qgd2l0aCAlcFxuIiwgcEhlYWQpOwo+ICDCoMKg wqDCoMKgwqDCoCAvL0lOSVRfTElTVF9IRUFEKHBIZWFkLT5wX21lbV9jYWNoZSk7Cj4gCj4gIMKg wqDCoMKgwqDCoMKgIGZvcihjb3VudD0wOyBjb3VudDxlbGVtZW50czsgY291bnQrKykgewo+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBrcHJvYmVfbWVtX2NhY2hlICpuZXcgPSBremFs bG9jKHNpemVvZihzdHJ1Y3QgCj4ga3Byb2JlX21lbV9jYWNoZSksIEdGUF9LRVJORUwpOwo+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmKE5VTEwgPT0gbmV3KSB7Cj4gIMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIoImVycm9yOiBremFsbG9jIGlzc3VlIik7Cj4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPiAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9Cj4gCj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogYWxsb2NhdGUgbWVt b3J5IGZvciBvbmUgcGFnZSAqLwo+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ldy0+cF9wYWdl ID0gdm1hbGxvYyhzaXplKTsKPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZihOVUxMID09IG5l dy0+cF9wYWdlKSB7Cj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIoImVy cm9yOiB2bWFsbG9jIGlzc3VlIik7Cj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVOT01FTTsKPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4gIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZWxzZSB7Cj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9l cnIoIkxpc3QgRWxlbWVudCAlZCBhZGRlZMKgIFNpemU6ICV1wqAgYWRkcjogJXAgXG4iLCAKPiBj b3VudCwgc2l6ZSwgbmV3LT5wX3BhZ2UpOwo+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiAK PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXctPnNpemXCoMKgwqDCoCA9IHNpemU7Cj4gIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV3LT5kaXJ0ecKgwqDCoMKgwqAgPSAwOwo+IAo+ICDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGxpc3RfYWRkX3RhaWwoJm5ldy0+bGlzdF9lbGVtZW50LCAmbG9j YWxfaGVhZCk7Cj4gIMKgwqDCoMKgwqDCoMKgIH0KPiAKPiAgwqDCoMKgwqDCoMKgwqAgcEhlYWQt PnBfbWVtX2NhY2hlID0gJmxvY2FsX2hlYWQ7Cj4gIMKgwqDCoMKgfQo+ICDCoMKgwqDCoHJldHVy biByYzsKPiB9Cj4gCj4gcmlnaHQgYWZ0ZXIgdGhhdCwgc3RpbGwgaW4gdGhlIF9faW5pdCBmdW5j dGlvbiBJIHRyYXZlcnNlIHRyb3VnaCB0aGlzIAo+IGxpbmtlZCBsaXN0LCBqdXN0IHRvIHNlZSBp ZiBpdHMgd29yay4KPiAKPiBpZihwSGVhZC0+cF9tZW1fY2FjaGUgIT0gTlVMTCkKPiAgwqDCoMKg wqB7Cj4gIMKgwqDCoMKgwqDCoMKgIHByX2Vycigid2l0aGluIGxvb3AgJXDCoCAlcFxuIiwgcEhl YWQsIHBIZWFkLT5wX21lbV9jYWNoZSk7Cj4gIMKgwqDCoMKgwqDCoMKgIGxpc3RfZm9yX2VhY2go bG9jYWxfaGVhZCwgcEhlYWQtPnBfbWVtX2NhY2hlKSB7Cj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgbG9jYWxfcGFnZSA9IGxpc3RfZW50cnkobG9jYWxfaGVhZCwgc3RydWN0IAo+IGtwcm9iZV9t ZW1fY2FjaGUsIGxpc3RfZWxlbWVudCk7Cj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYobG9j YWxfcGFnZS0+c2l6ZSkKPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2Vycigi YWRkcmVzczogJXUgXG4iLCBsb2NhbF9wYWdlLT5zaXplICk7Cj4gIMKgwqDCoMKgwqDCoMKgIH0K PiAgwqDCoMKgwqB9Cj4gCj4gCj4gQW5kIGhlcmUgaXQgd29ya3MuCj4gCj4gVGhlIHByb2JsZW0g bm93IGlzIHRoYXQgdGhpcyBpcyBhIGtwcm9iZSBrZXJuZWwgbW9kdWxlIGFuZCBJIGRlZmluZWQg YSAKPiBrcHJvYmUgZnVuY3Rpb24gYXMgcHJlX2hhbmRsZXIgZnVuY3Rpb24gY2FsbGVkIHN1Ym1p dF9iaW9fcHJlIHdoaWNoIGlzIAo+IGV2b2tlZCB3aGVuZXZlciB0aGUgYmxvY2sgbGF5ZXIgZnVu Y3Rpb24gc3VibWl0X2JpbyBpcyBjYWxsZWQgYnkgdGhlIAo+IGtlcm5lbC4gV2l0aGluIHRoYXQg ZnVuY3Rpb24gaG93ZXZlciB0aGUgYWNjZXNzIHRvIHRoYXQgbGlua2VkIGxpc3QgZmFpbGVkCj4g Cj4gaW50IHN1Ym1pdF9iaW9fcHJlKHN0cnVjdCBrcHJvYmUgKnBfc3VibWl0X2Jpbywgc3RydWN0 IHB0X3JlZ3MgKnJlZ3MpCj4gewo+ICDCoMKgwqDCoGludCByY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCA9IDA7Cj4gIMKgwqDCoMKgc3RydWN0IGJpbyAqYmlvwqDCoMKgwqDCoMKgwqDC oCA9IE5VTEw7Cj4gIMKgwqDCoMKgc3RhdGljIHVuc2lnbmVkIGludMKgIGxlbsKgwqDCoMKgwqDC oMKgID0gMDsKPiAgwqDCoMKgwqBzdGF0aWMgdW5zaWduZWQgaW50IGNvdW50ZXI7Cj4gIMKgwqDC oMKgc3RydWN0IGtwcm9iZV9tZW1fY2FjaGXCoCAqdG1wwqAgPSBOVUxMOwo+ICDCoMKgwqDCoHN0 cnVjdCBrcHJvYmVfbWVtX2NhY2hlICpsb2NhbF9wYWdlID0gTlVMTDsKPiAgwqDCoMKgwqBzdHJ1 Y3QgbGlzdF9oZWFkICpsb2NhbF9oZWFkID0gTlVMTDsKPiAKPiAgwqDCoMKgwqBiaW8gPSAoc3Ry dWN0IGJpbyopIHJlZ3NfZ2V0X2tlcm5lbF9hcmd1bWVudChyZWdzLCAwKTsKPiAKPiAgwqDCoMKg wqBpZihwSGVhZCAhPSBOVUxMKQo+ICDCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIiMjIyMgcEhlYWQg aXMgaW5pdGlhbGl6ZWQgJXAgIyMjIyNcbiIsIHBIZWFkKTsKPiAKPiAgwqDCoMKgwqBpZihwSGVh ZC0+cF9tZW1fY2FjaGUgIT0gTlVMTCkKPiAgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCIjIyMjIHBI ZWFkLT5wX21lbV9jYWNoZSBpcyBpbml0aWFsaXplZCAlcCAjIyMjIyMjXG4iLCAKPiBwSGVhZC0+ cF9tZW1fY2FjaGUpOwo+IAo+ICDCoMKgwqDCoGlmKHBIZWFkLT5wX21lbV9jYWNoZSAhPSBOVUxM ICYmIGNvdW50ZXIgPT0gMCkKPiAgwqDCoMKgwqB7Cj4gIMKgwqDCoMKgwqDCoMKgIHNwaW5fbG9j aygmc2wpOwo+ICDCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIndpdGhpbiBsb29wIHN1Ym1pdF9iaW9f cHJlIFxuIik7Cj4gIMKgwqDCoMKgwqDCoMKgIGxpc3RfZm9yX2VhY2gobG9jYWxfaGVhZCwgcEhl YWQtPnBfbWVtX2NhY2hlKSB7Cj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbG9jYWxfcGFnZSA9 IGxpc3RfZW50cnkobG9jYWxfaGVhZCwgc3RydWN0IAo+IGtwcm9iZV9tZW1fY2FjaGUsIGxpc3Rf ZWxlbWVudCk7Cj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYobG9jYWxfcGFnZS0+c2l6ZSkK PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiYWRkcmVzcyBiaW86ICV1 IFxuIiwgbG9jYWxfcGFnZS0+c2l6ZSApOwo+ICDCoMKgwqDCoMKgwqDCoCB9Cj4gIMKgwqDCoMKg wqDCoMKgIHNwaW5fdW5sb2NrKCZzbCk7Cj4gIMKgwqDCoMKgwqDCoMKgIGNvdW50ZXIrKzsKPiAg wqDCoMKgwqB9Cj4gCj4gQXMgaXQgc2VlbXMgaXMgdGhlIGhlYWQgcG9pbnRlciB2YWxpZCBhbmQg aGFzIHRoZSBzYW1lIGFkZHJlc3MgYXMgaW4gdGhlIAo+IGluaXQgZnVuY3Rpb24uIEFsc28gdGhl IGhlYWQgcG9pbnRlciB0byB0aGUgbGlua2VkIGxpc3QgaXMgYSB2YWxpZCBvbmUuIAo+IEJ1dCB0 cmF2ZXJzaW5nIHRocm91Z2ggdGhlIGxpbmtlZCBsaXN0IGlzIG5vdCBwb3NzaWJsZSBhbnkgbW9y ZS4gQXMgeW91IAo+IGNhbiBzZWUgSSBhZGRlZCBhIHNwaW5fbG9jayB0byB0aGF0IGtwcm9iZSBm dW5jdGlvbiwgYWxiZWl0IEkgb25seSByZWFkIAo+IGZyb20gdGhlIGxpbmtlZCBsaXN0LiBUaGlz IGZ1bmN0aW9uIGRvZXMgc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50IAo+IG5vcm1hbGx5 IGFueXdheS4KPiAKPiBXaGVuIEkgbG9hZCB0aGlzIG1vZHVsZSwgdGhlIGluaXRpYWxpc2F0aW9u IG9mIHRoZSBsaW5rZWQgbGlzdCB3b3JrcywgCj4gYWxzbyB0aGUgZm9sbG93aW5nIHdhbGsgdGhy b3VnaCB0aGUgbGlzdCwgYnV0IHdpdGhpbiB0aGUga3Byb2JlIGZ1bmN0aW9uIAo+IHNvbWV0aW1l cyBJIGNhbiBzZWUgdGhlIGZpcnN0IGFuZCBzZWNvbmQgcHJfZXJyLiBCdXQgYWZ0ZXIgdGhhdCB0 aGUgCj4ga2VybmVsIGJyZWFrczoKPiAKPiBbwqAgMTkxLjQ2MDE5Nl0gVW5hYmxlIHRvIGhhbmRs ZSBrZXJuZWwgcGFnaW5nIHJlcXVlc3QgYXQgdmlydHVhbCBhZGRyZXNzIAo+IDAwMDMyM2JmYThj MTdiZjUKPiAKPiBbwqAgMTkxLjY2OTU3MV0gQ2FsbCB0cmFjZToKPiBbwqAgMTkxLjY3MjAyMV3C oCBzdWJtaXRfYmlvX3ByZSsweGNjLzB4MTUwCj4gW8KgIDE5MS42NzY2NDFdwqAga3Byb2JlX2Jy ZWFrcG9pbnRfaGFuZGxlcisweDEwMC8weDE5MAo+IFvCoCAxOTEuNjgxNDQ1XcKgIGNhbGxfYnJl YWtfaG9vaysweDY4LzB4ODAKPiBbwqAgMTkxLjY4NTIwMV3CoCBicmtfaGFuZGxlcisweDFjLzB4 NjAKPiAKPiBTbyBjYW4gYW55Ym9keSB0ZWxsIG1lLCB3aGF0IGlzIHRoZSByZWFzb24gdGhhdCB0 aGUgbGlua2VkIGxpc3QgZG9lc24ndCAKPiB3b3JrIHdpdGhpbiB0aGUga3Byb2JlPwo+IAo+IFRo YW5rIHlvdSBpbiBhZHZhbmNlCj4gCj4gQlIgQ2hyaXN0aWFuCj4gCj4gCj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBLZXJuZWxuZXdiaWVzIG1haWxp bmcgbGlzdAo+IEtlcm5lbG5ld2JpZXNAa2VybmVsbmV3Ymllcy5vcmcKPiBodHRwczovL2xpc3Rz Lmtlcm5lbG5ld2JpZXMub3JnL21haWxtYW4vbGlzdGluZm8va2VybmVsbmV3Ymllcwo+IAoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCktlcm5lbG5ld2Jp ZXMgbWFpbGluZyBsaXN0Cktlcm5lbG5ld2JpZXNAa2VybmVsbmV3Ymllcy5vcmcKaHR0cHM6Ly9s aXN0cy5rZXJuZWxuZXdiaWVzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tlcm5lbG5ld2JpZXMK