<?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>126600</bug_id>
          
          <creation_ts>2014-01-07 14:22:56 -0800</creation_ts>
          <short_desc>DFG fixup phase should be responsible for inserting ValueToInt32&apos;s as needed and it should use Phantom to keep the original values alive in case of OSR exit</short_desc>
          <delta_ts>2014-01-07 16:23:36 -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>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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>126590</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>965164</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-07 14:22:56 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965170</commentid>
    <comment_count>1</comment_count>
      <attachid>220550</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-07 14:30:39 -0800</bug_when>
    <thetext>Created attachment 220550
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965176</commentid>
    <comment_count>2</comment_count>
      <attachid>220550</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-01-07 14:47:09 -0800</bug_when>
    <thetext>Comment on attachment 220550
the patch

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

r+ with comments.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        was the only exception to that rule, and that was one of the reasons why we had this bug.

Provide a description of what you did.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1558
&gt; +        Node* charCode = addToGraph(StringCharCodeAt, OpInfo(ArrayMode(Array::String).asWord()), get(VirtualRegister(thisOperand)), get(indexOperand));

Why the VirtualRegister(thisOperand)?  Use thisOperand directly.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1570
&gt; +        Node* charCode = addToGraph(StringCharAt, OpInfo(ArrayMode(Array::String).asWord()), get(VirtualRegister(thisOperand)), get(indexOperand));

Why the VirtualRegister(thisOperand)?  Use thisOperand directly.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1618
&gt; +            fixIntEdge(m_currentNode-&gt;child1()) | fixIntEdge(m_currentNode-&gt;child2());

You really want a binary OR (|) and not a logical OR (||)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965177</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-07 14:49:26 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 220550 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220550&amp;action=review
&gt; 
&gt; r+ with comments.
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:10
&gt; &gt; +        was the only exception to that rule, and that was one of the reasons why we had this bug.
&gt; 
&gt; Provide a description of what you did.

OK!

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1558
&gt; &gt; +        Node* charCode = addToGraph(StringCharCodeAt, OpInfo(ArrayMode(Array::String).asWord()), get(VirtualRegister(thisOperand)), get(indexOperand));
&gt; 
&gt; Why the VirtualRegister(thisOperand)?  Use thisOperand directly.

Oops.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1570
&gt; &gt; +        Node* charCode = addToGraph(StringCharAt, OpInfo(ArrayMode(Array::String).asWord()), get(VirtualRegister(thisOperand)), get(indexOperand));
&gt; 
&gt; Why the VirtualRegister(thisOperand)?  Use thisOperand directly.

Oops.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1618
&gt; &gt; +            fixIntEdge(m_currentNode-&gt;child1()) | fixIntEdge(m_currentNode-&gt;child2());
&gt; 
&gt; You really want a binary OR (|) and not a logical OR (||)?

Yes.  I want to call fixIntEdge() on both edges.  And then if either one of those calls returns true, I want to do the Phantom thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965179</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-01-07 14:53:11 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 220550 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220550&amp;action=review

&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1618
&gt; &gt; &gt; +            fixIntEdge(m_currentNode-&gt;child1()) | fixIntEdge(m_currentNode-&gt;child2());
&gt; &gt; 
&gt; &gt; You really want a binary OR (|) and not a logical OR (||)?
&gt; 
&gt; Yes.  I want to call fixIntEdge() on both edges.  And then if either one of those calls returns true, I want to do the Phantom thing.

Okay.  Then it may make sense to put a comment so someone doesn&apos;t come along and ruin things by turning it into a &quot;||&quot;.  Something about making sure both calls are made instead of the compiler optimizing out the second call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965181</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-07 14:55:09 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; (From update of attachment 220550 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220550&amp;action=review
&gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1618
&gt; &gt; &gt; &gt; +            fixIntEdge(m_currentNode-&gt;child1()) | fixIntEdge(m_currentNode-&gt;child2());
&gt; &gt; &gt; 
&gt; &gt; &gt; You really want a binary OR (|) and not a logical OR (||)?
&gt; &gt; 
&gt; &gt; Yes.  I want to call fixIntEdge() on both edges.  And then if either one of those calls returns true, I want to do the Phantom thing.
&gt; 
&gt; Okay.  Then it may make sense to put a comment so someone doesn&apos;t come along and ruin things by turning it into a &quot;||&quot;.  Something about making sure both calls are made instead of the compiler optimizing out the second call.

Added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965239</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-07 16:23:36 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/161465</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220550</attachid>
            <date>2014-01-07 14:30:39 -0800</date>
            <delta_ts>2014-01-07 14:47:09 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>17239</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNDU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDE0LTAxLTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGZpeHVwIHBoYXNlIHNob3VsZCBiZSByZXNwb25zaWJsZSBmb3IgaW5zZXJ0aW5nIFZhbHVl
VG9JbnQzMidzIGFzIG5lZWRlZCBhbmQgaXQgc2hvdWxkIHVzZSBQaGFudG9tIHRvIGtlZXAgdGhl
IG9yaWdpbmFsIHZhbHVlcyBhbGl2ZSBpbiBjYXNlIG9mIE9TUiBleGl0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY2MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZml4ZXMgYW4g
ZW1iYXJyYXNzaW5nIE9TUiBleGl0IGxpdmVuZXNzIGJ1Zy4gSXQgYWxzbyBzaW1wbGlmaWVzIHRo
ZSBjb2RlLiBXZSB3ZXJlCisgICAgICAgIGFscmVhZHkgdXNpbmcgRml4dXBQaGFzZSBhcyB0aGUg
cGxhY2Ugd2hlcmUgY29udmVyc2lvbiBub2RlcyBnZXQgaW5zZXJ0ZWQuIFZhbHVlVG9JbnQzMgor
ICAgICAgICB3YXMgdGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoYXQgcnVsZSwgYW5kIHRoYXQgd2Fz
IG9uZSBvZiB0aGUgcmVhc29ucyB3aHkgd2UgaGFkIHRoaXMgYnVnLgorCisgICAgICAgICogZGZn
L0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U6OmlzV2l0aGluUG93ZXJPZlR3byk6CisgICAgICAgIChK
U0M6OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWMpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXhJbnRFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXhCaW5hcnlJbnRFZGdlcyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYml0LW9wLXZhbHVlLXRv
LWludDMyLWlucHV0LWxpdmVuZXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIwMTQt
MDEtMDcgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXBhdGNoIHdyaXRlIGJhcnJpZXIgc2xvdyBwYXRoIGNhbGwgZG9lc24ndCBhbGlnbiB0aGUg
c3RhY2sgaW4gdGhlIHByZXNlbmNlIG9mIHNhdmVkIHJlZ2lzdGVycwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxNjE0NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQs
OCArMTE0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEJpdE9yOgog
ICAgICAgICBjYXNlIEJpdFhvcjoKLSAgICAgICAgY2FzZSBCaXRMU2hpZnQ6Ci0gICAgICAgIGNh
c2UgVmFsdWVUb0ludDMyOiB7CisgICAgICAgIGNhc2UgQml0TFNoaWZ0OiB7CiAgICAgICAgICAg
ICByZXR1cm4gcG93ZXIgPiAzMTsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yMDUsMTMg
KzIwNCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOiB7Ci0gICAgICAgICAgICBmbGFncyB8
PSBOb2RlQnl0ZWNvZGVVc2VzQXNJbnQ7Ci0gICAgICAgICAgICBmbGFncyAmPSB+KE5vZGVCeXRl
Y29kZVVzZXNBc051bWJlciB8IE5vZGVCeXRlY29kZU5lZWRzTmVnWmVybyB8IE5vZGVCeXRlY29k
ZVVzZXNBc090aGVyKTsKLSAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKGZs
YWdzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OiB7CiAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+
bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVVc2VzQXNWYWx1ZSk7CiAgICAgICAgICAgICBub2RlLT5j
aGlsZDIoKS0+bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVVc2VzQXNWYWx1ZSB8IE5vZGVCeXRlY29k
ZVVzZXNBc0ludCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTYxNDUzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNSwzMCAr
NTA1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgZmx1c2gobV9pbmxpbmVTdGFja1RvcCk7CiAgICAg
fQogCi0gICAgLy8gR2V0IGFuIG9wZXJhbmQsIGFuZCBwZXJmb3JtIGEgVG9JbnQzMi9Ub051bWJl
ciBjb252ZXJzaW9uIG9uIGl0LgotICAgIE5vZGUqIGdldFRvSW50MzIoaW50IG9wZXJhbmQpCi0g
ICAgewotICAgICAgICByZXR1cm4gdG9JbnQzMihnZXQoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQp
KSk7Ci0gICAgfQotCi0gICAgLy8gUGVyZm9ybSBhbiBFUzUgVG9JbnQzMiBvcGVyYXRpb24gLSBy
ZXR1cm5zIGEgbm9kZSBvZiB0eXBlIE5vZGVSZXN1bHRJbnQzMi4KLSAgICBOb2RlKiB0b0ludDMy
KE5vZGUqIG5vZGUpCi0gICAgewotICAgICAgICBpZiAobm9kZS0+aGFzSW50MzJSZXN1bHQoKSkK
LSAgICAgICAgICAgIHJldHVybiBub2RlOwotCi0gICAgICAgIC8vIENoZWNrIGZvciBudW1lcmlj
IGNvbnN0YW50cyBib3hlZCBhcyBKU1ZhbHVlcy4KLSAgICAgICAgaWYgKGNhbkZvbGQobm9kZSkp
IHsKLSAgICAgICAgICAgIEpTVmFsdWUgdiA9IHZhbHVlT2ZKU0NvbnN0YW50KG5vZGUpOwotICAg
ICAgICAgICAgaWYgKHYuaXNJbnQzMigpKQotICAgICAgICAgICAgICAgIHJldHVybiBnZXRKU0Nv
bnN0YW50KG5vZGUtPmNvbnN0YW50TnVtYmVyKCkpOwotICAgICAgICAgICAgaWYgKHYuaXNOdW1i
ZXIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SlNDb25zdGFudEZvclZhbHVlKEpTVmFs
dWUoSlNDOjp0b0ludDMyKHYuYXNOdW1iZXIoKSkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiBhZGRUb0dyYXBoKFZhbHVlVG9JbnQzMiwgbm9kZSk7Ci0gICAgfQotCiAgICAgLy8gTk9U
RTogT25seSB1c2UgdGhpcyB0byBjb25zdHJ1Y3QgY29uc3RhbnRzIHRoYXQgYXJpc2UgZnJvbSBu
b24tc3BlY3VsYXRpdmUKICAgICAvLyBjb25zdGFudCBmb2xkaW5nLiBJLmUuIGNyZWF0aW5nIGNv
bnN0YW50cyB1c2luZyB0aGlzIGlmIHdlIGhhZCBjb25zdGFudAogICAgIC8vIGZpZWxkIGluZmVy
ZW5jZSB3b3VsZCBiZSBhIGJhZCBpZGVhLCBzaW5jZSB0aGUgYnl0ZWNvZGUgcGFyc2VyJ3MgZm9s
ZGluZwpAQCAtMTU3Nyw5ICsxNTUzLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50
cmluc2ljKGludAogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpbnQgdGhpc09wZXJhbmQgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCkub2Zmc2V0KCk7Ci0g
ICAgICAgIGludCBpbmRleE9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCBy
ZWdpc3Rlck9mZnNldCkub2Zmc2V0KCk7Ci0gICAgICAgIE5vZGUqIGNoYXJDb2RlID0gYWRkVG9H
cmFwaChTdHJpbmdDaGFyQ29kZUF0LCBPcEluZm8oQXJyYXlNb2RlKEFycmF5OjpTdHJpbmcpLmFz
V29yZCgpKSwgZ2V0KFZpcnR1YWxSZWdpc3Rlcih0aGlzT3BlcmFuZCkpLCBnZXRUb0ludDMyKGlu
ZGV4T3BlcmFuZCkpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc09wZXJhbmQgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCk7CisgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBpbmRleE9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCBy
ZWdpc3Rlck9mZnNldCk7CisgICAgICAgIE5vZGUqIGNoYXJDb2RlID0gYWRkVG9HcmFwaChTdHJp
bmdDaGFyQ29kZUF0LCBPcEluZm8oQXJyYXlNb2RlKEFycmF5OjpTdHJpbmcpLmFzV29yZCgpKSwg
Z2V0KFZpcnR1YWxSZWdpc3Rlcih0aGlzT3BlcmFuZCkpLCBnZXQoaW5kZXhPcGVyYW5kKSk7CiAK
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgY2hhckNvZGUpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1ODksOSArMTU2NSw5IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpYyhpbnQKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICE9IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaW50
IHRoaXNPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZz
ZXQpLm9mZnNldCgpOwotICAgICAgICBpbnQgaW5kZXhPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpLm9mZnNldCgpOwotICAgICAgICBOb2RlKiBj
aGFyQ29kZSA9IGFkZFRvR3JhcGgoU3RyaW5nQ2hhckF0LCBPcEluZm8oQXJyYXlNb2RlKEFycmF5
OjpTdHJpbmcpLmFzV29yZCgpKSwgZ2V0KFZpcnR1YWxSZWdpc3Rlcih0aGlzT3BlcmFuZCkpLCBn
ZXRUb0ludDMyKGluZGV4T3BlcmFuZCkpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc09w
ZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCk7Cisg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBpbmRleE9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCk7CisgICAgICAgIE5vZGUqIGNoYXJDb2RlID0gYWRk
VG9HcmFwaChTdHJpbmdDaGFyQXQsIE9wSW5mbyhBcnJheU1vZGUoQXJyYXk6OlN0cmluZykuYXNX
b3JkKCkpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKHRoaXNPcGVyYW5kKSksIGdldChpbmRleE9wZXJh
bmQpKTsKIAogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBjaGFy
Q29kZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTYwMCw4ICsxNTc2LDggQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljKGludAogICAgICAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICBpbnQgaW5kZXhPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVn
aXN0ZXJPZmZzZXQpLm9mZnNldCgpOwotICAgICAgICBOb2RlKiBjaGFyQ29kZSA9IGFkZFRvR3Jh
cGgoU3RyaW5nRnJvbUNoYXJDb2RlLCBnZXRUb0ludDMyKGluZGV4T3BlcmFuZCkpOworICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgaW5kZXhPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoMSwgcmVnaXN0ZXJPZmZzZXQpOworICAgICAgICBOb2RlKiBjaGFyQ29kZSA9IGFkZFRvR3Jh
cGgoU3RyaW5nRnJvbUNoYXJDb2RlLCBnZXQoaW5kZXhPcGVyYW5kKSk7CiAKICAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgY2hhckNvZGUpOwogCkBAIC0xNjMxLDEw
ICsxNjA3LDEwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyhpbnQKICAg
ICBjYXNlIElNdWxJbnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICE9IDMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGludCBsZWZ0
T3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KS5v
ZmZzZXQoKTsKLSAgICAgICAgaW50IHJpZ2h0T3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KDIsIHJlZ2lzdGVyT2Zmc2V0KS5vZmZzZXQoKTsKLSAgICAgICAgTm9kZSogbGVmdCA9
IGdldFRvSW50MzIobGVmdE9wZXJhbmQpOwotICAgICAgICBOb2RlKiByaWdodCA9IGdldFRvSW50
MzIocmlnaHRPcGVyYW5kKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGxlZnRPcGVyYW5kID0g
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpOworICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgcmlnaHRPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
MiwgcmVnaXN0ZXJPZmZzZXQpOworICAgICAgICBOb2RlKiBsZWZ0ID0gZ2V0KGxlZnRPcGVyYW5k
KTsKKyAgICAgICAgTm9kZSogcmlnaHQgPSBnZXQocmlnaHRPcGVyYW5kKTsKICAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChBcml0aElNdWwsIGxl
ZnQsIHJpZ2h0KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIwNTMsNDUgKzIw
MjksNDUgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICAvLyA9PT0gQml0d2lzZSBvcGVyYXRpb25zID09PQogCiAgICAgICAgIGNhc2Ugb3BfYml0YW5k
OiB7Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXRUb0ludDMyKGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0VG9JbnQzMihjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKEJpdEFuZCwgb3AxLCBvcDIp
KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2JpdGFuZCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIG9wX2JpdG9yOiB7Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXRUb0ludDMy
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgTm9kZSogb3Ay
ID0gZ2V0VG9JbnQzMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAg
ICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBzZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBo
KEJpdE9yLCBvcDEsIG9wMikpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYml0b3IpOwog
ICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9iaXR4b3I6IHsKLSAgICAgICAgICAgIE5vZGUq
IG9wMSA9IGdldFRvSW50MzIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7Ci0gICAg
ICAgICAgICBOb2RlKiBvcDIgPSBnZXRUb0ludDMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQpOworICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKICAg
ICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCksIGFkZFRvR3JhcGgoQml0WG9yLCBvcDEsIG9wMikpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfYml0eG9yKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfcnNoaWZ0OiB7
Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXRUb0ludDMyKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0VG9JbnQzMihjdXJyZW50
SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAg
ICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQml0
UlNoaWZ0LCBvcDEsIG9wMikpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcnNoaWZ0KTsK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfbHNoaWZ0OiB7Ci0gICAgICAgICAgICBOb2Rl
KiBvcDEgPSBnZXRUb0ludDMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwotICAg
ICAgICAgICAgTm9kZSogb3AyID0gZ2V0VG9JbnQzMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogb3AyID0g
Z2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CiAg
ICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpLAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQml0TFNoaWZ0LCBvcDEsIG9wMikp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbHNoaWZ0KTsKICAgICAgICAgfQogCiAgICAg
ICAgIGNhc2Ugb3BfdXJzaGlmdDogewotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0VG9JbnQz
MihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKLSAgICAgICAgICAgIE5vZGUqIG9w
MiA9IGdldFRvSW50MzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAg
ICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKICAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKEJpdFVSU2hpZnQsIG9wMSwgb3AyKSk7CiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF91cnNoaWZ0KTsKQEAgLTIwOTksNyArMjA3NSw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IG9wX3Vuc2lnbmVkOiB7CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAotICAgICAgICAgICAgICAgIG1ha2VTYWZlKGFkZFRv
R3JhcGgoVUludDMyVG9OdW1iZXIsIGdldFRvSW50MzIoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCkpKSk7CisgICAgICAgICAgICAgICAgbWFrZVNhZmUoYWRkVG9HcmFwaChVSW50MzJU
b051bWJlciwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKSkpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF91bnNpZ25lZCk7CiAgICAgICAg
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CShyZXZpc2lvbiAxNjE0NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwyNCArOTQsMTggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2Ug
Qml0T3I6IHsKLSAgICAgICAgICAgIGZpeEludEVkZ2Uobm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgZml4SW50RWRnZShub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQogICAgICAgICBjYXNlIEJpdEFuZDoKKyAgICAgICAgY2FzZSBCaXRPcjoKICAgICAg
ICAgY2FzZSBCaXRYb3I6CiAgICAgICAgIGNhc2UgQml0UlNoaWZ0OgogICAgICAgICBjYXNlIEJp
dExTaGlmdDoKICAgICAgICAgY2FzZSBCaXRVUlNoaWZ0OiB7Ci0gICAgICAgICAgICBmaXhJbnRF
ZGdlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEludEVkZ2Uobm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgZml4QmluYXJ5SW50RWRnZXMoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICBjYXNlIEFyaXRoSU11bDogewot
ICAgICAgICAgICAgZml4SW50RWRnZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBmaXhJ
bnRFZGdlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEJpbmFyeUludEVkZ2VzKCk7
CiAgICAgICAgICAgICBub2RlLT5zZXRPcChBcml0aE11bCk7CiAgICAgICAgICAgICBub2RlLT5z
ZXRBcml0aE1vZGUoQXJpdGg6OlVuY2hlY2tlZCk7CiAgICAgICAgICAgICBub2RlLT5jaGlsZDEo
KS5zZXRVc2VLaW5kKEludDMyVXNlKTsKQEAgLTEyMCw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjogewotICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBmaXhJbnRFZGdlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGlmIChieXRlY29k
ZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9k
ZUNhblNwZWN1bGF0ZUludDMyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQpAQCAtMTMwLDQyICsx
MjQsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAotICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6IHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICAgICAgCi0gICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOiB7Ci0gICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9k
ZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoSWRlbnRpdHkpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgewotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgZml4RWRnZTxOb3RDZWxsVXNl
Pihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICAgICAgCi0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZTogewotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBWYWx1ZUFkZDogewogICAgICAgICAgICAgaWYgKGF0
dGVtcHRUb01ha2VJbnRlZ2VyQWRkKG5vZGUpKSB7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0
T3AoQXJpdGhBZGQpOwpAQCAtOTc0LDYgKzkzMiw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
Q2hlY2tBcnJheToKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgICAgICBjYXNlIENv
bnN0YW50U3RvcmFnZVBvaW50ZXI6CisgICAgICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKKyAgICAg
ICAgY2FzZSBJbnQzMlRvRG91YmxlOgorICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAg
ICAgICAgIC8vIFRoZXNlIGFyZSBqdXN0IG5vZGVzIHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5IGV4
cGVjdCB0byBzZWUgZHVyaW5nIGZpeHVwLgogICAgICAgICAgICAgLy8gSWYgd2UgZXZlciB3YW50
ZWQgdG8gaW5zZXJ0IHRoZW0gcHJpb3IgdG8gZml4dXAsIHRoZW4gd2UganVzdCBoYXZlIHRvIGNy
ZWF0ZQogICAgICAgICAgICAgLy8gZml4dXAgcnVsZXMgZm9yIHRoZW0uCkBAIC0xNjI0LDIzICsx
NTg1LDQwIEBAIHByaXZhdGU6CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChpbmRleElu
QmxvY2ssIGJhcnJpZXJOb2RlKTsKICAgICB9CiAKLSAgICB2b2lkIGZpeEludEVkZ2UoRWRnZSYg
ZWRnZSkKKyAgICBib29sIGZpeEludEVkZ2UoRWRnZSYgZWRnZSkKICAgICB7CiAgICAgICAgIE5v
ZGUqIG5vZGUgPSBlZGdlLm5vZGUoKTsKLSAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gVmFsdWVU
b0ludDMyKSB7Ci0gICAgICAgICAgICBmaXhFZGdlPEtub3duSW50MzJVc2U+KGVkZ2UpOwotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlSW50MzIo
KSkgeworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oZWRnZSk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEVkZ2UgbmV3RWRnZSA9
IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBVc2VLaW5kIHVzZUtpbmQ7CisgICAgICAgIGlmIChu
b2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCisgICAgICAgICAgICB1c2VLaW5kID0g
TWFjaGluZUludFVzZTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTnVt
YmVyKCkpCisgICAgICAgICAgICB1c2VLaW5kID0gTnVtYmVyVXNlOworICAgICAgICBlbHNlIGlm
IChub2RlLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpCisgICAgICAgICAgICB1c2VLaW5kID0g
Qm9vbGVhblVzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdXNlS2luZCA9IE5vdENlbGxV
c2U7CisgICAgICAgIE5vZGUqIG5ld05vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMiwgVmFsdWVUb0ludDMyLCBtX2N1
cnJlbnROb2RlLT5jb2RlT3JpZ2luLAorICAgICAgICAgICAgRWRnZShub2RlLCB1c2VLaW5kKSk7
CisgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlKG5vZGUsIHVzZUtpbmQpOwogICAgICAgICAK
LSAgICAgICAgaWYgKG5ld0VkZ2UudXNlS2luZCgpICE9IEludDMyVXNlKSB7Ci0gICAgICAgICAg
ICBlZGdlLnNldFVzZUtpbmQoS25vd25JbnQzMlVzZSk7CisgICAgICAgIGVkZ2UgPSBFZGdlKG5l
d05vZGUsIEtub3duSW50MzJVc2UpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBmaXhCaW5hcnlJbnRFZGdlcygpCisgICAgeworICAgICAgICBBZGphY2VuY3lM
aXN0IGNoaWxkcmVuID0gbV9jdXJyZW50Tm9kZS0+Y2hpbGRyZW47CisgICAgICAgIGJvb2wgbmVl
ZFBoYW50b20gPQorICAgICAgICAgICAgZml4SW50RWRnZShtX2N1cnJlbnROb2RlLT5jaGlsZDEo
KSkgfCBmaXhJbnRFZGdlKG1fY3VycmVudE5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgaWYgKCFu
ZWVkUGhhbnRvbSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgQVNTRVJUKG5ld0VkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpOwotICAgICAgICBl
ZGdlID0gbmV3RWRnZTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4
SW5CbG9jayArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2lu
LCBjaGlsZHJlbik7CiAgICAgfQogICAgIAogICAgIHZvaWQgaW5qZWN0SW50MzJUb0RvdWJsZU5v
ZGUoRWRnZSYgZWRnZSwgVXNlS2luZCB1c2VLaW5kID0gTnVtYmVyVXNlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MTQ1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjgsMTEgKzE2OCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOiB7Ci0gICAgICAgICAg
ICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY0ludDMyKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAgICAg
ICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIGNhc2UgUmVnRXhwRXhlYzoKQEAgLTUxMCw3ICs1
MDUsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgICAg
ICBjYXNlIEludDUyVG9WYWx1ZToKICAgICAgICAgY2FzZSBJbnQ1MlRvRG91YmxlOgotICAgICAg
ICBjYXNlIENoZWNrSW5Cb3VuZHM6IHsKKyAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAg
ICAgICBjYXNlIFZhbHVlVG9JbnQzMjogewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3Vs
ZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAg
ICAgICAgICAgICAvLyBpbnNlcnRlZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhh
c2UuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9iaXQtb3AtdmFsdWUtdG8taW50MzItaW5w
dXQtbGl2ZW5lc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9iaXQtb3AtdmFsdWUtdG8taW50MzItaW5wdXQtbGl2ZW5lc3MuanMJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2JpdC1vcC12YWx1ZS10
by1pbnQzMi1pbnB1dC1saXZlbmVzcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBA
CitmdW5jdGlvbiBmb28oYSwgYikgeworICAgIHJldHVybiBhLmYgXiBiLmY7Cit9CisKK25vSW5s
aW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIg
cmVzdWx0ID0gZm9vKHtmOjUuNX0sIHtmOjYuNX0pOworICAgIGlmIChyZXN1bHQgIT0gMykKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQorCit2YXIgcmVz
dWx0ID0gZm9vKHtmOiI1LjUifSwge2Y6Ni41fSk7CitpZiAocmVzdWx0ICE9IDMpCisgICAgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworCit2YXIgcmVzdWx0ID0gZm9vKHtm
OjUuNX0sIHtmOiI2LjUifSk7CitpZiAocmVzdWx0ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBi
YWQgcmVzdWx0OiAiICsgcmVzdWx0OworCg==
</data>
<flag name="review"
          id="244284"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>