<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>158820</bug_id>
          
          <creation_ts>2006-12-22 03:48 0000</creation_ts>
          <short_desc>sys-devel/gettext-0.15 - parser bug in Perl backend to xgettext</short_desc>
          <delta_ts>2006-12-29 16:58:52 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>Applications</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          
          <priority>P2</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>guido@imperia.net</reporter>
          <assigned_to>base-system@gentoo.org</assigned_to>
          

      

      
          <long_desc isprivate="0">
            <who>guido@imperia.net</who>
            <bug_when>2006-12-22 03:48:20 0000</bug_when>
            <thetext>GNU gettext 0.15 introduced a bug in the Perl backend to xgettext.  To reproduce create a sample Perl file test.pl:

$cat test.pl
#! /usr/bin/perl

sub __ { shift }
print gettext (&quot;Dimensions: &quot;), &quot;$width x $height\n&quot;;
__END__
$ /usr/bin/xgettext test.pl
test.pl:4: invalid variable interpolation at &quot;$&quot;

xgettext fails here, although there is no illegal variable interpolation.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>guido@imperia.net</who>
            <bug_when>2006-12-22 03:49:55 0000</bug_when>
            <thetext>Created an attachment (id=104567)
Fix Perl parser in xgettext

The patch is already applied upstream in GNU gettext 0.16.1 and fixes the problem with the &quot;illegal&quot; variable interpolation.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>vapier@gentoo.org</who>
            <bug_when>2006-12-29 16:58:52 0000</bug_when>
            <thetext>easier to version bump then backport

1.16.1 in portage</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104567</attachid>
            <date>2006-12-22 03:49 0000</date>
            <desc>Fix Perl parser in xgettext</desc>
            <filename>uu</filename>
            <type>text/plain</type>
            <data encoding="base64">SW5kZXg6IGdldHRleHQtdG9vbHMvc3JjL3gtcGVybC5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9z
b3VyY2VzL2dldHRleHQvZ2V0dGV4dC9nZXR0ZXh0LXRvb2xzL3NyYy94LXBlcmwuYyx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS4zNwpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDIKZGlmZiAtYyAtMyAt
cjEuMzcgLXIxLjQyCioqKiBnZXR0ZXh0LXRvb2xzL3NyYy94LXBlcmwuYwk4IE1heSAyMDA2IDEz
OjM5OjQzIC0wMDAwCTEuMzcKLS0tIGdldHRleHQtdG9vbHMvc3JjL3gtcGVybC5jCTIgT2N0IDIw
MDYgMTI6MTg6MTUgLTAwMDAJMS40MgoqKioqKioqKioqKioqKioKKioqIDc1OSw3NjYgKioqKgog
IAkJCQkgIGludCBsaW5lbm8pOwogIHN0YXRpYyB0b2tlbl90eSAqeF9wZXJsX2xleCAobWVzc2Fn
ZV9saXN0X3R5ICptbHApOwogIHN0YXRpYyB2b2lkIHhfcGVybF91bmxleCAodG9rZW5fdHkgKnRw
KTsKISBzdGF0aWMgYm9vbCBleHRyYWN0X2JhbGFuY2VkIChtZXNzYWdlX2xpc3RfdHkgKm1scCwg
aW50IHN0YXRlLAohIAkJCSAgICAgIHRva2VuX3R5cGVfdHkgZGVsaW0sCiAgCQkJICAgICAgZmxh
Z19jb250ZXh0X3R5IG91dGVyX2NvbnRleHQsCiAgCQkJICAgICAgZmxhZ19jb250ZXh0X2xpc3Rf
aXRlcmF0b3JfdHkgY29udGV4dF9pdGVyLAogIAkJCSAgICAgIGludCBhcmcsIHN0cnVjdCBhcmds
aXN0X3BhcnNlciAqYXJncGFyc2VyKTsKLS0tIDc1OSw3NjcgLS0tLQogIAkJCQkgIGludCBsaW5l
bm8pOwogIHN0YXRpYyB0b2tlbl90eSAqeF9wZXJsX2xleCAobWVzc2FnZV9saXN0X3R5ICptbHAp
OwogIHN0YXRpYyB2b2lkIHhfcGVybF91bmxleCAodG9rZW5fdHkgKnRwKTsKISBzdGF0aWMgYm9v
bCBleHRyYWN0X2JhbGFuY2VkIChtZXNzYWdlX2xpc3RfdHkgKm1scCwKISAJCQkgICAgICB0b2tl
bl90eXBlX3R5IGRlbGltLCBib29sIGVhdF9kZWxpbSwKISAJCQkgICAgICBib29sIGNvbW1hX2Rl
bGltLAogIAkJCSAgICAgIGZsYWdfY29udGV4dF90eSBvdXRlcl9jb250ZXh0LAogIAkJCSAgICAg
IGZsYWdfY29udGV4dF9saXN0X2l0ZXJhdG9yX3R5IGNvbnRleHRfaXRlciwKICAJCQkgICAgICBp
bnQgYXJnLCBzdHJ1Y3QgYXJnbGlzdF9wYXJzZXIgKmFyZ3BhcnNlcik7CioqKioqKioqKioqKioq
KgoqKiogMTM2OSwxMzc1ICoqKioKICAJICAgICAgIHJlYWxfZmlsZV9uYW1lLCBsaW5lX251bWJl
cik7CiAgI2VuZGlmCiAgCiEgICAgICAgaWYgKGV4dHJhY3RfYmFsYW5jZWQgKG1scCwgMCwgdG9r
ZW5fdHlwZV9yYnJhY2UsCiAgCQkJICAgIG51bGxfY29udGV4dCwgbnVsbF9jb250ZXh0X2xpc3Rf
aXRlcmF0b3IsCiAgCQkJICAgIDEsIGFyZ2xpc3RfcGFyc2VyX2FsbG9jIChtbHAsIE5VTEwpKSkK
ICAJcmV0dXJuOwotLS0gMTM3MCwxMzc2IC0tLS0KICAJICAgICAgIHJlYWxfZmlsZV9uYW1lLCBs
aW5lX251bWJlcik7CiAgI2VuZGlmCiAgCiEgICAgICAgaWYgKGV4dHJhY3RfYmFsYW5jZWQgKG1s
cCwgdG9rZW5fdHlwZV9yYnJhY2UsIHRydWUsIGZhbHNlLAogIAkJCSAgICBudWxsX2NvbnRleHQs
IG51bGxfY29udGV4dF9saXN0X2l0ZXJhdG9yLAogIAkJCSAgICAxLCBhcmdsaXN0X3BhcnNlcl9h
bGxvYyAobWxwLCBOVUxMKSkpCiAgCXJldHVybjsKKioqKioqKioqKioqKioqCioqKiAxNTYwLDE1
NjYgKioqKgogIAkJZWxzZQogIAkJICB7CiAgCQkgICAgeF9wZXJsX3VubGV4ICh0MSk7CiEgCQkg
ICAgaWYgKGV4dHJhY3RfYmFsYW5jZWQgKG1scCwgMSwgdG9rZW5fdHlwZV9yYnJhY2UsCiAgCQkJ
CQkgIG51bGxfY29udGV4dCwgY29udGV4dF9pdGVyLAogIAkJCQkJICAxLCBhcmdsaXN0X3BhcnNl
cl9hbGxvYyAobWxwLCAmc2hhcGVzKSkpCiAgCQkgICAgICByZXR1cm47Ci0tLSAxNTYxLDE1Njcg
LS0tLQogIAkJZWxzZQogIAkJICB7CiAgCQkgICAgeF9wZXJsX3VubGV4ICh0MSk7CiEgCQkgICAg
aWYgKGV4dHJhY3RfYmFsYW5jZWQgKG1scCwgdG9rZW5fdHlwZV9yYnJhY2UsIHRydWUsIGZhbHNl
LAogIAkJCQkJICBudWxsX2NvbnRleHQsIGNvbnRleHRfaXRlciwKICAJCQkJCSAgMSwgYXJnbGlz
dF9wYXJzZXJfYWxsb2MgKG1scCwgJnNoYXBlcykpKQogIAkJICAgICAgcmV0dXJuOwoqKioqKioq
KioqKioqKioKKioqIDE1OTEsMTU5NyAqKioqCiAgCSAgZnByaW50ZiAoc3RkZXJyLCAiJXM6JWQ6
IGV4dHJhY3RpbmcgYmFsYW5jZWQgJ3snIGFmdGVyIHZhcm5hbWVcbiIsCiAgCQkgICByZWFsX2Zp
bGVfbmFtZSwgbGluZV9udW1iZXIpOwogICNlbmRpZgohIAkgIGV4dHJhY3RfYmFsYW5jZWQgKG1s
cCwgMCwgdG9rZW5fdHlwZV9yYnJhY2UsCiAgCQkJICAgIG51bGxfY29udGV4dCwgbnVsbF9jb250
ZXh0X2xpc3RfaXRlcmF0b3IsCiAgCQkJICAgIDEsIGFyZ2xpc3RfcGFyc2VyX2FsbG9jIChtbHAs
IE5VTEwpKTsKICAJICBicmVhazsKLS0tIDE1OTIsMTU5OCAtLS0tCiAgCSAgZnByaW50ZiAoc3Rk
ZXJyLCAiJXM6JWQ6IGV4dHJhY3RpbmcgYmFsYW5jZWQgJ3snIGFmdGVyIHZhcm5hbWVcbiIsCiAg
CQkgICByZWFsX2ZpbGVfbmFtZSwgbGluZV9udW1iZXIpOwogICNlbmRpZgohIAkgIGV4dHJhY3Rf
YmFsYW5jZWQgKG1scCwgdG9rZW5fdHlwZV9yYnJhY2UsIHRydWUsIGZhbHNlLAogIAkJCSAgICBu
dWxsX2NvbnRleHQsIG51bGxfY29udGV4dF9saXN0X2l0ZXJhdG9yLAogIAkJCSAgICAxLCBhcmds
aXN0X3BhcnNlcl9hbGxvYyAobWxwLCBOVUxMKSk7CiAgCSAgYnJlYWs7CioqKioqKioqKioqKioq
KgoqKiogMTYwMSwxNjA3ICoqKioKICAJICBmcHJpbnRmIChzdGRlcnIsICIlczolZDogZXh0cmFj
dGluZyBiYWxhbmNlZCAnWycgYWZ0ZXIgdmFybmFtZVxuIiwKICAJCSAgIHJlYWxfZmlsZV9uYW1l
LCBsaW5lX251bWJlcik7CiAgI2VuZGlmCiEgCSAgZXh0cmFjdF9iYWxhbmNlZCAobWxwLCAwLCB0
b2tlbl90eXBlX3JicmFja2V0LAogIAkJCSAgICBudWxsX2NvbnRleHQsIG51bGxfY29udGV4dF9s
aXN0X2l0ZXJhdG9yLAogIAkJCSAgICAxLCBhcmdsaXN0X3BhcnNlcl9hbGxvYyAobWxwLCBOVUxM
KSk7CiAgCSAgYnJlYWs7Ci0tLSAxNjAyLDE2MDggLS0tLQogIAkgIGZwcmludGYgKHN0ZGVyciwg
IiVzOiVkOiBleHRyYWN0aW5nIGJhbGFuY2VkICdbJyBhZnRlciB2YXJuYW1lXG4iLAogIAkJICAg
cmVhbF9maWxlX25hbWUsIGxpbmVfbnVtYmVyKTsKICAjZW5kaWYKISAJICBleHRyYWN0X2JhbGFu
Y2VkIChtbHAsIHRva2VuX3R5cGVfcmJyYWNrZXQsIHRydWUsIGZhbHNlLAogIAkJCSAgICBudWxs
X2NvbnRleHQsIG51bGxfY29udGV4dF9saXN0X2l0ZXJhdG9yLAogIAkJCSAgICAxLCBhcmdsaXN0
X3BhcnNlcl9hbGxvYyAobWxwLCBOVUxMKSk7CiAgCSAgYnJlYWs7CioqKioqKioqKioqKioqKgoq
KiogMjc4MiwyNzg4ICoqKioKICAvKiBUaGUgZmlsZSBpcyBicm9rZW4gaW50byB0b2tlbnMuICBT
Y2FuIHRoZSB0b2tlbiBzdHJlYW0sIGxvb2tpbmcgZm9yCiAgICAgYSBrZXl3b3JkLCBmb2xsb3dl
ZCBieSBhIGxlZnQgcGFyZW4sIGZvbGxvd2VkIGJ5IGEgc3RyaW5nLiAgV2hlbiB3ZQogICAgIHNl
ZSB0aGlzIHNlcXVlbmNlLCB3ZSBoYXZlIHNvbWV0aGluZyB0byByZW1lbWJlci4gIFdlIGFzc3Vt
ZSB3ZSBhcmUKISAgICBsb29raW5nIGF0IGEgdmFsaWQgQyBvciBDKysgcHJvZ3JhbSwgYW5kIGxl
YXZlIHRoZSBjb21wbGFpbnRzIGFib3V0CiAgICAgdGhlIGdyYW1tYXIgdG8gdGhlIGNvbXBpbGVy
LgogIAogICAgICAgTm9ybWFsIGhhbmRsaW5nOiBMb29rIGZvcgotLS0gMjc4MywyNzg5IC0tLS0K
ICAvKiBUaGUgZmlsZSBpcyBicm9rZW4gaW50byB0b2tlbnMuICBTY2FuIHRoZSB0b2tlbiBzdHJl
YW0sIGxvb2tpbmcgZm9yCiAgICAgYSBrZXl3b3JkLCBmb2xsb3dlZCBieSBhIGxlZnQgcGFyZW4s
IGZvbGxvd2VkIGJ5IGEgc3RyaW5nLiAgV2hlbiB3ZQogICAgIHNlZSB0aGlzIHNlcXVlbmNlLCB3
ZSBoYXZlIHNvbWV0aGluZyB0byByZW1lbWJlci4gIFdlIGFzc3VtZSB3ZSBhcmUKISAgICBsb29r
aW5nIGF0IGEgdmFsaWQgUGVybCBwcm9ncmFtLCBhbmQgbGVhdmUgdGhlIGNvbXBsYWludHMgYWJv
dXQKICAgICB0aGUgZ3JhbW1hciB0byB0aGUgY29tcGlsZXIuCiAgCiAgICAgICBOb3JtYWwgaGFu
ZGxpbmc6IExvb2sgZm9yCioqKioqKioqKioqKioqKgoqKiogMjc5MSwyODM3ICoqKioKICAgICAg
ICAga2V5d29yZCAoIC4uLiBtc2dpZCAuLi4gbXNnaWRfcGx1cmFsIC4uLiApCiAgCiAgICAgV2Ug
dXNlIHJlY3Vyc2lvbiBiZWNhdXNlIHRoZSBhcmd1bWVudHMgYmVmb3JlIG1zZ2lkIG9yIGJldHdl
ZW4gbXNnaWQKISAgICBhbmQgbXNnaWRfcGx1cmFsIGNhbiBjb250YWluIHN1YmV4cHJlc3Npb25z
IG9mIHRoZSBzYW1lIGZvcm0uICAqLwogIAogIC8qIEV4dHJhY3QgbWVzc2FnZXMgdW50aWwgdGhl
IG5leHQgYmFsYW5jZWQgY2xvc2luZyBwYXJlbnRoZXNpcy4KICAgICBFeHRyYWN0ZWQgbWVzc2Fn
ZXMgYXJlIGFkZGVkIHRvIE1MUC4KICAKICAgICBBUkcgaXMgdGhlIGN1cnJlbnQgYXJndW1lbnQg
bGlzdCBwb3NpdGlvbiwgc3RhcnRzIHdpdGggMS4KICAgICBBUkdQQVJTRVIgaXMgdGhlIGNvcnJl
c3BvbmRpbmcgYXJndW1lbnQgbGlzdCBwYXJzZXIuCiAgCiEgICAgUmV0dXJucyB0cnVlIGZvciBF
T0YsIGZhbHNlIG90aGVyd2lzZS4KISAKISAgICBTdGF0ZXMgYXJlOgohIAohICAgIDAgLSBpbml0
aWFsIHN0YXRlCiEgICAgMSAtIGtleXdvcmQgaGFzIGJlZW4gc2VlbgohICAgIDIgLSBleHRyYWN0
YWJsZSBzdHJpbmcgaGFzIGJlZW4gc2VlbgohICAgIDMgLSBhIGRvdCBvcGVyYXRvciBhZnRlciBh
biBleHRyYWN0YWJsZSBzdHJpbmcgaGFzIGJlZW4gc2VlbgohIAohICAgIFN0YXRlcyAyIGFuZCAz
IGFyZSAiZnJhZ2lsZSIsIHRoZSBwYXJzZXIgd2lsbCByZW1haW4gaW4gc3RhdGUgMgohICAgIGFz
IGxvbmcgYXMgb25seSBvcGVuaW5nIHBhcmVudGhlc2VzIGFyZSBzZWVuLCBhIHRyYW5zaXRpb24g
dG8KISAgICBzdGF0ZSAzIGlzIGRvbmUgb24gYXBwZWFyYW5jZSBvZiBhIGRvdCBvcGVyYXRvciwg
YWxsIG90aGVyIHRva2VucwohICAgIHdpbGwgY2F1c2UgdGhlIHBhcnNlciB0byBmYWxsIGJhY2sg
dG8gc3RhdGUgMSBvciAwLCBldmVudHVhbGx5CiEgICAgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGFi
b3V0IGludmFsaWQgaW50ZXJtaXhpbmcgb2YgY29uc3RhbnQgYW5kCiEgICAgbm9uLWNvbnN0YW50
IHN0cmluZ3MuCiEgCiEgICAgTGlrZXdpc2UsIHN0YXRlIDMgaXMgZnJhZ2lsZS4gIFRoZSBwYXJz
ZXIgd2lsbCByZW1haW4gaW4gc3RhdGUgMwohICAgIGFzIGxvbmcgYXMgb25seSBjbG9zaW5nIHBh
cmVudGhlc2VzIGFyZSBzZWVuLCBhIHRyYW5zaXRpb24gdG8gc3RhdGUKISAgICAyIGlzIGRvbmUg
b24gYXBwZWFyYW5jZSBvZiBhbm90aGVyIChsaXRlcmFsISkgc3RyaW5nLCBhbGwgb3RoZXIKISAg
ICB0b2tlbnMgd2lsbCBjYXVzZSBhIHdhcm5pbmcuICAqLwogIAogIHN0YXRpYyBib29sCiEgZXh0
cmFjdF9iYWxhbmNlZCAobWVzc2FnZV9saXN0X3R5ICptbHAsIGludCBzdGF0ZSwgdG9rZW5fdHlw
ZV90eSBkZWxpbSwKICAJCSAgZmxhZ19jb250ZXh0X3R5IG91dGVyX2NvbnRleHQsCiAgCQkgIGZs
YWdfY29udGV4dF9saXN0X2l0ZXJhdG9yX3R5IGNvbnRleHRfaXRlciwKICAJCSAgaW50IGFyZywg
c3RydWN0IGFyZ2xpc3RfcGFyc2VyICphcmdwYXJzZXIpCiAgewotICAgLyogTnVtYmVyIG9mIGxl
ZnQgcGFyZW50aGVzZXMgc2Vlbi4gICovCi0gICBpbnQgcGFyZW5fc2VlbiA9IDA7Ci0gCiAgICAv
KiBXaGV0aGVyIHRvIGltcGxpY2l0bHkgYXNzdW1lIHRoZSBuZXh0IHRva2VucyBhcmUgYXJndW1l
bnRzIGV2ZW4gd2l0aG91dAogICAgICAgYSAnKCcuICAqLwogICAgYm9vbCBuZXh0X2lzX2FyZ3Vt
ZW50ID0gZmFsc2U7CiAgCiAgICAvKiBDb250ZXh0IGl0ZXJhdG9yIHRoYXQgd2lsbCBiZSB1c2Vk
IGlmIHRoZSBuZXh0IHRva2VuIGlzIGEgJygnLiAgKi8KICAgIGZsYWdfY29udGV4dF9saXN0X2l0
ZXJhdG9yX3R5IG5leHRfY29udGV4dF9pdGVyID0KLS0tIDI3OTIsMjg3NyAtLS0tCiAgICAgICAg
IGtleXdvcmQgKCAuLi4gbXNnaWQgLi4uIG1zZ2lkX3BsdXJhbCAuLi4gKQogIAogICAgIFdlIHVz
ZSByZWN1cnNpb24gYmVjYXVzZSB0aGUgYXJndW1lbnRzIGJlZm9yZSBtc2dpZCBvciBiZXR3ZWVu
IG1zZ2lkCiEgICAgYW5kIG1zZ2lkX3BsdXJhbCBjYW4gY29udGFpbiBzdWJleHByZXNzaW9ucyBv
ZiB0aGUgc2FtZSBmb3JtLgohIAohICAgIEluIFBlcmwsIHBhcmVudGhlc2VzIGFyb3VuZCBmdW5j
dGlvbiBhcmd1bWVudHMgY2FuIGJlIG9taXR0ZWQuCiEgCiEgICAgVGhlIGdlbmVyYWwgcnVsZXMg
YXJlOgohICAgICAgMSkgRnVuY3Rpb25zIGRlY2xhcmVkIHdpdGggYSBwcm90b3R5cGUgdGFrZSBl
eGFjdGx5IHRoZSBzcGVjaWZpZWQgbnVtYmVyCiEgICAgICAgICBvZiBhcmd1bWVudHMuCiEgICAg
ICAgICAgIHN1YiBvbmVfYXJnICgkKSB7IC4uLiB9CiEgICAgICAgICAgIHN1YiB0d29fYXJncyAo
JCQpIHsgLi4uIH0KISAgICAgIDIpIFdoZW4gYSBmdW5jdGlvbiBuYW1lIGlzIGltbWVkaWF0ZWx5
IGZvbGxvd2VkIGJ5IGFuIG9wZW5pbmcgcGFyZW50aGVzaXMsCiEgICAgICAgICB0aGUgYXJndW1l
bnQgbGlzdCBlbmRzIGF0IHRoZSBjb3JyZXNwb25kaW5nIGNsb3NpbmcgcGFyZW50aGVzaXMuCiEg
CiEgICAgSWYgcnVsZSAxIGFuZCBydWxlIDIgYXJlIGNvbnRyYWRpY3RvcnksIGkuZS4gd2hlbiB0
aGUgcHJvZ3JhbSBjYWxscyBhCiEgICAgZnVuY3Rpb24gd2l0aCBhbiBleHBsaWNpdCBhcmd1bWVu
dCBsaXN0IGFuZCB0aGUgd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywKISAgICB0aGUgcHJvZ3Jh
bSBpcyBpbnZhbGlkOgohICAgICAgc3ViIHR3b19hcmdzICgkJCkgeyAuLi4gfQohICAgICAgZm9v
IHR3b19hcmdzICh4KSwgeSAgICAgICAgICAgICAtIGludmFsaWQgZHVlIHRvIHJ1bGVzIDEgYW5k
IDIKISAKISAgICBBbWJpZ3VpdGllcyBhcmUgcmVzb2x2ZWQgYXMgZm9sbG93czoKISAgICAgIDMp
IFNvbWUgYnVpbHQtaW5zLCBzdWNoIGFzICdhYnMnLCAnc3FydCcsICdzaW4nLCAnY29zJywgLi4u
LCBhbmQgZnVuY3Rpb25zCiEgICAgICAgICBkZWNsYXJlZCB3aXRoIGEgcHJvdG90eXBlIG9mIGV4
YWN0bHkgb25lIGFyZ3VtZW50IHRha2UgZXhhY3RseSBvbmUKISAgICAgICAgIGFyZ3VtZW50Ogoh
ICAgICAgICAgICBmb28gc2luIHgsIHkgID09PiAgZm9vIChzaW4gKHgpLCB5KQohICAgICAgICAg
ICBzdWIgb25lX2FyZyAoJCkgeyAuLi4gfQohICAgICAgICAgICBmb28gb25lX2FyZyB4LCB5LCB6
ICA9PT4gIGZvbyAob25lX2FyZyAoeCksIHksIHopCiEgICAgICA0KSBPdGhlciBpZGVudGlmaWVy
cywgaWYgbm90IGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IGFuIG9wZW5pbmcKISAgICAgICAgIHBh
cmVudGhlc2lzLCBjb25zdW1lIHRoZSBlbnRpcmUgcmVtYWluaW5nIGFyZ3VtZW50IGxpc3Q6CiEg
ICAgICAgICAgIGZvbyBiYXIgeCwgeSAgPT0+ICBmb28gKGJhciAoeCwgeSkpCiEgICAgICAgICAg
IHN1YiB0d29fYXJncyAoJCQpIHsgLi4uIH0KISAgICAgICAgICAgZm9vIHR3b19hcmdzIHgsIHkg
ID09PiAgZm9vICh0d29fYXJncyAoeCwgeSkpCiEgCiEgICAgT3RoZXIgc2VyaWVzIG9mIGNvbW1h
IHNlcGFyYXRlZCBleHByZXNzaW9ucyB3aXRob3V0IGEgZnVuY3Rpb24gbmFtZSBhdAohICAgIHRo
ZSBiZWdpbm5pbmcgYXJlIGNvbW1hIGV4cHJlc3Npb25zOgohICAgICAgICAgICBzdWIgdHdvX2Fy
Z3MgKCQkKSB7IC4uLiB9CiEgICAgICAgICAgIGZvbyB0d29fYXJncyB4LCAoeSwgeikgID09PiAg
Zm9vICh0d29fYXJncyAoeCwgKHksIHopKSkKISAgICBOb3RlIHRoYXQgdGhlIGV2YWx1YXRpb24g
b2YgY29tbWEgZXhwcmVzc2lvbnMgcmV0dXJucyBhIGxpc3Qgb2YgdmFsdWVzCiEgICAgd2hlbiBp
biBsaXN0IGNvbnRleHQgKGUuZy4gaW5zaWRlIHRoZSBhcmd1bWVudCBsaXN0IG9mIGEgZnVuY3Rp
b24gd2l0aG91dAohICAgIHByb3RvdHlwZSkgYnV0IG9ubHkgb25lIHZhbHVlIHdoZW4gaW5zaWRl
IHRoZSBhcmd1bWVudCBsaXN0IG9mIGEgZnVuY3Rpb24KISAgICB3aXRoIGEgcHJvdG90eXBlOgoh
ICAgICAgICAgICBzdWIgcHJpbnQzICgkJCQpIHsgcHJpbnQgQF8gfQohICAgICAgICAgICBwcmlu
dDMgNSwgKDYsIDcpLCA4ICA9PT4gIDU3OAohICAgICAgICAgICBwcmludCA1LCAoNiwgNyksIDgg
ID09PiAgNTY3OAohIAohICAgIFdoZXJlIHJ1bGUgMyBvciA0IGNvbnRyYWRpY3QgcnVsZSAxIG9y
IDIsIHRoZSBwcm9ncmFtIGlzIGludmFsaWQ6CiEgICAgICBzaW4gKHgsIHkpICAgICAgICAgICAg
ICAgICAgICAgIC0gaW52YWxpZCBkdWUgdG8gcnVsZXMgMiBhbmQgMwohICAgICAgc3ViIG9uZV9h
cmcgKCQpIHsgLi4uIH0KISAgICAgIG9uZV9hcmcgKHgsIHkpICAgICAgICAgICAgICAgICAgLSBp
bnZhbGlkIGR1ZSB0byBydWxlcyAyIGFuZCAzCiEgICAgICBzdWIgdHdvX2FyZ3MgKCQkKSB7IC4u
LiB9CiEgICAgICBmb28gdHdvX2FyZ3MgeCwgeSwgeiAgICAgICAgICAgIC0gaW52YWxpZCBkdWUg
dG8gcnVsZXMgMSBhbmQgNAohICAqLwogIAogIC8qIEV4dHJhY3QgbWVzc2FnZXMgdW50aWwgdGhl
IG5leHQgYmFsYW5jZWQgY2xvc2luZyBwYXJlbnRoZXNpcy4KICAgICBFeHRyYWN0ZWQgbWVzc2Fn
ZXMgYXJlIGFkZGVkIHRvIE1MUC4KICAKKyAgICBERUxJTSBjYW4gYmUgZWl0aGVyIHRva2VuX3R5
cGVfcmJyYWNlLCB0b2tlbl90eXBlX3JicmFja2V0LAorICAgIHRva2VuX3R5cGVfcnBhcmVuLiAg
QWRkaXRpb25hbGx5LCBpZiBDT01NQV9ERUxJTSBpcyB0cnVlLCBwYXJzaW5nCisgICAgc3RvcHMg
YXQgdGhlIG5leHQgY29tbWEgb3V0c2lkZSBwYXJlbnRoZXNlcy4KKyAKICAgICBBUkcgaXMgdGhl
IGN1cnJlbnQgYXJndW1lbnQgbGlzdCBwb3NpdGlvbiwgc3RhcnRzIHdpdGggMS4KICAgICBBUkdQ
QVJTRVIgaXMgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbGlzdCBwYXJzZXIuCiAgCiEgICAg
UmV0dXJucyB0cnVlIGZvciBFT0YsIGZhbHNlIG90aGVyd2lzZS4gICovCiAgCiAgc3RhdGljIGJv
b2wKISBleHRyYWN0X2JhbGFuY2VkIChtZXNzYWdlX2xpc3RfdHkgKm1scCwKISAJCSAgdG9rZW5f
dHlwZV90eSBkZWxpbSwgYm9vbCBlYXRfZGVsaW0sIGJvb2wgY29tbWFfZGVsaW0sCiAgCQkgIGZs
YWdfY29udGV4dF90eSBvdXRlcl9jb250ZXh0LAogIAkJICBmbGFnX2NvbnRleHRfbGlzdF9pdGVy
YXRvcl90eSBjb250ZXh0X2l0ZXIsCiAgCQkgIGludCBhcmcsIHN0cnVjdCBhcmdsaXN0X3BhcnNl
ciAqYXJncGFyc2VyKQogIHsKICAgIC8qIFdoZXRoZXIgdG8gaW1wbGljaXRseSBhc3N1bWUgdGhl
IG5leHQgdG9rZW5zIGFyZSBhcmd1bWVudHMgZXZlbiB3aXRob3V0CiAgICAgICBhICcoJy4gICov
CiAgICBib29sIG5leHRfaXNfYXJndW1lbnQgPSBmYWxzZTsKKyAgIC8qIFBhcmFtZXRlcnMgb2Yg
dGhlIGtleXdvcmQganVzdCBzZWVuLiAgRGVmaW5lZCBvbmx5IHdoZW4gbmV4dF9pc19hcmd1bWVu
dAorICAgICAgaXMgdHJ1ZS4gICovCisgICBjb25zdCBzdHJ1Y3QgY2FsbHNoYXBlcyAqbmV4dF9z
aGFwZXMgPSBOVUxMOworICAgc3RydWN0IGFyZ2xpc3RfcGFyc2VyICpuZXh0X2FyZ3BhcnNlciA9
IE5VTEw7CisgCisgICAvKiBXaGV0aGVyIHRvIG5vdCBjb25zaWRlciBzdHJpbmdzIHVudGlsIHRo
ZSBuZXh0IGNvbW1hLiAgKi8KKyAgIGJvb2wgc2tpcF91bnRpbF9jb21tYSA9IGZhbHNlOwogIAog
ICAgLyogQ29udGV4dCBpdGVyYXRvciB0aGF0IHdpbGwgYmUgdXNlZCBpZiB0aGUgbmV4dCB0b2tl
biBpcyBhICcoJy4gICovCiAgICBmbGFnX2NvbnRleHRfbGlzdF9pdGVyYXRvcl90eSBuZXh0X2Nv
bnRleHRfaXRlciA9CioqKioqKioqKioqKioqKgoqKiogMjg1MiwyODU4ICoqKioKICAKICAgIGZv
ciAoOzspCiAgICAgIHsKLSAgICAgICBpbnQgbXlfbGFzdF90b2tlbiA9IGxhc3RfdG9rZW47CiAg
ICAgICAgLyogVGhlIGN1cnJlbnQgdG9rZW4uICAqLwogICAgICAgIHRva2VuX3R5ICp0cDsKICAK
LS0tIDI4OTIsMjg5NyAtLS0tCioqKioqKioqKioqKioqKgoqKiogMjg2NSwyODg3ICoqKioKICAJ
ICB4Z2V0dGV4dF9jdXJyZW50X3NvdXJjZV9lbmNvZGluZyA9IHBvX2NoYXJzZXRfdXRmODsKICAJ
ICBhcmdsaXN0X3BhcnNlcl9kb25lIChhcmdwYXJzZXIsIGFyZyk7CiAgCSAgeGdldHRleHRfY3Vy
cmVudF9zb3VyY2VfZW5jb2RpbmcgPSB4Z2V0dGV4dF9nbG9iYWxfc291cmNlX2VuY29kaW5nOwog
ICNpZiBERUJVR19QRVJMCiAgCSAgZnByaW50ZiAoc3RkZXJyLCAiJXM6JWQ6IGV4dHJhY3RfYmFs
YW5jZWQgZmluaXNoZWQgKCVkKVxuIiwKICAJCSAgIGxvZ2ljYWxfZmlsZV9uYW1lLCB0cC0+bGlu
ZV9udW1iZXIsIC0tbmVzdGluZ19sZXZlbCk7CiAgI2VuZGlmCiEgCSAgZnJlZV90b2tlbiAodHAp
OwogIAkgIHJldHVybiBmYWxzZTsKICAJfQogIAogICAgICAgIGlmIChuZXh0X2lzX2FyZ3VtZW50
ICYmIHRwLT50eXBlICE9IHRva2VuX3R5cGVfbHBhcmVuKQogIAl7CiAgCSAgLyogQW4gYXJndW1l
bnQgbGlzdCBzdGFydHMsIGV2ZW4gdGhvdWdoIHRoZXJlIGlzIG5vICcoJy4gICovCiEgCSAgY29u
dGV4dF9pdGVyID0gbmV4dF9jb250ZXh0X2l0ZXI7CiEgCSAgb3V0ZXJfY29udGV4dCA9IGlubmVy
X2NvbnRleHQ7CiEgCSAgaW5uZXJfY29udGV4dCA9CiEgCSAgICBpbmhlcml0ZWRfY29udGV4dCAo
b3V0ZXJfY29udGV4dCwKISAJCQkgICAgICAgZmxhZ19jb250ZXh0X2xpc3RfaXRlcmF0b3JfYWR2
YW5jZSAoCiEgCQkJCSAmY29udGV4dF9pdGVyKSk7CiAgCX0KICAKICAgICAgICBzd2l0Y2ggKHRw
LT50eXBlKQotLS0gMjkwNCwyOTg3IC0tLS0KICAJICB4Z2V0dGV4dF9jdXJyZW50X3NvdXJjZV9l
bmNvZGluZyA9IHBvX2NoYXJzZXRfdXRmODsKICAJICBhcmdsaXN0X3BhcnNlcl9kb25lIChhcmdw
YXJzZXIsIGFyZyk7CiAgCSAgeGdldHRleHRfY3VycmVudF9zb3VyY2VfZW5jb2RpbmcgPSB4Z2V0
dGV4dF9nbG9iYWxfc291cmNlX2VuY29kaW5nOworIAkgIGlmIChuZXh0X2FyZ3BhcnNlciAhPSBO
VUxMKQorIAkgICAgZnJlZSAobmV4dF9hcmdwYXJzZXIpOwogICNpZiBERUJVR19QRVJMCiAgCSAg
ZnByaW50ZiAoc3RkZXJyLCAiJXM6JWQ6IGV4dHJhY3RfYmFsYW5jZWQgZmluaXNoZWQgKCVkKVxu
IiwKICAJCSAgIGxvZ2ljYWxfZmlsZV9uYW1lLCB0cC0+bGluZV9udW1iZXIsIC0tbmVzdGluZ19s
ZXZlbCk7CiAgI2VuZGlmCiEgCSAgaWYgKGVhdF9kZWxpbSkKISAJICAgIGZyZWVfdG9rZW4gKHRw
KTsKISAJICBlbHNlCiEgCSAgICAvKiBQcmVzZXJ2ZSB0aGUgZGVsaW1pdGVyIGZvciB0aGUgY2Fs
bGVyLiAgKi8KISAJICAgIHhfcGVybF91bmxleCAodHApOwogIAkgIHJldHVybiBmYWxzZTsKICAJ
fQogIAorICAgICAgIGlmIChjb21tYV9kZWxpbSAmJiB0cC0+dHlwZSA9PSB0b2tlbl90eXBlX2Nv
bW1hKQorIAl7CisgCSAgeGdldHRleHRfY3VycmVudF9zb3VyY2VfZW5jb2RpbmcgPSBwb19jaGFy
c2V0X3V0Zjg7CisgCSAgYXJnbGlzdF9wYXJzZXJfZG9uZSAoYXJncGFyc2VyLCBhcmcpOworIAkg
IHhnZXR0ZXh0X2N1cnJlbnRfc291cmNlX2VuY29kaW5nID0geGdldHRleHRfZ2xvYmFsX3NvdXJj
ZV9lbmNvZGluZzsKKyAJICBpZiAobmV4dF9hcmdwYXJzZXIgIT0gTlVMTCkKKyAJICAgIGZyZWUg
KG5leHRfYXJncGFyc2VyKTsKKyAjaWYgREVCVUdfUEVSTAorIAkgIGZwcmludGYgKHN0ZGVyciwg
IiVzOiVkOiBleHRyYWN0X2JhbGFuY2VkIGZpbmlzaGVkIGF0IGNvbW1hICglZClcbiIsCisgCQkg
ICBsb2dpY2FsX2ZpbGVfbmFtZSwgdHAtPmxpbmVfbnVtYmVyLCAtLW5lc3RpbmdfbGV2ZWwpOwor
ICNlbmRpZgorIAkgIHhfcGVybF91bmxleCAodHApOworIAkgIHJldHVybiBmYWxzZTsKKyAJfQor
IAkgIAogICAgICAgIGlmIChuZXh0X2lzX2FyZ3VtZW50ICYmIHRwLT50eXBlICE9IHRva2VuX3R5
cGVfbHBhcmVuKQogIAl7CiAgCSAgLyogQW4gYXJndW1lbnQgbGlzdCBzdGFydHMsIGV2ZW4gdGhv
dWdoIHRoZXJlIGlzIG5vICcoJy4gICovCiEgCSAgYm9vbCBuZXh0X2NvbW1hX2RlbGltOwohIAoh
IAkgIHhfcGVybF91bmxleCAodHApOwohIAohIAkgIGlmIChuZXh0X3NoYXBlcyAhPSBOVUxMKQoh
IAkgICAgLyogV2Uga25vdyBzb21ldGhpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhbGxl
ZC4gIEFzc3VtZQohIAkgICAgICAgdGhhdCBpdCBjb25zdW1lcyBvbmx5IG9uZSBhcmd1bWVudCBp
ZiBubyBhcmd1bWVudCBudW1iZXIgb3IKISAJICAgICAgIHRvdGFsID4gMSBpcyBzcGVjaWZpZWQu
ICAqLwohIAkgICAgewohIAkgICAgICBzaXplX3QgaTsKISAKISAJICAgICAgbmV4dF9jb21tYV9k
ZWxpbSA9IHRydWU7CiEgCSAgICAgIGZvciAoaSA9IDA7IGkgPCBuZXh0X3NoYXBlcy0+bnNoYXBl
czsgaSsrKQohIAkJewohIAkJICBjb25zdCBzdHJ1Y3QgY2FsbHNoYXBlICpzaGFwZSA9ICZuZXh0
X3NoYXBlcy0+c2hhcGVzW2ldOwohIAohIAkJICBpZiAoc2hhcGUtPmFyZ251bTEgPiAxCiEgCQkg
ICAgICB8fCBzaGFwZS0+YXJnbnVtMiA+IDEKISAJCSAgICAgIHx8IHNoYXBlLT5hcmdudW1jID4g
MQohIAkJICAgICAgfHwgc2hhcGUtPmFyZ3RvdGFsID4gMSkKISAJCSAgICBuZXh0X2NvbW1hX2Rl
bGltID0gZmFsc2U7CiEgCQl9CiEgCSAgICB9CiEgCSAgZWxzZQohIAkgICAgLyogV2Uga25vdyBu
b3RoaW5nIGFib3V0IHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQuICBJdCBjb3VsZCBiZQohIAkg
ICAgICAgYSBmdW5jdGlvbiBwcm90b3R5cGVkIHRvIHRha2Ugb25seSBvbmUgYXJndW1lbnQsIG9y
IG9uIHRoZSBvdGhlcgohIAkgICAgICAgaGFuZCBpdCBjb3VsZCBiZSBwcm90b3R5cGVkIHRvIHRh
a2UgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCBvciBhbgohIAkgICAgICAgYXJiaXRyYXJ5IGFyZ3Vt
ZW50IGxpc3Qgb3IgaXQgY291bGQgYmUgdW5wcm90b3R5cGVkLiAgRHVlIHRvCiEgCSAgICAgICB0
aGUgd2F5IHRoZSBwYXJzZXIgd29ya3MsIGFzc3VtaW5nIHRoZSBmaXJzdCBjYXNlIGdpdmVzIHRo
ZQohIAkgICAgICAgYmVzdCByZXN1bHRzLiAgKi8KISAJICAgIG5leHRfY29tbWFfZGVsaW0gPSB0
cnVlOwohIAohIAkgIGlmIChleHRyYWN0X2JhbGFuY2VkIChtbHAsIGRlbGltLCBmYWxzZSwgbmV4
dF9jb21tYV9kZWxpbSwKISAJCQkJaW5uZXJfY29udGV4dCwgbmV4dF9jb250ZXh0X2l0ZXIsCiEg
CQkJCTEsIG5leHRfYXJncGFyc2VyKSkKISAJICAgIHsKISAJICAgICAgeGdldHRleHRfY3VycmVu
dF9zb3VyY2VfZW5jb2RpbmcgPSBwb19jaGFyc2V0X3V0Zjg7CiEgCSAgICAgIGFyZ2xpc3RfcGFy
c2VyX2RvbmUgKGFyZ3BhcnNlciwgYXJnKTsKISAJICAgICAgeGdldHRleHRfY3VycmVudF9zb3Vy
Y2VfZW5jb2RpbmcgPSB4Z2V0dGV4dF9nbG9iYWxfc291cmNlX2VuY29kaW5nOwohIAkgICAgICBy
ZXR1cm4gdHJ1ZTsKISAJICAgIH0KISAKISAJICBuZXh0X2lzX2FyZ3VtZW50ID0gZmFsc2U7CiEg
CSAgbmV4dF9hcmdwYXJzZXIgPSBOVUxMOwohIAkgIG5leHRfY29udGV4dF9pdGVyID0gbnVsbF9j
b250ZXh0X2xpc3RfaXRlcmF0b3I7CiEgCSAgY29udGludWU7CiAgCX0KICAKICAgICAgICBzd2l0
Y2ggKHRwLT50eXBlKQoqKioqKioqKioqKioqKioKKioqIDI5MDIsMjkxNiAqKioqCiAgCQljb25z
dCBzdHJ1Y3QgY2FsbHNoYXBlcyAqc2hhcGVzID0KICAJCSAgKGNvbnN0IHN0cnVjdCBjYWxsc2hh
cGVzICopIGtleXdvcmRfdmFsdWU7CiAgCi0gCQl4Z2V0dGV4dF9jdXJyZW50X3NvdXJjZV9lbmNv
ZGluZyA9IHBvX2NoYXJzZXRfdXRmODsKLSAJCWFyZ2xpc3RfcGFyc2VyX2RvbmUgKGFyZ3BhcnNl
ciwgYXJnKTsKLSAJCXhnZXR0ZXh0X2N1cnJlbnRfc291cmNlX2VuY29kaW5nID0geGdldHRleHRf
Z2xvYmFsX3NvdXJjZV9lbmNvZGluZzsKLSAJCWFyZ3BhcnNlciA9IGFyZ2xpc3RfcGFyc2VyX2Fs
bG9jIChtbHAsIHNoYXBlcyk7Ci0gCQlhcmcgPSAxOwotIAogIAkJbGFzdF90b2tlbiA9IHRva2Vu
X3R5cGVfa2V5d29yZF9zeW1ib2w7CiEgCiEgCQlzdGF0ZSA9IDI7CiAgCSAgICAgIH0KICAJICB9
CiAgCSAgbmV4dF9pc19hcmd1bWVudCA9IHRydWU7Ci0tLSAzMDAyLDMwMTUgLS0tLQogIAkJY29u
c3Qgc3RydWN0IGNhbGxzaGFwZXMgKnNoYXBlcyA9CiAgCQkgIChjb25zdCBzdHJ1Y3QgY2FsbHNo
YXBlcyAqKSBrZXl3b3JkX3ZhbHVlOwogIAogIAkJbGFzdF90b2tlbiA9IHRva2VuX3R5cGVfa2V5
d29yZF9zeW1ib2w7CiEgCQluZXh0X3NoYXBlcyA9IHNoYXBlczsKISAJCW5leHRfYXJncGFyc2Vy
ID0gYXJnbGlzdF9wYXJzZXJfYWxsb2MgKG1scCwgc2hhcGVzKTsKISAJICAgICAgfQohIAkgICAg
ZWxzZQohIAkgICAgICB7CiEgCQluZXh0X3NoYXBlcyA9IE5VTEw7CiEgCQluZXh0X2FyZ3BhcnNl
ciA9IGFyZ2xpc3RfcGFyc2VyX2FsbG9jIChtbHAsIE5VTEwpOwogIAkgICAgICB9CiAgCSAgfQog
IAkgIG5leHRfaXNfYXJndW1lbnQgPSB0cnVlOwoqKioqKioqKioqKioqKioKKioqIDI5MjgsMjk3
MSAqKioqCiAgI2VuZGlmCiAgCSAgcHJlZmVyX2RpdmlzaW9uX292ZXJfcmVnZXhwID0gdHJ1ZTsK
ICAJICBuZXh0X2lzX2FyZ3VtZW50ID0gZmFsc2U7CiAgCSAgbmV4dF9jb250ZXh0X2l0ZXIgPSBu
dWxsX2NvbnRleHRfbGlzdF9pdGVyYXRvcjsKICAJICBicmVhazsKICAKICAJY2FzZSB0b2tlbl90
eXBlX2xwYXJlbjoKICAjaWYgREVCVUdfUEVSTAohIAkgIGZwcmludGYgKHN0ZGVyciwgIiVzOiVk
OiB0eXBlIGxlZnQgcGFyZW50aGVzZXMgKCVkKVxuIiwKICAJCSAgIGxvZ2ljYWxfZmlsZV9uYW1l
LCB0cC0+bGluZV9udW1iZXIsIG5lc3RpbmdfbGV2ZWwpOwogICNlbmRpZgohIAkgICsrcGFyZW5f
c2VlbjsKISAKISAJICBpZiAoZXh0cmFjdF9iYWxhbmNlZCAobWxwLCBzdGF0ZSwgdG9rZW5fdHlw
ZV9ycGFyZW4sCiEgCQkJCWlubmVyX2NvbnRleHQsIG5leHRfY29udGV4dF9pdGVyLAohIAkJCQlh
cmcsIGFyZ2xpc3RfcGFyc2VyX2Nsb25lIChhcmdwYXJzZXIpKSkKICAJICAgIHsKISAJICAgICAg
eGdldHRleHRfY3VycmVudF9zb3VyY2VfZW5jb2RpbmcgPSBwb19jaGFyc2V0X3V0Zjg7CiEgCSAg
ICAgIGFyZ2xpc3RfcGFyc2VyX2RvbmUgKGFyZ3BhcnNlciwgYXJnKTsKISAJICAgICAgeGdldHRl
eHRfY3VycmVudF9zb3VyY2VfZW5jb2RpbmcgPSB4Z2V0dGV4dF9nbG9iYWxfc291cmNlX2VuY29k
aW5nOwohIAkgICAgICBmcmVlX3Rva2VuICh0cCk7CiEgCSAgICAgIHJldHVybiB0cnVlOwogIAkg
ICAgfQohIAkgIGlmIChteV9sYXN0X3Rva2VuID09IHRva2VuX3R5cGVfa2V5d29yZF9zeW1ib2wp
CiAgCSAgICB7CiEgCSAgICAgIHhnZXR0ZXh0X2N1cnJlbnRfc291cmNlX2VuY29kaW5nID0gcG9f
Y2hhcnNldF91dGY4OwohIAkgICAgICBhcmdsaXN0X3BhcnNlcl9kb25lIChhcmdwYXJzZXIsIGFy
Zyk7CiEgCSAgICAgIHhnZXR0ZXh0X2N1cnJlbnRfc291cmNlX2VuY29kaW5nID0geGdldHRleHRf
Z2xvYmFsX3NvdXJjZV9lbmNvZGluZzsKISAJICAgICAgYXJncGFyc2VyID0gYXJnbGlzdF9wYXJz
ZXJfYWxsb2MgKG1scCwgTlVMTCk7CiAgCSAgICB9CiEgCSAgbmV4dF9pc19hcmd1bWVudCA9IGZh
bHNlOwogIAkgIG5leHRfY29udGV4dF9pdGVyID0gbnVsbF9jb250ZXh0X2xpc3RfaXRlcmF0b3I7
CiAgCSAgYnJlYWs7CiAgCiAgCWNhc2UgdG9rZW5fdHlwZV9ycGFyZW46CiAgI2lmIERFQlVHX1BF
UkwKISAJICBmcHJpbnRmIChzdGRlcnIsICIlczolZDogdHlwZSByaWdodCBwYXJlbnRoZXNlcygl
ZClcbiIsCiAgCQkgICBsb2dpY2FsX2ZpbGVfbmFtZSwgdHAtPmxpbmVfbnVtYmVyLCBuZXN0aW5n
X2xldmVsKTsKICAjZW5kaWYKLSAJICAtLXBhcmVuX3NlZW47CiAgCSAgbmV4dF9pc19hcmd1bWVu
dCA9IGZhbHNlOwogIAkgIG5leHRfY29udGV4dF9pdGVyID0gbnVsbF9jb250ZXh0X2xpc3RfaXRl
cmF0b3I7CiAgCSAgYnJlYWs7CiAgCi0tLSAzMDI3LDMwOTIgLS0tLQogICNlbmRpZgogIAkgIHBy
ZWZlcl9kaXZpc2lvbl9vdmVyX3JlZ2V4cCA9IHRydWU7CiAgCSAgbmV4dF9pc19hcmd1bWVudCA9
IGZhbHNlOworIAkgIGlmIChuZXh0X2FyZ3BhcnNlciAhPSBOVUxMKQorIAkgICAgZnJlZSAobmV4
dF9hcmdwYXJzZXIpOworIAkgIG5leHRfYXJncGFyc2VyID0gTlVMTDsKICAJICBuZXh0X2NvbnRl
eHRfaXRlciA9IG51bGxfY29udGV4dF9saXN0X2l0ZXJhdG9yOwogIAkgIGJyZWFrOwogIAogIAlj
YXNlIHRva2VuX3R5cGVfbHBhcmVuOgogICNpZiBERUJVR19QRVJMCiEgCSAgZnByaW50ZiAoc3Rk
ZXJyLCAiJXM6JWQ6IHR5cGUgbGVmdCBwYXJlbnRoZXNpcyAoJWQpXG4iLAogIAkJICAgbG9naWNh
bF9maWxlX25hbWUsIHRwLT5saW5lX251bWJlciwgbmVzdGluZ19sZXZlbCk7CiAgI2VuZGlmCiEg
CSAgaWYgKG5leHRfaXNfYXJndW1lbnQpCiAgCSAgICB7CiEgCSAgICAgIC8qIFBhcnNlIHRoZSBh
cmd1bWVudCBsaXN0IG9mIGEgZnVuY3Rpb24gY2FsbC4gICovCiEgCSAgICAgIGlmIChleHRyYWN0
X2JhbGFuY2VkIChtbHAsIHRva2VuX3R5cGVfcnBhcmVuLCB0cnVlLCBmYWxzZSwKISAJCQkJICAg
IGlubmVyX2NvbnRleHQsIG5leHRfY29udGV4dF9pdGVyLAohIAkJCQkgICAgMSwgbmV4dF9hcmdw
YXJzZXIpKQohIAkJewohIAkJICB4Z2V0dGV4dF9jdXJyZW50X3NvdXJjZV9lbmNvZGluZyA9IHBv
X2NoYXJzZXRfdXRmODsKISAJCSAgYXJnbGlzdF9wYXJzZXJfZG9uZSAoYXJncGFyc2VyLCBhcmcp
OwohIAkJICB4Z2V0dGV4dF9jdXJyZW50X3NvdXJjZV9lbmNvZGluZyA9IHhnZXR0ZXh0X2dsb2Jh
bF9zb3VyY2VfZW5jb2Rpbmc7CiEgCQkgIHJldHVybiB0cnVlOwohIAkJfQohIAkgICAgICBuZXh0
X2lzX2FyZ3VtZW50ID0gZmFsc2U7CiEgCSAgICAgIG5leHRfYXJncGFyc2VyID0gTlVMTDsKICAJ
ICAgIH0KISAJICBlbHNlCiAgCSAgICB7CiEgCSAgICAgIC8qIFBhcnNlIGEgcGFyZW50aGVzaXpl
ZCBleHByZXNzaW9uIG9yIGNvbW1hIGV4cHJlc3Npb24uICAqLwohIAkgICAgICBpZiAoZXh0cmFj
dF9iYWxhbmNlZCAobWxwLCB0b2tlbl90eXBlX3JwYXJlbiwgdHJ1ZSwgZmFsc2UsCiEgCQkJCSAg
ICBpbm5lcl9jb250ZXh0LCBuZXh0X2NvbnRleHRfaXRlciwKISAJCQkJICAgIGFyZywgYXJnbGlz
dF9wYXJzZXJfY2xvbmUgKGFyZ3BhcnNlcikpKQohIAkJewohIAkJICB4Z2V0dGV4dF9jdXJyZW50
X3NvdXJjZV9lbmNvZGluZyA9IHBvX2NoYXJzZXRfdXRmODsKISAJCSAgYXJnbGlzdF9wYXJzZXJf
ZG9uZSAoYXJncGFyc2VyLCBhcmcpOwohIAkJICB4Z2V0dGV4dF9jdXJyZW50X3NvdXJjZV9lbmNv
ZGluZyA9IHhnZXR0ZXh0X2dsb2JhbF9zb3VyY2VfZW5jb2Rpbmc7CiEgCQkgIGlmIChuZXh0X2Fy
Z3BhcnNlciAhPSBOVUxMKQohIAkJICAgIGZyZWUgKG5leHRfYXJncGFyc2VyKTsKISAJCSAgZnJl
ZV90b2tlbiAodHApOwohIAkJICByZXR1cm4gdHJ1ZTsKISAJCX0KISAJICAgICAgbmV4dF9pc19h
cmd1bWVudCA9IGZhbHNlOwohIAkgICAgICBpZiAobmV4dF9hcmdwYXJzZXIgIT0gTlVMTCkKISAJ
CWZyZWUgKG5leHRfYXJncGFyc2VyKTsKISAJICAgICAgbmV4dF9hcmdwYXJzZXIgPSBOVUxMOwog
IAkgICAgfQohIAkgIHNraXBfdW50aWxfY29tbWEgPSB0cnVlOwogIAkgIG5leHRfY29udGV4dF9p
dGVyID0gbnVsbF9jb250ZXh0X2xpc3RfaXRlcmF0b3I7CiAgCSAgYnJlYWs7CiAgCiAgCWNhc2Ug
dG9rZW5fdHlwZV9ycGFyZW46CiAgI2lmIERFQlVHX1BFUkwKISAJICBmcHJpbnRmIChzdGRlcnIs
ICIlczolZDogdHlwZSByaWdodCBwYXJlbnRoZXNpcyAoJWQpXG4iLAogIAkJICAgbG9naWNhbF9m
aWxlX25hbWUsIHRwLT5saW5lX251bWJlciwgbmVzdGluZ19sZXZlbCk7CiAgI2VuZGlmCiAgCSAg
bmV4dF9pc19hcmd1bWVudCA9IGZhbHNlOworIAkgIGlmIChuZXh0X2FyZ3BhcnNlciAhPSBOVUxM
KQorIAkgICAgZnJlZSAobmV4dF9hcmdwYXJzZXIpOworIAkgIG5leHRfYXJncGFyc2VyID0gTlVM
TDsKKyAJICBza2lwX3VudGlsX2NvbW1hID0gdHJ1ZTsKICAJICBuZXh0X2NvbnRleHRfaXRlciA9
IG51bGxfY29udGV4dF9saXN0X2l0ZXJhdG9yOwogIAkgIGJyZWFrOwogIAoqKioqKioqKioqKioq
KioKKioqIDI5OTQsMjk5OSAqKioqCi0tLSAzMTE1LDMxMjQgLS0tLQogIAkJCSAgICAgICBmbGFn
X2NvbnRleHRfbGlzdF9pdGVyYXRvcl9hZHZhbmNlICgKICAJCQkJICZjb250ZXh0X2l0ZXIpKTsK
ICAJICBuZXh0X2lzX2FyZ3VtZW50ID0gZmFsc2U7CisgCSAgaWYgKG5leHRfYXJncGFyc2VyICE9
IE5VTEwpCisgCSAgICBmcmVlIChuZXh0X2FyZ3BhcnNlcik7CisgCSAgbmV4dF9hcmdwYXJzZXIg
PSBOVUxMOworIAkgIHNraXBfdW50aWxfY29tbWEgPSBmYWxzZTsKICAJICBuZXh0X2NvbnRleHRf
aXRlciA9IHBhc3N0aHJvdWdoX2NvbnRleHRfbGlzdF9pdGVyYXRvcjsKICAJICBicmVhazsKICAK
KioqKioqKioqKioqKioqCioqKiAzMDE1LDMwMzAgKioqKgogIAkgICAgICByZW1lbWJlcl9hX21l
c3NhZ2UgKG1scCwgTlVMTCwgc3RyaW5nLCBpbm5lcl9jb250ZXh0LCAmcG9zLCBzYXZhYmxlX2Nv
bW1lbnQpOwogIAkgICAgICB4Z2V0dGV4dF9jdXJyZW50X3NvdXJjZV9lbmNvZGluZyA9IHhnZXR0
ZXh0X2dsb2JhbF9zb3VyY2VfZW5jb2Rpbmc7CiAgCSAgICB9CiEgCSAgZWxzZSBpZiAoc3RhdGUp
CiAgCSAgICB7CiEgCSAgICAgIGNoYXIgKnN0cmluZyA9IGNvbGxlY3RfbWVzc2FnZSAobWxwLCB0
cCwgRVhJVF9GQUlMVVJFKTsKICAKISAJICAgICAgeGdldHRleHRfY3VycmVudF9zb3VyY2VfZW5j
b2RpbmcgPSBwb19jaGFyc2V0X3V0Zjg7CiEgCSAgICAgIGFyZ2xpc3RfcGFyc2VyX3JlbWVtYmVy
IChhcmdwYXJzZXIsIGFyZywKISAJCQkJICAgICAgIHN0cmluZywgaW5uZXJfY29udGV4dCwKISAJ
CQkJICAgICAgIGxvZ2ljYWxfZmlsZV9uYW1lLCB0cC0+bGluZV9udW1iZXIsCiEgCQkJCSAgICAg
ICBzYXZhYmxlX2NvbW1lbnQpOwohIAkgICAgICB4Z2V0dGV4dF9jdXJyZW50X3NvdXJjZV9lbmNv
ZGluZyA9IHhnZXR0ZXh0X2dsb2JhbF9zb3VyY2VfZW5jb2Rpbmc7CiAgCSAgICB9CiAgCiAgCSAg
aWYgKGFyZ2xpc3RfcGFyc2VyX2RlY2lkZWRwIChhcmdwYXJzZXIsIGFyZykpCi0tLSAzMTQwLDMx
NzUgLS0tLQogIAkgICAgICByZW1lbWJlcl9hX21lc3NhZ2UgKG1scCwgTlVMTCwgc3RyaW5nLCBp
bm5lcl9jb250ZXh0LCAmcG9zLCBzYXZhYmxlX2NvbW1lbnQpOwogIAkgICAgICB4Z2V0dGV4dF9j
dXJyZW50X3NvdXJjZV9lbmNvZGluZyA9IHhnZXR0ZXh0X2dsb2JhbF9zb3VyY2VfZW5jb2Rpbmc7
CiAgCSAgICB9CiEgCSAgZWxzZSBpZiAoIXNraXBfdW50aWxfY29tbWEpCiAgCSAgICB7CiEgCSAg
ICAgIC8qIE5lZWQgdG8gY29sbGVjdCB0aGUgY29tcGxldGUgc3RyaW5nLCB3aXRoIGVycm9yIGNo
ZWNraW5nLAohIAkJIG9ubHkgaWYgdGhlIGFyZ3VtZW50IEFSRyBpcyB1c2VkIGluIEFSR1BBUlNF
Ui4gICovCiEgCSAgICAgIGJvb2wgbXVzdF9jb2xsZWN0ID0gZmFsc2U7CiEgCSAgICAgIHsKISAJ
CXNpemVfdCBuYWx0ZXJuYXRpdmVzID0gYXJncGFyc2VyLT5uYWx0ZXJuYXRpdmVzOwohIAkJc2l6
ZV90IGk7CiAgCiEgCQlmb3IgKGkgPSAwOyBpIDwgbmFsdGVybmF0aXZlczsgaSsrKQohIAkJICB7
CiEgCQkgICAgc3RydWN0IHBhcnRpYWxfY2FsbCAqY3AgPSAmYXJncGFyc2VyLT5hbHRlcm5hdGl2
ZVtpXTsKISAKISAJCSAgICBpZiAoYXJnID09IGNwLT5hcmdudW1jCiEgCQkJfHwgYXJnID09IGNw
LT5hcmdudW0xIHx8IGFyZyA9PSBjcC0+YXJnbnVtMikKISAJCSAgICAgIG11c3RfY29sbGVjdCA9
IHRydWU7CiEgCQkgIH0KISAJICAgICAgfQohIAohIAkgICAgICBpZiAobXVzdF9jb2xsZWN0KQoh
IAkJewohIAkJICBjaGFyICpzdHJpbmcgPSBjb2xsZWN0X21lc3NhZ2UgKG1scCwgdHAsIEVYSVRf
RkFJTFVSRSk7CiEgCiEgCQkgIHhnZXR0ZXh0X2N1cnJlbnRfc291cmNlX2VuY29kaW5nID0gcG9f
Y2hhcnNldF91dGY4OwohIAkJICBhcmdsaXN0X3BhcnNlcl9yZW1lbWJlciAoYXJncGFyc2VyLCBh
cmcsCiEgCQkJCQkgICBzdHJpbmcsIGlubmVyX2NvbnRleHQsCiEgCQkJCQkgICBsb2dpY2FsX2Zp
bGVfbmFtZSwgdHAtPmxpbmVfbnVtYmVyLAohIAkJCQkJICAgc2F2YWJsZV9jb21tZW50KTsKISAJ
CSAgeGdldHRleHRfY3VycmVudF9zb3VyY2VfZW5jb2RpbmcgPSB4Z2V0dGV4dF9nbG9iYWxfc291
cmNlX2VuY29kaW5nOwohIAkJfQogIAkgICAgfQogIAogIAkgIGlmIChhcmdsaXN0X3BhcnNlcl9k
ZWNpZGVkcCAoYXJncGFyc2VyLCBhcmcpKQoqKioqKioqKioqKioqKioKKioqIDMwMzMsMzA0MiAq
KioqCiAgCSAgICAgIGFyZ2xpc3RfcGFyc2VyX2RvbmUgKGFyZ3BhcnNlciwgYXJnKTsKICAJICAg
ICAgeGdldHRleHRfY3VycmVudF9zb3VyY2VfZW5jb2RpbmcgPSB4Z2V0dGV4dF9nbG9iYWxfc291
cmNlX2VuY29kaW5nOwogIAkgICAgICBhcmdwYXJzZXIgPSBhcmdsaXN0X3BhcnNlcl9hbGxvYyAo
bWxwLCBOVUxMKTsKLSAJICAgICAgc3RhdGUgPSAwOwogIAkgICAgfQogIAogIAkgIG5leHRfaXNf
YXJndW1lbnQgPSBmYWxzZTsKICAJICBuZXh0X2NvbnRleHRfaXRlciA9IG51bGxfY29udGV4dF9s
aXN0X2l0ZXJhdG9yOwogIAkgIGJyZWFrOwogIAotLS0gMzE3OCwzMTg5IC0tLS0KICAJICAgICAg
YXJnbGlzdF9wYXJzZXJfZG9uZSAoYXJncGFyc2VyLCBhcmcpOwogIAkgICAgICB4Z2V0dGV4dF9j
dXJyZW50X3NvdXJjZV9lbmNvZGluZyA9IHhnZXR0ZXh0X2dsb2JhbF9zb3VyY2VfZW5jb2Rpbmc7
CiAgCSAgICAgIGFyZ3BhcnNlciA9IGFyZ2xpc3RfcGFyc2VyX2FsbG9jIChtbHAsIE5VTEwpOwog
IAkgICAgfQogIAogIAkgIG5leHRfaXNfYXJndW1lbnQgPSBmYWxzZTsKKyAJICBpZiAobmV4dF9h
cmdwYXJzZXIgIT0gTlVMTCkKKyAJICAgIGZyZWUgKG5leHRfYXJncGFyc2VyKTsKKyAJICBuZXh0
X2FyZ3BhcnNlciA9IE5VTEw7CiAgCSAgbmV4dF9jb250ZXh0X2l0ZXIgPSBudWxsX2NvbnRleHRf
bGlzdF9pdGVyYXRvcjsKICAJICBicmVhazsKICAKKioqKioqKioqKioqKioqCioqKiAzMDQ4LDMw
NTMgKioqKgotLS0gMzE5NSwzMjAzIC0tLS0KICAJICB4Z2V0dGV4dF9jdXJyZW50X3NvdXJjZV9l
bmNvZGluZyA9IHBvX2NoYXJzZXRfdXRmODsKICAJICBhcmdsaXN0X3BhcnNlcl9kb25lIChhcmdw
YXJzZXIsIGFyZyk7CiAgCSAgeGdldHRleHRfY3VycmVudF9zb3VyY2VfZW5jb2RpbmcgPSB4Z2V0
dGV4dF9nbG9iYWxfc291cmNlX2VuY29kaW5nOworIAkgIGlmIChuZXh0X2FyZ3BhcnNlciAhPSBO
VUxMKQorIAkgICAgZnJlZSAobmV4dF9hcmdwYXJzZXIpOworIAkgIG5leHRfYXJncGFyc2VyID0g
TlVMTDsKICAJICBmcmVlX3Rva2VuICh0cCk7CiAgCSAgcmV0dXJuIHRydWU7CiAgCioqKioqKioq
KioqKioqKgoqKiogMzA1NiwzMDcyICoqKioKICAJICBmcHJpbnRmIChzdGRlcnIsICIlczolZDog
dHlwZSBsYnJhY2UgKCVkKVxuIiwKICAJCSAgIGxvZ2ljYWxfZmlsZV9uYW1lLCB0cC0+bGluZV9u
dW1iZXIsIG5lc3RpbmdfbGV2ZWwpOwogICNlbmRpZgohIAkgIGlmIChleHRyYWN0X2JhbGFuY2Vk
IChtbHAsIDAsIHRva2VuX3R5cGVfcmJyYWNlLAogIAkJCQludWxsX2NvbnRleHQsIG51bGxfY29u
dGV4dF9saXN0X2l0ZXJhdG9yLAogIAkJCQkxLCBhcmdsaXN0X3BhcnNlcl9hbGxvYyAobWxwLCBO
VUxMKSkpCiAgCSAgICB7CiAgCSAgICAgIHhnZXR0ZXh0X2N1cnJlbnRfc291cmNlX2VuY29kaW5n
ID0gcG9fY2hhcnNldF91dGY4OwogIAkgICAgICBhcmdsaXN0X3BhcnNlcl9kb25lIChhcmdwYXJz
ZXIsIGFyZyk7CiAgCSAgICAgIHhnZXR0ZXh0X2N1cnJlbnRfc291cmNlX2VuY29kaW5nID0geGdl
dHRleHRfZ2xvYmFsX3NvdXJjZV9lbmNvZGluZzsKICAJICAgICAgZnJlZV90b2tlbiAodHApOwog
IAkgICAgICByZXR1cm4gdHJ1ZTsKICAJICAgIH0KICAJICBuZXh0X2lzX2FyZ3VtZW50ID0gZmFs
c2U7CiAgCSAgbmV4dF9jb250ZXh0X2l0ZXIgPSBudWxsX2NvbnRleHRfbGlzdF9pdGVyYXRvcjsK
ICAJICBicmVhazsKICAKLS0tIDMyMDYsMzIyNyAtLS0tCiAgCSAgZnByaW50ZiAoc3RkZXJyLCAi
JXM6JWQ6IHR5cGUgbGJyYWNlICglZClcbiIsCiAgCQkgICBsb2dpY2FsX2ZpbGVfbmFtZSwgdHAt
PmxpbmVfbnVtYmVyLCBuZXN0aW5nX2xldmVsKTsKICAjZW5kaWYKISAJICBpZiAoZXh0cmFjdF9i
YWxhbmNlZCAobWxwLCB0b2tlbl90eXBlX3JicmFjZSwgdHJ1ZSwgZmFsc2UsCiAgCQkJCW51bGxf
Y29udGV4dCwgbnVsbF9jb250ZXh0X2xpc3RfaXRlcmF0b3IsCiAgCQkJCTEsIGFyZ2xpc3RfcGFy
c2VyX2FsbG9jIChtbHAsIE5VTEwpKSkKICAJICAgIHsKICAJICAgICAgeGdldHRleHRfY3VycmVu
dF9zb3VyY2VfZW5jb2RpbmcgPSBwb19jaGFyc2V0X3V0Zjg7CiAgCSAgICAgIGFyZ2xpc3RfcGFy
c2VyX2RvbmUgKGFyZ3BhcnNlciwgYXJnKTsKICAJICAgICAgeGdldHRleHRfY3VycmVudF9zb3Vy
Y2VfZW5jb2RpbmcgPSB4Z2V0dGV4dF9nbG9iYWxfc291cmNlX2VuY29kaW5nOworIAkgICAgICBp
ZiAobmV4dF9hcmdwYXJzZXIgIT0gTlVMTCkKKyAJCWZyZWUgKG5leHRfYXJncGFyc2VyKTsKICAJ
ICAgICAgZnJlZV90b2tlbiAodHApOwogIAkgICAgICByZXR1cm4gdHJ1ZTsKICAJICAgIH0KICAJ
ICBuZXh0X2lzX2FyZ3VtZW50ID0gZmFsc2U7CisgCSAgaWYgKG5leHRfYXJncGFyc2VyICE9IE5V
TEwpCisgCSAgICBmcmVlIChuZXh0X2FyZ3BhcnNlcik7CisgCSAgbmV4dF9hcmdwYXJzZXIgPSBO
VUxMOwogIAkgIG5leHRfY29udGV4dF9pdGVyID0gbnVsbF9jb250ZXh0X2xpc3RfaXRlcmF0b3I7
CiAgCSAgYnJlYWs7CiAgCioqKioqKioqKioqKioqKgoqKiogMzA3NiwzMDgzICoqKioKICAJCSAg
IGxvZ2ljYWxfZmlsZV9uYW1lLCB0cC0+bGluZV9udW1iZXIsIG5lc3RpbmdfbGV2ZWwpOwogICNl
bmRpZgogIAkgIG5leHRfaXNfYXJndW1lbnQgPSBmYWxzZTsKICAJICBuZXh0X2NvbnRleHRfaXRl
ciA9IG51bGxfY29udGV4dF9saXN0X2l0ZXJhdG9yOwotIAkgIHN0YXRlID0gMDsKICAJICBicmVh
azsKICAKICAJY2FzZSB0b2tlbl90eXBlX2xicmFja2V0OgotLS0gMzIzMSwzMjQwIC0tLS0KICAJ
CSAgIGxvZ2ljYWxfZmlsZV9uYW1lLCB0cC0+bGluZV9udW1iZXIsIG5lc3RpbmdfbGV2ZWwpOwog
ICNlbmRpZgogIAkgIG5leHRfaXNfYXJndW1lbnQgPSBmYWxzZTsKKyAJICBpZiAobmV4dF9hcmdw
YXJzZXIgIT0gTlVMTCkKKyAJICAgIGZyZWUgKG5leHRfYXJncGFyc2VyKTsKKyAJICBuZXh0X2Fy
Z3BhcnNlciA9IE5VTEw7CiAgCSAgbmV4dF9jb250ZXh0X2l0ZXIgPSBudWxsX2NvbnRleHRfbGlz
dF9pdGVyYXRvcjsKICAJICBicmVhazsKICAKICAJY2FzZSB0b2tlbl90eXBlX2xicmFja2V0Ogoq
KioqKioqKioqKioqKioKKioqIDMwODUsMzEwMSAqKioqCiAgCSAgZnByaW50ZiAoc3RkZXJyLCAi
JXM6JWQ6IHR5cGUgbGJyYWNrZXQgKCVkKVxuIiwKICAJCSAgIGxvZ2ljYWxfZmlsZV9uYW1lLCB0
cC0+bGluZV9udW1iZXIsIG5lc3RpbmdfbGV2ZWwpOwogICNlbmRpZgohIAkgIGlmIChleHRyYWN0
X2JhbGFuY2VkIChtbHAsIDAsIHRva2VuX3R5cGVfcmJyYWNrZXQsCiAgCQkJCW51bGxfY29udGV4
dCwgbnVsbF9jb250ZXh0X2xpc3RfaXRlcmF0b3IsCiAgCQkJCTEsIGFyZ2xpc3RfcGFyc2VyX2Fs
bG9jIChtbHAsIE5VTEwpKSkKICAJICAgIHsKICAJICAgICAgeGdldHRleHRfY3VycmVudF9zb3Vy
Y2VfZW5jb2RpbmcgPSBwb19jaGFyc2V0X3V0Zjg7CiAgCSAgICAgIGFyZ2xpc3RfcGFyc2VyX2Rv
bmUgKGFyZ3BhcnNlciwgYXJnKTsKICAJICAgICAgeGdldHRleHRfY3VycmVudF9zb3VyY2VfZW5j
b2RpbmcgPSB4Z2V0dGV4dF9nbG9iYWxfc291cmNlX2VuY29kaW5nOwogIAkgICAgICBmcmVlX3Rv
a2VuICh0cCk7CiAgCSAgICAgIHJldHVybiB0cnVlOwogIAkgICAgfQogIAkgIG5leHRfaXNfYXJn
dW1lbnQgPSBmYWxzZTsKICAJICBuZXh0X2NvbnRleHRfaXRlciA9IG51bGxfY29udGV4dF9saXN0
X2l0ZXJhdG9yOwogIAkgIGJyZWFrOwogIAotLS0gMzI0MiwzMjYzIC0tLS0KICAJICBmcHJpbnRm
IChzdGRlcnIsICIlczolZDogdHlwZSBsYnJhY2tldCAoJWQpXG4iLAogIAkJICAgbG9naWNhbF9m
aWxlX25hbWUsIHRwLT5saW5lX251bWJlciwgbmVzdGluZ19sZXZlbCk7CiAgI2VuZGlmCiEgCSAg
aWYgKGV4dHJhY3RfYmFsYW5jZWQgKG1scCwgdG9rZW5fdHlwZV9yYnJhY2tldCwgdHJ1ZSwgZmFs
c2UsCiAgCQkJCW51bGxfY29udGV4dCwgbnVsbF9jb250ZXh0X2xpc3RfaXRlcmF0b3IsCiAgCQkJ
CTEsIGFyZ2xpc3RfcGFyc2VyX2FsbG9jIChtbHAsIE5VTEwpKSkKICAJICAgIHsKICAJICAgICAg
eGdldHRleHRfY3VycmVudF9zb3VyY2VfZW5jb2RpbmcgPSBwb19jaGFyc2V0X3V0Zjg7CiAgCSAg
ICAgIGFyZ2xpc3RfcGFyc2VyX2RvbmUgKGFyZ3BhcnNlciwgYXJnKTsKICAJICAgICAgeGdldHRl
eHRfY3VycmVudF9zb3VyY2VfZW5jb2RpbmcgPSB4Z2V0dGV4dF9nbG9iYWxfc291cmNlX2VuY29k
aW5nOworIAkgICAgICBpZiAobmV4dF9hcmdwYXJzZXIgIT0gTlVMTCkKKyAJCWZyZWUgKG5leHRf
YXJncGFyc2VyKTsKICAJICAgICAgZnJlZV90b2tlbiAodHApOwogIAkgICAgICByZXR1cm4gdHJ1
ZTsKICAJICAgIH0KICAJICBuZXh0X2lzX2FyZ3VtZW50ID0gZmFsc2U7CisgCSAgaWYgKG5leHRf
YXJncGFyc2VyICE9IE5VTEwpCisgCSAgICBmcmVlIChuZXh0X2FyZ3BhcnNlcik7CisgCSAgbmV4
dF9hcmdwYXJzZXIgPSBOVUxMOwogIAkgIG5leHRfY29udGV4dF9pdGVyID0gbnVsbF9jb250ZXh0
X2xpc3RfaXRlcmF0b3I7CiAgCSAgYnJlYWs7CiAgCioqKioqKioqKioqKioqKgoqKiogMzEwNSwz
MTEyICoqKioKICAJCSAgIGxvZ2ljYWxfZmlsZV9uYW1lLCB0cC0+bGluZV9udW1iZXIsIG5lc3Rp
bmdfbGV2ZWwpOwogICNlbmRpZgogIAkgIG5leHRfaXNfYXJndW1lbnQgPSBmYWxzZTsKICAJICBu
ZXh0X2NvbnRleHRfaXRlciA9IG51bGxfY29udGV4dF9saXN0X2l0ZXJhdG9yOwotIAkgIHN0YXRl
ID0gMDsKICAJICBicmVhazsKICAKICAJY2FzZSB0b2tlbl90eXBlX3NlbWljb2xvbjoKLS0tIDMy
NjcsMzI3NiAtLS0tCiAgCQkgICBsb2dpY2FsX2ZpbGVfbmFtZSwgdHAtPmxpbmVfbnVtYmVyLCBu
ZXN0aW5nX2xldmVsKTsKICAjZW5kaWYKICAJICBuZXh0X2lzX2FyZ3VtZW50ID0gZmFsc2U7Cisg
CSAgaWYgKG5leHRfYXJncGFyc2VyICE9IE5VTEwpCisgCSAgICBmcmVlIChuZXh0X2FyZ3BhcnNl
cik7CisgCSAgbmV4dF9hcmdwYXJzZXIgPSBOVUxMOwogIAkgIG5leHRfY29udGV4dF9pdGVyID0g
bnVsbF9jb250ZXh0X2xpc3RfaXRlcmF0b3I7CiAgCSAgYnJlYWs7CiAgCiAgCWNhc2UgdG9rZW5f
dHlwZV9zZW1pY29sb246CioqKioqKioqKioqKioqKgoqKiogMzExNCwzMTIwICoqKioKICAJICBm
cHJpbnRmIChzdGRlcnIsICIlczolZDogdHlwZSBzZW1pY29sb24gKCVkKVxuIiwKICAJCSAgIGxv
Z2ljYWxfZmlsZV9uYW1lLCB0cC0+bGluZV9udW1iZXIsIG5lc3RpbmdfbGV2ZWwpOwogICNlbmRp
ZgotIAkgIHN0YXRlID0gMDsKICAKICAJICAvKiBUaGUgdWx0aW1hdGUgc2lnbi4gICovCiAgCSAg
eGdldHRleHRfY3VycmVudF9zb3VyY2VfZW5jb2RpbmcgPSBwb19jaGFyc2V0X3V0Zjg7Ci0tLSAz
Mjc4LDMyODMgLS0tLQoqKioqKioqKioqKioqKioKKioqIDMxMjgsMzEzMyAqKioqCi0tLSAzMjkx
LDMyOTkgLS0tLQogIAkgIG91dGVyX2NvbnRleHQgPSBudWxsX2NvbnRleHQ7CiAgCSAgY29udGV4
dF9pdGVyID0gbnVsbF9jb250ZXh0X2xpc3RfaXRlcmF0b3I7CiAgCSAgbmV4dF9pc19hcmd1bWVu
dCA9IGZhbHNlOworIAkgIGlmIChuZXh0X2FyZ3BhcnNlciAhPSBOVUxMKQorIAkgICAgZnJlZSAo
bmV4dF9hcmdwYXJzZXIpOworIAkgIG5leHRfYXJncGFyc2VyID0gTlVMTDsKICAJICBuZXh0X2Nv
bnRleHRfaXRlciA9IHBhc3N0aHJvdWdoX2NvbnRleHRfbGlzdF9pdGVyYXRvcjsKICAJICBpbm5l
cl9jb250ZXh0ID0KICAJICAgIGluaGVyaXRlZF9jb250ZXh0IChvdXRlcl9jb250ZXh0LAoqKioq
KioqKioqKioqKioKKioqIDMxNDEsMzE0NiAqKioqCi0tLSAzMzA3LDMzMTUgLS0tLQogIAkJICAg
bG9naWNhbF9maWxlX25hbWUsIHRwLT5saW5lX251bWJlciwgbmVzdGluZ19sZXZlbCk7CiAgI2Vu
ZGlmCiAgCSAgbmV4dF9pc19hcmd1bWVudCA9IGZhbHNlOworIAkgIGlmIChuZXh0X2FyZ3BhcnNl
ciAhPSBOVUxMKQorIAkgICAgZnJlZSAobmV4dF9hcmdwYXJzZXIpOworIAkgIG5leHRfYXJncGFy
c2VyID0gTlVMTDsKICAJICBuZXh0X2NvbnRleHRfaXRlciA9IG51bGxfY29udGV4dF9saXN0X2l0
ZXJhdG9yOwogIAkgIGJyZWFrOwogIAoqKioqKioqKioqKioqKioKKioqIDMxNTAsMzE1NyAqKioq
CiAgCQkgICBsb2dpY2FsX2ZpbGVfbmFtZSwgdHAtPmxpbmVfbnVtYmVyLCBuZXN0aW5nX2xldmVs
KTsKICAjZW5kaWYKICAJICBuZXh0X2lzX2FyZ3VtZW50ID0gZmFsc2U7CiAgCSAgbmV4dF9jb250
ZXh0X2l0ZXIgPSBudWxsX2NvbnRleHRfbGlzdF9pdGVyYXRvcjsKLSAJICBzdGF0ZSA9IDA7CiAg
CSAgYnJlYWs7CiAgCiAgCWNhc2UgdG9rZW5fdHlwZV9uYW1lZF9vcDoKLS0tIDMzMTksMzMyOCAt
LS0tCiAgCQkgICBsb2dpY2FsX2ZpbGVfbmFtZSwgdHAtPmxpbmVfbnVtYmVyLCBuZXN0aW5nX2xl
dmVsKTsKICAjZW5kaWYKICAJICBuZXh0X2lzX2FyZ3VtZW50ID0gZmFsc2U7CisgCSAgaWYgKG5l
eHRfYXJncGFyc2VyICE9IE5VTEwpCisgCSAgICBmcmVlIChuZXh0X2FyZ3BhcnNlcik7CisgCSAg
bmV4dF9hcmdwYXJzZXIgPSBOVUxMOwogIAkgIG5leHRfY29udGV4dF9pdGVyID0gbnVsbF9jb250
ZXh0X2xpc3RfaXRlcmF0b3I7CiAgCSAgYnJlYWs7CiAgCiAgCWNhc2UgdG9rZW5fdHlwZV9uYW1l
ZF9vcDoKKioqKioqKioqKioqKioqCioqKiAzMTYxLDMxNjggKioqKgogIAkJICAgdHAtPnN0cmlu
Zyk7CiAgI2VuZGlmCiAgCSAgbmV4dF9pc19hcmd1bWVudCA9IGZhbHNlOwogIAkgIG5leHRfY29u
dGV4dF9pdGVyID0gbnVsbF9jb250ZXh0X2xpc3RfaXRlcmF0b3I7Ci0gCSAgc3RhdGUgPSAwOwog
IAkgIGJyZWFrOwogIAogIAljYXNlIHRva2VuX3R5cGVfcmVnZXhfb3A6Ci0tLSAzMzMyLDMzNDEg
LS0tLQogIAkJICAgdHAtPnN0cmluZyk7CiAgI2VuZGlmCiAgCSAgbmV4dF9pc19hcmd1bWVudCA9
IGZhbHNlOworIAkgIGlmIChuZXh0X2FyZ3BhcnNlciAhPSBOVUxMKQorIAkgICAgZnJlZSAobmV4
dF9hcmdwYXJzZXIpOworIAkgIG5leHRfYXJncGFyc2VyID0gTlVMTDsKICAJICBuZXh0X2NvbnRl
eHRfaXRlciA9IG51bGxfY29udGV4dF9saXN0X2l0ZXJhdG9yOwogIAkgIGJyZWFrOwogIAogIAlj
YXNlIHRva2VuX3R5cGVfcmVnZXhfb3A6CioqKioqKioqKioqKioqKgoqKiogMzE3MSwzMTc2ICoq
KioKLS0tIDMzNDQsMzM1MiAtLS0tCiAgCQkgICBsb2dpY2FsX2ZpbGVfbmFtZSwgdHAtPmxpbmVf
bnVtYmVyLCBuZXN0aW5nX2xldmVsKTsKICAjZW5kaWYKICAJICBuZXh0X2lzX2FyZ3VtZW50ID0g
ZmFsc2U7CisgCSAgaWYgKG5leHRfYXJncGFyc2VyICE9IE5VTEwpCisgCSAgICBmcmVlIChuZXh0
X2FyZ3BhcnNlcik7CisgCSAgbmV4dF9hcmdwYXJzZXIgPSBOVUxMOwogIAkgIG5leHRfY29udGV4
dF9pdGVyID0gbnVsbF9jb250ZXh0X2xpc3RfaXRlcmF0b3I7CiAgCSAgYnJlYWs7CiAgCioqKioq
KioqKioqKioqKgoqKiogMzE4MCwzMTg3ICoqKioKICAJCSAgIGxvZ2ljYWxfZmlsZV9uYW1lLCB0
cC0+bGluZV9udW1iZXIsIG5lc3RpbmdfbGV2ZWwpOwogICNlbmRpZgogIAkgIG5leHRfaXNfYXJn
dW1lbnQgPSBmYWxzZTsKICAJICBuZXh0X2NvbnRleHRfaXRlciA9IG51bGxfY29udGV4dF9saXN0
X2l0ZXJhdG9yOwotIAkgIHN0YXRlID0gMDsKICAJICBicmVhazsKICAKICAJZGVmYXVsdDoKLS0t
IDMzNTYsMzM2NSAtLS0tCiAgCQkgICBsb2dpY2FsX2ZpbGVfbmFtZSwgdHAtPmxpbmVfbnVtYmVy
LCBuZXN0aW5nX2xldmVsKTsKICAjZW5kaWYKICAJICBuZXh0X2lzX2FyZ3VtZW50ID0gZmFsc2U7
CisgCSAgaWYgKG5leHRfYXJncGFyc2VyICE9IE5VTEwpCisgCSAgICBmcmVlIChuZXh0X2FyZ3Bh
cnNlcik7CisgCSAgbmV4dF9hcmdwYXJzZXIgPSBOVUxMOwogIAkgIG5leHRfY29udGV4dF9pdGVy
ID0gbnVsbF9jb250ZXh0X2xpc3RfaXRlcmF0b3I7CiAgCSAgYnJlYWs7CiAgCiAgCWRlZmF1bHQ6
CioqKioqKioqKioqKioqKgoqKiogMzIyMywzMjI5ICoqKioKICAKICAgIC8qIEVhdCB0b2tlbnMg
dW50aWwgZW9mIGlzIHNlZW4uICBXaGVuIGV4dHJhY3RfYmFsYW5jZWQgcmV0dXJucwogICAgICAg
ZHVlIHRvIGFuIHVuYmFsYW5jZWQgY2xvc2luZyBicmFjZSwganVzdCByZXN0YXJ0IGl0LiAgKi8K
ISAgIHdoaWxlICghZXh0cmFjdF9iYWxhbmNlZCAobWxwLCAwLCB0b2tlbl90eXBlX3JicmFjZSwK
ICAJCQkgICAgbnVsbF9jb250ZXh0LCBudWxsX2NvbnRleHRfbGlzdF9pdGVyYXRvciwKICAJCQkg
ICAgMSwgYXJnbGlzdF9wYXJzZXJfYWxsb2MgKG1scCwgTlVMTCkpKQogICAgICA7Ci0tLSAzNDAx
LDM0MDcgLS0tLQogIAogICAgLyogRWF0IHRva2VucyB1bnRpbCBlb2YgaXMgc2Vlbi4gIFdoZW4g
ZXh0cmFjdF9iYWxhbmNlZCByZXR1cm5zCiAgICAgICBkdWUgdG8gYW4gdW5iYWxhbmNlZCBjbG9z
aW5nIGJyYWNlLCBqdXN0IHJlc3RhcnQgaXQuICAqLwohICAgd2hpbGUgKCFleHRyYWN0X2JhbGFu
Y2VkIChtbHAsIHRva2VuX3R5cGVfcmJyYWNlLCB0cnVlLCBmYWxzZSwKICAJCQkgICAgbnVsbF9j
b250ZXh0LCBudWxsX2NvbnRleHRfbGlzdF9pdGVyYXRvciwKICAJCQkgICAgMSwgYXJnbGlzdF9w
YXJzZXJfYWxsb2MgKG1scCwgTlVMTCkpKQogICAgICA7Cg==
</data>        

          </attachment>
    </bug>

</bugzilla>