delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2020/08/31/13:51:04

X-Recipient: archive-cygwin AT delorie DOT com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E83B8386F452
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com;
s=default; t=1598896220;
bh=lwhJLRfNFiqTvzit5l8v5mp6sePfwJza/8miGfRV+DQ=;
h=References:In-Reply-To:Date:Subject:To:List-Id:List-Unsubscribe:
List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:
From;
b=gQHrJM/PCghbvdJiVUsQ69bhV28xWsK6fN7nan43bOGxNBE/ED7+bAkGdhHtWMp+J
ZuS83wszugAr5oZkqZqD3HRMB4ah7KS9BiAacqCLudc0pV5PDejvFSrY8DPgkB2WGJ
abih4Fcp5T53WDXwcXAyXDZU9pADJkM4kxeDlnIc=
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 29B78386F452
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:mime-version:references:in-reply-to:from:date
:message-id:subject:to;
bh=JtBZaqQhjEOjsqkQZlu2QU7gyYvJ7qVdLzqLoukRFN0=;
b=Up2d1RdrU9g6Qc0x8RVjOEbD9B0KVPvSpx6lM1j2oFCID44pbkGP1YB2aNhHZtC85G
nwK9UkJlIKfALuvrXQhtbk/tgKE9NCMHmQB3mW5ByfIofUUYtIa0CM5tV7CEwMfFViZB
sfPaAUHJn3h/xJiCW+XL0cLzJXrMLi4Z/dI1rt6gUxK283sgN6yyEcaptd8uayM/+ndN
88ZMClZ34877FxRJOV0hY4LG2dlIK8PgoSjYFDiBxUGa+OXnrkaJR5JrcU7rZKecwZTu
OrgQhL6veX7MyJTvf03/M28U5nEztiV8YFPiwXOkU0m1bq9mlbLfplyboR4CI/JfnW7T
LxOw==
X-Gm-Message-State: AOAM532zr/e8I0a9kUBUVA97CTNtUQoRF+Je8IlMQIwYZN0wmSShMgFl
0XiqKpaJ+dx4vFDrbABOTATcQgrVmVp+5KmcpLM2tllx
X-Google-Smtp-Source: ABdhPJyG+k82FRMecmcRdQWxj7bpg8Qbh34oznwpUgPIGWRj3KZnEJmmkNJ4Dyf+pM8akRkG1+pnHCt/xLq3PWjpbD4=
X-Received: by 2002:aca:f40a:: with SMTP id s10mr316527oih.126.1598896215381;
Mon, 31 Aug 2020 10:50:15 -0700 (PDT)
MIME-Version: 1.0
References: <CAHybJinLYpcviSFiJ=V-EZqoatEzjFfr9DOUzxzmofUmtwMS+w AT mail DOT gmail DOT com>
<c9792fdc-aedc-6934-e11f-732f841b533b AT SystematicSw DOT ab DOT ca>
In-Reply-To: <c9792fdc-aedc-6934-e11f-732f841b533b@SystematicSw.ab.ca>
Date: Mon, 31 Aug 2020 10:50:03 -0700
Message-ID: <CAHybJi=+uKitmwhWfuc564xz6qxZF+H=rA87LaB1NBJPkBAsUA@mail.gmail.com>
Subject: Re: cygwin qsort erratic
To: cygwin AT cygwin DOT com
X-Spam-Status: No, score=2.5 required=5.0 tests=BAYES_50, DKIM_SIGNED,
DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT,
FREEMAIL_FROM, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS,
TXREP autolearn=ham autolearn_force=no version=3.4.2
X-Spam-Level: **
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on
server2.sourceware.org
X-Content-Filtered-By: Mailman/MimeDel 2.1.29
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.29
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
From: Kurt-Karen Carlson-Lougheed via Cygwin <cygwin AT cygwin DOT com>
Reply-To: Kurt-Karen Carlson-Lougheed <denalisun907 AT gmail DOT com>
Sender: "Cygwin" <cygwin-bounces AT cygwin DOT com>

--000000000000f3f0e405ae30085b
Content-Type: text/plain; charset="UTF-8"

Brian,
It's difficult to produce a simple test case with erratic behavior. I have
wrapped my qsort invocations within a qqsort routine. I've attached
qqsort.h which includes both the wrapper and the netbad qsort.c renamed as
Qsort (and with _DIAGASSERT's commented out). Also attached is cygsort.txt
which is script output demonstrating the problem. My apologies that is 200+
lines, the Verbose mode states whether Qsort (netbsd) or qsort (cygwin) is
being invoked, I added the '$' command to toggle back and forth. Descending
sorts on the D/C (dpc) column have been most problematic. The descending
'+S dpc' after the ascending '+s dpc' is the most graphic example. I did
publish uac19 v3.3 on SourceForge this morning, or I can send somebody a
tgz.

Corinna,
I'm a cygwin user and neither a cygwin nor netbsd developer. I do not know
what newlib or 'git format-patch' are. If I had access to source for
cygwin's qsort  I could probably devise a patch, but it's probably better
for somebody familiar with the tools cygwin uses to do that. The attached
qqsort.h is an easy geek read. That qsort works with Linux/RHEL7 and with
netbsd's version under cygwin should make fixing it straight forward for
somebody in the know.

Regards, Kurt

On Sun, Aug 30, 2020 at 7:55 PM Brian Inglis <
Brian DOT Inglis AT systematicsw DOT ab DOT ca> wrote:

> On 2020-08-30 15:27, Kurt-Karen Carlson-Lougheed via Cygwin wrote:
> > In a small percentage of qsort requests, the results are erratic. Running
> > the same code under Linux (RHEL7) does NOT have this problem. I updated
> my
> > cygwin to current and the problem persists. I copied the latest
> netbsd.org
> > qsort.c and compiled into my code, the problem is resolved with that
> > version of qsort.
> >
> > In researching this issue, there was a post to this list 2015-01-11
> > reporting a
> > 'damaged' qsort. This may still be the same issue. The netbsd version I
> am
> > now using is dated 2017-05-19.
> >
> > My code experiencing this is SourceForge uac19, I'll be posting the
> > corrected version (v3.2) with the netbsd qsort tomorrow after completing
> > validation tests. I would ultimately like to see cygwin's qsort fixed.
>
> As qsort depends on the array object data types and comparison functions,
> please
> post a Simple Test Case, showing at least those types and function(s), and
> the
> faulty output results.
>
> --
> Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
>
> This email may be disturbing to some readers as it contains
> too much technical detail. Reader discretion is advised.
> [Data in IEC units and prefixes, physical quantities in SI.]
> --
> Problem reports:      https://cygwin.com/problems.html
> FAQ:                  https://cygwin.com/faq/
> Documentation:        https://cygwin.com/docs.html
> Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple
>

--000000000000f3f0e405ae30085b
Content-Type: text/plain; charset="US-ASCII"; name="cygsort.txt"
Content-Disposition: attachment; filename="cygsort.txt"
Content-Transfer-Encoding: base64
Content-ID: <f_keirlbqa1>
X-Attachment-Id: f_keirlbqa1

U2NyaXB0IHN0YXJ0ZWQgb24gMjAyMC0wOC0zMSAwODo1NDo1OC0wNzowMCBbVEVSTT0ieHRlcm0i
IFRUWT0iL2Rldi9wdHkxIiBDT0xVTU5TPSIxMzIiIExJTkVTPSI1NCJdCmtjOiB1YWMxOSAtLXZl
cnNpb24KIyB1YWMxOSB2My4zLCBQYWNrYWdlOiB1YWMxOS12My4zCmtjOiB1YWMxOSAtdXNlIG93
aWQgLXYgIyBjdXJsIHRvZGF5J3MgZmlsZQojIFJlcG9ydCAgICAgbmFtZXM6IAlVUyBXTwpDdXJs
OiBjaGRpciAvaG9tZS9rYWMvRG93bmxvYWRzCiMgc3lzdGVtIChjdXJsIC0taW5zZWN1cmUgLU8g
LSMgaHR0cHM6Ly9jb3ZpZC5vdXJ3b3JsZGluZGF0YS5vcmcvZGF0YS9vd2lkLWNvdmlkLWRhdGEu
Y3N2IDI+L2Rldi9udWxsKQpPcGVuOiAvdXNyL2xvY2FsL2V0Yy9Db3VudHJpZXM6Ck9wZW46IC91
c3IvbG9jYWwvZXRjL0NvLVJlbWFwOgojIERheXM6IDI0NSBGaXJzdD0wIExhc3Q9MjQ1IENvbHVt
bnM9MWNpcGRFZXZsCiMgdWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1pIDEgIC12CiMgIC1uIFVTLFdP
CkRhdGUgICBDb25maXJtZWQgSW5jcmVhc2UgICAgSW5jLiUgIERlYXRocyAgRGllZCsgRGF5cyBu
YSxjb3UgTG9jYXRpb24KLS0tLSAgIC0tLS0tLS0tLSAtLS0tLS0tLSAgICAtLS0tLSAgLS0tLS0t
ICAtLS0tLSAtLS0tIC0tLS0tLSAtLS0tLS0tLQowOC0zMSAgIDI1MjUxMzM0ICAgMjIxNDg0ICAg
ICAwLjklICA4NDY4NDEgIDM2ODcrICAxLjAgV08sV09SIFdvcmxkCjA4LTMxICAgIDU5OTcxNjMg
ICAgMzU1ODEgICAgIDAuNiUgIDE4MzA2OSAgIDI5MCsgIDEuMCBVUyxVU0EgVW5pdGVkIFN0YXRl
cwprYzogdWFjMTkgLWYgfi9Eb3dubG9hZHMvb3dpZC1jb3ZpZC1kYXRhLmNzdiAteCAjIGludGVy
YWN0aXZlIG1vZGUgCkRhdGUgICBDb25maXJtZWQgSW5jcmVhc2UgICAgSW5jLiUgIERlYXRocyAg
RGllZCsgRGF5cyBMb2NhdGlvbgotLS0tICAgLS0tLS0tLS0tIC0tLS0tLS0tICAgIC0tLS0tICAt
LS0tLS0gIC0tLS0tIC0tLS0gLS0tLS0tLS0KMDgtMzEgICAyNTI1MTMzNCAgIDIyMTQ4NCAgICAg
MC45JSAgODQ2ODQxICAzNjg3KyAgMS4wIFdvcmxkCjA4LTMxICAgIDU5OTcxNjMgICAgMzU1ODEg
ICAgIDAuNiUgIDE4MzA2OSAgIDI5MCsgIDEuMCBVbml0ZWQgU3RhdGVzCk9wdGlvbnM/IC1uIC4g
K2MgZHBjLC1pbmMuLGRpZSAtcG9wIDEgLXBjdCAxICMgYWRqdXN0IGNvbHVtbnMsIG1pbmltdW0g
MSUgY29uZmlybWVkCkRhdGUgICBDb25maXJtZWQgSW5jcmVhc2UgIERlYXRocyAgRC9DJSBNaWxs
aW9uIFBjdC5DbyBEYXlzIExvY2F0aW9uCi0tLS0gICAtLS0tLS0tLS0gLS0tLS0tLS0gIC0tLS0t
LSAgLS0tLSAtLS0tLS0tIC0tLS0tLSAtLS0tIC0tLS0tLS0tCjA4LTMxICAgICA2MjUwNTYgICAg
IDI1MDUgICAxNDAyOCAgMi4yJSAgICA1OS4yICAxLjA1NiAgMS4wIFNvdXRoIEFmcmljYQowOC0z
MSAgICAgIDQzNzUwICAgICAgMTI0ICAgICA4NzcgIDIuMCUgICAgIDMuMCAgMS40NzcgIDEuMCBB
cm1lbmlhCjA4LTMxICAgICAxMTQwMjAgICAgICAzOTcgICAgIDkxOSAgMC44JSAgICAgOC42ICAx
LjMyMCAgMS4wIElzcmFlbAowOC0zMSAgICAgIDUxNTc0ICAgICAgMTgzICAgICAxODkgIDAuNCUg
ICAgIDEuNyAgMy4wNDUgIDEuMCBCYWhyYWluCjA4LTMxICAgICAgODU1NDQgICAgICA1MzkgICAg
IDY3NyAgMC44JSAgICAgNS4xICAxLjY4MiAgMS4wIE9tYW4KMDgtMzEgICAgIDExODU3NSAgICAg
IDE2OCAgICAgMTk3ICAwLjIlICAgICAyLjkgIDQuMTI4ICAxLjAgUWF0YXIKMDgtMzEgICAgICA4
NDYzNiAgICAgIDQxMiAgICAgNTMwICAwLjYlICAgICA0LjMgIDEuOTg3ICAxLjAgS3V3YWl0CjA4
LTMxICAgIDU5OTcxNjMgICAgMzU1ODEgIDE4MzA2OSAgMy4xJSAgIDMzMS4wICAxLjgxMiAgMS4w
IFVuaXRlZCBTdGF0ZXMKMDgtMzEgICAgICAzMjg0OCAgICAgIDI5OCAgICAgNDM0ICAxLjMlICAg
ICAyLjkgIDEuMTQ1ICAxLjAgUHVlcnRvIFJpY28KMDgtMzEgICAgICA5MjA2NSAgICAgIDcyOCAg
ICAxOTk1ICAyLjIlICAgICA0LjMgIDIuMTM5ICAxLjAgUGFuYW1hCjA4LTMxICAgIDM4NjIzMTEg
ICAgMTYxNTggIDEyMDgyOCAgMy4xJSAgIDIxMi4zICAxLjgxOSAgMS4wIEJyYXppbAowOC0zMSAg
ICAgNjQ3MTY2ICAgICA3NzMxICAgMjg3ODggIDQuNCUgICAgMzIuOSAgMS45NjYgIDEuMCBQZXJ1
CjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQgICAxOTM2NCAgMy4yJSAgICA1MC44ICAxLjE5NiAg
MS4wIENvbG9tYmlhCjA4LTMxICAgICA0MDk5NzQgICAgIDE5NjUgICAxMTI0NCAgMi43JSAgICAx
OS4xICAyLjE0NyAgMS4wIENoaWxlCk9wdGlvbnM/IC1WICtjIC12ICtTIGNvbmYgIyB2ZXJ5IHZl
cmJvc2UsIHNvcnQgY29uZmlybWUgZGVzY2VuZGluZwojIENoa1NvcnQgMDQgMCwwLDEgYyBDb25m
aXJtZWQgMQojIERheXM6IDI0NSBGaXJzdD0wIExhc3Q9MjQ1IENvbHVtbnM9MWNpZFdtWWVsCiMg
dWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1QICAxLjAgIC1ZICAxLjAgIC1pIDEgICtTIENvbmZpcm1l
ZCAgLVYgIC14CkRhdGUgICBDb25maXJtZWQgSW5jcmVhc2UgIERlYXRocyAgRC9DJSBNaWxsaW9u
IFBjdC5DbyBEYXlzIExvY2F0aW9uCi0tLS0gICAtLS0tLS0tLS0gLS0tLS0tLS0gIC0tLS0tLSAg
LS0tLSAtLS0tLS0tIC0tLS0tLSAtLS0tIC0tLS0tLS0tCiMgUXNvcnQ6Q29uZmlybWVkCiMgbF9z
b3J0OjA6CjA4LTMxICAgIDU5OTcxNjMgICAgMzU1ODEgIDE4MzA2OSAgMy4xJSAgIDMzMS4wICAx
LjgxMiAgMS4wIFVuaXRlZCBTdGF0ZXMKMDgtMzEgICAgMzg2MjMxMSAgICAxNjE1OCAgMTIwODI4
ICAzLjElICAgMjEyLjMgIDEuODE5ICAxLjAgQnJhemlsCjA4LTMxICAgICA2NDcxNjYgICAgIDc3
MzEgICAyODc4OCAgNC40JSAgICAzMi45ICAxLjk2NiAgMS4wIFBlcnUKMDgtMzEgICAgIDYyNTA1
NiAgICAgMjUwNSAgIDE0MDI4ICAyLjIlICAgIDU5LjIgIDEuMDU2ICAxLjAgU291dGggQWZyaWNh
CjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQgICAxOTM2NCAgMy4yJSAgICA1MC44ICAxLjE5NiAg
MS4wIENvbG9tYmlhCjA4LTMxICAgICA0MDk5NzQgICAgIDE5NjUgICAxMTI0NCAgMi43JSAgICAx
OS4xICAyLjE0NyAgMS4wIENoaWxlCjA4LTMxICAgICAxMTg1NzUgICAgICAxNjggICAgIDE5NyAg
MC4yJSAgICAgMi45ICA0LjEyOCAgMS4wIFFhdGFyCjA4LTMxICAgICAxMTQwMjAgICAgICAzOTcg
ICAgIDkxOSAgMC44JSAgICAgOC42ICAxLjMyMCAgMS4wIElzcmFlbAowOC0zMSAgICAgIDkyMDY1
ICAgICAgNzI4ICAgIDE5OTUgIDIuMiUgICAgIDQuMyAgMi4xMzkgIDEuMCBQYW5hbWEKMDgtMzEg
ICAgICA4NTU0NCAgICAgIDUzOSAgICAgNjc3ICAwLjglICAgICA1LjEgIDEuNjgyICAxLjAgT21h
bgowOC0zMSAgICAgIDg0NjM2ICAgICAgNDEyICAgICA1MzAgIDAuNiUgICAgIDQuMyAgMS45ODcg
IDEuMCBLdXdhaXQKMDgtMzEgICAgICA1MTU3NCAgICAgIDE4MyAgICAgMTg5ICAwLjQlICAgICAx
LjcgIDMuMDQ1ICAxLjAgQmFocmFpbgowOC0zMSAgICAgIDQzNzUwICAgICAgMTI0ICAgICA4Nzcg
IDIuMCUgICAgIDMuMCAgMS40NzcgIDEuMCBBcm1lbmlhCjA4LTMxICAgICAgMzI4NDggICAgICAy
OTggICAgIDQzNCAgMS4zJSAgICAgMi45ICAxLjE0NSAgMS4wIFB1ZXJ0byBSaWNvCiMgRGlzcGxh
eWVkIDE0Ck9wdGlvbnM/ICtTIGRwYyAjIHNvcnQgZC9jIGRlc2NlbmRpbmcKIyBDaGtTb3J0IDEy
IDAsMCwxIFcgRC9DJSAxCiMgQ2hrU29ydCAxMyAwLDAsMSBXIERwQyAxCiMgRGF5czogMjQ1IEZp
cnN0PTAgTGFzdD0yNDUgQ29sdW1ucz0xY2lkV21ZZWwKIyB1YWMxOSAgLW0gNTAwICAtZCA1MCAg
LVAgIDEuMCAgLVkgIDEuMCAgLWkgMSAgK1MgRC9DJSAgLVYgIC14CkRhdGUgICBDb25maXJtZWQg
SW5jcmVhc2UgIERlYXRocyAgRC9DJSBNaWxsaW9uIFBjdC5DbyBEYXlzIExvY2F0aW9uCi0tLS0g
ICAtLS0tLS0tLS0gLS0tLS0tLS0gIC0tLS0tLSAgLS0tLSAtLS0tLS0tIC0tLS0tLSAtLS0tIC0t
LS0tLS0tCiMgUXNvcnQ6RC9DJQojIGxEc29ydDowCjA4LTMxICAgICA2NDcxNjYgICAgIDc3MzEg
ICAyODc4OCAgNC40JSAgICAzMi45ICAxLjk2NiAgMS4wIFBlcnUKMDgtMzEgICAgIDYwNzkzOCAg
ICAgODAyNCAgIDE5MzY0ICAzLjIlICAgIDUwLjggIDEuMTk2ICAxLjAgQ29sb21iaWEKMDgtMzEg
ICAgMzg2MjMxMSAgICAxNjE1OCAgMTIwODI4ICAzLjElICAgMjEyLjMgIDEuODE5ICAxLjAgQnJh
emlsCjA4LTMxICAgIDU5OTcxNjMgICAgMzU1ODEgIDE4MzA2OSAgMy4xJSAgIDMzMS4wICAxLjgx
MiAgMS4wIFVuaXRlZCBTdGF0ZXMKMDgtMzEgICAgIDQwOTk3NCAgICAgMTk2NSAgIDExMjQ0ICAy
LjclICAgIDE5LjEgIDIuMTQ3ICAxLjAgQ2hpbGUKMDgtMzEgICAgIDYyNTA1NiAgICAgMjUwNSAg
IDE0MDI4ICAyLjIlICAgIDU5LjIgIDEuMDU2ICAxLjAgU291dGggQWZyaWNhCjA4LTMxICAgICAg
OTIwNjUgICAgICA3MjggICAgMTk5NSAgMi4yJSAgICAgNC4zICAyLjEzOSAgMS4wIFBhbmFtYQow
OC0zMSAgICAgIDQzNzUwICAgICAgMTI0ICAgICA4NzcgIDIuMCUgICAgIDMuMCAgMS40NzcgIDEu
MCBBcm1lbmlhCjA4LTMxICAgICAgMzI4NDggICAgICAyOTggICAgIDQzNCAgMS4zJSAgICAgMi45
ICAxLjE0NSAgMS4wIFB1ZXJ0byBSaWNvCjA4LTMxICAgICAxMTQwMjAgICAgICAzOTcgICAgIDkx
OSAgMC44JSAgICAgOC42ICAxLjMyMCAgMS4wIElzcmFlbAowOC0zMSAgICAgIDg1NTQ0ICAgICAg
NTM5ICAgICA2NzcgIDAuOCUgICAgIDUuMSAgMS42ODIgIDEuMCBPbWFuCjA4LTMxICAgICAgODQ2
MzYgICAgICA0MTIgICAgIDUzMCAgMC42JSAgICAgNC4zICAxLjk4NyAgMS4wIEt1d2FpdAowOC0z
MSAgICAgIDUxNTc0ICAgICAgMTgzICAgICAxODkgIDAuNCUgICAgIDEuNyAgMy4wNDUgIDEuMCBC
YWhyYWluCjA4LTMxICAgICAxMTg1NzUgICAgICAxNjggICAgIDE5NyAgMC4yJSAgICAgMi45ICA0
LjEyOCAgMS4wIFFhdGFyCiMgRGlzcGxheWVkIDE0Ck9wdGlvbnM/ICQgIyB0b2dnbGUgbmV0YnNk
IFFzb3J0IHRvIGN5Z3dpbiBxc29ydAojIERheXM6IDI0NSBGaXJzdD0wIExhc3Q9MjQ1IENvbHVt
bnM9MWNpZFdtWWVsCiMgdWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1QICAxLjAgIC1ZICAxLjAgIC1p
IDEgICtTIEQvQyUgIC1WICAteApEYXRlICAgQ29uZmlybWVkIEluY3JlYXNlICBEZWF0aHMgIEQv
QyUgTWlsbGlvbiBQY3QuQ28gRGF5cyBMb2NhdGlvbgotLS0tICAgLS0tLS0tLS0tIC0tLS0tLS0t
ICAtLS0tLS0gIC0tLS0gLS0tLS0tLSAtLS0tLS0gLS0tLSAtLS0tLS0tLQojIHFzb3J0OkQvQyUK
IyBsRHNvcnQ6MAowOC0zMSAgICAgNjQ3MTY2ICAgICA3NzMxICAgMjg3ODggIDQuNCUgICAgMzIu
OSAgMS45NjYgIDEuMCBQZXJ1CjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQgICAxOTM2NCAgMy4y
JSAgICA1MC44ICAxLjE5NiAgMS4wIENvbG9tYmlhCjA4LTMxICAgIDM4NjIzMTEgICAgMTYxNTgg
IDEyMDgyOCAgMy4xJSAgIDIxMi4zICAxLjgxOSAgMS4wIEJyYXppbAowOC0zMSAgICA1OTk3MTYz
ICAgIDM1NTgxICAxODMwNjkgIDMuMSUgICAzMzEuMCAgMS44MTIgIDEuMCBVbml0ZWQgU3RhdGVz
CjA4LTMxICAgICA0MDk5NzQgICAgIDE5NjUgICAxMTI0NCAgMi43JSAgICAxOS4xICAyLjE0NyAg
MS4wIENoaWxlCjA4LTMxICAgICA2MjUwNTYgICAgIDI1MDUgICAxNDAyOCAgMi4yJSAgICA1OS4y
ICAxLjA1NiAgMS4wIFNvdXRoIEFmcmljYQowOC0zMSAgICAgIDkyMDY1ICAgICAgNzI4ICAgIDE5
OTUgIDIuMiUgICAgIDQuMyAgMi4xMzkgIDEuMCBQYW5hbWEKMDgtMzEgICAgICA0Mzc1MCAgICAg
IDEyNCAgICAgODc3ICAyLjAlICAgICAzLjAgIDEuNDc3ICAxLjAgQXJtZW5pYQowOC0zMSAgICAg
IDMyODQ4ICAgICAgMjk4ICAgICA0MzQgIDEuMyUgICAgIDIuOSAgMS4xNDUgIDEuMCBQdWVydG8g
UmljbwowOC0zMSAgICAgMTE0MDIwICAgICAgMzk3ICAgICA5MTkgIDAuOCUgICAgIDguNiAgMS4z
MjAgIDEuMCBJc3JhZWwKMDgtMzEgICAgICA4NTU0NCAgICAgIDUzOSAgICAgNjc3ICAwLjglICAg
ICA1LjEgIDEuNjgyICAxLjAgT21hbgowOC0zMSAgICAgIDg0NjM2ICAgICAgNDEyICAgICA1MzAg
IDAuNiUgICAgIDQuMyAgMS45ODcgIDEuMCBLdXdhaXQKMDgtMzEgICAgICA1MTU3NCAgICAgIDE4
MyAgICAgMTg5ICAwLjQlICAgICAxLjcgIDMuMDQ1ICAxLjAgQmFocmFpbgowOC0zMSAgICAgMTE4
NTc1ICAgICAgMTY4ICAgICAxOTcgIDAuMiUgICAgIDIuOSAgNC4xMjggIDEuMCBRYXRhcgojIERp
c3BsYXllZCAxNApPcHRpb25zPyArUyBjb25mICMgcmVzb3J0IGNvbmZpcm1lZAojIENoa1NvcnQg
MDQgMCwwLDEgYyBDb25maXJtZWQgMQojIERheXM6IDI0NSBGaXJzdD0wIExhc3Q9MjQ1IENvbHVt
bnM9MWNpZFdtWWVsCiMgdWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1QICAxLjAgIC1ZICAxLjAgIC1p
IDEgICtTIENvbmZpcm1lZCAgLVYgIC14CkRhdGUgICBDb25maXJtZWQgSW5jcmVhc2UgIERlYXRo
cyAgRC9DJSBNaWxsaW9uIFBjdC5DbyBEYXlzIExvY2F0aW9uCi0tLS0gICAtLS0tLS0tLS0gLS0t
LS0tLS0gIC0tLS0tLSAgLS0tLSAtLS0tLS0tIC0tLS0tLSAtLS0tIC0tLS0tLS0tCiMgcXNvcnQ6
Q29uZmlybWVkCiMgbF9zb3J0OjA6CjA4LTMxICAgIDU5OTcxNjMgICAgMzU1ODEgIDE4MzA2OSAg
My4xJSAgIDMzMS4wICAxLjgxMiAgMS4wIFVuaXRlZCBTdGF0ZXMKMDgtMzEgICAgMzg2MjMxMSAg
ICAxNjE1OCAgMTIwODI4ICAzLjElICAgMjEyLjMgIDEuODE5ICAxLjAgQnJhemlsCjA4LTMxICAg
ICA2NDcxNjYgICAgIDc3MzEgICAyODc4OCAgNC40JSAgICAzMi45ICAxLjk2NiAgMS4wIFBlcnUK
MDgtMzEgICAgIDYyNTA1NiAgICAgMjUwNSAgIDE0MDI4ICAyLjIlICAgIDU5LjIgIDEuMDU2ICAx
LjAgU291dGggQWZyaWNhCjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQgICAxOTM2NCAgMy4yJSAg
ICA1MC44ICAxLjE5NiAgMS4wIENvbG9tYmlhCjA4LTMxICAgICA0MDk5NzQgICAgIDE5NjUgICAx
MTI0NCAgMi43JSAgICAxOS4xICAyLjE0NyAgMS4wIENoaWxlCjA4LTMxICAgICAxMTg1NzUgICAg
ICAxNjggICAgIDE5NyAgMC4yJSAgICAgMi45ICA0LjEyOCAgMS4wIFFhdGFyCjA4LTMxICAgICAx
MTQwMjAgICAgICAzOTcgICAgIDkxOSAgMC44JSAgICAgOC42ICAxLjMyMCAgMS4wIElzcmFlbAow
OC0zMSAgICAgIDkyMDY1ICAgICAgNzI4ICAgIDE5OTUgIDIuMiUgICAgIDQuMyAgMi4xMzkgIDEu
MCBQYW5hbWEKMDgtMzEgICAgICA4NTU0NCAgICAgIDUzOSAgICAgNjc3ICAwLjglICAgICA1LjEg
IDEuNjgyICAxLjAgT21hbgowOC0zMSAgICAgIDg0NjM2ICAgICAgNDEyICAgICA1MzAgIDAuNiUg
ICAgIDQuMyAgMS45ODcgIDEuMCBLdXdhaXQKMDgtMzEgICAgICA1MTU3NCAgICAgIDE4MyAgICAg
MTg5ICAwLjQlICAgICAxLjcgIDMuMDQ1ICAxLjAgQmFocmFpbgowOC0zMSAgICAgIDQzNzUwICAg
ICAgMTI0ICAgICA4NzcgIDIuMCUgICAgIDMuMCAgMS40NzcgIDEuMCBBcm1lbmlhCjA4LTMxICAg
ICAgMzI4NDggICAgICAyOTggICAgIDQzNCAgMS4zJSAgICAgMi45ICAxLjE0NSAgMS4wIFB1ZXJ0
byBSaWNvCiMgRGlzcGxheWVkIDE0Ck9wdGlvbnM/ICtTIGRwYyAjIHNvcnQgZC9jIGFnYWluIChj
eWd3aW4gcXNvcnQpCiMgQ2hrU29ydCAxMiAwLDAsMSBXIEQvQyUgMQojIENoa1NvcnQgMTMgMCww
LDEgVyBEcEMgMQojIERheXM6IDI0NSBGaXJzdD0wIExhc3Q9MjQ1IENvbHVtbnM9MWNpZFdtWWVs
CiMgdWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1QICAxLjAgIC1ZICAxLjAgIC1pIDEgICtTIEQvQyUg
IC1WICAteApEYXRlICAgQ29uZmlybWVkIEluY3JlYXNlICBEZWF0aHMgIEQvQyUgTWlsbGlvbiBQ
Y3QuQ28gRGF5cyBMb2NhdGlvbgotLS0tICAgLS0tLS0tLS0tIC0tLS0tLS0tICAtLS0tLS0gIC0t
LS0gLS0tLS0tLSAtLS0tLS0gLS0tLSAtLS0tLS0tLQojIHFzb3J0OkQvQyUKIyBsRHNvcnQ6MAow
OC0zMSAgICAgNjQ3MTY2ICAgICA3NzMxICAgMjg3ODggIDQuNCUgICAgMzIuOSAgMS45NjYgIDEu
MCBQZXJ1CjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQgICAxOTM2NCAgMy4yJSAgICA1MC44ICAx
LjE5NiAgMS4wIENvbG9tYmlhCjA4LTMxICAgIDM4NjIzMTEgICAgMTYxNTggIDEyMDgyOCAgMy4x
JSAgIDIxMi4zICAxLjgxOSAgMS4wIEJyYXppbAowOC0zMSAgICAgNDA5OTc0ICAgICAxOTY1ICAg
MTEyNDQgIDIuNyUgICAgMTkuMSAgMi4xNDcgIDEuMCBDaGlsZQowOC0zMSAgICAgNjI1MDU2ICAg
ICAyNTA1ICAgMTQwMjggIDIuMiUgICAgNTkuMiAgMS4wNTYgIDEuMCBTb3V0aCBBZnJpY2EKMDgt
MzEgICAgNTk5NzE2MyAgICAzNTU4MSAgMTgzMDY5ICAzLjElICAgMzMxLjAgIDEuODEyICAxLjAg
VW5pdGVkIFN0YXRlcwowOC0zMSAgICAgIDkyMDY1ICAgICAgNzI4ICAgIDE5OTUgIDIuMiUgICAg
IDQuMyAgMi4xMzkgIDEuMCBQYW5hbWEKMDgtMzEgICAgICA0Mzc1MCAgICAgIDEyNCAgICAgODc3
ICAyLjAlICAgICAzLjAgIDEuNDc3ICAxLjAgQXJtZW5pYQowOC0zMSAgICAgIDMyODQ4ICAgICAg
Mjk4ICAgICA0MzQgIDEuMyUgICAgIDIuOSAgMS4xNDUgIDEuMCBQdWVydG8gUmljbwowOC0zMSAg
ICAgMTE0MDIwICAgICAgMzk3ICAgICA5MTkgIDAuOCUgICAgIDguNiAgMS4zMjAgIDEuMCBJc3Jh
ZWwKMDgtMzEgICAgICA4NTU0NCAgICAgIDUzOSAgICAgNjc3ICAwLjglICAgICA1LjEgIDEuNjgy
ICAxLjAgT21hbgowOC0zMSAgICAgIDg0NjM2ICAgICAgNDEyICAgICA1MzAgIDAuNiUgICAgIDQu
MyAgMS45ODcgIDEuMCBLdXdhaXQKMDgtMzEgICAgICA1MTU3NCAgICAgIDE4MyAgICAgMTg5ICAw
LjQlICAgICAxLjcgIDMuMDQ1ICAxLjAgQmFocmFpbgowOC0zMSAgICAgMTE4NTc1ICAgICAgMTY4
ICAgICAxOTcgIDAuMiUgICAgIDIuOSAgNC4xMjggIDEuMCBRYXRhcgojIERpc3BsYXllZCAxNApP
cHRpb25zPyAjIG5vdGUgYWJvdmUgbm90IGluIG9yZGVyCiMgRGF5czogMjQ1IEZpcnN0PTAgTGFz
dD0yNDUgQ29sdW1ucz0xY2lkV21ZZWwKIyB1YWMxOSAgLW0gNTAwICAtZCA1MCAgLVAgIDEuMCAg
LVkgIDEuMCAgLWkgMSAgK1MgRC9DJSAgLVYgIC14Ck9wdGlvbnM/ICtzIGRwYyAjIHNvcnQgZC9j
IGFzY2VuZGluZwojIENoa1NvcnQgMTIgMCwxLDAgVyBEL0MlIDEKIyBDaGtTb3J0IDEzIDAsMSww
IFcgRHBDIDEKIyBEYXlzOiAyNDUgRmlyc3Q9MCBMYXN0PTI0NSBDb2x1bW5zPTFjaWRXbVllbAoj
IHVhYzE5ICAtbSA1MDAgIC1kIDUwICAtUCAgMS4wICAtWSAgMS4wICAtaSAxICArcyBEL0MlICAt
ViAgLXgKRGF0ZSAgIENvbmZpcm1lZCBJbmNyZWFzZSAgRGVhdGhzICBEL0MlIE1pbGxpb24gUGN0
LkNvIERheXMgTG9jYXRpb24KLS0tLSAgIC0tLS0tLS0tLSAtLS0tLS0tLSAgLS0tLS0tICAtLS0t
IC0tLS0tLS0gLS0tLS0tIC0tLS0gLS0tLS0tLS0KIyBxc29ydDpEL0MlCiMgbERzb3J0OjEKMDgt
MzEgICAgIDExODU3NSAgICAgIDE2OCAgICAgMTk3ICAwLjIlICAgICAyLjkgIDQuMTI4ICAxLjAg
UWF0YXIKMDgtMzEgICAgICA1MTU3NCAgICAgIDE4MyAgICAgMTg5ICAwLjQlICAgICAxLjcgIDMu
MDQ1ICAxLjAgQmFocmFpbgowOC0zMSAgICAgIDg0NjM2ICAgICAgNDEyICAgICA1MzAgIDAuNiUg
ICAgIDQuMyAgMS45ODcgIDEuMCBLdXdhaXQKMDgtMzEgICAgICA4NTU0NCAgICAgIDUzOSAgICAg
Njc3ICAwLjglICAgICA1LjEgIDEuNjgyICAxLjAgT21hbgowOC0zMSAgICAgMTE0MDIwICAgICAg
Mzk3ICAgICA5MTkgIDAuOCUgICAgIDguNiAgMS4zMjAgIDEuMCBJc3JhZWwKMDgtMzEgICAgICAz
Mjg0OCAgICAgIDI5OCAgICAgNDM0ICAxLjMlICAgICAyLjkgIDEuMTQ1ICAxLjAgUHVlcnRvIFJp
Y28KMDgtMzEgICAgICA0Mzc1MCAgICAgIDEyNCAgICAgODc3ICAyLjAlICAgICAzLjAgIDEuNDc3
ICAxLjAgQXJtZW5pYQowOC0zMSAgICAgIDkyMDY1ICAgICAgNzI4ICAgIDE5OTUgIDIuMiUgICAg
IDQuMyAgMi4xMzkgIDEuMCBQYW5hbWEKMDgtMzEgICAgIDYyNTA1NiAgICAgMjUwNSAgIDE0MDI4
ICAyLjIlICAgIDU5LjIgIDEuMDU2ICAxLjAgU291dGggQWZyaWNhCjA4LTMxICAgICA0MDk5NzQg
ICAgIDE5NjUgICAxMTI0NCAgMi43JSAgICAxOS4xICAyLjE0NyAgMS4wIENoaWxlCjA4LTMxICAg
IDU5OTcxNjMgICAgMzU1ODEgIDE4MzA2OSAgMy4xJSAgIDMzMS4wICAxLjgxMiAgMS4wIFVuaXRl
ZCBTdGF0ZXMKMDgtMzEgICAgMzg2MjMxMSAgICAxNjE1OCAgMTIwODI4ICAzLjElICAgMjEyLjMg
IDEuODE5ICAxLjAgQnJhemlsCjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQgICAxOTM2NCAgMy4y
JSAgICA1MC44ICAxLjE5NiAgMS4wIENvbG9tYmlhCjA4LTMxICAgICA2NDcxNjYgICAgIDc3MzEg
ICAyODc4OCAgNC40JSAgICAzMi45ICAxLjk2NiAgMS4wIFBlcnUKIyBEaXNwbGF5ZWQgMTQKT3B0
aW9ucz8gK1MgZC9jICMgc29ydCBkL2MgZGVzY2VuZGluZwojIENoa1NvcnQgMTIgMCwwLDEgVyBE
L0MlIDEKIyBEYXlzOiAyNDUgRmlyc3Q9MCBMYXN0PTI0NSBDb2x1bW5zPTFjaWRXbVllbAojIHVh
YzE5ICAtbSA1MDAgIC1kIDUwICAtUCAgMS4wICAtWSAgMS4wICAtaSAxICArUyBEL0MlICAtViAg
LXgKRGF0ZSAgIENvbmZpcm1lZCBJbmNyZWFzZSAgRGVhdGhzICBEL0MlIE1pbGxpb24gUGN0LkNv
IERheXMgTG9jYXRpb24KLS0tLSAgIC0tLS0tLS0tLSAtLS0tLS0tLSAgLS0tLS0tICAtLS0tIC0t
LS0tLS0gLS0tLS0tIC0tLS0gLS0tLS0tLS0KIyBxc29ydDpEL0MlCiMgbERzb3J0OjAKMDgtMzEg
ICAgIDExODU3NSAgICAgIDE2OCAgICAgMTk3ICAwLjIlICAgICAyLjkgIDQuMTI4ICAxLjAgUWF0
YXIKMDgtMzEgICAgICA1MTU3NCAgICAgIDE4MyAgICAgMTg5ICAwLjQlICAgICAxLjcgIDMuMDQ1
ICAxLjAgQmFocmFpbgowOC0zMSAgICAgIDg0NjM2ICAgICAgNDEyICAgICA1MzAgIDAuNiUgICAg
IDQuMyAgMS45ODcgIDEuMCBLdXdhaXQKMDgtMzEgICAgIDExNDAyMCAgICAgIDM5NyAgICAgOTE5
ICAwLjglICAgICA4LjYgIDEuMzIwICAxLjAgSXNyYWVsCjA4LTMxICAgICAgODU1NDQgICAgICA1
MzkgICAgIDY3NyAgMC44JSAgICAgNS4xICAxLjY4MiAgMS4wIE9tYW4KMDgtMzEgICAgICAzMjg0
OCAgICAgIDI5OCAgICAgNDM0ICAxLjMlICAgICAyLjkgIDEuMTQ1ICAxLjAgUHVlcnRvIFJpY28K
MDgtMzEgICAgIDY0NzE2NiAgICAgNzczMSAgIDI4Nzg4ICA0LjQlICAgIDMyLjkgIDEuOTY2ICAx
LjAgUGVydQowOC0zMSAgICAgNjA3OTM4ICAgICA4MDI0ICAgMTkzNjQgIDMuMiUgICAgNTAuOCAg
MS4xOTYgIDEuMCBDb2xvbWJpYQowOC0zMSAgICAzODYyMzExICAgIDE2MTU4ICAxMjA4MjggIDMu
MSUgICAyMTIuMyAgMS44MTkgIDEuMCBCcmF6aWwKMDgtMzEgICAgNTk5NzE2MyAgICAzNTU4MSAg
MTgzMDY5ICAzLjElICAgMzMxLjAgIDEuODEyICAxLjAgVW5pdGVkIFN0YXRlcwowOC0zMSAgICAg
NDA5OTc0ICAgICAxOTY1ICAgMTEyNDQgIDIuNyUgICAgMTkuMSAgMi4xNDcgIDEuMCBDaGlsZQow
OC0zMSAgICAgNjI1MDU2ICAgICAyNTA1ICAgMTQwMjggIDIuMiUgICAgNTkuMiAgMS4wNTYgIDEu
MCBTb3V0aCBBZnJpY2EKMDgtMzEgICAgICA5MjA2NSAgICAgIDcyOCAgICAxOTk1ICAyLjIlICAg
ICA0LjMgIDIuMTM5ICAxLjAgUGFuYW1hCjA4LTMxICAgICAgNDM3NTAgICAgICAxMjQgICAgIDg3
NyAgMi4wJSAgICAgMy4wICAxLjQ3NyAgMS4wIEFybWVuaWEKIyBEaXNwbGF5ZWQgMTQKT3B0aW9u
cz8gIyB0aGF0IHN1cmUgZGlkbid0IHdvcmsgd2VsbCwgZGlkIGl0PwojIERheXM6IDI0NSBGaXJz
dD0wIExhc3Q9MjQ1IENvbHVtbnM9MWNpZFdtWWVsCiMgdWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1Q
ICAxLjAgIC1ZICAxLjAgIC1pIDEgICtTIEQvQyUgIC1WICAteApPcHRpb25zPyAkICMgdG9nZ2xl
IGN5cXdpbiBxc29ydCBiYWNrIHRvIG5ldGJzZCBRc29ydAojIERheXM6IDI0NSBGaXJzdD0wIExh
c3Q9MjQ1IENvbHVtbnM9MWNpZFdtWWVsCiMgdWFjMTkgIC1tIDUwMCAgLWQgNTAgIC1QICAxLjAg
IC1ZICAxLjAgIC1pIDEgICtTIEQvQyUgIC1WICAteApEYXRlICAgQ29uZmlybWVkIEluY3JlYXNl
ICBEZWF0aHMgIEQvQyUgTWlsbGlvbiBQY3QuQ28gRGF5cyBMb2NhdGlvbgotLS0tICAgLS0tLS0t
LS0tIC0tLS0tLS0tICAtLS0tLS0gIC0tLS0gLS0tLS0tLSAtLS0tLS0gLS0tLSAtLS0tLS0tLQoj
IFFzb3J0OkQvQyUKIyBsRHNvcnQ6MAowOC0zMSAgICAgNjQ3MTY2ICAgICA3NzMxICAgMjg3ODgg
IDQuNCUgICAgMzIuOSAgMS45NjYgIDEuMCBQZXJ1CjA4LTMxICAgICA2MDc5MzggICAgIDgwMjQg
ICAxOTM2NCAgMy4yJSAgICA1MC44ICAxLjE5NiAgMS4wIENvbG9tYmlhCjA4LTMxICAgIDM4NjIz
MTEgICAgMTYxNTggIDEyMDgyOCAgMy4xJSAgIDIxMi4zICAxLjgxOSAgMS4wIEJyYXppbAowOC0z
MSAgICA1OTk3MTYzICAgIDM1NTgxICAxODMwNjkgIDMuMSUgICAzMzEuMCAgMS44MTIgIDEuMCBV
bml0ZWQgU3RhdGVzCjA4LTMxICAgICA0MDk5NzQgICAgIDE5NjUgICAxMTI0NCAgMi43JSAgICAx
OS4xICAyLjE0NyAgMS4wIENoaWxlCjA4LTMxICAgICA2MjUwNTYgICAgIDI1MDUgICAxNDAyOCAg
Mi4yJSAgICA1OS4yICAxLjA1NiAgMS4wIFNvdXRoIEFmcmljYQowOC0zMSAgICAgIDkyMDY1ICAg
ICAgNzI4ICAgIDE5OTUgIDIuMiUgICAgIDQuMyAgMi4xMzkgIDEuMCBQYW5hbWEKMDgtMzEgICAg
ICA0Mzc1MCAgICAgIDEyNCAgICAgODc3ICAyLjAlICAgICAzLjAgIDEuNDc3ICAxLjAgQXJtZW5p
YQowOC0zMSAgICAgIDMyODQ4ICAgICAgMjk4ICAgICA0MzQgIDEuMyUgICAgIDIuOSAgMS4xNDUg
IDEuMCBQdWVydG8gUmljbwowOC0zMSAgICAgMTE0MDIwICAgICAgMzk3ICAgICA5MTkgIDAuOCUg
ICAgIDguNiAgMS4zMjAgIDEuMCBJc3JhZWwKMDgtMzEgICAgICA4NTU0NCAgICAgIDUzOSAgICAg
Njc3ICAwLjglICAgICA1LjEgIDEuNjgyICAxLjAgT21hbgowOC0zMSAgICAgIDg0NjM2ICAgICAg
NDEyICAgICA1MzAgIDAuNiUgICAgIDQuMyAgMS45ODcgIDEuMCBLdXdhaXQKMDgtMzEgICAgICA1
MTU3NCAgICAgIDE4MyAgICAgMTg5ICAwLjQlICAgICAxLjcgIDMuMDQ1ICAxLjAgQmFocmFpbgow
OC0zMSAgICAgMTE4NTc1ICAgICAgMTY4ICAgICAxOTcgIDAuMiUgICAgIDIuOSAgNC4xMjggIDEu
MCBRYXRhcgojIERpc3BsYXllZCAxNApPcHRpb25zPyAjIGFsbCBpcyB3ZWxsIHdpdGggbmV0YnNk
IHZlcnNpb24KIyBEYXlzOiAyNDUgRmlyc3Q9MCBMYXN0PTI0NSBDb2x1bW5zPTFjaWRXbVllbAoj
IHVhYzE5ICAtbSA1MDAgIC1kIDUwICAtUCAgMS4wICAtWSAgMS4wICAtaSAxICArUyBEL0MlICAt
ViAgLXgKT3B0aW9ucz8gcXVpdAprYzogZXhpdApleGl0CgpTY3JpcHQgZG9uZSBvbiAyMDIwLTA4
LTMxIDA5OjAzOjQ2LTA3OjAwIFtDT01NQU5EX0VYSVRfQ09ERT0iMCJdCg==
--000000000000f3f0e405ae30085b
Content-Type: application/octet-stream; name="qqsort.h"
Content-Disposition: attachment; filename="qqsort.h"
Content-Transfer-Encoding: base64
Content-ID: <f_keirepkx0>
X-Attachment-Id: f_keirepkx0

LyogKGMpIENvcHlyaWdodCAyMDIwIGJ5IERlbmFsaSBTdW4gQ29uc3VsdGluZyAtIEt1cnQgQ2Fy
bHNvbiAoRlNGL0dQTCkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kdm9pZAlxcXNvcnQgKHZvaWQgKmJh
c2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGludCAoKmNvbXBhcikoY29uc3Qgdm9pZCAq
LCBjb25zdCB2b2lkICopLCBjaGFyICp0eXBlKQp7CiNpZm5kZWYJT1NfV0lOCglpZiAocXEtPnYg
JiYgdHlwZSkJZnByaW50ZiAoc3RkZXJyLCAiIyBxc29ydDolc1xuIiwgdHlwZSk7Cglxc29ydCAo
YmFzZSwgbm1lbWIsIHNpemUsIGNvbXBhcik7Cn0KI2Vsc2UKaWYgKCFxcS0+Y3lnc29ydCkKewlp
ZiAocXEtPnYgJiYgdHlwZSkJZnByaW50ZiAoc3RkZXJyLCAiIyBRc29ydDolc1xuIiwgdHlwZSk7
CglRc29ydCAoYmFzZSwgbm1lbWIsIHNpemUsIGNvbXBhcik7Cn0gZWxzZQp7CWlmIChxcS0+diAm
JiB0eXBlKQlmcHJpbnRmIChzdGRlcnIsICIjIHFzb3J0OiVzXG4iLCB0eXBlKTsKCXFzb3J0IChi
YXNlLCBubWVtYiwgc2l6ZSwgY29tcGFyKTsKfQp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qCSROZXRC
U0Q6IHFzb3J0LmMsdiAxLjIzIDIwMTcvMDUvMTkgMTk6NDg6MTkgY2hyaXN0b3MgRXhwICQJKi8K
LyotCiAqIENvcHlyaWdodCAoYykgMTk5MiwgMTk5MwogKglUaGUgUmVnZW50cyBvZiB0aGUgVW5p
dmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogMy4gTmVpdGhl
ciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmli
dXRvcnMKICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBS
RUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAog
KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAqLwoK
I2luY2x1ZGUgPHN5cy9jZGVmcy5oPgojaWYgZGVmaW5lZChMSUJDX1NDQ1MpICYmICFkZWZpbmVk
KGxpbnQpCiNpZiAwCnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylxc29ydC5jCTguMSAoQmVy
a2VsZXkpIDYvNC85MyI7CiNlbHNlCl9fUkNTSUQoIiROZXRCU0Q6IHFzb3J0LmMsdiAxLjIzIDIw
MTcvMDUvMTkgMTk6NDg6MTkgY2hyaXN0b3MgRXhwICQiKTsKI2VuZGlmCiNlbmRpZiAvKiBMSUJD
X1NDQ1MgYW5kIG5vdCBsaW50ICovCgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CgojaW5jbHVkZSA8
YXNzZXJ0Lmg+CiNpbmNsdWRlIDxlcnJuby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CgpzdGF0aWMg
aW5saW5lIGNoYXIJKm1lZDMoY2hhciAqLCBjaGFyICosIGNoYXIgKiwKICAgIGludCAoKikoY29u
c3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKc3RhdGljIGlubGluZSB2b2lkCSBzd2FwZnVuYyhj
aGFyICosIGNoYXIgKiwgc2l6ZV90LCBpbnQpOwoKI2RlZmluZSBtaW4oYSwgYikJKGEpIDwgKGIp
ID8gYSA6IGIKCi8qCiAqIFFzb3J0IHJvdXRpbmUgZnJvbSBCZW50bGV5ICYgTWNJbHJveSdzICJF
bmdpbmVlcmluZyBhIFNvcnQgRnVuY3Rpb24iLgogKi8KI2RlZmluZSBzd2FwY29kZShUWVBFLCBw
YXJtaSwgcGFybWosIG4pIHsgCQlcCglzaXplX3QgaSA9IChuKSAvIHNpemVvZiAoVFlQRSk7IAkJ
XAoJVFlQRSAqcGkgPSAoVFlQRSAqKSh2b2lkICopKHBhcm1pKTsgCQlcCglUWVBFICpwaiA9IChU
WVBFICopKHZvaWQgKikocGFybWopOyAJCVwKCWRvIHsgCQkJCQkJXAoJCVRZUEUJdCA9ICpwaTsJ
CQlcCgkJKnBpKysgPSAqcGo7CQkJCVwKCQkqcGorKyA9IHQ7CQkJCVwKICAgICAgICB9IHdoaWxl
ICgtLWkgPiAwKTsJCQkJXAp9CgojZGVmaW5lIFNXQVBJTklUKGEsIGVzKSBzd2FwdHlwZSA9ICgo
Y2hhciAqKWEgLSAoY2hhciAqKTApICUgc2l6ZW9mKGxvbmcpIHx8IFwKCWVzICUgc2l6ZW9mKGxv
bmcpID8gMiA6IGVzID09IHNpemVvZihsb25nKT8gMCA6IDE7CgpzdGF0aWMgaW5saW5lIHZvaWQK
c3dhcGZ1bmMoY2hhciAqYSwgY2hhciAqYiwgc2l6ZV90IG4sIGludCBzd2FwdHlwZSkKewoKCWlm
IChzd2FwdHlwZSA8PSAxKSAKCQlzd2FwY29kZShsb25nLCBhLCBiLCBuKQoJZWxzZQoJCXN3YXBj
b2RlKGNoYXIsIGEsIGIsIG4pCn0KCiNkZWZpbmUgc3dhcChhLCBiKQkJCQkJCVwKCWlmIChzd2Fw
dHlwZSA9PSAwKSB7CQkJCQlcCgkJbG9uZyB0ID0gKihsb25nICopKHZvaWQgKikoYSk7CQkJXAoJ
CSoobG9uZyAqKSh2b2lkICopKGEpID0gKihsb25nICopKHZvaWQgKikoYik7CVwKCQkqKGxvbmcg
Kikodm9pZCAqKShiKSA9IHQ7CQkJXAoJfSBlbHNlCQkJCQkJCVwKCQlzd2FwZnVuYyhhLCBiLCBl
cywgc3dhcHR5cGUpCgojZGVmaW5lIHZlY3N3YXAoYSwgYiwgbikgaWYgKChuKSA+IDApIHN3YXBm
dW5jKChhKSwgKGIpLCAoc2l6ZV90KShuKSwgc3dhcHR5cGUpCgpzdGF0aWMgaW5saW5lIGNoYXIg
KgptZWQzKGNoYXIgKmEsIGNoYXIgKmIsIGNoYXIgKmMsCiAgICBpbnQgKCpjbXApKGNvbnN0IHZv
aWQgKiwgY29uc3Qgdm9pZCAqKSkKewoKCXJldHVybiBjbXAoYSwgYikgPCAwID8KCSAgICAgICAo
Y21wKGIsIGMpIDwgMCA/IGIgOiAoY21wKGEsIGMpIDwgMCA/IGMgOiBhICkpCiAgICAgICAgICAg
ICAgOihjbXAoYiwgYykgPiAwID8gYiA6IChjbXAoYSwgYykgPCAwID8gYSA6IGMgKSk7Cn0KCnZv
aWQKUXNvcnQodm9pZCAqYSwgc2l6ZV90IG4sIHNpemVfdCBlcywKICAgIGludCAoKmNtcCkoY29u
c3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKQp7CgljaGFyICpwYSwgKnBiLCAqcGMsICpwZCwgKnBs
LCAqcG0sICpwbjsKCXNpemVfdCBkLCByLCBzOwoJaW50IHN3YXB0eXBlLCBjbXBfcmVzdWx0Owov
KgoyMDIwLTA4LTI5IGthYwlDb21tbWVudCBvdXQgZm9sbG93aW5nCglfRElBR0FTU0VSVChhICE9
IE5VTEwgfHwgbiA9PSAwIHx8IGVzID09IDApOwoJX0RJQUdBU1NFUlQoY21wICE9IE5VTEwpOwoq
Lwpsb29wOglTV0FQSU5JVChhLCBlcyk7CglpZiAobiA8IDcpIHsKCQlmb3IgKHBtID0gKGNoYXIg
KikgYSArIGVzOyBwbSA8IChjaGFyICopIGEgKyBuICogZXM7IHBtICs9IGVzKQoJCQlmb3IgKHBs
ID0gcG07IHBsID4gKGNoYXIgKikgYSAmJiBjbXAocGwgLSBlcywgcGwpID4gMDsKCQkJICAgICBw
bCAtPSBlcykKCQkJCXN3YXAocGwsIHBsIC0gZXMpOwoJCXJldHVybjsKCX0KCXBtID0gKGNoYXIg
KikgYSArIChuIC8gMikgKiBlczsKCWlmIChuID4gNykgewoJCXBsID0gKGNoYXIgKikgYTsKCQlw
biA9IChjaGFyICopIGEgKyAobiAtIDEpICogZXM7CgkJaWYgKG4gPiA0MCkgewoJCQlkID0gKG4g
LyA4KSAqIGVzOwoJCQlwbCA9IG1lZDMocGwsIHBsICsgZCwgcGwgKyAyICogZCwgY21wKTsKCQkJ
cG0gPSBtZWQzKHBtIC0gZCwgcG0sIHBtICsgZCwgY21wKTsKCQkJcG4gPSBtZWQzKHBuIC0gMiAq
IGQsIHBuIC0gZCwgcG4sIGNtcCk7CgkJfQoJCXBtID0gbWVkMyhwbCwgcG0sIHBuLCBjbXApOwoJ
fQoJc3dhcChhLCBwbSk7CglwYSA9IHBiID0gKGNoYXIgKikgYSArIGVzOwoKCXBjID0gcGQgPSAo
Y2hhciAqKSBhICsgKG4gLSAxKSAqIGVzOwoJZm9yICg7OykgewoJCXdoaWxlIChwYiA8PSBwYyAm
JiAoY21wX3Jlc3VsdCA9IGNtcChwYiwgYSkpIDw9IDApIHsKCQkJaWYgKGNtcF9yZXN1bHQgPT0g
MCkgewoJCQkJc3dhcChwYSwgcGIpOwoJCQkJcGEgKz0gZXM7CgkJCX0KCQkJcGIgKz0gZXM7CgkJ
fQoJCXdoaWxlIChwYiA8PSBwYyAmJiAoY21wX3Jlc3VsdCA9IGNtcChwYywgYSkpID49IDApIHsK
CQkJaWYgKGNtcF9yZXN1bHQgPT0gMCkgewoJCQkJc3dhcChwYywgcGQpOwoJCQkJcGQgLT0gZXM7
CgkJCX0KCQkJcGMgLT0gZXM7CgkJfQoJCWlmIChwYiA+IHBjKQoJCQlicmVhazsKCQlzd2FwKHBi
LCBwYyk7CgkJcGIgKz0gZXM7CgkJcGMgLT0gZXM7Cgl9CgoJcG4gPSAoY2hhciAqKSBhICsgbiAq
IGVzOwoJciA9IG1pbihwYSAtIChjaGFyICopIGEsIHBiIC0gcGEpOwoJdmVjc3dhcChhLCBwYiAt
IHIsIHIpOwoJciA9IG1pbigoc2l6ZV90KShwZCAtIHBjKSwgcG4gLSBwZCAtIGVzKTsKCXZlY3N3
YXAocGIsIHBuIC0gciwgcik7CgkvKgoJICogVG8gc2F2ZSBzdGFjayBzcGFjZSB3ZSBzb3J0IHRo
ZSBzbWFsbGVyIHNpZGUgb2YgdGhlIHBhcnRpdGlvbiBmaXJzdAoJICogdXNpbmcgcmVjdXJzaW9u
IGFuZCBlbGltaW5hdGUgdGFpbCByZWN1cnNpb24gZm9yIHRoZSBsYXJnZXIgc2lkZS4KCSAqLwoJ
ciA9IHBiIC0gcGE7CglzID0gcGQgLSBwYzsKCWlmIChyIDwgcykgewoJCS8qIFJlY3Vyc2UgZm9y
IDFzdCBzaWRlLCBpdGVyYXRlIGZvciAybmQgc2lkZS4gKi8KCQlpZiAocyA+IGVzKSB7CgkJCWlm
IChyID4gZXMpCgkJCQlRc29ydChhLCByIC8gZXMsIGVzLCBjbXApOwoJCQlhID0gcG4gLSBzOwoJ
CQluID0gcyAvIGVzOwoJCQlnb3RvIGxvb3A7CgkJfQoJfSBlbHNlIHsKCQkvKiBSZWN1cnNlIGZv
ciAybmQgc2lkZSwgaXRlcmF0ZSBmb3IgMXN0IHNpZGUuICovCgkJaWYgKHIgPiBlcykgewoJCQlp
ZiAocyA+IGVzKQoJCQkJUXNvcnQocG4gLSBzLCBzIC8gZXMsIGVzLCBjbXApOwoJCQluID0gciAv
IGVzOwoJCQlnb3RvIGxvb3A7CgkJfQoJfQp9CiNlbmRpZgo=
--000000000000f3f0e405ae30085b
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

--000000000000f3f0e405ae30085b--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019