public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c++/2230: ICE in `fix_lexical_addr', at function.c:5546
@ 2001-04-01  0:00 Ruth.Doane
  0 siblings, 0 replies; only message in thread
From: Ruth.Doane @ 2001-04-01  0:00 UTC (permalink / raw)
  To: gcc-gnats

>Number:         2230
>Category:       c++
>Synopsis:       ICE in `fix_lexical_addr', at function.c:5546
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          ice-on-illegal-code
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 08 11:16:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Ruth Anne Doane
>Release:        gcc version 2.95.2 19991024 (release)
>Organization:
>Environment:
SunOS 5.6 Generic_105181-19 sun4u sparc SUNW,Ultra-60
>Description:
This is a (clearly) contrived example, constructed as a 
minimal testcase from an ICE which was occuring in 
proprietary code.
>How-To-Repeat:
gcc testcase.C
>Fix:
In the contrived example, there is clearly no reason to be including the ostream header.
However, the ICE doesn't occur if the ostream header is not included.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-tar; name="testcase.tar"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="testcase.tar"

dGVzdGNhc2UuQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NjQAMDAwMTMz
MwAwMDIzNzMwADAwMDAwMDAwNDEyADA3MjUxNzUyNzYyADAwMTM0MTAAMAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMHJ1dGhkAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAdG9vbHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMjU0ADAwMDIw
NDYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj
aW5jbHVkZSA8b3N0cmVhbS5oPgoKY2xhc3MgRm9vIHsKIHB1YmxpYzoKICBmcmllbmQgb3N0cmVh
bSAmIG9wZXJhdG9yICsgKG9zdHJlYW0gJiwgRm9vKSB7fTsKfTsKCmNsYXNzIEJhciB7CiBwdWJs
aWM6CiAgY29uc3QgRm9vICZuZXh0KGNvbnN0IEZvbyAmKSBjb25zdDsKfTsKCnZvaWQgZihjb25z
dCBCYXIgJmFyZzEsIG9zdHJlYW0gJm91dCkgewogIGZvcihjb25zdCBGb28gbXlGb287IHRydWU7
IG15Rm9vID0gYXJnMS5uZXh0KG15Rm9vKSkgewogIH0KfQoKCgAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRl
c3RjYXNlLmlpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjY0ADAwMDEzMzMA
MDAyMzczMAAwMDAwMDA2MzQzMQAwNzI1MTc1MzQxMwAwMDEzNjMzADAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBydXRoZAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAHRvb2xzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDI1NAAwMDAyMDQ2
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyAx
ICJ0ZXN0Y2FzZS5DIgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
aXMyLjYvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvb3N0cmVhbS5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuNi8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJlYW0uaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAoKCiMgMSAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNi8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9pb3N0cmVhbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI3ByYWdt
YSBpbnRlcmZhY2UKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi42LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgaW50ZXJmYWNlCgoKICAgCgoKCmV4
dGVybiAiQyIgewojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjYvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvbGliaW8uaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuNi8yLjk1LjIvLi4vLi4vLi4vLi4vc3BhcmMtc3VuLXNvbGFyaXMyLjYvaW5j
bHVkZS9fR19jb25maWcuaCIgMSAzIDQKICAKCgoKCgoKCgoKdHlwZWRlZiAgICAgICAgICBpbnQg
ICBfR19pbnQ4X3QgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19RSV9fKSkpOwp0eXBlZGVmIHVu
c2lnbmVkIGludCAgX0dfdWludDhfdCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1FJX18pKSk7
CnR5cGVkZWYgICAgICAgICAgaW50ICBfR19pbnQxNl90IF9fYXR0cmlidXRlX18oKF9fbW9kZV9f
KF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVf
XygoX19tb2RlX18oX19ISV9fKSkpOwp0eXBlZGVmICAgICAgICAgIGludCAgX0dfaW50MzJfdCBf
X2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9H
X3VpbnQzMl90IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fU0lfXykpKTsKdHlwZWRlZiAgICAg
ICAgICBpbnQgIF9HX2ludDY0X3QgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19ESV9fKSkpOwp0
eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50NjRfdCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhf
X0RJX18pKSk7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIF9HX2xsb25nOwpfX2V4
dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9HX3VsbG9uZzsKCgoKCgoKCgp0
eXBlZGVmIGxvbmcgX0dfY2xvY2tfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9HX2Rldl90Owp0
eXBlZGVmIGxvbmcgX0dfZnBvc190Owp0eXBlZGVmIGxvbmcgX0dfZ2lkX3Q7CnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBfR19pbm9fdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9HX21vZGVfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIF9HX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBfR19vZmZfdDsKdHlw
ZWRlZiBsb25nIF9HX3BpZF90OwoKCgp0eXBlZGVmIGludCBfR19wdHJkaWZmX3Q7CnR5cGVkZWYg
aW50ICAgX0dfc2lnc2V0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3NpemVfdDsKdHlw
ZWRlZiBsb25nIF9HX3RpbWVfdDsKdHlwZWRlZiBsb25nIF9HX3VpZF90Owp0eXBlZGVmIGxvbmcg
aW50IF9HX3djaGFyX3Q7CgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgaW50IF9HX3NzaXplX3Q7CnR5
cGVkZWYgdW5zaWduZWQgaW50IF9HX3dpbnRfdDsKdHlwZWRlZiB2b2lkICogX0dfdmFfbGlzdDsK
CgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjYvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CgoKCgoKCiAKCgojIDE5ICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzIuOTUuMi9pbmNsdWRl
L3N0ZGRlZi5oIiAzIDQKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNi8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CgoK
IAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5o
IiAzIDQKCgogCgogCgojIDE5MCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuNi8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CgoKCiAKCgoKCiAKCiMgMjcxICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzIuOTUuMi9pbmNsdWRl
L3N0ZGRlZi5oIiAzIDQKCgojIDI4MyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t
c29sYXJpczIuNi8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CgoKIAoKIAoKIyAzMTcgIi91
c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjYvMi45NS4yL2luY2x1ZGUv
c3RkZGVmLmgiIDMgNAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDg2ICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzIuOTUuMi8uLi8uLi8uLi8uLi9zcGFy
Yy1zdW4tc29sYXJpczIuNi9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMgNAoKCiMgMzAgIi91c3Iv
bG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjYvMi45NS4yLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvbGliaW8uaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKIyA1NSAiL3Vzci9s
b2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNi8yLjk1LjIvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9saWJpby5oIiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCiMgMTA0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42
LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2xpYmlvLmgiIDMKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCnN0cnVjdCBfSU9f
anVtcF90OyAgc3RydWN0IF9JT19GSUxFOwoKIAojIDE3NCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp
Yi9zcGFyYy1zdW4tc29sYXJpczIuNi8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9s
aWJpby5oIiAzCgoKCgoKCgoKCiAgICB0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKCgogCgpz
dHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVjdCBf
SU9fRklMRSAqX3NidWY7CiAgIAoKICAgCiAgaW50IF9wb3M7CiMgMjA3ICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRl
L2crKy0zL2xpYmlvLmgiIDMKCn07CgpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CQkg
CgoKICAgCiAgIAogIGNoYXIqIF9JT19yZWFkX3B0cjsJIAogIGNoYXIqIF9JT19yZWFkX2VuZDsJ
IAogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CSAKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsJIAogIGNo
YXIqIF9JT193cml0ZV9wdHI7CSAKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwkgCiAgY2hhciogX0lP
X2J1Zl9iYXNlOwkgCiAgY2hhciogX0lPX2J1Zl9lbmQ7CSAKICAgCiAgY2hhciAqX0lPX3NhdmVf
YmFzZTsgIAogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsgICAKICBjaGFyICpfSU9fc2F2ZV9lbmQ7
ICAKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9j
aGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwoKCgogIF9HX29mZl90ICBfb2Zm
c2V0OwoKCgogICAKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBjaGFyIF91bnVzZWQ7
CiAgY2hhciBfc2hvcnRidWZbMV07CgogICAKCgoKCgoKCgp9OwoKCgoKCgoKCgoKCnN0cnVjdCBf
SU9fRklMRV9wbHVzOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPX3N0ZGluXywgX0lP
X3N0ZG91dF8sIF9JT19zdGRlcnJfOwoKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIF9HX3NzaXpl
X3QgICgqcmVhZCkgIChzdHJ1Y3QgX0lPX0ZJTEUgKiwgdm9pZCAqLCBfR19zc2l6ZV90ICkgIDsK
ICBfR19zc2l6ZV90ICAoKndyaXRlKSAgKHN0cnVjdCBfSU9fRklMRSAqLCBjb25zdCB2b2lkICos
IF9HX3NzaXplX3QgKSAgOwogIF9HX2Zwb3NfdCAgKCpzZWVrKSAgKHN0cnVjdCBfSU9fRklMRSAq
LCBfR19vZmZfdCAsIGludCkgIDsKICBpbnQgKCpjbG9zZSkgIChzdHJ1Y3QgX0lPX0ZJTEUgKikg
IDsKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190OwoKIApzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxl
CnsKICBzdHJ1Y3QgX0lPX0ZJTEUgZmlsZTsKICBjb25zdCB2b2lkICp2dGFibGU7CiAgdm9pZCAq
Y29va2llOwogIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgaW9fZnVuY3Rpb25zOwp9OwoKCgpl
eHRlcm4gIkMiIHsKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93ICAoX0lPX0ZJTEUgKikgIDsKZXh0
ZXJuIGludCBfX3VmbG93ICAoX0lPX0ZJTEUgKikgIDsKZXh0ZXJuIGludCBfX292ZXJmbG93ICAo
X0lPX0ZJTEUgKiwgaW50KSAgOwoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiBpbnQgX0lPX2dldGMg
IChfSU9fRklMRSAqX19mcCkgIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAgKGludCBfX2MsIF9JT19G
SUxFICpfX2ZwKSAgOwpleHRlcm4gaW50IF9JT19mZW9mICAoX0lPX0ZJTEUgKl9fZnApICA7CmV4
dGVybiBpbnQgX0lPX2ZlcnJvciAgKF9JT19GSUxFICpfX2ZwKSAgOwoKZXh0ZXJuIGludCBfSU9f
cGVla2NfbG9ja2VkICAoX0lPX0ZJTEUgKl9fZnApICA7CgogCgoKCmV4dGVybiB2b2lkIF9JT19m
bG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgOwpleHRlcm4gdm9pZCBfSU9fZnVubG9ja2ZpbGUgIChf
SU9fRklMRSAqKSAgOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUgIChfSU9fRklMRSAqKSAg
OwoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAgKF9JT19GSUxFICosIGNvbnN0
IGNoYXIgKiwgX0dfdmFfbGlzdCAsIGludCAqKSAgOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAg
KF9JT19GSUxFICosIGNvbnN0IGNoYXIgKiwgX0dfdmFfbGlzdCApICA7CmV4dGVybiBfR19zc2l6
ZV90ICBfSU9fcGFkbiAgKF9JT19GSUxFICosIGludCwgX0dfc3NpemVfdCApICA7CmV4dGVybiBf
R19zaXplX3QgIF9JT19zZ2V0biAgKF9JT19GSUxFICosIHZvaWQgKiwgX0dfc2l6ZV90ICkgIDsK
CgoKCgpleHRlcm4gX0dfZnBvc190ICBfSU9fc2Vla29mZiAgKF9JT19GSUxFICosIF9HX29mZl90
ICwgaW50LCBpbnQpICA7CmV4dGVybiBfR19mcG9zX3QgIF9JT19zZWVrcG9zICAoX0lPX0ZJTEUg
KiwgX0dfZnBvc190ICwgaW50KSAgOwoKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVh
ICAoX0lPX0ZJTEUgKikgIDsKCgp9CgoKCiMgMzYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjYvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RyZWFt
YnVmLmgiIDIgMwoKfQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDKysiIHsK
Y2xhc3MgaXN0cmVhbTsgIApjbGFzcyBvc3RyZWFtOyBjbGFzcyBzdHJlYW1idWY7CgogCgoKCgoK
Cgp0eXBlZGVmIF9HX29mZl90ICBzdHJlYW1vZmY7CnR5cGVkZWYgX0dfZnBvc190ICBzdHJlYW1w
b3M7Cgp0eXBlZGVmIF9HX3NzaXplX3QgIHN0cmVhbXNpemU7Cgp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgX19mbXRmbGFnczsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9faW9zdGF0ZTsKCnN0cnVjdCBf
aW9zX2ZpZWxkcwp7ICAKICAgIHN0cmVhbWJ1ZiAqX3N0cmJ1ZjsKICAgIG9zdHJlYW0qIF90aWU7
CiAgICBpbnQgX3dpZHRoOwogICAgX19mbXRmbGFncyBfZmxhZ3M7CiAgICBzaG9ydCAgX2ZpbGw7
CiAgICBfX2lvc3RhdGUgX3N0YXRlOwogICAgX19pb3N0YXRlIF9leGNlcHRpb25zOwogICAgaW50
IF9wcmVjaXNpb247CgogICAgdm9pZCAqX2FycmF5czsgIAp9OwoKCgoKCgoKCgoKCgoKCgoKZW51
bSBzdGF0ZV92YWx1ZSB7CiAgICBfZ29vZCA9IDAgLAogICAgX2VvZiA9IDEgLAogICAgX2ZhaWwg
PSAyICwKICAgIF9iYWQgPSA0ICB9OwplbnVtIG9wZW5fbW9kZSB7CiAgICBpbnB1dCA9IDEgLAog
ICAgb3V0cHV0ID0gMiAsCiAgICBhdGVuZCA9IDQgLAogICAgYXBwZW5kID0gOCAgfTsKCgpjbGFz
cyBpb3MgOiBwdWJsaWMgX2lvc19maWVsZHMgewogIGlvcyYgb3BlcmF0b3I9KGlvcyYpOyAgIAog
IGlvcyAoY29uc3QgaW9zJik7ICAKICBwdWJsaWM6CiAgICB0eXBlZGVmIF9fZm10ZmxhZ3MgZm10
ZmxhZ3M7CiAgICB0eXBlZGVmIGludCBpb3N0YXRlOwogICAgdHlwZWRlZiBpbnQgb3Blbm1vZGU7
CiAgICB0eXBlZGVmIF9HX3NzaXplX3QgIHN0cmVhbXNpemU7CiAgICBlbnVtIGlvX3N0YXRlIHsK
CWdvb2RiaXQgPSAwICwKCWVvZmJpdCA9IDEgLAoJZmFpbGJpdCA9IDIgLAoJYmFkYml0ID0gNCAg
fTsKICAgIGVudW0gb3Blbl9tb2RlIHsKCWluID0gMSAsCglvdXQgPSAyICwKCWF0ZSA9IDQgLAoJ
YXBwID0gOCAsCgl0cnVuYyA9IDE2ICwKCW5vY3JlYXRlID0gMzIgLAoJbm9yZXBsYWNlID0gNjQg
LAoJYmluID0gMTI4ICwgIAoJYmluYXJ5ID0gMTI4ICB9OwogICAgZW51bSBzZWVrX2RpciB7IGJl
ZywgY3VyLCBlbmR9OwogICAgdHlwZWRlZiBlbnVtIHNlZWtfZGlyIHNlZWtkaXI7CiAgICAgCiAg
ICBlbnVtIHsgc2tpcHdzPSAwMSAsCgkgICBsZWZ0PSAwMiAsIHJpZ2h0PSAwNCAsIGludGVybmFs
PSAwMTAgLAoJICAgZGVjPSAwMjAgLCBvY3Q9IDA0MCAsIGhleD0gMDEwMCAsCgkgICBzaG93YmFz
ZT0gMDIwMCAsIHNob3dwb2ludD0gMDQwMCAsCgkgICB1cHBlcmNhc2U9IDAxMDAwICwgc2hvd3Bv
cz0gMDIwMDAgLAoJICAgc2NpZW50aWZpYz0gMDQwMDAgLCBmaXhlZD0gMDEwMDAwICwKCSAgIHVu
aXRidWY9IDAyMDAwMCAsIHN0ZGlvPSAwNDAwMDAgCgoKCgkgICB9OwogICAgZW51bSB7ICAKCWJh
c2VmaWVsZD1kZWMrb2N0K2hleCwKCWZsb2F0ZmllbGQgPSBzY2llbnRpZmljK2ZpeGVkLAoJYWRq
dXN0ZmllbGQgPSBsZWZ0K3JpZ2h0K2ludGVybmFsCiAgICB9OwoKIyAxNzcgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjYvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1
ZGUvZysrLTMvc3RyZWFtYnVmLmgiIDMKCgogICAgb3N0cmVhbSogdGllKCkgY29uc3QgeyByZXR1
cm4gX3RpZTsgfQogICAgb3N0cmVhbSogdGllKG9zdHJlYW0qIHZhbCkgeyBvc3RyZWFtKiBzYXZl
PV90aWU7IF90aWU9dmFsOyByZXR1cm4gc2F2ZTsgfQoKICAgICAKICAgIHNob3J0ICBmaWxsKCkg
Y29uc3QgeyByZXR1cm4gX2ZpbGw7IH0KICAgIHNob3J0ICBmaWxsKHNob3J0ICBuZXdmKQoJe3No
b3J0ICBvbGRmID0gX2ZpbGw7IF9maWxsID0gbmV3ZjsgcmV0dXJuIG9sZGY7fQogICAgZm10Zmxh
Z3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBfZmxhZ3M7IH0KICAgIGZtdGZsYWdzIGZsYWdzKGZt
dGZsYWdzIG5ld192YWwpIHsKCWZtdGZsYWdzIG9sZF92YWwgPSBfZmxhZ3M7IF9mbGFncyA9IG5l
d192YWw7IHJldHVybiBvbGRfdmFsOyB9CiAgICBpbnQgcHJlY2lzaW9uKCkgY29uc3QgeyByZXR1
cm4gX3ByZWNpc2lvbjsgfQogICAgaW50IHByZWNpc2lvbihpbnQgbmV3cCkgewoJdW5zaWduZWQg
c2hvcnQgb2xkcCA9IF9wcmVjaXNpb247IF9wcmVjaXNpb24gPSAodW5zaWduZWQgc2hvcnQpbmV3
cDsKCXJldHVybiBvbGRwOyB9CiAgICBmbXRmbGFncyBzZXRmKGZtdGZsYWdzIHZhbCkgewoJZm10
ZmxhZ3Mgb2xkYml0cyA9IF9mbGFnczsKCV9mbGFncyB8PSB2YWw7IHJldHVybiBvbGRiaXRzOyB9
CiAgICBmbXRmbGFncyBzZXRmKGZtdGZsYWdzIHZhbCwgZm10ZmxhZ3MgbWFzaykgewoJZm10Zmxh
Z3Mgb2xkYml0cyA9IF9mbGFnczsKCV9mbGFncyA9IChfZmxhZ3MgJiB+bWFzaykgfCAodmFsICYg
bWFzayk7IHJldHVybiBvbGRiaXRzOyB9CiAgICBmbXRmbGFncyB1bnNldGYoZm10ZmxhZ3MgbWFz
aykgewoJZm10ZmxhZ3Mgb2xkYml0cyA9IF9mbGFnczsKCV9mbGFncyAmPSB+bWFzazsgcmV0dXJu
IG9sZGJpdHM7IH0KICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIF93aWR0aDsgfQogICAg
aW50IHdpZHRoKGludCB2YWwpIHsgaW50IHNhdmUgPSBfd2lkdGg7IF93aWR0aCA9IHZhbDsgcmV0
dXJuIHNhdmU7IH0KCgoKCiAgICB2b2lkIF90aHJvd19mYWlsdXJlKCkgY29uc3QgeyB9CgogICAg
dm9pZCBjbGVhcihpb3N0YXRlIHN0YXRlID0gMCkgewoJX3N0YXRlID0gX3N0cmJ1ZiA/IHN0YXRl
IDogc3RhdGV8YmFkYml0OwoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3dfZmFpbHVy
ZSgpOyB9CiAgICB2b2lkIHNldChpb3N0YXRlIGZsYWcpIHsgX3N0YXRlIHw9IGZsYWc7CglpZiAo
X3N0YXRlICYgX2V4Y2VwdGlvbnMpIF90aHJvd19mYWlsdXJlKCk7IH0KICAgIHZvaWQgc2V0c3Rh
dGUoaW9zdGF0ZSBmbGFnKSB7IF9zdGF0ZSB8PSBmbGFnOyAgCglpZiAoX3N0YXRlICYgX2V4Y2Vw
dGlvbnMpIF90aHJvd19mYWlsdXJlKCk7IH0KICAgIGludCBnb29kKCkgY29uc3QgeyByZXR1cm4g
X3N0YXRlID09IDA7IH0KICAgIGludCBlb2YoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgJiBpb3M6
OmVvZmJpdDsgfQogICAgaW50IGZhaWwoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgJiAoaW9zOjpi
YWRiaXR8aW9zOjpmYWlsYml0KTsgfQogICAgaW50IGJhZCgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0
ZSAmIGlvczo6YmFkYml0OyB9CiAgICBpb3N0YXRlIHJkc3RhdGUoKSBjb25zdCB7IHJldHVybiBf
c3RhdGU7IH0KICAgIG9wZXJhdG9yIHZvaWQqKCkgY29uc3QgeyByZXR1cm4gZmFpbCgpID8gKHZv
aWQqKTAgOiAodm9pZCopKC0xKTsgfQogICAgaW50IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJu
IGZhaWwoKTsgfQogICAgaW9zdGF0ZSBleGNlcHRpb25zKCkgY29uc3QgeyByZXR1cm4gX2V4Y2Vw
dGlvbnM7IH0KICAgIHZvaWQgZXhjZXB0aW9ucyhpb3N0YXRlIGVuYWJsZSkgewoJX2V4Y2VwdGlv
bnMgPSBlbmFibGU7CglpZiAoX3N0YXRlICYgX2V4Y2VwdGlvbnMpIF90aHJvd19mYWlsdXJlKCk7
IH0KCiAgICBzdHJlYW1idWYqIHJkYnVmKCkgY29uc3QgeyByZXR1cm4gX3N0cmJ1ZjsgfQogICAg
c3RyZWFtYnVmKiByZGJ1ZihzdHJlYW1idWYgKl9zKSB7CiAgICAgIHN0cmVhbWJ1ZiAqX29sZCA9
IF9zdHJidWY7IF9zdHJidWYgPSBfczsgY2xlYXIgKCk7IHJldHVybiBfb2xkOyB9CgogICAgc3Rh
dGljIGludCBzeW5jX3dpdGhfc3RkaW8oaW50IG9uKTsKICAgIHN0YXRpYyB2b2lkIHN5bmNfd2l0
aF9zdGRpbygpIHsgc3luY193aXRoX3N0ZGlvKDEpOyB9CiAgICBzdGF0aWMgZm10ZmxhZ3MgYml0
YWxsb2MoKTsKICAgIHN0YXRpYyBpbnQgeGFsbG9jKCk7CiAgICB2b2lkKiYgcHdvcmQoaW50KTsK
ICAgIHZvaWQqIHB3b3JkKGludCkgY29uc3Q7CiAgICBsb25nJiBpd29yZChpbnQpOwogICAgbG9u
ZyBpd29yZChpbnQpIGNvbnN0OwoKCiAgICB2b2lkIHVuc2V0KHN0YXRlX3ZhbHVlIGZsYWcpIHsg
X3N0YXRlICY9IH5mbGFnOyB9CiAgICB2b2lkIGNsb3NlKCk7CiAgICBpbnQgaXNfb3BlbigpOwog
ICAgaW50IHJlYWRhYmxlKCk7CiAgICBpbnQgd3JpdGFibGUoKTsKCgogICAgIAogICAgY2xhc3Mg
SW5pdCB7CiAgICBwdWJsaWM6CiAgICAgIEluaXQgKCkgeyB9CiAgICB9OwoKICBwcm90ZWN0ZWQ6
CiAgICBpbmxpbmUgaW9zKHN0cmVhbWJ1Ziogc2IgPSAwLCBvc3RyZWFtKiB0aWVfdG8gPSAwKTsK
ICAgIGlubGluZSB2aXJ0dWFsIH5pb3MoKTsKICAgIGlubGluZSB2b2lkIGluaXQoc3RyZWFtYnVm
KiBzYiwgb3N0cmVhbSogdGllID0gMCk7Cn07CgoKCgp0eXBlZGVmIGlvczo6c2Vla19kaXIgX3Nl
ZWtfZGlyOwoKCiAKIAogCiAKIAoKIAogCmNsYXNzIHN0cmVhbW1hcmtlciA6IHByaXZhdGUgX0lP
X21hcmtlciB7CiAgICBmcmllbmQgY2xhc3Mgc3RyZWFtYnVmOwogICAgdm9pZCBzZXRfb2Zmc2V0
KGludCBvZmZzZXQpIHsgX3BvcyA9IG9mZnNldDsgfQogIHB1YmxpYzoKICAgIHN0cmVhbW1hcmtl
cihzdHJlYW1idWYgKnNiKTsKICAgIH5zdHJlYW1tYXJrZXIoKTsKICAgIGludCBzYXZpbmcoKSB7
IHJldHVybiAgMTsgfQogICAgaW50IGRlbHRhKHN0cmVhbW1hcmtlciYpOwogICAgaW50IGRlbHRh
KCk7Cn07CgpzdHJ1Y3Qgc3RyZWFtYnVmIDogcHVibGljIF9JT19GSUxFIHsgIAogICAgZnJpZW5k
IGNsYXNzIGlvczsKICAgIGZyaWVuZCBjbGFzcyBpc3RyZWFtOwogICAgZnJpZW5kIGNsYXNzIG9z
dHJlYW07CiAgICBmcmllbmQgY2xhc3Mgc3RyZWFtbWFya2VyOwogICAgY29uc3Qgdm9pZCAqJl92
dGFibGUoKSB7IHJldHVybiAqKGNvbnN0IHZvaWQqKikoKF9JT19GSUxFKil0aGlzICsgMSk7IH0K
ICBwcm90ZWN0ZWQ6CiAgICBzdGF0aWMgc3RyZWFtYnVmKiBfbGlzdF9hbGw7ICAKICAgIF9JT19G
SUxFKiYgeGNoYWluKCkgeyByZXR1cm4gX2NoYWluOyB9CiAgICB2b2lkIF91bl9saW5rKCk7CiAg
ICB2b2lkIF9saW5rX2luKCk7CiAgICBjaGFyKiBncHRyKCkgY29uc3QKICAgICAgeyByZXR1cm4g
X2ZsYWdzICAmIDB4MTAwICA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9wdHI7IH0KICAgIGNo
YXIqIHBwdHIoKSBjb25zdCB7IHJldHVybiBfSU9fd3JpdGVfcHRyOyB9CiAgICBjaGFyKiBlZ3B0
cigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2ZV9lbmQg
OiBfSU9fcmVhZF9lbmQ7IH0KICAgIGNoYXIqIGVwcHRyKCkgY29uc3QgeyByZXR1cm4gX0lPX3dy
aXRlX2VuZDsgfQogICAgY2hhciogcGJhc2UoKSBjb25zdCB7IHJldHVybiBfSU9fd3JpdGVfYmFz
ZTsgfQogICAgY2hhciogZWJhY2soKSBjb25zdAogICAgICB7IHJldHVybiBfZmxhZ3MgICYgMHgx
MDAgID8gX0lPX3NhdmVfYmFzZSA6IF9JT19yZWFkX2Jhc2U7fQogICAgY2hhciogYmFzZSgpIGNv
bnN0IHsgcmV0dXJuIF9JT19idWZfYmFzZTsgfQogICAgY2hhciogZWJ1ZigpIGNvbnN0IHsgcmV0
dXJuIF9JT19idWZfZW5kOyB9CiAgICBpbnQgYmxlbigpIGNvbnN0IHsgcmV0dXJuIF9JT19idWZf
ZW5kIC0gX0lPX2J1Zl9iYXNlOyB9CiAgICB2b2lkIHhwdXRfY2hhcihjaGFyIGMpIHsgKl9JT193
cml0ZV9wdHIrKyA9IGM7IH0KICAgIGludCB4ZmxhZ3MoKSB7IHJldHVybiBfZmxhZ3MgOyB9CiAg
ICBpbnQgeGZsYWdzKGludCBmKSB7aW50IGZsID0gX2ZsYWdzIDsgX2ZsYWdzICA9IGY7IHJldHVy
biBmbDt9CiAgICB2b2lkIHhzZXRmbGFncyhpbnQgZikgeyBfZmxhZ3MgIHw9IGY7IH0KICAgIHZv
aWQgeHNldGZsYWdzKGludCBmLCBpbnQgbWFzaykKICAgICAgeyBfZmxhZ3MgID0gKF9mbGFncyAg
JiB+bWFzaykgfCAoZiAmIG1hc2spOyB9CiAgICB2b2lkIGdidW1wKGludCBuKQogICAgICB7IF9m
bGFncyAgJiAweDEwMCAgPyAoX0lPX3NhdmVfYmFzZSs9bik6KF9JT19yZWFkX3B0cis9bik7fQog
ICAgdm9pZCBwYnVtcChpbnQgbikgeyBfSU9fd3JpdGVfcHRyICs9IG47IH0KICAgIHZvaWQgc2V0
YihjaGFyKiBiLCBjaGFyKiBlYiwgaW50IGE9MCk7CiAgICB2b2lkIHNldHAoY2hhciogcCwgY2hh
ciogZXApCiAgICAgIHsgX0lPX3dyaXRlX2Jhc2U9X0lPX3dyaXRlX3B0cj1wOyBfSU9fd3JpdGVf
ZW5kPWVwOyB9CiAgICB2b2lkIHNldGcoY2hhciogZWIsIGNoYXIqIGcsIGNoYXIgKmVnKSB7CiAg
ICAgIGlmIChfZmxhZ3MgICYgMHgxMDAgKSBfSU9fZnJlZV9iYWNrdXBfYXJlYSh0aGlzKTsgCiAg
ICAgIF9JT19yZWFkX2Jhc2UgPSBlYjsgX0lPX3JlYWRfcHRyID0gZzsgX0lPX3JlYWRfZW5kID0g
ZWc7IH0KICAgIGNoYXIgKnNob3J0YnVmKCkgeyByZXR1cm4gX3Nob3J0YnVmOyB9CgogICAgaW50
IGluX2JhY2t1cCgpIHsgcmV0dXJuIF9mbGFncyAmIDB4MTAwIDsgfQogICAgIAogICAgY2hhciAq
R2Jhc2UoKSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9i
YXNlOyB9CiAgICAgCiAgICBjaGFyICplR3B0cigpIHsgcmV0dXJuIGluX2JhY2t1cCgpID8gX0lP
X3NhdmVfZW5kIDogX0lPX3JlYWRfZW5kOyB9CiAgICAgCiAgICBjaGFyICpCYmFzZSgpIHsgcmV0
dXJuIGluX2JhY2t1cCgpID8gX0lPX3JlYWRfYmFzZSA6IF9JT19zYXZlX2Jhc2U7IH0KICAgIGNo
YXIgKkJwdHIoKSB7IHJldHVybiBfSU9fYmFja3VwX2Jhc2U7IH0KICAgICAKICAgIGNoYXIgKmVC
cHRyKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fcmVhZF9lbmQgOiBfSU9fc2F2ZV9lbmQ7
IH0KICAgIGNoYXIgKk5iYXNlKCkgeyByZXR1cm4gX0lPX3NhdmVfYmFzZTsgfQogICAgY2hhciAq
ZU5wdHIoKSB7IHJldHVybiBfSU9fc2F2ZV9lbmQ7IH0KICAgIGludCBoYXZlX2JhY2t1cCgpIHsg
cmV0dXJuIF9JT19zYXZlX2Jhc2UgIT0gX19udWxsIDsgfQogICAgaW50IGhhdmVfbWFya2Vycygp
IHsgcmV0dXJuIF9tYXJrZXJzICE9IF9fbnVsbCA7IH0KICAgIHZvaWQgZnJlZV9iYWNrdXBfYXJl
YSgpOwogICAgdm9pZCB1bnNhdmVfbWFya2VycygpOyAgCiAgICBpbnQgcHV0X21vZGUoKSB7IHJl
dHVybiBfZmxhZ3MgJiAweDgwMCA7IH0KICAgIGludCBzd2l0Y2hfdG9fZ2V0X21vZGUoKTsKICAg
IAogICAgc3RyZWFtYnVmKGludCBmbGFncz0wKTsKICBwdWJsaWM6CiAgICBzdGF0aWMgaW50IGZs
dXNoX2FsbCgpOwogICAgc3RhdGljIHZvaWQgZmx1c2hfYWxsX2xpbmVidWZmZXJlZCgpOyAgCiAg
ICB2aXJ0dWFsIH5zdHJlYW1idWYoKTsKICAgIHZpcnR1YWwgaW50IG92ZXJmbG93KGludCBjID0g
KC0xKSApOyAgCiAgICB2aXJ0dWFsIGludCB1bmRlcmZsb3coKTsgIAogICAgdmlydHVhbCBpbnQg
dWZsb3coKTsgIAogICAgdmlydHVhbCBpbnQgcGJhY2tmYWlsKGludCBjKTsKIAogICAgdmlydHVh
bCBzdHJlYW1zaXplIHhzcHV0bihjb25zdCBjaGFyKiBzLCBzdHJlYW1zaXplIG4pOwogICAgdmly
dHVhbCBzdHJlYW1zaXplIHhzZ2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4pOwogICAgdmlydHVh
bCBzdHJlYW1wb3Mgc2Vla29mZihzdHJlYW1vZmYsIF9zZWVrX2RpciwgaW50IG1vZGU9aW9zOjpp
bnxpb3M6Om91dCk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzZWVrcG9zKHN0cmVhbXBvcyBwb3Ms
IGludCBtb2RlID0gaW9zOjppbnxpb3M6Om91dCk7CgogICAgc3RyZWFtcG9zIHB1YnNlZWtvZmYo
c3RyZWFtb2ZmIG8sIF9zZWVrX2RpciBkLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KQogICAg
ICB7IHJldHVybiBfSU9fc2Vla29mZiAodGhpcywgbywgZCwgbW9kZSk7IH0KICAgIHN0cmVhbXBv
cyBwdWJzZWVrcG9zKHN0cmVhbXBvcyBwb3MsIGludCBtb2RlID0gaW9zOjppbnxpb3M6Om91dCkK
ICAgICAgeyByZXR1cm4gX0lPX3NlZWtwb3MgKHRoaXMsIHBvcywgbW9kZSk7IH0KICAgIHN0cmVh
bXBvcyBzc2Vla29mZihzdHJlYW1vZmYsIF9zZWVrX2RpciwgaW50IG1vZGU9aW9zOjppbnxpb3M6
Om91dCk7CiAgICBzdHJlYW1wb3Mgc3NlZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1vZGUgPSBp
b3M6OmlufGlvczo6b3V0KTsKICAgIHZpcnR1YWwgc3RyZWFtYnVmKiBzZXRidWYoY2hhciogcCwg
aW50IGxlbik7CiAgICB2aXJ0dWFsIGludCBzeW5jKCk7CiAgICB2aXJ0dWFsIGludCBkb2FsbG9j
YXRlKCk7CgogICAgaW50IHNlZWttYXJrKHN0cmVhbW1hcmtlciYgbWFyaywgaW50IGRlbHRhID0g
MCk7CiAgICBpbnQgc3B1dGJhY2tjKGNoYXIgYyk7CiAgICBpbnQgc3VuZ2V0YygpOwogICAgaW50
IHVuYnVmZmVyZWQoKSB7IHJldHVybiBfZmxhZ3MgJiAyICA/IDEgOiAwOyB9CiAgICBpbnQgbGlu
ZWJ1ZmZlcmVkKCkgeyByZXR1cm4gX2ZsYWdzICYgMHgyMDAgID8gMSA6IDA7IH0KICAgIHZvaWQg
dW5idWZmZXJlZChpbnQgaSkKCXsgaWYgKGkpIF9mbGFncyB8PSAyIDsgZWxzZSBfZmxhZ3MgJj0g
fjIgOyB9CiAgICB2b2lkIGxpbmVidWZmZXJlZChpbnQgaSkKCXsgaWYgKGkpIF9mbGFncyB8PSAw
eDIwMCA7IGVsc2UgX2ZsYWdzICY9IH4weDIwMCA7IH0KICAgIGludCBhbGxvY2F0ZSgpIHsgIAoJ
aWYgKGJhc2UoKSB8fCB1bmJ1ZmZlcmVkKCkpIHJldHVybiAwOwoJZWxzZSByZXR1cm4gZG9hbGxv
Y2F0ZSgpOyB9CiAgICAgCiAgICB2b2lkIGFsbG9jYnVmKCkgeyBpZiAoYmFzZSgpID09IF9fbnVs
bCApIGRvYWxsb2NidWYoKTsgfQogICAgdm9pZCBkb2FsbG9jYnVmKCk7CiAgICBpbnQgaW5fYXZh
aWwoKSB7IHJldHVybiBfSU9fcmVhZF9lbmQgLSBfSU9fcmVhZF9wdHI7IH0KICAgIGludCBvdXRf
d2FpdGluZygpIHsgcmV0dXJuIF9JT193cml0ZV9wdHIgLSBfSU9fd3JpdGVfYmFzZTsgfQogICAg
c3RyZWFtc2l6ZSBzcHV0bihjb25zdCBjaGFyKiBzLCBzdHJlYW1zaXplIG4pIHsgcmV0dXJuIHhz
cHV0bihzLCBuKTsgfQogICAgc3RyZWFtc2l6ZSBwYWRuKGNoYXIgcGFkLCBzdHJlYW1zaXplIG4p
IHsgcmV0dXJuIF9JT19wYWRuKHRoaXMsIHBhZCwgbik7IH0KICAgIHN0cmVhbXNpemUgc2dldG4o
Y2hhciogcywgc3RyZWFtc2l6ZSBuKSB7IHJldHVybiBfSU9fc2dldG4odGhpcywgcywgbik7IH0K
ICAgIGludCBpZ25vcmUoaW50KTsKICAgIGludCBnZXRfY29sdW1uKCk7CiAgICBpbnQgc2V0X2Nv
bHVtbihpbnQpOwogICAgbG9uZyBzZ2V0bGluZShjaGFyKiBidWYsIF9HX3NpemVfdCAgbiwgY2hh
ciBkZWxpbSwgaW50IHB1dGJhY2tfZGVsaW0pOwogICAgaW50IHNwdXRjKGludCBjKSB7IHJldHVy
biBfSU9fcHV0YyhjLCB0aGlzKTsgfQogICAgaW50IHNidW1wYygpIHsgcmV0dXJuIF9JT19nZXRj
KHRoaXMpOyB9CiAgICBpbnQgc2dldGMoKSB7IHJldHVybiAoKCAgdGhpcyAgKS0+X0lPX3JlYWRf
cHRyID49ICggIHRoaXMgICktPl9JT19yZWFkX2VuZCAmJiBfX3VuZGVyZmxvdyAoICB0aGlzICAp
ID09ICgtMSkgID8gKC0xKSAgOiAqKHVuc2lnbmVkIGNoYXIgKikgKCAgdGhpcyAgKS0+X0lPX3Jl
YWRfcHRyKSAgOyB9CiAgICBpbnQgc25leHRjKCkgewoJaWYgKF9JT19yZWFkX3B0ciA+PSBfSU9f
cmVhZF9lbmQgJiYgX191bmRlcmZsb3codGhpcykgPT0gKC0xKSApCgkgIHJldHVybiAoLTEpIDsK
CWVsc2UgcmV0dXJuIF9JT19yZWFkX3B0cisrLCBzZ2V0YygpOyB9CiAgICB2b2lkIHN0b3NzYygp
IHsgaWYgKF9JT19yZWFkX3B0ciA8IF9JT19yZWFkX2VuZCkgX0lPX3JlYWRfcHRyKys7IH0KICAg
IGludCB2c2NhbihjaGFyIGNvbnN0ICpmbXQwLCBfR192YV9saXN0ICBhcCwgaW9zKiBzdHJlYW0g
PSBfX251bGwgKTsKICAgIGludCBzY2FuKGNoYXIgY29uc3QgKmZtdDAgLi4uKTsKICAgIGludCB2
Zm9ybShjaGFyIGNvbnN0ICpmbXQwLCBfR192YV9saXN0ICBhcCk7CiAgICBpbnQgZm9ybShjaGFy
IGNvbnN0ICpmbXQwIC4uLik7CgoKCgogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c19yZWFkKGNo
YXIqIGJ1Ziwgc3RyZWFtc2l6ZSBzaXplKTsKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSBzeXNfd3Jp
dGUoY29uc3QgY2hhciosIHN0cmVhbXNpemUpOwogICAgdmlydHVhbCBzdHJlYW1wb3Mgc3lzX3Nl
ZWsoc3RyZWFtb2ZmLCBfc2Vla19kaXIpOwogICAgdmlydHVhbCBpbnQgc3lzX2Nsb3NlKCk7CiAg
ICB2aXJ0dWFsIGludCBzeXNfc3RhdCh2b2lkKik7ICAKCgoKCn07CgogCiAKCmNsYXNzIGZpbGVi
dWYgOiBwdWJsaWMgc3RyZWFtYnVmIHsKICBwcm90ZWN0ZWQ6CiAgICB2b2lkIGluaXQoKTsKICBw
dWJsaWM6CiAgICBzdGF0aWMgY29uc3QgaW50IG9wZW5wcm90OyAgCiAgICBmaWxlYnVmKCk7CiAg
ICBmaWxlYnVmKGludCBmZCk7CiAgICBmaWxlYnVmKGludCBmZCwgY2hhciogcCwgaW50IGxlbik7
CgoKCiAgICB+ZmlsZWJ1ZigpOwogICAgZmlsZWJ1ZiogYXR0YWNoKGludCBmZCk7CiAgICBmaWxl
YnVmKiBvcGVuKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICptb2RlKTsKICAgIGZp
bGVidWYqIG9wZW4oY29uc3QgY2hhciAqZmlsZW5hbWUsIGlvczo6b3Blbm1vZGUgbW9kZSwgaW50
IHByb3QgPSAwNjY0KTsKICAgIHZpcnR1YWwgaW50IHVuZGVyZmxvdygpOwogICAgdmlydHVhbCBp
bnQgb3ZlcmZsb3coaW50IGMgPSAoLTEpICk7CiAgICBpbnQgaXNfb3BlbigpIGNvbnN0IHsgcmV0
dXJuIF9maWxlbm8gPj0gMDsgfQogICAgaW50IGZkKCkgY29uc3QgeyByZXR1cm4gaXNfb3Blbigp
ID8gX2ZpbGVubyA6ICgtMSkgOyB9CiAgICBmaWxlYnVmKiBjbG9zZSgpOwogICAgdmlydHVhbCBp
bnQgZG9hbGxvY2F0ZSgpOwogICAgdmlydHVhbCBzdHJlYW1wb3Mgc2Vla29mZihzdHJlYW1vZmYs
IF9zZWVrX2RpciwgaW50IG1vZGU9aW9zOjppbnxpb3M6Om91dCk7CiAgICB2aXJ0dWFsIHN0cmVh
bWJ1Ziogc2V0YnVmKGNoYXIqIHAsIGludCBsZW4pOwogICAgc3RyZWFtc2l6ZSB4c3B1dG4oY29u
c3QgY2hhciogcywgc3RyZWFtc2l6ZSBuKTsKICAgIHN0cmVhbXNpemUgeHNnZXRuKGNoYXIqIHMs
IHN0cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIGludCBzeW5jKCk7CiAgcHJvdGVjdGVkOiAgCiAK
ICAgIGludCBpc19yZWFkaW5nKCkgeyByZXR1cm4gZWJhY2soKSAhPSBlZ3B0cigpOyB9CiAgICBj
aGFyKiBjdXJfcHRyKCkgeyByZXR1cm4gaXNfcmVhZGluZygpID8gIGdwdHIoKSA6IHBwdHIoKTsg
fQogICAgIAogICAgY2hhciogZmlsZV9wdHIoKSB7IHJldHVybiBlR3B0cigpOyB9CiAgICAgCiAg
ICB2aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3JlYWQoY2hhciogYnVmLCBzdHJlYW1zaXplIHNpemUp
OwogICAgdmlydHVhbCBzdHJlYW1wb3Mgc3lzX3NlZWsoc3RyZWFtb2ZmLCBfc2Vla19kaXIpOwog
ICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c193cml0ZShjb25zdCBjaGFyKiwgc3RyZWFtc2l6ZSk7
CiAgICB2aXJ0dWFsIGludCBzeXNfc3RhdCh2b2lkKik7ICAKICAgIHZpcnR1YWwgaW50IHN5c19j
bG9zZSgpOwoKCgoKfTsKCmlubGluZSB2b2lkIGlvczo6aW5pdChzdHJlYW1idWYqIHNiLCBvc3Ry
ZWFtKiB0aWVfdG8pIHsKCQlfc3RhdGUgPSBzYiA/IGlvczo6Z29vZGJpdCA6IGlvczo6YmFkYml0
OyBfZXhjZXB0aW9ucz0wOwoJCV9zdHJidWY9c2I7IF90aWUgPSB0aWVfdG87IF93aWR0aD0wOyBf
ZmlsbD0nICc7CgoJCV9mbGFncz1pb3M6OnNraXB3c3xpb3M6OmRlYzsKCgoKCQlfcHJlY2lzaW9u
PTY7IF9hcnJheXMgPSAwOyB9CgppbmxpbmUgaW9zOjppb3Moc3RyZWFtYnVmKiBzYiwgb3N0cmVh
bSogdGllX3RvKSB7IGluaXQoc2IsIHRpZV90byk7IH0KCmlubGluZSBpb3M6On5pb3MoKSB7CgoK
CiAgICAgCiAgICAgCiAgICBvcGVyYXRvciBkZWxldGVbXSAoX2FycmF5cyk7Cn0KfSAgCgojIDMx
ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzIuOTUuMi8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL2lvc3RyZWFtLmgiIDIgMwoKCmV4dGVybiAiQysrIiB7CmNs
YXNzIGlzdHJlYW07IGNsYXNzIG9zdHJlYW07CnR5cGVkZWYgaW9zJiAoKl9fbWFuaXApKGlvcyYp
Owp0eXBlZGVmIGlzdHJlYW0mICgqX19pbWFuaXApKGlzdHJlYW0mKTsKdHlwZWRlZiBvc3RyZWFt
JiAoKl9fb21hbmlwKShvc3RyZWFtJik7CgpleHRlcm4gaXN0cmVhbSYgd3MoaXN0cmVhbSYgaW5z
KTsKZXh0ZXJuIG9zdHJlYW0mIGZsdXNoKG9zdHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYg
ZW5kbChvc3RyZWFtJiBvdXRzKTsKZXh0ZXJuIG9zdHJlYW0mIGVuZHMob3N0cmVhbSYgb3V0cyk7
CgpjbGFzcyBvc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zCnsKICAgICAKICAgIHZvaWQgZG9f
b3NmeCgpOwogIHB1YmxpYzoKICAgIG9zdHJlYW0oKSB7IH0KICAgIG9zdHJlYW0oc3RyZWFtYnVm
KiBzYiwgb3N0cmVhbSogdGllZD0gX19udWxsICk7CiAgICBpbnQgb3BmeCgpIHsKCWlmICghZ29v
ZCgpKSByZXR1cm4gMDsKCWVsc2UgeyBpZiAoX3RpZSkgX3RpZS0+Zmx1c2goKTsgIDsgcmV0dXJu
IDE7fSB9CiAgICB2b2lkIG9zZngoKSB7ICA7CgkJICBpZiAoZmxhZ3MoKSAmIChpb3M6OnVuaXRi
dWZ8aW9zOjpzdGRpbykpCgkJICAgICAgZG9fb3NmeCgpOyB9CiAgICBvc3RyZWFtJiBmbHVzaCgp
OwogICAgb3N0cmVhbSYgcHV0KGNoYXIgYykgeyBfc3RyYnVmLT5zcHV0YyhjKTsgcmV0dXJuICp0
aGlzOyB9CgogICAgIAogICAgb3N0cmVhbSYgcHV0KHVuc2lnbmVkIGNoYXIgYykgeyByZXR1cm4g
cHV0KChjaGFyKWMpOyB9CiAgICBvc3RyZWFtJiBwdXQoc2lnbmVkIGNoYXIgYykgeyByZXR1cm4g
cHV0KChjaGFyKWMpOyB9CgogICAgb3N0cmVhbSYgd3JpdGUoY29uc3QgY2hhciAqcywgc3RyZWFt
c2l6ZSBuKTsKICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIHN0cmVh
bXNpemUgbikKICAgICAgeyByZXR1cm4gd3JpdGUoKGNvbnN0IGNoYXIqKXMsIG4pO30KICAgIG9z
dHJlYW0mIHdyaXRlKGNvbnN0IHNpZ25lZCBjaGFyICpzLCBzdHJlYW1zaXplIG4pCiAgICAgIHsg
cmV0dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9CiAgICBvc3RyZWFtJiB3cml0ZShjb25z
dCB2b2lkICpzLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHdyaXRlKChjb25zdCBjaGFy
KilzLCBuKTt9CiAgICBvc3RyZWFtJiBzZWVrcChzdHJlYW1wb3MpOwogICAgb3N0cmVhbSYgc2Vl
a3Aoc3RyZWFtb2ZmLCBfc2Vla19kaXIpOwogICAgc3RyZWFtcG9zIHRlbGxwKCk7CiAgICBvc3Ry
ZWFtJiBmb3JtKGNvbnN0IGNoYXIgKmZvcm1hdCAuLi4pOwogICAgb3N0cmVhbSYgdmZvcm0oY29u
c3QgY2hhciAqZm9ybWF0LCBfR192YV9saXN0ICBhcmdzKTsKCiAgICBvc3RyZWFtJiBvcGVyYXRv
cjw8KGNoYXIgYyk7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGNoYXIgYykgeyBy
ZXR1cm4gKCp0aGlzKSA8PCAoY2hhciljOyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHNpZ25l
ZCBjaGFyIGMpIHsgcmV0dXJuICgqdGhpcykgPDwgKGNoYXIpYzsgfQogICAgb3N0cmVhbSYgb3Bl
cmF0b3I8PChjb25zdCBjaGFyICpzKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgdW5z
aWduZWQgY2hhciAqcykKCXsgcmV0dXJuICgqdGhpcykgPDwgKGNvbnN0IGNoYXIqKXM7IH0KICAg
IG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgc2lnbmVkIGNoYXIgKnMpCgl7IHJldHVybiAoKnRo
aXMpIDw8IChjb25zdCBjaGFyKilzOyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IHZv
aWQgKnApOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChpbnQgbik7CiAgICBvc3RyZWFtJiBvcGVy
YXRvcjw8KHVuc2lnbmVkIGludCBuKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwobG9uZyBuKTsK
ICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBuKTsKCiAgICBfX2V4dGVuc2lv
bl9fIG9zdHJlYW0mIG9wZXJhdG9yPDwobG9uZyBsb25nIG4pOwogICAgX19leHRlbnNpb25fXyBv
c3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbG9uZyBuKTsKCiAgICBvc3RyZWFtJiBv
cGVyYXRvcjw8KHNob3J0IG4pIHtyZXR1cm4gb3BlcmF0b3I8PCgoaW50KW4pO30KICAgIG9zdHJl
YW0mIG9wZXJhdG9yPDwodW5zaWduZWQgc2hvcnQgbikge3JldHVybiBvcGVyYXRvcjw8KCh1bnNp
Z25lZCBpbnQpbik7fQoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoYm9vbCBiKSB7IHJldHVybiBv
cGVyYXRvcjw8KChpbnQpYik7IH0KCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGRvdWJsZSBuKTsK
ICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoZmxvYXQgbikgeyByZXR1cm4gb3BlcmF0b3I8PCgoZG91
YmxlKW4pOyB9CgoKCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgZG91YmxlIG4pIHsgcmV0
dXJuIG9wZXJhdG9yPDwoKGRvdWJsZSluKTsgfQoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoX19v
bWFuaXAgZnVuYykgeyByZXR1cm4gKCpmdW5jKSgqdGhpcyk7IH0KICAgIG9zdHJlYW0mIG9wZXJh
dG9yPDwoX19tYW5pcCBmdW5jKSB7KCpmdW5jKSgqdGhpcyk7IHJldHVybiAqdGhpczt9CiAgICBv
c3RyZWFtJiBvcGVyYXRvcjw8KHN0cmVhbWJ1ZiopOwoKICAgIHN0cmVhbWJ1Ziogb3N0cmVhbWJ1
ZigpIGNvbnN0IHsgcmV0dXJuIF9zdHJidWY7IH0KCn07CgpjbGFzcyBpc3RyZWFtIDogdmlydHVh
bCBwdWJsaWMgaW9zCnsKICAgICAKcHJvdGVjdGVkOgogICAgX0dfc2l6ZV90ICBfZ2NvdW50OwoK
ICAgIGludCBfc2tpcF93cygpOwogIHB1YmxpYzoKICAgIGlzdHJlYW0oKTogX2djb3VudCAoMCkg
eyB9CiAgICBpc3RyZWFtKHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qdGllZD0gX19udWxsICk7CiAg
ICBpc3RyZWFtJiBnZXQoY2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xuJyk7CiAg
ICBpc3RyZWFtJiBnZXQodW5zaWduZWQgY2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0g
J1xuJykKCXsgcmV0dXJuIGdldCgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVh
bSYgZ2V0KGNoYXImIGMpOwogICAgaXN0cmVhbSYgZ2V0KHVuc2lnbmVkIGNoYXImIGMpIHsgcmV0
dXJuIGdldCgoY2hhciYpYyk7IH0KICAgIGlzdHJlYW0mIGdldGxpbmUoY2hhciogcHRyLCBpbnQg
bGVuLCBjaGFyIGRlbGltID0gJ1xuJyk7CiAgICBpc3RyZWFtJiBnZXRsaW5lKHVuc2lnbmVkIGNo
YXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpCgl7IHJldHVybiBnZXRsaW5lKChj
aGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9CiAgICBpc3RyZWFtJiBnZXQoc2lnbmVkIGNoYXImIGMp
ICB7IHJldHVybiBnZXQoKGNoYXImKWMpOyB9CiAgICBpc3RyZWFtJiBnZXQoc2lnbmVkIGNoYXIq
IHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpCgl7IHJldHVybiBnZXQoKGNoYXIqKXB0
ciwgbGVuLCBkZWxpbSk7IH0KICAgIGlzdHJlYW0mIGdldGxpbmUoc2lnbmVkIGNoYXIqIHB0ciwg
aW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpCgl7IHJldHVybiBnZXRsaW5lKChjaGFyKilwdHIs
IGxlbiwgZGVsaW0pOyB9CiAgICBpc3RyZWFtJiByZWFkKGNoYXIgKnB0ciwgc3RyZWFtc2l6ZSBu
KTsKICAgIGlzdHJlYW0mIHJlYWQodW5zaWduZWQgY2hhciAqcHRyLCBzdHJlYW1zaXplIG4pCiAg
ICAgIHsgcmV0dXJuIHJlYWQoKGNoYXIqKXB0ciwgbik7IH0KICAgIGlzdHJlYW0mIHJlYWQoc2ln
bmVkIGNoYXIgKnB0ciwgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiByZWFkKChjaGFyKilw
dHIsIG4pOyB9CiAgICBpc3RyZWFtJiByZWFkKHZvaWQgKnB0ciwgc3RyZWFtc2l6ZSBuKQogICAg
ICB7IHJldHVybiByZWFkKChjaGFyKilwdHIsIG4pOyB9CiAgICBpc3RyZWFtJiBnZXQoc3RyZWFt
YnVmJiBzYiwgY2hhciBkZWxpbSA9ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0cyhjaGFyICoqcywg
Y2hhciBkZWxpbSA9ICdcbicpOwogICAgaW50IGlwZngoaW50IG5lZWQgPSAwKSB7CglpZiAoIWdv
b2QoKSkgeyBzZXQoaW9zOjpmYWlsYml0KTsgcmV0dXJuIDA7IH0KCWVsc2UgewoJICAgOwoJICBp
ZiAoX3RpZSAmJiAobmVlZCA9PSAwIHx8IHJkYnVmKCktPmluX2F2YWlsKCkgPCBuZWVkKSkgX3Rp
ZS0+Zmx1c2goKTsKCSAgaWYgKCFuZWVkICYmIChmbGFncygpICYgaW9zOjpza2lwd3MpKSByZXR1
cm4gX3NraXBfd3MoKTsKCSAgZWxzZSByZXR1cm4gMTsKCX0KICAgIH0KICAgIGludCBpcGZ4MCgp
IHsgIAoJaWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFpbGJpdCk7IHJldHVybiAwOyB9CgllbHNl
IHsKCSAgIDsKCSAgaWYgKF90aWUpIF90aWUtPmZsdXNoKCk7CgkgIGlmIChmbGFncygpICYgaW9z
Ojpza2lwd3MpIHJldHVybiBfc2tpcF93cygpOwoJICBlbHNlIHJldHVybiAxOwoJfQogICAgfQog
ICAgaW50IGlwZngxKCkgeyAgCglpZiAoIWdvb2QoKSkgeyBzZXQoaW9zOjpmYWlsYml0KTsgcmV0
dXJuIDA7IH0KCWVsc2UgewoJICAgOwoJICBpZiAoX3RpZSAmJiByZGJ1ZigpLT5pbl9hdmFpbCgp
ID09IDApIF90aWUtPmZsdXNoKCk7CgkgIHJldHVybiAxOwoJfQogICAgfQogICAgdm9pZCBpc2Z4
KCkgeyAgOyB9CiAgICBpbnQgZ2V0KCkgeyBpZiAoIWlwZngxKCkpIHJldHVybiAoLTEpIDsKCQll
bHNlIHsgaW50IGNoID0gX3N0cmJ1Zi0+c2J1bXBjKCk7CgkJICAgICAgIGlmIChjaCA9PSAoLTEp
ICkgc2V0KGlvczo6ZW9mYml0KTsKCQkgICAgICAgaXNmeCgpOwoJCSAgICAgICByZXR1cm4gY2g7
CgkJICAgICB9IH0KICAgIGludCBwZWVrKCk7CiAgICBfR19zaXplX3QgIGdjb3VudCgpIHsgcmV0
dXJuIF9nY291bnQ7IH0KICAgIGlzdHJlYW0mIGlnbm9yZShpbnQgbj0xLCBpbnQgZGVsaW0gPSAo
LTEpICk7CiAgICBpbnQgc3luYyAoKTsKICAgIGlzdHJlYW0mIHNlZWtnKHN0cmVhbXBvcyk7CiAg
ICBpc3RyZWFtJiBzZWVrZyhzdHJlYW1vZmYsIF9zZWVrX2Rpcik7CiAgICBzdHJlYW1wb3MgdGVs
bGcoKTsKICAgIGlzdHJlYW0mIHB1dGJhY2soY2hhciBjaCkgewoJaWYgKGdvb2QoKSAmJiBfc3Ry
YnVmLT5zcHV0YmFja2MoY2gpID09ICgtMSkgKSBjbGVhcihpb3M6OmJhZGJpdCk7CglyZXR1cm4g
KnRoaXM7fQogICAgaXN0cmVhbSYgdW5nZXQoKSB7CglpZiAoZ29vZCgpICYmIF9zdHJidWYtPnN1
bmdldGMoKSA9PSAoLTEpICkgY2xlYXIoaW9zOjpiYWRiaXQpOwoJcmV0dXJuICp0aGlzO30KICAg
IGlzdHJlYW0mIHNjYW4oY29uc3QgY2hhciAqZm9ybWF0IC4uLik7CiAgICBpc3RyZWFtJiB2c2Nh
bihjb25zdCBjaGFyICpmb3JtYXQsIF9HX3ZhX2xpc3QgIGFyZ3MpOwoKICAgIGlzdHJlYW0mIHVu
Z2V0KGNoYXIgY2gpIHsgcmV0dXJuIHB1dGJhY2soY2gpOyB9CiAgICBpbnQgc2tpcChpbnQgaSk7
CiAgICBzdHJlYW1idWYqIGlzdHJlYW1idWYoKSBjb25zdCB7IHJldHVybiBfc3RyYnVmOyB9CgoK
ICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oY2hhciopOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1
bnNpZ25lZCBjaGFyKiBwKSB7IHJldHVybiBvcGVyYXRvcj4+KChjaGFyKilwKTsgfQogICAgaXN0
cmVhbSYgb3BlcmF0b3I+PihzaWduZWQgY2hhcipwKSB7IHJldHVybiBvcGVyYXRvcj4+KChjaGFy
KilwKTsgfQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihjaGFyJiBjKTsKICAgIGlzdHJlYW0mIG9w
ZXJhdG9yPj4odW5zaWduZWQgY2hhciYgYykge3JldHVybiBvcGVyYXRvcj4+KChjaGFyJiljKTt9
CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNpZ25lZCBjaGFyJiBjKSB7cmV0dXJuIG9wZXJhdG9y
Pj4oKGNoYXImKWMpO30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oaW50Jik7CiAgICBpc3RyZWFt
JiBvcGVyYXRvcj4+KGxvbmcmKTsKCiAgICBfX2V4dGVuc2lvbl9fIGlzdHJlYW0mIG9wZXJhdG9y
Pj4obG9uZyBsb25nJik7CiAgICBfX2V4dGVuc2lvbl9fIGlzdHJlYW0mIG9wZXJhdG9yPj4odW5z
aWduZWQgbG9uZyBsb25nJik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzaG9ydCYpOwogICAg
aXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBpbnQmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9y
Pj4odW5zaWduZWQgbG9uZyYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBzaG9y
dCYpOwoKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oYm9vbCYpOwoKICAgIGlzdHJlYW0mIG9wZXJh
dG9yPj4oZmxvYXQmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oZG91YmxlJik7CiAgICBpc3Ry
ZWFtJiBvcGVyYXRvcj4+KGxvbmcgZG91YmxlJik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KCBf
X21hbmlwIGZ1bmMpIHsoKmZ1bmMpKCp0aGlzKTsgcmV0dXJuICp0aGlzO30KICAgIGlzdHJlYW0m
IG9wZXJhdG9yPj4oX19pbWFuaXAgZnVuYykgeyByZXR1cm4gKCpmdW5jKSgqdGhpcyk7IH0KICAg
IGlzdHJlYW0mIG9wZXJhdG9yPj4oc3RyZWFtYnVmKik7Cn07CgpjbGFzcyBpb3N0cmVhbSA6IHB1
YmxpYyBpc3RyZWFtLCBwdWJsaWMgb3N0cmVhbQp7CiAgcHVibGljOgogICAgaW9zdHJlYW0oKSB7
IH0KICAgIGlvc3RyZWFtKHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qdGllZD0gX19udWxsICk7Cn07
CgpjbGFzcyBfSU9faXN0cmVhbV93aXRoYXNzaWduIDogcHVibGljIGlzdHJlYW0gewpwdWJsaWM6
CiAgX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KGlzdHJlYW0mKTsKICBfSU9faXN0
cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0oX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiYgcmhzKQog
ICAgeyByZXR1cm4gb3BlcmF0b3I9IChzdGF0aWNfY2FzdDxpc3RyZWFtJj4gKHJocykpOyB9Cn07
CgpjbGFzcyBfSU9fb3N0cmVhbV93aXRoYXNzaWduIDogcHVibGljIG9zdHJlYW0gewpwdWJsaWM6
CiAgX0lPX29zdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KG9zdHJlYW0mKTsKICBfSU9fb3N0
cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0oX0lPX29zdHJlYW1fd2l0aGFzc2lnbiYgcmhzKQog
ICAgeyByZXR1cm4gb3BlcmF0b3I9IChzdGF0aWNfY2FzdDxvc3RyZWFtJj4gKHJocykpOyB9Cn07
CgpleHRlcm4gX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiBjaW47CiAKZXh0ZXJuIF9JT19vc3RyZWFt
X3dpdGhhc3NpZ24gY291dCwgY2VycjsKCmV4dGVybiBfSU9fb3N0cmVhbV93aXRoYXNzaWduIGNs
b2cKCgoKOwoKZXh0ZXJuIGlzdHJlYW0mIGxvY2soaXN0cmVhbSYgaW5zKTsKZXh0ZXJuIGlzdHJl
YW0mIHVubG9jayhpc3RyZWFtJiBpbnMpOwpleHRlcm4gb3N0cmVhbSYgbG9jayhvc3RyZWFtJiBv
dXRzKTsKZXh0ZXJuIG9zdHJlYW0mIHVubG9jayhvc3RyZWFtJiBvdXRzKTsKCnN0cnVjdCBJb3N0
cmVhbV9pbml0IHsgfSA7ICAgCgppbmxpbmUgaW9zJiBkZWMoaW9zJiBpKQp7IGkuc2V0Zihpb3M6
OmRlYywgaW9zOjpkZWN8aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1cm4gaTsgfQppbmxpbmUgaW9z
JiBoZXgoaW9zJiBpKQp7IGkuc2V0Zihpb3M6OmhleCwgaW9zOjpkZWN8aW9zOjpoZXh8aW9zOjpv
Y3QpOyByZXR1cm4gaTsgfQppbmxpbmUgaW9zJiBvY3QoaW9zJiBpKQp7IGkuc2V0Zihpb3M6Om9j
dCwgaW9zOjpkZWN8aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1cm4gaTsgfQp9ICAKCgojIDMzICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzIuOTUuMi8uLi8uLi8u
Li8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbS5oIiAyIDMKCgpleHRlcm4gIkMrKyIgewpleHRlcm4g
Y2hhciogZm9ybShjb25zdCBjaGFyKiwgLi4uKTsKCmV4dGVybiBjaGFyKiBkZWMobG9uZywgaW50
PTApOwpleHRlcm4gY2hhciogZGVjKGludCwgaW50PTApOwpleHRlcm4gY2hhciogZGVjKHVuc2ln
bmVkIGxvbmcsIGludD0wKTsKZXh0ZXJuIGNoYXIqIGRlYyh1bnNpZ25lZCBpbnQsIGludD0wKTsK
CmV4dGVybiBjaGFyKiBoZXgobG9uZywgaW50PTApOwpleHRlcm4gY2hhciogaGV4KGludCwgaW50
PTApOwpleHRlcm4gY2hhciogaGV4KHVuc2lnbmVkIGxvbmcsIGludD0wKTsKZXh0ZXJuIGNoYXIq
IGhleCh1bnNpZ25lZCBpbnQsIGludD0wKTsKCmV4dGVybiBjaGFyKiBvY3QobG9uZywgaW50PTAp
OwpleHRlcm4gY2hhciogb2N0KGludCwgaW50PTApOwpleHRlcm4gY2hhciogb2N0KHVuc2lnbmVk
IGxvbmcsIGludD0wKTsKZXh0ZXJuIGNoYXIqIG9jdCh1bnNpZ25lZCBpbnQsIGludD0wKTsKCmNo
YXIqICAgICAgICBjaHIoY2hhciBjaCwgaW50IHdpZHRoID0gMCk7CmNoYXIqICAgICAgICBzdHIo
Y29uc3QgY2hhciogcywgaW50IHdpZHRoID0gMCk7CgppbmxpbmUgaXN0cmVhbSYgV1MoaXN0cmVh
bSYgc3RyKSB7IHJldHVybiB3cyhzdHIpOyB9Cn0gIAoKCiMgMjUgIi91c3IvbG9jYWwvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjYvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysr
LTMvb3N0cmVhbS5oIiAyIDMKCiMgMSAidGVzdGNhc2UuQyIgMgoKCmNsYXNzIEZvbyB7CiBwdWJs
aWM6CiAgZnJpZW5kIG9zdHJlYW0gJiBvcGVyYXRvciArIChvc3RyZWFtICYsIEZvbykge307Cn07
CgpjbGFzcyBCYXIgewogcHVibGljOgogIGNvbnN0IEZvbyAmbmV4dChjb25zdCBGb28gJikgY29u
c3Q7Cn07Cgp2b2lkIGYoY29uc3QgQmFyICZhcmcxLCBvc3RyZWFtICZvdXQpIHsKICBmb3IoY29u
c3QgRm9vIG15Rm9vOyB0cnVlOyBteUZvbyA9IGFyZzEubmV4dChteUZvbykpIHsKICB9Cn0KCgoK
ICAgIGZpbGVidWYqIGF0dGFjaChpbnQgZmQpOwogICAgZmlsZWJ1Ziogb3Blbihjb25zdCBjaGFy
ICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbW9kZSk7CiAgICBmaWxlYnVmKiBvcGVuKGNvbnN0IGNo
YXIgKmZpbGVuYW1lLCBpb3M6Om9wZW5tb2RlIG1vZGUsIGludCBwcm90ID0gMDY2NCk7CiAgICB2
aXJ0dWFsIGludCB1bmRlcmZsb3coKTsKICAgIHZpcnR1YWwgaW50IG92ZXJmbG93KGludCBjID0g
KC0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2001-04-01  0:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-04-01  0:00 c++/2230: ICE in `fix_lexical_addr', at function.c:5546 Ruth.Doane

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).