<?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>164081</bug_id>
          
          <creation_ts>2016-10-27 14:34:56 -0700</creation_ts>
          <short_desc>JSFunction::put() should not allow caching of lazily reified properties.</short_desc>
          <delta_ts>2016-10-27 16:50:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1245266</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-27 14:34:56 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245268</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-27 14:35:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/28958291&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245285</commentid>
    <comment_count>2</comment_count>
      <attachid>293066</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-27 15:02:25 -0700</bug_when>
    <thetext>Created attachment 293066
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245302</commentid>
    <comment_count>3</comment_count>
      <attachid>293066</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-27 15:30:04 -0700</bug_when>
    <thetext>Comment on attachment 293066
proposed patch.

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

r=me with some mixups

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        It is incorrect to cache the putting of lazily reified properties because the
&gt; +        inline cache code that is generated needs to be able to operate on other
&gt; +        instances of JSFunctions that may not have these properties reified yet.

This explanation isn&apos;t complete.

There are two things going on here:

(1) The setters for these properties implement complex conditional behavior. It&apos;s just not true that they are PropertyOffset puts, so it&apos;s an error to say that they are.

(2) Even when we instantiate a new property that is a PropertyOffset put (as .caller and .arguments do), it&apos;s still wrong to return a cacheable PropertyOffset put. 

The reason for (2) is subtle: Returning a cacheable PropertyOffset put promises that the put is cacheable for any object with our *starting* Structure. But the process of instantiating .caller and .arguments transitions us to a *new* Structure, and the put is only cacheable for our *new* Structure.

It would be correct for some future version of this code to allow caching of lazily reified properties, if it took these problems into account.

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:446
&gt; +        slot.disableCaching();

I think it&apos;s better to put the disableCaching() call right at the top, when we learn that the property is dynamic.

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:458
&gt; +            slot.disableCaching();

I think it&apos;s better to put the disableCaching() call right at the top, when we learn that the property is dynamic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245337</commentid>
    <comment_count>4</comment_count>
      <attachid>293078</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-27 16:45:45 -0700</bug_when>
    <thetext>Created attachment 293078
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245338</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-27 16:47:24 -0700</bug_when>
    <thetext>Thanks for the review.  I&apos;ve moved the calls to slot.disableCaching() earlier as suggested and written a more detailed ChangeLog based on the 2 points you brought up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245343</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-27 16:50:38 -0700</bug_when>
    <thetext>Landed in r208018: &lt;http://trac.webkit.org/r208018&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293066</attachid>
            <date>2016-10-27 15:02:25 -0700</date>
            <delta_ts>2016-10-27 15:30:04 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-164081.patch</filename>
            <type>text/plain</type>
            <size>9491</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4MDA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDE2LTEwLTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0Z1bmN0aW9uOjpwdXQoKSBzaG91bGQgbm90IGFsbG93IGNhY2hpbmcgb2YgbGF6aWx5IHJlaWZp
ZWQgcHJvcGVydGllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NDA4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEl0IGlzIGluY29ycmVjdCB0byBjYWNoZSB0aGUgcHV0dGluZyBvZiBsYXppbHkgcmVp
ZmllZCBwcm9wZXJ0aWVzIGJlY2F1c2UgdGhlCisgICAgICAgIGlubGluZSBjYWNoZSBjb2RlIHRo
YXQgaXMgZ2VuZXJhdGVkIG5lZWRzIHRvIGJlIGFibGUgdG8gb3BlcmF0ZSBvbiBvdGhlcgorICAg
ICAgICBpbnN0YW5jZXMgb2YgSlNGdW5jdGlvbnMgdGhhdCBtYXkgbm90IGhhdmUgdGhlc2UgcHJv
cGVydGllcyByZWlmaWVkIHlldC4KKyAgICAgICAgV2Ugbm93IHByZXZlbnQgdGhlc2UgcHJvcGVy
dGllcyBmcm9tIGJlaW5nIGNhY2hlZC4KKworICAgICAgICBBbHNvIGZpeGVkIHNvbWUgbWlzc2lu
ZyBleGNlcHRpb24gY2hlY2tzLgorCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rp
b246OnB1dCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnJlaWZ5TGF6eVByb3BlcnR5SWZO
ZWVkZWQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpyZWlmeUJvdW5kTmFtZUlmTmVlZGVk
KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKwogMjAxNi0xMC0yNiAgSkYgQmFz
dGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHkgQVBJOiBp
bXBsZW1lbnQgSW5zdGFuY2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjA3OTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDEyICsxOTYsMTUg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcgogewogICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAgICAgSWRl
bnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAKICAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkpOwogCiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKICAg
ICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxs
KCkpICYmICFzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkgJiYgKHNsb3QuaXNDYWNoZWFi
bGVWYWx1ZSgpIHx8IHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSB8fCBzbG90LmlzVW5zZXQoKSkp
CiAgICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpz
dHViSW5mbywgR2V0QnlJREtpbmQ6OlB1cmUpOwogCkBAIC0zODcsNyArMzkwLDggQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpYwogICAgIAogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwot
ICAgIAorICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisKICAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNj
ZXNzVHlwZSk7CiAKQEAgLTM5OCw3ICs0MDIsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZFN0cmljCiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5p
c0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCp2bSkgOiBudWxscHRyOwog
ICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKLSAgICAK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCiAgICAgaWYgKGFjY2Vz
c1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQog
ICAgICAgICByZXR1cm47CiAgICAgCkBAIC00MTIsNyArNDE3LDggQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdAogICAgIAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwotICAgIAorICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisKICAgICBJZGVudGlmaWVy
IGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFj
Y2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7
CiAKQEAgLTQyMyw3ICs0MjksOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZE5vblN0CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/
IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCp2bSkgOiBudWxscHRyOyAgICAKICAgICBi
YXNlVmFsdWUucHV0SW5saW5lKGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7Ci0gICAgCisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKwogICAgIGlmIChhY2Nlc3NUeXBl
ICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIApAQCAtNTE2LDYgKzUyMyw3IEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFs
KENhbGxGcmFtZSogY2FsbEZyYW0KICAgICBpZiAoYnlWYWxJbmZvLT5zdHViSW5mbyAmJiAoIWlz
U3RyaW5nT3JTeW1ib2woc3Vic2NyaXB0KSB8fCBieVZhbEluZm8tPmNhY2hlZElkICE9IHByb3Bl
cnR5KSkKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCisgICAgc2Nv
cGUucmVsZWFzZSgpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgY2FsbEZy
YW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgIGJhc2VWYWx1ZS5wdXRJbmxp
bmUoY2FsbEZyYW1lLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwNzkxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MjksMzYgKzQyOSw0MSBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTCiAgICAgICAgIHJldHVybiBvcmRpbmFyeVNldFNsb3coZXhlYywgdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmlj
dE1vZGUoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24o
KSkgewotICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUJvdW5kTmFtZUlmTmVlZGVkKHZtLCBleGVj
LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBMYXp5UHJvcGVydHlUeXBlIHByb3BUeXBlID0gdGhp
c09iamVjdC0+cmVpZnlCb3VuZE5hbWVJZk5lZWRlZCh2bSwgZXhlYywgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgaWYgKHByb3BUeXBlID09IExhenlQcm9wZXJ0eVR5cGU6OklzTGF6eVByb3BlcnR5
KQorICAgICAgICAgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwogICAgICAgICByZXR1cm4gQmFz
ZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAg
IH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
KSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3Vj
aCB0aGF0IGl0IGNhbiBvbmx5IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0
aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCi0gICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkpOwotICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBQ
cm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXRT
bG90KTsKICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fcmFyZURhdGEpCiAgICAgICAgICAgICB0
aGlzT2JqZWN0LT5tX3JhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5
IG9mIGEgZnVuY3Rpb24iKTsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNo
ZWQsIHNpbmNlIGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fcmFyZURhdGEuCi0gICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBkb250Q2FjaGUodGhpc09iamVjdCk7CisgICAgICAgIHNsb3QuZGlzYWJsZUNh
Y2hpbmcoKTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGRvbnRDYWNoZSk7Cisg
ICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuY2FsbGVyKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlcikg
ewogICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRB
cmd1bWVudHNQcm9wZXJ0aWVzKCkpIHsKICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2Vy
IHRoZSBwcm9wZXJ0eSB0byBiZSByZWlmaWVkLCBpZiB0aGlzIGlzIG5vdCBhbHJlYWR5IHRoZSBj
YXNlIQogICAgICAgICAgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIGlmIHRoZSBgaGFzUHJvcGVy
dHkoKWAgY2FsbCBpcyBldmVuIG5lZWRlZCwgYXMgaW4gdGhlIGAhaGFzQ2FsbGVyQW5kQXJndW1l
bnRzUHJvcGVydGllcygpYCBjYXNlLAogICAgICAgICAgICAgLy8gdGhlc2UgcHJvcGVydGllcyBh
cmUgbm90IGxhenkgYW5kIHNob3VsZCBub3QgbmVlZCB0byBiZSByZWlmaWVkLiAoaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzU3OSkKICAgICAgICAgICAgIGJvb2wg
b2theSA9IHRoaXNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKG9rYXksIG9rYXkpOworICAgICAgICAgICAgc2xvdC5kaXNh
YmxlQ2FjaGluZygpOwogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICAgICAg
cmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBz
bG90LmlzU3RyaWN0TW9kZSgpLCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpKTsKICAgICB9Ci0gICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZCh2
bSwgZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICBMYXp5UHJvcGVydHlUeXBlIHByb3BUeXBlID0g
dGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZCh2bSwgZXhlYywgcHJvcGVydHlO
YW1lKTsKKyAgICBpZiAocHJvcFR5cGUgPT0gTGF6eVByb3BlcnR5VHlwZTo6SXNMYXp5UHJvcGVy
dHkpCisgICAgICAgIHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsKICAgICBzY29wZS5yZWxlYXNlKCk7
CiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KQEAgLTY2MSwyNSArNjY2LDI4IEBAIHZvaWQgSlNGdW5jdGlvbjo6cmVp
ZnlOYW1lKFZNJiB2bSwgRXhlY1MKICAgICByYXJlRGF0YS0+c2V0SGFzUmVpZmllZE5hbWUoKTsK
IH0KIAotdm9pZCBKU0Z1bmN0aW9uOjpyZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorSlNGdW5jdGlvbjo6
TGF6eVByb3BlcnR5VHlwZSBKU0Z1bmN0aW9uOjpyZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAg
IGlmICghaGFzUmVpZmllZExlbmd0aCgpKQogICAgICAgICAgICAgcmVpZnlMZW5ndGgodm0pOwor
ICAgICAgICByZXR1cm4gTGF6eVByb3BlcnR5VHlwZTo6SXNMYXp5UHJvcGVydHk7CiAgICAgfSBl
bHNlIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bmFtZSkgewogICAgICAg
ICBpZiAoIWhhc1JlaWZpZWROYW1lKCkpCiAgICAgICAgICAgICByZWlmeU5hbWUodm0sIGV4ZWMp
OworICAgICAgICByZXR1cm4gTGF6eVByb3BlcnR5VHlwZTo6SXNMYXp5UHJvcGVydHk7CiAgICAg
fQorICAgIHJldHVybiBMYXp5UHJvcGVydHlUeXBlOjpOb3RMYXp5UHJvcGVydHk7CiB9CiAKLXZv
aWQgSlNGdW5jdGlvbjo6cmVpZnlCb3VuZE5hbWVJZk5lZWRlZChWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK0pTRnVuY3Rpb246OkxhenlQcm9wZXJ0
eVR5cGUgSlNGdW5jdGlvbjo6cmVpZnlCb3VuZE5hbWVJZk5lZWRlZChWTSYgdm0sIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBjb25zdCBJZGVudGlm
aWVyJiBuYW1lSWRlbnQgPSB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lOwogICAgIGlmIChwcm9wZXJ0
eU5hbWUgIT0gbmFtZUlkZW50KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBMYXp5
UHJvcGVydHlUeXBlOjpOb3RMYXp5UHJvcGVydHk7CiAKICAgICBpZiAoaGFzUmVpZmllZE5hbWUo
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gTGF6eVByb3BlcnR5VHlwZTo6SXNM
YXp5UHJvcGVydHk7CiAKICAgICBpZiAodGhpcy0+aW5oZXJpdHMoSlNCb3VuZEZ1bmN0aW9uOjpp
bmZvKCkpKSB7CiAgICAgICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpcy0+cmFy
ZURhdGEodm0pOwpAQCAtNjg4LDYgKzY5Niw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6cmVpZnlCb3Vu
ZE5hbWVJZk5lZWRlZCgKICAgICAgICAgcHV0RGlyZWN0KHZtLCBuYW1lSWRlbnQsIGpzU3RyaW5n
KGV4ZWMsIG5hbWUpLCBpbml0aWFsQXR0cmlidXRlcyk7CiAgICAgICAgIHJhcmVEYXRhLT5zZXRI
YXNSZWlmaWVkTmFtZSgpOwogICAgIH0KKyAgICByZXR1cm4gTGF6eVByb3BlcnR5VHlwZTo6SXNM
YXp5UHJvcGVydHk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMjA3OTEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTAsOSArMTkwLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNSZWlmaWVkTmFtZSgpIGNv
bnN0OwogICAgIHZvaWQgcmVpZnlMZW5ndGgoVk0mKTsKICAgICB2b2lkIHJlaWZ5TmFtZShWTSYs
IEV4ZWNTdGF0ZSopOwotICAgIHZvaWQgcmVpZnlCb3VuZE5hbWVJZk5lZWRlZChWTSYsIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgdm9pZCByZWlmeU5hbWUoVk0mLCBFeGVjU3RhdGUq
LCBTdHJpbmcgbmFtZSk7Ci0gICAgdm9pZCByZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKFZNJiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSk7CisKKyAgICBlbnVtIGNsYXNz
IExhenlQcm9wZXJ0eVR5cGUgeyBOb3RMYXp5UHJvcGVydHksIElzTGF6eVByb3BlcnR5IH07Cisg
ICAgTGF6eVByb3BlcnR5VHlwZSByZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKFZNJiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lKTsKKyAgICBMYXp5UHJvcGVydHlUeXBlIHJlaWZ5Qm91bmROYW1l
SWZOZWVkZWQoVk0mLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAo=
</data>
<flag name="review"
          id="316005"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293078</attachid>
            <date>2016-10-27 16:45:45 -0700</date>
            <delta_ts>2016-10-27 16:45:45 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-164081.patch</filename>
            <type>text/plain</type>
            <size>10377</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4MDA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE2LTEwLTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0Z1bmN0aW9uOjpwdXQoKSBzaG91bGQgbm90IGFsbG93IGNhY2hpbmcgb2YgbGF6aWx5IHJlaWZp
ZWQgcHJvcGVydGllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NDA4MQorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisg
ICAgICAgIEl0IGlzIGluY29ycmVjdCBmb3IgSlNGdW5jdGlvbjo6cHV0KCkgdG8gcmV0dXJuIFB1
dFByb3BlcnR5U2xvdHMgdGhhdCBpbmRpY2F0ZXMKKyAgICAgICAgdGhhdCBpdHMgbGF6aWx5IHJl
aWZpZWQgcHJvcGVydGllcyAoZS5nLiAuY2FsbGVyLCBhbmQgLmFyZ3VtZW50cykgYXJlIGNhY2hl
YWJsZS4KKyAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBpczoKKworICAgICAgICAxLiBDdXJy
ZW50bHksIGEgY2FjaGVhYmxlIHB1dCBtYXkgb25seSBjb25zaXN0IG9mIHRoZSBmb2xsb3dpbmcg
dHlwZXMgb2YgcHV0CisgICAgICAgICAgIG9wZXJhdGlvbnM6CisgICAgICAgICAgIGEuIHB1dHRp
bmcgYSBuZXcgcHJvcGVydHkgYXQgYW4gb2Zmc2V0IGluIHRoZSBvYmplY3Qgc3RvcmFnZS4KKyAg
ICAgICAgICAgYi4gY2hhbmdpbmcgdGhlIHZhbHVlIG9mIGFuIGV4aXN0aW5nIHByb3BlcnR5IGF0
IGFuIG9mZnNldCBpbiB0aGUgb2JqZWN0IHN0b3JhZ2UuCisgICAgICAgICAgIGMuIGludm9raW5n
IHRoZSBzZXR0ZXIgZm9yIGEgcHJvcGVydHkgYXQgYW4gb2Zmc2V0IGluIHRoZSBvYmplY3Qgc3Rv
cmFnZS4KKworICAgICAgICAgICBSZXR1cm5pbmcgYSBQdXRQcm9wZXJ0eVNsb3QgdGhhdCBpbmRp
Y2F0ZXMgdGhlIHByb3BlcnR5IGlzIGNhY2hlYWJsZSBtZWFucyB0aGF0CisgICAgICAgICAgIHRo
ZSBwcm9wZXJ0eSBwdXQgbXVzdCBiZSBvbmUgb2YgdGhlIGFib3ZlIG9wZXJhdGlvbnMuCisKKyAg
ICAgICAgICAgRm9yIGxhemlseSByZWlmaWVkIHByb3BlcnRpZXMsIEpTRnVuY3Rpb246OnB1dCgp
IGltcGxlbWVudHMgY29tcGxleCBjb25kaXRpb25hbAorICAgICAgICAgICBiZWhhdmlvciB0aGF0
IGlzIGRpZmZlcmVudCB0aGFuIHRoZSBzZXQgb2YgY2FjaGVhYmxlIHB1dCBvcGVyYXRpb25zIGFi
b3ZlLgorICAgICAgICAgICBIZW5jZSwgaXQgc2hvdWxkIG5vdCBjbGFpbSB0aGF0IHRoZSBwcm9w
ZXJ0eSBwdXQgaXMgY2FjaGVhYmxlLgorICAgIAorICAgICAgICAyLiBDYWNoZWFibGUgcHV0cyBh
cmUgY2FjaGVkIG9uIHRoZSBvcmlnaW5hbCBzdHJ1Y3R1cmUgb2YgdGhlIG9iamVjdCBiZWZvcmUg
dGhlCisgICAgICAgICAgIHB1dCBvcGVyYXRpb24uCisKKyAgICAgICAgICAgUmVpZnlpbmcgYSBs
YXp5IHByb3BlcnR5IHdpbGwgdHJpZ2dlciBhIHN0cnVjdHVyZSB0cmFuc2l0aW9uLiAgRXZlbiB0
aG91Z2gKKyAgICAgICAgICAgc3Vic2VxdWVudCBwdXRzIHRvIHN1Y2ggYSBwcm9wZXJ0eSBtYXkg
YmUgY2FjaGVhYmxlIGFmdGVyIHRoZSBzdHJ1Y3R1cmUKKyAgICAgICAgICAgdHJhbnNpdGlvbiwg
aXQgaXMgaW5jb3JyZWN0IHRvIGluZGljYXRlIHRoYXQgdGhlIHByb3BlcnR5IHB1dCBpcyBjYWNo
ZWFibGUKKyAgICAgICAgICAgYmVjYXVzZSB0aGUgY2FjaGluZyBpcyBvbiB0aGUgb3JpZ2luYWwg
c3RydWN0dXJlLCBub3QgdGhlIG5ldyB0cmFuc2l0aW9uZWQKKyAgICAgICAgICAgc3RydWN0dXJl
LgorCisgICAgICAgIEFsc28gZml4ZWQgc29tZSBtaXNzaW5nIGV4Y2VwdGlvbiBjaGVja3MuCisK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9KU0Z1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZCk6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OnJlaWZ5Qm91bmROYW1lSWZOZWVkZWQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNGdW5jdGlvbi5oOgorCiAyMDE2LTEwLTI2ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseSBBUEk6IGltcGxlbWVudCBJbnN0YW5jZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyMDc5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsMTIgKzE5NiwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRyCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAKICAgICBiYXNlVmFsdWUu
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKwogICAgIGlmIChzdHViSW5mby0+Y29uc2lk
ZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkgJiYgIXNsb3QuaXNUYWludGVk
QnlPcGFxdWVPYmplY3QoKSAmJiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5pc0Nh
Y2hlYWJsZUdldHRlcigpIHx8IHNsb3QuaXNVbnNldCgpKSkKICAgICAgICAgcmVwYXRjaEdldEJ5
SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6
UHVyZSk7CiAKQEAgLTM4Nyw3ICszOTAsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZFN0cmljCiAgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgCisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0
YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIApAQCAtMzk4LDcg
KzQwMiw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWMKIAogICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUoKnZtKSA6IG51bGxwdHI7CiAgICAgYmFzZVZhbHVlLnB1dElubGlu
ZShleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwotICAgIAorICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxB
Y2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAK
QEAgLTQxMiw3ICs0MTcsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5v
blN0CiAgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoKnZtKTsKKwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIApAQCAtNDIzLDcgKzQyOSw4IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKIAogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUoKnZtKSA6IG51bGxwdHI7ICAgIAogICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZXhl
YywgaWRlbnQsIHZhbHVlLCBzbG90KTsKLSAgICAKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworCiAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC01
MTYsNiArNTIzLDcgQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoQ2FsbEZyYW1lKiBjYWxsRnJhbQog
ICAgIGlmIChieVZhbEluZm8tPnN0dWJJbmZvICYmICghaXNTdHJpbmdPclN5bWJvbChzdWJzY3Jp
cHQpIHx8IGJ5VmFsSW5mby0+Y2FjaGVkSWQgIT0gcHJvcGVydHkpKQogICAgICAgICBieVZhbElu
Zm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKKyAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0
cmljdE1vZGUoKSk7CiAgICAgYmFzZVZhbHVlLnB1dElubGluZShjYWxsRnJhbWUsIHByb3BlcnR5
LCB2YWx1ZSwgc2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjA3OTEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyOSwyNCArNDI5
LDI2IEBAIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1MKICAgICAgICAg
cmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKIAogICAgIGlmICh0
aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7Ci0gICAgICAgIHRoaXNPYmpl
Y3QtPnJlaWZ5Qm91bmROYW1lSWZOZWVkZWQodm0sIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIExhenlQcm9wZXJ0eVR5cGUgcHJvcFR5cGUgPSB0aGlzT2JqZWN0LT5yZWlmeUJvdW5kTmFt
ZUlmTmVlZGVkKHZtLCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBpZiAocHJvcFR5cGUg
PT0gTGF6eVByb3BlcnR5VHlwZTo6SXNMYXp5UHJvcGVydHkpCisgICAgICAgICAgICBzbG90LmRp
c2FibGVDYWNoaW5nKCk7CiAgICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogCiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpIHsKKyAgICAgICAgc2xvdC5kaXNh
YmxlQ2FjaGluZygpOwogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJl
aWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgogICAgICAgICAvLyBm
b2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgotICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5n
ZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsK
KyAgICAgICAgUHJvcGVydHlTbG90IGdldFNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIHRoaXNPYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZ2V0U2xvdCk7CiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX3JhcmVEYXRhKQogICAg
ICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHByb3RvdHlw
ZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7Ci0gICAgICAgIC8vIERvbid0IGFsbG93IHRoaXMg
dG8gYmUgY2FjaGVkLCBzaW5jZSBhIFtbUHV0XV0gbXVzdCBjbGVhciBtX3JhcmVEYXRhLgotICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3QgZG9udENhY2hlKHRoaXNPYmplY3QpOwogICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OnB1
dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICB9CiAK
LSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMg
fHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpIHsKKyAgICBp
ZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyB8fCBwcm9wZXJ0
eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyKSB7CisgICAgICAgIHNsb3QuZGlzYWJs
ZUNhY2hpbmcoKTsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aGFz
Q2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGllcygpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIHdp
bGwgdHJpZ2dlciB0aGUgcHJvcGVydHkgdG8gYmUgcmVpZmllZCwgaWYgdGhpcyBpcyBub3QgYWxy
ZWFkeSB0aGUgY2FzZSEKICAgICAgICAgICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBpZiB0aGUg
YGhhc1Byb3BlcnR5KClgIGNhbGwgaXMgZXZlbiBuZWVkZWQsIGFzIGluIHRoZSBgIWhhc0NhbGxl
ckFuZEFyZ3VtZW50c1Byb3BlcnRpZXMoKWAgY2FzZSwKQEAgLTQ1OCw3ICs0NjAsOSBAQCBib29s
IEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTCiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgQVNDSUlM
aXRlcmFsKFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgfQotICAgIHRoaXNPYmpl
Y3QtPnJlaWZ5TGF6eVByb3BlcnR5SWZOZWVkZWQodm0sIGV4ZWMsIHByb3BlcnR5TmFtZSk7Cisg
ICAgTGF6eVByb3BlcnR5VHlwZSBwcm9wVHlwZSA9IHRoaXNPYmplY3QtPnJlaWZ5TGF6eVByb3Bl
cnR5SWZOZWVkZWQodm0sIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgaWYgKHByb3BUeXBlID09
IExhenlQcm9wZXJ0eVR5cGU6OklzTGF6eVByb3BlcnR5KQorICAgICAgICBzbG90LmRpc2FibGVD
YWNoaW5nKCk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CkBAIC02NjEsMjUg
KzY2NSwyOCBAQCB2b2lkIEpTRnVuY3Rpb246OnJlaWZ5TmFtZShWTSYgdm0sIEV4ZWNTCiAgICAg
cmFyZURhdGEtPnNldEhhc1JlaWZpZWROYW1lKCk7CiB9CiAKLXZvaWQgSlNGdW5jdGlvbjo6cmVp
ZnlMYXp5UHJvcGVydHlJZk5lZWRlZChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK0pTRnVuY3Rpb246OkxhenlQcm9wZXJ0eVR5cGUgSlNGdW5jdGlv
bjo6cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICBpZiAoIWhhc1JlaWZpZWRMZW5ndGgoKSkK
ICAgICAgICAgICAgIHJlaWZ5TGVuZ3RoKHZtKTsKKyAgICAgICAgcmV0dXJuIExhenlQcm9wZXJ0
eVR5cGU6OklzTGF6eVByb3BlcnR5OwogICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09IHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUpIHsKICAgICAgICAgaWYgKCFoYXNSZWlmaWVkTmFtZSgpKQog
ICAgICAgICAgICAgcmVpZnlOYW1lKHZtLCBleGVjKTsKKyAgICAgICAgcmV0dXJuIExhenlQcm9w
ZXJ0eVR5cGU6OklzTGF6eVByb3BlcnR5OwogICAgIH0KKyAgICByZXR1cm4gTGF6eVByb3BlcnR5
VHlwZTo6Tm90TGF6eVByb3BlcnR5OwogfQogCi12b2lkIEpTRnVuY3Rpb246OnJlaWZ5Qm91bmRO
YW1lSWZOZWVkZWQoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitKU0Z1bmN0aW9uOjpMYXp5UHJvcGVydHlUeXBlIEpTRnVuY3Rpb246OnJlaWZ5Qm91
bmROYW1lSWZOZWVkZWQoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZUlkZW50ID0gdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZTsKICAgICBpZiAocHJvcGVydHlOYW1lICE9IG5hbWVJZGVudCkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gTGF6eVByb3BlcnR5VHlwZTo6Tm90TGF6eVByb3Bl
cnR5OwogCiAgICAgaWYgKGhhc1JlaWZpZWROYW1lKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIExhenlQcm9wZXJ0eVR5cGU6OklzTGF6eVByb3BlcnR5OwogCiAgICAgaWYgKHRo
aXMtPmluaGVyaXRzKEpTQm91bmRGdW5jdGlvbjo6aW5mbygpKSkgewogICAgICAgICBGdW5jdGlv
blJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXMtPnJhcmVEYXRhKHZtKTsKQEAgLTY4OCw2ICs2OTUs
NyBAQCB2b2lkIEpTRnVuY3Rpb246OnJlaWZ5Qm91bmROYW1lSWZOZWVkZWQoCiAgICAgICAgIHB1
dERpcmVjdCh2bSwgbmFtZUlkZW50LCBqc1N0cmluZyhleGVjLCBuYW1lKSwgaW5pdGlhbEF0dHJp
YnV0ZXMpOwogICAgICAgICByYXJlRGF0YS0+c2V0SGFzUmVpZmllZE5hbWUoKTsKICAgICB9Cisg
ICAgcmV0dXJuIExhenlQcm9wZXJ0eVR5cGU6OklzTGF6eVByb3BlcnR5OwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgJKHJldmlzaW9uIDIwNzkxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDkgKzE5MCwxMSBAQCBwcml2YXRl
OgogICAgIGJvb2wgaGFzUmVpZmllZE5hbWUoKSBjb25zdDsKICAgICB2b2lkIHJlaWZ5TGVuZ3Ro
KFZNJik7CiAgICAgdm9pZCByZWlmeU5hbWUoVk0mLCBFeGVjU3RhdGUqKTsKLSAgICB2b2lkIHJl
aWZ5Qm91bmROYW1lSWZOZWVkZWQoVk0mLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAg
IHZvaWQgcmVpZnlOYW1lKFZNJiwgRXhlY1N0YXRlKiwgU3RyaW5nIG5hbWUpOwotICAgIHZvaWQg
cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZChWTSYsIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpOworCisgICAgZW51bSBjbGFzcyBMYXp5UHJvcGVydHlUeXBlIHsgTm90TGF6
eVByb3BlcnR5LCBJc0xhenlQcm9wZXJ0eSB9OworICAgIExhenlQcm9wZXJ0eVR5cGUgcmVpZnlM
YXp5UHJvcGVydHlJZk5lZWRlZChWTSYsIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CisgICAg
TGF6eVByb3BlcnR5VHlwZSByZWlmeUJvdW5kTmFtZUlmTmVlZGVkKFZNJiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKTsKIAogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>