<?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>127538</bug_id>
          
          <creation_ts>2014-01-23 20:07:49 -0800</creation_ts>
          <short_desc>DFG should allow inlining of op_call_varargs calls</short_desc>
          <delta_ts>2014-01-24 16:56:20 -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>127335</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</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>971478</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-23 20:07:49 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971482</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-23 20:14:06 -0800</bug_when>
    <thetext>This is freakishly weird because of how op_call_varargs gets its arguments.  I think we can make it work, though.  The important thing is that the ByteCodeParser needs to use the firstFreeRegister operand to decode how to lay out the call as if it was a normal call, and then to emit a sled of SetLocal&apos;s representing the arguments - again, as if this had been a normal call.  Those SetLocals would be ImmediateSet.

Anyway, it&apos;l be super amazing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971680</commentid>
    <comment_count>2</comment_count>
      <attachid>222130</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-24 11:43:39 -0800</bug_when>
    <thetext>Created attachment 222130
getting there

It still has OSR exit issues but it&apos;s starting to look like something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971715</commentid>
    <comment_count>3</comment_count>
      <attachid>222144</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-24 13:03:53 -0800</bug_when>
    <thetext>Created attachment 222144
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971802</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-24 16:56:20 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/162739</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222130</attachid>
            <date>2014-01-24 11:43:39 -0800</date>
            <delta_ts>2014-01-24 13:03:53 -0800</delta_ts>
            <desc>getting there</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>10253</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAxNjI2NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBoYW5kbGVNaW5NYXgoaW50IHJlc3VsdE9wZXJhbmQsIE5vZGVUeXBlIG9w
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAg
ICAgCiAgICAgLy8gSGFuZGxlIGNhbGxzLiBUaGlzIHJlc29sdmVzIGlzc3VlcyBzdXJyb3VuZGlu
ZyBpbmxpbmluZyBhbmQgaW50cmluc2ljcy4KLSAgICB2b2lkIGhhbmRsZUNhbGwoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQpOworICAgIHZvaWQgaGFuZGxlQ2FsbChpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLCBpbnQgY2FsbGVlLCBp
bnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCk7CisgICAgdm9pZCBoYW5kbGVDYWxsKElu
c3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCk7
CiAgICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBOb2Rl
KiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQp
OwogICAgIHZvaWQgZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAg
IC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBp
ZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KQEAgLTc3MywyMyArNzc0LDIxIEBAIHByaXZhdGU6
CiAgICAgICAgIG1fbnVtUGFzc2VkVmFyQXJncysrOwogICAgIH0KICAgICAKLSAgICBOb2RlKiBh
ZGRDYWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIE5vZGVUeXBlIG9wKQorICAg
IE5vZGUqIGFkZENhbGwoaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCBjYWxsZWUsIGludCBh
cmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0KQogICAgIHsKICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKICAgICAgICAgCi0gICAgICAgIGFkZFZh
ckFyZ0NoaWxkKGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCkpKTsKLSAgICAgICAgaW50IGFyZ0NvdW50ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKKyAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxs
ZWUpKSk7CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJTbG90cyA9IEpTU3RhY2s6OkNhbGxGcmFt
ZUhlYWRlclNpemUgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSArIGFyZ0NvdW50Owog
ICAgICAgICBpZiAocGFyYW1ldGVyU2xvdHMgPiBtX3BhcmFtZXRlclNsb3RzKQogICAgICAgICAg
ICAgbV9wYXJhbWV0ZXJTbG90cyA9IHBhcmFtZXRlclNsb3RzOwogCi0gICAgICAgIGludCByZWdp
c3Rlck9mZnNldCA9IC1jdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kOwogICAgICAgICBp
bnQgZHVtbXlUaGlzQXJndW1lbnQgPSBvcCA9PSBDYWxsID8gMCA6IDE7CiAgICAgICAgIGZvciAo
aW50IGkgPSAwICsgZHVtbXlUaGlzQXJndW1lbnQ7IGkgPCBhcmdDb3VudDsgKytpKQogICAgICAg
ICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGksIHJl
Z2lzdGVyT2Zmc2V0KSkpOwogCiAgICAgICAgIE5vZGUqIGNhbGwgPSBhZGRUb0dyYXBoKE5vZGU6
OlZhckFyZywgb3AsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKLSAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgY2FsbCk7
CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0KSwgY2FsbCk7CiAgICAgICAgIHJl
dHVybiBjYWxsOwogICAgIH0KICAgICAKQEAgLTExNDcsMTIgKzExNDYsMjEgQEAgcHJpdmF0ZToK
ICAgICBtX2N1cnJlbnRJbmRleCArPSBPUENPREVfTEVOR1RIKG5hbWUpOyBcCiAgICAgcmV0dXJu
IHNob3VsZENvbnRpbnVlUGFyc2luZwogCi0KLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNh
bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgTm9kZVR5cGUgb3AsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoSW5z
dHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQog
ewogICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3Bf
Y29uc3RydWN0KSk7CisgICAgaGFuZGxlQ2FsbCgKKyAgICAgICAgcGNbMV0udS5vcGVyYW5kLCBv
cCwga2luZCwgT1BDT0RFX0xFTkdUSChvcF9jYWxsKSwKKyAgICAgICAgcGNbMl0udS5vcGVyYW5k
LCBwY1szXS51Lm9wZXJhbmQsIC1wY1s0XS51Lm9wZXJhbmQpOworfQorCit2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVDYWxsKAorICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKKyAgICBpbnQg
Y2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNl
dCkKK3sKKyAgICBBU1NFUlQocmVnaXN0ZXJPZmZzZXQgPD0gMCk7CiAgICAgCi0gICAgTm9kZSog
Y2FsbFRhcmdldCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCkpOworICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGNh
bGxlZSkpOwogICAgIAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzOwogCkBAIC0x
MTY1LDE5ICsxMTczLDE1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoSW5zdHJ1
Y3QKICAgICAgICAgLy8gT2RkbHksIHRoaXMgY29uZmxhdGVzIGNhbGxzIHRoYXQgaGF2ZW4ndCBl
eGVjdXRlZCB3aXRoIGNhbGxzIHRoYXQgYmVoYXZlZCBzdWZmaWNpZW50bHkgcG9seW1vcnBoaWNh
bGx5CiAgICAgICAgIC8vIHRoYXQgd2UgY2Fubm90IG9wdGltaXplIHRoZW0uCiAgICAgICAgIAot
ICAgICAgICBhZGRDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgb3ApOworICAgICAgICBhZGRDYWxs
KHJlc3VsdCwgb3AsIGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVy
T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwotICAg
IGludCByZWdpc3Rlck9mZnNldCA9IC1jdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kOwot
Ci0gICAgaW50IHJlc3VsdE9wZXJhbmQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwotICAgIHVuc2lnbmVkIG5leHRPZmZzZXQgPSBtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5H
VEgob3BfY2FsbCk7CisgICAgdW5zaWduZWQgbmV4dE9mZnNldCA9IG1fY3VycmVudEluZGV4ICsg
aW5zdHJ1Y3Rpb25TaXplOwogICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVk
aWN0aW9uKCk7CiAKICAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsTGlu
a1N0YXR1cy5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50
SW50ZXJuYWxGdW5jdGlvbihyZXN1bHRPcGVyYW5kLCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQs
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBraW5kKSkgeworICAgICAg
ICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJlc3VsdCwgZnVuY3Rpb24sIHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwga2lu
ZCkpIHsKICAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBoYXMgdG8gYmUgKmFmdGVyKiB0
aGUgY29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0CiAgICAgICAgICAgICAv
LyB0aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBleGl0cyB0aGUgaW50cmlu
c2ljIG1heSBkby4KICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldCk7
CkBAIC0xMTg2LDcgKzExOTAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKElu
c3RydWN0CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIENhbiBvbmx5IGhhbmRsZSB0
aGlzIHVzaW5nIHRoZSBnZW5lcmljIGNhbGwgaGFuZGxlci4KLSAgICAgICAgYWRkQ2FsbChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG9wKTsKKyAgICAgICAgYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsZWUs
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgICAgIApAQCAtMTE5NCw3ICsxMTk4LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ2FsbChJbnN0cnVjdAogICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRy
aW5zaWMpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxs
VGFyZ2V0LCByZWdpc3Rlck9mZnNldCwga2luZCk7CiAgICAgICAgICAgICAKLSAgICAgICAgaWYg
KGhhbmRsZUludHJpbnNpYyhyZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbikpIHsKKyAgICAgICAgaWYg
KGhhbmRsZUludHJpbnNpYyhyZXN1bHQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uKSkgewogICAgICAgICAgICAgLy8gVGhp
cyBwaGFudG9taW5nIGhhcyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmluc2lj
LCB0byBzaWduaWZ5IHRoYXQKICAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBrZXB0
IGFsaXZlIHdoYXRldmVyIGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgogICAgICAgICAgICAg
YWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0KTsKQEAgLTEyMDMsMTMgKzEyMDcsMTMgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChJbnN0cnVjdAogICAgICAgICAgICAgICAg
IG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRh
cmdldCwgcmVzdWx0T3BlcmFuZCwgY2FsbExpbmtTdGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCkpIHsKKyAgICB9IGVsc2Ug
aWYgKGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2FsbExpbmtTdGF0dXMsIHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2lu
ZCkpIHsKICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24oKSkKICAgICAgICAgICAgIG1f
Z3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBhZGRDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgb3ApOworICAg
IGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
cmVnaXN0ZXJPZmZzZXQpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25D
aGVja3MoY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsVGFy
Z2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAg
LTI5NjMsMzEgKzI5NjcsMzYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY29uc3RydWN0KTsKICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczogeworICAgICAgICAgICAgaW50IHJlc3Vs
dCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgY2Fs
bGVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCB0
aGlzUmVnID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIGlu
dCBhcmd1bWVudHMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kOworICAgICAgICAg
ICAgaW50IGZpcnN0RnJlZVJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICAKICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxsRnJhbWUoKSk7Ci0gICAg
ICAgICAgICBBU1NFUlQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9PSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoYXJndW1lbnRzID09IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5hcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgpKTsKICAgICAgICAgICAgIEFTU0VSVCgh
bV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnN5bWJvbFRhYmxlKCktPnNsb3dBcmd1bWVu
dHMoKSk7Ci0gICAgICAgICAgICAvLyBJdCB3b3VsZCBiZSBjb29sIHRvIGZ1bm5lbCB0aGlzIGlu
dG8gaGFuZGxlQ2FsbCgpIHNvIHRoYXQgaXQgY2FuIGhhbmRsZQotICAgICAgICAgICAgLy8gaW5s
aW5pbmcuIEJ1dCBjdXJyZW50bHkgdGhhdCB3b24ndCBiZSBwcm9maXRhYmxlIGFueXdheSwgc2lu
Y2Ugbm9uZSBvZiB0aGUKLSAgICAgICAgICAgIC8vIHVzZXMgb2YgY2FsbF92YXJhcmdzIHdpbGwg
YmUgaW5saW5lYWJsZS4gU28gd2Ugc2V0IHRoaXMgdXAgbWFudWFsbHkgYW5kCi0gICAgICAgICAg
ICAvLyB3aXRob3V0IGlubGluZS9pbnRyaW5zaWMgZGV0ZWN0aW9uLgotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwot
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tBcmd1bWVudHNOb3RD
cmVhdGVkKTsKIAogICAgICAgICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBpbmxpbmVDYWxsRnJh
bWUoKS0+YXJndW1lbnRzLnNpemUoKTsKLSAgICAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJTbG90
cyA9IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFu
ZFBDU2l6ZSArIGFyZ0NvdW50OwotICAgICAgICAgICAgaWYgKHBhcmFtZXRlclNsb3RzID4gbV9w
YXJhbWV0ZXJTbG90cykKLSAgICAgICAgICAgICAgICBtX3BhcmFtZXRlclNsb3RzID0gcGFyYW1l
dGVyU2xvdHM7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKTsgLy8gY2Fs
bGVlCi0gICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7IC8vIHRoaXMKKyAgICAgICAgICAgIC8vIExl
dCdzIGNvbXB1dGUgdGhlIHJlZ2lzdGVyIG9mZnNldC4gV2Ugc3RhcnQgd2l0aCB0aGUgbGFzdCB1
c2VkIHJlZ2lzdGVyLCBhbmQKKyAgICAgICAgICAgIC8vIHRoZW4gYWRqdXN0IGZvciB0aGUgdGhp
bmdzIHdlIHdhbnQgaW4gdGhlIGNhbGwgZnJhbWUuCisgICAgICAgICAgICBpbnQgcmVnaXN0ZXJP
ZmZzZXQgPSBmaXJzdEZyZWVSZWcgKyAxOworICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXQgLT0g
YXJnQ291bnQ7IC8vIFdlIHdpbGwgYmUgcGFzc2luZyBzb21lIGFyZ3VtZW50cy4KKyAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0IC09IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7IC8vIFdl
IHdpbGwgcHJldGVuZCB0byBoYXZlIGEgY2FsbCBmcmFtZSBoZWFkZXIuCisgICAgICAgICAgICAK
KyAgICAgICAgICAgIC8vIFRoZSBieXRlY29kZSB3b3VsZG4ndCBoYXZlIHNldCB1cCB0aGUgYXJn
dW1lbnRzLiBCdXQgd2UnbGwgZG8gaXQgYW5kIG1ha2UgaXQKKyAgICAgICAgICAgIC8vIGxvb2sg
bGlrZSB0aGUgYnl0ZWNvZGUgaGFkIGRvbmUgaXQuCisgICAgICAgICAgICBpbnQgbmV4dFJlZ2lz
dGVyID0gcmVnaXN0ZXJPZmZzZXQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAg
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihuZXh0UmVnaXN0ZXIrKyksIGdldChWaXJ0dWFs
UmVnaXN0ZXIodGhpc1JlZykpLCBJbW1lZGlhdGVTZXQpOwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBhcmd1bWVudCA9IDE7IGFyZ3VtZW50IDwgYXJnQ291bnQ7ICsrYXJndW1lbnQpCi0gICAg
ICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KGFyZ3VtZW50KSkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAotICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsLCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0aW9u
KSkpOworICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIobmV4dFJlZ2lzdGVyKysp
LCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKSwgSW1tZWRpYXRlU2V0
KTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgaGFuZGxlQ2FsbCgKKyAgICAgICAgICAgICAg
ICByZXN1bHQsIENhbGwsIENvZGVGb3JDYWxsLCBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJn
cyksCisgICAgICAgICAgICAgICAgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQpOwog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2FsbF92YXJhcmdzKTsKICAgICAgICAgfQogICAg
ICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2lubGlu
ZS1jYWxsLXZhcmFyZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9pbmxpbmUtY2FsbC12YXJhcmdzLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbmxpbmUtY2FsbC12YXJhcmdzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKK2Z1bmN0aW9uIGZvbyhhLCBiKSB7CisgICAgcmV0
dXJuIGJhcihhLCBiKTsKK30KKworZnVuY3Rpb24gYmFyKGEsIGIpIHsKKyAgICB2YXIgeCA9IGJh
ei5hcHBseShudWxsLCBhcmd1bWVudHMpOworICAgIHZhciB5ID0gYmF6KGEsIGIpCisgICAgcmV0
dXJuIHggKyB5ICogMzsKK30KKworZnVuY3Rpb24gYmF6KGEsIGIpIHsKKyAgICByZXR1cm4gYSAr
IGIgKiAyOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
MDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyg3LCAxMSk7CisgICAgaWYgKHJlc3VsdCAh
PSAxMTYpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30K
KwordmFyIHJlc3VsdCA9IGZvbyg1LCAyMTQ3NDgzNjQ2KTsKK2lmIChyZXN1bHQgIT0gMTcxNzk4
NjkxODgpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222144</attachid>
            <date>2014-01-24 13:03:53 -0800</date>
            <delta_ts>2014-01-24 13:11:51 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>15802</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYyNzE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE0LTAxLTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBhbGxvdyBpbmxpbmluZyBvZiBvcF9jYWxsX3ZhcmFyZ3MgY2FsbHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzUzOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUHJldmlv
dXNseSwgb3BfY2FsbF92YXJhcmdzIHdhcyBkaXJlY3RseSBsb3dlcmVkIHRvIGEgQ2FsbCBieSB0
aGUgQnl0ZUNvZGVQYXJzZXIgYW5kCisgICAgICAgIHdlIGJ5cGFzc2VkIGFsbCBvZiB0aGUgY2Fs
bCBvcHRpbWl6YXRpb25zIChpbnRyaW5zaWNzLCBpbmxpbmluZykgcHJvdmlkZWQgYnkKKyAgICAg
ICAgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
Y2hhbmdlcyBvcF9jYWxsX3ZhcmFyZ3MgaGFuZGxpbmcgc28gdGhhdCBpdCBmaXJzdCBzZXRzIHVw
IHRoZSBzdGFjayB0byBsb29rIGxpa2UKKyAgICAgICAgaXQgd291bGQgaGF2ZSBpZiBpdCBoYWQg
YmVlbiBhIG5vcm1hbCBjYWxsLCBhbmQgdGhlbiBpdCBjYWxscyBoYW5kbGVDYWxsKCkuIFRoaXMK
KyAgICAgICAgZ2l2ZXMgdXMgaW5saW5pbmcgb2Ygb3BfY2FsbF92YXJhcmdzLgorCisgICAgICAg
ICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdpbi5o
OgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6aXNMaXZlSW5CeXRlY29kZSk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2lu
bGluZS1jYWxsLXZhcmFyZ3MtYW5kLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAg
ICAgICAgKGJhcik6CisgICAgICAgIChiYXopOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9pbmxp
bmUtY2FsbC12YXJhcmdzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgIChiYXIp
OgorICAgICAgICAoYmF6KToKKwogMjAxNC0wMS0yNCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2Zm
QGFwcGxlLmNvbT4KIAogICAgICAgICBDU3RhY2sgQnJhbmNoOiBHZXQgQVJNIHdvcmtpbmcKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
LmNwcAkocmV2aXNpb24gMTYyNjc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsMTMgQEAgQ2Fs
bExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogICAgICAgICByZXR1cm4gdGFr
ZXNTbG93UGF0aCgpOwogICAgIH0KICAgICAKKyAgICBWTSYgdm0gPSAqcHJvZmlsZWRCbG9jay0+
dm0oKTsKKyAgICAKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICBPcGNvZGVJRCBv
cCA9IHZtLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvblswXS51Lm9wY29kZSk7
CisgICAgaWYgKG9wICE9IG9wX2NhbGwgJiYgb3AgIT0gb3BfY29uc3RydWN0KQorICAgICAgICBy
ZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBMTEludENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvID0gaW5zdHJ1Y3Rpb25bNV0udS5jYWxsTGlua0luZm87CiAgICAgCiAgICAgcmV0
dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZp
c2lvbiAxNjI2NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RydWN0IENvZGVPcmlnaW4g
ewogfTsKIAogc3RydWN0IElubGluZUNhbGxGcmFtZSB7Ci0gICAgVmVjdG9yPFZhbHVlUmVjb3Zl
cnk+IGFyZ3VtZW50czsKKyAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJndW1lbnRzOyAvLyBJ
bmNsdWRlcyAndGhpcycuCiAgICAgV3JpdGVCYXJyaWVyPFNjcmlwdEV4ZWN1dGFibGU+IGV4ZWN1
dGFibGU7CiAgICAgVmFsdWVSZWNvdmVyeSBjYWxsZWVSZWNvdmVyeTsKICAgICBDb2RlT3JpZ2lu
IGNhbGxlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNjI2NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMu
aCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQu
aCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVBy
aW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTYwLDcgKzE2MSw4IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBoYW5kbGVNaW5NYXgoaW50IHJlc3VsdE9wZXJhbmQsIE5vZGVUeXBl
IG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7
CiAgICAgCiAgICAgLy8gSGFuZGxlIGNhbGxzLiBUaGlzIHJlc29sdmVzIGlzc3VlcyBzdXJyb3Vu
ZGluZyBpbmxpbmluZyBhbmQgaW50cmluc2ljcy4KLSAgICB2b2lkIGhhbmRsZUNhbGwoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQpOworICAgIHZvaWQgaGFuZGxlQ2FsbChpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLCBpbnQgY2FsbGVl
LCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCk7CisgICAgdm9pZCBoYW5kbGVDYWxs
KEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCk7CiAgICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBO
b2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQpOwogICAgIHZvaWQgZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwog
ICAgIC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxz
ZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KQEAgLTc3MywyMyArNzc1LDIxIEBAIHByaXZh
dGU6CiAgICAgICAgIG1fbnVtUGFzc2VkVmFyQXJncysrOwogICAgIH0KICAgICAKLSAgICBOb2Rl
KiBhZGRDYWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIE5vZGVUeXBlIG9wKQor
ICAgIE5vZGUqIGFkZENhbGwoaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCBjYWxsZWUsIGlu
dCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0KQogICAgIHsKICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKICAgICAgICAgCi0gICAgICAgIGFk
ZFZhckFyZ0NoaWxkKGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCkpKTsKLSAgICAgICAgaW50IGFyZ0NvdW50ID0gY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZDsKKyAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KFZpcnR1YWxSZWdpc3Rlcihj
YWxsZWUpKSk7CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJTbG90cyA9IEpTU3RhY2s6OkNhbGxG
cmFtZUhlYWRlclNpemUgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSArIGFyZ0NvdW50
OwogICAgICAgICBpZiAocGFyYW1ldGVyU2xvdHMgPiBtX3BhcmFtZXRlclNsb3RzKQogICAgICAg
ICAgICAgbV9wYXJhbWV0ZXJTbG90cyA9IHBhcmFtZXRlclNsb3RzOwogCi0gICAgICAgIGludCBy
ZWdpc3Rlck9mZnNldCA9IC1jdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kOwogICAgICAg
ICBpbnQgZHVtbXlUaGlzQXJndW1lbnQgPSBvcCA9PSBDYWxsID8gMCA6IDE7CiAgICAgICAgIGZv
ciAoaW50IGkgPSAwICsgZHVtbXlUaGlzQXJndW1lbnQ7IGkgPCBhcmdDb3VudDsgKytpKQogICAg
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGks
IHJlZ2lzdGVyT2Zmc2V0KSkpOwogCiAgICAgICAgIE5vZGUqIGNhbGwgPSBhZGRUb0dyYXBoKE5v
ZGU6OlZhckFyZywgb3AsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKLSAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgY2Fs
bCk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0KSwgY2FsbCk7CiAgICAgICAg
IHJldHVybiBjYWxsOwogICAgIH0KICAgICAKQEAgLTExNDcsMTIgKzExNDcsMjEgQEAgcHJpdmF0
ZToKICAgICBtX2N1cnJlbnRJbmRleCArPSBPUENPREVfTEVOR1RIKG5hbWUpOyBcCiAgICAgcmV0
dXJuIHNob3VsZENvbnRpbnVlUGFyc2luZwogCi0KLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgTm9kZVR5cGUgb3AsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwo
SW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQogewogICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgo
b3BfY29uc3RydWN0KSk7CisgICAgaGFuZGxlQ2FsbCgKKyAgICAgICAgcGNbMV0udS5vcGVyYW5k
LCBvcCwga2luZCwgT1BDT0RFX0xFTkdUSChvcF9jYWxsKSwKKyAgICAgICAgcGNbMl0udS5vcGVy
YW5kLCBwY1szXS51Lm9wZXJhbmQsIC1wY1s0XS51Lm9wZXJhbmQpOworfQorCit2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsKAorICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKKyAgICBp
bnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGludCByZWdpc3Rlck9m
ZnNldCkKK3sKKyAgICBBU1NFUlQocmVnaXN0ZXJPZmZzZXQgPD0gMCk7CiAgICAgCi0gICAgTm9k
ZSogY2FsbFRhcmdldCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCkpOworICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KGNhbGxlZSkpOwogICAgIAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzOwogCkBA
IC0xMTY1LDE5ICsxMTc0LDE1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoSW5z
dHJ1Y3QKICAgICAgICAgLy8gT2RkbHksIHRoaXMgY29uZmxhdGVzIGNhbGxzIHRoYXQgaGF2ZW4n
dCBleGVjdXRlZCB3aXRoIGNhbGxzIHRoYXQgYmVoYXZlZCBzdWZmaWNpZW50bHkgcG9seW1vcnBo
aWNhbGx5CiAgICAgICAgIC8vIHRoYXQgd2UgY2Fubm90IG9wdGltaXplIHRoZW0uCiAgICAgICAg
IAotICAgICAgICBhZGRDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgb3ApOworICAgICAgICBhZGRD
YWxsKHJlc3VsdCwgb3AsIGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lz
dGVyT2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwot
ICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1jdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5k
OwotCi0gICAgaW50IHJlc3VsdE9wZXJhbmQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwotICAgIHVuc2lnbmVkIG5leHRPZmZzZXQgPSBtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9M
RU5HVEgob3BfY2FsbCk7CisgICAgdW5zaWduZWQgbmV4dE9mZnNldCA9IG1fY3VycmVudEluZGV4
ICsgaW5zdHJ1Y3Rpb25TaXplOwogICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQ
cmVkaWN0aW9uKCk7CiAKICAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxs
TGlua1N0YXR1cy5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYgKGhhbmRsZUNvbnN0
YW50SW50ZXJuYWxGdW5jdGlvbihyZXN1bHRPcGVyYW5kLCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZz
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBraW5kKSkgeworICAg
ICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJlc3VsdCwgZnVuY3Rpb24s
IHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwg
a2luZCkpIHsKICAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBoYXMgdG8gYmUgKmFmdGVy
KiB0aGUgY29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0CiAgICAgICAgICAg
ICAvLyB0aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBleGl0cyB0aGUgaW50
cmluc2ljIG1heSBkby4KICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdl
dCk7CkBAIC0xMTg2LDcgKzExOTEsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxs
KEluc3RydWN0CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIENhbiBvbmx5IGhhbmRs
ZSB0aGlzIHVzaW5nIHRoZSBnZW5lcmljIGNhbGwgaGFuZGxlci4KLSAgICAgICAgYWRkQ2FsbChj
dXJyZW50SW5zdHJ1Y3Rpb24sIG9wKTsKKyAgICAgICAgYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxs
ZWUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgICAgIApAQCAtMTE5NCw3ICsxMTk5LDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlQ2FsbChJbnN0cnVjdAogICAgIGlmIChpbnRyaW5zaWMgIT0gTm9J
bnRyaW5zaWMpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBj
YWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwga2luZCk7CiAgICAgICAgICAgICAKLSAgICAgICAg
aWYgKGhhbmRsZUludHJpbnNpYyhyZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zm
c2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbikpIHsKKyAgICAgICAg
aWYgKGhhbmRsZUludHJpbnNpYyhyZXN1bHQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uKSkgewogICAgICAgICAgICAgLy8g
VGhpcyBwaGFudG9taW5nIGhhcyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmlu
c2ljLCB0byBzaWduaWZ5IHRoYXQKICAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBr
ZXB0IGFsaXZlIHdoYXRldmVyIGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgogICAgICAgICAg
ICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0KTsKQEAgLTEyMDMsMTMgKzEyMDgsMTMg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChJbnN0cnVjdAogICAgICAgICAgICAg
ICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaGFuZGxlSW5saW5pbmcoY2Fs
bFRhcmdldCwgcmVzdWx0T3BlcmFuZCwgY2FsbExpbmtTdGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCkpIHsKKyAgICB9IGVs
c2UgaWYgKGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2FsbExpbmtTdGF0dXMs
IHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwg
a2luZCkpIHsKICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24oKSkKICAgICAgICAgICAg
IG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBhZGRDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgb3ApOwor
ICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgcmVnaXN0ZXJPZmZzZXQpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rp
b25DaGVja3MoY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxs
VGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
QEAgLTI5NjMsMzEgKzI5NjgsMzYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY29uc3RydWN0KTsKICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczogeworICAgICAgICAgICAgaW50IHJl
c3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQg
Y2FsbGVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIGlu
dCB0aGlzUmVnID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAg
IGludCBhcmd1bWVudHMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kOworICAgICAg
ICAgICAgaW50IGZpcnN0RnJlZVJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQ7
CisgICAgICAgICAgICAKICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxsRnJhbWUoKSk7Ci0g
ICAgICAgICAgICBBU1NFUlQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9PSBtX2lu
bGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKS5vZmZzZXQoKSk7
CisgICAgICAgICAgICBBU1NFUlQoYXJndW1lbnRzID09IG1faW5saW5lU3RhY2tUb3AtPm1fY29k
ZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgpKTsKICAgICAgICAgICAgIEFTU0VS
VCghbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnN5bWJvbFRhYmxlKCktPnNsb3dBcmd1
bWVudHMoKSk7Ci0gICAgICAgICAgICAvLyBJdCB3b3VsZCBiZSBjb29sIHRvIGZ1bm5lbCB0aGlz
IGludG8gaGFuZGxlQ2FsbCgpIHNvIHRoYXQgaXQgY2FuIGhhbmRsZQotICAgICAgICAgICAgLy8g
aW5saW5pbmcuIEJ1dCBjdXJyZW50bHkgdGhhdCB3b24ndCBiZSBwcm9maXRhYmxlIGFueXdheSwg
c2luY2Ugbm9uZSBvZiB0aGUKLSAgICAgICAgICAgIC8vIHVzZXMgb2YgY2FsbF92YXJhcmdzIHdp
bGwgYmUgaW5saW5lYWJsZS4gU28gd2Ugc2V0IHRoaXMgdXAgbWFudWFsbHkgYW5kCi0gICAgICAg
ICAgICAvLyB3aXRob3V0IGlubGluZS9pbnRyaW5zaWMgZGV0ZWN0aW9uLgotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigp
OwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tBcmd1bWVudHNO
b3RDcmVhdGVkKTsKIAogICAgICAgICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBpbmxpbmVDYWxs
RnJhbWUoKS0+YXJndW1lbnRzLnNpemUoKTsKLSAgICAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJT
bG90cyA9IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBKU1N0YWNrOjpDYWxsZXJGcmFt
ZUFuZFBDU2l6ZSArIGFyZ0NvdW50OwotICAgICAgICAgICAgaWYgKHBhcmFtZXRlclNsb3RzID4g
bV9wYXJhbWV0ZXJTbG90cykKLSAgICAgICAgICAgICAgICBtX3BhcmFtZXRlclNsb3RzID0gcGFy
YW1ldGVyU2xvdHM7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKTsgLy8g
Y2FsbGVlCi0gICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7IC8vIHRoaXMKKyAgICAgICAgICAgIC8v
IExldCdzIGNvbXB1dGUgdGhlIHJlZ2lzdGVyIG9mZnNldC4gV2Ugc3RhcnQgd2l0aCB0aGUgbGFz
dCB1c2VkIHJlZ2lzdGVyLCBhbmQKKyAgICAgICAgICAgIC8vIHRoZW4gYWRqdXN0IGZvciB0aGUg
dGhpbmdzIHdlIHdhbnQgaW4gdGhlIGNhbGwgZnJhbWUuCisgICAgICAgICAgICBpbnQgcmVnaXN0
ZXJPZmZzZXQgPSBmaXJzdEZyZWVSZWcgKyAxOworICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXQg
LT0gcm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKGFyZ0NvdW50KTsgLy8gV2Ugd2lsbCBi
ZSBwYXNzaW5nIHNvbWUgYXJndW1lbnRzLgorICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXQgLT0g
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsgLy8gV2Ugd2lsbCBwcmV0ZW5kIHRvIGhhdmUg
YSBjYWxsIGZyYW1lIGhlYWRlci4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVGhlIGJ5
dGVjb2RlIHdvdWxkbid0IGhhdmUgc2V0IHVwIHRoZSBhcmd1bWVudHMuIEJ1dCB3ZSdsbCBkbyBp
dCBhbmQgbWFrZSBpdAorICAgICAgICAgICAgLy8gbG9vayBsaWtlIHRoZSBieXRlY29kZSBoYWQg
ZG9uZSBpdC4KKyAgICAgICAgICAgIGludCBuZXh0UmVnaXN0ZXIgPSByZWdpc3Rlck9mZnNldCAr
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKG5leHRSZWdpc3RlcisrKSwgZ2V0KFZpcnR1YWxSZWdpc3Rlcih0aGlzUmVnKSksIElt
bWVkaWF0ZVNldCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMTsgYXJn
dW1lbnQgPCBhcmdDb3VudDsgKythcmd1bWVudCkKLSAgICAgICAgICAgICAgICBhZGRWYXJBcmdD
aGlsZChnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCksCi0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcs
IENhbGwsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pKSk7CisgICAgICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihuZXh0UmVnaXN0ZXIrKyksIGdldCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChhcmd1bWVudCkpLCBJbW1lZGlhdGVTZXQpOwogICAgICAgICAgICAgCisgICAg
ICAgICAgICBoYW5kbGVDYWxsKAorICAgICAgICAgICAgICAgIHJlc3VsdCwgQ2FsbCwgQ29kZUZv
ckNhbGwsIE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSwKKyAgICAgICAgICAgICAgICBj
YWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9jYWxsX3ZhcmFyZ3MpOwogICAgICAgICB9CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxNjI2NzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgw
LDEwICs2ODAsMTAgQEAgRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0Zvcgog
Ym9vbCBHcmFwaDo6aXNMaXZlSW5CeXRlY29kZShWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luKQogewogICAgIGZvciAoOzspIHsKKyAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIHJlZyA9IFZpcnR1YWxSZWdpc3RlcigKKyAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0
KCkgLSBjb2RlT3JpZ2luLnN0YWNrT2Zmc2V0KCkpOworICAgICAgICAKICAgICAgICAgaWYgKG9w
ZXJhbmQub2Zmc2V0KCkgPCBjb2RlT3JpZ2luLnN0YWNrT2Zmc2V0KCkgKyBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJTaXplKSB7Ci0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gVmly
dHVhbFJlZ2lzdGVyKAotICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCkgLSBjb2RlT3Jp
Z2luLnN0YWNrT2Zmc2V0KCkpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAocmVnLmlz
QXJndW1lbnQoKSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlZy5vZmZzZXQo
KSA8IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOwogICAgICAgICAgICAgICAgIApAQCAt
NzAyLDEwICs3MDIsMTggQEAgYm9vbCBHcmFwaDo6aXNMaXZlSW5CeXRlY29kZShWaXJ0dWFsUmVn
aQogICAgICAgICAgICAgICAgIHJlZy5vZmZzZXQoKSwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZSkKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCiAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBBcmd1bWVudHMgYXJlIGFsd2F5cyBsaXZl
LiBUaGlzIHdvdWxkIGJlIHJlZHVuZGFudCBpZiBpdCB3YXNuJ3QgZm9yIG91cgorICAgICAgICAv
LyBvcF9jYWxsX3ZhcmFyZ3MgaW5saW5pbmcuCisgICAgICAgIGlmIChyZWcuaXNBcmd1bWVudCgp
CisgICAgICAgICAgICAmJiByZWcudG9Bcmd1bWVudCgpCisgICAgICAgICAgICAmJiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHJlZy50b0FyZ3VtZW50KCkpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAotICAgICAgICBj
b2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcjsKKyAgICAgICAg
Y29kZU9yaWdpbiA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyOwogICAgIH0KICAgICAKICAgICBy
ZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvaW5s
aW5lLWNhbGwtdmFyYXJncy1hbmQtY2FsbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2lubGluZS1jYWxsLXZhcmFyZ3MtYW5kLWNhbGwuanMJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2lubGluZS1j
YWxsLXZhcmFyZ3MtYW5kLWNhbGwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAor
ZnVuY3Rpb24gZm9vKGEsIGIpIHsKKyAgICByZXR1cm4gYmFyKGEsIGIpOworfQorCitmdW5jdGlv
biBiYXIoYSwgYikgeworICAgIHZhciB4ID0gYmF6LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7Cisg
ICAgdmFyIHkgPSBiYXooYSwgYikKKyAgICByZXR1cm4geCArIHkgKiAzOworfQorCitmdW5jdGlv
biBiYXooYSwgYikgeworICAgIHJldHVybiBhICsgYiAqIDI7Cit9CisKK25vSW5saW5lKGZvbyk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0g
Zm9vKDcsIDExKTsKKyAgICBpZiAocmVzdWx0ICE9IDExNikKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQorCit2YXIgcmVzdWx0ID0gZm9vKDUsIDIxNDc0
ODM2NDYpOworaWYgKHJlc3VsdCAhPSAxNzE3OTg2OTE4OCkKKyAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2lubGluZS1jYWxsLXZhcmFyZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbmxpbmUtY2FsbC12YXJhcmdzLmpzCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbmxpbmUtY2FsbC12YXJh
cmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAKK2Z1bmN0aW9uIGZvbyhhLCBi
KSB7CisgICAgcmV0dXJuIGJhcihhLCBiKTsKK30KKworZnVuY3Rpb24gYmFyKGEsIGIpIHsKKyAg
ICByZXR1cm4gYmF6LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7Cit9CisKK2Z1bmN0aW9uIGJheihh
LCBiKSB7CisgICAgcmV0dXJuIGEgKyBiICogMjsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oNywg
MTEpOworICAgIGlmIChyZXN1bHQgIT0gMjkpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdDogIiArIHJlc3VsdDsKK30KKwordmFyIHJlc3VsdCA9IGZvbyg1LCAyMTQ3NDgzNjQ2KTsK
K2lmIChyZXN1bHQgIT0gNDI5NDk2NzI5NykKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyByZXN1bHQ7Cg==
</data>
<flag name="review"
          id="246111"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>