<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>16185</bug_id>
          
          <creation_ts>2007-11-29 04:07:16 -0800</creation_ts>
          <short_desc>jsRegExpCompile should not add implicit non-capturing bracket</short_desc>
          <delta_ts>2007-12-07 12:01:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>16186</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>darin</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>62679</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-11-29 04:07:16 -0800</bug_when>
    <thetext>jsRegExpCompile &amp; match should not add implicit non-capturing bracket

Every regexp gets an implicit non-capturing bracket added to the front, and a non-capturing close added to the back of the instruction stream in jsRegExpCompile, match() is then called and expects these.

Removing this trip through the switch() would be a big savings on SunSpider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62680</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-11-29 04:08:34 -0800</bug_when>
    <thetext>To fix this would likely require breaking out match() into match() and recursive_match() and making sure that only outer match() function is ever called by callers, and that recursive_match() is only ever called from match().

I expect this would fall into the &quot;softball&quot; category of JS speedups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62891</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-01 10:40:25 -0800</bug_when>
    <thetext>So I misunderstood this bug and added code so that jsRegExpCompile will omit the outer bracket entirely when it&apos;s not needed.

This doesn&apos;t help the regexp-dna test in SunSpider much at all, because almost all its regular expressions have &quot;|&quot; characters in them, which means they *do* require the outer bracket.

Hence Eric&apos;s other suggestion, of optimizing match for this, really turns into a sort of &quot;unrolling&quot; of the match function, which could indeed be helpful for simple regular expressions.

I can&apos;t help thinking it&apos;s a little bit too specific to this particular test, though. The more I look at the profile the more I realize it&apos;s a little bit too biased toward this one particular set of regular expressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62892</commentid>
    <comment_count>3</comment_count>
      <attachid>17628</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-01 10:41:22 -0800</bug_when>
    <thetext>Created attachment 17628
patch to omit the outer bracket in cases where it&apos;s not needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63576</commentid>
    <comment_count>4</comment_count>
      <attachid>17768</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-07 01:29:41 -0800</bug_when>
    <thetext>Created attachment 17768
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63609</commentid>
    <comment_count>5</comment_count>
      <attachid>17768</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-12-07 11:38:23 -0800</bug_when>
    <thetext>Comment on attachment 17768
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63614</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-07 12:01:35 -0800</bug_when>
    <thetext>Committed revision 28525.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17628</attachid>
            <date>2007-12-01 10:41:22 -0800</date>
            <delta_ts>2007-12-07 01:29:41 -0800</delta_ts>
            <desc>patch to omit the outer bracket in cases where it&apos;s not needed</desc>
            <filename>OmitOuterBracketPatch.txt</filename>
            <type>text/plain</type>
            <size>9983</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZV9jb21waWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfY29tcGlsZS5jcHAJKHJldmlzaW9uIDI4MzAxKQor
KysgSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlX2NvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjksOSArMTI5LDI5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBlcnJvcl90ZXh0KEVycm9yQ29k
ZSAKICAgICByZXR1cm4gdGV4dDsKIH0KIAorLyogU3RydWN0dXJlIGZvciBwYXNzaW5nICJzdGF0
aWMiIGluZm9ybWF0aW9uIGFyb3VuZCBiZXR3ZWVuIHRoZSBmdW5jdGlvbnMKK2RvaW5nIHRoZSBj
b21waWxpbmcsIHNvIHRoYXQgdGhleSBhcmUgdGhyZWFkLXNhZmUuICovCisKK3N0cnVjdCBDb21w
aWxlRGF0YSB7CisgICAgQ29tcGlsZURhdGEoKSB7CisgICAgICAgIHN0YXJ0X2NvZGUgPSAwOwor
ICAgICAgICBzdGFydF9wYXR0ZXJuID0gMDsKKyAgICAgICAgdG9wX2JhY2tyZWYgPSAwOworICAg
ICAgICBiYWNrcmVmX21hcCA9IDA7CisgICAgICAgIHJlcV92YXJ5b3B0ID0gMDsKKyAgICAgICAg
bmVlZE91dGVyQnJhY2tldCA9IGZhbHNlOworICAgIH0KKyAgICBjb25zdCB1c2NoYXIqIHN0YXJ0
X2NvZGU7ICAgLyogVGhlIHN0YXJ0IG9mIHRoZSBjb21waWxlZCBjb2RlICovCisgICAgY29uc3Qg
VUNoYXIqIHN0YXJ0X3BhdHRlcm47IC8qIFRoZSBzdGFydCBvZiB0aGUgcGF0dGVybiAqLworICAg
IGludCB0b3BfYmFja3JlZjsgICAgICAgICAgICAvKiBNYXhpbXVtIGJhY2sgcmVmZXJlbmNlICov
CisgICAgdW5zaWduZWQgYmFja3JlZl9tYXA7ICAgICAgIC8qIEJpdG1hcCBvZiBsb3cgYmFjayBy
ZWZzICovCisgICAgaW50IHJlcV92YXJ5b3B0OyAgICAgICAgICAgIC8qICJBZnRlciB2YXJpYWJs
ZSBpdGVtIiBmbGFnIGZvciByZXFieXRlICovCisgICAgYm9vbCBuZWVkT3V0ZXJCcmFja2V0Owor
fTsKKwogLyogRGVmaW5pdGlvbiB0byBhbGxvdyBtdXR1YWwgcmVjdXJzaW9uICovCiAKLXN0YXRp
YyBib29sIGNvbXBpbGVfcmVnZXgoaW50LCBpbnQqLCB1c2NoYXIqKiwgY29uc3QgVUNoYXIqKiwg
Y29uc3QgVUNoYXIqLCBFcnJvckNvZGUqLCBpbnQsIGludCosIGludCosIENvbXBpbGVEYXRhJik7
CitzdGF0aWMgYm9vbCBjb21waWxlX2JyYWNrZXQoaW50LCBpbnQqLCB1c2NoYXIqKiwgY29uc3Qg
VUNoYXIqKiwgY29uc3QgVUNoYXIqLCBFcnJvckNvZGUqLCBpbnQsIGludCosIGludCosIENvbXBp
bGVEYXRhJik7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAqICAgICAgICAgICAgSGFuZGxlIGVzY2FwZXMgICAgICAgICAgICAgICAgICAgICAg
KgpAQCAtNzA4LDkgKzcyOCw3IEBAIGludCBfcGNyZV9vcmQydXRmOChpbnQgY3ZhbHVlLCB1c2No
YXIgKmIKICogICAgICAgICAgIENvbXBpbGUgb25lIGJyYW5jaCAgICAgICAgICAgICAgICAgICAq
CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0v
KiBTY2FuIHRoZSBwYXR0ZXJuLCBjb21waWxpbmcgaXQgaW50byB0aGUgY29kZSB2ZWN0b3IuIElm
IHRoZSBvcHRpb25zIGFyZQotY2hhbmdlZCBkdXJpbmcgdGhlIGJyYW5jaCwgdGhlIHBvaW50ZXIg
aXMgdXNlZCB0byBjaGFuZ2UgdGhlIGV4dGVybmFsIG9wdGlvbnMKLWJpdHMuCisvKiBTY2FuIHRo
ZSBwYXR0ZXJuLCBjb21waWxpbmcgaXQgaW50byB0aGUgY29kZSB2ZWN0b3IuCiAKIEFyZ3VtZW50
czoKICAgb3B0aW9ucyAgICAgICAgdGhlIG9wdGlvbiBiaXRzCkBAIC0xNjcxLDcgKzE2ODksNyBA
QCBjb21waWxlX2JyYW5jaChpbnQgb3B0aW9ucywgaW50KiBicmFja2V0CiAgICAgICAgICAgICAg
ICAgdGVtcGNvZGUgPSBjb2RlOwogICAgICAgICAgICAgICAgIHRlbXByZXF2YXJ5ID0gY2QucmVx
X3ZhcnlvcHQ7ICAgICAvKiBTYXZlIHZhbHVlIGJlZm9yZSBicmFja2V0ICovCiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCFjb21waWxlX3JlZ2V4KAorICAgICAgICAgICAg
ICAgIGlmICghY29tcGlsZV9icmFja2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFja2V0
cywgICAgICAgICAgICAgICAgICAgICAvKiBFeHRyYWN0aW5nIGJyYWNrZXQgY291bnQgKi8KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRlbXBjb2RlLCAgICAgICAgICAgICAg
ICAgICAgLyogV2hlcmUgdG8gcHV0IGNvZGUgKHVwZGF0ZWQpICovCkBAIC0xOTAzLDkgKzE5MjEs
OSBAQCBSZXR1cm5zOiAgICAgIHRydWUgb24gc3VjY2VzcwogKi8KIAogc3RhdGljIGJvb2wKLWNv
bXBpbGVfcmVnZXgoaW50IG9wdGlvbnMsIGludCogYnJhY2tldHMsIHVzY2hhcioqIGNvZGVwdHIs
Ci0gICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiogcHRycHRyLCBjb25zdCBVQ2hhciogcGF0dGVy
bkVuZCwgRXJyb3JDb2RlKiBlcnJvcmNvZGVwdHIsIGludCBza2lwYnl0ZXMsCi0gICAgICAgICAg
ICAgIGludCogZmlyc3RieXRlcHRyLCBpbnQqIHJlcWJ5dGVwdHIsIENvbXBpbGVEYXRhJiBjZCkK
K2NvbXBpbGVfYnJhY2tldChpbnQgb3B0aW9ucywgaW50KiBicmFja2V0cywgdXNjaGFyKiogY29k
ZXB0ciwKKyAgICBjb25zdCBVQ2hhcioqIHB0cnB0ciwgY29uc3QgVUNoYXIqIHBhdHRlcm5FbmQs
IEVycm9yQ29kZSogZXJyb3Jjb2RlcHRyLCBpbnQgc2tpcGJ5dGVzLAorICAgIGludCogZmlyc3Ri
eXRlcHRyLCBpbnQqIHJlcWJ5dGVwdHIsIENvbXBpbGVEYXRhJiBjZCkKIHsKICAgICBjb25zdCBV
Q2hhciogcHRyID0gKnB0cnB0cjsKICAgICB1c2NoYXIqIGNvZGUgPSAqY29kZXB0cjsKQEAgLTIy
MTksNyArMjIzNyw4IEBAIHN0YXRpYyBpbnQgZmluZF9maXJzdGFzc2VydGVkY2hhcihjb25zdCAK
ICAgICByZXR1cm4gYzsKIH0KIAotc3RhdGljIGludCBjYWxjdWxhdGVDb21waWxlZFBhdHRlcm5M
ZW5ndGhBbmRGbGFncyhjb25zdCBVQ2hhciogcGF0dGVybiwgaW50IHBhdHRlcm5MZW5ndGgsIEpT
UmVnRXhwSWdub3JlQ2FzZU9wdGlvbiBpZ25vcmVDYXNlLCBDb21waWxlRGF0YSYgY29tcGlsZV9i
bG9jaywgRXJyb3JDb2RlJiBlcnJvcmNvZGUpCitzdGF0aWMgaW50IGNhbGN1bGF0ZUNvbXBpbGVk
UGF0dGVybkxlbmd0aEFuZEZsYWdzKGNvbnN0IFVDaGFyKiBwYXR0ZXJuLCBpbnQgcGF0dGVybkxl
bmd0aCwgSlNSZWdFeHBJZ25vcmVDYXNlT3B0aW9uIGlnbm9yZUNhc2UsCisgICAgQ29tcGlsZURh
dGEmIGNkLCBFcnJvckNvZGUmIGVycm9yY29kZSkKIHsKICAgICAvKiBNYWtlIGEgcGFzcyBvdmVy
IHRoZSBwYXR0ZXJuIHRvIGNvbXB1dGUgdGhlCiAgICAgIGFtb3VudCBvZiBzdG9yZSByZXF1aXJl
ZCB0byBob2xkIHRoZSBjb21waWxlZCBjb2RlLiBUaGlzIGRvZXMgbm90IGhhdmUgdG8gYmUKQEAg
LTIyMzQsNyArMjI1Myw2IEBAIHN0YXRpYyBpbnQgY2FsY3VsYXRlQ29tcGlsZWRQYXR0ZXJuTGVu
Z3QKICAgICB1bnNpZ25lZCBicmFzdGFja3B0ciA9IDA7CiAgICAgaW50IGJyYXN0YWNrW0JSQVNU
QUNLX1NJWkVdOwogICAgIHVzY2hhciBicmFsZW5zdGFja1tCUkFTVEFDS19TSVpFXTsKLSAgICBp
bnQgaXRlbV9jb3VudCA9IC0xOwogICAgIGludCBicmFjb3VudCA9IDA7CiAgICAgCiAgICAgY29u
c3QgVUNoYXIqIHB0ciA9IChjb25zdCBVQ2hhciopKHBhdHRlcm4gLSAxKTsKQEAgLTIyNDQsOCAr
MjI2Miw2IEBAIHN0YXRpYyBpbnQgY2FsY3VsYXRlQ29tcGlsZWRQYXR0ZXJuTGVuZ3QKICAgICAg
ICAgaW50IG1pblJlcGVhdHMgPSAwLCBtYXhSZXBlYXRzID0gMDsKICAgICAgICAgaW50IGMgPSAq
cHRyOwogCi0gICAgICAgIGl0ZW1fY291bnQrKzsgICAgLyogSXMgemVybyBmb3IgdGhlIGZpcnN0
IG5vbi1jb21tZW50IGl0ZW0gKi8KLQogICAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgICAg
IC8qIEEgYmFja3NsYXNoZWQgaXRlbSBtYXkgYmUgYW4gZXNjYXBlZCBkYXRhIGNoYXJhY3RlciBv
ciBpdCBtYXkgYmUgYQogICAgICAgICAgICAgIGNoYXJhY3RlciB0eXBlLiAqLwpAQCAtMjI4MSw5
ICsyMjk3LDkgQEAgc3RhdGljIGludCBjYWxjdWxhdGVDb21waWxlZFBhdHRlcm5MZW5ndAogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChjIDw9IC1FU0NfUkVGKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGludCByZWZudW0gPSAtYyAtIEVTQ19SRUY7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbXBpbGVfYmxvY2suYmFja3JlZl9tYXAgfD0gKHJlZm51bSA8IDMyKT8gKDEgPDwg
cmVmbnVtKSA6IDE7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZWZudW0gPiBjb21waWxlX2Js
b2NrLnRvcF9iYWNrcmVmKQotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZV9ibG9jay50
b3BfYmFja3JlZiA9IHJlZm51bTsKKyAgICAgICAgICAgICAgICAgICAgY2QuYmFja3JlZl9tYXAg
fD0gKHJlZm51bSA8IDMyKT8gKDEgPDwgcmVmbnVtKSA6IDE7CisgICAgICAgICAgICAgICAgICAg
IGlmIChyZWZudW0gPiBjZC50b3BfYmFja3JlZikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNk
LnRvcF9iYWNrcmVmID0gcmVmbnVtOwogICAgICAgICAgICAgICAgICAgICBsZW5ndGggKz0gMjsg
ICAvKiBGb3Igc2luZ2xlIGJhY2sgcmVmZXJlbmNlICovCiAgICAgICAgICAgICAgICAgICAgIGlm
IChzYWZlbHlDaGVja05leHRDaGFyKHB0ciwgcGF0dGVybkVuZCwgJ3snKSAmJiBpc19jb3VudGVk
X3JlcGVhdChwdHIgKyAyLCBwYXR0ZXJuRW5kKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
cHRyID0gcmVhZF9yZXBlYXRfY291bnRzKHB0ciArIDIsICZtaW5SZXBlYXRzLCAmbWF4UmVwZWF0
cywgJmVycm9yY29kZSk7CkBAIC0yMzU2LDYgKzIzNzIsOCBAQCBzdGF0aWMgaW50IGNhbGN1bGF0
ZUNvbXBpbGVkUGF0dGVybkxlbmd0CiAgICAgICAgICAgICAgYnJhbmNoLiBUaGlzIGlzIGhhbmRs
ZWQgYnkgYnJhbmNoX2V4dHJhLiAqLwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2Fz
ZSAnfCc6CisgICAgICAgICAgICAgICAgaWYgKGJyYXN0YWNrcHRyID09IDApCisgICAgICAgICAg
ICAgICAgICAgIGNkLm5lZWRPdXRlckJyYWNrZXQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGxl
bmd0aCArPSAxICsgTElOS19TSVpFICsgYnJhbmNoX2V4dHJhOwogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIApAQCAtMjc4MSwxMCArMjc5OSwxMCBAQCBKU1JlZ0V4
cCoganNSZWdFeHBDb21waWxlKGNvbnN0IFVDaGFyKiBwCiAgICAgICAgIHJldHVybiAwOwogICAg
ICplcnJvcnB0ciA9IE5VTEw7CiAgICAgCi0gICAgQ29tcGlsZURhdGEgY29tcGlsZV9ibG9jazsK
KyAgICBDb21waWxlRGF0YSBjZDsKICAgICAKICAgICBFcnJvckNvZGUgZXJyb3Jjb2RlID0gRVJS
MDsKLSAgICBpbnQgbGVuZ3RoID0gY2FsY3VsYXRlQ29tcGlsZWRQYXR0ZXJuTGVuZ3RoQW5kRmxh
Z3MocGF0dGVybiwgcGF0dGVybkxlbmd0aCwgaWdub3JlQ2FzZSwgY29tcGlsZV9ibG9jaywgZXJy
b3Jjb2RlKTsKKyAgICBpbnQgbGVuZ3RoID0gY2FsY3VsYXRlQ29tcGlsZWRQYXR0ZXJuTGVuZ3Ro
QW5kRmxhZ3MocGF0dGVybiwgcGF0dGVybkxlbmd0aCwgaWdub3JlQ2FzZSwgY2QsIGVycm9yY29k
ZSk7CiAgICAgaWYgKGVycm9yY29kZSkKICAgICAgICAgcmV0dXJuIHJldHVybkVycm9yKGVycm9y
Y29kZSwgZXJyb3JwdHIpOwogICAgIApAQCAtMjc5NywyMCArMjgxNSwxNCBAQCBKU1JlZ0V4cCog
anNSZWdFeHBDb21waWxlKGNvbnN0IFVDaGFyKiBwCiAgICAgaWYgKCFyZSkKICAgICAgICAgcmV0
dXJuIHJldHVybkVycm9yKEVSUjEzLCBlcnJvcnB0cik7CiAgICAgCi0gICAgLyogUHV0IGluIHRo
ZSBtYWdpYyBudW1iZXIsIGFuZCBzYXZlIHRoZSBzaXplcywgb3B0aW9ucywgYW5kIGNoYXJhY3Rl
ciB0YWJsZQotICAgICBwb2ludGVyLiBOVUxMIGlzIHVzZWQgZm9yIHRoZSBkZWZhdWx0IGNoYXJh
Y3RlciB0YWJsZXMuIFRoZSBudWxscGFkIGZpZWxkIGlzIGF0Ci0gICAgIHRoZSBlbmQ7IGl0J3Mg
dGhlcmUgdG8gaGVscCBpbiB0aGUgY2FzZSB3aGVuIGEgcmVnZXggY29tcGlsZWQgb24gYSBzeXN0
ZW0gd2l0aAotICAgICA0LWJ5dGUgcG9pbnRlcnMgaXMgcnVuIG9uIGFub3RoZXIgd2l0aCA4LWJ5
dGUgcG9pbnRlcnMuICovCi0gICAgCi0gICAgcmUtPnNpemUgPSAocGNyZV91aW50MzIpc2l6ZTsK
ICAgICByZS0+b3B0aW9ucyA9IChpZ25vcmVDYXNlID8gSWdub3JlQ2FzZU9wdGlvbiA6IDApIHwg
KG11bHRpbGluZSA/IE1hdGNoQWNyb3NzTXVsdGlwbGVMaW5lc09wdGlvbiA6IDApOwogICAgIAog
ICAgIC8qIFRoZSBzdGFydGluZyBwb2ludHMgb2YgdGhlIG5hbWUvbnVtYmVyIHRyYW5zbGF0aW9u
IHRhYmxlIGFuZCBvZiB0aGUgY29kZSBhcmUKICAgICAgcGFzc2VkIGFyb3VuZCBpbiB0aGUgY29t
cGlsZSBkYXRhIGJsb2NrLiAqLwogICAgIAogICAgIGNvbnN0IHVzY2hhciogY29kZXN0YXJ0ID0g
KGNvbnN0IHVzY2hhciopKHJlICsgMSk7Ci0gICAgY29tcGlsZV9ibG9jay5zdGFydF9jb2RlID0g
Y29kZXN0YXJ0OwotICAgIGNvbXBpbGVfYmxvY2suc3RhcnRfcGF0dGVybiA9IChjb25zdCBVQ2hh
ciopcGF0dGVybjsKKyAgICBjZC5zdGFydF9jb2RlID0gY29kZXN0YXJ0OworICAgIGNkLnN0YXJ0
X3BhdHRlcm4gPSAoY29uc3QgVUNoYXIqKXBhdHRlcm47CiAgICAgCiAgICAgLyogU2V0IHVwIGEg
c3RhcnRpbmcsIG5vbi1leHRyYWN0aW5nIGJyYWNrZXQsIHRoZW4gY29tcGlsZSB0aGUgZXhwcmVz
c2lvbi4gT24KICAgICAgZXJyb3IsIGVycm9yY29kZSB3aWxsIGJlIHNldCBub24temVybywgc28g
d2UgZG9uJ3QgbmVlZCB0byBsb29rIGF0IHRoZSByZXN1bHQKQEAgLTI4MTksMTQgKzI4MzEsMTYg
QEAgSlNSZWdFeHAqIGpzUmVnRXhwQ29tcGlsZShjb25zdCBVQ2hhciogcAogICAgIGNvbnN0IFVD
aGFyKiBwdHIgPSAoY29uc3QgVUNoYXIqKXBhdHRlcm47CiAgICAgY29uc3QgVUNoYXIqIHBhdHRl
cm5FbmQgPSBwYXR0ZXJuICsgcGF0dGVybkxlbmd0aDsKICAgICB1c2NoYXIqIGNvZGUgPSAodXNj
aGFyKiljb2Rlc3RhcnQ7Ci0gICAgKmNvZGUgPSBPUF9CUkE7CiAgICAgaW50IGZpcnN0Ynl0ZSwg
cmVxYnl0ZTsKICAgICBpbnQgYnJhY2tldENvdW50ID0gMDsKLSAgICAodm9pZCljb21waWxlX3Jl
Z2V4KHJlLT5vcHRpb25zLCAmYnJhY2tldENvdW50LCAmY29kZSwgJnB0ciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHBhdHRlcm5FbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3Jj
b2RlLCAwLCAmZmlyc3RieXRlLCAmcmVxYnl0ZSwgY29tcGlsZV9ibG9jayk7CisgICAgaWYgKCFj
ZC5uZWVkT3V0ZXJCcmFja2V0KQorICAgICAgICBjb21waWxlX2JyYW5jaChyZS0+b3B0aW9ucywg
JmJyYWNrZXRDb3VudCwgJmNvZGUsICZwdHIsIHBhdHRlcm5FbmQsICZlcnJvcmNvZGUsICZmaXJz
dGJ5dGUsICZyZXFieXRlLCBjZCk7CisgICAgZWxzZSB7CisgICAgICAgICpjb2RlID0gT1BfQlJB
OworICAgICAgICBjb21waWxlX2JyYWNrZXQocmUtPm9wdGlvbnMsICZicmFja2V0Q291bnQsICZj
b2RlLCAmcHRyLCBwYXR0ZXJuRW5kLCAmZXJyb3Jjb2RlLCAwLCAmZmlyc3RieXRlLCAmcmVxYnl0
ZSwgY2QpOworICAgIH0KICAgICByZS0+dG9wX2JyYWNrZXQgPSBicmFja2V0Q291bnQ7Ci0gICAg
cmUtPnRvcF9iYWNrcmVmID0gY29tcGlsZV9ibG9jay50b3BfYmFja3JlZjsKKyAgICByZS0+dG9w
X2JhY2tyZWYgPSBjZC50b3BfYmFja3JlZjsKICAgICAKICAgICAvKiBJZiBub3QgcmVhY2hlZCBl
bmQgb2YgcGF0dGVybiBvbiBzdWNjZXNzLCB0aGVyZSdzIGFuIGV4Y2VzcyBicmFja2V0LiAqLwog
ICAgIApAQCAtMjg2Niw3ICsyODgwLDcgQEAgSlNSZWdFeHAqIGpzUmVnRXhwQ29tcGlsZShjb25z
dCBVQ2hhciogcAogICAgICBzdGFydCB3aXRoIF4uIGFuZCBhbHNvIHdoZW4gYWxsIGJyYW5jaGVz
IHN0YXJ0IHdpdGggLiogZm9yIG5vbi1ET1RBTEwgbWF0Y2hlcy4KICAgICAgKi8KICAgICAKLSAg
ICBpZiAoaXNfYW5jaG9yZWQoY29kZXN0YXJ0LCByZS0+b3B0aW9ucywgMCwgY29tcGlsZV9ibG9j
ay5iYWNrcmVmX21hcCkpCisgICAgaWYgKGlzX2FuY2hvcmVkKGNvZGVzdGFydCwgcmUtPm9wdGlv
bnMsIDAsIGNkLmJhY2tyZWZfbWFwKSkKICAgICAgICAgcmUtPm9wdGlvbnMgfD0gSXNBbmNob3Jl
ZE9wdGlvbjsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGZpcnN0Ynl0ZSA8IDApCkBAIC0yODc5
LDcgKzI4OTMsNyBAQCBKU1JlZ0V4cCoganNSZWdFeHBDb21waWxlKGNvbnN0IFVDaGFyKiBwCiAg
ICAgICAgICAgICAgICAgcmUtPm9wdGlvbnMgfD0gVXNlRmlyc3RCeXRlT3B0aW1pemF0aW9uT3B0
aW9uOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNhbkFwcGx5
Rmlyc3RDaGFyT3B0aW1pemF0aW9uKGNvZGVzdGFydCwgMCwgY29tcGlsZV9ibG9jay5iYWNrcmVm
X21hcCkpCisgICAgICAgIGVsc2UgaWYgKGNhbkFwcGx5Rmlyc3RDaGFyT3B0aW1pemF0aW9uKGNv
ZGVzdGFydCwgMCwgY2QuYmFja3JlZl9tYXApKQogICAgICAgICAgICAgcmUtPm9wdGlvbnMgfD0g
VXNlTXVsdGlMaW5lRmlyc3RCeXRlT3B0aW1pemF0aW9uT3B0aW9uOwogICAgIH0KICAgICAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZV9pbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3BjcmUvcGNyZV9pbnRlcm5hbC5oCShyZXZpc2lvbiAyODMwMSkKKysrIEph
dmFTY3JpcHRDb3JlL3BjcmUvcGNyZV9pbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MDQs
MjQgKzUwNCw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NwYWNlQ2hhcihVQ2hhciBjKQogICAg
IHJldHVybiAoYyA8IDEyOCAmJiAoY2hhclR5cGVGb3JDaGFyKGMpICYgY3R5cGVfc3BhY2UpKTsK
IH0KIAotLyogU3RydWN0dXJlIGZvciBwYXNzaW5nICJzdGF0aWMiIGluZm9ybWF0aW9uIGFyb3Vu
ZCBiZXR3ZWVuIHRoZSBmdW5jdGlvbnMKLWRvaW5nIHRoZSBjb21waWxpbmcsIHNvIHRoYXQgdGhl
eSBhcmUgdGhyZWFkLXNhZmUuICovCi0KLXN0cnVjdCBDb21waWxlRGF0YSB7Ci0gICAgQ29tcGls
ZURhdGEoKSB7Ci0gICAgICAgIHN0YXJ0X2NvZGUgPSAwOwotICAgICAgICBzdGFydF9wYXR0ZXJu
ID0gMDsKLSAgICAgICAgdG9wX2JhY2tyZWYgPSAwOwotICAgICAgICBiYWNrcmVmX21hcCA9IDA7
Ci0gICAgICAgIHJlcV92YXJ5b3B0ID0gMDsKLSAgICB9Ci0gIGNvbnN0IHVzY2hhciogc3RhcnRf
Y29kZTsgICAgIC8qIFRoZSBzdGFydCBvZiB0aGUgY29tcGlsZWQgY29kZSAqLwotICBjb25zdCBV
Q2hhciogc3RhcnRfcGF0dGVybjsgICAvKiBUaGUgc3RhcnQgb2YgdGhlIHBhdHRlcm4gKi8KLSAg
aW50ICB0b3BfYmFja3JlZjsgICAgICAgICAgICAgLyogTWF4aW11bSBiYWNrIHJlZmVyZW5jZSAq
LwotICB1bnNpZ25lZCBiYWNrcmVmX21hcDsgICAgIC8qIEJpdG1hcCBvZiBsb3cgYmFjayByZWZz
ICovCi0gIGludCAgcmVxX3ZhcnlvcHQ7ICAgICAgICAgICAgIC8qICJBZnRlciB2YXJpYWJsZSBp
dGVtIiBmbGFnIGZvciByZXFieXRlICovCi19OwotCiAvKiBJbnRlcm5hbCBzaGFyZWQgZnVuY3Rp
b25zLiBUaGVzZSBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIHVzZWQgYnkgbW9yZSB0aGFuCiBvbmUg
b2YgdGhlIGV4cG9ydGVkIHB1YmxpYyBmdW5jdGlvbnMuIFRoZXkgaGF2ZSB0byBiZSAiZXh0ZXJu
YWwiIGluIHRoZSBDCiBzZW5zZSwgYnV0IGFyZSBub3QgcGFydCBvZiB0aGUgUENSRSBwdWJsaWMg
QVBJLiAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17768</attachid>
            <date>2007-12-07 01:29:41 -0800</date>
            <delta_ts>2007-12-07 11:38:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>OmitOuterBracketPatch.txt</filename>
            <type>text/plain</type>
            <size>11863</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTE0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMDctMTItMDcgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gZml4IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MTg1CisgICAgICAgICAganNSZWdFeHBDb21waWxlIHNob3VsZCBub3QgYWRkIGltcGxp
Y2l0IG5vbi1jYXB0dXJpbmcgYnJhY2tldAorCisgICAgICAgIFdoaWxlIHRoaXMgZG9lcyBub3Qg
bWFrZSBTdW5TcGlkZXIgZmFzdGVyLCBpdCB3aWxsIG1ha2UgbWFueSByZWd1bGFyCisgICAgICAg
IGV4cHJlc3Npb25zIGEgYml0IGZhc3Rlci4KKworICAgICAgICAqIHBjcmUvcGNyZV9jb21waWxl
LmNwcDogTW92ZWQgQ29tcGlsZURhdGEgc3RydWN0IGluIGhlcmUgZnJvbSB0aGUKKyAgICAgICAg
aGVhZGVyIHNpbmNlIGl0J3MgcHJpdmF0ZSB0byB0aGlzIGZpbGUuCisgICAgICAgIChjb21waWxl
X2JyYW5jaCk6IFVwZGF0ZWQgZm9yIGZ1bmN0aW9uIG5hbWUgY2hhbmdlLgorICAgICAgICAoY29t
cGlsZV9icmFja2V0KTogUmVuYW1lZCBmcm9tIGNvbXBpbGVfcmVnZXgsIHNpbmNlLCBmb3Igb25l
IHRoaW5nLAorICAgICAgICB0aGlzIGRvZXMgbm90IGNvbXBpbGUgYW4gZW50aXJlIHJlZ3VsYXIg
ZXhwcmVzc2lvbi4KKyAgICAgICAgKGNhbGN1bGF0ZUNvbXBpbGVkUGF0dGVybkxlbmd0aEFuZEZs
YWdzKTogUmVtb3ZlZCB1bnVzZWQgaXRlbV9jb3VudAorICAgICAgICBsb2NhbCB2YXJpYWJsZS4g
UmVuYW1lZCBDb21waWxlRGF0YSB0byBjZCBpbnN0ZWFkIG9mIGNvbXBpbGVfYmxvY2sKKyAgICAg
ICAgdG8gYmUgY29uc2lzdGVudCB3aXRoIG90aGVyIGZ1bmN0aW9ucy4gQWRkZWQgY29kZSB0byBz
ZXQgdGhlCisgICAgICAgIG5lZWRPdXRlckJyYWNrZXQgZmxhZyBpZiB0aGVyZSdzIGF0IGxlYXN0
IG9uZSAifCIgYXQgdGhlIG91dGVyIGxldmVsLgorICAgICAgICAoanNSZWdFeHBDb21waWxlKTog
UmVuYW1lZCBDb21waWxlRGF0YSB0byBjZCBpbnN0ZWFkIG9mIGNvbXBpbGVfYmxvY2sKKyAgICAg
ICAgdG8gYmUgY29uc2lzdGVudCB3aXRoIG90aGVyIGZ1bmN0aW9ucy4gUmVtb3ZlZCB1bm5lZWRl
ZCAic2l6ZSIgZmllbGQKKyAgICAgICAgZnJvbSB0aGUgY29tcGlsZWQgcmVndWxhciBleHByZXNz
aW9uLiBJZiBubyBvdXRlciBicmFja2V0IGlzIG5lZWRlZCwKKyAgICAgICAgdGhlbiB1c2UgY29t
cGlsZV9icmFuY2ggdG8gY29tcGlsZSB0aGUgcmVndWxhciBleHByZXNzaW9uLgorCisgICAgICAg
ICogcGNyZS9wY3JlX2ludGVybmFsLmg6IFJlbW92ZWQgdGhlIENvbXBpbGVEYXRhIHN0cnVjdCwg
d2hpY2ggaXMgbm93CisgICAgICAgIHByaXZhdGUgdG8gcGNyZV9jb21waWxlLmNwcC4gUmVtb3Zl
ZCB0aGUgc2l6ZSBtZW1iZXIgZnJvbSBKU1JlZ0V4cC4KKwogMjAwNy0xMi0wNiAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfY29tcGlsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlX2NvbXBpbGUuY3BwCShyZXZpc2lvbiAyODUwOCkK
KysrIEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZV9jb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI5LDkgKzEyOSwyOSBAQCBzdGF0aWMgY29uc3QgY2hhciogZXJyb3JfdGV4dChFcnJvckNv
ZGUgCiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKKy8qIFN0cnVjdHVyZSBmb3IgcGFzc2luZyAic3Rh
dGljIiBpbmZvcm1hdGlvbiBhcm91bmQgYmV0d2VlbiB0aGUgZnVuY3Rpb25zCitkb2luZyB0aGUg
Y29tcGlsaW5nLiAqLworCitzdHJ1Y3QgQ29tcGlsZURhdGEgeworICAgIENvbXBpbGVEYXRhKCkg
eworICAgICAgICBzdGFydF9jb2RlID0gMDsKKyAgICAgICAgc3RhcnRfcGF0dGVybiA9IDA7Cisg
ICAgICAgIHRvcF9iYWNrcmVmID0gMDsKKyAgICAgICAgYmFja3JlZl9tYXAgPSAwOworICAgICAg
ICByZXFfdmFyeW9wdCA9IDA7CisgICAgICAgIG5lZWRPdXRlckJyYWNrZXQgPSBmYWxzZTsKKyAg
ICB9CisgICAgY29uc3QgdXNjaGFyKiBzdGFydF9jb2RlOyAgIC8qIFRoZSBzdGFydCBvZiB0aGUg
Y29tcGlsZWQgY29kZSAqLworICAgIGNvbnN0IFVDaGFyKiBzdGFydF9wYXR0ZXJuOyAvKiBUaGUg
c3RhcnQgb2YgdGhlIHBhdHRlcm4gKi8KKyAgICBpbnQgdG9wX2JhY2tyZWY7ICAgICAgICAgICAg
LyogTWF4aW11bSBiYWNrIHJlZmVyZW5jZSAqLworICAgIHVuc2lnbmVkIGJhY2tyZWZfbWFwOyAg
ICAgICAvKiBCaXRtYXAgb2YgbG93IGJhY2sgcmVmcyAqLworICAgIGludCByZXFfdmFyeW9wdDsg
ICAgICAgICAgICAvKiAiQWZ0ZXIgdmFyaWFibGUgaXRlbSIgZmxhZyBmb3IgcmVxYnl0ZSAqLwor
ICAgIGJvb2wgbmVlZE91dGVyQnJhY2tldDsKK307CisKIC8qIERlZmluaXRpb24gdG8gYWxsb3cg
bXV0dWFsIHJlY3Vyc2lvbiAqLwogCi1zdGF0aWMgYm9vbCBjb21waWxlX3JlZ2V4KGludCwgaW50
KiwgdXNjaGFyKiosIGNvbnN0IFVDaGFyKiosIGNvbnN0IFVDaGFyKiwgRXJyb3JDb2RlKiwgaW50
LCBpbnQqLCBpbnQqLCBDb21waWxlRGF0YSYpOworc3RhdGljIGJvb2wgY29tcGlsZV9icmFja2V0
KGludCwgaW50KiwgdXNjaGFyKiosIGNvbnN0IFVDaGFyKiosIGNvbnN0IFVDaGFyKiwgRXJyb3JD
b2RlKiwgaW50LCBpbnQqLCBpbnQqLCBDb21waWxlRGF0YSYpOwogCiAvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgIEhhbmRsZSBl
c2NhcGVzICAgICAgICAgICAgICAgICAgICAgICoKQEAgLTcwOCw5ICs3MjgsNyBAQCBpbnQgX3Bj
cmVfb3JkMnV0ZjgoaW50IGN2YWx1ZSwgdXNjaGFyICpiCiAqICAgICAgICAgICBDb21waWxlIG9u
ZSBicmFuY2ggICAgICAgICAgICAgICAgICAgKgogKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8KIAotLyogU2NhbiB0aGUgcGF0dGVybiwgY29tcGlsaW5n
IGl0IGludG8gdGhlIGNvZGUgdmVjdG9yLiBJZiB0aGUgb3B0aW9ucyBhcmUKLWNoYW5nZWQgZHVy
aW5nIHRoZSBicmFuY2gsIHRoZSBwb2ludGVyIGlzIHVzZWQgdG8gY2hhbmdlIHRoZSBleHRlcm5h
bCBvcHRpb25zCi1iaXRzLgorLyogU2NhbiB0aGUgcGF0dGVybiwgY29tcGlsaW5nIGl0IGludG8g
dGhlIGNvZGUgdmVjdG9yLgogCiBBcmd1bWVudHM6CiAgIG9wdGlvbnMgICAgICAgIHRoZSBvcHRp
b24gYml0cwpAQCAtMTY3MCw3ICsxNjg4LDcgQEAgY29tcGlsZV9icmFuY2goaW50IG9wdGlvbnMs
IGludCogYnJhY2tldAogICAgICAgICAgICAgICAgIHRlbXBjb2RlID0gY29kZTsKICAgICAgICAg
ICAgICAgICB0ZW1wcmVxdmFyeSA9IGNkLnJlcV92YXJ5b3B0OyAgICAgLyogU2F2ZSB2YWx1ZSBi
ZWZvcmUgYnJhY2tldCAqLwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICgh
Y29tcGlsZV9yZWdleCgKKyAgICAgICAgICAgICAgICBpZiAoIWNvbXBpbGVfYnJhY2tldCgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJhY2tldHMsICAgICAgICAgICAgICAgICAgICAgLyogRXh0
cmFjdGluZyBicmFja2V0IGNvdW50ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZ0ZW1wY29kZSwgICAgICAgICAgICAgICAgICAgIC8qIFdoZXJlIHRvIHB1dCBjb2RlICh1
cGRhdGVkKSAqLwpAQCAtMTkwMiw5ICsxOTIwLDkgQEAgUmV0dXJuczogICAgICB0cnVlIG9uIHN1
Y2Nlc3MKICovCiAKIHN0YXRpYyBib29sCi1jb21waWxlX3JlZ2V4KGludCBvcHRpb25zLCBpbnQq
IGJyYWNrZXRzLCB1c2NoYXIqKiBjb2RlcHRyLAotICAgICAgICAgICAgICBjb25zdCBVQ2hhcioq
IHB0cnB0ciwgY29uc3QgVUNoYXIqIHBhdHRlcm5FbmQsIEVycm9yQ29kZSogZXJyb3Jjb2RlcHRy
LCBpbnQgc2tpcGJ5dGVzLAotICAgICAgICAgICAgICBpbnQqIGZpcnN0Ynl0ZXB0ciwgaW50KiBy
ZXFieXRlcHRyLCBDb21waWxlRGF0YSYgY2QpCitjb21waWxlX2JyYWNrZXQoaW50IG9wdGlvbnMs
IGludCogYnJhY2tldHMsIHVzY2hhcioqIGNvZGVwdHIsCisgICAgY29uc3QgVUNoYXIqKiBwdHJw
dHIsIGNvbnN0IFVDaGFyKiBwYXR0ZXJuRW5kLCBFcnJvckNvZGUqIGVycm9yY29kZXB0ciwgaW50
IHNraXBieXRlcywKKyAgICBpbnQqIGZpcnN0Ynl0ZXB0ciwgaW50KiByZXFieXRlcHRyLCBDb21w
aWxlRGF0YSYgY2QpCiB7CiAgICAgY29uc3QgVUNoYXIqIHB0ciA9ICpwdHJwdHI7CiAgICAgdXNj
aGFyKiBjb2RlID0gKmNvZGVwdHI7CkBAIC0yMjE4LDcgKzIyMzYsOCBAQCBzdGF0aWMgaW50IGZp
bmRfZmlyc3Rhc3NlcnRlZGNoYXIoY29uc3QgCiAgICAgcmV0dXJuIGM7CiB9CiAKLXN0YXRpYyBp
bnQgY2FsY3VsYXRlQ29tcGlsZWRQYXR0ZXJuTGVuZ3RoQW5kRmxhZ3MoY29uc3QgVUNoYXIqIHBh
dHRlcm4sIGludCBwYXR0ZXJuTGVuZ3RoLCBKU1JlZ0V4cElnbm9yZUNhc2VPcHRpb24gaWdub3Jl
Q2FzZSwgQ29tcGlsZURhdGEmIGNvbXBpbGVfYmxvY2ssIEVycm9yQ29kZSYgZXJyb3Jjb2RlKQor
c3RhdGljIGludCBjYWxjdWxhdGVDb21waWxlZFBhdHRlcm5MZW5ndGhBbmRGbGFncyhjb25zdCBV
Q2hhciogcGF0dGVybiwgaW50IHBhdHRlcm5MZW5ndGgsIEpTUmVnRXhwSWdub3JlQ2FzZU9wdGlv
biBpZ25vcmVDYXNlLAorICAgIENvbXBpbGVEYXRhJiBjZCwgRXJyb3JDb2RlJiBlcnJvcmNvZGUp
CiB7CiAgICAgLyogTWFrZSBhIHBhc3Mgb3ZlciB0aGUgcGF0dGVybiB0byBjb21wdXRlIHRoZQog
ICAgICBhbW91bnQgb2Ygc3RvcmUgcmVxdWlyZWQgdG8gaG9sZCB0aGUgY29tcGlsZWQgY29kZS4g
VGhpcyBkb2VzIG5vdCBoYXZlIHRvIGJlCkBAIC0yMjMzLDcgKzIyNTIsNiBAQCBzdGF0aWMgaW50
IGNhbGN1bGF0ZUNvbXBpbGVkUGF0dGVybkxlbmd0CiAgICAgdW5zaWduZWQgYnJhc3RhY2twdHIg
PSAwOwogICAgIGludCBicmFzdGFja1tCUkFTVEFDS19TSVpFXTsKICAgICB1c2NoYXIgYnJhbGVu
c3RhY2tbQlJBU1RBQ0tfU0laRV07Ci0gICAgaW50IGl0ZW1fY291bnQgPSAtMTsKICAgICBpbnQg
YnJhY291bnQgPSAwOwogICAgIAogICAgIGNvbnN0IFVDaGFyKiBwdHIgPSAoY29uc3QgVUNoYXIq
KShwYXR0ZXJuIC0gMSk7CkBAIC0yMjQzLDggKzIyNjEsNiBAQCBzdGF0aWMgaW50IGNhbGN1bGF0
ZUNvbXBpbGVkUGF0dGVybkxlbmd0CiAgICAgICAgIGludCBtaW5SZXBlYXRzID0gMCwgbWF4UmVw
ZWF0cyA9IDA7CiAgICAgICAgIGludCBjID0gKnB0cjsKIAotICAgICAgICBpdGVtX2NvdW50Kys7
ICAgIC8qIElzIHplcm8gZm9yIHRoZSBmaXJzdCBub24tY29tbWVudCBpdGVtICovCi0KICAgICAg
ICAgc3dpdGNoIChjKSB7CiAgICAgICAgICAgICAvKiBBIGJhY2tzbGFzaGVkIGl0ZW0gbWF5IGJl
IGFuIGVzY2FwZWQgZGF0YSBjaGFyYWN0ZXIgb3IgaXQgbWF5IGJlIGEKICAgICAgICAgICAgICBj
aGFyYWN0ZXIgdHlwZS4gKi8KQEAgLTIyODAsOSArMjI5Niw5IEBAIHN0YXRpYyBpbnQgY2FsY3Vs
YXRlQ29tcGlsZWRQYXR0ZXJuTGVuZ3QKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBpZiAoYyA8PSAtRVNDX1JFRikgewogICAgICAgICAgICAgICAgICAgICBpbnQgcmVmbnVtID0g
LWMgLSBFU0NfUkVGOwotICAgICAgICAgICAgICAgICAgICBjb21waWxlX2Jsb2NrLmJhY2tyZWZf
bWFwIHw9IChyZWZudW0gPCAzMik/ICgxIDw8IHJlZm51bSkgOiAxOwotICAgICAgICAgICAgICAg
ICAgICBpZiAocmVmbnVtID4gY29tcGlsZV9ibG9jay50b3BfYmFja3JlZikKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbXBpbGVfYmxvY2sudG9wX2JhY2tyZWYgPSByZWZudW07CisgICAgICAg
ICAgICAgICAgICAgIGNkLmJhY2tyZWZfbWFwIHw9IChyZWZudW0gPCAzMik/ICgxIDw8IHJlZm51
bSkgOiAxOworICAgICAgICAgICAgICAgICAgICBpZiAocmVmbnVtID4gY2QudG9wX2JhY2tyZWYp
CisgICAgICAgICAgICAgICAgICAgICAgICBjZC50b3BfYmFja3JlZiA9IHJlZm51bTsKICAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoICs9IDI7ICAgLyogRm9yIHNpbmdsZSBiYWNrIHJlZmVyZW5j
ZSAqLwogICAgICAgICAgICAgICAgICAgICBpZiAoc2FmZWx5Q2hlY2tOZXh0Q2hhcihwdHIsIHBh
dHRlcm5FbmQsICd7JykgJiYgaXNfY291bnRlZF9yZXBlYXQocHRyICsgMiwgcGF0dGVybkVuZCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB0ciA9IHJlYWRfcmVwZWF0X2NvdW50cyhwdHIg
KyAyLCAmbWluUmVwZWF0cywgJm1heFJlcGVhdHMsICZlcnJvcmNvZGUpOwpAQCAtMjM1NSw2ICsy
MzcxLDggQEAgc3RhdGljIGludCBjYWxjdWxhdGVDb21waWxlZFBhdHRlcm5MZW5ndAogICAgICAg
ICAgICAgIGJyYW5jaC4gVGhpcyBpcyBoYW5kbGVkIGJ5IGJyYW5jaF9leHRyYS4gKi8KICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgJ3wnOgorICAgICAgICAgICAgICAgIGlmIChi
cmFzdGFja3B0ciA9PSAwKQorICAgICAgICAgICAgICAgICAgICBjZC5uZWVkT3V0ZXJCcmFja2V0
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBsZW5ndGggKz0gMSArIExJTktfU0laRSArIGJyYW5j
aF9leHRyYTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAKQEAg
LTI3NDcsMTAgKzI3NjUsMTAgQEAgSlNSZWdFeHAqIGpzUmVnRXhwQ29tcGlsZShjb25zdCBVQ2hh
ciogcAogICAgICAgICByZXR1cm4gMDsKICAgICAqZXJyb3JwdHIgPSBOVUxMOwogICAgIAotICAg
IENvbXBpbGVEYXRhIGNvbXBpbGVfYmxvY2s7CisgICAgQ29tcGlsZURhdGEgY2Q7CiAgICAgCiAg
ICAgRXJyb3JDb2RlIGVycm9yY29kZSA9IEVSUjA7Ci0gICAgaW50IGxlbmd0aCA9IGNhbGN1bGF0
ZUNvbXBpbGVkUGF0dGVybkxlbmd0aEFuZEZsYWdzKHBhdHRlcm4sIHBhdHRlcm5MZW5ndGgsIGln
bm9yZUNhc2UsIGNvbXBpbGVfYmxvY2ssIGVycm9yY29kZSk7CisgICAgaW50IGxlbmd0aCA9IGNh
bGN1bGF0ZUNvbXBpbGVkUGF0dGVybkxlbmd0aEFuZEZsYWdzKHBhdHRlcm4sIHBhdHRlcm5MZW5n
dGgsIGlnbm9yZUNhc2UsIGNkLCBlcnJvcmNvZGUpOwogICAgIGlmIChlcnJvcmNvZGUpCiAgICAg
ICAgIHJldHVybiByZXR1cm5FcnJvcihlcnJvcmNvZGUsIGVycm9ycHRyKTsKICAgICAKQEAgLTI3
NjMsMjAgKzI3ODEsMTQgQEAgSlNSZWdFeHAqIGpzUmVnRXhwQ29tcGlsZShjb25zdCBVQ2hhciog
cAogICAgIGlmICghcmUpCiAgICAgICAgIHJldHVybiByZXR1cm5FcnJvcihFUlIxMywgZXJyb3Jw
dHIpOwogICAgIAotICAgIC8qIFB1dCBpbiB0aGUgbWFnaWMgbnVtYmVyLCBhbmQgc2F2ZSB0aGUg
c2l6ZXMsIG9wdGlvbnMsIGFuZCBjaGFyYWN0ZXIgdGFibGUKLSAgICAgcG9pbnRlci4gTlVMTCBp
cyB1c2VkIGZvciB0aGUgZGVmYXVsdCBjaGFyYWN0ZXIgdGFibGVzLiBUaGUgbnVsbHBhZCBmaWVs
ZCBpcyBhdAotICAgICB0aGUgZW5kOyBpdCdzIHRoZXJlIHRvIGhlbHAgaW4gdGhlIGNhc2Ugd2hl
biBhIHJlZ2V4IGNvbXBpbGVkIG9uIGEgc3lzdGVtIHdpdGgKLSAgICAgNC1ieXRlIHBvaW50ZXJz
IGlzIHJ1biBvbiBhbm90aGVyIHdpdGggOC1ieXRlIHBvaW50ZXJzLiAqLwotICAgIAotICAgIHJl
LT5zaXplID0gKHBjcmVfdWludDMyKXNpemU7CiAgICAgcmUtPm9wdGlvbnMgPSAoaWdub3JlQ2Fz
ZSA/IElnbm9yZUNhc2VPcHRpb24gOiAwKSB8IChtdWx0aWxpbmUgPyBNYXRjaEFjcm9zc011bHRp
cGxlTGluZXNPcHRpb24gOiAwKTsKICAgICAKICAgICAvKiBUaGUgc3RhcnRpbmcgcG9pbnRzIG9m
IHRoZSBuYW1lL251bWJlciB0cmFuc2xhdGlvbiB0YWJsZSBhbmQgb2YgdGhlIGNvZGUgYXJlCiAg
ICAgIHBhc3NlZCBhcm91bmQgaW4gdGhlIGNvbXBpbGUgZGF0YSBibG9jay4gKi8KICAgICAKICAg
ICBjb25zdCB1c2NoYXIqIGNvZGVzdGFydCA9IChjb25zdCB1c2NoYXIqKShyZSArIDEpOwotICAg
IGNvbXBpbGVfYmxvY2suc3RhcnRfY29kZSA9IGNvZGVzdGFydDsKLSAgICBjb21waWxlX2Jsb2Nr
LnN0YXJ0X3BhdHRlcm4gPSAoY29uc3QgVUNoYXIqKXBhdHRlcm47CisgICAgY2Quc3RhcnRfY29k
ZSA9IGNvZGVzdGFydDsKKyAgICBjZC5zdGFydF9wYXR0ZXJuID0gKGNvbnN0IFVDaGFyKilwYXR0
ZXJuOwogICAgIAogICAgIC8qIFNldCB1cCBhIHN0YXJ0aW5nLCBub24tZXh0cmFjdGluZyBicmFj
a2V0LCB0aGVuIGNvbXBpbGUgdGhlIGV4cHJlc3Npb24uIE9uCiAgICAgIGVycm9yLCBlcnJvcmNv
ZGUgd2lsbCBiZSBzZXQgbm9uLXplcm8sIHNvIHdlIGRvbid0IG5lZWQgdG8gbG9vayBhdCB0aGUg
cmVzdWx0CkBAIC0yNzg1LDE0ICsyNzk3LDE2IEBAIEpTUmVnRXhwKiBqc1JlZ0V4cENvbXBpbGUo
Y29uc3QgVUNoYXIqIHAKICAgICBjb25zdCBVQ2hhciogcHRyID0gKGNvbnN0IFVDaGFyKilwYXR0
ZXJuOwogICAgIGNvbnN0IFVDaGFyKiBwYXR0ZXJuRW5kID0gcGF0dGVybiArIHBhdHRlcm5MZW5n
dGg7CiAgICAgdXNjaGFyKiBjb2RlID0gKHVzY2hhciopY29kZXN0YXJ0OwotICAgICpjb2RlID0g
T1BfQlJBOwogICAgIGludCBmaXJzdGJ5dGUsIHJlcWJ5dGU7CiAgICAgaW50IGJyYWNrZXRDb3Vu
dCA9IDA7Ci0gICAgKHZvaWQpY29tcGlsZV9yZWdleChyZS0+b3B0aW9ucywgJmJyYWNrZXRDb3Vu
dCwgJmNvZGUsICZwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuRW5kLAotICAg
ICAgICAgICAgICAgICAgICAgICAgJmVycm9yY29kZSwgMCwgJmZpcnN0Ynl0ZSwgJnJlcWJ5dGUs
IGNvbXBpbGVfYmxvY2spOworICAgIGlmICghY2QubmVlZE91dGVyQnJhY2tldCkKKyAgICAgICAg
Y29tcGlsZV9icmFuY2gocmUtPm9wdGlvbnMsICZicmFja2V0Q291bnQsICZjb2RlLCAmcHRyLCBw
YXR0ZXJuRW5kLCAmZXJyb3Jjb2RlLCAmZmlyc3RieXRlLCAmcmVxYnl0ZSwgY2QpOworICAgIGVs
c2UgeworICAgICAgICAqY29kZSA9IE9QX0JSQTsKKyAgICAgICAgY29tcGlsZV9icmFja2V0KHJl
LT5vcHRpb25zLCAmYnJhY2tldENvdW50LCAmY29kZSwgJnB0ciwgcGF0dGVybkVuZCwgJmVycm9y
Y29kZSwgMCwgJmZpcnN0Ynl0ZSwgJnJlcWJ5dGUsIGNkKTsKKyAgICB9CiAgICAgcmUtPnRvcF9i
cmFja2V0ID0gYnJhY2tldENvdW50OwotICAgIHJlLT50b3BfYmFja3JlZiA9IGNvbXBpbGVfYmxv
Y2sudG9wX2JhY2tyZWY7CisgICAgcmUtPnRvcF9iYWNrcmVmID0gY2QudG9wX2JhY2tyZWY7CiAg
ICAgCiAgICAgLyogSWYgbm90IHJlYWNoZWQgZW5kIG9mIHBhdHRlcm4gb24gc3VjY2VzcywgdGhl
cmUncyBhbiBleGNlc3MgYnJhY2tldC4gKi8KICAgICAKQEAgLTI4MzEsNyArMjg0NSw3IEBAIEpT
UmVnRXhwKiBqc1JlZ0V4cENvbXBpbGUoY29uc3QgVUNoYXIqIHAKICAgICAgc3RhcnQgd2l0aCBe
LiBhbmQgYWxzbyB3aGVuIGFsbCBicmFuY2hlcyBzdGFydCB3aXRoIC4qIGZvciBub24tRE9UQUxM
IG1hdGNoZXMuCiAgICAgICovCiAgICAgCi0gICAgaWYgKGlzX2FuY2hvcmVkKGNvZGVzdGFydCwg
cmUtPm9wdGlvbnMsIDAsIGNvbXBpbGVfYmxvY2suYmFja3JlZl9tYXApKQorICAgIGlmIChpc19h
bmNob3JlZChjb2Rlc3RhcnQsIHJlLT5vcHRpb25zLCAwLCBjZC5iYWNrcmVmX21hcCkpCiAgICAg
ICAgIHJlLT5vcHRpb25zIHw9IElzQW5jaG9yZWRPcHRpb247CiAgICAgZWxzZSB7CiAgICAgICAg
IGlmIChmaXJzdGJ5dGUgPCAwKQpAQCAtMjg0NCw3ICsyODU4LDcgQEAgSlNSZWdFeHAqIGpzUmVn
RXhwQ29tcGlsZShjb25zdCBVQ2hhciogcAogICAgICAgICAgICAgICAgIHJlLT5vcHRpb25zIHw9
IFVzZUZpcnN0Qnl0ZU9wdGltaXphdGlvbk9wdGlvbjsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICBlbHNlIGlmIChjYW5BcHBseUZpcnN0Q2hhck9wdGltaXphdGlvbihjb2Rlc3Rh
cnQsIDAsIGNvbXBpbGVfYmxvY2suYmFja3JlZl9tYXApKQorICAgICAgICBlbHNlIGlmIChjYW5B
cHBseUZpcnN0Q2hhck9wdGltaXphdGlvbihjb2Rlc3RhcnQsIDAsIGNkLmJhY2tyZWZfbWFwKSkK
ICAgICAgICAgICAgIHJlLT5vcHRpb25zIHw9IFVzZU11bHRpTGluZUZpcnN0Qnl0ZU9wdGltaXph
dGlvbk9wdGlvbjsKICAgICB9CiAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVf
aW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfaW50ZXJu
YWwuaAkocmV2aXNpb24gMjg1MDgpCisrKyBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfaW50ZXJu
YWwuaAkod29ya2luZyBjb3B5KQpAQCAtNDQyLDcgKzQ0Miw2IEBAIHBvaW50ZXIgdGhhdCBpcyBh
bHdheXMgTlVMTC4KICovCiAKIHN0cnVjdCBKU1JlZ0V4cCB7Ci0gICAgcGNyZV91aW50MzIgc2l6
ZTsgICAgICAgICAgICAgICAvKiBUb3RhbCB0aGF0IHdhcyBtYWxsb2NlZCAqLwogICAgIHBjcmVf
dWludDMyIG9wdGlvbnM7CiAKICAgICBwY3JlX3VpbnQxNiB0b3BfYnJhY2tldDsKQEAgLTUwNCwy
NCArNTAzLDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzU3BhY2VDaGFyKFVDaGFyIGMpCiAgICAg
cmV0dXJuIChjIDwgMTI4ICYmIChjaGFyVHlwZUZvckNoYXIoYykgJiBjdHlwZV9zcGFjZSkpOwog
fQogCi0vKiBTdHJ1Y3R1cmUgZm9yIHBhc3NpbmcgInN0YXRpYyIgaW5mb3JtYXRpb24gYXJvdW5k
IGJldHdlZW4gdGhlIGZ1bmN0aW9ucwotZG9pbmcgdGhlIGNvbXBpbGluZywgc28gdGhhdCB0aGV5
IGFyZSB0aHJlYWQtc2FmZS4gKi8KLQotc3RydWN0IENvbXBpbGVEYXRhIHsKLSAgICBDb21waWxl
RGF0YSgpIHsKLSAgICAgICAgc3RhcnRfY29kZSA9IDA7Ci0gICAgICAgIHN0YXJ0X3BhdHRlcm4g
PSAwOwotICAgICAgICB0b3BfYmFja3JlZiA9IDA7Ci0gICAgICAgIGJhY2tyZWZfbWFwID0gMDsK
LSAgICAgICAgcmVxX3ZhcnlvcHQgPSAwOwotICAgIH0KLSAgY29uc3QgdXNjaGFyKiBzdGFydF9j
b2RlOyAgICAgLyogVGhlIHN0YXJ0IG9mIHRoZSBjb21waWxlZCBjb2RlICovCi0gIGNvbnN0IFVD
aGFyKiBzdGFydF9wYXR0ZXJuOyAgIC8qIFRoZSBzdGFydCBvZiB0aGUgcGF0dGVybiAqLwotICBp
bnQgIHRvcF9iYWNrcmVmOyAgICAgICAgICAgICAvKiBNYXhpbXVtIGJhY2sgcmVmZXJlbmNlICov
Ci0gIHVuc2lnbmVkIGJhY2tyZWZfbWFwOyAgICAgLyogQml0bWFwIG9mIGxvdyBiYWNrIHJlZnMg
Ki8KLSAgaW50ICByZXFfdmFyeW9wdDsgICAgICAgICAgICAgLyogIkFmdGVyIHZhcmlhYmxlIGl0
ZW0iIGZsYWcgZm9yIHJlcWJ5dGUgKi8KLX07Ci0KIC8qIEludGVybmFsIHNoYXJlZCBmdW5jdGlv
bnMuIFRoZXNlIGFyZSBmdW5jdGlvbnMgdGhhdCBhcmUgdXNlZCBieSBtb3JlIHRoYW4KIG9uZSBv
ZiB0aGUgZXhwb3J0ZWQgcHVibGljIGZ1bmN0aW9ucy4gVGhleSBoYXZlIHRvIGJlICJleHRlcm5h
bCIgaW4gdGhlIEMKIHNlbnNlLCBidXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQQ1JFIHB1YmxpYyBB
UEkuICovCg==
</data>
<flag name="review"
          id="7650"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>