<?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>148400</bug_id>
          
          <creation_ts>2015-08-24 14:44:54 -0700</creation_ts>
          <short_desc>Callee can be incorrectly overridden when it&apos;s captured</short_desc>
          <delta_ts>2015-08-25 11:40:56 -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 Nightly 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1120409</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-24 14:44:54 -0700</bug_when>
    <thetext>Consider these two programs:
&quot;(function foo() { foo = 20; print(foo); })();&quot;
and
&quot;(function foo() { let x = function() { return foo; }; foo = 20; print(foo) })();&quot;
They have different behaviors.
The latter incorrectly assigns 20 to foo.
I think we can probably make this Just Work with a FunctionNameScope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120498</commentid>
    <comment_count>1</comment_count>
      <attachid>259805</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-24 18:59:25 -0700</bug_when>
    <thetext>Created attachment 259805
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120665</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-25 11:40:56 -0700</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/188926</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259805</attachid>
            <date>2015-08-24 18:59:25 -0700</date>
            <delta_ts>2015-08-24 19:04:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>22247</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4OTAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDE1LTA4LTI0ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENhbGxlZSBjYW4gYmUgaW5jb3JyZWN0bHkgb3ZlcnJpZGRlbiB3aGVuIGl0J3MgY2FwdHVyZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODQwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyBy
ZXNvcnQgdG8gYWx3YXlzIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiBuYW1lIHNjb3BlCisgICAgICAg
IHdoZW4gdGhlIGZ1bmN0aW9uIG5hbWUgaXMgaW4gc2NvcGUuIEJlY2F1c2UgdGhlIGJ5dGVjb2Rl
CisgICAgICAgIGdlbmVyYXRvciBub3cgaGFzIGEgbm90aW9uIG9mIGxvY2FsIGxleGljYWwgc2Nv
cGluZywKKyAgICAgICAgdGhpcyBpbmN1cnMgbm8gcnVudGltZSBwZW5hbHR5IGZvciBmdW5jdGlv
biBleHByZXNzaW9uIG5hbWVzCisgICAgICAgIHRoYXQgYXJlbid0IGhlYXAgYWxsb2NhdGVkLiBJ
ZiB0aGV5IGFyZSBoZWFwIGFsbG9jYXRlZCwKKyAgICAgICAgdGhpcyBtZWFucyB3ZSBtYXkgbm93
IGhhdmUgb25lIG1vcmUgc2NvcGUgb24gdGhlIHJ1bnRpbWUKKyAgICAgICAgc2NvcGUgc3RhY2sg
dGhhbiBiZWZvcmUuIFRoaXMgbW9kaWZpY2F0aW9uIHNpbXBsaWZpZXMgdGhlCisgICAgICAgIGNh
bGxlZSBpbml0aWFsaXphdGlvbiBjb2RlIGFuZCB1c2VzIHRoZSBsZXhpY2FsIHNjb3BpbmcgY29u
c3RydWN0cworICAgICAgICB0byBpbXBsZW1lbnQgdGhpcy4gVGhpcyBpbXBsZW1lbnRhdGlvbiBh
bHNvIGVuc3VyZXMKKyAgICAgICAgdGhhdCBldmVyeXRoaW5nIEp1c3QgV29ya3MgZm9yIGZ1bmN0
aW9uJ3Mgd2l0aCBkZWZhdWx0CisgICAgICAgIHBhcmFtZXRlciB2YWx1ZXMuIEJlZm9yZSB0aGlz
IHBhdGNoLCBJSUZFIGZ1bmN0aW9ucworICAgICAgICB3aXRoIGRlZmF1bHQgcGFyYW1ldGVyIHZh
bHVlcyBhbmQgYSBjYXB0dXJlZCBmdW5jdGlvbgorICAgICAgICBuYW1lIHdvdWxkIGNyYXNoIEpT
Qy4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoTGV4aWNhbFNjb3BlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cG9wTGV4aWNhbFNjb3BlSW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6dmFyaWFibGUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZVR5cGUpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZTo6aXNSZWFkT25seSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlOjppc1NwZWNpYWwpOgorICAg
ICAgICAoSlNDOjpWYXJpYWJsZTo6aXNDb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlOjpz
ZXRJc1JlYWRPbmx5KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoK
KyAgICAgICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6
UHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5UmVzb2x2
ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nTm9kZTo6YmluZFZhbHVlKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvSUlGRS1lczYtZGVmYXVsdC1wYXJhbWV0ZXJzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICguKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvSUlGRS1mdW5jdGlvbi1uYW1lLWNhcHR1cmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2Vy
dCk6CisgICAgICAgICguKToKKwogMjAxNS0wOC0yNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgcHJvdG9jb2wgdGVzdCBmb3IgZXhp
c3RpbmcgZXJyb3IgaGFuZGxpbmcgcGVyZm9ybWVkIGJ5IHRoZSBiYWNrZW5kCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMTg4NjkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw5
ICsyMzIsMTEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogICAg
IAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKICAgICAK
LSAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVu
Y3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkKLSAgICAgICAgJiYgZnVuY3Rpb25OYW1lU2NvcGVJ
c0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KSkgewotICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRl
bnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIpOworICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUo
ZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewor
ICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMo
Y29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAg
ICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5p
ZGVudCgpLmltcGwoKSk7CisgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNT
Y29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOworICAgICAgICBlbWl0UHVzaEZ1bmN0aW9u
TmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtB
c0NhcHR1cmVkKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHNob3VsZENhcHR1cmVTb21lT2ZUaGVU
aGluZ3MpIHsKQEAgLTM5NiwxNSArMzk4LDEyIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYKICAgICAvLyAtICJhcmd1bWVudHMiOiB1bmxlc3MgaXQncyB1c2VkIGFz
IGEgZnVuY3Rpb24gb3IgcGFyYW1ldGVyLCB0aGlzIHNob3VsZCByZWZlciB0byB0aGUKICAgICAv
LyAgIGFyZ3VtZW50cyBvYmplY3QuCiAgICAgLy8KLSAgICAvLyAtIGNhbGxlZTogdW5sZXNzIGl0
J3MgdXNlZCBhcyBhIHZhciwgZnVuY3Rpb24sIG9yIHBhcmFtZXRlciwgdGhpcyBzaG91bGQgcmVm
ZXIgdG8gdGhlCi0gICAgLy8gICBjYWxsZWUgKGkuZS4gb3VyIGZ1bmN0aW9uKS4KLSAgICAvLwog
ICAgIC8vIC0gZnVuY3Rpb25zOiB0aGVzZSBhbHdheXMgb3ZlcnJpZGUgZXZlcnl0aGluZyBlbHNl
LgogICAgIC8vCiAgICAgLy8gVGhlIG1vc3QgbG9naWNhbCB3YXkgdG8gZG8gYWxsIG9mIHRoaXMg
aXMgdG8gaW5pdGlhbGl6ZSBub25lIG9mIHRoZSB2YXJpYWJsZXMgdW50aWwgbm93LAogICAgIC8v
IGFuZCB0aGVuIGluaXRpYWxpemUgdGhlbSBpbiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KSBpbiBzdWNoIGFuIG9yZGVyIHRoYXQgdGhlIHJ1bGVzCi0gICAgLy8gZm9yIGhvdyB0aGVzZSB0
aGluZ3Mgb3ZlcnJpZGUgZWFjaCBvdGhlciBlbmQgdXAgaG9sZGluZy4gV2Ugd291bGQgaW5pdGlh
bGl6ZSB0aGUgY2FsbGVlCi0gICAgLy8gZmlyc3QsIHRoZW4gImFyZ3VtZW50cyIsIHRoZW4gYWxs
IGFyZ3VtZW50cywgdGhlbiB0aGUgZnVuY3Rpb25zLgorICAgIC8vIGZvciBob3cgdGhlc2UgdGhp
bmdzIG92ZXJyaWRlIGVhY2ggb3RoZXIgZW5kIHVwIGhvbGRpbmcuIFdlIHdvdWxkIGluaXRpYWxp
emUgImFyZ3VtZW50cyIgZmlyc3QsIAorICAgIC8vIHRoZW4gYWxsIGFyZ3VtZW50cywgdGhlbiB0
aGUgZnVuY3Rpb25zLgogICAgIC8vCiAgICAgLy8gQnV0IHNvbWUgYXJndW1lbnRzIGFyZSBhbHJl
YWR5IGluaXRpYWxpemVkIGJ5IGRlZmF1bHQsIHNpbmNlIGlmIHRoZXkgYXJlbid0IGNhcHR1cmVk
IGFuZCB3ZQogICAgIC8vIGRvbid0IGhhdmUgImFyZ3VtZW50cyIgdGhlbiB3ZSBqdXN0IHBvaW50
IHRoZSBzeW1ib2wgdGFibGUgYXQgdGhlIHN0YWNrIHNsb3Qgb2YgdGhvc2UKQEAgLTQxMiwzNSAr
NDExLDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogICAgIC8v
IGJpbmRpbmcgKGkuZS4gZG9uJ3QgaW52b2x2ZSBkZXN0cnVjdHVyaW5nKSBhYm92ZSB3aGVuIGZp
Z3VyaW5nIG91dCBob3cgdG8gbGF5IHRoZW0gb3V0LAogICAgIC8vIGJlY2F1c2UgdGhhdCdzIGp1
c3QgdGhlIHNpbXBsZXN0IHRoaW5nLiBUaGlzIG1lYW5zIHRoYXQgd2hlbiB3ZSBpbml0aWFsaXpl
IHRoZW0sIHdlIGhhdmUgdG8KICAgICAvLyB3YXRjaCBvdXQgZm9yIHRoZSB0aGluZ3MgdGhhdCBv
dmVycmlkZSBhcmd1bWVudHMgKG5hbWVseSwgZnVuY3Rpb25zKS4KLSAgICAvLwotICAgIC8vIFdl
IGFsc28gaW5pdGlhbGl6ZSBjYWxsZWUgaGVyZSBhcyB3ZWxsLCBqdXN0IGJlY2F1c2UgaXQncyBz
byB3ZWlyZC4gV2Uga25vdyB3aGV0aGVyIHdlIHdhbnQKLSAgICAvLyB0byBkbyB0aGlzIGJlY2F1
c2Ugd2UgY2FuIGp1c3QgY2hlY2sgaWYgaXQncyBpbiB0aGUgc3ltYm9sIHRhYmxlLgotICAgIGlm
IChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5v
ZGUtPmZ1bmN0aW9uTW9kZSgpKQotICAgICAgICAmJiAhZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFt
aWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAg
ICAgICAmJiBmdW5jdGlvblN5bWJvbFRhYmxlLT5nZXQoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmlt
cGwoKSkuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+aWRl
bnQoKS5pbXBsKCkpKSB7Ci0gICAgICAgICAgICBTY29wZU9mZnNldCBvZmZzZXQ7Ci0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoZnVuY3Rp
b25TeW1ib2xUYWJsZS0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBmdW5jdGlv
blN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tlcik7Ci0gICAgICAgICAgICAg
ICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+YWRkKAotICAgICAgICAgICAgICAgICAgICBsb2NrZXIs
IGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCksCi0gICAgICAgICAgICAgICAgICAgIFN5bWJv
bFRhYmxlRW50cnkoVmFyT2Zmc2V0KG9mZnNldCksIFJlYWRPbmx5KSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfcHV0X3RvX3Njb3BlKTsK
LSAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2xleGljYWxFbnZpcm9ubWVudFJl
Z2lzdGVyLT5pbmRleCgpKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRD
b25zdGFudChmdW5jdGlvbk5vZGUtPmlkZW50KCkpKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChtX2NhbGxlZVJlZ2lzdGVyLmluZGV4KCkpOwotICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKFJlc29sdmVNb2RlQW5kVHlwZShUaHJvd0lmTm90Rm91bmQsIExvY2Fs
Q2xvc3VyZVZhcikub3BlcmFuZCgpKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG9mZnNldC5vZmZzZXQoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBm
dW5jdGlvblN5bWJvbFRhYmxlLT5hZGQoCi0gICAgICAgICAgICAgICAgZnVuY3Rpb25Ob2RlLT5p
ZGVudCgpLmltcGwoKSwKLSAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNl
dChtX2NhbGxlZVJlZ2lzdGVyLnZpcnR1YWxSZWdpc3RlcigpKSwgUmVhZE9ubHkpKTsKLSAgICAg
ICAgfQotICAgIH0KICAgICAKICAgICAvLyBUaGlzIGlzIG91ciBmaW5hbCBhY3Qgb2Ygd2VpcmRu
ZXNzLiAiYXJndW1lbnRzIiBpcyBvdmVycmlkZGVuIGJ5IGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZQog
ICAgIC8vIGNhbGxlZS4gV2UgYWRkIGl0IHRvIHRoZSBzeW1ib2wgdGFibGUgaWYgaXQncyBub3Qg
YWxyZWFkeSB0aGVyZSBhbmQgaXQncyBub3QgYW4gYXJndW1lbnQuCkBAIC0xNDQxLDggKzE0MTEs
MTIgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaExleGljYWxTY29wZQogICAgICAgICAg
ICAgICAgIGhhc0NhcHR1cmVkVmFyaWFibGVzID0gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcktpbmQgPT0gVmFyS2luZDo6U3RhY2spOwotICAg
ICAgICAgICAgICAgIFJlZ2lzdGVySUQqIGxvY2FsID0gbmV3QmxvY2tTY29wZVZhcmlhYmxlKCk7
Ci0gICAgICAgICAgICAgICAgbG9jYWwtPnJlZigpOworICAgICAgICAgICAgICAgIFJlZ2lzdGVy
SUQqIGxvY2FsOworICAgICAgICAgICAgICAgIGlmIChzY29wZVJlZ2lzdGVyVHlwZSA9PSBTY29w
ZVJlZ2lzdGVyVHlwZTo6QmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgPSBuZXdC
bG9ja1Njb3BlVmFyaWFibGUoKTsKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwtPnJlZigpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2NhbCA9IGFkZFZh
cigpOwogICAgICAgICAgICAgICAgIHZhck9mZnNldCA9IFZhck9mZnNldChsb2NhbC0+dmlydHVh
bFJlZ2lzdGVyKCkpOwogICAgICAgICAgICAgfQogCkBAIC0xNTEyLDYgKzE0ODYsOCBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BMZXhpY2FsU2NvcGUoCiAKIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OnBvcExleGljYWxTY29wZUludGVybmFsKFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmly
b25tZW50LCBURFpSZXF1aXJlbWVudCB0ZHpSZXF1aXJlbWVudCkKIHsKKyAgICAvLyBOT1RFOiBU
aGlzIGZ1bmN0aW9uIG9ubHkgbWFrZXMgc2Vuc2UgZm9yIHNjb3BlcyB0aGF0IGFyZW4ndCBTY29w
ZVJlZ2lzdGVyVHlwZTo6VmFyIChvbmx5IGZ1bmN0aW9uIG5hbWUgc2NvcGUgcmlnaHQgbm93IGlz
IFNjb3BlUmVnaXN0ZXJUeXBlOjpWYXIpLgorICAgIC8vIFRoaXMgZG9lc24ndCBtYWtlIHNlbnNl
IGZvciBTY29wZVJlZ2lzdGVyVHlwZTo6VmFyIGJlY2F1c2Ugd2UgZGVyZWYgUmVnaXN0ZXJJRHMg
aGVyZS4KICAgICBpZiAoIWVudmlyb25tZW50LnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0xNjU0LDEyICsxNjMwLDIwIEBAIFZhcmlhYmxlIEJ5dGVjb2RlR2VuZXJhdG9yOjp2YXJpYWJs
ZShjb24KICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBzeW1ib2xUYWJsZUVudHJ5ID0gc3ltYm9s
VGFibGUtPmdldChwcm9wZXJ0eS5pbXBsKCkpOwogICAgICAgICBpZiAoc3ltYm9sVGFibGVFbnRy
eS5pc051bGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoc3ltYm9sVGFi
bGUtPnNjb3BlVHlwZSgpID09IFN5bWJvbFRhYmxlOjpTY29wZVR5cGU6OkZ1bmN0aW9uTmFtZVNj
b3BlICYmIG1fdXNlc05vblN0cmljdEV2YWwpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvbid0IGtu
b3cgaWYgYW4gZXZhbCBoYXMgaW50cm9kdWNlZCBhICJ2YXIiIG5hbWVkIHRoZSBzYW1lIHRoaW5n
IGFzIHRoZSBmdW5jdGlvbiBuYW1lIHNjb3BlIHZhcmlhYmxlIG5hbWUuCi0gICAgICAgICAgICAv
LyBXZSByZXNvcnQgdG8gZHluYW1pYyBsb29rdXAgdG8gYW5zd2VyIHRoaXMgcXVlc3Rpb24uCi0g
ICAgICAgICAgICByZXR1cm4gVmFyaWFibGUocHJvcGVydHkpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB2YXJpYWJsZUZvckxvY2FsRW50cnkocHJvcGVydHksIHN5bWJvbFRhYmxlRW50cnks
IHN0YWNrRW50cnkubV9zeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgsIHN5bWJvbFRhYmxlLT5zY29w
ZVR5cGUoKSA9PSBTeW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOworICAgICAg
ICBib29sIHJlc3VsdElzQ2FsbGVlID0gZmFsc2U7CisgICAgICAgIGlmIChzeW1ib2xUYWJsZS0+
c2NvcGVUeXBlKCkgPT0gU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6RnVuY3Rpb25OYW1lU2NvcGUp
IHsKKyAgICAgICAgICAgIGlmIChtX3VzZXNOb25TdHJpY3RFdmFsKSB7CisgICAgICAgICAgICAg
ICAgLy8gV2UgZG9uJ3Qga25vdyBpZiBhbiBldmFsIGhhcyBpbnRyb2R1Y2VkIGEgInZhciIgbmFt
ZWQgdGhlIHNhbWUgdGhpbmcgYXMgdGhlIGZ1bmN0aW9uIG5hbWUgc2NvcGUgdmFyaWFibGUgbmFt
ZS4KKyAgICAgICAgICAgICAgICAvLyBXZSByZXNvcnQgdG8gZHluYW1pYyBsb29rdXAgdG8gYW5z
d2VyIHRoaXMgcXVlc3Rpb24uCisgICAgICAgICAgICAgICAgVmFyaWFibGUgcmVzdWx0ID0gVmFy
aWFibGUocHJvcGVydHkpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXN1bHRJc0NhbGxlZSA9IHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgVmFyaWFibGUgcmVzdWx0ID0gdmFyaWFibGVGb3JMb2NhbEVudHJ5KHByb3BlcnR5LCBz
eW1ib2xUYWJsZUVudHJ5LCBzdGFja0VudHJ5Lm1fc3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBz
eW1ib2xUYWJsZS0+c2NvcGVUeXBlKCkgPT0gU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNh
bFNjb3BlKTsKKyAgICAgICAgaWYgKHJlc3VsdElzQ2FsbGVlKQorICAgICAgICAgICAgcmVzdWx0
LnNldElzUmVhZE9ubHkoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBy
ZXR1cm4gVmFyaWFibGUocHJvcGVydHkpOwpAQCAtMTc0MCw4ICsxNzI0LDkgQEAgUmVzb2x2ZVR5
cGUgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmVUeQogICAgICAgICBpZiAobV9zeW1ib2xUYWJs
ZVN0YWNrW2ldLm1faXNXaXRoU2NvcGUpCiAgICAgICAgICAgICByZXR1cm4gRHluYW1pYzsKICAg
ICAgICAgaWYgKG1fdXNlc05vblN0cmljdEV2YWwgJiYgbV9zeW1ib2xUYWJsZVN0YWNrW2ldLm1f
c3ltYm9sVGFibGUtPnNjb3BlVHlwZSgpID09IFN5bWJvbFRhYmxlOjpTY29wZVR5cGU6OkZ1bmN0
aW9uTmFtZVNjb3BlKSB7Ci0gICAgICAgICAgICAvLyBXaGF0IHdlIHJlYWxseSB3YW50IGhlcmUg
aXMgc29tZXRoaW5nIGxpa2UgTG9jYWxDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbnNDaGVjayBi
dXQgaXQncyBwcm9iYWJseQotICAgICAgICAgICAgLy8gbm90IHdvcnRoIGludmVudGluZyBqdXN0
IGZvciB0aGUgZnVuY3Rpb24gbmFtZSBzY29wZS4KKyAgICAgICAgICAgIC8vIFdlIG5ldmVyIHdh
bnQgdG8gYXNzaWduIHRvIGEgRnVuY3Rpb25OYW1lU2NvcGUuIFJldHVybmluZyBEeW5hbWljIGhl
cmUgYWNoaWV2ZXMgdGhpcyBnb2FsLgorICAgICAgICAgICAgLy8gSWYgd2UgYXJlbid0IGluIG5v
bi1zdHJpY3QgZXZhbCBtb2RlLCB0aGVuIE5vZGVzQ29kZUdlbiBuZWVkcyB0byB0YWtlIGNhcmUg
bm90IHRvIGVtaXQKKyAgICAgICAgICAgIC8vIGEgcHV0X3RvX3Njb3BlIHdpdGggdGhlIGRlc3Rp
bmF0aW9uIGJlaW5nIHRoZSBmdW5jdGlvbiBuYW1lIHNjb3BlIHZhcmlhYmxlLgogICAgICAgICAg
ICAgcmV0dXJuIER5bmFtaWM7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMTAxLDcgKzMwODYsNyBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dUeXBlRXJyCiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGZhbHNlKTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogY2FsbGVlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVT
Y29wZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogY2FsbGVlLCBib29s
IGlzQ2FwdHVyZWQpCiB7CiAgICAgLy8gVGhlcmUgaXMgc29tZSBudWFuY2UgaGVyZToKICAgICAv
LyBJZiB3ZSdyZSBpbiBzdHJpY3QgbW9kZSBjb2RlLCB0aGUgZnVuY3Rpb24gbmFtZSBzY29wZSB2
YXJpYWJsZSBhY3RzIGV4YWN0bHkgbGlrZSBhICJjb25zdCIgdmFyaWFibGUuCkBAIC0zMTE0LDcg
KzMwOTksOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaEZ1bmN0aW9uCiAgICAg
Ly8gdG8gbGV4aWNhbCBlbnZpcm9ubWVudHMuCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBuYW1l
U2NvcGVFbnZpcm9ubWVudDsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG5hbWVTY29wZUVudmlyb25t
ZW50LmFkZChwcm9wZXJ0eSk7Ci0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0Nh
cHR1cmVkKCk7CisgICAgaWYgKGlzQ2FwdHVyZWQpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuc2V0SXNDYXB0dXJlZCgpOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
c2V0SXNDb25zdCgpOyAvLyBUaGUgZnVuY3Rpb24gbmFtZSBzY29wZSBuYW1lIGFjdHMgbGlrZSBh
IGNvbnN0IHZhcmlhYmxlLgogICAgIHVuc2lnbmVkIG51bVZhcnMgPSBtX2NvZGVCbG9jay0+bV9u
dW1WYXJzOwogICAgIHB1c2hMZXhpY2FsU2NvcGVJbnRlcm5hbChuYW1lU2NvcGVFbnZpcm9ubWVu
dCwgdHJ1ZSwgbnVsbHB0ciwgVERaUmVxdWlyZW1lbnQ6Ok5vdFVuZGVyVERaLCBTY29wZVR5cGU6
OkZ1bmN0aW9uTmFtZVNjb3BlLCBTY29wZVJlZ2lzdGVyVHlwZTo6VmFyKTsKQEAgLTMyODcsNiAr
MzI3Myw4IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzQXJndW1lbnROdW1iZXIKIAogYm9v
bCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoY29uc3Qg
VmFyaWFibGUmIHZhcmlhYmxlKQogeworICAgIC8vIElmIHdlJ3JlIGluIHN0cmljdCBtb2RlLCB3
ZSBhbHdheXMgdGhyb3cuCisgICAgLy8gSWYgd2UncmUgbm90IGluIHN0cmljdCBtb2RlLCB3ZSB0
aHJvdyBmb3IgImNvbnN0IiB2YXJpYWJsZXMgYnV0IG5vdCB0aGUgZnVuY3Rpb24gY2FsbGVlLgog
ICAgIGlmIChpc1N0cmljdE1vZGUoKSB8fCB2YXJpYWJsZS5pc0NvbnN0KCkpIHsKICAgICAgICAg
ZW1pdE9wY29kZShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwogICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShhZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKG1fdm0sIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpKS0+
aW5kZXgoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxODg2OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzNCw2ICsyMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBp
c1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzICYgUmVhZE9ubHk7IH0KICAg
ICAgICAgYm9vbCBpc1NwZWNpYWwoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgIT0gTm9ybWFsVmFy
aWFibGU7IH0KICAgICAgICAgYm9vbCBpc0NvbnN0KCkgY29uc3QgeyByZXR1cm4gaXNSZWFkT25s
eSgpICYmIG1faXNMZXhpY2FsbHlTY29wZWQ7IH0KKyAgICAgICAgdm9pZCBzZXRJc1JlYWRPbmx5
KCkgeyBtX2F0dHJpYnV0ZXMgfD0gUmVhZE9ubHk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAg
IElkZW50aWZpZXIgbV9pZGVudDsKQEAgLTU4OSw3ICs1OTAsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpOwogICAgICAgICB2b2lkIGVtaXRUaHJvd1R5cGVFcnJvcihjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpOwogCi0gICAgICAgIHZvaWQgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICB2b2lkIGVtaXRQ
dXNoQ2F0Y2hTY29wZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogZXhj
ZXB0aW9uVmFsdWUsIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKICAgICAgICAgdm9pZCBlbWl0UG9w
Q2F0Y2hTY29wZShWYXJpYWJsZUVudmlyb25tZW50Jik7CiAKQEAgLTYzNyw2ICs2MzcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwb3BMZXhpY2FsU2NvcGVJbnRlcm5hbChWYXJp
YWJsZUVudmlyb25tZW50JiwgVERaUmVxdWlyZW1lbnQpOwogICAgICAgICB2b2lkIGVtaXRQb3BT
Y29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEdldFBhcmVudFNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2Nv
cGUpOworICAgICAgICB2b2lkIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlLCBib29sIGlzQ2FwdHVyZWQpOworCiAg
ICAgcHVibGljOgogICAgICAgICB2b2lkIHB1c2hMZXhpY2FsU2NvcGUoVmFyaWFibGVFbnZpcm9u
bWVudE5vZGUqLCBib29sIGNhbk9wdGltaXplVERaQ2hlY2tzLCBSZWdpc3RlcklEKiogY29uc3Rh
bnRTeW1ib2xUYWJsZVJlc3VsdCA9IG51bGxwdHIpOwogICAgICAgICB2b2lkIHBvcExleGljYWxT
Y29wZShWYXJpYWJsZUVudmlyb25tZW50Tm9kZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMTg4
NjkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUyLDggKzEwNTIsMTAgQEAgUmVnaXN0ZXJJRCogUG9z
dGZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dAogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmdldCgp
OwogICAgIH0KICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xkVmFsdWUgPSBlbWl0UG9zdEluY09y
RGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0
KCksIG1fb3BlcmF0b3IpOwotICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQo
KSwgdmFyLCB2YWx1ZS5nZXQoKSwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKHZhbHVlLmdldCgpLCB2YXIsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CisgICAgaWYgKCF2YXIuaXNSZWFkT25seSgpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgVGhyb3dJZk5vdEZvdW5kKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgdmFyLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KIAogICAgIHJldHVybiBvbGRWYWx1ZS5nZXQo
KTsKIH0KQEAgLTEyNTAsOCArMTI1MiwxMCBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0
UmVzb2x2ZShCeXRlCiAgICAgfQogCiAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUu
Z2V0KCksIG1fb3BlcmF0b3IpOwotICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5n
ZXQoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgpLCB2YXIsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CisgICAgaWYgKCF2YXIuaXNSZWFkT25seSgpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgVGhyb3dJZk5vdEZvdW5k
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgdmFyLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9yLm1v
dmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCB2YWx1ZS5nZXQoKSk7CiB9CiAKQEAgLTE3NzEs
OCArMTc3NSwxMSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAg
ICAgICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCk7CiAgICAgfQogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZXN1bHQgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCksIG1fcmln
aHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBt
X3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpLCB0aGlzKTsKLSAgICBSZWdpc3RlcklEKiByZXR1
cm5SZXN1bHQgPSBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgcmVz
dWx0LmdldCgpLCBUaHJvd0lmTm90Rm91bmQpOwotICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGUocmVzdWx0LmdldCgpLCB2YXIsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgUmVn
aXN0ZXJJRCogcmV0dXJuUmVzdWx0ID0gcmVzdWx0LmdldCgpOworICAgIGlmICghdmFyLmlzUmVh
ZE9ubHkoKSkgeworICAgICAgICByZXR1cm5SZXN1bHQgPSBnZW5lcmF0b3IuZW1pdFB1dFRvU2Nv
cGUoc2NvcGUuZ2V0KCksIHZhciwgcmVzdWx0LmdldCgpLCBUaHJvd0lmTm90Rm91bmQpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJlc3VsdC5nZXQoKSwgdmFyLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuUmVzdWx0OwogfQog
CkBAIC0xNzgxLDEyICsxNzg4LDEzIEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9k
ZTo6ZW1pdEIKIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIFZhcmlh
YmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKKyAgICBib29sIGlzUmVhZE9u
bHkgPSB2YXIuaXNSZWFkT25seSgpICYmIG1fYXNzaWdubWVudENvbnRleHQgIT0gQXNzaWdubWVu
dENvbnRleHQ6OkNvbnN0RGVjbGFyYXRpb25TdGF0ZW1lbnQ7CiAgICAgaWYgKFJlZ2lzdGVySUQq
IGxvY2FsID0gdmFyLmxvY2FsKCkpIHsKICAgICAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gbnVs
bHB0cjsKICAgICAgICAgaWYgKG1fYXNzaWdubWVudENvbnRleHQgPT0gQXNzaWdubWVudENvbnRl
eHQ6OkFzc2lnbm1lbnRFeHByZXNzaW9uKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpD
aGVja0lmTmVjZXNzYXJ5KHZhciwgbG9jYWwsIG51bGxwdHIpOwogCi0gICAgICAgIGlmICh2YXIu
aXNSZWFkT25seSgpICYmIG1fYXNzaWdubWVudENvbnRleHQgIT0gQXNzaWdubWVudENvbnRleHQ6
OkNvbnN0RGVjbGFyYXRpb25TdGF0ZW1lbnQpIHsKKyAgICAgICAgaWYgKGlzUmVhZE9ubHkpIHsK
ICAgICAgICAgICAgIHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fcmlnaHQpOyAv
LyBFeGVjdXRlIHNpZGUgZWZmZWN0cyBmaXJzdC4KICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlVHlwZShyZXN1bHQsIHZhciwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAg
LTE4MTcsMTUgKzE4MjUsMTggQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRC
eXRlYwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAg
ZHN0ID0gMDsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKGRzdCwgbV9yaWdodCk7Ci0gICAgaWYgKHZhci5pc1JlYWRPbmx5KCkgJiYgbV9hc3NpZ25t
ZW50Q29udGV4dCAhPSBBc3NpZ25tZW50Q29udGV4dDo6Q29uc3REZWNsYXJhdGlvblN0YXRlbWVu
dCkgeworICAgIGlmIChpc1JlYWRPbmx5KSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fcmlnaHQpOyAvLyBFeGVjdXRlIHNpZGUgZWZmZWN0
cyBmaXJzdC4KICAgICAgICAgYm9vbCB0aHJld0V4Y2VwdGlvbiA9IGdlbmVyYXRvci5lbWl0UmVh
ZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICBpZiAodGhyZXdFeGNlcHRpb24p
CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVn
aXN0ZXJJRCogcmV0dXJuUmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdl
dCgpLCB2YXIsIHJlc3VsdC5nZXQoKSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJ
Zk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwotICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZVR5cGUocmVzdWx0LmdldCgpLCB2YXIsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgUmVnaXN0ZXJJRCogcmV0dXJuUmVzdWx0ID0gcmVzdWx0LmdldCgpOworICAgIGlmICghaXNS
ZWFkT25seSkgeworICAgICAgICByZXR1cm5SZXN1bHQgPSBnZW5lcmF0b3IuZW1pdFB1dFRvU2Nv
cGUoc2NvcGUuZ2V0KCksIHZhciwgcmVzdWx0LmdldCgpLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2Rl
KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmVzdWx0LmdldCgpLCB2YXIsIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgfQogCiAgICAgaWYgKG1fYXNzaWdubWVudENvbnRleHQgPT0gQXNz
aWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50IHx8IG1fYXNzaWdubWVudENvbnRl
eHQgPT0gQXNzaWdubWVudENvbnRleHQ6OkNvbnN0RGVjbGFyYXRpb25TdGF0ZW1lbnQpCiAgICAg
ICAgIGdlbmVyYXRvci5saWZ0VERaQ2hlY2tJZlBvc3NpYmxlKHZhcik7CkBAIC0zMjgyLDEzICsz
MjkzLDEzIEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmNvbGxlY3RCb3VuZElkZW4KIHZvaWQg
QmluZGluZ05vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiB2YWx1ZSkgY29uc3QKIHsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUobV9ib3VuZFByb3BlcnR5KTsKKyAgICBib29sIGlzUmVhZE9ubHkgPSB2YXIuaXNSZWFk
T25seSgpICYmIG1fYmluZGluZ0NvbnRleHQgIT0gQXNzaWdubWVudENvbnRleHQ6OkNvbnN0RGVj
bGFyYXRpb25TdGF0ZW1lbnQ7CiAgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gdmFyLmxvY2Fs
KCkpIHsKICAgICAgICAgaWYgKG1fYmluZGluZ0NvbnRleHQgPT0gQXNzaWdubWVudENvbnRleHQ6
OkFzc2lnbm1lbnRFeHByZXNzaW9uKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVj
a0lmTmVjZXNzYXJ5KHZhciwgbG9jYWwsIG51bGxwdHIpOwotICAgICAgICBpZiAodmFyLmlzUmVh
ZE9ubHkoKSAmJiBtX2JpbmRpbmdDb250ZXh0ICE9IEFzc2lnbm1lbnRDb250ZXh0OjpDb25zdERl
Y2xhcmF0aW9uU3RhdGVtZW50KSB7Ci0gICAgICAgICAgICBib29sIHRocmV3RXhjZXB0aW9uID0g
Z2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7Ci0gICAgICAgICAg
ICBpZiAodGhyZXdFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAoaXNSZWFkT25seSkgeworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2Vw
dGlvbklmTmVlZGVkKHZhcik7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2FsLCB2YWx1ZSk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUobG9jYWwsIHZhciwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAg
LTMzMDIsMTAgKzMzMTMsOSBAQCB2b2lkIEJpbmRpbmdOb2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVH
ZW5lCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChtX2JpbmRpbmdDb250ZXh0ID09IEFzc2lnbm1l
bnRDb250ZXh0OjpBc3NpZ25tZW50RXhwcmVzc2lvbikKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRU
RFpDaGVja0lmTmVjZXNzYXJ5KHZhciwgbnVsbHB0ciwgc2NvcGUpOwotICAgIGlmICh2YXIuaXNS
ZWFkT25seSgpICYmIG1fYmluZGluZ0NvbnRleHQgIT0gQXNzaWdubWVudENvbnRleHQ6OkNvbnN0
RGVjbGFyYXRpb25TdGF0ZW1lbnQpIHsKLSAgICAgICAgYm9vbCB0aHJld0V4Y2VwdGlvbiA9IGdl
bmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwotICAgICAgICBpZiAo
dGhyZXdFeGNlcHRpb24pCi0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKGlzUmVhZE9ubHkp
IHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7
CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNj
b3BlLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91
bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlw
ZSh2YWx1ZSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9JSUZFLWVzNi1kZWZhdWx0LXBhcmFtZXRlcnMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9JSUZFLWVz
Ni1kZWZhdWx0LXBhcmFtZXRlcnMuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL0lJRkUtZXM2LWRlZmF1bHQtcGFyYW1ldGVycy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACisKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYg
KCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKworICAgIDsoZnVuY3Rpb24gZm9vKHggPSAy
MCkgeworICAgICAgICBhc3NlcnQodHlwZW9mIGZvbyA9PT0gImZ1bmN0aW9uIik7CisgICAgfSko
KTsKKworICAgIDsoZnVuY3Rpb24gZm9vKHggPSAyMCkgeworICAgICAgICBmdW5jdGlvbiBiYXIo
KSB7IHJldHVybiBmb287IH0KKyAgICAgICAgYXNzZXJ0KHR5cGVvZiBmb28gPT09ICJmdW5jdGlv
biIpOworICAgIH0pKCk7CisKKyAgICA7KGZ1bmN0aW9uIGZvbyh4ID0gZm9vKSB7CisgICAgICAg
IHZhciBmb28gPSAyMDsKKyAgICAgICAgYXNzZXJ0KGZvbyA9PT0gMjApOworICAgICAgICBhc3Nl
cnQodHlwZW9mIHggPT09ICJmdW5jdGlvbiIpOworICAgIH0pKCk7CisKKyAgICA7KGZ1bmN0aW9u
IGZvbyhjYXBGb28gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGZvbzsgfSkgeworICAgICAgICB2YXIg
Zm9vID0gMjA7CisgICAgICAgIGFzc2VydChmb28gPT09IDIwKTsKKyAgICAgICAgYXNzZXJ0KHR5
cGVvZiBjYXBGb28oKSA9PT0gImZ1bmN0aW9uIik7CisgICAgfSkoKTsKKworICAgIDsoZnVuY3Rp
b24gZm9vKHggPSBldmFsKCJmb28iKSkgeworICAgICAgICB2YXIgZm9vID0gMjA7CisgICAgICAg
IGFzc2VydChmb28gPT09IDIwKTsKKyAgICAgICAgYXNzZXJ0KHR5cGVvZiB4ID09PSAiZnVuY3Rp
b24iKTsKKyAgICB9KSgpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9JSUZFLWZ1bmN0aW9uLW5hbWUtY2FwdHVyZWQuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9JSUZFLWZ1bmN0aW9uLW5hbWUtY2FwdHVyZWQu
anMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL0lJ
RkUtZnVuY3Rpb24tbmFtZS1jYXB0dXJlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4
IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgOyhmdW5jdGlvbiBmb28oKSB7CisgICAgICAgIGZvbyA9IDIwOworICAgICAg
ICBhc3NlcnQoZm9vICE9PSAyMCk7CisgICAgICAgIGFzc2VydCh0eXBlb2YgZm9vID09PSAiZnVu
Y3Rpb24iKTsKKyAgICB9KSgpOworCisgICAgOyhmdW5jdGlvbiBmb28oKSB7CisgICAgICAgIHZh
ciBiYXIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGZvbzsgfQorICAgICAgICBmb28gPSAyMDsKKyAg
ICAgICAgYXNzZXJ0KGZvbyAhPT0gMjApOworICAgICAgICBhc3NlcnQoYmFyKCkgIT09IDIwKTsK
KyAgICAgICAgYXNzZXJ0KHR5cGVvZiBmb28gPT09ICJmdW5jdGlvbiIpOworICAgICAgICBhc3Nl
cnQodHlwZW9mIGJhcigpID09PSAiZnVuY3Rpb24iKTsKKyAgICB9KSgpOworCisgICAgOyhmdW5j
dGlvbiBmb28oKSB7CisgICAgICAgIGV2YWwoImZvbyA9IDIwOyIpOworICAgICAgICBhc3NlcnQo
Zm9vICE9PSAyMCk7CisgICAgICAgIGFzc2VydCh0eXBlb2YgZm9vID09PSAiZnVuY3Rpb24iKTsK
KyAgICB9KSgpOworCisgICAgOyhmdW5jdGlvbiBmb28oKSB7CisgICAgICAgIGV2YWwoInZhciBm
b28gPSAyMDsiKTsKKyAgICAgICAgYXNzZXJ0KGZvbyA9PT0gMjApOworICAgIH0pKCk7CisKKyAg
ICA7KGZ1bmN0aW9uIGZvbygpIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICBhc3Nl
cnQoZm9vICE9PSAyMCk7CisgICAgICAgIGFzc2VydCh0eXBlb2YgZm9vID09PSAiZnVuY3Rpb24i
KTsKKyAgICB9KSgpOworfQo=
</data>
<flag name="review"
          id="285002"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>