From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from forward501a.mail.yandex.net (forward501a.mail.yandex.net [IPv6:2a02:6b8:c0e:500:1:45:d181:d501]) by sourceware.org (Postfix) with ESMTPS id 4728E3858D20 for ; Thu, 13 Apr 2023 18:59:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4728E3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=yandex.ru Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yandex.ru Received: from mail-nwsmtp-smtp-production-main-84.vla.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-84.vla.yp-c.yandex.net [IPv6:2a02:6b8:c0f:26a7:0:640:a2d5:0]) by forward501a.mail.yandex.net (Yandex) with ESMTP id 7ADF95E50E; Thu, 13 Apr 2023 21:59:06 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-84.vla.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id 3xctVc6DUqM0-XLi90I6L; Thu, 13 Apr 2023 21:59:05 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1681412346; bh=DB2BVBbCJ4/5s8PZM5FF08jMYYsIHrAuY2LQeKGXxU0=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=lTK4cB9kz53mZP9g6QcCUvoNUen9Hiw13N+tTHswc4+/bAfX9jhWQ8IN0dPYcbZiR 0b4xquGoJzTGPS9HcMK0MnFj0KHc21vPGHZnfujE7aITofmSXhbrI5n/tuJK1jnu+R 6eNaic0+fx9En5lEGH1KkK1FHexdyjRNwlLnvMkA= Authentication-Results: mail-nwsmtp-smtp-production-main-84.vla.yp-c.yandex.net; dkim=pass header.i=@yandex.ru Content-Type: multipart/mixed; boundary="------------7u9UBIM7HDCGzzMHsrY98UO1" Message-ID: <59862084-0fe3-7642-d3b3-01bb87eef7db@yandex.ru> Date: Thu, 13 Apr 2023 23:59:03 +0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [PATCH v9 0/13] implement dlmem() function Content-Language: en-US To: Adhemerval Zanella Netto , Szabolcs Nagy , Rich Felker Cc: libc-alpha@sourceware.org, janderson@rice.edu, Carlos O'Donell References: <298b04a6-3055-b89b-59c1-4cfbe955848e@yandex.ru> <81749d04-8cdb-de0b-b88e-24347ed535ba@yandex.ru> <729710b5-6dae-d5f2-99ee-6923be5e627d@yandex.ru> <20230412182043.GI3298@brightrain.aerifal.cx> <08d9ca95-112c-d85e-8e82-7a595ef4d051@yandex.ru> <78b5b5dc-5657-4bf8-24c6-6c00afb1cc40@yandex.ru> <83ee7b42-7a50-e8d1-e9ca-58ec2a12a995@linaro.org> From: stsp In-Reply-To: <83ee7b42-7a50-e8d1-e9ca-58ec2a12a995@linaro.org> X-Spam-Status: No, score=-3.7 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------7u9UBIM7HDCGzzMHsrY98UO1 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Adhemerval, 13.04.2023 23:09, Adhemerval Zanella Netto пишет: > It is being tiring to work with your proposal because Rich already > brought the inherent issue of exposing the loader internals for ELF > objects [1] about 10 years ago, My proposal did not exist 10 years ago. Maybe we all do not properly document our proposals or an objections. So let me ask you to please refer to a particular comment rather than to some 10 years ago thread, and then carefully document how can that be the problem in my patches. I think its a fair ask, e.g. Szabolcs asked me for a more precise spec - I write. We progress. Why can't you write the objections in a detalization level that is enough to make a progress? I admit you probably couldn't do that initially, because I poorly documented my API. But when Carlos asked for a more detailed spec, I did. Now you can express your objections in a detailed manner, let me even attach the prev API draft to help you doing that. Of course this draft will be simplified a lot, but for such a "generic" objections please use its current form. > Szabolcs and myself are constantly > trying to say that is not good libc interface (regardless it solved > your specific problem), And regardless that it was never even discussed. Part of the failure is on me: I wrote an API draft only when Carlos asked, I should probably do that before anything else. Sorry, I am a novice. But its written now for quite long, so why nothing changes? > and even Jonathan tried to explore different > alternatives. I am thankful to Jonathon for doing that. Unfortunately I am unsatisfied with the proposal of intercepting glibc's internal mmap()s on a syscall level, and binding a non-trivial (I mean, very non-trivial!) logic on them. But I am thankful he proved this is even possible, as I was confident in an otherwise. > The main problem is no one from glibc is comfortable, including myself, > to maintain and work with this interface. Which no one, besides Szabolcs, have actually even looked into? It is attached to this e-mail. Why not to make the complains direct and precise? > I don't want to maintain > another interface with a lot of corner cases. I have expressed the plans at removing all the corner cases that Szabolcs pointed to. If you point more, I'll definitely take an actions. Off-loading the biggest part to RTLD_NORELOC will reduce the proposal considerably, avoid the callback and most of other complexity, so why such a prejudice? Why can't we just discuss, amend, see what happens? > Also the way approaching the glibc community, by not listening to > criticism and ignoring multiple remarks; I wonder if Szabolcs also thinks I ignore his remarks. If you think I ignore yours, then either that was a misunderstanding on my part, or they were not referring to my API proposal (which is attached), or something else from that line, but definitely not my reluctance to change the proposal. I want to address every possible problem raised, but unfortunately so far I only see the problems raised by Szabolcs. He details them well and targets over my API proposals. Its immediately obvious what does he mean, and after his last review I spent a full month (!) just thinking how to get rid of a call-back, and finally got to this RTLD_NORELOC proposal as a result. > saying that you have addresses > the comments without any ack; That's a bit strange. Yes, I do some actions based on a comments I get, then post the new RFC and write in a log that I addressed this and that. If there is a further complain, i can re-do what I thought to be addressed, and replace it with something I believe now addresses the comment. Its an iterative process, misunderstanding happens, etc. Of course if the policy is to not write "addressed this and that comment" before getting an ACK, then I will no longer do that, and write "tried to address this and that, hope its now better". > or flooding the maillist with multiple > version without addressing previous feedback is really, and I want to > stress the really here, tiring. Ok, should I post the next drafts to the bugzilla then, if flooding ML is bad? Its not a problem, really! You tell me what to do, I do. Why such a policy things are even becoming a problems? I didn't mean to offend anyone by flooding the ML, I'll post to bugzilla, and I don't want you to be offended on me just because of that. :) --------------7u9UBIM7HDCGzzMHsrY98UO1 Content-Type: text/x-patch; charset=UTF-8; name="0000-cover-letter.patch" Content-Disposition: attachment; filename="0000-cover-letter.patch" Content-Transfer-Encoding: base64 RnJvbSA0NmU1MDk1ZWJmZTYzYmU0ZGNkODEzYzQyMzdkNmE0OTFhM2Y5NzY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdGFzIFNlcmdlZXYgPHN0c3AyQHlhbmRleC5ydT4K RGF0ZTogTW9uLCAxMyBGZWIgMjAyMyAxODoxNTozNCArMDUwMApTdWJqZWN0OiBbUEFUQ0gg djEwIDAvMTJdIGltcGxlbWVudCBkbG1lbSgpIGZ1bmN0aW9uCgpUaGlzIHBhdGNoLXNldCBp bXBsZW1lbnRzIHRoZSBkbG1lbSgpIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRvIGxvYWQKdGhl IHNvbGliIGZyb20gdGhlIGZpbGUtbWFwcGVkIG9yIGFub255bW91c2x5LXNoYXJlZCBtZW1v cnkgYnVmZmVyLgpHZW5lcmljIG1lbW9yeSBidWZmZXIgaXMgYWxzbyBzdXBwb3J0ZWQgd2l0 aCBETE1FTV9HRU5CVUZfU1JDIGZsYWcsCmJ1dCBpdCBzaG91bGQgbm90IGJlIHByZWZlcnJl ZC4gUHJpdmF0ZSBhbm9ueW1vdXMgbWFwcGluZyB1c2VkIGFzCmEgc291cmNlIGJ1ZmZlciwg YWxzbyBuZWVkcyB0aGlzIGZsYWcgdG8gYmUgc2V0LgoKZGxtZW0oKSBzdWl0cyBhcyBhIGJ1 aWxkaW5nIGJsb2NrIGZvciBpbXBsZW1lbnRpbmcgdGhlIGZ1bmN0aW9ucyBsaWtlCmZkbG9w ZW4oKSBhbmQgZGxvcGVuX3dpdGhfb2Zmc2V0KCksIHdoaWNoIGFyZSBkZW1vLWltcGxlbWVu dGVkIGluIGEKdGVzdC1jYXNlIGNhbGxlZCB0c3QtZGxtZW0tZXh0Zm5zLgpUaGUgcmVhc29u cyB3aHkgaXQgc3VpdHMgd2VsbCBmb3Igc3VjaCBmaWxlLWJhc2VkIGxvYWRlcnMsIGFyZSBi ZWxvdzoKMS4gSXQgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGZpbGUgYXNzb2NpYXRpb24gb2Yg dGhlIG9yaWdpbmFsIHNvbGliCiAgIGJ1ZmZlciBpZiBpdCB3YXMgbW1hcCdlZCBmcm9tIGEg ZmlsZSAodW5sZXNzIERMTUVNX0dFTkJVRl9TUkMKICAgb2YgRExNRU1fRE9OVFJFUExBQ0Ug ZmxhZyBpcyBzZXQpLgoyLiBJdCBhbGxvd3MgdG8gcHJvdmlkZSBhIHNvbGliIG5hbWUsIHdo aWNoIGNhbiBiZSB0aGUgZmlsZSBuYW1lLgoKV2l0aCB0aGUgYWJvdmUgcHJvcGVydGllcywg dGhlICJkaXJlY3QiIGltcGxlbWVudGF0aW9uIG9mIHRoZXNlIGZ1bmN0aW9ucwpnaXZlcyBu byBhZHZhbnRhZ2VzIG92ZXIgaW1wbGVtZW50aW5nIHRoZW0gd2l0aCBkbG1lbSgpLgoKSW4g YWRkaXRpb24sIGRsbWVtKCkgaGFzIGxvdHMgb2Ygb3B0aW9uYWwgZnVuY3Rpb25hbGl0eSBm b3IgdGhlIGZpbmUtZ3JhaW5lZApjb250cm9sIG92ZXIgdGhlIGxvYWRpbmcgcHJvY2Vzcy4g SXQgYWxsb3dzIHlvdSB0byBzZXQgbnNpZCAobGlrZSBkbG1vcGVuKCkpLApzcGVjaWZ5IHRo ZSBzb2xpYiByZWxvY2F0aW9uIGFkZHJlc3MgYW5kIGV2ZW4gcmVsb2NhdGUgdGhlIHNvbGli IGludG8KdGhlIHVzZXIncyBidWZmZXIuIFRoYXQgImFkdmFuY2VkIiBmdW5jdGlvbmFsaXR5 IGlzIG9ubHkgbmVlZGVkIGZvciB0aGUKdmVyeSBzcGVjaWZpYyB1c2UtY2FzZXMsIGxpa2Ug dmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdoZXJlIHRoZSByZWxvY2F0aW9uCmFkZHJlc3Mg bWF5IGhhdmUgYSBzcGVjaWFsIGNvbnN0cmFpbnRzLCBlZyBNQVBfMzJCSVQuIEluIGFsbCBv dGhlciBjYXNlcwppdCBpcyBhZHZpc2VkIHRvIHNldCB0aGUgImRsbV9hcmdzIiBwb2ludGVy IG9mIGRsbWVtKCkgY2FsbCB0byBOVUxMLCBidXQKc2VlICJMaW1pdGF0aW9ucyIgYmVsb3cg dG8gZmluZCBvdXQgd2hlbiBpdHMgbm90IHRoZSBjYXNlLgoKVGhlIEFQSSBsb29rcyBhcyBi ZWxvdzoKCi8qIENhbGxiYWNrIGZvciBkbG1lbS4gKi8KdHlwZWRlZiB2b2lkICoKKGRsbWVt X3ByZW1hcF90KSAodm9pZCAqbWFwcHJlZiwgc2l6ZV90IG1hcGxlbmd0aCwgc2l6ZV90IG1h cGFsaWduLAoJICAgICAgICAgIHZvaWQgKmNvb2tpZSk7CgovKiBEbyBub3QgcmVwbGFjZSBt YXBwaW5nIGNyZWF0ZWQgYnkgcHJlbWFwIGNhbGxiYWNrLgogICBkbG1lbSgpIHdpbGwgdGhl biB1c2UgbWVtY3B5KCkuICovCiNkZWZpbmUgRExNRU1fRE9OVFJFUExBQ0UgMQovKiBUcmVh dCBzb3VyY2UgbWVtb3J5IGJ1ZmZlciBhcyBhIGdlbmVyaWMgdW5hbGlnbmVkIGJ1ZmZlciwg cmF0aGVyCiAgIHRoYW4gYSBmaWxlLWJhY2tlZCBvciBhbm9ueW1vdXNseS1zaGFyZWQgbWFw cGluZy4gQW5vbnltb3VzIHByaXZhdGUKICAgbWFwcGluZyBhbHNvIG5lZWRzIHRoaXMgZmxh ZyB0byBiZSBzZXQuICovCiNkZWZpbmUgRExNRU1fR0VOQlVGX1NSQyAyCgpzdHJ1Y3QgZGxt ZW1fYXJncyB7CiAgLyogT3B0aW9uYWwgbmFtZSB0byBhc3NvY2lhdGUgd2l0aCB0aGUgbG9h ZGVkIG9iamVjdC4gKi8KICBjb25zdCBjaGFyICpzb25hbWU7CiAgLyogTmFtZXNwYWNlIHdo ZXJlIHRvIGxvYWQgdGhlIG9iamVjdC4gKi8KICBMbWlkX3QgbnNpZDsKICAvKiBkbG1lbS1z cGVjaWZpYyBmbGFncy4gKi8KICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgLyogT3B0aW9uYWwg cHJlbWFwIGNhbGxiYWNrLiAqLwogIGRsbWVtX3ByZW1hcF90ICpwcmVtYXA7CiAgLyogT3B0 aW9uYWwgYXJndW1lbnQgZm9yIHByZW1hcCBjYWxsYmFjay4gKi8KICB2b2lkICpjb29raWU7 Cn07CgovKiBMaWtlIGBkbG1vcGVuJywgYnV0IGxvYWRzIHNoYXJlZCBvYmplY3QgZnJvbSBt ZW1vcnkgYnVmZmVyLiAgKi8KZXh0ZXJuIHZvaWQgKmRsbWVtIChjb25zdCB1bnNpZ25lZCBj aGFyICpidWZmZXIsIHNpemVfdCBzaXplLCBpbnQgbW9kZSwKCQkgICAgc3RydWN0IGRsbWVt X2FyZ3MgKmRsbV9hcmdzKTsKCkFkdmFuY2VkIGZ1bmN0aW9uYWxpdHk6CgpJbiBtb3N0IGNh c2VzIGRsbV9hcmdzIHNob3VsZCBqdXN0IGJlIHNldCB0byBOVUxMLiBJdCBwcm92aWRlcyB0 aGUKYWR2YW5jZWQgZnVuY3Rpb25hbGl0eSwgbW9zdCBvZiB3aGljaCBpcyBvYnZpb3VzIChz b25hbWUsIG5zaWQpLgpUaGUgb3B0aW9uYWwgcHJlbWFwIGNhbGxiYWNrIGFsbG93cyB0byBz ZXQgdGhlIHJlbG9jYXRpb24gYWRkcmVzcyBmb3IKdGhlIHNvbGliIGJ5IG1hcHBpbmcgdGhl IGRlc3RpbmF0aW9uIHNwYWNlIGFuZCByZXR1cm5pbmcgaXRzIGFkZHJlc3MuCk1vcmUgc28s IGlmIERMTUVNX0RPTlRSRVBMQUNFIGZsYWcgaXMgdXNlZCwgdGhlbiB0aGUgbWFwcGluZwpl c3RhYmxpc2hlZCBieSB0aGUgcHJlbWFwIGNhbGxiYWNrLCB3aWxsIG5vdCBiZSByZXBsYWNl ZCB3aXRoIHRoZQpmaWxlLWJhY2tlZCBtYXBwaW5nLiBJbiB0aGF0IGNhc2UgZGxtZW0oKSBo YXZlIHRvIHVzZSBtZW1jcHkoKSwgd2hpY2gKaXMgbGlrZWx5IGV2ZW4gZmFzdGVyIHRoYW4g bW1hcHMoKSBidXQgZG9lc24ndCBlbmQgdXAgd2l0aCB0aGUgcHJvcGVyCi9wcm9jL3NlbGYv bWFwX2ZpbGVzIG9yIC9wcm9jL3NlbGYvbWFwcyBlbnRyaWVzLiBTbyBmb3IgZXhhbXBsZSBp ZiB0aGUKcHJlbWFwIGNhbGxiYWNrIHVzZXMgTUFQX1NIQVJFRCwgdGhlbiB3aXRoIHRoZSB1 c2Ugb2YgdGhlIERMTUVNX0RPTlRSRVBMQUNFCmZsYWcgeW91IGNhbiBnZXQgeW91ciBzb2xp YiByZWxvY2F0ZWQgaW50byBhIHNoYXJlZCBtZW1vcnkgYnVmZmVyLgpOb3RlIHRoYXQgdGhl IHByZW1hcCBjYWxsYmFjayBtYXkgYmUgY2FsbGVkIHVuZGVyIGdsaWJjIGxvY2tzLCBzbyBp dApzaG91bGQgcmVzdHJpY3QgaXRzZWxmIHRvIHRoZSBzeXNjYWxsIGZ1bmN0aW9uYWxpdHku IENlcnRhaW5seSBubyBsaWJkbApmdW5jdGlvbnMgY2FuIGJlIHVzZWQuIG1tYXAoKSwgc2ht X29wZW4oKSwgb3BlbigpLCBmdHJ1bmNhdGUoKSwKbWVtZmRfY3JlYXRlKCkgc2hvdWxkIGJl IHRoZSBzdWZmaWNpZW50IHNldCBvZiBmdW5jdGlvbnMgdGhhdCBtYXkKZXZlciBiZSBpbiB1 c2UgaW4gYSBwcmVtYXAgY2FsbGJhY2ssIGJ1dCBpbiBtb3N0IGNhc2VzIHRoZSBjYWxsYmFj awpzaG91bGQganVzdCBiZSBkaXNhYmxlZC4KCgpMaW1pdGF0aW9uczoKCi0gSWYgeW91IG5l ZWQgdG8gbG9hZCB0aGUgc29saWIgZnJvbSBhbm9ueW1vdXNseS1tYXBwZWQgYnVmZmVyLCB5 b3UgbmVlZAogIHRvIHVzZSBNQVBfU0hBUkVEfE1BUF9BTk9OWU1PVVMgbW1hcCBmbGFncyB3 aGVuIGNyZWF0aW5nIHRoYXQgYnVmZmVyLgogIElmIGl0IGlzIG5vdCBwb3NzaWJsZSBpbiB5 b3VyIHVzZS1jYXNlIGFuZCB0aGUgYnVmZmVyIHdhcyBjcmVhdGVkCiAgd2l0aCBNQVBfUFJJ VkFURXxNQVBfQU5PTllNT1VTIGZsYWdzLCB0aGVuIERMTUVNX0dFTkJVRl9TUkMgZmxhZwog IG5lZWRzIHRvIGJlIHNldCB3aGVuIGNhbGxpbmcgZGxtZW0oKS4KICBGYWlsdXJlIHRvIGZv bGxvdyB0aGF0IGd1aWRlLWxpbmUgcmVzdWx0cyBpbiBhbiBVQiAobG9hZGVyIHdpbGwgbm90 CiAgYmUgYWJsZSB0byBwcm9wZXJseSBsYXkgb3V0IGFuIGVsZiBzZWdtZW50cykuCgotIElm IHlvdSB1c2UgYSBwcml2YXRlIGZpbGUtYmFja2VkIG1hcHBpbmcsIHRoZW4gaXQgc2hvdWxk bid0IGJlCiAgbW9kaWZpZWQgYnkgaGFuZHMgYmVmb3JlIHBhc3NpbmcgdG8gZGxtZW0oKS4g SS5lLiB5b3UgY2FuJ3QgYXBwbHkKICBtcHJvdGVjdCgpIHRvIGl0IHRvIGNoYW5nZSBwcm90 ZWN0aW9uIGJpdHMsIGFuZCB5b3UgY2FuJ3QgYXBwbHkKICBtZW1tb3ZlKCkgdG8gaXQgdG8g bW92ZSB0aGUgc29saWIgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyLAogIGFuZCBz byBvbi4gZGxtZW0oKSBjYW4gb25seSB3b3JrIHdpdGggInZpcmdpbiIgcHJpdmF0ZSBmaWxl LWJhY2tlZAogIG1hcHBpbmdzLiBZb3UgY2FuIHNldCBETE1FTV9HRU5CVUZfU1JDIGZsYWcg YXMgYSB3b3JrLWFyb3VuZCBpZgogIHRoZSBtYXBwaW5nIGlzIGFscmVhZHkgY29ycnVwdGVk LgogIEZhaWx1cmUgdG8gZm9sbG93IHRoYXQgZ3VpZGUtbGluZSByZXN1bHRzIGluIGFuIFVC IChsb2FkZXIgd2lsbCBub3QKICBiZSBhYmxlIHRvIHByb3Blcmx5IGxheSBvdXQgYW4gZWxm IHNlZ21lbnRzKS4KCi0gVGhlIG5lZWQgb2YgbWFwcGluZyB0aGUgZW50aXJlIHNvbGliICh3 aXRoIGRlYnVnIGluZm8gZXRjKSBtYXkKICByZXByZXNlbnQgYSBwcm9ibGVtIG9uIGEgMzJi aXQgYXJjaGl0ZWN0dXJlcyBpZiB0aGUgc29saWIgaGFzIGFuCiAgYWJzdXJkbHkgbGFyZ2Ug c2l6ZSwgbGlrZSAzR2Igb3IgbW9yZS4KCi0gRm9yIHRoZSB2ZXJ5IHNhbWUgcmVhc29uIHRo ZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgQW5kcm9pZCdzCiAgZGxvcGVuX3dpdGhf b2Zmc2V0KCkgaXMgZGlmZmljdWx0LCBhcyBpbiB0aGF0IGNhc2UgeW91J2QgbmVlZCB0bwog IG1hcCB0aGUgZW50aXJlIGZpbGUgY29udGFpbmVyLCBzdGFydGluZyBmcm9tIHRoZSBuZWVk ZWQgb2Zmc2V0LgogIFRoZSBkZW1vIGltcGxlbWVudGF0aW9uIGluIHRoaXMgcGF0Y2ggaW1w bGVtZW50cyBkbG9wZW5fd2l0aF9vZmZzZXQ0KCkKICB0aGF0IGhhcyBhbiBhZGRpdGlvbmFs ICJsZW5ndGgiIGFyZ3VtZW50IHdoZXJlIHRoZSBzb2xpYiBsZW5ndGgKICBzaG91bGQgYmUg cGFzc2VkLgoKLSBBcyBsaW51eCBkb2Vzbid0IGltcGxlbWVudCBNQVBfVU5BTElHTkVEIGFz IHNvbWUgdW5peGVzIGRpZCwgdGhlCiAgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIGRs b3Blbl93aXRoX29mZnNldDQoKSBpcyBkaWZmaWN1bHQKICBpZiB0aGUgb2Zmc2V0IGlzIG5v dCBwYWdlLWFsaWduZWQuIERlbW8gaW4gdGhpcyBleGFtcGxlIGZpeGVzIHRoZQogIGFsaWdu bWVudCBieSBoYW5kcywgdXNpbmcgdGhlIE1BUF9TSEFSRUR8TUFQX0FOT05ZTU9VUyBpbnRl cm1lZGlhdGUKICBidWZmZXIuIFRoZSBhbGlnbm1lbnQgY2Fubm90IGJlIGZpeGVkIGluIGFu IGV4aXN0aW5nIGJ1ZmZlciB3aXRoCiAgbWVtbW92ZSgpLCBhcyB0aGF0IHdpbGwgbWFrZSB0 aGUgZmlsZS1iYWNrZWQgbWFwcGluZyB1bmFjY2VwdGFibGUKICBmb3IgdGhlIHVzZSB3aXRo IGRsbWVtKCkuIEkgc3VzcGVjdCB0aGF0IGdvb2dsZSdzIGRsb3Blbl93aXRoX29mZnNldCgp CiAgaGFzIHNpbWlsYXIgbGltaXRhdGlvbiBiZWNhdXNlIG1tYXAoKSB3aXRoIHVuYWxpZ25l ZCBvZmZzZXQgaXMKICBub3QgcG9zc2libGUgaW4gYW55IGltcGxlbWVudGF0aW9uLCBiZSBp dCBhICJkaXJlY3QiIGltcGxlbWVudGF0aW9uCiAgb3IgIm92ZXItZGxtZW0iIGltcGxlbWVu dGF0aW9uLgoKCkNoYW5nZXMgaW4gdjEwOgotIGFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMg b2YgQWRoZW1lcnZhbCBaYW5lbGxhCi0gbW92ZWQgcmVmYWN0b3IgcGF0Y2hlcyB0byB0aGUg YmVnaW5uaW5nIG9mIHRoZSBzZXJpZSB0byBzaW1wbGlmeSByZXZpZXcKLSBmaXhlZCBhIGZl dyBidWdzIGluIGFuIGVsZiByZWxvY2F0aW9uIG1hY2hpbmVyeSBhZnRlciB2YXJpb3VzIGhv dCBkaXNjdXNzaW9ucwotIGFkZGVkIGEgbmV3IHRlc3QgdHN0LWRsbWVtLWV4dGZucyB0aGF0 IGRlbW8taW1wbGVtZW50cyBkbG9wZW5fd2l0aF9vZmZzZXQ0KCkKICBhbmQgZmRsb3Blbigp Ci0gc3R1ZGllZCBhbmQgZG9jdW1lbnRlZCBhbGwgbGltaXRhdGlvbnMsIG1vc3QgaW1wb3J0 YW50bHkgdGhvc2UgbGVhZGluZyB0byBVQgotIGJldHRlciBkb2N1bWVudGVkIHByZW1hcCBj YWxsYmFjayBhcyBzdWdnZXN0ZWQgYnkgU3phYm9sY3MgTmFneQotIGFkZGVkIERMTUVNX0dF TkJVRl9TUkMgZmxhZyBmb3IgdW5hbGlnbmVkIGdlbmVyaWMgbWVtb3J5IGJ1ZmZlcnMKCkNo YW5nZXMgaW4gdjk6Ci0gdXNlICJ6ZXJvLWNvcHkiIG1hY2hpbmVyeSBpbnN0ZWFkIG9mIG1l bWNweSgpLiBJdCB3b3JrcyBvbiBsaW51eCA1LjEzCiAgYW5kIG5ld2VyLCBmYWxsaW5nIGJh Y2sgdG8gbWVtY3B5KCkgb3RoZXJ3aXNlLiBTdWdnZXN0ZWQgYnkgRmxvcmlhbiBXZWltZXIu Ci0gaW1wbGVtZW50IGZkbG9wZW4oKSB1c2luZyB0aGUgYWJvdmUgZnVuY3Rpb25hbGl0eS4g SXQgaXMgaW4gYSBuZXcgdGVzdAogIHRzdC1kbG1lbS1mZGxvcGVuLiBTdWdnZXN0ZWQgYnkg Q2FybG9zIE8nRG9uZWxsLgotIGFkZCBETE1FTV9ET05UUkVQTEFDRSBmbGFnIHRoYXQgZG9l c24ndCByZXBsYWNlIHRoZSBiYWNraW5nLXN0b3JlIG1hcHBpbmcuCiAgSXQgc3dpdGNoZXMg YmFjayB0byBtZW1jcHkoKS4gVGVzdC1jYXNlIGlzIGNhbGxlZCB0c3QtZGxtZW0tc2htLgoK Q2hhbmdlcyBpbiB2ODoKLSBkcm9wIGF1ZGl0IG1hY2hpbmVyeSBhbmQgaW5zdGVhZCBhZGQg YW4gZXh0cmEgYXJnIChvcHRpb25hbCBwb2ludGVyCiAgdG8gYSBzdHJ1Y3QpIHRvIGRsbWVt KCkgaXRzZWxmIHRoYXQgYWxsb3dzIHRvIGluc3RhbGwgYSBjdXN0b20gcHJlbWFwCiAgY2Fs bGJhY2sgb3IgdG8gc3BlY2lmeSBuc2lkLiBBdWRpdCBtYWNoaW5lcnkgd2FzIG1lYW50IHRv IGFsbG93CiAgY29udHJvbGluZyBvdmVyIHRoZSBwcmUtZXhpc3RpbmcgQVBJcyBsaWtlIGRs b3BlbigpLCBidXQgaWYgc29tZW9uZQogIGV2ZXIgbmVlZHMgc3VjaCBleHRlbnNpb25zIHRv IGRsb3BlbigpLCBoZSBjYW4gdHJpdmlhbGx5IGltcGxlbWVudAogIGRsb3BlbigpIG9uIHRv cCBvZiBkbG1lbSgpLgoKQ2hhbmdlcyBpbiB2NzoKLSBhZGQgX2RsX2F1ZGl0X3ByZW1hcCBh dWRpdCBleHRlbnNpb24gYW5kIGl0cyB1c2FnZSBleGFtcGxlCgpDaGFuZ2VzIGluIHY2Ogot IHVzZSBfX3N0cmR1cCgiIikgZm9yIGxfbmFtZSBhcyBzdWdnZXN0ZWQgYnkgQW5kcmVhcyBT Y2h3YWIKCkNoYW5nZXMgaW4gdjU6Ci0gYWRkZWQgX2RsX2F1ZGl0X3ByZW1hcF9kbG1lbSBh dWRpdCBleHRlbnNpb24gZm9yIGRsbWVtCi0gYWRkZWQgdHN0LWF1ZGl0bW9kLWRsbWVtLmMg dGVzdC1jYXNlIHRoYXQgZmVlZHMgc2htIGZkIHRvIGRsbWVtKCkKCkNoYW5nZXMgaW4gdjQ6 Ci0gcmUtdGFyZ2V0IHRvIEdMSUJDXzIuMzgKLSBhZGQgdHN0LWF1ZGl0ZGxtZW0uYyB0ZXN0 LWNhc2UgdG8gdGVzdCBhdWRpdGluZwotIGRyb3AgbGVuZ3RoIHBhZ2UtYWxpZ25pbmcgaW4g dHN0LWRsbWVtOiBtbWFwKCkgYWxpZ25zIGxlbmd0aCBvbiBpdHMgb3duCi0gYnVnZml4OiBp biBkb19tbWFwY3B5KCkgYWxsb3cgbW1hcHMgcGFzdCBlbmQgb2YgYnVmZmVyCgpDaGFuZ2Vz IGluIHYzOgotIENoYW5nZWQgcHJvdG90eXBlIG9mIGRsbWVtKCkgKGFuZCBhbGwgdGhlIGlu dGVybmFsIG1hY2hpbmVyeSkgdG8KICB1c2UgImNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZl ciIgaW5zdGVhZCBvZiAiY29uc3QgY2hhciAqYnVmZmVyIi4KCkNoYW5nZXMgaW4gdjI6Ci0g dXNlIDxzdXBwb3J0L3Rlc3QtZHJpdmVyLmM+IGluc3RlYWQgb2YgIi4uL3Rlc3Qtc2tlbGV0 b24uYyIKLSByZS10YXJnZXQgdG8gR0xJQkNfMi4zNwotIHVwZGF0ZSBhbGwgbGliYy5hYmls aXN0IGZpbGVzCgotLSAKMi4zNy4yCgo= --------------7u9UBIM7HDCGzzMHsrY98UO1--