<?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>56025</bug_id>
          
          <creation_ts>2011-03-09 09:59:49 -0800</creation_ts>
          <short_desc>startOfBlock and endOfBlock may return a position inside hr</short_desc>
          <delta_ts>2011-03-10 16:53:11 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>52099</blocked>
    
    <blocked>56027</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>kalman</cc>
    
    <cc>leviw</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>364555</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-09 09:59:49 -0800</bug_when>
    <thetext>Right now, startOfBlock and endOfBlock call Node::enclosingBlockFlowElement to find the enclosing block node.  However, this allows the enclosing block to be an hr element because they don&apos;t check the value of editingIgnoresContent.  We should call enclosingBlock instead so that we don&apos;t return such a position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364570</commentid>
    <comment_count>1</comment_count>
      <attachid>85189</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-09 10:22:06 -0800</bug_when>
    <thetext>Created attachment 85189
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364706</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-09 12:40:53 -0800</bug_when>
    <thetext>Any chance I can get a review on this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365558</commentid>
    <comment_count>3</comment_count>
      <attachid>85189</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-10 15:05:25 -0800</bug_when>
    <thetext>Comment on attachment 85189
fixes the bug

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

Why is there no layout test?

&gt; Source/WebCore/editing/htmlediting.h:241
&gt; +String stringWithRebalancedWhitespace(const String&amp;, bool startIsStartOfParagraph, bool endIsEndOfParagraph);

This looks like a good candidate for future deboolification.

&gt; Source/WebCore/editing/visible_units.cpp:917
&gt; +VisiblePosition startOfBlock(const VisiblePosition &amp;c, EditingBoundaryCrossingRule rule)

Nit: Why is VisiblePosition |c|?  Might be worth a more descriptive name.

&gt; Source/WebCore/editing/visible_units.cpp:937
&gt; -    return !a.isNull() &amp;&amp; enclosingBlockFlowElement(a) == enclosingBlockFlowElement(b);
&gt; +    return !a.isNull() &amp;&amp; enclosingBlock(a.deepEquivalent().containerNode()) == enclosingBlock(b.deepEquivalent().containerNode());

Is this just a cleanup?  It doesn&apos;t seem directly related to the rest of the change (startOfBlock/endOfBlock).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365577</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-10 15:24:52 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 85189 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85189&amp;action=review
&gt; 
&gt; Why is there no layout test?

This change can&apos;t be tested because those positions are used only internally in editing code.  I&apos;ll add comment in the change log entry.

&gt; &gt; Source/WebCore/editing/htmlediting.h:241
&gt; &gt; +String stringWithRebalancedWhitespace(const String&amp;, bool startIsStartOfParagraph, bool endIsEndOfParagraph);
&gt; 
&gt; This looks like a good candidate for future deboolification.

Agreed probably not in this patch though.

&gt; &gt; Source/WebCore/editing/visible_units.cpp:917
&gt; &gt; +VisiblePosition startOfBlock(const VisiblePosition &amp;c, EditingBoundaryCrossingRule rule)
&gt; 
&gt; Nit: Why is VisiblePosition |c|?  Might be worth a more descriptive name.

Will rename c to visiblePosition and p to position.

&gt; &gt; Source/WebCore/editing/visible_units.cpp:937
&gt; &gt; -    return !a.isNull() &amp;&amp; enclosingBlockFlowElement(a) == enclosingBlockFlowElement(b);
&gt; &gt; +    return !a.isNull() &amp;&amp; enclosingBlock(a.deepEquivalent().containerNode()) == enclosingBlock(b.deepEquivalent().containerNode());
&gt; 
&gt; Is this just a cleanup?  It doesn&apos;t seem directly related to the rest of the change (startOfBlock/endOfBlock).

No, this is a part of the bug fix because startOfBlock / endOfBlock now use enclosingBlock, we need to use it here as well or otherwise we&apos;ll have inconsistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365582</commentid>
    <comment_count>5</comment_count>
      <attachid>85396</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-10 15:30:37 -0800</bug_when>
    <thetext>Created attachment 85396
Fixed per Tony&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365663</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-10 16:53:11 -0800</bug_when>
    <thetext>Committed r80793: &lt;http://trac.webkit.org/changeset/80793&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85189</attachid>
            <date>2011-03-09 10:22:06 -0800</date>
            <delta_ts>2011-03-10 15:30:34 -0800</delta_ts>
            <desc>fixes the bug</desc>
            <filename>bug-56025-20110309102205.patch</filename>
            <type>text/plain</type>
            <size>11753</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNjQ2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDMtMDkgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgc3RhcnRPZkJsb2NrIGFuZCBlbmRPZkJsb2NrIG1heSByZXR1cm4g
YSBwb3NpdGlvbiBpbnNpZGUgaHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2MDI1CisKKyAgICAgICAgUmVwbGFjZWQgY2FsbHMgdG8gZW5jbG9zaW5n
QmxvY2tGbG93RWxlbWVudCBpbiBzdGFydE9mQmxvY2sgYW5kIGVuZE9mQmxvY2sgYnkKKyAgICAg
ICAgY2FsbHMgdG8gZW5jbG9zaW5nQmxvY2suIEFkZGVkIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5n
UnVsZSB0byB0aGUgYXJndW1lbnQgbGlzdHMKKyAgICAgICAgb2Ygc3RhcnRPZkJsb2NrLCBlbmRP
ZkJsb2NrLCBhbmQgZW5jbG9zaW5nQmxvY2suIEFsc28gcmVwbGFjZWQgdGhlIGxhc3QgYm9vbGVh
bgorICAgICAgICBhcmd1bWVudCB2YXJpYWJsZSBvZiBlbmNsb3NpbmdOb2RlT2ZUeXBlIGJ5IEVk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gcmVw
bGFjZWQgY2FsbHMgdG8gZGVwcmVjYXRlZE5vZGUgaW4gc3RhcnRPZkJsb2NrLCBlbmRPZkJsb2Nr
LAorICAgICAgICBhbmQgaW5TYW1lQmxvY2sgYnkgY2FsbHMgdG8gY29udGFpbmVyTm9kZSBiZWNh
dXNlIHRoZSBlbmNsb3NpbmcgYmxvY2sgb2YgYSBwb3NpdGlvbgorICAgICAgICBzaG91bGQgbmV2
ZXIgYmUgYmVmb3JlIG9yIGFmdGVyIHRoZSBwb3NpdGlvbi4KKworICAgICAgICAqIGVkaXRpbmcv
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxl
Y3Rpb25Db21tYW5kOjppbml0aWFsaXplUG9zaXRpb25EYXRhKTogQ2FsbHMgZW5jbG9zaW5nTm9k
ZU9mVHlwZS4KKyAgICAgICAgUGFzcyBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSBpbnN0ZWFkIG9m
IGZhbHNlLgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dW5zcGxpdHRhYmxlRWxlbWVudEZvclBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjplbmNsb3NpbmdCbG9jayk6IFRha2VzIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVs
ZSBhbmQgcGFzc2VzIGl0IHRvCisgICAgICAgIGVuY2xvc2luZ05vZGVPZlR5cGUuCisgICAgICAg
IChXZWJDb3JlOjplbmNsb3NpbmdOb2RlT2ZUeXBlKTogVGFrZXMgRWRpdGluZ0JvdW5kYXJ5Q3Jv
c3NpbmdSdWxlIGluc3RlYWQgb2YgYm9vbGVhbi4KKyAgICAgICAgRml4ZWQgYSBidWcgdGhhdCBp
dCBzdG9wcyB3YWxraW5nIHRoZSB0cmVlIHdoZW4gaXQgcmVhY2hlZCB0aGUgcm9vdCBlZGl0YWJs
ZSBub2RlCisgICAgICAgIGV2ZW4gd2hlbiB0aGUgZWRpdGluZyBib3VuZGFyeSBjcm9zc2luZyBy
dWxlIGlzIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5LgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVk
aXRpbmcuaDogUHJvdG90eXBlIGNoYW5nZXMuCisgICAgICAgICogZWRpdGluZy92aXNpYmxlX3Vu
aXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZCbG9jayk6IENhbGxzIGVuY2xvc2lu
Z0Jsb2NrIGluc3RlYWQgb2YgZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudC4KKyAgICAgICAgQWxz
byBhZGRlZCBhbiBlYXJseSBleGl0IHdoZW4gdGhlcmUncyBubyBlbmNsb3NpbmcgYmxvY2suCisg
ICAgICAgIChXZWJDb3JlOjplbmRPZkJsb2NrKTogRGl0dG8uIFRoZSBlYXJseSBleGlzdCBpbiB0
aGlzIGNhc2UgcHJldmVudHMgY3Jhc2ggaW4KKyAgICAgICAgbGFzdFBvc2l0aW9uSW5Ob2RlLgor
ICAgICAgICAoV2ViQ29yZTo6aW5TYW1lQmxvY2spOiBDYWxscyBlbmNsb3NpbmdCbG9jayBpbnN0
ZWFkIG9mIGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjppc1N0
YXJ0T2ZCbG9jayk6IENhbGxzIHN0YXJ0T2ZCbG9jayB3aXRoIENhbkNyb3NzRWRpdGluZ0JvdW5k
YXJ5IGJlY2F1c2UKKyAgICAgICAgd2UgZG9uJ3QgY2FyZSB3aGVyZSB0aGUgc3RhcnQgb2YgYmxv
Y2sgaXMgd2hlbiB3ZSdyZSBjb21wYXJpbmcgYWdhaW5zdCB0aGUgZ2l2ZW4gcG9zaXRpb24uCisg
ICAgICAgIChXZWJDb3JlOjppc0VuZE9mQmxvY2spOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5n
L3Zpc2libGVfdW5pdHMuaDoKKwogMjAxMS0wMy0wOSAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJl
dmlzaW9uIDgwNjQxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25D
b21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDggKzE4OCw4IEBAIHZvaWQgRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZDo6aW5pdGlhbGl6ZVAKICAgICAvLyBEb24ndCBtb3ZlIGNvbnRlbnQg
b3V0IG9mIGEgdGFibGUgY2VsbC4KICAgICAvLyBJZiB0aGUgY2VsbCBpcyBub24tZWRpdGFibGUs
IGVuY2xvc2luZ05vZGVPZlR5cGUgd29uJ3QgcmV0dXJuIGl0IGJ5IGRlZmF1bHQsIHNvCiAgICAg
Ly8gdGVsbCB0aGF0IGZ1bmN0aW9uIHRoYXQgd2UgZG9uJ3QgY2FyZSBpZiBpdCByZXR1cm5zIG5v
bi1lZGl0YWJsZSBub2Rlcy4KLSAgICBOb2RlKiBzdGFydENlbGwgPSBlbmNsb3NpbmdOb2RlT2ZU
eXBlKG1fdXBzdHJlYW1TdGFydCwgJmlzVGFibGVDZWxsLCBmYWxzZSk7Ci0gICAgTm9kZSogZW5k
Q2VsbCA9IGVuY2xvc2luZ05vZGVPZlR5cGUobV9kb3duc3RyZWFtRW5kLCAmaXNUYWJsZUNlbGws
IGZhbHNlKTsKKyAgICBOb2RlKiBzdGFydENlbGwgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKG1fdXBz
dHJlYW1TdGFydCwgJmlzVGFibGVDZWxsLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAg
Tm9kZSogZW5kQ2VsbCA9IGVuY2xvc2luZ05vZGVPZlR5cGUobV9kb3duc3RyZWFtRW5kLCAmaXNU
YWJsZUNlbGwsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICAvLyBGSVhNRTogVGhpcyBp
c24ndCByaWdodC4gIEEgYm9yZGVybGVzcyB0YWJsZSB3aXRoIHR3byByb3dzIGFuZCBhIHNpbmds
ZSBjb2x1bW4gd291bGQgYXBwZWFyIGFzIHR3byBwYXJhZ3JhcGhzLgogICAgIGlmIChlbmRDZWxs
ICYmIGVuZENlbGwgIT0gc3RhcnRDZWxsKQogICAgICAgICBtX21lcmdlQmxvY2tzQWZ0ZXJEZWxl
dGUgPSBmYWxzZTsKQEAgLTI2Miw4ICsyNjIsOCBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQ6OmluaXRpYWxpemVQCiAgICAgLy8gbGlrZSB0aGUgb25lIGJlbG93LCBzaW5jZSBlZGl0aW5n
IGZ1bmN0aW9ucyBzaG91bGQgb2J2aW91c2x5IGFjY2VwdCBlZGl0aW5nIHBvc2l0aW9ucy4KICAg
ICAvLyBGSVhNRTogUGFzc2luZyBmYWxzZSB0byBlbmNsb3NpbmdOb2RlT2ZUeXBlIHRlbGxzIGl0
IHRoYXQgaXQncyBPSyB0byByZXR1cm4gYSBub24tZWRpdGFibGUKICAgICAvLyBub2RlLiAgVGhp
cyB3YXMgZG9uZSB0byBtYXRjaCBleGlzdGluZyBiZWhhdmlvciwgYnV0IGl0IHNlZW1zIHdyb25n
LgotICAgIG1fc3RhcnRCbG9jayA9IGVuY2xvc2luZ05vZGVPZlR5cGUobV9kb3duc3RyZWFtU3Rh
cnQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksICZpc0Jsb2NrLCBmYWxzZSk7Ci0gICAgbV9l
bmRCbG9jayA9IGVuY2xvc2luZ05vZGVPZlR5cGUobV91cHN0cmVhbUVuZC5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSwgJmlzQmxvY2ssIGZhbHNlKTsKKyAgICBtX3N0YXJ0QmxvY2sgPSBlbmNs
b3NpbmdOb2RlT2ZUeXBlKG1fZG93bnN0cmVhbVN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpLCAmaXNCbG9jaywgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpOworICAgIG1fZW5kQmxvY2sg
PSBlbmNsb3NpbmdOb2RlT2ZUeXBlKG1fdXBzdHJlYW1FbmQucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCksICZpc0Jsb2NrLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiB9CiAKIHZvaWQgRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZDo6c2F2ZVR5cGluZ1N0eWxlU3RhdGUoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHJldmlzaW9uIDgwNjQxKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw3
ICsyMjEsNyBAQCBFbGVtZW50KiB1bnNwbGl0dGFibGVFbGVtZW50Rm9yUG9zaXRpb24oCiB7CiAg
ICAgLy8gU2luY2UgZW5jbG9zaW5nTm9kZU9mVHlwZSB3b24ndCBzZWFyY2ggYmV5b25kIHRoZSBo
aWdoZXN0IHJvb3QgZWRpdGFibGUgbm9kZSwKICAgICAvLyB0aGlzIGNvZGUgd29ya3MgZXZlbiBp
ZiB0aGUgY2xvc2VzdCB0YWJsZSBjZWxsIHdhcyBvdXRzaWRlIG9mIHRoZSByb290IGVkaXRhYmxl
IG5vZGUuCi0gICAgRWxlbWVudCogZW5jbG9zaW5nQ2VsbCA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
PihlbmNsb3NpbmdOb2RlT2ZUeXBlKHAsICZpc1RhYmxlQ2VsbCwgdHJ1ZSkpOworICAgIEVsZW1l
bnQqIGVuY2xvc2luZ0NlbGwgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZW5jbG9zaW5nTm9kZU9m
VHlwZShwLCAmaXNUYWJsZUNlbGwpKTsKICAgICBpZiAoZW5jbG9zaW5nQ2VsbCkKICAgICAgICAg
cmV0dXJuIGVuY2xvc2luZ0NlbGw7CiAKQEAgLTMyNyw5ICszMjcsOSBAQCBib29sIGlzQmxvY2so
Y29uc3QgTm9kZSogbm9kZSkKIC8vIEZJWE1FOiBQYXNzIGEgcG9zaXRpb24gdG8gdGhpcyBmdW5j
dGlvbi4gIFRoZSBlbmNsb3NpbmcgYmxvY2sgb2YgW3RhYmxlLCB4XSBmb3IgZXhhbXBsZSwgc2hv
dWxkIGJlIHRoZSAKIC8vIGJsb2NrIHRoYXQgY29udGFpbnMgdGhlIHRhYmxlIGFuZCBub3QgdGhl
IHRhYmxlLCBhbmQgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdGhlIG9ubHkgb25lIHJlc3BvbnNp
YmxlIGZvciAKIC8vIGtub3dpbmcgYWJvdXQgdGhlc2Uga2luZHMgb2Ygc3BlY2lhbCBjYXNlcy4K
LU5vZGUqIGVuY2xvc2luZ0Jsb2NrKE5vZGUqIG5vZGUpCitOb2RlKiBlbmNsb3NpbmdCbG9jayhO
b2RlKiBub2RlLCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkKIHsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKG5vZGUpLCBpc0Jsb2NrKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEVsZW1lbnQqPihlbmNsb3NpbmdOb2RlT2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9k
ZShub2RlKSwgaXNCbG9jaywgcnVsZSkpOwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRv
IGNyZWF0ZSBwb3NpdGlvbnMgaW4gdGhlIERPTS4gSXQgcmV0dXJucyB0aGUgbWF4aW11bSB2YWxp
ZCBvZmZzZXQKQEAgLTYwMyw4ICs2MDMsMTAgQEAgTm9kZSogZW5jbG9zaW5nTm9kZVdpdGhUYWco
Y29uc3QgUG9zaXRpbwogICAgIHJldHVybiAwOwogfQogCi1Ob2RlKiBlbmNsb3NpbmdOb2RlT2ZU
eXBlKGNvbnN0IFBvc2l0aW9uJiBwLCBib29sICgqbm9kZUlzT2ZUeXBlKShjb25zdCBOb2RlKiks
IGJvb2wgb25seVJldHVybkVkaXRhYmxlTm9kZXMpCitOb2RlKiBlbmNsb3NpbmdOb2RlT2ZUeXBl
KGNvbnN0IFBvc2l0aW9uJiBwLCBib29sICgqbm9kZUlzT2ZUeXBlKShjb25zdCBOb2RlKiksIEVk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKQogeworICAgIC8vIEZJWE1FOiBzdXBwb3J0
IENhblNraXBDcm9zc0VkaXRpbmdCb3VuZGFyeQorICAgIEFTU0VSVChydWxlID09IENhbkNyb3Nz
RWRpdGluZ0JvdW5kYXJ5IHx8IHJ1bGUgPT0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwog
ICAgIGlmIChwLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCkBAIC02MTIs
MTEgKzYxNCwxMSBAQCBOb2RlKiBlbmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uCiAg
ICAgZm9yIChOb2RlKiBuID0gcC5kZXByZWNhdGVkTm9kZSgpOyBuOyBuID0gbi0+cGFyZW50Tm9k
ZSgpKSB7CiAgICAgICAgIC8vIERvbid0IHJldHVybiBhIG5vbi1lZGl0YWJsZSBub2RlIGlmIHRo
ZSBpbnB1dCBwb3NpdGlvbiB3YXMgZWRpdGFibGUsIHNpbmNlCiAgICAgICAgIC8vIHRoZSBjYWxs
ZXJzIGZyb20gZWRpdGluZyB3aWxsIG5vIGRvdWJ0IHdhbnQgdG8gcGVyZm9ybSBlZGl0aW5nIGlu
c2lkZSB0aGUgcmV0dXJuZWQgbm9kZS4KLSAgICAgICAgaWYgKHJvb3QgJiYgIW4tPmlzQ29udGVu
dEVkaXRhYmxlKCkgJiYgb25seVJldHVybkVkaXRhYmxlTm9kZXMpCisgICAgICAgIGlmIChyb290
ICYmICFuLT5pc0NvbnRlbnRFZGl0YWJsZSgpICYmIHJ1bGUgPT0gQ2Fubm90Q3Jvc3NFZGl0aW5n
Qm91bmRhcnkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCgqbm9kZUlzT2ZU
eXBlKShuKSkKICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICBpZiAobiA9PSByb290KQor
ICAgICAgICBpZiAobiA9PSByb290ICYmIHJ1bGUgPT0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRh
cnkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9odG1sZWRpdGluZy5oCShyZXZpc2lvbiA4MDY0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBodG1sZWRpdGluZ19oCiAjZGVmaW5lIGh0bWxlZGl0aW5nX2gKIAorI2luY2x1ZGUg
IkVkaXRpbmdCb3VuZGFyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJQb3NpdGlvbi5oIgpAQCAtNTcsMTIgKzU4LDEyIEBA
IE5vZGUqIGhpZ2hlc3RFZGl0YWJsZVJvb3QoY29uc3QgUG9zaXRpb24KIE5vZGUqIGhpZ2hlc3RF
bmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uJiwgYm9vbCAoKm5vZGVJc09mVHlwZSko
Y29uc3QgTm9kZSopKTsKIE5vZGUqIGxvd2VzdEVkaXRhYmxlQW5jZXN0b3IoTm9kZSopOyAgIAog
Ci1Ob2RlKiBlbmNsb3NpbmdCbG9jayhOb2RlKik7CitOb2RlKiBlbmNsb3NpbmdCbG9jayhOb2Rl
KiwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRh
cnkpOwogTm9kZSogZW5jbG9zaW5nVGFibGVDZWxsKGNvbnN0IFBvc2l0aW9uJik7CiBOb2RlKiBl
bmNsb3NpbmdFbXB0eUxpc3RJdGVtKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogTm9kZSogZW5j
bG9zaW5nQW5jaG9yRWxlbWVudChjb25zdCBQb3NpdGlvbiYpOwogTm9kZSogZW5jbG9zaW5nTm9k
ZVdpdGhUYWcoY29uc3QgUG9zaXRpb24mLCBjb25zdCBRdWFsaWZpZWROYW1lJik7Ci1Ob2RlKiBl
bmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uJiwgYm9vbCAoKm5vZGVJc09mVHlwZSko
Y29uc3QgTm9kZSopLCBib29sIG9ubHlSZXR1cm5FZGl0YWJsZU5vZGVzID0gdHJ1ZSk7CitOb2Rl
KiBlbmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uJiwgYm9vbCAoKm5vZGVJc09mVHlw
ZSkoY29uc3QgTm9kZSopLCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5ub3RDcm9z
c0VkaXRpbmdCb3VuZGFyeSk7CiAKIE5vZGUqIHRhYlNwYW5Ob2RlKGNvbnN0IE5vZGUqKTsKIE5v
ZGUqIG5lYXJlc3RNYWlsQmxvY2txdW90ZShjb25zdCBOb2RlKik7CkBAIC0yMzcsNyArMjM4LDcg
QEAgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGMpCiB7CiAgICAgcmV0dXJuIGMgPT0g
bm9CcmVha1NwYWNlIHx8IGMgPT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCc7CiB9Ci1T
dHJpbmcgc3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGJvb2wpOworU3RyaW5nIHN0cmluZ1dpdGhSZWJhbGFuY2VkV2hpdGVzcGFjZShjb25zdCBTdHJp
bmcmLCBib29sIHN0YXJ0SXNTdGFydE9mUGFyYWdyYXBoLCBib29sIGVuZElzRW5kT2ZQYXJhZ3Jh
cGgpOwogY29uc3QgU3RyaW5nJiBub25CcmVha2luZ1NwYWNlU3RyaW5nKCk7CiAKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkocmV2aXNpb24gODA2NDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MTQsNDEgKzkxNCwzNyBAQCBWaXNpYmxlUG9zaXRpb24gbmV4dFBhcmFncmFwaFBv
c2l0aW9uKGNvCiAKIC8vIC0tLS0tLS0tLQogCi1WaXNpYmxlUG9zaXRpb24gc3RhcnRPZkJsb2Nr
KGNvbnN0IFZpc2libGVQb3NpdGlvbiAmYykKK1Zpc2libGVQb3NpdGlvbiBzdGFydE9mQmxvY2so
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICZjLCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVs
ZSkKIHsKICAgICBQb3NpdGlvbiBwID0gYy5kZWVwRXF1aXZhbGVudCgpOwotICAgIE5vZGUqIHN0
YXJ0Tm9kZSA9IHAuZGVwcmVjYXRlZE5vZGUoKTsKLSAgICBpZiAoIXN0YXJ0Tm9kZSkKKyAgICBO
b2RlKiBzdGFydEJsb2NrOworICAgIGlmICghcC5jb250YWluZXJOb2RlKCkgfHwgIShzdGFydEJs
b2NrID0gZW5jbG9zaW5nQmxvY2socC5jb250YWluZXJOb2RlKCksIHJ1bGUpKSkKICAgICAgICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmly
c3RQb3NpdGlvbkluTm9kZShzdGFydE5vZGUtPmVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoKSks
IERPV05TVFJFQU0pOworICAgIHJldHVybiBmaXJzdFBvc2l0aW9uSW5Ob2RlKHN0YXJ0QmxvY2sp
OwogfQogCi1WaXNpYmxlUG9zaXRpb24gZW5kT2ZCbG9jayhjb25zdCBWaXNpYmxlUG9zaXRpb24g
JmMpCitWaXNpYmxlUG9zaXRpb24gZW5kT2ZCbG9jayhjb25zdCBWaXNpYmxlUG9zaXRpb24gJmMs
IEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKQogewogICAgIFBvc2l0aW9uIHAgPSBj
LmRlZXBFcXVpdmFsZW50KCk7Ci0KLSAgICBOb2RlKiBzdGFydE5vZGUgPSBwLmRlcHJlY2F0ZWRO
b2RlKCk7Ci0gICAgaWYgKCFzdGFydE5vZGUpCisgICAgTm9kZSogZW5kQmxvY2s7CisgICAgaWYg
KCFwLmNvbnRhaW5lck5vZGUoKSB8fCAhKGVuZEJsb2NrID0gZW5jbG9zaW5nQmxvY2socC5jb250
YWluZXJOb2RlKCksIHJ1bGUpKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwot
Ci0gICAgTm9kZSAqc3RhcnRCbG9jayA9IHN0YXJ0Tm9kZS0+ZW5jbG9zaW5nQmxvY2tGbG93RWxl
bWVudCgpOwotICAgIAotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9uSW5O
b2RlKHN0YXJ0QmxvY2spLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsgICAKKyAgICByZXR1cm4gbGFz
dFBvc2l0aW9uSW5Ob2RlKGVuZEJsb2NrKTsKIH0KIAogYm9vbCBpblNhbWVCbG9jayhjb25zdCBW
aXNpYmxlUG9zaXRpb24gJmEsIGNvbnN0IFZpc2libGVQb3NpdGlvbiAmYikKIHsKLSAgICByZXR1
cm4gIWEuaXNOdWxsKCkgJiYgZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudChhKSA9PSBlbmNsb3Np
bmdCbG9ja0Zsb3dFbGVtZW50KGIpOworICAgIHJldHVybiAhYS5pc051bGwoKSAmJiBlbmNsb3Np
bmdCbG9jayhhLmRlZXBFcXVpdmFsZW50KCkuY29udGFpbmVyTm9kZSgpKSA9PSBlbmNsb3NpbmdC
bG9jayhiLmRlZXBFcXVpdmFsZW50KCkuY29udGFpbmVyTm9kZSgpKTsKIH0KIAogYm9vbCBpc1N0
YXJ0T2ZCbG9jayhjb25zdCBWaXNpYmxlUG9zaXRpb24gJnBvcykKIHsKLSAgICByZXR1cm4gcG9z
LmlzTm90TnVsbCgpICYmIHBvcyA9PSBzdGFydE9mQmxvY2socG9zKTsKKyAgICByZXR1cm4gcG9z
LmlzTm90TnVsbCgpICYmIHBvcyA9PSBzdGFydE9mQmxvY2socG9zLCBDYW5Dcm9zc0VkaXRpbmdC
b3VuZGFyeSk7CiB9CiAKIGJvb2wgaXNFbmRPZkJsb2NrKGNvbnN0IFZpc2libGVQb3NpdGlvbiAm
cG9zKQogewotICAgIHJldHVybiBwb3MuaXNOb3ROdWxsKCkgJiYgcG9zID09IGVuZE9mQmxvY2so
cG9zKTsKKyAgICByZXR1cm4gcG9zLmlzTm90TnVsbCgpICYmIHBvcyA9PSBlbmRPZkJsb2NrKHBv
cywgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogfQogCiAvLyAtLS0tLS0tLS0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCShyZXZpc2lvbiA4MDY0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw4ICs3Myw4IEBAIGJvb2wgaXNFbmRPZlBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXQKIGJv
b2wgaW5TYW1lUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24gJik7CiAKIC8vIGJsb2NrcyAodHJ1ZSBwYXJhZ3JhcGhzOyBsaW5lIGJyZWFrIGVs
ZW1lbnRzIGRvbid0IGJyZWFrIGJsb2NrcykKLVZpc2libGVQb3NpdGlvbiBzdGFydE9mQmxvY2so
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICYpOwotVmlzaWJsZVBvc2l0aW9uIGVuZE9mQmxvY2soY29u
c3QgVmlzaWJsZVBvc2l0aW9uICYpOworVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZCbG9jayhjb25z
dCBWaXNpYmxlUG9zaXRpb24gJiwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90
Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOworVmlzaWJsZVBvc2l0aW9uIGVuZE9mQmxvY2soY29uc3Qg
VmlzaWJsZVBvc2l0aW9uICYsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENy
b3NzRWRpdGluZ0JvdW5kYXJ5KTsKIGJvb2wgaW5TYW1lQmxvY2soY29uc3QgVmlzaWJsZVBvc2l0
aW9uICYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKIGJvb2wgaXNTdGFydE9mQmxvY2soY29u
c3QgVmlzaWJsZVBvc2l0aW9uICYpOwogYm9vbCBpc0VuZE9mQmxvY2soY29uc3QgVmlzaWJsZVBv
c2l0aW9uICYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85396</attachid>
            <date>2011-03-10 15:30:37 -0800</date>
            <delta_ts>2011-03-10 15:36:43 -0800</delta_ts>
            <desc>Fixed per Tony&apos;s comment</desc>
            <filename>bug-56025-20110310153036.patch</filename>
            <type>text/plain</type>
            <size>12171</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNjQ2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDMtMTAgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgc3RhcnRPZkJsb2NrIGFuZCBlbmRPZkJsb2NrIG1heSByZXR1cm4g
YSBwb3NpdGlvbiBpbnNpZGUgaHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2MDI1CisKKyAgICAgICAgUmVwbGFjZWQgY2FsbHMgdG8gZW5jbG9zaW5n
QmxvY2tGbG93RWxlbWVudCBpbiBzdGFydE9mQmxvY2sgYW5kIGVuZE9mQmxvY2sgYnkKKyAgICAg
ICAgY2FsbHMgdG8gZW5jbG9zaW5nQmxvY2suIEFkZGVkIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5n
UnVsZSB0byB0aGUgYXJndW1lbnQgbGlzdHMKKyAgICAgICAgb2Ygc3RhcnRPZkJsb2NrLCBlbmRP
ZkJsb2NrLCBhbmQgZW5jbG9zaW5nQmxvY2suIEFsc28gcmVwbGFjZWQgdGhlIGxhc3QgYm9vbGVh
bgorICAgICAgICBhcmd1bWVudCB2YXJpYWJsZSBvZiBlbmNsb3NpbmdOb2RlT2ZUeXBlIGJ5IEVk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZS4KKworICAgICAgICBBbHNvIHJlcGxhY2VkIGNhbGxz
IHRvIGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQgaW4gaW5TYW1lQmxvY2sgYnkgY2FsbHMgdG8K
KyAgICAgICAgZW5jbG9zaW5nQmxvY2sgdG8gYmUgY29uc2l0ZW50IHdpdGggc3RhcnRPZkJsb2Nr
IGFuZCBlbmRPZkJsb2NrLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyByZXBsYWNlZCBjYWxs
cyB0byBkZXByZWNhdGVkTm9kZSBpbiBzdGFydE9mQmxvY2ssIGVuZE9mQmxvY2ssCisgICAgICAg
IGFuZCBpblNhbWVCbG9jayBieSBjYWxscyB0byBjb250YWluZXJOb2RlIGJlY2F1c2UgdGhlIGVu
Y2xvc2luZyBibG9jayBvZiBhIHBvc2l0aW9uCisgICAgICAgIHNob3VsZCBuZXZlciBiZSBiZWZv
cmUgb3IgYWZ0ZXIgdGhlIHBvc2l0aW9uLgorCisgICAgICAgIE5vIHRlc3RzIGFyZSBhZGRlZCBi
ZWNhdXNlIHRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBXZWJDb3JlIGludGVybmFsbHkuCisKKyAg
ICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aW5pdGlhbGl6ZVBvc2l0aW9uRGF0YSk6IENh
bGxzIGVuY2xvc2luZ05vZGVPZlR5cGUuCisgICAgICAgIFBhc3MgQ2FuQ3Jvc3NFZGl0aW5nQm91
bmRhcnkgaW5zdGVhZCBvZiBmYWxzZS4KKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnVuc3BsaXR0YWJsZUVsZW1lbnRGb3JQb3NpdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6ZW5jbG9zaW5nQmxvY2spOiBUYWtlcyBFZGl0aW5nQm91
bmRhcnlDcm9zc2luZ1J1bGUgYW5kIHBhc3NlcyBpdCB0bworICAgICAgICBlbmNsb3NpbmdOb2Rl
T2ZUeXBlLgorICAgICAgICAoV2ViQ29yZTo6ZW5jbG9zaW5nTm9kZU9mVHlwZSk6IFRha2VzIEVk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBpbnN0ZWFkIG9mIGJvb2xlYW4uCisgICAgICAgIEZp
eGVkIGEgYnVnIHRoYXQgaXQgc3RvcHMgd2Fsa2luZyB0aGUgdHJlZSB3aGVuIGl0IHJlYWNoZWQg
dGhlIHJvb3QgZWRpdGFibGUgbm9kZQorICAgICAgICBldmVuIHdoZW4gdGhlIGVkaXRpbmcgYm91
bmRhcnkgY3Jvc3NpbmcgcnVsZSBpcyBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeS4KKyAgICAgICAg
KiBlZGl0aW5nL2h0bWxlZGl0aW5nLmg6IFByb3RvdHlwZSBjaGFuZ2VzLgorICAgICAgICAqIGVk
aXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdGFydE9mQmxvY2sp
OiBDYWxscyBlbmNsb3NpbmdCbG9jayBpbnN0ZWFkIG9mIGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1l
bnQuCisgICAgICAgIEFsc28gYWRkZWQgYW4gZWFybHkgZXhpdCB3aGVuIHRoZXJlJ3Mgbm8gZW5j
bG9zaW5nIGJsb2NrLgorICAgICAgICAoV2ViQ29yZTo6ZW5kT2ZCbG9jayk6IERpdHRvLiBUaGUg
ZWFybHkgZXhpc3QgaW4gdGhpcyBjYXNlIHByZXZlbnRzIGNyYXNoIGluCisgICAgICAgIGxhc3RQ
b3NpdGlvbkluTm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OmluU2FtZUJsb2NrKTogQ2FsbHMgZW5j
bG9zaW5nQmxvY2sgaW5zdGVhZCBvZiBlbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50LgorICAgICAg
ICAoV2ViQ29yZTo6aXNTdGFydE9mQmxvY2spOiBDYWxscyBzdGFydE9mQmxvY2sgd2l0aCBDYW5D
cm9zc0VkaXRpbmdCb3VuZGFyeSBiZWNhdXNlCisgICAgICAgIHdlIGRvbid0IGNhcmUgd2hlcmUg
dGhlIHN0YXJ0IG9mIGJsb2NrIGlzIHdoZW4gd2UncmUgY29tcGFyaW5nIGFnYWluc3QgdGhlIGdp
dmVuIHBvc2l0aW9uLgorICAgICAgICAoV2ViQ29yZTo6aXNFbmRPZkJsb2NrKTogRGl0dG8uCisg
ICAgICAgICogZWRpdGluZy92aXNpYmxlX3VuaXRzLmg6CisKIDIwMTEtMDMtMDkgIEplc3NpZSBC
ZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJv
YmVuLgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCShyZXZpc2lvbiA4MDY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw4ICsxODgs
OCBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmluaXRpYWxpemVQCiAgICAgLy8gRG9u
J3QgbW92ZSBjb250ZW50IG91dCBvZiBhIHRhYmxlIGNlbGwuCiAgICAgLy8gSWYgdGhlIGNlbGwg
aXMgbm9uLWVkaXRhYmxlLCBlbmNsb3NpbmdOb2RlT2ZUeXBlIHdvbid0IHJldHVybiBpdCBieSBk
ZWZhdWx0LCBzbwogICAgIC8vIHRlbGwgdGhhdCBmdW5jdGlvbiB0aGF0IHdlIGRvbid0IGNhcmUg
aWYgaXQgcmV0dXJucyBub24tZWRpdGFibGUgbm9kZXMuCi0gICAgTm9kZSogc3RhcnRDZWxsID0g
ZW5jbG9zaW5nTm9kZU9mVHlwZShtX3Vwc3RyZWFtU3RhcnQsICZpc1RhYmxlQ2VsbCwgZmFsc2Up
OwotICAgIE5vZGUqIGVuZENlbGwgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKG1fZG93bnN0cmVhbUVu
ZCwgJmlzVGFibGVDZWxsLCBmYWxzZSk7CisgICAgTm9kZSogc3RhcnRDZWxsID0gZW5jbG9zaW5n
Tm9kZU9mVHlwZShtX3Vwc3RyZWFtU3RhcnQsICZpc1RhYmxlQ2VsbCwgQ2FuQ3Jvc3NFZGl0aW5n
Qm91bmRhcnkpOworICAgIE5vZGUqIGVuZENlbGwgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKG1fZG93
bnN0cmVhbUVuZCwgJmlzVGFibGVDZWxsLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAg
Ly8gRklYTUU6IFRoaXMgaXNuJ3QgcmlnaHQuICBBIGJvcmRlcmxlc3MgdGFibGUgd2l0aCB0d28g
cm93cyBhbmQgYSBzaW5nbGUgY29sdW1uIHdvdWxkIGFwcGVhciBhcyB0d28gcGFyYWdyYXBocy4K
ICAgICBpZiAoZW5kQ2VsbCAmJiBlbmRDZWxsICE9IHN0YXJ0Q2VsbCkKICAgICAgICAgbV9tZXJn
ZUJsb2Nrc0FmdGVyRGVsZXRlID0gZmFsc2U7CkBAIC0yNjIsOCArMjYyLDggQEAgdm9pZCBEZWxl
dGVTZWxlY3Rpb25Db21tYW5kOjppbml0aWFsaXplUAogICAgIC8vIGxpa2UgdGhlIG9uZSBiZWxv
dywgc2luY2UgZWRpdGluZyBmdW5jdGlvbnMgc2hvdWxkIG9idmlvdXNseSBhY2NlcHQgZWRpdGlu
ZyBwb3NpdGlvbnMuCiAgICAgLy8gRklYTUU6IFBhc3NpbmcgZmFsc2UgdG8gZW5jbG9zaW5nTm9k
ZU9mVHlwZSB0ZWxscyBpdCB0aGF0IGl0J3MgT0sgdG8gcmV0dXJuIGEgbm9uLWVkaXRhYmxlCiAg
ICAgLy8gbm9kZS4gIFRoaXMgd2FzIGRvbmUgdG8gbWF0Y2ggZXhpc3RpbmcgYmVoYXZpb3IsIGJ1
dCBpdCBzZWVtcyB3cm9uZy4KLSAgICBtX3N0YXJ0QmxvY2sgPSBlbmNsb3NpbmdOb2RlT2ZUeXBl
KG1fZG93bnN0cmVhbVN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCAmaXNCbG9jaywg
ZmFsc2UpOwotICAgIG1fZW5kQmxvY2sgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKG1fdXBzdHJlYW1F
bmQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksICZpc0Jsb2NrLCBmYWxzZSk7CisgICAgbV9z
dGFydEJsb2NrID0gZW5jbG9zaW5nTm9kZU9mVHlwZShtX2Rvd25zdHJlYW1TdGFydC5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSwgJmlzQmxvY2ssIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KTsK
KyAgICBtX2VuZEJsb2NrID0gZW5jbG9zaW5nTm9kZU9mVHlwZShtX3Vwc3RyZWFtRW5kLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpLCAmaXNCbG9jaywgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkp
OwogfQogCiB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnNhdmVUeXBpbmdTdHlsZVN0YXRl
KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCShyZXZpc2lvbiA4
MDY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjEsNyArMjIxLDcgQEAgRWxlbWVudCogdW5zcGxpdHRhYmxlRWxlbWVudEZv
clBvc2l0aW9uKAogewogICAgIC8vIFNpbmNlIGVuY2xvc2luZ05vZGVPZlR5cGUgd29uJ3Qgc2Vh
cmNoIGJleW9uZCB0aGUgaGlnaGVzdCByb290IGVkaXRhYmxlIG5vZGUsCiAgICAgLy8gdGhpcyBj
b2RlIHdvcmtzIGV2ZW4gaWYgdGhlIGNsb3Nlc3QgdGFibGUgY2VsbCB3YXMgb3V0c2lkZSBvZiB0
aGUgcm9vdCBlZGl0YWJsZSBub2RlLgotICAgIEVsZW1lbnQqIGVuY2xvc2luZ0NlbGwgPSBzdGF0
aWNfY2FzdDxFbGVtZW50Kj4oZW5jbG9zaW5nTm9kZU9mVHlwZShwLCAmaXNUYWJsZUNlbGwsIHRy
dWUpKTsKKyAgICBFbGVtZW50KiBlbmNsb3NpbmdDZWxsID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KGVuY2xvc2luZ05vZGVPZlR5cGUocCwgJmlzVGFibGVDZWxsKSk7CiAgICAgaWYgKGVuY2xvc2lu
Z0NlbGwpCiAgICAgICAgIHJldHVybiBlbmNsb3NpbmdDZWxsOwogCkBAIC0zMjcsOSArMzI3LDkg
QEAgYm9vbCBpc0Jsb2NrKGNvbnN0IE5vZGUqIG5vZGUpCiAvLyBGSVhNRTogUGFzcyBhIHBvc2l0
aW9uIHRvIHRoaXMgZnVuY3Rpb24uICBUaGUgZW5jbG9zaW5nIGJsb2NrIG9mIFt0YWJsZSwgeF0g
Zm9yIGV4YW1wbGUsIHNob3VsZCBiZSB0aGUgCiAvLyBibG9jayB0aGF0IGNvbnRhaW5zIHRoZSB0
YWJsZSBhbmQgbm90IHRoZSB0YWJsZSwgYW5kIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHRoZSBv
bmx5IG9uZSByZXNwb25zaWJsZSBmb3IgCiAvLyBrbm93aW5nIGFib3V0IHRoZXNlIGtpbmRzIG9m
IHNwZWNpYWwgY2FzZXMuCi1Ob2RlKiBlbmNsb3NpbmdCbG9jayhOb2RlKiBub2RlKQorTm9kZSog
ZW5jbG9zaW5nQmxvY2soTm9kZSogbm9kZSwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1
bGUpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihlbmNsb3NpbmdOb2RlT2ZU
eXBlKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKSwgaXNCbG9jaykpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZW5jbG9zaW5nTm9kZU9mVHlwZShmaXJzdFBvc2l0
aW9uSW5PckJlZm9yZU5vZGUobm9kZSksIGlzQmxvY2ssIHJ1bGUpKTsKIH0KIAogLy8gVGhpcyBt
ZXRob2QgaXMgdXNlZCB0byBjcmVhdGUgcG9zaXRpb25zIGluIHRoZSBET00uIEl0IHJldHVybnMg
dGhlIG1heGltdW0gdmFsaWQgb2Zmc2V0CkBAIC02MDMsOCArNjAzLDEwIEBAIE5vZGUqIGVuY2xv
c2luZ05vZGVXaXRoVGFnKGNvbnN0IFBvc2l0aW8KICAgICByZXR1cm4gMDsKIH0KIAotTm9kZSog
ZW5jbG9zaW5nTm9kZU9mVHlwZShjb25zdCBQb3NpdGlvbiYgcCwgYm9vbCAoKm5vZGVJc09mVHlw
ZSkoY29uc3QgTm9kZSopLCBib29sIG9ubHlSZXR1cm5FZGl0YWJsZU5vZGVzKQorTm9kZSogZW5j
bG9zaW5nTm9kZU9mVHlwZShjb25zdCBQb3NpdGlvbiYgcCwgYm9vbCAoKm5vZGVJc09mVHlwZSko
Y29uc3QgTm9kZSopLCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkKIHsKKyAgICAv
LyBGSVhNRTogc3VwcG9ydCBDYW5Ta2lwQ3Jvc3NFZGl0aW5nQm91bmRhcnkKKyAgICBBU1NFUlQo
cnVsZSA9PSBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSB8fCBydWxlID09IENhbm5vdENyb3NzRWRp
dGluZ0JvdW5kYXJ5KTsKICAgICBpZiAocC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIApAQCAtNjEyLDExICs2MTQsMTEgQEAgTm9kZSogZW5jbG9zaW5nTm9kZU9mVHlwZShj
b25zdCBQb3NpdGlvbgogICAgIGZvciAoTm9kZSogbiA9IHAuZGVwcmVjYXRlZE5vZGUoKTsgbjsg
biA9IG4tPnBhcmVudE5vZGUoKSkgewogICAgICAgICAvLyBEb24ndCByZXR1cm4gYSBub24tZWRp
dGFibGUgbm9kZSBpZiB0aGUgaW5wdXQgcG9zaXRpb24gd2FzIGVkaXRhYmxlLCBzaW5jZQogICAg
ICAgICAvLyB0aGUgY2FsbGVycyBmcm9tIGVkaXRpbmcgd2lsbCBubyBkb3VidCB3YW50IHRvIHBl
cmZvcm0gZWRpdGluZyBpbnNpZGUgdGhlIHJldHVybmVkIG5vZGUuCi0gICAgICAgIGlmIChyb290
ICYmICFuLT5pc0NvbnRlbnRFZGl0YWJsZSgpICYmIG9ubHlSZXR1cm5FZGl0YWJsZU5vZGVzKQor
ICAgICAgICBpZiAocm9vdCAmJiAhbi0+aXNDb250ZW50RWRpdGFibGUoKSAmJiBydWxlID09IENh
bm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGlmICgoKm5vZGVJc09mVHlwZSkobikpCiAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAg
aWYgKG4gPT0gcm9vdCkKKyAgICAgICAgaWYgKG4gPT0gcm9vdCAmJiBydWxlID09IENhbm5vdENy
b3NzRWRpdGluZ0JvdW5kYXJ5KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIApJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkocmV2aXNpb24gODA2NDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgaHRtbGVkaXRpbmdfaAogI2RlZmluZSBodG1sZWRpdGlu
Z19oCiAKKyNpbmNsdWRlICJFZGl0aW5nQm91bmRhcnkuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUG9zaXRpb24uaCIKQEAg
LTU3LDEyICs1OCwxMiBAQCBOb2RlKiBoaWdoZXN0RWRpdGFibGVSb290KGNvbnN0IFBvc2l0aW9u
CiBOb2RlKiBoaWdoZXN0RW5jbG9zaW5nTm9kZU9mVHlwZShjb25zdCBQb3NpdGlvbiYsIGJvb2wg
KCpub2RlSXNPZlR5cGUpKGNvbnN0IE5vZGUqKSk7CiBOb2RlKiBsb3dlc3RFZGl0YWJsZUFuY2Vz
dG9yKE5vZGUqKTsgICAKIAotTm9kZSogZW5jbG9zaW5nQmxvY2soTm9kZSopOworTm9kZSogZW5j
bG9zaW5nQmxvY2soTm9kZSosIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENy
b3NzRWRpdGluZ0JvdW5kYXJ5KTsKIE5vZGUqIGVuY2xvc2luZ1RhYmxlQ2VsbChjb25zdCBQb3Np
dGlvbiYpOwogTm9kZSogZW5jbG9zaW5nRW1wdHlMaXN0SXRlbShjb25zdCBWaXNpYmxlUG9zaXRp
b24mKTsKIE5vZGUqIGVuY2xvc2luZ0FuY2hvckVsZW1lbnQoY29uc3QgUG9zaXRpb24mKTsKIE5v
ZGUqIGVuY2xvc2luZ05vZGVXaXRoVGFnKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotTm9kZSogZW5jbG9zaW5nTm9kZU9mVHlwZShjb25zdCBQb3NpdGlvbiYsIGJvb2wg
KCpub2RlSXNPZlR5cGUpKGNvbnN0IE5vZGUqKSwgYm9vbCBvbmx5UmV0dXJuRWRpdGFibGVOb2Rl
cyA9IHRydWUpOworTm9kZSogZW5jbG9zaW5nTm9kZU9mVHlwZShjb25zdCBQb3NpdGlvbiYsIGJv
b2wgKCpub2RlSXNPZlR5cGUpKGNvbnN0IE5vZGUqKSwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdS
dWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogCiBOb2RlKiB0YWJTcGFuTm9kZShj
b25zdCBOb2RlKik7CiBOb2RlKiBuZWFyZXN0TWFpbEJsb2NrcXVvdGUoY29uc3QgTm9kZSopOwpA
QCAtMjM3LDcgKzIzOCw3IEBAIGlubGluZSBib29sIGlzV2hpdGVzcGFjZShVQ2hhciBjKQogewog
ICAgIHJldHVybiBjID09IG5vQnJlYWtTcGFjZSB8fCBjID09ICcgJyB8fCBjID09ICdcbicgfHwg
YyA9PSAnXHQnOwogfQotU3RyaW5nIHN0cmluZ1dpdGhSZWJhbGFuY2VkV2hpdGVzcGFjZShjb25z
dCBTdHJpbmcmLCBib29sLCBib29sKTsKK1N0cmluZyBzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRl
c3BhY2UoY29uc3QgU3RyaW5nJiwgYm9vbCBzdGFydElzU3RhcnRPZlBhcmFncmFwaCwgYm9vbCBl
bmRJc0VuZE9mUGFyYWdyYXBoKTsKIGNvbnN0IFN0cmluZyYgbm9uQnJlYWtpbmdTcGFjZVN0cmlu
ZygpOwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJ
KHJldmlzaW9uIDgwNjQxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTE0LDQxICs5MTQsMzcgQEAgVmlzaWJsZVBvc2l0aW9u
IG5leHRQYXJhZ3JhcGhQb3NpdGlvbihjbwogCiAvLyAtLS0tLS0tLS0KIAotVmlzaWJsZVBvc2l0
aW9uIHN0YXJ0T2ZCbG9jayhjb25zdCBWaXNpYmxlUG9zaXRpb24gJmMpCitWaXNpYmxlUG9zaXRp
b24gc3RhcnRPZkJsb2NrKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBF
ZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkKIHsKLSAgICBQb3NpdGlvbiBwID0gYy5k
ZWVwRXF1aXZhbGVudCgpOwotICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHAuZGVwcmVjYXRlZE5vZGUo
KTsKLSAgICBpZiAoIXN0YXJ0Tm9kZSkKKyAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQ
b3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOworICAgIE5vZGUqIHN0YXJ0QmxvY2s7CisgICAgaWYg
KCFwb3NpdGlvbi5jb250YWluZXJOb2RlKCkgfHwgIShzdGFydEJsb2NrID0gZW5jbG9zaW5nQmxv
Y2socG9zaXRpb24uY29udGFpbmVyTm9kZSgpLCBydWxlKSkpCiAgICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24oKTsKLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25J
bk5vZGUoc3RhcnROb2RlLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCkpLCBET1dOU1RSRUFN
KTsKKyAgICByZXR1cm4gZmlyc3RQb3NpdGlvbkluTm9kZShzdGFydEJsb2NrKTsKIH0KIAotVmlz
aWJsZVBvc2l0aW9uIGVuZE9mQmxvY2soY29uc3QgVmlzaWJsZVBvc2l0aW9uICZjKQorVmlzaWJs
ZVBvc2l0aW9uIGVuZE9mQmxvY2soY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRp
b24sIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKQogewotICAgIFBvc2l0aW9uIHAg
PSBjLmRlZXBFcXVpdmFsZW50KCk7Ci0KLSAgICBOb2RlKiBzdGFydE5vZGUgPSBwLmRlcHJlY2F0
ZWROb2RlKCk7Ci0gICAgaWYgKCFzdGFydE5vZGUpCisgICAgUG9zaXRpb24gcG9zaXRpb24gPSB2
aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKKyAgICBOb2RlKiBlbmRCbG9jazsKKyAg
ICBpZiAoIXBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSB8fCAhKGVuZEJsb2NrID0gZW5jbG9zaW5n
QmxvY2socG9zaXRpb24uY29udGFpbmVyTm9kZSgpLCBydWxlKSkpCiAgICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oKTsKLQotICAgIE5vZGUgKnN0YXJ0QmxvY2sgPSBzdGFydE5vZGUtPmVu
Y2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoKTsKLSAgICAKLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKGxhc3RQb3NpdGlvbkluTm9kZShzdGFydEJsb2NrKSwgVlBfREVGQVVMVF9BRkZJTklUWSk7
ICAgCisgICAgcmV0dXJuIGxhc3RQb3NpdGlvbkluTm9kZShlbmRCbG9jayk7CiB9CiAKIGJvb2wg
aW5TYW1lQmxvY2soY29uc3QgVmlzaWJsZVBvc2l0aW9uICZhLCBjb25zdCBWaXNpYmxlUG9zaXRp
b24gJmIpCiB7Ci0gICAgcmV0dXJuICFhLmlzTnVsbCgpICYmIGVuY2xvc2luZ0Jsb2NrRmxvd0Vs
ZW1lbnQoYSkgPT0gZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudChiKTsKKyAgICByZXR1cm4gIWEu
aXNOdWxsKCkgJiYgZW5jbG9zaW5nQmxvY2soYS5kZWVwRXF1aXZhbGVudCgpLmNvbnRhaW5lck5v
ZGUoKSkgPT0gZW5jbG9zaW5nQmxvY2soYi5kZWVwRXF1aXZhbGVudCgpLmNvbnRhaW5lck5vZGUo
KSk7CiB9CiAKIGJvb2wgaXNTdGFydE9mQmxvY2soY29uc3QgVmlzaWJsZVBvc2l0aW9uICZwb3Mp
CiB7Ci0gICAgcmV0dXJuIHBvcy5pc05vdE51bGwoKSAmJiBwb3MgPT0gc3RhcnRPZkJsb2NrKHBv
cyk7CisgICAgcmV0dXJuIHBvcy5pc05vdE51bGwoKSAmJiBwb3MgPT0gc3RhcnRPZkJsb2NrKHBv
cywgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogfQogCiBib29sIGlzRW5kT2ZCbG9jayhjb25z
dCBWaXNpYmxlUG9zaXRpb24gJnBvcykKIHsKLSAgICByZXR1cm4gcG9zLmlzTm90TnVsbCgpICYm
IHBvcyA9PSBlbmRPZkJsb2NrKHBvcyk7CisgICAgcmV0dXJuIHBvcy5pc05vdE51bGwoKSAmJiBw
b3MgPT0gZW5kT2ZCbG9jayhwb3MsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKIH0KIAogLy8g
LS0tLS0tLS0tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuaAkocmV2
aXNpb24gODA2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuaAko
d29ya2luZyBjb3B5KQpAQCAtNzMsOCArNzMsOCBAQCBib29sIGlzRW5kT2ZQYXJhZ3JhcGgoY29u
c3QgVmlzaWJsZVBvc2l0CiBib29sIGluU2FtZVBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRp
b24gJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uICYpOwogCiAvLyBibG9ja3MgKHRydWUgcGFyYWdy
YXBoczsgbGluZSBicmVhayBlbGVtZW50cyBkb24ndCBicmVhayBibG9ja3MpCi1WaXNpYmxlUG9z
aXRpb24gc3RhcnRPZkJsb2NrKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKLVZpc2libGVQb3Np
dGlvbiBlbmRPZkJsb2NrKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKK1Zpc2libGVQb3NpdGlv
biBzdGFydE9mQmxvY2soY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIEVkaXRpbmdCb3VuZGFyeUNy
b3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKK1Zpc2libGVQb3NpdGlv
biBlbmRPZkJsb2NrKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmLCBFZGl0aW5nQm91bmRhcnlDcm9z
c2luZ1J1bGUgPSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiBib29sIGluU2FtZUJsb2Nr
KGNvbnN0IFZpc2libGVQb3NpdGlvbiAmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7CiBib29s
IGlzU3RhcnRPZkJsb2NrKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKIGJvb2wgaXNFbmRPZkJs
b2NrKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsK
</data>
<flag name="review"
          id="77514"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>