www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2001/02/04/06:04:03

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin AT sources DOT redhat DOT com
From: "m. adnan ali" <maali AT pnr DOT ca>
X-Sender: maali AT conan DOT eecg DOT toronto DOT edu
To: cygwin AT cygwin DOT com
Subject: gcc internal compiler error sig11
Message-ID: <Pine.LNX.4.21.0102040558580.31748-200000@conan.eecg.toronto.edu>
MIME-Version: 1.0
Date: Sun, 4 Feb 2001 06:01:52 -0500

--1686161418-1322450431-981284596=:31748
Content-Type: TEXT/PLAIN; charset=US-ASCII



hi,


version info 

C:\home\maali\dist\dist-basics\mbasic>gcc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/2.95.2-6/specs
gcc version 2.95.2-6 19991024 (cygwin experimental)

if i run

$ gcc -fsyntax-only basic.c


then i get 


...
...
basic.c:1177: warning: assignment from incompatible pointer type
      0 [main] cc1 412519
handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
    932 [main] cc1 412519 stackdump: Dumping stack trace to
CC1.EXE.stackdump
GCC: Internal compiler error: program cc1 got fatal signal 11

and i get this exact error every time (i don't think its 
a hardware issue).

the basic.c file is attached.


thanks for your consideration


adnan ali.

--1686161418-1322450431-981284596=:31748
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="BASIC.C"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine DOT LNX DOT 4 DOT 21 DOT 0102040603160 DOT 31748 AT conan DOT eecg DOT toronto DOT edu>
Content-Description: 
Content-Disposition: attachment; filename="BASIC.C"

LyoNDQogKiBNSUNSTy1CQVNJQzoNDQogKg0NCiAqIFRoaXMgaXMgYSBzbWFs
bCBJTlRFR0VSIEJBU0lDIGludGVycHJldGVyIHRoYXQgSSB3cm90ZSBhIG51
bWJlcg0NCiAqIG9mIHllYXJzIGFnbywgYW5kIHN1YnNlcXVlbnRseSBwb3J0
ZWQgdG8gTUlDUk8tQy4gV2hpbGUgbm90IGEgZ3JlYXQNDQogKiBleGFtcGxl
IG9mIGNvZGluZyBzdHlsZSAoaXQgd2FzIGEgcXVpY2sgYW5kIGRpcnR5IGhh
Y2sgam9iKSwgSXQgaXMNDQogKiBxdWl0ZSBpbnN0cnVjdGl2ZSwgYXMgYSBz
aW1wbGUgYnV0IGZhaXJseSBjb21wbGV0ZSBpbnRlcnByZXRlci4NDQogKg0N
CiAqIFZhcmlhYmxlczoNDQogKgkyNjAgTnVtZXJpYwkgIHZhcmlhYmxlcwk6
CUEwLUE5IC4uLiBaMC1aOQ0NCiAqCTI2MCBDaGFyYWN0ZXIgdmFyaWFibGVz
CToJQTAkLUE5JCAuLi4gWjAkLVo5JA0NCiAqCTI2MCBOdW1lcmljIGFycmF5
cwkJOglBMCgpLUE5KCkgLi4uIFowKCktWjkoKQ0NCiAqDQ0KICoJRm9yIGNv
bnZlbmllbmNlIHRoZSAnMCcgdmFyaWFibGVzIGNhbiBiZSByZWZlcmVuY2Vk
IGJ5IGxldHRlcg0NCiAqCW9ubHkuIElFOiBBIGlzIGVxdWl2YWxlbnQgdG8g
QTAgLi4uIFokIGlzIGVxdWl2YWxlbnQgdG8gWjAkDQ0KICoNDQogKiBTdGF0
ZW1lbnRzOg0NCiAqCUJFRVAgZnJlcSxtcwkJCS0gR2VuZXJhdGUgYSBCRUVQ
IG9uIHRoZSBQQyBzcGVha2VyDQ0KICoJQ0xFQVIJCQkJCS0gRXJhc2UgdmFy
aWFibGVzIG9ubHkNDQogKglDTE9TRSNuCQkJCQktIENsb3NlIGZpbGUgKDAt
OSkgb3BlbmVkIHdpdGggT1BFTg0NCiAqCURBVEEJCQkJCS0gRW50ZXIgImlu
bGluZSIgZGF0YSBzdGF0ZW1lbnRzDQ0KICoJREVMQVkgbXMJCQkJLSBTdG9w
cyBmb3IgdGhlIGluZGljYXRlZCB0aW1lDQ0KICoJRElNIHZhcihzaXplKVss
IC4uLiBdCS0gRGltZW5zaW9uIGFuIGFycmF5DQ0KICoJRE9TICJjb21hbmQi
CQkJLSBFeGVjdXRlIGEgRE9TIHByb2dyYW0NDQogKglFTkQJCQkJCQktIFRl
cm1pbmF0ZSBwcm9ncmFtIHdpdGggbm8gbWVzc2FnZQ0NCiAqCUVYSVQJCQkJ
CS0gVGVybWluYXRlIE1JQ1JPLUJBU0lDDQ0KICoJRk9SIHY9aW5pdCBUTyBs
aW1pdCBbU1RFUCBpbmNyZW1lbnRdIC0gUGVyZm9ybSBhIGNvdW50ZWQgbG9v
cA0NCiAqCUdPU1VCIGxpbmUJCQkJLSBDYWxsIGEgc3Vicm91dGluZQ0NCiAq
CUdPVE8gIGxpbmUJCQkJLSBKdW1wIHRvIGxpbmUNDQogKglJRiB0ZXN0IFRI
RU4gbGluZQkJLSBDb25kaXRpb25hbCBnb3RvDQ0KICoJSUYgdGVzdCBUSEVO
IHN0YXRlbWVudAktIENvbmRpdGlvbmFsIHN0YXRlbWVudCAobmV4dCBzdGF0
ZW1lbnQgb25seSkNDQogKglJTlBVVCB2YXIJCQkJLSBHZXQgdmFsdWUgZm9y
IHZhcmlhYmxlDQ0KICoJSU5QVVQgInByb21wdCIsdmFyCQktIEdldCB2YWx1
ZSBvZiB2YXJpYWJsZSB3aXRoIHByb21wdA0NCiAqCQlwcm9tcHQgbXVzdCBi
ZSBhIGNvbnN0YW50IHN0cmluZywgaG93ZXZlciB5b3UgY2FuIHVzZSBhIGNo
YXIgdmFyaWFibGUNDQogKgkJaW4gcHJvbXB0IGJ5IGNvbmNhdGluYXRpbmcg
aXQgdG8gc3VjaCBhIHN0cmluZzogSU5QVVQgIiIrYSQsYiQNDQogKglJTlBV
VCNuLHZhcgkJCQktIEdldCB2YWx1ZSBmb3IgdmFyaWFibGUgZnJvbSBmaWxl
ICgwLTkpDQ0KICoJTEVUIChkZWZhdWx0KQkJCS0gdmFyaWFibGUgPSBleHBy
ZXNzaW9uDQ0KICoJTElGIHRlc3QgVEhFTiBzdGF0ZW1lbnRzLSBMT05HIElG
IChhbGwgc3RhdGVtZW50cyB0byBlbmQgb2YgbGluZSkNDQogKglMSVNUIFtz
dGFydCxbZW5kXV0JCS0gTGlzdCBwcm9ncmFtIGxpbmVzDQ0KICoJTElTVCNu
IC4uLgkJCQktIExpc3QgcHJvZ3JhbSB0byBmaWxlICgwLTkpDQ0KICoJTE9B
RCAibmFtZSIJCQkJLSBMb2FkIHByb2dyYW0gZnJvbSBkaXNrIGZpbGUNDQog
KgkJV2hlbiBMT0FEIGlzIHVzZWQgd2l0aGluIGEgcHJvZ3JhbSwgZXhlY3V0
aW9uIGNvbnRpbnVlcyB3aXRoIHRoZQ0NCiAqCQlmaXJzdCBsaW5lIG9mIHRo
ZSBuZXdseSBsb2FkZWQgcHJvZ3JhbS4gSW4gdGhpcyBjYXNlLCB0aGUgdXNl
cg0NCiAqCQl2YXJpYWJsZXMgYXJlIE5PVCBjbGVhcmVkLiBUaGlzIHByb3Zp
ZGVzIGEgbWVhbnMgb2YgY2hhaW5pbmcNDQogKgkJdG8gYSBuZXcgcHJvZ3Jh
bSwgYW5kIHBhc3NpbmcgaW5mb3JtYXRpb24gdG8gaXQuDQ0KICoJCUFsc28g
bm90ZSB0aGF0IExPQUQgbXVzdCBiZSB0aGUgTEFTVCBzdGF0ZW1lbnQgb24g
YSBsaW5lLg0NCiAqCU5FVwkJCQkJCS0gRXJhc2UgcHJvZ3JhbSBhbmQgdmFy
aWFibGVzDQ0KICoJTkVYVCBbdl0JCQkJLSBFbmQgY291bnRlZCBsb29wDQ0K
ICoJT1BFTiNuLCJuYW1lIiwib3B0cyIJLSBPcGVuIGZpbGUgKDAtOSksIG9w
dHMgYXJlIHNhbWUgYXMgImZvcGVuKCkiDQ0KICoJT1JERVIgbGluZQkJCQkt
IFBvc2l0aW9uIGRhdGEgcmVhZCBwb2ludGVyDQ0KICoJT1VUIHBvcnQsZXhw
cgkJCS0gV3JpdGUgdG8gSS9PIHBvcnQNDQogKglQUklOVCBleHByWyxleHBy
IC4uLl0JLSBQcmludCB0byBjb25zb2xlDQ0KICoJUFJJTlQjbiwuLi4JCQkJ
LSBQcmludCB0byBmaWxlICgwLTkpDQ0KICoJUkVBRCB2YXJbLHZhciAuLi5d
CQktIFJlYWQgZGF0YSBmcm9tIHByb2dyYW0gc3RhdGVtZW50cw0NCiAqCQlZ
b3UgTVVTVCBpc3N1ZSBhbiAiT1JERVIiIHN0YXRlbWVudCB0YXJnZXRpbmcg
YSBsaW5lDQ0KICoJCWNvbnRhaW5pbmcgYSB2YWxpZCBEQVRBIHN0YXRlbWVu
dCBiZWZvcmUgdXNpbmcgUkVBRA0NCiAqCVJFVFVSTgkJCQkJLSBSZXR1cm4g
ZnJvbSBzdWJyb3V0aW5lDQ0KICoJUkVNCQkJCQkJLSBDb21tZW50Li4uIHJl
bWluZGVyIG9mIGxpbmUgaXMgaWdub3JlZA0NCiAqCVJVTiBbbGluZV0JCQkJ
LSBSdW4gcHJvZ3JhbQ0NCiAqCVNBVkUgWyJuYW1lIl0JCQktIFNhdmUgcHJv
Z3JhbSB0byBkaXNrIGZpbGUNDQogKglTVE9QCQkJCQktIFRlcm1pbmF0ZSBw
cm9ncmFtICYgaXNzdWUgbWVzc2FnZQ0NCiAqDQ0KICogT3BlcmF0b3JzOg0N
CiAqCSsJCQkJCQktIEFkZGl0aW9uLCBzdHJpbmcgY29uY2F0aW5hdGlvbg0N
CiAqCS0JCQkJCQktIFVuYXJ5IG1pbnVzLCBzdWJ0cmFjdGlvbg0NCiAqCSos
IC8sICUsCQkJCS0gbXVsdGlwbGljYXRpb24sIGRpdmlzaW9uLCBtb2R1bHVz
DQ0KICoJJiwgfCwgXgkJCQkJLSBBTkQsIE9SLCBFeGNsdXNpdmUgT1INDQog
Kgk9LCA8PgkJCQkJLSBBc3NpZ24vdGVzdCBlcXVhbCwgdGVzdCBOT1RlcXVh
bCAobnVtIG9yIHN0cmluZykNDQogKgk8LCA8PSwgPiwgPj0JCQktIExULCBM
RSwgR1QsIEdFIChudW1iZXJzIG9ubHkpDQ0KICoJIQkJCQkJCS0gVW5hcnkg
Tk9UDQ0KICoJCVRoZSAidGVzdCIgb3BlcmF0b3JzICg9LCA8PiwgPCwgPD0s
ID4sID49KSBjYW4gYmUgdXNlZCBpbiBhbnkNDQogKgkJZXhwcmVzc2lvbiwg
YW5kIGV2YWx1YXRlIHRvIDEgb2YgdGhlIHRlc3QgaXMgVFJVRSwgYW5kIDAg
aWYgaXQNDQogKgkJaXMgRkFMU0UuIFRoZSBJRiBhbmQgTElGIGNvbW1hbmRz
IGFjY2VwdCBhbnkgbm9uLXplcm8gdmFsdWUgdG8NDQogKgkJaW5kaWNhdGUg
YSBUUlVFIGNvbmRpdGlvbi4NDQogKg0NCiAqIEZ1bmN0aW9uczoNDQogKglD
SFIkKHZhbHVlKQkJCQktIFJldHVybnMgY2hhcmFjdGVyIG9mIHBhc3NlZCB2
YWx1ZQ0NCiAqCVNUUiQodmFsdWUpCQkJCS0gUmV0dXJucyBBU0NJSSBzdHJp
bmcgb2YgdmFsdWUncyBkaWdpdHMNDQogKglBU0MoY2hhcikJCQkJLSBSZXR1
cm5zIHZhbHVlIG9mIHBhc3NlZCBjaGFyYWN0ZXINDQogKglOVU0oc3RyaW5n
KQkJCQktIENvbnZlcnQgc3RyaW5nIHRvIG51bWJlcg0NCiAqCUFCUyh2YWx1
ZSkJCQkJLSBSZXR1cm5zIGFic29sdXRlIHZhbHVlIG9mIGFyZ3VtZW50DQ0K
ICoJUk5EKHZhbHVlKQkJCQktIFJldHVybnMgcmFuZG9tIG51bWJlciBmcm9t
IDAgdG8gKHZhbHVlLTEpDQ0KICoJS0VZKCkJCQkJCS0gVGVzdCBmb3Iga2V5
IGZyb20ga2V5Ym9hcmQNDQogKglJTlAocG9ydCkJCQkJLSBSZWFkIGFuIEkv
TyBwb3J0DQ0KICoNDQogKiBDb3B5cmlnaHQgMTk4Mi0yMDAwIERhdmUgRHVu
ZmllbGQNDQogKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0NCiAqDQ0KICogUGVy
bWlzc2lvbiBncmFudGVkIGZvciBwZXJzb25hbCAobm9uLWNvbW1lcmNpYWwp
IHVzZSBvbmx5Lg0NCiAqDQ0KICogQ29tcGlsZSBjb21tYW5kOiBjYyBiYXNp
YyAtZm9wDQ0KICovDQ0KI2luY2x1ZGUgPHN0ZGlvLmg+DQ0KI2luY2x1ZGUg
PHNldGptcC5oPg0NCg0NCi8qIEZpeGVkIHBhcmFtZXRlcnMgKi8NDQojZGVm
aW5lIEJVRkZFUl9TSVpFIDEwMAkJLyogaW5wdXQgYnVmZmVyIHNpemUgKi8N
DQojZGVmaW5lIE5VTV9WQVIgCTI2MAkJLyogbnVtYmVyIG9mIHZhcmlhYmxl
cyAqLw0NCiNkZWZpbmUgU0FfU0laRSAJMTAwCQkvKiBzdHJpbmcgYWNjdW11
bGF0b3Igc2l6ZSAqLw0NCg0NCi8qIENvbnRyb2wgc3RhY2sgY29uc3RhbnQg
aWRlbnRpZmllcnMgKi8NDQojZGVmaW5lIF9GT1IJCTEwMDAJLyogaW5kaWNh
dGUgRk9SIHN0YXRlbWVudCAqLw0NCiNkZWZpbmUgX0dPU1VCCQlfRk9SKzEJ
LyogaW5kaWNhdGUgR09TVUIgc3RhdGVtZW50ICovDQ0KDQ0KLyogUHJpbWFy
eSBrZXl3b3JkcyAqLw0NCiNkZWZpbmUJTEVUCQkxDQ0KI2RlZmluZQlFWElU
CTINDQojZGVmaW5lCUxJU1QJMw0NCiNkZWZpbmUJTkVXCQk0DQ0KI2RlZmlu
ZQlSVU4JCTUNDQojZGVmaW5lCUNMRUFSCTYNDQojZGVmaW5lCUdPU1VCCTcN
DQojZGVmaW5lCUdPVE8JOA0NCiNkZWZpbmUJUkVUVVJOCTkNDQojZGVmaW5l
CVBSSU5UCTEwDQ0KI2RlZmluZQlGT1IJCTExDQ0KI2RlZmluZQlORVhUCTEy
DQ0KI2RlZmluZQlJRgkJMTMNDQojZGVmaW5lCUxJRgkJMTQNDQojZGVmaW5l
CVJFTQkJMTUNDQojZGVmaW5lCVNUT1AJMTYNDQojZGVmaW5lCUVORAkJMTcN
DQojZGVmaW5lCUlOUFVUCTE4DQ0KI2RlZmluZQlPUEVOCTE5DQ0KI2RlZmlu
ZQlDTE9TRQkyMA0NCiNkZWZpbmUJRElNCQkyMQ0NCiNkZWZpbmUJT1JERVIJ
MjINDQojZGVmaW5lCVJFQUQJMjMNDQojZGVmaW5lCURBVEEJMjQNDQojZGVm
aW5lCVNBVkUJMjUNDQojZGVmaW5lCUxPQUQJMjYNDQojZGVmaW5lCURFTEFZ
CTI3DQ0KI2RlZmluZQlCRUVQCTI4DQ0KI2RlZmluZQlET1MJCTI5DQ0KI2Rl
ZmluZQlPVVQJCTMwDQ0KDQ0KLyogU2Vjb25kYXJ5IGtleXdvcmRzICovDQ0K
I2RlZmluZQlUTwkJMzEJLyogQWxzbyB1c2VkIGFzIG1hcmtlciAqLw0NCiNk
ZWZpbmUJU1RFUAkzMg0NCiNkZWZpbmUJVEhFTgkzMw0NCg0NCi8qIE9wZXJh
dG9ycyBhbmQgZnVuY3Rpb25zICovDQ0KI2RlZmluZQlBREQJCTM0CS8qIEFs
c28gdXNlZCBhcyBtYXJrZXIgKi8NDQojZGVmaW5lCVNVQgkJMzUNDQojZGVm
aW5lCU1VTAkJMzYNDQojZGVmaW5lCURJVgkJMzcNDQojZGVmaW5lCU1PRAkJ
MzgNDQojZGVmaW5lCUFORAkJMzkNDQojZGVmaW5lCU9SCQk0MA0NCiNkZWZp
bmUJWE9SCQk0MQ0NCiNkZWZpbmUJRVEJCTQyDQ0KI2RlZmluZQlORQkJNDMN
DQojZGVmaW5lCUxFCQk0NA0NCiNkZWZpbmUJTFQJCTQ1DQ0KI2RlZmluZQlH
RQkJNDYNDQojZGVmaW5lCUdUCQk0Nw0NCiNkZWZpbmUJQ0hSCQk0OA0NCiNk
ZWZpbmUJU1RSCQk0OQ0NCiNkZWZpbmUJQVNDCQk1MA0NCiNkZWZpbmUJQUJT
CQk1MQ0NCiNkZWZpbmUJTlVNCQk1Mg0NCiNkZWZpbmUJUk5ECQk1Mw0NCiNk
ZWZpbmUJS0VZCQk1NA0NCiNkZWZpbmUJSU5QCQk1NQ0NCg0NCiNkZWZpbmUJ
UlVOMQk5OQ0NCg0NCi8qIE1ha2Ugc3VyZSB0aGlzIHRva2VuIHRhYmxlIG1h
dGNoZXMgdGhlIGFib3ZlIGRlZmluaXRpb25zICovDQ0Kc3RhdGljIGNoYXIg
KnJlc2VydmVkX3dvcmRzW10gPSB7DQ0KCSJMRVQiLCAiRVhJVCIsICJMSVNU
IiwgIk5FVyIsICJSVU4iLCAiQ0xFQVIiLCAiR09TVUIiLCAiR09UTyIsDQ0K
CSJSRVRVUk4iLCAiUFJJTlQiLCAiRk9SIiwgIk5FWFQiLCAiSUYiLCAiTElG
IiwgIlJFTSIsICJTVE9QIiwNDQoJIkVORCIsICJJTlBVVCIsICJPUEVOIiwg
IkNMT1NFIiwgIkRJTSIsICJPUkRFUiIsICJSRUFEIiwgIkRBVEEiLA0NCgki
U0FWRSIsICJMT0FEIiwgIkRFTEFZIiwgIkJFRVAiLCAiRE9TIiwgIk9VVCIs
DQ0KCSJUTyIsICJTVEVQIiwgIlRIRU4iLA0NCgkiKyIsICItIiwgIioiLCAi
LyIsICIlIiwgIiYiLCAifCIsICJeIiwNDQoJIj0iLCAiPD4iLCAiPD0iLCAi
PCIsICI+PSIsICI+IiwNDQoJIkNIUiQoIiwgIlNUUiQoIiwgIkFTQygiLCAi
QUJTKCIsICJOVU0oIiwgIlJORCgiLCAiS0VZKCIsICJJTlAoIiwNDQoJMCB9
Ow0NCg0NCi8qIFRhYmxlIG9mIG9wZXJhdG9yIHByaW9yaXRpZXMgKi8NDQpz
dGF0aWMgY2hhciBwcmlvcml0eVtdID0geyAwLCAxLCAxLCAyLCAyLCAyLCAz
LCAzLCAzLCAxLCAxLCAxLCAxLCAxLCAxIH07DQ0KDQ0KLyogVGFibGUgb2Yg
ZXJyb3IgbWVzc2FnZXMgKi8NDQpzdGF0aWMgY2hhciAqZXJyb3JfbWVzc2Fn
ZXNbXSA9IHsNDQoJIlN5bnRheCIsDQ0KCSJJbGxlZ2FsIHByb2dyYW0iLA0N
CgkiSWxsZWdhbCBkaXJlY3QiLA0NCgkiTGluZSBudW1iZXIiLA0NCgkiV3Jv
bmcgdHlwZSIsDQ0KCSJEaXZpZGUgYnkgemVybyIsDQ0KCSJOZXN0aW5nIiwN
DQoJIkZpbGUgbm90IG9wZW4iLA0NCgkiRmlsZSBhbHJlYWR5IG9wZW4iLA0N
CgkiSW5wdXQiLA0NCgkiRGltZW5zaW9uIiwNDQoJIkRhdGEiLA0NCgkiT3V0
IG9mIG1lbW9yeSINDQoJfTsNDQoNDQpzdHJ1Y3QgbGluZV9yZWNvcmQgew0N
Cgl1bnNpZ25lZCBMbnVtYmVyOw0NCglzdHJ1Y3QgbGluZV9yZWNvcmQgKkxs
aW5rOw0NCgljaGFyIEx0ZXh0W107IH07DQ0KDQ0KY2hhciBzYTFbU0FfU0la
RV0sIHNhMltTQV9TSVpFXTsJCS8qIFN0cmluZyBhY2N1bXVsYXRvcnMgKi8N
DQpzdHJ1Y3QgbGluZV9yZWNvcmQgKnBnbV9zdGFydCwJCQkvKiBJbmRpY2F0
ZXMgc3RhcnQgb2YgcHJvZ3JhbSAqLw0NCgkqcnVucHRyLAkJCQkJCQkvKiBM
aW5lIHdlIGFyZSBSVU5ubmluZyAqLw0NCgkqcmVhZHB0cjsJCQkJCQkJLyog
TGluZSB3ZSBhcmUgUkVBRGluZyAqLw0NCg0NCnVuc2lnbmVkIGRpbV9jaGVj
a1tOVU1fVkFSXTsJCQkvKiBDaGVjayBkaW0gc2l6ZXMgZm9yIGFycmF5cyAq
Lw0NCg0NCkZJTEUgKmZpbGVpbiwgKmZpbGVvdXQ7CQkJCQkvKiBGaWxlIEkv
TyBhY3RpdmUgcG9pbnRlcnMgKi8NDQoNDQpqbXBfYnVmIHNhdmptcDsJCQkJ
CQkJLyogU2F2ZSBhcmVhIGZvciBzZXQvbG9uZ2ptcCAqLw0NCg0NCi8qIE1p
c2MuIGdsb2JhbCB2YXJpYWJsZXMgKi8NDQpjaGFyICpjbWRwdHIsCQkJCQkJ
CS8qIENvbW1hbmQgbGluZSBwYXJzZSBwb2ludGVyICovDQ0KCSpkYXRhcHRy
LAkJCQkJCQkvKiBSZWFkIGRhdGEgcG9pbnRlciAqLw0NCglidWZmZXJbQlVG
RkVSX1NJWkVdLAkJCQkvKiBHZW5lcmFsIGlucHV0IGJ1ZmZlciAqLw0NCglt
b2RlID0gMCwJCQkJCQkJLyogMD1TdG9wcGVkLCAhMD1SdW5uaW5nICovDQ0K
CWV4cHJfdHlwZSwJCQkJCQkJLyogVHlwZSBvZiBsYXN0IGV4cHJlc3Npb24g
Ki8NDQoJbmVzdDsJCQkJCQkJCS8qIE5lc3QgbGV2ZWwgb2YgZXhwci4gcGFy
c2VyICovDQ0KdW5zaWduZWQgbGluZSwJCQkJCQkJLyogQ3VycmVudCBsaW5l
IG51bWJlciAqLw0NCgljdGxfcHRyID0gMCwJCQkJCQkvKiBDb250cm9sIHN0
YWNrIHBvaW50ZXIgKi8NDQoJY3RsX3N0a1s1MF07CQkJCQkJLyogQ29udHJv
bCBzdGFjayAqLw0NCg0NCi8qDQ0KICogVGhlIGZvbGxvd2luZyB2YXJpYWJs
ZXMgbXVzdCBiZSBpbmlpdGlhbGl6ZWQgdG8gemVyby4gSWYgeW91cg0NCiAq
IGNvbXBpbGVyIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgemVybyB1bmluaXRp
YWxpemVkIGdsb2JhbA0NCiAqIHZhcmlhYmxlcywgbW9kaWZ5IHRoZXNlIGRl
Y2xhcmF0aW9ucyB0byBpbml0aWFsaXplIHRoZW0uDQ0KICovDQ0KY2hhciBm
aWxlbmFtZVs2NV07CQkJCQkJLyogTmFtZSBvZiBwcm9ncmFtIGZpbGUgKi8N
DQpGSUxFICpmaWxlc1sxMF07CQkJCQkJLyogRmlsZSB1bml0IG51bWJlcnMg
Ki8NDQppbnQgbnVtX3ZhcnNbTlVNX1ZBUl07CQkJCQkvKiBOdW1lcmljIHZh
cmlhYmxlcyAqLw0NCmludCAqZGltX3ZhcnNbTlVNX1ZBUl07CQkJCQkvKiBE
aW1lbnNpb25lZCBhcnJheXMgKi8NDQpjaGFyICpjaGFyX3ZhcnNbTlVNX1ZB
Ul07CQkJCS8qIENoYXJhY3RlciB2YXJpYWJsZXMgKi8NDQoNDQovKg0NCiAq
IFRlc3QgZm9yIGVuZCBvZiBleHByZXNzaW9uDQ0KICovDQ0KaW50IGlzX2Vf
ZW5kKGNoYXIgYykNDQp7DQ0KCWlmKChjID49ICgtMTI4K1RPKSkgJiYgKGMg
PCAoLTEyOCtBREQpKSkNDQoJCXJldHVybigxKTsNDQoJcmV0dXJuIChjID09
ICdcMCcpIHx8IChjID09ICc6JykgfHwgKGMgPT0gJyknKSB8fCAoYyA9PSAn
LCcpOw0NCn0NDQoNDQovKg0NCiAqIFRlc3QgZm9yIGVuZCBvZiBzdGF0ZW1l
bnQNDQogKi8NDQppbnQgaXNfbF9lbmQoY2hhciBjKQ0NCnsNDQoJcmV0dXJu
IChjID09ICdcMCcpIHx8IChjID09ICc6Jyk7DQ0KfQ0NCg0NCi8qDQ0KICog
VGVzdCBmb3IgdGVybWluYXRvciBjaGFyYWN0ZXINDQogKi8NDQppbnQgaXN0
ZXJtKGNoYXIgYykNDQp7DQ0KCXJldHVybiAoYyA9PSAnICcpIHx8IChjID09
ICdcdCcpOw0NCn0NDQoNDQovKg0NCiAqIEFkdmFuY2UgdG8gbmV4dCBub24t
YmxhbmsgJiByZXRyZWl2ZSBkYXRhDQ0KICovDQ0KY2hhciBza2lwX2JsYW5r
KCkNDQp7DQ0KCXdoaWxlKGlzdGVybSgqY21kcHRyKSkNDQoJCSsrY21kcHRy
Ow0NCglyZXR1cm4gKmNtZHB0cjsNDQp9DQ0KDQ0KLyoNDQogKiBBZHZhbmNl
IHRvLiwgcmV0cmlldmUgYW5kIHNraXAgbmV4dCBub24gYmxhbmsNDQogKi8N
DQpjaGFyIGdldF9uZXh0KCkNDQp7DQ0KCWNoYXIgYzsNDQoNDQoJd2hpbGUo
aXN0ZXJtKGM9KmNtZHB0cikpDQ0KCQkrK2NtZHB0cjsNDQoJaWYoYykNDQoJ
CSsrY21kcHRyOw0NCglyZXR1cm4gYzsNDQp9DQ0KDQ0KLyoNDQogKiBUZXN0
IGZvciBhIHNwZWNpZmljIGNoYXJhY3RlciBvY2N1cmluZyBuZXh0ICYgcmVt
b3ZlIGlmIGZvdW5kDQ0KICovDQ0KaW50IHRlc3RfbmV4dChpbnQgdG9rZW4p
DQ0Kew0NCglpZihza2lwX2JsYW5rKCkgPT0gdG9rZW4pIHsNDQoJCSsrY21k
cHRyOw0NCgkJcmV0dXJuIC0xOyB9DQ0KCXJldHVybiAwOw0NCn0NDQoNDQov
Kg0NCiAqIEV4cGVjdCBhIHNwZWNpZmljIHRva2VuIC0gc3ludGF4IGVycm9y
IGlmIG5vdCBmb3VuZA0NCiAqLw0NCmV4cGVjdChpbnQgdG9rZW4pDQ0Kew0N
CglpZihnZXRfbmV4dCgpICE9IHRva2VuKQ0NCgkJZXJyb3IoMCk7DQ0KfQ0N
Cg0NCi8qDQ0KICogTG9va3VwIHVwIHdvcmQgZnJvbSBjb21tYW5kIGxpbmUg
aW4gdGFibGUNDQogKi8NDQp1bnNpZ25lZCBsb29rdXAoY2hhciAqdGFibGVb
XSkNDQp7DQ0KCXVuc2lnbmVkIGk7DQ0KCWNoYXIgKmNwdHIsICpvcHRyOw0N
Cg0NCglvcHRyID0gY21kcHRyOw0NCglmb3IoaT0wOyBjcHRyID0gdGFibGVb
aV07ICsraSkgew0NCgkJd2hpbGUoKCpjcHRyKSAmJiAoKmNwdHIgPT0gdG91
cHBlcigqY21kcHRyKSkpIHsNDQoJCQkrK2NwdHI7DQ0KCQkJKytjbWRwdHI7
IH0NDQoJCWlmKCEqY3B0cikgew0NCgkJCWlmKCEgKGlzYWxudW0oKihjcHRy
LTEpKSAmJiBpc2FsbnVtKCpjbWRwdHIpKSApIHsNDQoJCQkJc2tpcF9ibGFu
aygpOw0NCgkJCQlyZXR1cm4gaSsxOyB9IH0NDQoJCWNtZHB0ciA9IG9wdHI7
IH0NDQoJcmV0dXJuIDA7DQ0KfQ0NCg0NCi8qDQ0KICogR2V0IGEgbnVtYmVy
IGZyb20gdGhlIGlucHV0IGJ1ZmZlcg0NCiAqLw0NCnVuc2lnbmVkIGdldF9u
dW0oKQ0NCnsNDQoJdW5zaWduZWQgdmFsdWU7DQ0KCWNoYXIgYzsNDQoNDQoJ
dmFsdWUgPSAwOw0NCgl3aGlsZShpc2RpZ2l0KGM9KmNtZHB0cikpIHsNDQoJ
CSsrY21kcHRyOw0NCgkJdmFsdWUgPSAodmFsdWUgKiAxMCkgKyAoYyAtICcw
Jyk7IH0NDQoJcmV0dXJuIHZhbHVlOw0NCn0NDQoNDQovKg0NCiAqIEFsbG9j
YXRlIG1lbW9yeSBhbmQgemVybyBpdA0NCiAqLw0NCmNoYXIgKmFsbG9jYXRl
KHVuc2lnbmVkIHNpemUpDQ0Kew0NCgljaGFyICpwdHI7DQ0KCWlmKCEocHRy
ID0gbWFsbG9jKHNpemUpKSkNDQoJCWVycm9yKDEyKTsNDQoJbWVtc2V0KHB0
ciwgMCwgc2l6ZSk7DQ0KCXJldHVybiBwdHI7DQ0KfQ0NCg0NCi8qDQ0KICog
RGVsZXRlIGEgbGluZSBmcm9tIHRoZSBwcm9ncmFtDQ0KICovDQ0KZGVsZXRl
X2xpbmUodW5zaWduZWQgbGlubykNDQp7DQ0KCXN0cnVjdCBsaW5lX3JlY29y
ZCAqY3B0ciwgKmJwdHI7DQ0KDQ0KCWlmKCEoY3B0ciA9IHBnbV9zdGFydCkp
CQkJCQkvKiBubyBsaW5lcyBpbiBwZ20gKi8NDQoJCXJldHVybjsNDQoJZG8g
ew0NCgkJaWYobGlubyA9PSBjcHRyLT5MbnVtYmVyKSB7CQkJLyogd2UgaGF2
ZSBsaW5lIHRvIGRlbGV0ZSAqLw0NCgkJCWlmKGNwdHIgPT0gcGdtX3N0YXJ0
KSB7CQkJLyogZmlyc3QgbGluZSBpbiBwZ20gKi8JDQ0KCQkJCXBnbV9zdGFy
dCA9IGNwdHItPkxsaW5rOw0NCgkJCQlyZXR1cm47IH0NDQoJCQllbHNlIHsN
DQoJCQkJYnB0ci0+TGxpbmsgPSBjcHRyLT5MbGluazsJLyogc2tpcCBpdCBp
biBsaW5rZWQgbGlzdCAqLw0NCgkJCQlmcmVlKGNwdHIpOyB9IH0JCQkJLyog
bGV0IGl0IGdvICovDQ0KCQlicHRyID0gY3B0cjsgfQ0NCgl3aGlsZShjcHRy
ID0gY3B0ci0+TGxpbmspOw0NCn0NDQoNDQovKg0NCiAqIEluc2VydCBhIGxp
bmUgaW50byB0aGUgcHJvZ3JhbQ0NCiAqLw0NCmluc2VydF9saW5lKHVuc2ln
bmVkIGxpbm8pDQ0Kew0NCgl1bnNpZ25lZCBpOw0NCglzdHJ1Y3QgbGluZV9y
ZWNvcmQgKmNwdHIsICpicHRyLCAqb3B0cjsNDQoJY2hhciAqcHRyOw0NCg0N
CglwdHIgPSBjbWRwdHI7DQ0KCWZvcihpPTU7ICpwdHI7ICsraSkNDQoJCSsr
cHRyOw0NCglicHRyID0gYWxsb2NhdGUoaSk7DQ0KCWJwdHItPkxudW1iZXIg
PSBsaW5vOw0NCglmb3IoaT0wOyAqY21kcHRyOyArK2kpDQ0KCQlicHRyLT5M
dGV4dFtpXSA9ICpjbWRwdHIrKzsNDQoJYnB0ci0+THRleHRbaV0gPSAwOw0N
CglpZigoIShjcHRyID0gcGdtX3N0YXJ0KSkgfHwgKGxpbm8gPCBjcHRyLT5M
bnVtYmVyKSkgewkvKiBhdCBzdGFydCAqLw0NCgkJYnB0ci0+TGxpbmsgPSBw
Z21fc3RhcnQ7DQ0KCQlwZ21fc3RhcnQgPSBicHRyOyB9DQ0KCWVsc2UgewkJ
CQkvKiBpbnNlcnRpbmcgaW50byBtYWluIHBhcnQgb2YgcGdtICovDQ0KCQlm
b3IoOzspIHsNDQoJCQlvcHRyID0gY3B0cjsNDQoJCQlpZigoIShjcHRyID0g
Y3B0ci0+TGxpbmspKSB8fCAobGlubyA8IGNwdHItPkxudW1iZXIpKSB7DQ0K
CQkJCWJwdHItPkxsaW5rID0gb3B0ci0+TGxpbms7DQ0KCQkJCW9wdHItPkxs
aW5rID0gYnB0cjsNDQoJCQkJYnJlYWs7IH0gfSB9DQ0KfQ0NCg0NCi8qDQ0K
ICogVG9rZW5pemUgaW5wdXQgbGluZSBhbmQgQWRkL1JlcGxhY2UgYSBzb3Vy
Y2UgbGluZSBpZiBzdWl0YWJsZQ0NCiAqLw0NCmVkaXRfcHJvZ3JhbSgpDQ0K
ew0NCgl1bnNpZ25lZCB2YWx1ZTsNDQoJY2hhciAqcHRyLCBjOw0NCg0NCglj
bWRwdHIgPSBwdHIgPSBidWZmZXI7DQ0KCS8qIFRyYW5zbGF0ZSBzcGVjaWFs
IHRva2VucyBpbnRvIGNvZGVzICovDQ0KCXdoaWxlKGMgPSAqY21kcHRyKSB7
DQ0KCQlpZih2YWx1ZSA9IGxvb2t1cChyZXNlcnZlZF93b3JkcykpDQ0KCQkJ
KnB0cisrID0gdmFsdWUgfCAweDgwOw0NCgkJZWxzZSB7DQ0KCQkJKnB0cisr
ID0gYzsNDQoJCQkrK2NtZHB0cjsNDQoJCQlpZihjID09ICciJykgewkJLyog
ZG91YmxlIHF1b3RlICovDQ0KCQkJCXdoaWxlKChjID0gKmNtZHB0cikgJiYg
KGMgIT0gJyInKSkgew0NCgkJCQkJKytjbWRwdHI7DQ0KCQkJCQkqcHRyKysg
PSBjOyB9DQ0KCQkJCSpwdHIrKyA9ICpjbWRwdHIrKzsgfSB9IH0NDQoJKnB0
ciA9IDA7DQ0KCWNtZHB0ciA9IGJ1ZmZlcjsNDQoNDQoJaWYoaXNkaWdpdChz
a2lwX2JsYW5rKCkpKSB7CS8qIFZhbGlkIHNvdXJjZSBsaW5lICovDQ0KCQl2
YWx1ZSA9IGdldF9udW0oKTsJCS8qIEdldCBsaW5lIG51bWJlciAqLw0NCgkJ
ZGVsZXRlX2xpbmUodmFsdWUpOwkJLyogRGVsZXRlIHRoZSBvbGQgKi8NDQoJ
CWlmKHNraXBfYmxhbmsoKSkNDQoJCQlpbnNlcnRfbGluZSh2YWx1ZSk7DQ0K
CQlyZXR1cm4gLTE7IH0JCQkvKiBJbnNlcnQgdGhlIG5ldyAqLw0NCglyZXR1
cm4gMDsNDQp9DQ0KDQ0KLyoNDQogKiBMb2NhdGUgZ2l2ZW4gbGluZSBpbiBz
b3VyY2UNDQogKi8NDQpzdHJ1Y3QgbGluZV9yZWNvcmQgKmZpbmRfbGluZSh1
bnNpZ25lZCBsaW5lKQ0NCnsNDQoJc3RydWN0IGxpbmVfcmVjb3JkICpjcHRy
Ow0NCg0NCglmb3IoY3B0ciA9IHBnbV9zdGFydDsgY3B0cjsgY3B0ciA9IGNw
dHItPkxsaW5rKQ0NCgkJaWYoY3B0ci0+TG51bWJlciA9PSBsaW5lKQ0NCgkJ
CXJldHVybiBjcHRyOw0NCgllcnJvcigzKTsNDQp9DQ0KDQ0KLyoNDQogKiBD
b21wdXRlIHZhcmlhYmxlIGFkZHJlc3MgZm9yIGFzc2lnbm1lbnQNDQogKi8N
DQp1bnNpZ25lZCAqYWRkcmVzcygpDQ0Kew0NCgl1bnNpZ25lZCBpLCBqLCAq
ZHB0cjsNDQoJaSA9IGdldF92YXIoKTsNDQoJaWYoZXhwcl90eXBlKQ0NCgkJ
cmV0dXJuICZjaGFyX3ZhcnNbaV07DQ0KCWVsc2Ugew0NCgkJaWYodGVzdF9u
ZXh0KCcoJykpIHsJLyogQXJyYXkgKi8NDQoJCQlpZihleHByX3R5cGUpIGVy
cm9yKDApOw0NCgkJCWlmKCEoZHB0ciA9IGRpbV92YXJzW2ldKSkNDQoJCQkJ
ZXJyb3IoMTApOw0NCgkJCW5lc3QgPSAwOw0NCgkJCWlmKChqID0gZXZhbF9z
dWIoKSkgPj0gZGltX2NoZWNrW2ldKQ0NCgkJCQllcnJvcigxMCk7DQ0KCQkJ
cmV0dXJuICZkcHRyW2pdOyB9IH0NDQoJcmV0dXJuICZudW1fdmFyc1tpXTsN
DQp9DQ0KDQ0KLyoNDQogKiBFeGVjdXRlIGEgQkFTSUMgY29tbWFuZHMNDQog
Ki8NDQpzdHJ1Y3QgbGluZV9yZWNvcmQgKmV4ZWN1dGUoY2hhciBjbWQpDQ0K
ew0NCgl1bnNpZ25lZCBpLCBqLCBrLCAqZHB0cjsNDQoJaW50IGlpLCBqajsN
DQoJc3RydWN0IGxpbmVfcmVjb3JkICpjcHRyOw0NCgljaGFyIGM7DQ0KDQ0K
CXN3aXRjaChjbWQgJiAweDdGKSB7DQ0KCQljYXNlIExFVCA6DQ0KCQkJZHB0
ciA9IGFkZHJlc3MoKTsNDQoJCQlqID0gZXhwcl90eXBlOw0NCg0NCgkJCWV4
cGVjdCgtMTI4K0VRKTsNDQoNDQoJCQlrID0gZXZhbCgpOw0NCg0NCgkJCWlm
KGogIT0gZXhwcl90eXBlKQ0NCgkJCQllcnJvcigwKTsNDQoJCQlpZighZXhw
cl90eXBlKQkJLyogbnVtZXJpYyBhc3NpZ25tZW50ICovDQ0KCQkJCSpkcHRy
ID0gazsNDQoJCQllbHNlIHsJCQkJLyogY2hhcmFjdGVyIGFzc2lnbm1lbnQg
Ki8NDQoJCQkJaWYoKmRwdHIpDQ0KCQkJCQlmcmVlKCpkcHRyKTsNDQoJCQkJ
aWYoKnNhMSkNDQoJCQkJCXN0cmNweSgqZHB0ciA9IGFsbG9jYXRlKHN0cmxl
bihzYTEpKzEpLCBzYTEpOw0NCgkJCQllbHNlDQ0KCQkJCQkqZHB0ciA9IDA7
IH0NDQoJCQlicmVhazsNDQoJCWNhc2UgRVhJVCA6DQ0KCQkJZXhpdCgwKTsN
DQoJCWNhc2UgTElTVCA6DQ0KCQkJY2hrX2ZpbGUoMSk7DQ0KCQkJaWYoIWlz
ZGlnaXQoc2tpcF9ibGFuaygpKSkgew0NCgkJCQlpPTA7IGo9LTE7IH0NDQoJ
CQllbHNlIHsNDQoJCQkJaSA9IGdldF9udW0oKTsNDQoJCQkJaWYoZ2V0X25l
eHQoKSA9PSAnLCcpIHsNDQoJCQkJCWlmKGlzZGlnaXQoc2tpcF9ibGFuaygp
KSkNDQoJCQkJCQlqPWdldF9udW0oKTsNDQoJCQkJCWVsc2UNDQoJCQkJCQlq
ID0gLTE7IH0NDQoJCQkJZWxzZQ0NCgkJCQkJaj1pOyB9DQ0KCQkJZGlzcF9w
Z20oZmlsZW91dCxpLGopOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBORVcgOg0N
CgkJCWNsZWFyX3ZhcnMoKTsNDQoJCQljbGVhcl9wZ20oKTsNDQoJCQlsb25n
am1wKHNhdmptcCwgMSk7DQ0KCQljYXNlIFJVTiA6DQ0KCQkJZGlyZWN0X29u
bHkoKTsNDQoJCQljbGVhcl92YXJzKCk7DQ0KCQljYXNlIFJVTjEgOgkJLyog
Tm8gY2xlYXJpbmcgKi8NDQoJCQlpZihpc19lX2VuZChza2lwX2JsYW5rKCkp
KQ0NCgkJCQlydW5wdHIgPSBwZ21fc3RhcnQ7DQ0KCQkJZWxzZQ0NCgkJCQly
dW5wdHIgPSBmaW5kX2xpbmUoZXZhbF9udW0oKSk7DQ0KCQkJLS1tb2RlOwkJ
CS8qIGluZGljYXRlIHJ1bm5pbmcgKi8NDQpuZXdsaW5lOg0NCgkJCXdoaWxl
KHJ1bnB0cikgew0NCgkJCQljbWRwdHIgPSBydW5wdHItPkx0ZXh0Ow0NCgkJ
CQlsaW5lID0gcnVucHRyLT5MbnVtYmVyOw0NCgkJCQlkbyB7DQ0KCQkJCQlp
ZigoY21kID0gc2tpcF9ibGFuaygpKSA8IDApIHsNDQoJCQkJCQkrK2NtZHB0
cjsNDQoJCQkJCQlpZihkcHRyPWV4ZWN1dGUoY21kKSkgew0NCgkJCQkJCQly
dW5wdHIgPSBkcHRyOw0NCgkJCQkJCQlnb3RvIG5ld2xpbmU7IH0gfQ0NCgkJ
CQkJZWxzZQ0NCgkJCQkJCWV4ZWN1dGUoMSk7IH0NDQoJCQkJd2hpbGUoKGMg
PSBnZXRfbmV4dCgpKSA9PSAnOicpOw0NCgkJCQlpZihjKQ0NCgkJCQkJZXJy
b3IoMCk7DQ0KCQkJCXJ1bnB0ciA9IHJ1bnB0ci0+TGxpbms7IH0NDQoJCQlt
b2RlID0gMDsNDQoJCQlicmVhazsNDQoJCWNhc2UgQ0xFQVIgOg0NCgkJCWNs
ZWFyX3ZhcnMoKTsNDQoJCQlicmVhazsNDQoJCWNhc2UgR09TVUIgOg0NCgkJ
CWN0bF9zdGtbY3RsX3B0cisrXSA9IHJ1bnB0cjsNDQoJCQljdGxfc3RrW2N0
bF9wdHIrK10gPSBjbWRwdHI7DQ0KCQkJY3RsX3N0a1tjdGxfcHRyKytdID0g
X0dPU1VCOw0NCgkJY2FzZSBHT1RPIDoNDQoJCQlwZ21fb25seSgpOw0NCgkJ
CXJldHVybiBmaW5kX2xpbmUoZXZhbF9udW0oKSk7DQ0KCQljYXNlIFJFVFVS
TiA6DQ0KCQkJcGdtX29ubHkoKTsNDQoJCQlpZihjdGxfc3RrWy0tY3RsX3B0
cl0gIT0gX0dPU1VCKQ0NCgkJCQllcnJvcig2KTsNDQoJCQljbWRwdHIgPSBj
dGxfc3RrWy0tY3RsX3B0cl07DQ0KCQkJcnVucHRyID0gY3RsX3N0a1stLWN0
bF9wdHJdOw0NCgkJCWxpbmUgPSBydW5wdHItPkxudW1iZXI7DQ0KCQkJc2tp
cF9zdG10KCk7DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIFBSSU5UIDoNDQoJCQlj
aGtfZmlsZSgxKTsNDQoJCQlqID0gMDsNDQoJCQlkbyB7DQ0KCQkJCWlmKGlz
X2xfZW5kKHNraXBfYmxhbmsoKSkpDQ0KCQkJCQktLWo7DQ0KCQkJCWVsc2Ug
ew0NCgkJCQkJaSA9IGV2YWwoKTsNDQoJCQkJCWlmKCFleHByX3R5cGUpIHsN
DQoJCQkJCQludW1fc3RyaW5nKGksIHNhMSk7DQ0KCQkJCQkJcHV0YygnICcs
ZmlsZW91dCk7IH0NDQoJCQkJCWZwdXRzKHNhMSwgZmlsZW91dCk7IH0gfQ0N
CgkJCXdoaWxlKHRlc3RfbmV4dCgnLCcpKTsNDQoJCQlpZighaikNDQoJCQkJ
cHV0YygnXG4nLCBmaWxlb3V0KTsNDQoJCQlicmVhazsNDQoJCWNhc2UgRk9S
IDoNDQoJCQlwZ21fb25seSgpOw0NCgkJCWlpID0gMTsJCQkvKiBkZWZhdWx0
IHN0ZXAgdmFsdWUgKi8NDQoJCQlpID0gZ2V0X3ZhcigpOw0NCgkJCWlmKGV4
cHJfdHlwZSkgZXJyb3IoMCk7DQ0KCQkJZXhwZWN0KC0xMjgrRVEpOw0NCgkJ
CW51bV92YXJzW2ldID0gZXZhbCgpOw0NCgkJCWlmKGV4cHJfdHlwZSkgZXJy
b3IoMCk7DQ0KCQkJZXhwZWN0KC0xMjgrVE8pOw0NCgkJCWpqID0gZXZhbCgp
Ow0NCgkJCWlmKHRlc3RfbmV4dCgtMTI4K1NURVApKQ0NCgkJCQlpaSA9IGV2
YWwoKTsNDQoJCQlza2lwX3N0bXQoKTsNDQoJCQljdGxfc3RrW2N0bF9wdHIr
K10gPSBydW5wdHI7CS8qIGxpbmUgKi8NDQoJCQljdGxfc3RrW2N0bF9wdHIr
K10gPSBjbWRwdHI7CS8qIGNvbW1hbmQgcG9pbnRlciAqLw0NCgkJCWN0bF9z
dGtbY3RsX3B0cisrXSA9IGlpOwkJLyogc3RlcCB2YWx1ZSAqLw0NCgkJCWN0
bF9zdGtbY3RsX3B0cisrXSA9IGpqOwkJLyogbGltaXQgdmFsdWUgKi8NDQoJ
CQljdGxfc3RrW2N0bF9wdHIrK10gPSBpOwkJCS8qIHZhcmlhYmxlIG51bWJl
ciAqLw0NCgkJCWN0bF9zdGtbY3RsX3B0cisrXSA9IF9GT1I7DQ0KCQkJYnJl
YWs7DQ0KCQljYXNlIE5FWFQgOg0NCgkJCXBnbV9vbmx5KCk7DQ0KCQkJaWYo
Y3RsX3N0a1tjdGxfcHRyLTFdICE9IF9GT1IpDQ0KCQkJCWVycm9yKDYpOw0N
CgkJCWkgPSBjdGxfc3RrW2N0bF9wdHItMl07DQ0KCQkJaWYoIWlzX2xfZW5k
KHNraXBfYmxhbmsoKSkpDQ0KCQkJCWlmKGdldF92YXIoKSAhPSBpKSBlcnJv
cig2KTsNDQoJCQlqaiA9IGN0bF9zdGtbY3RsX3B0ci0zXTsJLyogZ2V0IGxp
bWl0ICovDQ0KCQkJaWkgPSBjdGxfc3RrW2N0bF9wdHItNF07CS8qIGdldCBz
dGVwICovDQ0KCQkJbnVtX3ZhcnNbaV0gKz0gaWk7DQ0KCQkJaWYoKGlpIDwg
MCkgPyBudW1fdmFyc1tpXSA+PSBqaiA6IG51bV92YXJzW2ldIDw9IGpqKSB7
DQ0KCQkJCWNtZHB0ciA9IGN0bF9zdGtbY3RsX3B0ci01XTsNDQoJCQkJcnVu
cHRyID0gY3RsX3N0a1tjdGxfcHRyLTZdOw0NCgkJCQlsaW5lID0gcnVucHRy
LT5MbnVtYmVyOyB9DQ0KCQkJZWxzZQ0NCgkJCQljdGxfcHRyIC09IDY7DQ0K
CQkJYnJlYWs7DQ0KCQljYXNlIElGIDoNDQoJCQlpID0gZXZhbF9udW0oKTsN
DQoJCQlleHBlY3QoLTEyOCtUSEVOKTsNDQoJCQlpZihpKSB7DQ0KCQkJCWlm
KGlzZGlnaXQoY21kID0gc2tpcF9ibGFuaygpKSkNDQoJCQkJCXJldHVybiBm
aW5kX2xpbmUoZXZhbF9udW0oKSk7DQ0KCQkJCWVsc2UgaWYoY21kIDwgMCkg
ew0NCgkJCQkJKytjbWRwdHI7DQ0KCQkJCQlyZXR1cm4gZXhlY3V0ZShjbWQp
OyB9DQ0KCQkJCWVsc2UNDQoJCQkJCWV4ZWN1dGUoMSk7IH0NDQoJCQllbHNl
DQ0KCQkJCXNraXBfc3RtdCgpOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBMSUYg
Og0NCgkJCWkgPSBldmFsX251bSgpOw0NCgkJCWV4cGVjdCgtMTI4K1RIRU4p
Ow0NCgkJCWlmKGkpIHsNDQoJCQkJaWYoKGNtZCA9IHNraXBfYmxhbmsoKSkg
PCAwKSB7DQ0KCQkJCQkrK2NtZHB0cjsNDQoJCQkJCXJldHVybiBleGVjdXRl
KGNtZCk7IH0NDQoJCQkJZWxzZQ0NCgkJCQkJZXhlY3V0ZSgxKTsNDQoJCQkJ
YnJlYWs7IH0NDQoJCWNhc2UgREFUQSA6DQ0KCQkJcGdtX29ubHkoKTsNDQoJ
CWNhc2UgUkVNIDoNDQoJCQlpZihtb2RlKSB7DQ0KCQkJCWlmKGNwdHIgPSBy
dW5wdHItPkxsaW5rKQ0NCgkJCQkJcmV0dXJuIGNwdHI7DQ0KCQkJCWxvbmdq
bXAoc2F2am1wLCAxKTsgfQ0NCgkJCWJyZWFrOw0NCgkJY2FzZSBTVE9QIDoN
DQoJCQlwZ21fb25seSgpOw0NCgkJCXByaW50ZigiU1RPUCBpbiBsaW5lICV1
XG4iLGxpbmUpOw0NCgkJY2FzZSBFTkQgOg0NCgkJCXBnbV9vbmx5KCk7DQ0K
CQkJbG9uZ2ptcChzYXZqbXAsIDEpOw0NCgkJY2FzZSBJTlBVVCA6DQ0KCQkJ
aWkgPSBjaGtfZmlsZSgxKTsNDQoJCQlpZihza2lwX2JsYW5rKCkgPT0gJyIn
KSB7CQkvKiBzcGVjaWFsIHByb21wdCAqLw0NCgkJCQlldmFsKCk7DQ0KCQkJ
CWV4cGVjdCgnLCcpOyB9DQ0KCQkJZWxzZQ0NCgkJCQlzdHJjcHkoc2ExLCAi
PyAiKTsNDQoJCQlkcHRyID0gYWRkcmVzcygpOw0NCgkJCWNwdHIgPSBjbWRw
dHI7DQ0KaW5wdXQ6CQlpZihpaSA9PSAtMSkNDQoJCQkJZnB1dHMoc2ExLCBz
dGRvdXQpOw0NCgkJCWNtZHB0ciA9IGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1
ZmZlciktMSAsZmlsZWluKTsNDQoJCQlpZihleHByX3R5cGUpIHsNDQoJCQkJ
aWYoKmRwdHIpIGZyZWUoKmRwdHIpOw0NCgkJCQlzdHJjcHkoKmRwdHIgPSBh
bGxvY2F0ZShzdHJsZW4oYnVmZmVyKSsxKSwgYnVmZmVyKTsgfQ0NCgkJCWVs
c2Ugew0NCgkJCQlrID0gMDsNDQoJCQkJaWYodGVzdF9uZXh0KCctJykpDQ0K
CQkJCQktLWs7DQ0KCQkJCWlmKCFpc2RpZ2l0KCpjbWRwdHIpKSB7DQ0KCQkJ
CQlpZihpaSAhPSAtMSkgZXJyb3IoOSk7DQ0KCQkJCQlmcHV0cygiSW5wdXQg
ZXJyb3JcbiIsc3Rkb3V0KTsNDQoJCQkJCWdvdG8gaW5wdXQ7IH0NDQoJCQkJ
aiA9IGdldF9udW0oKTsNDQoJCQkJKmRwdHIgPSAoaykgPyAwLWo6IGo7IH0N
DQoJCQljbWRwdHIgPSBjcHRyOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBPUEVO
IDoNDQoJCQlpZihza2lwX2JsYW5rKCkgIT0gJyMnKSBlcnJvcigwKTsNDQoJ
CQlpZihmaWxlc1tpID0gY2hrX2ZpbGUoMCldKSBlcnJvcig4KTsNDQoJCQll
dmFsX2NoYXIoKTsNDQoJCQlzdHJjcHkoYnVmZmVyLCBzYTEpOw0NCgkJCWV4
cGVjdCgnLCcpOw0NCgkJCWV2YWxfY2hhcigpOw0NCgkJCWZpbGVzW2ldID0g
Zm9wZW4oYnVmZmVyLHNhMSk7DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIENMT1NF
IDoNDQoJCQlpZigoaSA9IGNoa19maWxlKDEpKSA9PSAtMSkgZXJyb3IoMCk7
DQ0KCQkJaWYoIWZpbGVpbikgZXJyb3IoOCk7DQ0KCQkJZmNsb3NlKGZpbGVz
W2ldKTsNDQoJCQlmaWxlc1tpXSA9IDA7DQ0KCQkJYnJlYWs7DQ0KCQljYXNl
IERJTSA6DQ0KCQkJZG8gew0NCgkJCQlpZihkcHRyID0gZGltX3ZhcnNbaSA9
IGdldF92YXIoKV0pDQ0KCQkJCQlmcmVlKGRwdHIpOw0NCgkJCQlkaW1fdmFy
c1tpXSA9IGFsbG9jYXRlKChkaW1fY2hlY2tbaV0gPSBldmFsX251bSgpKzEp
ICogMik7IH0NDQoJCQl3aGlsZSh0ZXN0X25leHQoJywnKSk7DQ0KCQkJYnJl
YWs7DQ0KCQljYXNlIE9SREVSIDoNDQoJCQlyZWFkcHRyID0gZmluZF9saW5l
KGV2YWxfbnVtKCkpOw0NCgkJCWRwdHIgPSBjbWRwdHI7DQ0KCQkJY21kcHRy
ID0gcmVhZHB0ci0+THRleHQ7DQ0KCQkJaWYoZ2V0X25leHQoKSAhPSAtMTI4
K0RBVEEpDQ0KCQkJCWVycm9yKDExKTsNDQoJCQlkYXRhcHRyID0gY21kcHRy
Ow0NCgkJCWNtZHB0ciA9IGRwdHI7DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIFJF
QUQgOg0NCgkJCWRvIHsNDQoJCQkJZHB0ciA9IGFkZHJlc3MoKTsNDQoJCQkJ
aiA9IGV4cHJfdHlwZTsNDQoJCQkJY3B0ciA9IGNtZHB0cjsNDQoJCQkJY21k
cHRyID0gZGF0YXB0cjsNDQoJCQkJaWkgPSBsaW5lOw0NCgkJCQlpZighc2tp
cF9ibGFuaygpKSB7CQkvKiBFbmQgb2YgbGluZSAqLw0NCgkJCQkJcmVhZHB0
ciA9IHJlYWRwdHItPkxsaW5rOw0NCgkJCQkJY21kcHRyID0gcmVhZHB0ci0+
THRleHQ7DQ0KCQkJCQlpZihnZXRfbmV4dCgpICE9IC0xMjgrREFUQSkNDQoJ
CQkJCQllcnJvcigxMSk7IH0NDQoJCQkJbGluZSA9IHJlYWRwdHItPkxudW1i
ZXI7DQ0KCQkJCWsgPSBldmFsKCk7DQ0KCQkJCXRlc3RfbmV4dCgnLCcpOw0N
CgkJCQlkYXRhcHRyID0gY21kcHRyOw0NCgkJCQljbWRwdHIgPSBjcHRyOw0N
CgkJCQlsaW5lID0gaWk7DQ0KCQkJCWlmKGogIT0gZXhwcl90eXBlKQ0NCgkJ
CQkJZXJyb3IoMTEpOw0NCgkJCQlpZighZXhwcl90eXBlKQkJLyogbnVtZXJp
YyBhc3NpZ25tZW50ICovDQ0KCQkJCQkqZHB0ciA9IGs7DQ0KCQkJCWVsc2Ug
ewkJCQkvKiBjaGFyYWN0ZXIgYXNzaWdubWVudCAqLw0NCgkJCQkJaWYoKmRw
dHIpDQ0KCQkJCQkJZnJlZSgqZHB0cik7DQ0KCQkJCQlpZigqc2ExKQ0NCgkJ
CQkJCXN0cmNweSgqZHB0ciA9IGFsbG9jYXRlKHN0cmxlbihzYTEpKzEpLCBz
YTEpOw0NCgkJCQkJZWxzZQ0NCgkJCQkJCSpkcHRyID0gMDsgfSB9DQ0KCQkJ
d2hpbGUodGVzdF9uZXh0KCcsJykpOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBE
RUxBWSA6DQ0KCQkJZGVsYXkoZXZhbF9udW0oKSk7DQ0KCQkJYnJlYWs7DQ0K
CQljYXNlIEJFRVAgOg0NCgkJCWkgPSBldmFsX251bSgpOw0NCgkJCWV4cGVj
dCgnLCcpOw0NCgkJCWJlZXAoaSwgZXZhbF9udW0oKSk7DQ0KCQkJYnJlYWs7
DQ0KCQljYXNlIERPUyA6DQ0KCQkJZXZhbF9jaGFyKCk7DQ0KCQkJc3lzdGVt
KHNhMSk7DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIE9VVCA6DQ0KCQkJaSA9IGV2
YWxfbnVtKCk7DQ0KCQkJZXhwZWN0KCcsJyk7DQ0KCQkJb3V0KGksIGV2YWxf
bnVtKCkpOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBTQVZFIDoNDQoJCQlkaXJl
Y3Rfb25seSgpOw0NCgkJCWlmKHNraXBfYmxhbmsoKSkgew0NCgkJCQlldmFs
X2NoYXIoKTsNDQoJCQkJY29uY2F0KGZpbGVuYW1lLCBzYTEsICIuQkFTIik7
IH0NDQoJCQlpZihmaWxlb3V0ID0gZm9wZW4oZmlsZW5hbWUsICJ3diIpKSB7
DQ0KCQkJCWRpc3BfcGdtKGZpbGVvdXQsIDAsIC0xKTsNDQoJCQkJZmNsb3Nl
KGZpbGVvdXQpOyB9DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIExPQUQgOg0NCgkJ
CWV2YWxfY2hhcigpOw0NCgkJCWNvbmNhdChmaWxlbmFtZSwgc2ExLCAiLkJB
UyIpOw0NCgkJCWlmKGZpbGVpbiA9IGZvcGVuKGZpbGVuYW1lLCAicnYiKSkg
ew0NCgkJCQlpZighbW9kZSkgY2xlYXJfdmFycygpOw0NCgkJCQljbGVhcl9w
Z20oKTsNDQoJCQkJd2hpbGUoZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVy
KS0xLCBmaWxlaW4pKQ0NCgkJCQkJZWRpdF9wcm9ncmFtKCk7DQ0KCQkJCWZj
bG9zZShmaWxlaW4pOw0NCgkJCQlyZXR1cm4gcGdtX3N0YXJ0OyB9DQ0KCQkJ
bG9uZ2ptcChzYXZqbXAsIDEpOw0NCgkJZGVmYXVsdCA6CQkJLyogdW5rbm93
biAqLw0NCgkJCWVycm9yKDApOyB9DQ0KCQlyZXR1cm4gMDsNDQp9DQ0KDQ0K
LyoNDQogKiBUZXN0IGZvciBmaWxlIG9wZXJhdG9yLCBhbmQgc2V0IHVwIHBv
aW50ZXJzDQ0KICovDQ0KaW50IGNoa19maWxlKGNoYXIgZmxhZykNDQp7DQ0K
CXVuc2lnbmVkIGk7DQ0KDQ0KCWkgPSAtMTsNDQoJaWYodGVzdF9uZXh0KCcj
JykpIHsNDQoJCWlmKDkgPCAoaSA9IGV2YWxfbnVtKCkpKSBlcnJvcig3KTsN
DQoJCXRlc3RfbmV4dCgnLCcpOw0NCgkJZmlsZWluID0gZmlsZW91dCA9IGZp
bGVzW2ldOw0NCgkJaWYoZmxhZyAmJiAoIWZpbGVpbikpDQ0KCQkJZXJyb3Io
Nyk7IH0NDQoJZWxzZSB7DQ0KCQlmaWxlaW4gPSBzdGRpbjsNDQoJCWZpbGVv
dXQgPSBzdGRvdXQ7IH0NDQoJcmV0dXJuIGk7DQ0KfQ0NCg0NCi8qDQ0KICog
RGlzcGxheSBwcm9ncmFtIGxpc3RpbmcNDQogKi8NDQpkaXNwX3BnbShGSUxF
ICpmcCwgdW5zaWduZWQgaSwgdW5zaWduZWQgaikNDQp7DQ0KCXVuc2lnbmVk
IGs7DQ0KCXN0cnVjdCBsaW5lX3JlY29yZCAqY3B0cjsNDQoJY2hhciBjOw0N
Cg0NCglmb3IoY3B0ciA9IHBnbV9zdGFydDsgY3B0cjsgY3B0ciA9IGNwdHIt
PkxsaW5rKSB7DQ0KCQlrID0gY3B0ci0+TG51bWJlcjsNDQoJCWlmKChrID49
IGkpICYmIChrIDw9IGopKSB7DQ0KCQkJZnByaW50ZihmcCwiJXUgIixrKTsN
DQoJCQlmb3Ioaz0wOyBjID0gY3B0ci0+THRleHRba107ICsraykNDQoJCQkJ
aWYoYyA8IDApIHsNDQoJCQkJCWMgPSBjICYgMTI3Ow0NCgkJCQkJZnB1dHMo
cmVzZXJ2ZWRfd29yZHNbYyAtIDFdLCBmcCk7DQ0KCQkJCQlpZihjIDwgQURE
KQ0NCgkJCQkJCXB1dGMoJyAnLGZwKTsgfQ0NCgkJCQllbHNlDQ0KCQkJCQlw
dXRjKGMsZnApOw0NCgkJCXB1dGMoJ1xuJywgZnApOyB9IH0NDQp9DQ0KDQ0K
LyoNDQogKiBUZXN0IGZvciBwcm9ncmFtIG9ubHksIGFuZCBlcnJvciBpZiBp
bnRlcmFjdGl2ZQ0NCiAqLw0NCnBnbV9vbmx5KCkNDQp7DQ0KCWlmKCFtb2Rl
KSBlcnJvcigyKTsNDQp9DQ0KDQ0KLyoNDQogKiBUZXN0IGZvciBkaXJlY3Qg
b25seSwgYW5kIGVycm9yIGlmIHJ1bm5pbmcNDQogKi8NDQpkaXJlY3Rfb25s
eSgpDQ0Kew0NCglpZihtb2RlKSBlcnJvcigxKTsNDQp9DQ0KDQ0KLyoNDQog
KiBTa2lwIHJlc3Qgb2Ygc3RhdGVtZW50DQ0KICovDQ0Kc2tpcF9zdG10KCkN
DQp7DQ0KCWNoYXIgYzsNDQoNDQoJd2hpbGUoKGM9KmNtZHB0cikgJiYgKGMg
IT0gJzonKSkgew0NCgkJKytjbWRwdHI7DQ0KCQlpZihjID09ICciJykgew0N
CgkJCXdoaWxlKChjPSpjbWRwdHIpICYmIChjICE9ICciJykpDQ0KCQkJCSsr
Y21kcHRyOw0NCgkJCWlmKGMpICsrY21kcHRyOyB9IH0NDQp9DQ0KDQ0KLyoN
DQogKiBEaXNsYXkgZXJyb3IgbWVzc2FnZQ0NCiAqLw0NCmVycm9yKHVuc2ln
bmVkIGVuKQ0NCnsNDQoJcHJpbnRmKCIlcyBlcnJvciIsIGVycm9yX21lc3Nh
Z2VzW2VuXSk7DQ0KCWlmKG1vZGUpDQ0KCQlwcmludGYoIiBpbiBsaW5lICV1
IiwgbGluZSk7DQ0KCXB1dGMoJ1xuJyxzdGRvdXQpOw0NCglsb25nam1wKHNh
dmptcCwgMSk7DQ0KfQ0NCg0NCi8qDQ0KICogRXZhbHVhdGUgbnVtYmVyIG9u
bHkgKG5vIGNoYXJhY3RlcikNDQogKi8NDQppbnQgZXZhbF9udW0oKQ0NCnsN
DQoJdW5zaWduZWQgdmFsdWU7DQ0KDQ0KCXZhbHVlID0gZXZhbCgpOw0NCglp
ZihleHByX3R5cGUpDQ0KCQllcnJvcig0KTsNDQoJcmV0dXJuIHZhbHVlOw0N
Cn0NDQoNDQovKg0NCiAqIEV2YWx1YXRlIGNoYXJhY3RlciBvbmx5IChubyBu
dW1lcmljKQ0NCiAqLw0NCmV2YWxfY2hhcigpDQ0Kew0NCglldmFsKCk7DQ0K
CWlmKCFleHByX3R5cGUpDQ0KCQllcnJvcig0KTsNDQp9DQ0KDQ0KLyoNDQog
KiBFdmFsdWF0ZSBhbiBleHByZXNzaW9uIChudW1lcmljIG9yIGNoYXJhY3Rl
cikNDQogKi8NDQppbnQgZXZhbCgpDQ0Kew0NCgl1bnNpZ25lZCB2YWx1ZTsN
DQoNDQoJbmVzdCA9IDA7DQ0KCXZhbHVlID0gZXZhbF9zdWIoKTsNDQoJaWYo
bmVzdCAhPSAxKSBlcnJvcigwKTsNDQoJcmV0dXJuIHZhbHVlOw0NCn0NDQoN
DQovKg0NCiAqIEV2YWx1YXRlIGEgc3ViIGV4cHJlc3Npb24NDQogKi8NDQpp
bnQgZXZhbF9zdWIoKQkNDQp7DQ0KCXVuc2lnbmVkIHZhbHVlLCBuc3RhY2tb
MTBdLCBucHRyLCBvcHRyOw0NCgljaGFyIGMsIG9zdGFja1sxMF07DQ0KDQ0K
CSsrbmVzdDsJCQkJCQkJCS8qIGluZGljYXRlIHdlIHdlbnQgZG93biAqLw0N
Cg0NCi8qIGVzdGFibGlzaCBmaXJzdCBlbnRyeSBvbiBudW1iZXIgYW5kIG9w
ZXJhdG9yIHN0YWNrcyAqLw0NCglvc3RhY2tbb3B0ciA9IG5wdHIgPSAwXSA9
IDA7CQkvKiBhZGQgemVybyB0byBpbml0ICovDQ0KDQ0KCW5zdGFja1srK25w
dHJdID0gZ2V0X3ZhbHVlKCk7CQkvKiBnZXQgbmV4dCB2YWx1ZSAqLw0NCi8q
IHN0cmluZyBvcGVyYXRpb25zICovDQ0KCWlmKGV4cHJfdHlwZSkgewkJCQkJ
CS8qIHN0cmluZyBvcGVyYXRpb25zICovDQ0KCQl3aGlsZSghaXNfZV9lbmQo
YyA9IHNraXBfYmxhbmsoKSkpIHsNDQoJCQkrK2NtZHB0cjsNDQoJCQljICY9
IDB4N0Y7DQ0KCQkJZ2V0X2NoYXJfdmFsdWUoc2EyKTsNDQoJCQlpZihjID09
IEFERCkJCQkJLyogU3RyaW5nIGNvbmNhdGluYXRpb24gKi8NDQoJCQkJc3Ry
Y2F0KHNhMSwgc2EyKTsNDQoJCQllbHNlIHsNDQoJCQkJaWYoYyA9PSBFUSkJ
CQkJLyogU3RyaW5nIEVRVUFMUyAqLw0NCgkJCQkJdmFsdWUgPSAhc3RyY21w
KHNhMSwgc2EyKTsNDQoJCQkJZWxzZSBpZihjID09IE5FKQkJLyogU3RyaW5n
IE5PVCBFUVVBTFMgKi8NDQoJCQkJCXZhbHVlID0gc3RyY21wKHNhMSwgc2Ey
KSAhPSAwOw0NCgkJCQllbHNlDQ0KCQkJCQllcnJvcigwKTsNDQoJCQkJbnN0
YWNrW25wdHJdID0gdmFsdWU7DQ0KCQkJCWV4cHJfdHlwZSA9IDA7IH0gfSB9
DQ0KDQ0KLyogbnVtZXJpYyBvcGVyYXRpb25zICovDQ0KCWVsc2Ugew0NCgkJ
d2hpbGUoIWlzX2VfZW5kKGMgPSBza2lwX2JsYW5rKCkpKSB7DQ0KCQkJKytj
bWRwdHI7DQ0KCQkJYyA9IChjICYgMHg3RikgLSAoQURELTEpOwkvKiAwIGJh
c2VkIHByaW9yaXR5IHRhYmxlICovDQ0KCQkJaWYocHJpb3JpdHlbY10gPD0g
cHJpb3JpdHlbb3N0YWNrW29wdHJdXSkgewkvKiBleGVjdXRlIG9wZXJhbmQg
Ki8NDQoJCQkJdmFsdWUgPSBuc3RhY2tbbnB0ci0tXTsNDQoJCQkJbnN0YWNr
W25wdHJdID0gZG9fYXJpdGgob3N0YWNrW29wdHItLV0sIG5zdGFja1tucHRy
XSwgdmFsdWUpOyB9DQ0KCQkJbnN0YWNrWysrbnB0cl0gPSBnZXRfdmFsdWUo
KTsJCS8qIHN0YWNrIG5leHQgb3BlcmFuZCAqLw0NCgkJCWlmKGV4cHJfdHlw
ZSkgZXJyb3IoMCk7DQ0KCQkJb3N0YWNrWysrb3B0cl0gPSBjOyB9DQ0KCQl3
aGlsZShvcHRyKSB7CQkJCS8qIGNsZWFuIHVwIGFsbCBwZW5kaW5nIG9wZXJh
dGlvbnMgKi8NDQoJCQl2YWx1ZSA9IG5zdGFja1tucHRyLS1dOw0NCgkJCW5z
dGFja1tucHRyXSA9IGRvX2FyaXRoKG9zdGFja1tvcHRyLS1dLCBuc3RhY2tb
bnB0cl0sIHZhbHVlKTsgfSB9DQ0KCWlmKGMgPT0gJyknKSB7DQ0KCQktLW5l
c3Q7DQ0KCQkrK2NtZHB0cjsgfQ0NCglyZXR1cm4gbnN0YWNrW25wdHJdOw0N
Cn0NDQoNDQovKg0NCiAqIEdldCBhIHZhbHVlIGVsZW1lbnQgZm9yIGFuIGV4
cHJlc3Npb24NDQogKi8NDQppbnQgZ2V0X3ZhbHVlKCkNDQp7DQ0KCXVuc2ln
bmVkIHZhbHVlLCB2LCAqZHB0cjsNDQoJY2hhciBjLCAqcHRyOw0NCg0NCgll
eHByX3R5cGUgPSAwOw0NCglpZihpc2RpZ2l0KGMgPSBza2lwX2JsYW5rKCkp
KQ0NCgkJdmFsdWUgPSBnZXRfbnVtKCk7DQ0KCWVsc2Ugew0NCgkJKytjbWRw
dHI7DQ0KCQlzd2l0Y2goYykgew0NCgkJCWNhc2UgJygnIDoJCQkvKiBuZXN0
aW5nICovDQ0KCQkJCXZhbHVlID0gZXZhbF9zdWIoKTsNDQoJCQkJYnJlYWs7
DQ0KCQkJY2FzZSAnIScgOgkJCS8qIG5vdCAqLw0NCgkJCQl2YWx1ZSA9IH5n
ZXRfdmFsdWUoKTsNDQoJCQkJYnJlYWs7DQ0KCQkJY2FzZSAtMTI4K1NVQiA6
CS8qIG5lZ2F0ZSAqLw0NCgkJCQl2YWx1ZSA9IC1nZXRfdmFsdWUoKTsNDQoJ
CQkJYnJlYWs7DQ0KCQkJY2FzZSAtMTI4K0FTQyA6CS8qIENvbnZlcnQgY2hh
cmFjdGVyIHRvIG51bWJlciAqLw0NCgkJCQlldmFsX3N1YigpOw0NCgkJCQlp
ZighZXhwcl90eXBlKSBlcnJvcig0KTsNDQoJCQkJdmFsdWUgPSAqc2ExICYg
MjU1Ow0NCgkJCQlleHByX3R5cGUgPSAwOw0NCgkJCQlicmVhazsNDQoJCQlj
YXNlIC0xMjgrTlVNIDoJLyogQ29udmVydCBzdHJpbmcgdG8gbnVtYmVyICov
DQ0KCQkJCWV2YWxfc3ViKCk7DQ0KCQkJCWlmKCFleHByX3R5cGUpIGVycm9y
KDQpOw0NCgkJCQl2YWx1ZSA9IGF0b2koc2ExKTsNDQoJCQkJZXhwcl90eXBl
ID0gMDsNDQoJCQkJYnJlYWs7DQ0KCQkJY2FzZSAtMTI4K0FCUyA6CS8qIEFi
c29sdXRlIHZhbHVlICovDQ0KCQkJCWlmKCh2YWx1ZSA9IGV2YWxfc3ViKCkp
ID4gMzI3NjcpDQ0KCQkJCQl2YWx1ZSA9IC12YWx1ZTsNDQoJCQkJZ290byBu
dW1iZXJfb25seTsNDQoJCQljYXNlIC0xMjgrUk5EIDoJLyogUmFuZG9tIG51
bWJlciAqLw0NCgkJCQl2YWx1ZSA9IHJhbmRvbShldmFsX3N1YigpKTsNDQoJ
CQkJZ290byBudW1iZXJfb25seTsNDQoJCQljYXNlIC0xMjgrS0VZIDoJCS8q
IEtleWJvYXJkIHRlc3QgKi8NDQoJCQkJLyogZXZhbF9zdWIoKTsgKi8NDQoJ
CQkJZXhwZWN0KCcpJyk7DQ0KCQkJCXZhbHVlID0ga2J0c3QoKTsNDQoJCQkJ
YnJlYWs7DQ0KCQkJY2FzZSAtMTI4K0lOUCA6CS8qIFJlYWQgZnJvbSBwb3J0
ICovDQ0KCQkJCXZhbHVlID0gaW4oZXZhbF9zdWIoKSk7DQ0KCQkJbnVtYmVy
X29ubHk6DQ0KCQkJCWlmKGV4cHJfdHlwZSkgZXJyb3IoNCk7DQ0KCQkJCWJy
ZWFrOw0NCgkJCWRlZmF1bHQ6CQkJLyogdGVzdCBmb3IgY2hhcmFjdGVyIGV4
cHJlc3Npb24gKi8NDQoJCQkJLS1jbWRwdHI7DQ0KCQkJCWlmKGlzYWxwaGEo
YykpIHsJCS8qIHZhcmlhYmxlICovDQ0KCQkJCQl2YWx1ZSA9IGdldF92YXIo
KTsNDQoJCQkJCWlmKGV4cHJfdHlwZSkgewkJLyogY2hhciAqLw0NCgkJCQkJ
CWlmKHB0ciA9IGNoYXJfdmFyc1t2YWx1ZV0pDQ0KCQkJCQkJCXN0cmNweShz
YTEsIHB0cik7DQ0KCQkJCQkJZWxzZQ0NCgkJCQkJCQlzdHJjcHkoc2ExLCAi
Iik7IH0NDQoJCQkJCWVsc2Ugew0NCgkJCQkJCWlmKHRlc3RfbmV4dCgnKCcp
KSB7CS8qIEFycmF5ICovDQ0KCQkJCQkJCWlmKCEoZHB0ciA9IGRpbV92YXJz
W3ZhbHVlXSkpDQ0KCQkJCQkJCQllcnJvcigxMCk7DQ0KCQkJCQkJCWlmKCh2
ID0gZXZhbF9zdWIoKSkgPj0gZGltX2NoZWNrW3ZhbHVlXSkNDQoJCQkJCQkJ
CWVycm9yKDEwKTsNDQoJCQkJCQkJdmFsdWUgPSBkcHRyW3ZdOyB9DQ0KCQkJ
CQkJZWxzZQkJCQkJCS8qIFN0ZCB2YXJpYWJsZSAqLw0NCgkJCQkJCQl2YWx1
ZSA9IG51bV92YXJzW3ZhbHVlXTsgfSB9DQ0KCQkJCWVsc2UNDQoJCQkJCWdl
dF9jaGFyX3ZhbHVlKHNhMSk7IH0gfQ0NCglyZXR1cm4gdmFsdWU7DQ0KfQ0N
Cg0NCi8qDQ0KICogR2V0IGNoYXJhY3RlciB2YWx1ZQ0NCiAqLw0NCmdldF9j
aGFyX3ZhbHVlKGNoYXIgKnB0cikNDQp7DQ0KCXVuc2lnbmVkIGk7DQ0KCWNo
YXIgYywgKnN0Ow0NCg0NCglpZigoYyA9IGdldF9uZXh0KCkpID09ICciJykg
ewkvKiBjaGFyYWN0ZXIgdmFsdWUgKi8NDQoJCXdoaWxlKChjID0gKmNtZHB0
cisrKSAhPSAnIicpIHsNDQoJCQlpZighYykgZXJyb3IoMCk7DQ0KCQkJKnB0
cisrID0gYzsgfQ0NCgkJKnB0ciA9IDA7IH0NDQoJZWxzZSBpZihpc2FscGhh
KGMpKSB7CQkJLyogdmFyaWFibGUgKi8NDQoJCS0tY21kcHRyOw0NCgkJaSA9
IGdldF92YXIoKTsNDQoJCWlmKCFleHByX3R5cGUpDQ0KCQkJZXJyb3IoMCk7
DQ0KCQlpZihzdCA9IGNoYXJfdmFyc1tpXSkNDQoJCQlzdHJjcHkocHRyLHN0
KTsNDQoJCWVsc2UNDQoJCQlzdHJjcHkocHRyLCIiKTsgfQ0NCgllbHNlIGlm
KGMgPT0gLTEyOCtDSFIpIHsJCS8qIENvbnZlcnQgbnVtYmVyIHRvIGNoYXJh
Y3RlciAqLw0NCgkJKnB0cisrID0gZXZhbF9zdWIoKTsNDQoJCWlmKGV4cHJf
dHlwZSkNDQoJCQllcnJvcig0KTsNDQoJCSpwdHIgPSAwOyB9DQ0KCWVsc2Ug
aWYoYyA9PSAtMTI4K1NUUikgewkJLyogQ29udmVydCBudW1iZXIgdG8gc3Ry
aW5nICovDQ0KCQludW1fc3RyaW5nKGV2YWxfc3ViKCksIHB0cik7DQ0KCQlp
ZihleHByX3R5cGUpDQ0KCQkJZXJyb3IoNCk7IH0NDQoJZWxzZQ0NCgkJZXJy
b3IoMCk7DQ0KCWV4cHJfdHlwZSA9IDE7DQ0KfQ0NCg0NCi8qDQ0KICogUGVy
Zm9ybSBhbiBhcml0aG1ldGljIG9wZXJhdGlvbg0NCiAqLw0NCmludCBkb19h
cml0aChjaGFyIG9wciwgdW5zaWduZWQgb3AxLCB1bnNpZ25lZCBvcDIpDQ0K
ew0NCgl1bnNpZ25lZCB2YWx1ZTsNDQoNDQoJc3dpdGNoKG9wcikgew0NCgkJ
Y2FzZSBBREQtKEFERC0xKSA6CQkvKiBhZGRpdGlvbiAqLw0NCgkJCXZhbHVl
ID0gb3AxICsgb3AyOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBTVUItKEFERC0x
KSA6CQkvKiBzdWJ0cmFjdGlvbiAqLw0NCgkJCXZhbHVlID0gb3AxIC0gb3Ay
Ow0NCgkJCWJyZWFrOw0NCgkJY2FzZSBNVUwtKEFERC0xKSA6CQkvKiBtdWx0
aXBsaWNhdGlvbiAqLw0NCgkJCXZhbHVlID0gb3AxICogb3AyOw0NCgkJCWJy
ZWFrOw0NCgkJY2FzZSBESVYtKEFERC0xKSA6CQkvKiBkaXZpc2lvbiAqLw0N
CgkJCXZhbHVlID0gb3AxIC8gb3AyOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBN
T0QtKEFERC0xKSA6CQkvKiBtb2R1bHVzICovDQ0KCQkJdmFsdWUgPSBvcDEg
JSBvcDI7DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIEFORC0oQURELTEpIDoJCS8q
IGxvZ2ljYWwgYW5kICovDQ0KCQkJdmFsdWUgPSBvcDEgJiBvcDI7DQ0KCQkJ
YnJlYWs7DQ0KCQljYXNlIE9SLShBREQtMSkgOgkJLyogbG9naWNhbCBvciAq
Lw0NCgkJCXZhbHVlID0gb3AxIHwgb3AyOw0NCgkJCWJyZWFrOw0NCgkJY2Fz
ZSBYT1ItKEFERC0xKSA6CQkvKiBleGNsdXNpdmUgb3IgKi8NDQoJCQl2YWx1
ZSA9IG9wMSBeIG9wMjsNDQoJCQlicmVhazsNDQoJCWNhc2UgRVEtKEFERC0x
KSA6CQkvKiBlcXVhbHMgKi8NDQoJCQl2YWx1ZSA9IG9wMSA9PSBvcDI7DQ0K
CQkJYnJlYWs7DQ0KCQljYXNlIE5FLShBREQtMSkgOgkJLyogbm90LWVxdWFs
cyAqLw0NCgkJCXZhbHVlID0gb3AxICE9IG9wMjsNDQoJCQlicmVhazsNDQoJ
CWNhc2UgTEUtKEFERC0xKSA6CQkvKiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8g
Ki8NDQoJCQl2YWx1ZSA9IG9wMSA8PSBvcDI7DQ0KCQkJYnJlYWs7DQ0KCQlj
YXNlIExULShBREQtMSkgOgkJLyogbGVzcyB0aGFuICovDQ0KCQkJdmFsdWUg
PSBvcDEgPCBvcDI7DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIEdFLShBREQtMSkg
OgkJLyogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICovDQ0KCQkJdmFsdWUg
PSBvcDEgPj0gb3AyOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBHVC0oQURELTEp
IDoJCS8qIGdyZWF0ZXIgdGhhbiAqLw0NCgkJCXZhbHVlID0gb3AxID4gb3Ay
Ow0NCgkJCWJyZWFrOw0NCgkJZGVmYXVsdDoNDQoJCQllcnJvcigwKTsgfQ0N
CglyZXR1cm4gdmFsdWU7DQ0KfQ0NCg0NCi8qDQ0KICogQ29udmVydCBhIG51
bWJlciB0byBhIHN0cmluZywgYW5kIHBsYWNlIGluIG1lbW9yeQ0NCiAqLw0N
Cm51bV9zdHJpbmcodW5zaWduZWQgdmFsdWUsIGNoYXIgKnB0cikNDQp7DQ0K
CWNoYXIgY3N0YWNrWzVdLCBjcHRyOw0NCg0NCgljcHRyID0gMDsNDQoNDQoJ
aWYodmFsdWUgPiAzMjc2Nykgew0NCgkJKnB0cisrID0gJy0nOw0NCgkJdmFs
dWUgPSAtdmFsdWU7IH0NDQoJZG8NDQoJCWNzdGFja1tjcHRyKytdID0gKHZh
bHVlICUgMTApICsgJzAnOw0NCgl3aGlsZSh2YWx1ZSAvPSAxMCk7DQ0KCXdo
aWxlKGNwdHIpDQ0KCQkqcHRyKysgPSBjc3RhY2tbLS1jcHRyXTsNDQoJKnB0
ciA9IDA7DQ0KfQ0NCg0NCi8qDQ0KICogQ2xlYXIgcHJvZ3JhbSBjb21wbGV0
ZWx5DQ0KICovDQ0KY2xlYXJfcGdtKCkNDQp7DQ0KCWZvcihydW5wdHIgPSBw
Z21fc3RhcnQ7IHJ1bnB0cjsgcnVucHRyID0gcnVucHRyLT5MbGluaykNDQoJ
CWZyZWUocnVucHRyKTsNDQoJcGdtX3N0YXJ0ID0gMDsNDQp9DQ0KDQ0KLyoN
DQogKiBDbGVhciBhbGwgdmFyaWFibGVzIHRvIHplcm8NDQogKi8NDQpjbGVh
cl92YXJzKCkNDQp7DQ0KCXVuc2lnbmVkIGk7DQ0KCWNoYXIgKnB0cjsNDQoN
DQoJZm9yKGk9MDsgaSA8IE5VTV9WQVI7ICsraSkgew0NCgkJbnVtX3ZhcnNb
aV0gPSAwOw0NCgkJaWYocHRyID0gY2hhcl92YXJzW2ldKSB7CS8qIENoYXJh
Y3RlciB2YXJpYWJsZXMgKi8NDQoJCQlmcmVlKHB0cik7DQ0KCQkJY2hhcl92
YXJzW2ldID0gMDsgfQ0NCgkJaWYocHRyID0gZGltX3ZhcnNbaV0pIHsJCS8q
IERpbWVuc2lvbmVkIGFycmF5cyAqLw0NCgkJCWZyZWUocHRyKTsNDQoJCQlk
aW1fdmFyc1tpXSA9IDA7IH0gfQ0NCn0NDQoNDQovKg0NCiAqIEdldCBpbmRl
eCBmb3IgdmFyaWFibGUgZnJvbSBpdHMgbmFtZQ0NCiAqLw0NCmludCBnZXRf
dmFyKCkNDQp7DQ0KCXVuc2lnbmVkIGluZGV4Ow0NCgljaGFyIGM7DQ0KDQ0K
CWlmKCFpc2FscGhhKGMgPSBnZXRfbmV4dCgpKSkNDQoJCWVycm9yKDApOw0N
CglpbmRleCA9ICgoYyAtICdBJykgJiAweDFGKSAqIDEwOw0NCglpZihpc2Rp
Z2l0KGMgPSAqY21kcHRyKSkgew0NCgkJaW5kZXggKz0gKGMgLSAnMCcpOw0N
CgkJYyA9ICorK2NtZHB0cjsgfQ0NCglpZihjID09ICckJykgew0NCgkJKytj
bWRwdHI7DQ0KCQlleHByX3R5cGUgPSAxOyB9DQ0KCWVsc2UNDQoJCWV4cHJf
dHlwZSA9IDA7DQ0KDQ0KCXJldHVybiBpbmRleDsNDQp9DQ0KDQ0KLyoNDQog
KiBNYWluIHByb2dyYW0NDQogKi8NDQptYWluKGludCBhcmdjLCBjaGFyICph
cmd2W10pDQ0Kew0NCglpbnQgaSwgajsNDQoNDQovKg0NCiAqIElmIGFyZ3Vt
ZW50cyBhcmUgZ2l2ZW4sIGNvcHkgdGhlbSBpbnRvIHRoZSBBMCQsIEExJCwg
QTIkIC4uLiB2YXJpYWJsZXMNDQogKi8NDQoJcGdtX3N0YXJ0ID0gaiA9IDA7
DQ0KCWZvcihpPTE7IGkgPCBhcmdjOyArK2kpDQ0KCQljaGFyX3ZhcnNbaisr
XSA9IGFyZ3ZbaV07DQ0KDQ0KLyoNDQogKiBJZiBhIG5hbWUgaXMgZ2l2ZW4g
b24gdGhlIGNvbW1hbmQgbGluZSwgbG9hZCBpdCBhcyBhIHByb2dyYW0gYW5k
DQ0KICogcnVuIGltbWVkaWF0ZWx5LiBJZiB0aGUgcHJvZ3JhbSBkb2VzIG5v
dCBleHBsaWNpdGx5IEVYSVQsIHdlIHdpbGwNDQogKiB0aGVuIHByb2NlZWQg
dG8gYW4gaW50ZXJhY3RpdmUgc2Vzc2lvbg0NCiAqLw0NCglpZihqKSB7DQ0K
CQljb25jYXQoZmlsZW5hbWUsIGNoYXJfdmFyc1swXSwgIi5CQVMiKTsNDQoJ
CWlmKGZpbGVpbiA9IGZvcGVuKGZpbGVuYW1lLCAicnYiKSkgew0NCgkJCXdo
aWxlKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciktMSwgZmlsZWluKSkN
DQoJCQkJZWRpdF9wcm9ncmFtKCk7DQ0KCQkJZmNsb3NlKGZpbGVpbik7DQ0K
CQkJaWYoIXNldGptcChzYXZqbXApKQ0NCgkJCQlleGVjdXRlKFJVTjEpOyB9
IH0NDQoNDQovKg0NCiAqIERpc3BsYXkgaGVhZGVyIEFGVEVSIHJ1bm5pbmcg
Y29tbWFuZCBsaW5lLCBzbyB0aGF0IHByb2dyYW1zIHJ1biBhcw0NCiAqICJi
YXRjaCIgY29tbWFuZHMgdGVybWluYXRpbmcgd2l0aCBFWElUIGRvIG5vdCBn
ZXQgIm5vaXNlIiBvdXRwdXQuDQ0KICovDQ0KCXByaW50ZigiTUlDUk8tQkFT
SUMgMi4xIC0gQ29weXJpZ2h0IDE5ODItMjAwMCBEYXZlIER1bmZpZWxkLlxu
Iik7DQ0KDQ0KCXNldGptcChzYXZqbXApOw0NCglmb3IoOzspIHsJCQkJCQkv
KiBNYWluIGludGVyYWN0aXZlIGxvb3AgKi8NDQoJCWZwdXRzKCJSZWFkeVxu
Iiwgc3Rkb3V0KTsNDQoJbm9wcm9tcHQ6IG1vZGUgPSBjdGxfcHRyID0gMDsN
DQoJCWZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciktMSwgc3RkaW4pOw0N
CgkJaWYoZWRpdF9wcm9ncmFtKCkpCQkJLyogVG9rZW5pemUgJiBlZGl0IGlm
IE9LICovDQ0KCQkJZ290byBub3Byb21wdDsNDQoJCWlmKChpID0gKmNtZHB0
cikgPCAwKSB7CQkvKiBLZXl3b3JkLCBleGVjdXRlIGNvbW1hbmQgKi8NDQoJ
CQkrK2NtZHB0cjsNDQoJCQlleGVjdXRlKGkpOyB9DQ0KCQllbHNlIGlmKGkp
CQkJCQkvKiBVbmtub3duLCBhc3N1bWUgTEVUICovDQ0KCQkJZXhlY3V0ZShM
RVQpOyB9DQ0KfQ0NCg==

--1686161418-1322450431-981284596=:31748
Content-Type: text/plain; charset=us-ascii

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple
--1686161418-1322450431-981284596=:31748--

- Raw text -


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