<?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>47007</bug_id>
          
          <creation_ts>2010-10-01 12:15:53 -0700</creation_ts>
          <short_desc>ARMv7 JIT should take advantage of 2-byte branches to reduce code size</short_desc>
          <delta_ts>2010-10-04 22:57:09 -0700</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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="David Goodwin">david_goodwin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288403</commentid>
    <comment_count>0</comment_count>
    <who name="David Goodwin">david_goodwin</who>
    <bug_when>2010-10-01 12:15:53 -0700</bug_when>
    <thetext>ARMv7 JIT currently uses only 4-byte versions of branch. It should also use the 2-byte version when target is in range.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288409</commentid>
    <comment_count>1</comment_count>
      <attachid>69500</attachid>
    <who name="David Goodwin">david_goodwin</who>
    <bug_when>2010-10-01 12:22:05 -0700</bug_when>
    <thetext>Created attachment 69500
Patch: Use 2-byte branches when possible in ARMv7 JIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288410</commentid>
    <comment_count>2</comment_count>
    <who name="David Goodwin">david_goodwin</who>
    <bug_when>2010-10-01 12:22:55 -0700</bug_when>
    <thetext>Patch was tested with run-javascriptcore-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288411</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-01 12:23:36 -0700</bug_when>
    <thetext>Attachment 69500 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/assembler/ARMv7Assembler.h:1738:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289011</commentid>
    <comment_count>4</comment_count>
      <attachid>69500</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-04 11:11:34 -0700</bug_when>
    <thetext>Comment on attachment 69500
Patch: Use 2-byte branches when possible in ARMv7 JIT.

View in context: https://bugs.webkit.org/attachment.cgi?id=69500&amp;action=review

Patch basically looks good, we should just do that rename and fix the style issues before landing.

&gt; JavaScriptCore/assembler/ARMv7Assembler.h:2
&gt; - * Copyright (C) 2009 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

I believe this change should be to 2009, 2010

&gt; JavaScriptCore/assembler/ARMv7Assembler.h:483
&gt; -    enum JumpLinkType { LinkInvalid, LinkShortJump, LinkConditionalShortJump, LinkLongJump, JumpTypeCount };
&gt; +    enum JumpLinkType { LinkInvalid, LinkSmallestJump, LinkConditionalSmallestJump, 
&gt; +        LinkShortJump, LinkConditionalShortJump, LinkLongJump, JumpTypeCount };

These should be changes to be more technically specific -&gt; LinkJumpT2, LinkConditionalJumpT2, LinkJumpT4, LinkConditionalJumpT4, LinkBX

I think it makes sense to do that rename as part of this patch so we aren&apos;t having this Small vs. Smallest jump stuff which i suspect will only become more confusing in future

&gt; JavaScriptCore/assembler/ARMv7Assembler.h:1752
&gt; +        switch (linkType) {
&gt; +            case LinkSmallestJump:
&gt; +            case LinkConditionalSmallestJump:
&gt; +                linkSmallestJump(reinterpret_cast&lt;uint16_t*&gt;(from), to);
&gt; +                break;
&gt; +            case LinkShortJump:
&gt; +            case LinkConditionalShortJump:
&gt; +                linkShortJump(reinterpret_cast&lt;uint16_t*&gt;(from), to);
&gt; +                break;
&gt; +            case LinkLongJump:
&gt; +                linkLongJump(reinterpret_cast&lt;uint16_t*&gt;(from), to);
&gt; +                break;
&gt; +            default:
&gt; +                ASSERT(false);
&gt; +                break;
&gt; +        }

Webkit style is not to indent the case labels from the switch statement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289039</commentid>
    <comment_count>5</comment_count>
      <attachid>69656</attachid>
    <who name="David Goodwin">david_goodwin</who>
    <bug_when>2010-10-04 11:54:23 -0700</bug_when>
    <thetext>Created attachment 69656
Updated patch addressing reviewer comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289044</commentid>
    <comment_count>6</comment_count>
      <attachid>69656</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-04 11:58:45 -0700</bug_when>
    <thetext>Comment on attachment 69656
Updated patch addressing reviewer comments.

View in context: https://bugs.webkit.org/attachment.cgi?id=69656&amp;action=review

Just those two changes and then i&apos;ll r and cq+ this

&gt; JavaScriptCore/assembler/ARMv7Assembler.h:2
&gt; + * Copyright (C) 2009,2010 Apple Inc. All rights reserved.

should be a space here

&gt; JavaScriptCore/assembler/ARMv7Assembler.h:1750
&gt; +            ASSERT(false);

This should be ASSERT_NOT_REACHED();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289072</commentid>
    <comment_count>7</comment_count>
      <attachid>69668</attachid>
    <who name="David Goodwin">david_goodwin</who>
    <bug_when>2010-10-04 12:24:47 -0700</bug_when>
    <thetext>Created attachment 69668
patch tweaks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289077</commentid>
    <comment_count>8</comment_count>
      <attachid>69668</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-04 12:30:42 -0700</bug_when>
    <thetext>Comment on attachment 69668
patch tweaks

r=me, should be committed automatically in a wee while</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289456</commentid>
    <comment_count>9</comment_count>
      <attachid>69668</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-04 22:57:04 -0700</bug_when>
    <thetext>Comment on attachment 69668
patch tweaks

Clearing flags on attachment: 69668

Committed r69080: &lt;http://trac.webkit.org/changeset/69080&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289457</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-04 22:57:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69500</attachid>
            <date>2010-10-01 12:22:05 -0700</date>
            <delta_ts>2010-10-04 11:54:23 -0700</delta_ts>
            <desc>Patch: Use 2-byte branches when possible in ARMv7 JIT.</desc>
            <filename>jsc.txt</filename>
            <type>text/plain</type>
            <size>7136</size>
            <attacher name="David Goodwin">david_goodwin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY4OTA2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMTAtMDEgIERhdmlkIEdv
b2R3aW4gIDxkYXZpZF9nb29kd2luQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVJNIEpJVCBzdXBwb3J0IGZvciAyLWJ5dGUg
YnJhbmNoZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzAwNworCisgICAgICAgICogYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmNwcDoKKyAgICAg
ICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNdjdBc3Nl
bWJsZXI6OmNvbXB1dGVKdW1wVHlwZSk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjps
aW5rKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmNhbkJlU21hbGxlc3RKdW1wKToK
KyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmxpbmtTbWFsbGVzdEp1bXApOgorCiAyMDEw
LTEwLTAxICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BUk12N0Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTXY3QXNzZW1ibGVyLmNwcAkocmV2aXNpb24gNjg4MzApCisrKyBKYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBpbnQgQVJNdjdBc3NlbWJsZXI6Okp1
bXBTaXplc1tdID0geyAweGZmZmZmZmZmLCAyICogc2l6ZW9mKHVpbnQxNl90KSwgMiAqIHNpemVv
Zih1aW50MTZfdCksIDUgKiBzaXplb2YodWludDE2X3QpIH07Citjb25zdCBpbnQgQVJNdjdBc3Nl
bWJsZXI6Okp1bXBTaXplc1tdID0geyAweGZmZmZmZmZmLCBzaXplb2YodWludDE2X3QpLCBzaXpl
b2YodWludDE2X3QpLAorICAgIDIgKiBzaXplb2YodWludDE2X3QpLCAyICogc2l6ZW9mKHVpbnQx
Nl90KSwgNSAqIHNpemVvZih1aW50MTZfdCkgfTsKIAogfQogCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAkocmV2aXNpb24gNjg4MzApCisrKyBKYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtNDc5LDcgKzQ3OSw4IEBAIHB1YmxpYzoKICAgICB9IENvbmRpdGlv
bjsKIAogICAgIGVudW0gSnVtcFR5cGUgeyBKdW1wTm9Db25kaXRpb24sIEp1bXBDb25kaXRpb24s
IEp1bXBGdWxsU2l6ZSB9OwotICAgIGVudW0gSnVtcExpbmtUeXBlIHsgTGlua0ludmFsaWQsIExp
bmtTaG9ydEp1bXAsIExpbmtDb25kaXRpb25hbFNob3J0SnVtcCwgTGlua0xvbmdKdW1wLCBKdW1w
VHlwZUNvdW50IH07CisgICAgZW51bSBKdW1wTGlua1R5cGUgeyBMaW5rSW52YWxpZCwgTGlua1Nt
YWxsZXN0SnVtcCwgTGlua0NvbmRpdGlvbmFsU21hbGxlc3RKdW1wLCAKKyAgICAgICAgTGlua1No
b3J0SnVtcCwgTGlua0NvbmRpdGlvbmFsU2hvcnRKdW1wLCBMaW5rTG9uZ0p1bXAsIEp1bXBUeXBl
Q291bnQgfTsKICAgICBzdGF0aWMgY29uc3QgaW50IEp1bXBTaXplc1tKdW1wVHlwZUNvdW50XTsK
ICAgICBlbnVtIHsgSnVtcFBhZGRpbmdTaXplID0gNSAqIHNpemVvZih1aW50MTZfdCkgfTsKICAg
ICBjbGFzcyBMaW5rUmVjb3JkIHsKQEAgLTYyOCw2ICs2MjksNyBAQCBwcml2YXRlOgogICAgIH0g
T3Bjb2RlSUQ7CiAKICAgICB0eXBlZGVmIGVudW0geworICAgICAgICBPUF9CX1QyICAgICAgICAg
PSAweEUwMDAsCiAgICAgICAgIE9QX0FORF9yZWdfVDIgICA9IDB4RUEwMCwKICAgICAgICAgT1Bf
VFNUX3JlZ19UMiAgID0gMHhFQTEwLAogICAgICAgICBPUF9PUlJfcmVnX1QyICAgPSAweEVBNDAs
CkBAIC0xNjgyLDYgKzE2ODQsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgcmVjb3JkLnNldExp
bmtUeXBlKExpbmtMb25nSnVtcCk7CiAgICAgICAgICAgICByZXR1cm4gTGlua0xvbmdKdW1wOwog
ICAgICAgICB9CisgICAgICAgIGNvbnN0IHVpbnQxNl90KiBzbWFsbGVzdEp1bXBMb2NhdGlvbiA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihmcm9tICAtIChKdW1wUGFkZGluZ1Np
emUgLSBKdW1wU2l6ZXNbTGlua1NtYWxsZXN0SnVtcF0pKTsKKyAgICAgICAgaWYgKGNhbkJlU21h
bGxlc3RKdW1wKHNtYWxsZXN0SnVtcExvY2F0aW9uLCB0bykpIHsKKyAgICAgICAgICAgIGlmIChy
ZWNvcmQudHlwZSgpID09IEp1bXBDb25kaXRpb24pIHsKKyAgICAgICAgICAgICAgICByZWNvcmQu
c2V0TGlua1R5cGUoTGlua0NvbmRpdGlvbmFsU21hbGxlc3RKdW1wKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTGlua0NvbmRpdGlvbmFsU21hbGxlc3RKdW1wOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmVjb3JkLnNldExpbmtUeXBlKExpbmtTbWFsbGVzdEp1bXApOworICAgICAgICAg
ICAgcmV0dXJuIExpbmtTbWFsbGVzdEp1bXA7CisgICAgICAgIH0KICAgICAgICAgYm9vbCBtYXlU
cmlnZ2VyRXJyYXRhID0gZmFsc2U7CiAgICAgICAgIGNvbnN0IHVpbnQxNl90KiBzaG9ydEp1bXBM
b2NhdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihmcm9tICAtIChKdW1w
UGFkZGluZ1NpemUgLSBKdW1wU2l6ZXNbTGlua1Nob3J0SnVtcF0pKTsKICAgICAgICAgaWYgKCFj
YW5CZVNob3J0SnVtcChzaG9ydEp1bXBMb2NhdGlvbiwgdG8sIG1heVRyaWdnZXJFcnJhdGEpKSB7
CkBAIC0xNzE3LDE2ICsxNzI4LDI4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbGluayhMaW5rUmVj
b3JkJiByZWNvcmQsIHVpbnQ4X3QqIGZyb20sIHVpbnQ4X3QqIHRvKQogICAgIHsKLSAgICAgICAg
dWludDE2X3QqIGl0dHRMb2NhdGlvbjsKLSAgICAgICAgaWYgKHJlY29yZC5saW5rVHlwZSgpID09
IExpbmtDb25kaXRpb25hbFNob3J0SnVtcCkgewotICAgICAgICAgICAgaXR0dExvY2F0aW9uID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20gLSBKdW1wU2l6ZXNbTGlua0NvbmRpdGlv
bmFsU2hvcnRKdW1wXSAtIDIpOworICAgICAgICBKdW1wTGlua1R5cGUgbGlua1R5cGUgPSByZWNv
cmQubGlua1R5cGUoKTsKKyAgICAgICAgQVNTRVJUKGxpbmtUeXBlICE9IExpbmtJbnZhbGlkKTsK
KyAgICAgICAgaWYgKChsaW5rVHlwZSA9PSBMaW5rQ29uZGl0aW9uYWxTbWFsbGVzdEp1bXApIHx8
IChsaW5rVHlwZSA9PSBMaW5rQ29uZGl0aW9uYWxTaG9ydEp1bXApKSB7CisgICAgICAgICAgICB1
aW50MTZfdCogaXR0dExvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20g
LSBKdW1wU2l6ZXNbbGlua1R5cGVdIC0gMik7CiAgICAgICAgICAgICBpdHR0TG9jYXRpb25bMF0g
PSBpZlRoZW5FbHNlKHJlY29yZC5jb25kaXRpb24oKSkgfCBPUF9JVDsKICAgICAgICAgfQotICAg
ICAgICBBU1NFUlQocmVjb3JkLmxpbmtUeXBlKCkgIT0gTGlua0ludmFsaWQpOwotICAgICAgICBp
ZiAocmVjb3JkLmxpbmtUeXBlKCkgIT0gTGlua0xvbmdKdW1wKQotICAgICAgICAgICAgbGlua1No
b3J0SnVtcChyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZnJvbSksIHRvKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbGlua0xvbmdKdW1wKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3Qq
Pihmcm9tKSwgdG8pOworICAgICAgICBzd2l0Y2ggKGxpbmtUeXBlKSB7CisgICAgICAgICAgICBj
YXNlIExpbmtTbWFsbGVzdEp1bXA6CisgICAgICAgICAgICBjYXNlIExpbmtDb25kaXRpb25hbFNt
YWxsZXN0SnVtcDoKKyAgICAgICAgICAgICAgICBsaW5rU21hbGxlc3RKdW1wKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDE2X3QqPihmcm9tKSwgdG8pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBMaW5rU2hvcnRKdW1wOgorICAgICAgICAgICAgY2FzZSBMaW5rQ29uZGl0
aW9uYWxTaG9ydEp1bXA6CisgICAgICAgICAgICAgICAgbGlua1Nob3J0SnVtcChyZWludGVycHJl
dF9jYXN0PHVpbnQxNl90Kj4oZnJvbSksIHRvKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgTGlua0xvbmdKdW1wOgorICAgICAgICAgICAgICAgIGxpbmtMb25nSnVt
cChyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZnJvbSksIHRvKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUKGZh
bHNlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZv
aWQqIHVubGlua2VkQ29kZSgpIHsgcmV0dXJuIG1fZm9ybWF0dGVyLmRhdGEoKTsgfQpAQCAtMTk0
Niw2ICsxOTY5LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiAoaW5zdHJ1Y3Rpb25bMF0g
PT0gT1BfTk9QX1QyYSkgJiYgKGluc3RydWN0aW9uWzFdID09IE9QX05PUF9UMmIpOwogICAgIH0K
IAorICAgIHN0YXRpYyBib29sIGNhbkJlU21hbGxlc3RKdW1wKGNvbnN0IHVpbnQxNl90KiBpbnN0
cnVjdGlvbiwgY29uc3Qgdm9pZCogdGFyZ2V0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEocmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5zdHJ1Y3Rpb24pICYgMSkpOworICAgICAgICBBU1NF
UlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0YXJnZXQpICYgMSkpOworICAgICAgICAK
KyAgICAgICAgaW50cHRyX3QgcmVsYXRpdmUgPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0
YXJnZXQpIC0gKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0aW9uKSk7CisgICAg
ICAgIC8vIEl0IGRvZXMgbm90IGFwcGVhciB0byBiZSBkb2N1bWVudGVkIGluIHRoZSBBUk0gQVJN
IChiaWcgc3VycHJpc2UpLCBidXQKKyAgICAgICAgLy8gZm9yIE9QX0JfVDIgdGhlIGJyYW5jaCBk
aXNwbGFjZW1lbnQgZW5jb2RlZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gaXMgMiAKKyAgICAgICAgLy8g
bGVzcyB0aGFuIHRoZSBhY3R1YWwgZGlzcGxhY2VtZW50LgorICAgICAgICByZWxhdGl2ZSAtPSAy
OworICAgICAgICByZXR1cm4gKChyZWxhdGl2ZSA8PCAyMCkgPj4gMjApID09IHJlbGF0aXZlOwor
ICAgIH0KKyAgICAKICAgICBzdGF0aWMgYm9vbCBjYW5CZVNob3J0SnVtcChjb25zdCB1aW50MTZf
dCogaW5zdHJ1Y3Rpb24sIGNvbnN0IHZvaWQqIHRhcmdldCwgYm9vbCYgbWF5VHJpZ2dlckVycmF0
YSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGlu
c3RydWN0aW9uKSAmIDEpKTsKQEAgLTE5OTIsNiArMjAyOCwyNCBAQCBwcml2YXRlOgogICAgICAg
ICBpbnN0cnVjdGlvblstMV0gPSBPUF9CX1Q0YiB8ICgocmVsYXRpdmUgJiAweDgwMDAwMCkgPj4g
MTApIHwgKChyZWxhdGl2ZSAmIDB4NDAwMDAwKSA+PiAxMSkgfCAoKHJlbGF0aXZlICYgMHhmZmUp
ID4+IDEpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIGxpbmtTbWFsbGVzdEp1bXAodWludDE2
X3QqIGluc3RydWN0aW9uLCB2b2lkKiB0YXJnZXQpCisgICAgeworICAgICAgICAvLyBGSU1YRTog
dGhpcyBzaG91bGQgYmUgdXAgaW4gdGhlIE1hY3JvQXNzZW1ibGVyIGxheWVyLiA6LSggICAgICAg
IAorICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90PihpbnN0cnVjdGlv
bikgJiAxKSk7CisgICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRh
cmdldCkgJiAxKSk7CisgICAgICAgIEFTU0VSVChjYW5CZVNtYWxsZXN0SnVtcChpbnN0cnVjdGlv
biwgdGFyZ2V0KSk7CisgICAgICAgIAorICAgICAgICBpbnRwdHJfdCByZWxhdGl2ZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRhcmdldCkgLSAocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4oaW5zdHJ1Y3Rpb24pKTsKKyAgICAgICAgLy8gSXQgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGRv
Y3VtZW50ZWQgaW4gdGhlIEFSTSBBUk0gKGJpZyBzdXJwcmlzZSksIGJ1dAorICAgICAgICAvLyBm
b3IgT1BfQl9UMiB0aGUgYnJhbmNoIGRpc3BsYWNlbWVudCBlbmNvZGVkIGluIHRoZSBpbnN0cnVj
dGlvbiBpcyAyIAorICAgICAgICAvLyBsZXNzIHRoYW4gdGhlIGFjdHVhbCBkaXNwbGFjZW1lbnQu
CisgICAgICAgIHJlbGF0aXZlIC09IDI7CisgICAgICAgIAorICAgICAgICAvLyBBbGwgYnJhbmNo
IG9mZnNldHMgc2hvdWxkIGJlIGFuIGV2ZW4gZGlzdGFuY2UuCisgICAgICAgIEFTU0VSVCghKHJl
bGF0aXZlICYgMSkpOworICAgICAgICBpbnN0cnVjdGlvblstMV0gPSBPUF9CX1QyIHwgKChyZWxh
dGl2ZSAmIDB4ZmZlKSA+PiAxKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIHZvaWQgbGlua0p1
bXBBYnNvbHV0ZSh1aW50MTZfdCogaW5zdHJ1Y3Rpb24sIHZvaWQqIHRhcmdldCkKICAgICB7CiAg
ICAgICAgIC8vIEZJTVhFOiB0aGlzIHNob3VsZCBiZSB1cCBpbiB0aGUgTWFjcm9Bc3NlbWJsZXIg
bGF5ZXIuIDotKAo=
</data>
<flag name="review"
          id="59205"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69656</attachid>
            <date>2010-10-04 11:54:23 -0700</date>
            <delta_ts>2010-10-04 12:24:47 -0700</delta_ts>
            <desc>Updated patch addressing reviewer comments.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10070</size>
            <attacher name="David Goodwin">david_goodwin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5MDIzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMTAtMDQgIERhdmlkIEdv
b2R3aW4gIDxkYXZpZF9nb29kd2luQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUk12NyBKSVQgc2hvdWxkIHRha2UgYWR2YW50YWdl
IG9mIDItYnl0ZSBicmFuY2hlcyB0byByZWR1Y2UgY29kZSBzaXplCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzAwNworCisgICAgICAgICogYXNzZW1i
bGVyL0FSTXY3QXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmNvbXB1dGVKdW1wVHlwZSk6Cisg
ICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6QVJNdjdB
c3NlbWJsZXI6OmNhbkJlSnVtcFQyKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmNh
bkJlSnVtcFQ0KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmxpbmtCWCk6CisgICAg
ICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rSnVtcFQ0KToKKyAgICAgICAgKEpTQzo6QVJN
djdBc3NlbWJsZXI6OmxpbmtKdW1wVDIpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6
bGlua0p1bXBBYnNvbHV0ZSk6CisKIDIwMTAtMTAtMDEgIFByYXRpayBTb2xhbmtpICA8cHNvbGFu
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuY3BwCShyZXZpc2lv
biA2OTAyMikKKysrIEphdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNv
bnN0IGludCBBUk12N0Fzc2VtYmxlcjo6SnVtcFNpemVzW10gPSB7IDB4ZmZmZmZmZmYsIDIgKiBz
aXplb2YodWludDE2X3QpLCAyICogc2l6ZW9mKHVpbnQxNl90KSwgNSAqIHNpemVvZih1aW50MTZf
dCkgfTsKK2NvbnN0IGludCBBUk12N0Fzc2VtYmxlcjo6SnVtcFNpemVzW10gPSB7IDB4ZmZmZmZm
ZmYsIHNpemVvZih1aW50MTZfdCksIHNpemVvZih1aW50MTZfdCksCisgICAgMiAqIHNpemVvZih1
aW50MTZfdCksIDIgKiBzaXplb2YodWludDE2X3QpLCA1ICogc2l6ZW9mKHVpbnQxNl90KSB9Owog
CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShy
ZXZpc2lvbiA2OTAyMikKKysrIEphdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDksMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ3OSw3ICs0
NzksOCBAQCBwdWJsaWM6CiAgICAgfSBDb25kaXRpb247CiAKICAgICBlbnVtIEp1bXBUeXBlIHsg
SnVtcE5vQ29uZGl0aW9uLCBKdW1wQ29uZGl0aW9uLCBKdW1wRnVsbFNpemUgfTsKLSAgICBlbnVt
IEp1bXBMaW5rVHlwZSB7IExpbmtJbnZhbGlkLCBMaW5rU2hvcnRKdW1wLCBMaW5rQ29uZGl0aW9u
YWxTaG9ydEp1bXAsIExpbmtMb25nSnVtcCwgSnVtcFR5cGVDb3VudCB9OworICAgIGVudW0gSnVt
cExpbmtUeXBlIHsgTGlua0ludmFsaWQsIExpbmtKdW1wVDIsIExpbmtDb25kaXRpb25hbEp1bXBU
MiwgCisgICAgICAgIExpbmtKdW1wVDQsIExpbmtDb25kaXRpb25hbEp1bXBUNCwgTGlua0JYLCBK
dW1wVHlwZUNvdW50IH07CiAgICAgc3RhdGljIGNvbnN0IGludCBKdW1wU2l6ZXNbSnVtcFR5cGVD
b3VudF07CiAgICAgZW51bSB7IEp1bXBQYWRkaW5nU2l6ZSA9IDUgKiBzaXplb2YodWludDE2X3Qp
IH07CiAgICAgY2xhc3MgTGlua1JlY29yZCB7CkBAIC02MjgsNiArNjI5LDcgQEAgcHJpdmF0ZToK
ICAgICB9IE9wY29kZUlEOwogCiAgICAgdHlwZWRlZiBlbnVtIHsKKyAgICAgICAgT1BfQl9UMiAg
ICAgICAgID0gMHhFMDAwLAogICAgICAgICBPUF9BTkRfcmVnX1QyICAgPSAweEVBMDAsCiAgICAg
ICAgIE9QX1RTVF9yZWdfVDIgICA9IDB4RUExMCwKICAgICAgICAgT1BfT1JSX3JlZ19UMiAgID0g
MHhFQTQwLApAQCAtMTY3OSwyNSArMTY4MSwzNCBAQCBwdWJsaWM6CiAgICAgSnVtcExpbmtUeXBl
IGNvbXB1dGVKdW1wVHlwZShMaW5rUmVjb3JkJiByZWNvcmQsIGNvbnN0IHVpbnQ4X3QqIGZyb20s
IGNvbnN0IHVpbnQ4X3QqIHRvKQogICAgIHsKICAgICAgICAgaWYgKHJlY29yZC50eXBlKCkgPj0g
SnVtcEZ1bGxTaXplKSB7Ci0gICAgICAgICAgICByZWNvcmQuc2V0TGlua1R5cGUoTGlua0xvbmdK
dW1wKTsKLSAgICAgICAgICAgIHJldHVybiBMaW5rTG9uZ0p1bXA7CisgICAgICAgICAgICByZWNv
cmQuc2V0TGlua1R5cGUoTGlua0JYKTsKKyAgICAgICAgICAgIHJldHVybiBMaW5rQlg7CisgICAg
ICAgIH0KKyAgICAgICAgY29uc3QgdWludDE2X3QqIGp1bXBUMkxvY2F0aW9uID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGZyb20gIC0gKEp1bXBQYWRkaW5nU2l6ZSAtIEp1bXBT
aXplc1tMaW5rSnVtcFQyXSkpOworICAgICAgICBpZiAoY2FuQmVKdW1wVDIoanVtcFQyTG9jYXRp
b24sIHRvKSkgeworICAgICAgICAgICAgaWYgKHJlY29yZC50eXBlKCkgPT0gSnVtcENvbmRpdGlv
bikgeworICAgICAgICAgICAgICAgIHJlY29yZC5zZXRMaW5rVHlwZShMaW5rQ29uZGl0aW9uYWxK
dW1wVDIpOworICAgICAgICAgICAgICAgIHJldHVybiBMaW5rQ29uZGl0aW9uYWxKdW1wVDI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZWNvcmQuc2V0TGlua1R5cGUoTGlua0p1bXBUMik7
CisgICAgICAgICAgICByZXR1cm4gTGlua0p1bXBUMjsKICAgICAgICAgfQogICAgICAgICBib29s
IG1heVRyaWdnZXJFcnJhdGEgPSBmYWxzZTsKLSAgICAgICAgY29uc3QgdWludDE2X3QqIHNob3J0
SnVtcExvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGZyb20gIC0g
KEp1bXBQYWRkaW5nU2l6ZSAtIEp1bXBTaXplc1tMaW5rU2hvcnRKdW1wXSkpOwotICAgICAgICBp
ZiAoIWNhbkJlU2hvcnRKdW1wKHNob3J0SnVtcExvY2F0aW9uLCB0bywgbWF5VHJpZ2dlckVycmF0
YSkpIHsKLSAgICAgICAgICAgIHJlY29yZC5zZXRMaW5rVHlwZShMaW5rTG9uZ0p1bXApOwotICAg
ICAgICAgICAgcmV0dXJuIExpbmtMb25nSnVtcDsKKyAgICAgICAgY29uc3QgdWludDE2X3QqIGp1
bXBUNExvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGZyb20gIC0g
KEp1bXBQYWRkaW5nU2l6ZSAtIEp1bXBTaXplc1tMaW5rSnVtcFQ0XSkpOworICAgICAgICBpZiAo
IWNhbkJlSnVtcFQ0KGp1bXBUNExvY2F0aW9uLCB0bywgbWF5VHJpZ2dlckVycmF0YSkpIHsKKyAg
ICAgICAgICAgIHJlY29yZC5zZXRMaW5rVHlwZShMaW5rQlgpOworICAgICAgICAgICAgcmV0dXJu
IExpbmtCWDsKICAgICAgICAgfQogICAgICAgICBpZiAobWF5VHJpZ2dlckVycmF0YSkgewotICAg
ICAgICAgICAgcmVjb3JkLnNldExpbmtUeXBlKExpbmtMb25nSnVtcCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gTGlua0xvbmdKdW1wOworICAgICAgICAgICAgcmVjb3JkLnNldExpbmtUeXBlKExpbmtC
WCk7CisgICAgICAgICAgICByZXR1cm4gTGlua0JYOwogICAgICAgICB9CiAgICAgICAgIGlmIChy
ZWNvcmQudHlwZSgpID09IEp1bXBDb25kaXRpb24pIHsKLSAgICAgICAgICAgIHJlY29yZC5zZXRM
aW5rVHlwZShMaW5rQ29uZGl0aW9uYWxTaG9ydEp1bXApOwotICAgICAgICAgICAgcmV0dXJuIExp
bmtDb25kaXRpb25hbFNob3J0SnVtcDsKKyAgICAgICAgICAgIHJlY29yZC5zZXRMaW5rVHlwZShM
aW5rQ29uZGl0aW9uYWxKdW1wVDQpOworICAgICAgICAgICAgcmV0dXJuIExpbmtDb25kaXRpb25h
bEp1bXBUNDsKICAgICAgICAgfQotICAgICAgICByZWNvcmQuc2V0TGlua1R5cGUoTGlua1Nob3J0
SnVtcCk7Ci0gICAgICAgIHJldHVybiBMaW5rU2hvcnRKdW1wOworICAgICAgICByZWNvcmQuc2V0
TGlua1R5cGUoTGlua0p1bXBUNCk7CisgICAgICAgIHJldHVybiBMaW5rSnVtcFQ0OwogICAgIH0K
IAogICAgIHZvaWQgcmVjb3JkTGlua09mZnNldHMoaW50MzJfdCByZWdpb25TdGFydCwgaW50MzJf
dCByZWdpb25FbmQsIGludDMyX3Qgb2Zmc2V0KQpAQCAtMTcxNywxNiArMTcyOCwyOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGxpbmsoTGlua1JlY29yZCYgcmVjb3JkLCB1aW50OF90KiBmcm9tLCB1
aW50OF90KiB0bykKICAgICB7Ci0gICAgICAgIHVpbnQxNl90KiBpdHR0TG9jYXRpb247Ci0gICAg
ICAgIGlmIChyZWNvcmQubGlua1R5cGUoKSA9PSBMaW5rQ29uZGl0aW9uYWxTaG9ydEp1bXApIHsK
LSAgICAgICAgICAgIGl0dHRMb2NhdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihm
cm9tIC0gSnVtcFNpemVzW0xpbmtDb25kaXRpb25hbFNob3J0SnVtcF0gLSAyKTsKKyAgICAgICAg
SnVtcExpbmtUeXBlIGxpbmtUeXBlID0gcmVjb3JkLmxpbmtUeXBlKCk7CisgICAgICAgIEFTU0VS
VChsaW5rVHlwZSAhPSBMaW5rSW52YWxpZCk7CisgICAgICAgIGlmICgobGlua1R5cGUgPT0gTGlu
a0NvbmRpdGlvbmFsSnVtcFQyKSB8fCAobGlua1R5cGUgPT0gTGlua0NvbmRpdGlvbmFsSnVtcFQ0
KSkgeworICAgICAgICAgICAgdWludDE2X3QqIGl0dHRMb2NhdGlvbiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDE2X3QqPihmcm9tIC0gSnVtcFNpemVzW2xpbmtUeXBlXSAtIDIpOwogICAgICAgICAg
ICAgaXR0dExvY2F0aW9uWzBdID0gaWZUaGVuRWxzZShyZWNvcmQuY29uZGl0aW9uKCkpIHwgT1Bf
SVQ7CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUKHJlY29yZC5saW5rVHlwZSgpICE9IExpbmtJ
bnZhbGlkKTsKLSAgICAgICAgaWYgKHJlY29yZC5saW5rVHlwZSgpICE9IExpbmtMb25nSnVtcCkK
LSAgICAgICAgICAgIGxpbmtTaG9ydEp1bXAocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGZy
b20pLCB0byk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxpbmtMb25nSnVtcChyZWludGVy
cHJldF9jYXN0PHVpbnQxNl90Kj4oZnJvbSksIHRvKTsKKyAgICAgICAgc3dpdGNoIChsaW5rVHlw
ZSkgeworICAgICAgICBjYXNlIExpbmtKdW1wVDI6CisgICAgICAgIGNhc2UgTGlua0NvbmRpdGlv
bmFsSnVtcFQyOgorICAgICAgICAgICAgbGlua0p1bXBUMihyZWludGVycHJldF9jYXN0PHVpbnQx
Nl90Kj4oZnJvbSksIHRvKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExpbmtK
dW1wVDQ6CisgICAgICAgIGNhc2UgTGlua0NvbmRpdGlvbmFsSnVtcFQ0OgorICAgICAgICAgICAg
bGlua0p1bXBUNChyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZnJvbSksIHRvKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExpbmtCWDoKKyAgICAgICAgICAgIGxpbmtCWChy
ZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZnJvbSksIHRvKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCogdW5saW5rZWRDb2RlKCkg
eyByZXR1cm4gbV9mb3JtYXR0ZXIuZGF0YSgpOyB9CkBAIC0xOTQ2LDcgKzE5NjksMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgcmV0dXJuIChpbnN0cnVjdGlvblswXSA9PSBPUF9OT1BfVDJhKSAmJiAo
aW5zdHJ1Y3Rpb25bMV0gPT0gT1BfTk9QX1QyYik7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wg
Y2FuQmVTaG9ydEp1bXAoY29uc3QgdWludDE2X3QqIGluc3RydWN0aW9uLCBjb25zdCB2b2lkKiB0
YXJnZXQsIGJvb2wmIG1heVRyaWdnZXJFcnJhdGEpCisgICAgc3RhdGljIGJvb2wgY2FuQmVKdW1w
VDIoY29uc3QgdWludDE2X3QqIGluc3RydWN0aW9uLCBjb25zdCB2b2lkKiB0YXJnZXQpCisgICAg
eworICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90PihpbnN0cnVjdGlv
bikgJiAxKSk7CisgICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRh
cmdldCkgJiAxKSk7CisgICAgICAgIAorICAgICAgICBpbnRwdHJfdCByZWxhdGl2ZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRhcmdldCkgLSAocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4oaW5zdHJ1Y3Rpb24pKTsKKyAgICAgICAgLy8gSXQgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGRv
Y3VtZW50ZWQgaW4gdGhlIEFSTSBBUk0gKGJpZyBzdXJwcmlzZSksIGJ1dAorICAgICAgICAvLyBm
b3IgT1BfQl9UMiB0aGUgYnJhbmNoIGRpc3BsYWNlbWVudCBlbmNvZGVkIGluIHRoZSBpbnN0cnVj
dGlvbiBpcyAyIAorICAgICAgICAvLyBsZXNzIHRoYW4gdGhlIGFjdHVhbCBkaXNwbGFjZW1lbnQu
CisgICAgICAgIHJlbGF0aXZlIC09IDI7CisgICAgICAgIHJldHVybiAoKHJlbGF0aXZlIDw8IDIw
KSA+PiAyMCkgPT0gcmVsYXRpdmU7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBib29sIGNhbkJl
SnVtcFQ0KGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiwgY29uc3Qgdm9pZCogdGFyZ2V0LCBi
b29sJiBtYXlUcmlnZ2VyRXJyYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJUKCEocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oaW5zdHJ1Y3Rpb24pICYgMSkpOwogICAgICAgICBBU1NFUlQoIShy
ZWludGVycHJldF9jYXN0PGludHB0cl90Pih0YXJnZXQpICYgMSkpOwpAQCAtMTk2NywxMiArMjAw
MywxMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gKChyZWxhdGl2ZSA8PCA3KSA+PiA3KSA9
PSByZWxhdGl2ZSAmJiAhd291bGRUcmlnZ2VyQThFcnJhdGE7CiAgICAgfQogCi0gICAgc3RhdGlj
IHZvaWQgbGlua0xvbmdKdW1wKHVpbnQxNl90KiBpbnN0cnVjdGlvbiwgdm9pZCogdGFyZ2V0KQor
ICAgIHN0YXRpYyB2b2lkIGxpbmtCWCh1aW50MTZfdCogaW5zdHJ1Y3Rpb24sIHZvaWQqIHRhcmdl
dCkKICAgICB7CiAgICAgICAgIGxpbmtKdW1wQWJzb2x1dGUoaW5zdHJ1Y3Rpb24sIHRhcmdldCk7
CiAgICAgfQogICAgIAotICAgIHN0YXRpYyB2b2lkIGxpbmtTaG9ydEp1bXAodWludDE2X3QqIGlu
c3RydWN0aW9uLCB2b2lkKiB0YXJnZXQpCisgICAgc3RhdGljIHZvaWQgbGlua0p1bXBUNCh1aW50
MTZfdCogaW5zdHJ1Y3Rpb24sIHZvaWQqIHRhcmdldCkKICAgICB7CiAgICAgICAgIC8vIEZJTVhF
OiB0aGlzIHNob3VsZCBiZSB1cCBpbiB0aGUgTWFjcm9Bc3NlbWJsZXIgbGF5ZXIuIDotKCAgICAg
ICAgCiAgICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0
aW9uKSAmIDEpKTsKQEAgLTE5ODEsNyArMjAxNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGludHB0
cl90IHJlbGF0aXZlID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGFyZ2V0KSAtIChyZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihpbnN0cnVjdGlvbikpOwogICAgICAgICBib29sIHNjcmF0
Y2g7CiAgICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoKTsKLSAgICAgICAgQVNTRVJUKGNhbkJl
U2hvcnRKdW1wKGluc3RydWN0aW9uLCB0YXJnZXQsIHNjcmF0Y2gpKTsKKyAgICAgICAgQVNTRVJU
KGNhbkJlSnVtcFQ0KGluc3RydWN0aW9uLCB0YXJnZXQsIHNjcmF0Y2gpKTsKICAgICAgICAgLy8g
QVJNIGVuY29kaW5nIGZvciB0aGUgdG9wIHR3byBiaXRzIGJlbG93IHRoZSBzaWduIGJpdCBpcyAn
cGVjdWxpYXInLgogICAgICAgICBpZiAocmVsYXRpdmUgPj0gMCkKICAgICAgICAgICAgIHJlbGF0
aXZlIF49IDB4QzAwMDAwOwpAQCAtMTk5Miw2ICsyMDI4LDI0IEBAIHByaXZhdGU6CiAgICAgICAg
IGluc3RydWN0aW9uWy0xXSA9IE9QX0JfVDRiIHwgKChyZWxhdGl2ZSAmIDB4ODAwMDAwKSA+PiAx
MCkgfCAoKHJlbGF0aXZlICYgMHg0MDAwMDApID4+IDExKSB8ICgocmVsYXRpdmUgJiAweGZmZSkg
Pj4gMSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgbGlua0p1bXBUMih1aW50MTZfdCogaW5z
dHJ1Y3Rpb24sIHZvaWQqIHRhcmdldCkKKyAgICB7CisgICAgICAgIC8vIEZJTVhFOiB0aGlzIHNo
b3VsZCBiZSB1cCBpbiB0aGUgTWFjcm9Bc3NlbWJsZXIgbGF5ZXIuIDotKCAgICAgICAgCisgICAg
ICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0aW9uKSAmIDEp
KTsKKyAgICAgICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGFyZ2V0KSAm
IDEpKTsKKyAgICAgICAgQVNTRVJUKGNhbkJlSnVtcFQyKGluc3RydWN0aW9uLCB0YXJnZXQpKTsK
KyAgICAgICAgCisgICAgICAgIGludHB0cl90IHJlbGF0aXZlID0gcmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4odGFyZ2V0KSAtIChyZWludGVycHJldF9jYXN0PGludHB0cl90PihpbnN0cnVjdGlv
bikpOworICAgICAgICAvLyBJdCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgZG9jdW1lbnRlZCBpbiB0
aGUgQVJNIEFSTSAoYmlnIHN1cnByaXNlKSwgYnV0CisgICAgICAgIC8vIGZvciBPUF9CX1QyIHRo
ZSBicmFuY2ggZGlzcGxhY2VtZW50IGVuY29kZWQgaW4gdGhlIGluc3RydWN0aW9uIGlzIDIgCisg
ICAgICAgIC8vIGxlc3MgdGhhbiB0aGUgYWN0dWFsIGRpc3BsYWNlbWVudC4KKyAgICAgICAgcmVs
YXRpdmUgLT0gMjsKKyAgICAgICAgCisgICAgICAgIC8vIEFsbCBicmFuY2ggb2Zmc2V0cyBzaG91
bGQgYmUgYW4gZXZlbiBkaXN0YW5jZS4KKyAgICAgICAgQVNTRVJUKCEocmVsYXRpdmUgJiAxKSk7
CisgICAgICAgIGluc3RydWN0aW9uWy0xXSA9IE9QX0JfVDIgfCAoKHJlbGF0aXZlICYgMHhmZmUp
ID4+IDEpOworICAgIH0KKyAgICAKICAgICBzdGF0aWMgdm9pZCBsaW5rSnVtcEFic29sdXRlKHVp
bnQxNl90KiBpbnN0cnVjdGlvbiwgdm9pZCogdGFyZ2V0KQogICAgIHsKICAgICAgICAgLy8gRklN
WEU6IHRoaXMgc2hvdWxkIGJlIHVwIGluIHRoZSBNYWNyb0Fzc2VtYmxlciBsYXllci4gOi0oCkBA
IC0yMDAzLDcgKzIwNTcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGludHB0cl90IHJlbGF0aXZl
ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGFyZ2V0KSAtIChyZWludGVycHJldF9jYXN0
PGludHB0cl90PihpbnN0cnVjdGlvbikpOwogICAgICAgICBib29sIHNjcmF0Y2g7Ci0gICAgICAg
IGlmIChjYW5CZVNob3J0SnVtcChpbnN0cnVjdGlvbiwgdGFyZ2V0LCBzY3JhdGNoKSkgeworICAg
ICAgICBpZiAoY2FuQmVKdW1wVDQoaW5zdHJ1Y3Rpb24sIHRhcmdldCwgc2NyYXRjaCkpIHsKICAg
ICAgICAgICAgIC8vIEFSTSBlbmNvZGluZyBmb3IgdGhlIHRvcCB0d28gYml0cyBiZWxvdyB0aGUg
c2lnbiBiaXQgaXMgJ3BlY3VsaWFyJy4KICAgICAgICAgICAgIGlmIChyZWxhdGl2ZSA+PSAwKQog
ICAgICAgICAgICAgICAgIHJlbGF0aXZlIF49IDB4QzAwMDAwOwo=
</data>
<flag name="review"
          id="59372"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69668</attachid>
            <date>2010-10-04 12:24:47 -0700</date>
            <delta_ts>2010-10-04 22:57:04 -0700</delta_ts>
            <desc>patch tweaks</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10078</size>
            <attacher name="David Goodwin">david_goodwin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5MDIzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMTAtMDQgIERhdmlkIEdv
b2R3aW4gIDxkYXZpZF9nb29kd2luQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUk12NyBKSVQgc2hvdWxkIHRha2UgYWR2YW50YWdl
IG9mIDItYnl0ZSBicmFuY2hlcyB0byByZWR1Y2UgY29kZSBzaXplCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzAwNworCisgICAgICAgICogYXNzZW1i
bGVyL0FSTXY3QXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmNvbXB1dGVKdW1wVHlwZSk6Cisg
ICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6QVJNdjdB
c3NlbWJsZXI6OmNhbkJlSnVtcFQyKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmNh
bkJlSnVtcFQ0KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmxpbmtCWCk6CisgICAg
ICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rSnVtcFQ0KToKKyAgICAgICAgKEpTQzo6QVJN
djdBc3NlbWJsZXI6OmxpbmtKdW1wVDIpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6
bGlua0p1bXBBYnNvbHV0ZSk6CisKIDIwMTAtMTAtMDEgIFByYXRpayBTb2xhbmtpICA8cHNvbGFu
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuY3BwCShyZXZpc2lv
biA2OTAyMikKKysrIEphdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNv
bnN0IGludCBBUk12N0Fzc2VtYmxlcjo6SnVtcFNpemVzW10gPSB7IDB4ZmZmZmZmZmYsIDIgKiBz
aXplb2YodWludDE2X3QpLCAyICogc2l6ZW9mKHVpbnQxNl90KSwgNSAqIHNpemVvZih1aW50MTZf
dCkgfTsKK2NvbnN0IGludCBBUk12N0Fzc2VtYmxlcjo6SnVtcFNpemVzW10gPSB7IDB4ZmZmZmZm
ZmYsIHNpemVvZih1aW50MTZfdCksIHNpemVvZih1aW50MTZfdCksCisgICAgMiAqIHNpemVvZih1
aW50MTZfdCksIDIgKiBzaXplb2YodWludDE2X3QpLCA1ICogc2l6ZW9mKHVpbnQxNl90KSB9Owog
CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShy
ZXZpc2lvbiA2OTAyMikKKysrIEphdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00NzksNyAr
NDc5LDggQEAgcHVibGljOgogICAgIH0gQ29uZGl0aW9uOwogCiAgICAgZW51bSBKdW1wVHlwZSB7
IEp1bXBOb0NvbmRpdGlvbiwgSnVtcENvbmRpdGlvbiwgSnVtcEZ1bGxTaXplIH07Ci0gICAgZW51
bSBKdW1wTGlua1R5cGUgeyBMaW5rSW52YWxpZCwgTGlua1Nob3J0SnVtcCwgTGlua0NvbmRpdGlv
bmFsU2hvcnRKdW1wLCBMaW5rTG9uZ0p1bXAsIEp1bXBUeXBlQ291bnQgfTsKKyAgICBlbnVtIEp1
bXBMaW5rVHlwZSB7IExpbmtJbnZhbGlkLCBMaW5rSnVtcFQyLCBMaW5rQ29uZGl0aW9uYWxKdW1w
VDIsIAorICAgICAgICBMaW5rSnVtcFQ0LCBMaW5rQ29uZGl0aW9uYWxKdW1wVDQsIExpbmtCWCwg
SnVtcFR5cGVDb3VudCB9OwogICAgIHN0YXRpYyBjb25zdCBpbnQgSnVtcFNpemVzW0p1bXBUeXBl
Q291bnRdOwogICAgIGVudW0geyBKdW1wUGFkZGluZ1NpemUgPSA1ICogc2l6ZW9mKHVpbnQxNl90
KSB9OwogICAgIGNsYXNzIExpbmtSZWNvcmQgewpAQCAtNjI4LDYgKzYyOSw3IEBAIHByaXZhdGU6
CiAgICAgfSBPcGNvZGVJRDsKIAogICAgIHR5cGVkZWYgZW51bSB7CisgICAgICAgIE9QX0JfVDIg
ICAgICAgICA9IDB4RTAwMCwKICAgICAgICAgT1BfQU5EX3JlZ19UMiAgID0gMHhFQTAwLAogICAg
ICAgICBPUF9UU1RfcmVnX1QyICAgPSAweEVBMTAsCiAgICAgICAgIE9QX09SUl9yZWdfVDIgICA9
IDB4RUE0MCwKQEAgLTE2NzksMjUgKzE2ODEsMzQgQEAgcHVibGljOgogICAgIEp1bXBMaW5rVHlw
ZSBjb21wdXRlSnVtcFR5cGUoTGlua1JlY29yZCYgcmVjb3JkLCBjb25zdCB1aW50OF90KiBmcm9t
LCBjb25zdCB1aW50OF90KiB0bykKICAgICB7CiAgICAgICAgIGlmIChyZWNvcmQudHlwZSgpID49
IEp1bXBGdWxsU2l6ZSkgewotICAgICAgICAgICAgcmVjb3JkLnNldExpbmtUeXBlKExpbmtMb25n
SnVtcCk7Ci0gICAgICAgICAgICByZXR1cm4gTGlua0xvbmdKdW1wOworICAgICAgICAgICAgcmVj
b3JkLnNldExpbmtUeXBlKExpbmtCWCk7CisgICAgICAgICAgICByZXR1cm4gTGlua0JYOworICAg
ICAgICB9CisgICAgICAgIGNvbnN0IHVpbnQxNl90KiBqdW1wVDJMb2NhdGlvbiA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihmcm9tICAtIChKdW1wUGFkZGluZ1NpemUgLSBKdW1w
U2l6ZXNbTGlua0p1bXBUMl0pKTsKKyAgICAgICAgaWYgKGNhbkJlSnVtcFQyKGp1bXBUMkxvY2F0
aW9uLCB0bykpIHsKKyAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSgpID09IEp1bXBDb25kaXRp
b24pIHsKKyAgICAgICAgICAgICAgICByZWNvcmQuc2V0TGlua1R5cGUoTGlua0NvbmRpdGlvbmFs
SnVtcFQyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTGlua0NvbmRpdGlvbmFsSnVtcFQyOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVjb3JkLnNldExpbmtUeXBlKExpbmtKdW1wVDIp
OworICAgICAgICAgICAgcmV0dXJuIExpbmtKdW1wVDI7CiAgICAgICAgIH0KICAgICAgICAgYm9v
bCBtYXlUcmlnZ2VyRXJyYXRhID0gZmFsc2U7Ci0gICAgICAgIGNvbnN0IHVpbnQxNl90KiBzaG9y
dEp1bXBMb2NhdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihmcm9tICAt
IChKdW1wUGFkZGluZ1NpemUgLSBKdW1wU2l6ZXNbTGlua1Nob3J0SnVtcF0pKTsKLSAgICAgICAg
aWYgKCFjYW5CZVNob3J0SnVtcChzaG9ydEp1bXBMb2NhdGlvbiwgdG8sIG1heVRyaWdnZXJFcnJh
dGEpKSB7Ci0gICAgICAgICAgICByZWNvcmQuc2V0TGlua1R5cGUoTGlua0xvbmdKdW1wKTsKLSAg
ICAgICAgICAgIHJldHVybiBMaW5rTG9uZ0p1bXA7CisgICAgICAgIGNvbnN0IHVpbnQxNl90KiBq
dW1wVDRMb2NhdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihmcm9tICAt
IChKdW1wUGFkZGluZ1NpemUgLSBKdW1wU2l6ZXNbTGlua0p1bXBUNF0pKTsKKyAgICAgICAgaWYg
KCFjYW5CZUp1bXBUNChqdW1wVDRMb2NhdGlvbiwgdG8sIG1heVRyaWdnZXJFcnJhdGEpKSB7Cisg
ICAgICAgICAgICByZWNvcmQuc2V0TGlua1R5cGUoTGlua0JYKTsKKyAgICAgICAgICAgIHJldHVy
biBMaW5rQlg7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1heVRyaWdnZXJFcnJhdGEpIHsKLSAg
ICAgICAgICAgIHJlY29yZC5zZXRMaW5rVHlwZShMaW5rTG9uZ0p1bXApOwotICAgICAgICAgICAg
cmV0dXJuIExpbmtMb25nSnVtcDsKKyAgICAgICAgICAgIHJlY29yZC5zZXRMaW5rVHlwZShMaW5r
QlgpOworICAgICAgICAgICAgcmV0dXJuIExpbmtCWDsKICAgICAgICAgfQogICAgICAgICBpZiAo
cmVjb3JkLnR5cGUoKSA9PSBKdW1wQ29uZGl0aW9uKSB7Ci0gICAgICAgICAgICByZWNvcmQuc2V0
TGlua1R5cGUoTGlua0NvbmRpdGlvbmFsU2hvcnRKdW1wKTsKLSAgICAgICAgICAgIHJldHVybiBM
aW5rQ29uZGl0aW9uYWxTaG9ydEp1bXA7CisgICAgICAgICAgICByZWNvcmQuc2V0TGlua1R5cGUo
TGlua0NvbmRpdGlvbmFsSnVtcFQ0KTsKKyAgICAgICAgICAgIHJldHVybiBMaW5rQ29uZGl0aW9u
YWxKdW1wVDQ7CiAgICAgICAgIH0KLSAgICAgICAgcmVjb3JkLnNldExpbmtUeXBlKExpbmtTaG9y
dEp1bXApOwotICAgICAgICByZXR1cm4gTGlua1Nob3J0SnVtcDsKKyAgICAgICAgcmVjb3JkLnNl
dExpbmtUeXBlKExpbmtKdW1wVDQpOworICAgICAgICByZXR1cm4gTGlua0p1bXBUNDsKICAgICB9
CiAKICAgICB2b2lkIHJlY29yZExpbmtPZmZzZXRzKGludDMyX3QgcmVnaW9uU3RhcnQsIGludDMy
X3QgcmVnaW9uRW5kLCBpbnQzMl90IG9mZnNldCkKQEAgLTE3MTcsMTYgKzE3MjgsMjggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBsaW5rKExpbmtSZWNvcmQmIHJlY29yZCwgdWludDhfdCogZnJvbSwg
dWludDhfdCogdG8pCiAgICAgewotICAgICAgICB1aW50MTZfdCogaXR0dExvY2F0aW9uOwotICAg
ICAgICBpZiAocmVjb3JkLmxpbmtUeXBlKCkgPT0gTGlua0NvbmRpdGlvbmFsU2hvcnRKdW1wKSB7
Ci0gICAgICAgICAgICBpdHR0TG9jYXRpb24gPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4o
ZnJvbSAtIEp1bXBTaXplc1tMaW5rQ29uZGl0aW9uYWxTaG9ydEp1bXBdIC0gMik7CisgICAgICAg
IEp1bXBMaW5rVHlwZSBsaW5rVHlwZSA9IHJlY29yZC5saW5rVHlwZSgpOworICAgICAgICBBU1NF
UlQobGlua1R5cGUgIT0gTGlua0ludmFsaWQpOworICAgICAgICBpZiAoKGxpbmtUeXBlID09IExp
bmtDb25kaXRpb25hbEp1bXBUMikgfHwgKGxpbmtUeXBlID09IExpbmtDb25kaXRpb25hbEp1bXBU
NCkpIHsKKyAgICAgICAgICAgIHVpbnQxNl90KiBpdHR0TG9jYXRpb24gPSByZWludGVycHJldF9j
YXN0PHVpbnQxNl90Kj4oZnJvbSAtIEp1bXBTaXplc1tsaW5rVHlwZV0gLSAyKTsKICAgICAgICAg
ICAgIGl0dHRMb2NhdGlvblswXSA9IGlmVGhlbkVsc2UocmVjb3JkLmNvbmRpdGlvbigpKSB8IE9Q
X0lUOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChyZWNvcmQubGlua1R5cGUoKSAhPSBMaW5r
SW52YWxpZCk7Ci0gICAgICAgIGlmIChyZWNvcmQubGlua1R5cGUoKSAhPSBMaW5rTG9uZ0p1bXAp
Ci0gICAgICAgICAgICBsaW5rU2hvcnRKdW1wKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihm
cm9tKSwgdG8pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsaW5rTG9uZ0p1bXAocmVpbnRl
cnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20pLCB0byk7CisgICAgICAgIHN3aXRjaCAobGlua1R5
cGUpIHsKKyAgICAgICAgY2FzZSBMaW5rSnVtcFQyOgorICAgICAgICBjYXNlIExpbmtDb25kaXRp
b25hbEp1bXBUMjoKKyAgICAgICAgICAgIGxpbmtKdW1wVDIocmVpbnRlcnByZXRfY2FzdDx1aW50
MTZfdCo+KGZyb20pLCB0byk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMaW5r
SnVtcFQ0OgorICAgICAgICBjYXNlIExpbmtDb25kaXRpb25hbEp1bXBUNDoKKyAgICAgICAgICAg
IGxpbmtKdW1wVDQocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20pLCB0byk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMaW5rQlg6CisgICAgICAgICAgICBsaW5rQlgo
cmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20pLCB0byk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkKiB1bmxpbmtl
ZENvZGUoKSB7IHJldHVybiBtX2Zvcm1hdHRlci5kYXRhKCk7IH0KQEAgLTE5NDYsNyArMTk2OSwy
MCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gKGluc3RydWN0aW9uWzBdID09IE9QX05PUF9U
MmEpICYmIChpbnN0cnVjdGlvblsxXSA9PSBPUF9OT1BfVDJiKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgYm9vbCBjYW5CZVNob3J0SnVtcChjb25zdCB1aW50MTZfdCogaW5zdHJ1Y3Rpb24sIGNvbnN0
IHZvaWQqIHRhcmdldCwgYm9vbCYgbWF5VHJpZ2dlckVycmF0YSkKKyAgICBzdGF0aWMgYm9vbCBj
YW5CZUp1bXBUMihjb25zdCB1aW50MTZfdCogaW5zdHJ1Y3Rpb24sIGNvbnN0IHZvaWQqIHRhcmdl
dCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGlu
c3RydWN0aW9uKSAmIDEpKTsKKyAgICAgICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4odGFyZ2V0KSAmIDEpKTsKKyAgICAgICAgCisgICAgICAgIGludHB0cl90IHJlbGF0aXZl
ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGFyZ2V0KSAtIChyZWludGVycHJldF9jYXN0
PGludHB0cl90PihpbnN0cnVjdGlvbikpOworICAgICAgICAvLyBJdCBkb2VzIG5vdCBhcHBlYXIg
dG8gYmUgZG9jdW1lbnRlZCBpbiB0aGUgQVJNIEFSTSAoYmlnIHN1cnByaXNlKSwgYnV0CisgICAg
ICAgIC8vIGZvciBPUF9CX1QyIHRoZSBicmFuY2ggZGlzcGxhY2VtZW50IGVuY29kZWQgaW4gdGhl
IGluc3RydWN0aW9uIGlzIDIgCisgICAgICAgIC8vIGxlc3MgdGhhbiB0aGUgYWN0dWFsIGRpc3Bs
YWNlbWVudC4KKyAgICAgICAgcmVsYXRpdmUgLT0gMjsKKyAgICAgICAgcmV0dXJuICgocmVsYXRp
dmUgPDwgMjApID4+IDIwKSA9PSByZWxhdGl2ZTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJv
b2wgY2FuQmVKdW1wVDQoY29uc3QgdWludDE2X3QqIGluc3RydWN0aW9uLCBjb25zdCB2b2lkKiB0
YXJnZXQsIGJvb2wmIG1heVRyaWdnZXJFcnJhdGEpCiAgICAgewogICAgICAgICBBU1NFUlQoIShy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihpbnN0cnVjdGlvbikgJiAxKSk7CiAgICAgICAgIEFT
U0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRhcmdldCkgJiAxKSk7CkBAIC0xOTY3
LDEyICsyMDAzLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiAoKHJlbGF0aXZlIDw8IDcp
ID4+IDcpID09IHJlbGF0aXZlICYmICF3b3VsZFRyaWdnZXJBOEVycmF0YTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdm9pZCBsaW5rTG9uZ0p1bXAodWludDE2X3QqIGluc3RydWN0aW9uLCB2b2lkKiB0
YXJnZXQpCisgICAgc3RhdGljIHZvaWQgbGlua0JYKHVpbnQxNl90KiBpbnN0cnVjdGlvbiwgdm9p
ZCogdGFyZ2V0KQogICAgIHsKICAgICAgICAgbGlua0p1bXBBYnNvbHV0ZShpbnN0cnVjdGlvbiwg
dGFyZ2V0KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHZvaWQgbGlua1Nob3J0SnVtcCh1aW50
MTZfdCogaW5zdHJ1Y3Rpb24sIHZvaWQqIHRhcmdldCkKKyAgICBzdGF0aWMgdm9pZCBsaW5rSnVt
cFQ0KHVpbnQxNl90KiBpbnN0cnVjdGlvbiwgdm9pZCogdGFyZ2V0KQogICAgIHsKICAgICAgICAg
Ly8gRklNWEU6IHRoaXMgc2hvdWxkIGJlIHVwIGluIHRoZSBNYWNyb0Fzc2VtYmxlciBsYXllci4g
Oi0oICAgICAgICAKICAgICAgICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
aW5zdHJ1Y3Rpb24pICYgMSkpOwpAQCAtMTk4MSw3ICsyMDE3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgaW50cHRyX3QgcmVsYXRpdmUgPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0YXJnZXQp
IC0gKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0aW9uKSk7CiAgICAgICAgIGJv
b2wgc2NyYXRjaDsKICAgICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOwotICAgICAgICBBU1NF
UlQoY2FuQmVTaG9ydEp1bXAoaW5zdHJ1Y3Rpb24sIHRhcmdldCwgc2NyYXRjaCkpOworICAgICAg
ICBBU1NFUlQoY2FuQmVKdW1wVDQoaW5zdHJ1Y3Rpb24sIHRhcmdldCwgc2NyYXRjaCkpOwogICAg
ICAgICAvLyBBUk0gZW5jb2RpbmcgZm9yIHRoZSB0b3AgdHdvIGJpdHMgYmVsb3cgdGhlIHNpZ24g
Yml0IGlzICdwZWN1bGlhcicuCiAgICAgICAgIGlmIChyZWxhdGl2ZSA+PSAwKQogICAgICAgICAg
ICAgcmVsYXRpdmUgXj0gMHhDMDAwMDA7CkBAIC0xOTkyLDYgKzIwMjgsMjQgQEAgcHJpdmF0ZToK
ICAgICAgICAgaW5zdHJ1Y3Rpb25bLTFdID0gT1BfQl9UNGIgfCAoKHJlbGF0aXZlICYgMHg4MDAw
MDApID4+IDEwKSB8ICgocmVsYXRpdmUgJiAweDQwMDAwMCkgPj4gMTEpIHwgKChyZWxhdGl2ZSAm
IDB4ZmZlKSA+PiAxKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBsaW5rSnVtcFQyKHVpbnQx
Nl90KiBpbnN0cnVjdGlvbiwgdm9pZCogdGFyZ2V0KQorICAgIHsKKyAgICAgICAgLy8gRklNWEU6
IHRoaXMgc2hvdWxkIGJlIHVwIGluIHRoZSBNYWNyb0Fzc2VtYmxlciBsYXllci4gOi0oICAgICAg
ICAKKyAgICAgICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5zdHJ1Y3Rp
b24pICYgMSkpOworICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0
YXJnZXQpICYgMSkpOworICAgICAgICBBU1NFUlQoY2FuQmVKdW1wVDIoaW5zdHJ1Y3Rpb24sIHRh
cmdldCkpOworICAgICAgICAKKyAgICAgICAgaW50cHRyX3QgcmVsYXRpdmUgPSByZWludGVycHJl
dF9jYXN0PGludHB0cl90Pih0YXJnZXQpIC0gKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGlu
c3RydWN0aW9uKSk7CisgICAgICAgIC8vIEl0IGRvZXMgbm90IGFwcGVhciB0byBiZSBkb2N1bWVu
dGVkIGluIHRoZSBBUk0gQVJNIChiaWcgc3VycHJpc2UpLCBidXQKKyAgICAgICAgLy8gZm9yIE9Q
X0JfVDIgdGhlIGJyYW5jaCBkaXNwbGFjZW1lbnQgZW5jb2RlZCBpbiB0aGUgaW5zdHJ1Y3Rpb24g
aXMgMiAKKyAgICAgICAgLy8gbGVzcyB0aGFuIHRoZSBhY3R1YWwgZGlzcGxhY2VtZW50LgorICAg
ICAgICByZWxhdGl2ZSAtPSAyOworICAgICAgICAKKyAgICAgICAgLy8gQWxsIGJyYW5jaCBvZmZz
ZXRzIHNob3VsZCBiZSBhbiBldmVuIGRpc3RhbmNlLgorICAgICAgICBBU1NFUlQoIShyZWxhdGl2
ZSAmIDEpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25bLTFdID0gT1BfQl9UMiB8ICgocmVsYXRpdmUg
JiAweGZmZSkgPj4gMSk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2b2lkIGxpbmtKdW1wQWJz
b2x1dGUodWludDE2X3QqIGluc3RydWN0aW9uLCB2b2lkKiB0YXJnZXQpCiAgICAgewogICAgICAg
ICAvLyBGSU1YRTogdGhpcyBzaG91bGQgYmUgdXAgaW4gdGhlIE1hY3JvQXNzZW1ibGVyIGxheWVy
LiA6LSgKQEAgLTIwMDMsNyArMjA1Nyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgaW50cHRyX3Qg
cmVsYXRpdmUgPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0YXJnZXQpIC0gKHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0aW9uKSk7CiAgICAgICAgIGJvb2wgc2NyYXRjaDsK
LSAgICAgICAgaWYgKGNhbkJlU2hvcnRKdW1wKGluc3RydWN0aW9uLCB0YXJnZXQsIHNjcmF0Y2gp
KSB7CisgICAgICAgIGlmIChjYW5CZUp1bXBUNChpbnN0cnVjdGlvbiwgdGFyZ2V0LCBzY3JhdGNo
KSkgewogICAgICAgICAgICAgLy8gQVJNIGVuY29kaW5nIGZvciB0aGUgdG9wIHR3byBiaXRzIGJl
bG93IHRoZSBzaWduIGJpdCBpcyAncGVjdWxpYXInLgogICAgICAgICAgICAgaWYgKHJlbGF0aXZl
ID49IDApCiAgICAgICAgICAgICAgICAgcmVsYXRpdmUgXj0gMHhDMDAwMDA7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>