<?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>157369</bug_id>
          
          <creation_ts>2016-05-04 20:22:28 -0700</creation_ts>
          <short_desc>event.target shouldn&apos;t be retargeted as the event bubbles into a slot</short_desc>
          <delta_ts>2016-05-05 14:32:36 -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>DOM</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1190314</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-04 20:22:28 -0700</bug_when>
    <thetext>When an event bubbles up from an assigned node to its assigned slot,
we shouldn&apos;t be adjusting event.target to point to the slot.

Since a shadow tree should have access to nodes outside the shadow tree,
event.target should be accessible inside the shadow tree of such a slot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190316</commentid>
    <comment_count>1</comment_count>
      <attachid>278154</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-04 21:03:02 -0700</bug_when>
    <thetext>Created attachment 278154
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190350</commentid>
    <comment_count>2</comment_count>
      <attachid>278154</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-05-05 05:32:27 -0700</bug_when>
    <thetext>Comment on attachment 278154
Fixes the bug

r=me, nice that this behavior change simplifies the logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190351</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-05-05 05:33:28 -0700</bug_when>
    <thetext>Please fix build with shadow DOM disabled before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190363</commentid>
    <comment_count>4</comment_count>
      <attachid>278167</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-05 09:16:18 -0700</bug_when>
    <thetext>Created attachment 278167
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190364</commentid>
    <comment_count>5</comment_count>
      <attachid>278167</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-05 09:16:38 -0700</bug_when>
    <thetext>Comment on attachment 278167
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190369</commentid>
    <comment_count>6</comment_count>
      <attachid>278169</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-05 09:42:17 -0700</bug_when>
    <thetext>Created attachment 278169
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190375</commentid>
    <comment_count>7</comment_count>
      <attachid>278172</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-05 10:05:47 -0700</bug_when>
    <thetext>Created attachment 278172
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190397</commentid>
    <comment_count>8</comment_count>
      <attachid>278172</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-05 11:32:38 -0700</bug_when>
    <thetext>Comment on attachment 278172
Patch for landing

Clearing flags on attachment: 278172

Committed r200464: &lt;http://trac.webkit.org/changeset/200464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190398</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-05 11:32:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190420</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-05-05 13:03:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/26123016&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190459</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-05 14:32:36 -0700</bug_when>
    <thetext>iOS build fixes:
https://trac.webkit.org/changeset/200477
https://trac.webkit.org/changeset/200478</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278154</attachid>
            <date>2016-05-04 21:03:02 -0700</date>
            <delta_ts>2016-05-05 09:16:14 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-157369-20160504210342.patch</filename>
            <type>text/plain</type>
            <size>28687</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDQ0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTA1LTA0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGV2ZW50LnRhcmdldCBzaG91bGRu
J3QgYmUgcmV0YXJnZXRlZCBhcyB0aGUgZXZlbnQgYnViYmxlcyBpbnRvIGEgc2xvdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MzY5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhbiBldmVudCBi
dWJibGVzIHVwIGZyb20gYW4gYXNzaWduZWQgbm9kZSB0byBpdHMgYXNzaWduZWQgc2xvdCwgd2Ug
c2hvdWxkbid0IGJlIGFkanVzdGluZworICAgICAgICBldmVudC50YXJnZXQgdG8gcG9pbnQgdG8g
dGhlIHNsb3QuIFNpbmNlIGEgc2hhZG93IHRyZWUgc2hvdWxkIGhhdmUgYWNjZXNzIHRvIG5vZGVz
IG91dHNpZGUKKyAgICAgICAgdGhlIHNoYWRvdyB0cmVlLCBldmVudC50YXJnZXQgaXMgYWNjZXNz
aWJsZSBpbnNpZGUgdGhlIHNoYWRvdyB0cmVlIG9mIHN1Y2ggYSBzbG90LgorCisgICAgICAgIE5l
dyBiZWhhdmlvciBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBHb29nbGUgQ2hyb21lIENhbmFyeSBh
cyB3ZWxsIGFzIHRoZSBzaGFkb3cgRE9NIHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHA6Ly93
M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cvI2Rmbi1yZXRhcmdldGluZy1h
bGdvcml0aG0KKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNs
b3R0ZWQtbm9kZS5odG1sCisKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnQ6OmRlZXBQYXRoKToKKyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudENvbnRleHQ6OmlzVW5yZWFjaGFibGVOb2RlKTogVXNlIE5v
ZGU6OmlzVW5jbG9zZWROb2RlIGluc3RlYWQgb2YgaXNSZWFjaGFibGUuCisgICAgICAgIChXZWJD
b3JlOjpFdmVudENvbnRleHQ6OmlzUmVhY2hhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
RXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKTog
RG9uJ3Qgc2V0IHRoZSB0YXJnZXQgdG8gdGhlIHNsb3Qgd2hlbiBlbnRlcmluZyBhIHNsb3QuIEFs
c28gbW92ZWQKKyAgICAgICAgdGhlIGNvZGUgdG8gYWRqdXN0IHRoZSB0YXJnZXQgYXMgd2UgZXhp
dCBhIHNoYWRvdyB0cmVlIHRvIHRoZSBlbmQgb2YgdGhlIG91dGVyIGxvb3AgZm9yIGNsYXJpdHku
CisgICAgICAgIChXZWJDb3JlOjppc1VuY2xvc2VkTm9kZU9mKTogRGVsZXRlZC4gUmVuYW1lZCB0
byBOb2RlOjppc1VuY2xvc2VkTm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6c2V0
UmVsYXRlZFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmNvbXB1dGVQYXRo
VW5jbG9zZWRUb1RhcmdldCk6IFJlbmFtZWQgZnJvbSBjb21wdXRlUGF0aERpc2Nsb3NlZFRvVGFy
Z2V0LgorICAgICAgICAoV2ViQ29yZTo6bW92ZU91dE9mQWxsU2hhZG93Um9vdHMpOiBFeHRyYWN0
ZWQgZnJvbSBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OlJlbGF0ZWROb2RlUmV0YXJnZXRlci4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6UmVsYXRlZE5vZGVSZXRhcmdl
dGVyKTogRml4ZWQgYSBidWcgdGhhdCB3ZSB3ZXJlIGV4aXRpbmcgZWFybHkKKyAgICAgICAgd2l0
aG91dCBzZXR0aW5nIG1faGFzRGlmZmVyZW50VHJlZVJvb3QgdHJ1ZSB3aGVuIHRhcmdldCBhbmQg
cmVsYXRlZE5vZGUgYXJlIGRpc2Nvbm5lY3RlZCBmcm9tCisgICAgICAgIGEgZG9jdW1lbnQuCisg
ICAgICAgIChXZWJDb3JlOjpSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OmN1cnJlbnROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6Y2hlY2tDb25zaXN0ZW5jeSk6
IFVwZGF0ZWQgdG8gbWF0Y2ggdGhlIHNwZWMgd2l0aCBvbmUgZXhjZXB0aW9uLgorICAgICAgICBX
ZSBkb24ndCB1c2UgbnVsbCBhcyB0aGUgYWRqdXN0ZWQgcmVsYXRlZCB0YXJnZXQgd2hlbiB0aGUg
KG9yaWdpbmFsKSByZWxhdGVkIHRhcmdldCBhbmQgdGhlIHRhcmdldAorICAgICAgICBhcmUgaW4g
dHdvIGRpc3RpbmN0IGRpc2Nvbm5lY3RlZCB0cmVlcyBzaW5jZSBzdWNoIGEgYmVoYXZpb3IgaXMg
bm90IFdlYiBjb21wYXRpYmxlLiBUaGlzIHNwZWMgYnVnIGlzCisgICAgICAgIHRyYWNrZWQgYnkg
aHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJjb21wb25lbnRzL2lzc3Vlcy80OTQKKyAgICAgICAg
KiBkb20vRXZlbnRQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmV2ZW50VGFy
Z2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKTogUmV0dXJucyBOb2RlKiBpbnN0ZWFkIG9mIEV2ZW50
VGFyZ2V0KiBzaW5jZQorICAgICAgICB3ZSBuZWVkIGEgTm9kZSBpbiBSZWxhdGVkTm9kZVJldGFy
Z2V0ZXI6OmNoZWNrQ29uc2lzdGVuY3kuCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6aXNVbmNsb3NlZE5vZGUpOiBNb3ZlZCBmcm9tIFJlbGF0ZWROb2Rl
UmV0YXJnZXRlci5jcHAKKyAgICAgICAgKiBkb20vTm9kZS5oOgorCiAyMDE2LTA1LTAzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdGFydCBvbiBkaWN0aW9uYXJ5
IHN1cHBvcnQgZm9yIElETCwgZ2V0dGluZyBlbm91Z2ggdG8gd29yayBmb3Igb25lIGRpY3Rpb25h
cnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNpb24gMjAwMzU5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSw3IEBAIFZl
Y3RvcjxFdmVudFRhcmdldCo+IEV2ZW50OjpkZWVwUGF0aCgpIGMKIHsKICAgICBpZiAoIW1fZXZl
bnRQYXRoKQogICAgICAgICByZXR1cm4gVmVjdG9yPEV2ZW50VGFyZ2V0Kj4oKTsKLSAgICByZXR1
cm4gbV9ldmVudFBhdGgtPmNvbXB1dGVQYXRoRGlzY2xvc2VkVG9UYXJnZXQoKm1fdGFyZ2V0KTsK
KyAgICByZXR1cm4gbV9ldmVudFBhdGgtPmNvbXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldCgqbV9j
dXJyZW50VGFyZ2V0KTsKIH0KIAogdm9pZCBFdmVudDo6cmVjZWl2ZWRUYXJnZXQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaAkocmV2aXNpb24gMjAwMzU5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw2IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBpc1Vu
cmVhY2hhYmxlTm9kZShFdmVudFRhcmdldCopOwotICAgIGJvb2wgaXNSZWFjaGFibGUoTm9kZSop
IGNvbnN0OwogI2VuZGlmCiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBSZWZQdHI8RXZl
bnRUYXJnZXQ+IG1fY3VycmVudFRhcmdldDsKQEAgLTEzNCwxOCArMTMzLDcgQEAgaW5saW5lIFRv
dWNoRXZlbnRDb250ZXh0KiB0b1RvdWNoRXZlbnRDbwogaW5saW5lIGJvb2wgRXZlbnRDb250ZXh0
Ojppc1VucmVhY2hhYmxlTm9kZShFdmVudFRhcmdldCogdGFyZ2V0KQogewogICAgIC8vIEZJWE1F
OiBDaGVja3MgYWxzbyBmb3IgU1ZHIGVsZW1lbnRzLgotICAgIHJldHVybiB0YXJnZXQgJiYgdGFy
Z2V0LT50b05vZGUoKSAmJiAhdGFyZ2V0LT50b05vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgIWlz
UmVhY2hhYmxlKHRhcmdldC0+dG9Ob2RlKCkpOwotfQotCi1pbmxpbmUgYm9vbCBFdmVudENvbnRl
eHQ6OmlzUmVhY2hhYmxlKE5vZGUqIHRhcmdldCkgY29uc3QKLXsKLSAgICBBU1NFUlQodGFyZ2V0
KTsKLSAgICBUcmVlU2NvcGUmIHRhcmdldFNjb3BlID0gdGFyZ2V0LT50cmVlU2NvcGUoKTsKLSAg
ICBmb3IgKFRyZWVTY29wZSogc2NvcGUgPSAmbV9ub2RlLT50cmVlU2NvcGUoKTsgc2NvcGU7IHNj
b3BlID0gc2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKSB7Ci0gICAgICAgIGlmIChzY29wZSA9PSAm
dGFyZ2V0U2NvcGUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiB0YXJnZXQgJiYgdGFyZ2V0LT50b05vZGUoKSAmJiAhdGFyZ2V0
LT50b05vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgIW1fbm9kZS0+aXNVbmNsb3NlZE5vZGUoKnRh
cmdldC0+dG9Ob2RlKCkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGgu
Y3BwCShyZXZpc2lvbiAyMDAzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsOSBAQCBzdGF0aWMgTm9kZSogbm9kZU9ySG9z
dElmUHNldWRvRWxlbWVudChOCiAKIGNsYXNzIFJlbGF0ZWROb2RlUmV0YXJnZXRlciB7CiBwdWJs
aWM6Ci0gICAgUmVsYXRlZE5vZGVSZXRhcmdldGVyKE5vZGUmIHJlbGF0ZWROb2RlLCBUcmVlU2Nv
cGUmIHRhcmdldFRyZWVTY29wZSk7CisgICAgUmVsYXRlZE5vZGVSZXRhcmdldGVyKE5vZGUmIHJl
bGF0ZWROb2RlLCBOb2RlJiB0YXJnZXQpOwogCi0gICAgTm9kZSogY3VycmVudE5vZGUoVHJlZVNj
b3BlJiBjdXJyZW50VHJlZVNjb3BlKTsKKyAgICBOb2RlKiBjdXJyZW50Tm9kZShOb2RlJiBjdXJy
ZW50VHJlZVNjb3BlKTsKICAgICB2b2lkIG1vdmVUb05ld1RyZWVTY29wZShUcmVlU2NvcGUqIHBy
ZXZpb3VzVHJlZVNjb3BlLCBUcmVlU2NvcGUmIG5ld1RyZWVTY29wZSk7CiAKIHByaXZhdGU6CkBA
IC03MSw5ICs3MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0VHJlZVNjb3BlcygpOwog
CiAjaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFRyZWVTY29w
ZSYpIHsgfQorICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShOb2RlJikgeyB9CiAjZWxzZQotICAg
IHZvaWQgY2hlY2tDb25zaXN0ZW5jeShUcmVlU2NvcGUmIGN1cnJlbnRUcmVlU2NvcGUpOworICAg
IHZvaWQgY2hlY2tDb25zaXN0ZW5jeShOb2RlJiBjdXJyZW50VGFyZ2V0KTsKICNlbmRpZgogCiAg
ICAgTm9kZSYgbV9yZWxhdGVkTm9kZTsKQEAgLTg2LDIyICs4NiwxNCBAQCBwcml2YXRlOgogRXZl
bnRQYXRoOjpFdmVudFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKICAg
ICA6IG1fZXZlbnQoZXZlbnQpCiB7Ci0jaWYgRU5BQkxFKFNIQURPV19ET00pIHx8IEVOQUJMRShE
RVRBSUxTX0VMRU1FTlQpCi0gICAgVmVjdG9yPEV2ZW50VGFyZ2V0KiwgMTY+IHRhcmdldFN0YWNr
OwotI2VuZGlmCi0KICAgICBib29sIGlzTW91c2VPckZvY3VzRXZlbnQgPSBldmVudC5pc01vdXNl
RXZlbnQoKSB8fCBldmVudC5pc0ZvY3VzRXZlbnQoKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgIGJvb2wgaXNUb3VjaEV2ZW50ID0gZXZlbnQuaXNUb3VjaEV2ZW50KCk7CiAjZW5kaWYK
LSAgICBFdmVudFRhcmdldCogdGFyZ2V0ID0gbnVsbHB0cjsKLQogICAgIE5vZGUqIG5vZGUgPSBu
b2RlT3JIb3N0SWZQc2V1ZG9FbGVtZW50KCZvcmlnaW5hbFRhcmdldCk7CisgICAgTm9kZSogdGFy
Z2V0ID0gZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUpOwogICAgIHdoaWxl
IChub2RlKSB7Ci0gICAgICAgIGlmICghdGFyZ2V0KQotICAgICAgICAgICAgdGFyZ2V0ID0gZXZl
bnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUpOwotICAgICAgICBDb250YWluZXJO
b2RlKiBwYXJlbnQ7Ci0gICAgICAgIGZvciAoOyBub2RlOyBub2RlID0gcGFyZW50KSB7CisgICAg
ICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgICAgICBFdmVudFRhcmdldCogY3VycmVudFRhcmdl
dCA9IGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKTsKIAogICAgICAgICAg
ICAgaWYgKGlzTW91c2VPckZvY3VzRXZlbnQpCkBAIC0xMTYsOCArMTA4LDcgQEAgRXZlbnRQYXRo
OjpFdmVudFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZQogICAgICAgICAgICAgaWYgKGlzPFNoYWRv
d1Jvb3Q+KCpub2RlKSkKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgcGFy
ZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotCisgICAgICAgICAgICBDb250YWluZXJOb2RlKiBw
YXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgICAgICBpZiAoIXBhcmVudCkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEyNSwzMCArMTE2LDIxIEBAIEV2ZW50UGF0aDo6
RXZlbnRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2UKICAgICAgICAgICAgIGlmIChTaGFkb3dSb290
KiBzaGFkb3dSb290T2ZQYXJlbnQgPSBwYXJlbnQtPnNoYWRvd1Jvb3QoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBhc3NpZ25lZFNsb3QgPSBzaGFkb3dSb290T2ZQYXJlbnQtPmZpbmRB
c3NpZ25lZFNsb3QoKm5vZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIG5vZGUgaXMgYXNz
aWduZWQgdG8gYSBzbG90LiBDb250aW51ZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgYXQgdGhpcyBz
bG90LgotICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGFjay5hcHBlbmQodGFyZ2V0KTsKICAg
ICAgICAgICAgICAgICAgICAgcGFyZW50ID0gYXNzaWduZWRTbG90OwotICAgICAgICAgICAgICAg
ICAgICB0YXJnZXQgPSBhc3NpZ25lZFNsb3Q7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogI2VuZGlmCiAgICAgICAgICAgICBub2RlID0gcGFyZW50OwogICAgICAgICB9CiAKKyAg
ICAgICAgYm9vbCBleGl0aW5nU2hhZG93VHJlZU9mVGFyZ2V0ID0gJnRhcmdldC0+dHJlZVNjb3Bl
KCkgPT0gJm5vZGUtPnRyZWVTY29wZSgpOwogICAgICAgICBTaGFkb3dSb290JiBzaGFkb3dSb290
ID0gZG93bmNhc3Q8U2hhZG93Um9vdD4oKm5vZGUpOwotICAgICAgICAvLyBBdCBhIHNoYWRvdyBy
b290LiBDb250aW51ZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgYXQgdGhlIHNoYWRvdyBob3N0Lgot
I2lmIEVOQUJMRShTSEFET1dfRE9NKSB8fCBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQotICAgICAg
ICBpZiAoIXRhcmdldFN0YWNrLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gTW92ZSB0YXJn
ZXQgYmFjayB0byBhIGRlc2NlbmRhbnQgb2YgdGhlIHNoYWRvdyBob3N0IGlmIHRoZSBldmVudCBk
aWQgbm90IG9yaWdpbmF0ZSBpbiB0aGlzIHNoYWRvdyB0cmVlIG9yIGl0cyBpbm5lciBzaGFkb3cg
dHJlZXMuCi0gICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXRTdGFjay5sYXN0KCk7Ci0gICAgICAg
ICAgICB0YXJnZXRTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICBBU1NFUlQoc2hhZG93
Um9vdC5ob3N0KCktPmNvbnRhaW5zKHRhcmdldC0+dG9Ob2RlKCkpKTsKLSAgICAgICAgfSBlbHNl
Ci0jZW5kaWYKLSAgICAgICAgICAgIHRhcmdldCA9IG51bGxwdHI7Ci0KICAgICAgICAgaWYgKCFz
aG91bGRFdmVudENyb3NzU2hhZG93Qm91bmRhcnkoZXZlbnQsIHNoYWRvd1Jvb3QsIG9yaWdpbmFs
VGFyZ2V0KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbm9kZSA9IHNoYWRvd1Jvb3Qu
aG9zdCgpOworICAgICAgICBpZiAoZXhpdGluZ1NoYWRvd1RyZWVPZlRhcmdldCkKKyAgICAgICAg
ICAgIHRhcmdldCA9IGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKTsKKwog
ICAgIH0KIH0KIApAQCAtMTU4LDcgKzE0MCw3IEBAIHZvaWQgRXZlbnRQYXRoOjpzZXRSZWxhdGVk
VGFyZ2V0KE5vZGUmIG8KICAgICBpZiAoIXJlbGF0ZWROb2RlIHx8IG1fcGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbGF0ZWROb2RlUmV0YXJnZXRlciByZXRhcmdldGVy
KCpyZWxhdGVkTm9kZSwgZG93bmNhc3Q8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0PigqbV9wYXRo
WzBdKS5ub2RlKCktPnRyZWVTY29wZSgpKTsKKyAgICBSZWxhdGVkTm9kZVJldGFyZ2V0ZXIgcmV0
YXJnZXRlcigqcmVsYXRlZE5vZGUsICpkb3duY2FzdDxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+
KCptX3BhdGhbMF0pLm5vZGUoKSk7CiAKICAgICBib29sIG9yaWdpbklzUmVsYXRlZFRhcmdldCA9
ICZvcmlnaW4gPT0gcmVsYXRlZE5vZGU7CiAgICAgYm9vbCByZWxhdGVkVGFyZ2V0U2NvcGVkID0g
bV9ldmVudC5yZWxhdGVkVGFyZ2V0U2NvcGVkKCk7CkBAIC0xNjgsMTEgKzE1MCwxMiBAQCB2b2lk
IEV2ZW50UGF0aDo6c2V0UmVsYXRlZFRhcmdldChOb2RlJiBvCiAgICAgZm9yICh1bnNpZ25lZCBj
b250ZXh0SW5kZXggPSAwOyBjb250ZXh0SW5kZXggPCBvcmlnaW5hbEV2ZW50UGF0aFNpemU7IGNv
bnRleHRJbmRleCsrKSB7CiAgICAgICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxNb3VzZU9y
Rm9jdXNFdmVudENvbnRleHQ+KCptX3BhdGhbY29udGV4dEluZGV4XSk7CiAKLSAgICAgICAgVHJl
ZVNjb3BlJiBjdXJyZW50VHJlZVNjb3BlID0gY29udGV4dC5ub2RlKCktPnRyZWVTY29wZSgpOwor
ICAgICAgICBOb2RlJiBjdXJyZW50VGFyZ2V0ID0gKmNvbnRleHQubm9kZSgpOworICAgICAgICBU
cmVlU2NvcGUmIGN1cnJlbnRUcmVlU2NvcGUgPSBjdXJyZW50VGFyZ2V0LnRyZWVTY29wZSgpOwog
ICAgICAgICBpZiAoVU5MSUtFTFkocHJldmlvdXNUcmVlU2NvcGUgJiYgJmN1cnJlbnRUcmVlU2Nv
cGUgIT0gcHJldmlvdXNUcmVlU2NvcGUpKQogICAgICAgICAgICAgcmV0YXJnZXRlci5tb3ZlVG9O
ZXdUcmVlU2NvcGUocHJldmlvdXNUcmVlU2NvcGUsIGN1cnJlbnRUcmVlU2NvcGUpOwogCi0gICAg
ICAgIE5vZGUqIGN1cnJlbnRSZWxhdGVkTm9kZSA9IHJldGFyZ2V0ZXIuY3VycmVudE5vZGUoY3Vy
cmVudFRyZWVTY29wZSk7CisgICAgICAgIE5vZGUqIGN1cnJlbnRSZWxhdGVkTm9kZSA9IHJldGFy
Z2V0ZXIuY3VycmVudE5vZGUoY3VycmVudFRhcmdldCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShy
ZWxhdGVkVGFyZ2V0U2NvcGVkICYmICFvcmlnaW5Jc1JlbGF0ZWRUYXJnZXQgJiYgY29udGV4dC50
YXJnZXQoKSA9PSBjdXJyZW50UmVsYXRlZE5vZGUpKSB7CiAgICAgICAgICAgICBtX3BhdGguc2hy
aW5rKGNvbnRleHRJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwMCw3ICsxODMsNyBA
QCB2b2lkIEV2ZW50UGF0aDo6cmV0YXJnZXRUb3VjaChUb3VjaEV2ZW50CiAgICAgaWYgKCF0YXJn
ZXROb2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWxhdGVkTm9kZVJldGFyZ2V0ZXIgcmV0
YXJnZXRlcigqdGFyZ2V0Tm9kZSwgbV9wYXRoWzBdLT5ub2RlKCktPnRyZWVTY29wZSgpKTsKKyAg
ICBSZWxhdGVkTm9kZVJldGFyZ2V0ZXIgcmV0YXJnZXRlcigqdGFyZ2V0Tm9kZSwgbV9wYXRoWzBd
LT5ub2RlKCkpOwogICAgIFRyZWVTY29wZSogcHJldmlvdXNUcmVlU2NvcGUgPSBudWxscHRyOwog
ICAgIGZvciAoYXV0byYgY29udGV4dCA6IG1fcGF0aCkgewogICAgICAgICBUcmVlU2NvcGUmIGN1
cnJlbnRUcmVlU2NvcGUgPSBjb250ZXh0LT5ub2RlKCktPnRyZWVTY29wZSgpOwpAQCAtMjQzLDI5
ICsyMjYsNyBAQCBib29sIEV2ZW50UGF0aDo6aGFzRXZlbnRMaXN0ZW5lcnMoY29uc3QgCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi0vLyBodHRwOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRz
L3NwZWMvc2hhZG93LyNkZm4tdW5jbG9zZWQtbm9kZQotc3RhdGljIGJvb2wgaXNVbmNsb3NlZE5v
ZGVPZihjb25zdCBOb2RlJiBhLCBjb25zdCBOb2RlJiBiKQotewotICAgIC8vIFVzZSBWZWN0b3Ig
aW5zdGVhZCBvZiBIYXNoU2V0IHNpbmNlIHdlIGV4cGVjdCB0aGUgbnVtYmVyIG9mIGFuY2VzdG9y
IHRyZWUgc2NvcGVzIHRvIGJlIHNtYWxsLgotICAgIFZlY3RvcjxUcmVlU2NvcGUqLCA4PiB0cmVl
U2NvcGVzT3BlblRvQjsKLQotICAgIGZvciAoYXV0byogc2NvcGUgPSAmYi50cmVlU2NvcGUoKTsg
c2NvcGU7IHNjb3BlID0gc2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKQotICAgICAgICB0cmVlU2Nv
cGVzT3BlblRvQi5hcHBlbmQoc2NvcGUpOwotCi0gICAgZm9yIChhdXRvKiB0cmVlU2NvcGVUaGF0
Q2FuQWNjZXNzQSA9ICZhLnRyZWVTY29wZSgpOyB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzQTsgdHJl
ZVNjb3BlVGhhdENhbkFjY2Vzc0EgPSB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzQS0+cGFyZW50VHJl
ZVNjb3BlKCkpIHsKLSAgICAgICAgZm9yIChhdXRvKiBvcGVuVG9CIDogdHJlZVNjb3Blc09wZW5U
b0IpIHsKLSAgICAgICAgICAgIGlmIChvcGVuVG9CID09IHRyZWVTY29wZVRoYXRDYW5BY2Nlc3NB
KQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8m
IHJvb3QgPSB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzQS0+cm9vdE5vZGUoKTsKLSAgICAgICAgaWYg
KGlzPFNoYWRvd1Jvb3Q+KHJvb3QpICYmIGRvd25jYXN0PFNoYWRvd1Jvb3Q+KHJvb3QpLnR5cGUo
KSAhPSBTaGFkb3dSb290OjpUeXBlOjpPcGVuKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1WZWN0b3I8RXZlbnRUYXJnZXQqPiBFdmVudFBhdGg6
OmNvbXB1dGVQYXRoRGlzY2xvc2VkVG9UYXJnZXQoY29uc3QgRXZlbnRUYXJnZXQmIHRhcmdldCkg
Y29uc3QKK1ZlY3RvcjxFdmVudFRhcmdldCo+IEV2ZW50UGF0aDo6Y29tcHV0ZVBhdGhVbmNsb3Nl
ZFRvVGFyZ2V0KGNvbnN0IEV2ZW50VGFyZ2V0JiB0YXJnZXQpIGNvbnN0CiB7CiAgICAgVmVjdG9y
PEV2ZW50VGFyZ2V0Kj4gcGF0aDsKICAgICBjb25zdCBOb2RlKiB0YXJnZXROb2RlID0gY29uc3Rf
Y2FzdDxFdmVudFRhcmdldCY+KHRhcmdldCkudG9Ob2RlKCk7CkBAIC0yNzQsNyArMjM1LDcgQEAg
VmVjdG9yPEV2ZW50VGFyZ2V0Kj4gRXZlbnRQYXRoOjpjb21wdXRlUAogCiAgICAgZm9yIChhdXRv
JiBjb250ZXh0IDogbV9wYXRoKSB7CiAgICAgICAgIGlmIChOb2RlKiBub2RlSW5QYXRoID0gY29u
dGV4dC0+Y3VycmVudFRhcmdldCgpLT50b05vZGUoKSkgewotICAgICAgICAgICAgaWYgKGlzVW5j
bG9zZWROb2RlT2YoKm5vZGVJblBhdGgsICp0YXJnZXROb2RlKSkKKyAgICAgICAgICAgIGlmICh0
YXJnZXROb2RlLT5pc1VuY2xvc2VkTm9kZSgqbm9kZUluUGF0aCkpCiAgICAgICAgICAgICAgICAg
cGF0aC5hcHBlbmQoY29udGV4dC0+Y3VycmVudFRhcmdldCgpKTsKICAgICAgICAgfQogICAgIH0K
QEAgLTI4MiwxMiArMjQzLDIxIEBAIFZlY3RvcjxFdmVudFRhcmdldCo+IEV2ZW50UGF0aDo6Y29t
cHV0ZVAKICAgICByZXR1cm4gcGF0aDsKIH0KIAotUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpSZWxh
dGVkTm9kZVJldGFyZ2V0ZXIoTm9kZSYgcmVsYXRlZE5vZGUsIFRyZWVTY29wZSYgdGFyZ2V0VHJl
ZVNjb3BlKQorc3RhdGljIE5vZGUqIG1vdmVPdXRPZkFsbFNoYWRvd1Jvb3RzKE5vZGUmIHN0YXJ0
aW5nTm9kZSkKK3sKKyAgICBOb2RlKiBub2RlID0gJnN0YXJ0aW5nTm9kZTsKKyAgICB3aGlsZSAo
bm9kZS0+aXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgbm9kZSA9IGRvd25jYXN0PFNoYWRvd1Jv
b3Q+KG5vZGUtPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmhvc3QoKTsKKyAgICByZXR1cm4gbm9k
ZTsKK30KKworUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpSZWxhdGVkTm9kZVJldGFyZ2V0ZXIoTm9k
ZSYgcmVsYXRlZE5vZGUsIE5vZGUmIHRhcmdldCkKICAgICA6IG1fcmVsYXRlZE5vZGUocmVsYXRl
ZE5vZGUpCiAgICAgLCBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSgmcmVsYXRlZE5vZGUpCiB7Cisg
ICAgYXV0byYgdGFyZ2V0VHJlZVNjb3BlID0gdGFyZ2V0LnRyZWVTY29wZSgpOwogICAgIFRyZWVT
Y29wZSogY3VycmVudFRyZWVTY29wZSA9ICZtX3JlbGF0ZWROb2RlLnRyZWVTY29wZSgpOwotICAg
IGlmIChMSUtFTFkoY3VycmVudFRyZWVTY29wZSA9PSAmdGFyZ2V0VHJlZVNjb3BlKSkKKyAgICBp
ZiAoTElLRUxZKGN1cnJlbnRUcmVlU2NvcGUgPT0gJnRhcmdldFRyZWVTY29wZSAmJiB0YXJnZXQu
aW5Eb2N1bWVudCgpICYmIG1fcmVsYXRlZE5vZGUuaW5Eb2N1bWVudCgpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCZjdXJyZW50VHJlZVNjb3BlLT5kb2N1bWVudFNjb3BlKCkgIT0gJnRh
cmdldFRyZWVTY29wZS5kb2N1bWVudFNjb3BlKCkpIHsKQEAgLTI5NSwxMCArMjY1LDkgQEAgUmVs
YXRlZE5vZGVSZXRhcmdldGVyOjpSZWxhdGVkTm9kZVJldGFyZwogICAgICAgICBtX3JldGFyZ2V0
ZWRSZWxhdGVkTm9kZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYg
KHJlbGF0ZWROb2RlLmluRG9jdW1lbnQoKSAhPSB0YXJnZXRUcmVlU2NvcGUucm9vdE5vZGUoKS5p
bkRvY3VtZW50KCkpIHsKKyAgICBpZiAocmVsYXRlZE5vZGUuaW5Eb2N1bWVudCgpICE9IHRhcmdl
dC5pbkRvY3VtZW50KCkpIHsKICAgICAgICAgbV9oYXNEaWZmZXJlbnRUcmVlUm9vdCA9IHRydWU7
Ci0gICAgICAgIHdoaWxlIChtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZS0+aXNJblNoYWRvd1RyZWUo
KSkKLSAgICAgICAgICAgIG1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlID0gZG93bmNhc3Q8U2hhZG93
Um9vdD4obV9yZXRhcmdldGVkUmVsYXRlZE5vZGUtPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmhv
c3QoKTsKKyAgICAgICAgbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUgPSBtb3ZlT3V0T2ZBbGxTaGFk
b3dSb290cyhyZWxhdGVkTm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMyMCwx
MyArMjg5LDI0IEBAIFJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6UmVsYXRlZE5vZGVSZXRhcmcKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGJvb2wgbG93ZXN0Q29tbW9uQW5jZXN0b3JJ
c0RvY3VtZW50U2NvcGUgPSBpICsgMSA9PSBtX2FuY2VzdG9yVHJlZVNjb3Blcy5zaXplKCk7Cisg
ICAgaWYgKGxvd2VzdENvbW1vbkFuY2VzdG9ySXNEb2N1bWVudFNjb3BlICYmICFyZWxhdGVkTm9k
ZS5pbkRvY3VtZW50KCkgJiYgIXRhcmdldC5pbkRvY3VtZW50KCkpIHsKKyAgICAgICAgTm9kZSYg
dGFyZ2V0QW5jZXN0b3JJbkRvY3VtZW50U2NvcGUgPSBpID8gKmRvd25jYXN0PFNoYWRvd1Jvb3Q+
KG1fYW5jZXN0b3JUcmVlU2NvcGVzW2kgLSAxXS0+cm9vdE5vZGUoKSkuc2hhZG93SG9zdCgpIDog
dGFyZ2V0OworICAgICAgICBOb2RlJiByZWxhdGVkTm9kZUFuY2VzdG9ySW5Eb2N1bWVudFNjb3Bl
ID0gaiA/ICpkb3duY2FzdDxTaGFkb3dSb290Pih0YXJnZXRUcmVlU2NvcGVBbmNlc3RvcnNbaiAt
IDFdLT5yb290Tm9kZSgpKS5zaGFkb3dIb3N0KCkgOiByZWxhdGVkTm9kZTsKKyAgICAgICAgaWYg
KHRhcmdldEFuY2VzdG9ySW5Eb2N1bWVudFNjb3BlLnJvb3ROb2RlKCkgIT0gcmVsYXRlZE5vZGVB
bmNlc3RvckluRG9jdW1lbnRTY29wZS5yb290Tm9kZSgpKSB7CisgICAgICAgICAgICBtX2hhc0Rp
ZmZlcmVudFRyZWVSb290ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fcmV0YXJnZXRlZFJlbGF0ZWRO
b2RlID0gbW92ZU91dE9mQWxsU2hhZG93Um9vdHMocmVsYXRlZE5vZGUpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgbV9sb3dlc3RDb21tb25BbmNlc3Rvcklu
ZGV4ID0gaTsKICAgICBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9IG5vZGVJbkxvd2VzdENvbW1v
bkFuY2VzdG9yKCk7CiB9CiAKLWlubGluZSBOb2RlKiBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OmN1
cnJlbnROb2RlKFRyZWVTY29wZSYgY3VycmVudFRyZWVTY29wZSkKK2lubGluZSBOb2RlKiBSZWxh
dGVkTm9kZVJldGFyZ2V0ZXI6OmN1cnJlbnROb2RlKE5vZGUmIGN1cnJlbnRUYXJnZXQpCiB7Ci0g
ICAgY2hlY2tDb25zaXN0ZW5jeShjdXJyZW50VHJlZVNjb3BlKTsKKyAgICBjaGVja0NvbnNpc3Rl
bmN5KGN1cnJlbnRUYXJnZXQpOwogICAgIHJldHVybiBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZTsK
IH0KIApAQCAtMzgxLDE3ICszNjEsMTkgQEAgdm9pZCBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OmNv
bGxlY3RUcmVlUwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotdm9pZCBSZWxhdGVkTm9kZVJl
dGFyZ2V0ZXI6OmNoZWNrQ29uc2lzdGVuY3koVHJlZVNjb3BlJiBjdXJyZW50VHJlZVNjb3BlKQor
dm9pZCBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OmNoZWNrQ29uc2lzdGVuY3koTm9kZSYgY3VycmVu
dFRhcmdldCkKIHsKLSAgICBmb3IgKGF1dG8qIHJlbGF0ZWROb2RlU2NvcGUgPSAmbV9yZWxhdGVk
Tm9kZS50cmVlU2NvcGUoKTsgcmVsYXRlZE5vZGVTY29wZTsgcmVsYXRlZE5vZGVTY29wZSA9IHJl
bGF0ZWROb2RlU2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKSB7Ci0gICAgICAgIGZvciAoYXV0byog
dGFyZ2V0U2NvcGUgPSAmY3VycmVudFRyZWVTY29wZTsgdGFyZ2V0U2NvcGU7IHRhcmdldFNjb3Bl
ID0gdGFyZ2V0U2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKSB7Ci0gICAgICAgICAgICBpZiAodGFy
Z2V0U2NvcGUgPT0gcmVsYXRlZE5vZGVTY29wZSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCgm
bV9yZXRhcmdldGVkUmVsYXRlZE5vZGUtPnRyZWVTY29wZSgpID09IHJlbGF0ZWROb2RlU2NvcGUp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICBBU1NFUlQoIW1f
cmV0YXJnZXRlZFJlbGF0ZWROb2RlIHx8IGN1cnJlbnRUYXJnZXQuaXNVbmNsb3NlZE5vZGUoKm1f
cmV0YXJnZXRlZFJlbGF0ZWROb2RlKSk7CisKKyAgICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby93
ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyNkZm4tcmV0YXJnZXRpbmctYWxnb3JpdGhtCisgICAg
Tm9kZSYgYmFzZSA9IGN1cnJlbnRUYXJnZXQ7CisgICAgZm9yIChOb2RlKiB0YXJnZXRBbmNlc3Rv
ciA9ICZtX3JlbGF0ZWROb2RlOyB0YXJnZXRBbmNlc3RvcjsgdGFyZ2V0QW5jZXN0b3IgPSB0YXJn
ZXRBbmNlc3Rvci0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CisgICAgICAgIGlmICh0YXJn
ZXRBbmNlc3Rvci0+cm9vdE5vZGUoKS0+Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oJmJhc2Up
KSB7CisgICAgICAgICAgICBBU1NFUlQobV9yZXRhcmdldGVkUmVsYXRlZE5vZGUgPT0gdGFyZ2V0
QW5jZXN0b3IpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIEFT
U0VSVCghbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUpOworICAgIEFTU0VSVCghbV9yZXRhcmdldGVk
UmVsYXRlZE5vZGUgfHwgbV9oYXNEaWZmZXJlbnRUcmVlUm9vdCk7CiB9CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFBhdGguaAkocmV2aXNpb24gMjAwMzU5KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50UGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw5ICs0OCw5IEBAIHB1Ymxp
YzoKIAogICAgIEV2ZW50Q29udGV4dCogbGFzdENvbnRleHRJZkV4aXN0cygpIHsgcmV0dXJuIG1f
cGF0aC5pc0VtcHR5KCkgPyBudWxscHRyIDogbV9wYXRoLmxhc3QoKS5nZXQoKTsgfQogCi0gICAg
VmVjdG9yPEV2ZW50VGFyZ2V0Kj4gY29tcHV0ZVBhdGhEaXNjbG9zZWRUb1RhcmdldChjb25zdCBF
dmVudFRhcmdldCYpIGNvbnN0OworICAgIFZlY3RvcjxFdmVudFRhcmdldCo+IGNvbXB1dGVQYXRo
VW5jbG9zZWRUb1RhcmdldChjb25zdCBFdmVudFRhcmdldCYpIGNvbnN0OwogCi0gICAgc3RhdGlj
IEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcyhOb2RlJiByZWZl
cmVuY2VOb2RlKQorICAgIHN0YXRpYyBOb2RlKiBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRS
dWxlcyhOb2RlJiByZWZlcmVuY2VOb2RlKQogICAgIHsKICAgICAgICAgaWYgKGlzPFBzZXVkb0Vs
ZW1lbnQ+KHJlZmVyZW5jZU5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFBzZXVk
b0VsZW1lbnQ+KHJlZmVyZW5jZU5vZGUpLmhvc3RFbGVtZW50KCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCShyZXZpc2lvbiAyMDAzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNTgsNiArMTA1OCwyOCBAQCBTaGFkb3dSb290KiBOb2RlOjpjb250
YWluaW5nU2hhZG93Um9vdCgpCiAgICAgcmV0dXJuIGlzPFNoYWRvd1Jvb3Q+KHJvb3QpID8gZG93
bmNhc3Q8U2hhZG93Um9vdD4oJnJvb3QpIDogbnVsbHB0cjsKIH0KIAorLy8gaHR0cDovL3czYy5n
aXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZGZuLXVuY2xvc2VkLW5vZGUKK2Jv
b2wgTm9kZTo6aXNVbmNsb3NlZE5vZGUoY29uc3QgTm9kZSYgb3RoZXJOb2RlKSBjb25zdAorewor
ICAgIC8vIFVzZSBWZWN0b3IgaW5zdGVhZCBvZiBIYXNoU2V0IHNpbmNlIHdlIGV4cGVjdCB0aGUg
bnVtYmVyIG9mIGFuY2VzdG9yIHRyZWUgc2NvcGVzIHRvIGJlIHNtYWxsLgorICAgIFZlY3RvcjxU
cmVlU2NvcGUqLCA4PiBhbmNlc3RvclNjb3Blc09mVGhpc05vZGU7CisKKyAgICBmb3IgKGF1dG8q
IHNjb3BlID0gJnRyZWVTY29wZSgpOyBzY29wZTsgc2NvcGUgPSBzY29wZS0+cGFyZW50VHJlZVNj
b3BlKCkpCisgICAgICAgIGFuY2VzdG9yU2NvcGVzT2ZUaGlzTm9kZS5hcHBlbmQoc2NvcGUpOwor
CisgICAgZm9yIChhdXRvKiB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzT3RoZXJOb2RlID0gJm90aGVy
Tm9kZS50cmVlU2NvcGUoKTsgdHJlZVNjb3BlVGhhdENhbkFjY2Vzc090aGVyTm9kZTsgdHJlZVNj
b3BlVGhhdENhbkFjY2Vzc090aGVyTm9kZSA9IHRyZWVTY29wZVRoYXRDYW5BY2Nlc3NPdGhlck5v
ZGUtPnBhcmVudFRyZWVTY29wZSgpKSB7CisgICAgICAgIGZvciAoYXV0byogc2NvcGUgOiBhbmNl
c3RvclNjb3Blc09mVGhpc05vZGUpIHsKKyAgICAgICAgICAgIGlmIChzY29wZSA9PSB0cmVlU2Nv
cGVUaGF0Q2FuQWNjZXNzT3RoZXJOb2RlKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAv
LyB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzT3RoZXJOb2RlIGlzIGEgc2hhZG93LWluY2x1ZGluZyBp
bmNsdXNpdmUgYW5jZXN0b3Igb2YgdGhpcyBub2RlLgorICAgICAgICB9CisgICAgICAgIGF1dG8m
IHJvb3QgPSB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzT3RoZXJOb2RlLT5yb290Tm9kZSgpOworICAg
ICAgICBpZiAoaXM8U2hhZG93Um9vdD4ocm9vdCkgJiYgZG93bmNhc3Q8U2hhZG93Um9vdD4ocm9v
dCkudHlwZSgpICE9IFNoYWRvd1Jvb3Q6OlR5cGU6Ok9wZW4pCisgICAgICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
IEhUTUxTbG90RWxlbWVudCogTm9kZTo6YXNzaWduZWRTbG90KCkgY29uc3QKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAkocmV2aXNpb24gMjAwMzU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjU5LDYgKzI1OSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBOb2RlKiBkZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlKCkgY29uc3Q7CiAgICAgU2hh
ZG93Um9vdCogY29udGFpbmluZ1NoYWRvd1Jvb3QoKSBjb25zdDsKICAgICBTaGFkb3dSb290KiBz
aGFkb3dSb290KCkgY29uc3Q7CisgICAgYm9vbCBpc1VuY2xvc2VkTm9kZShjb25zdCBOb2RlJikg
Y29uc3Q7CiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBIVE1MU2xvdEVsZW1lbnQqIGFz
c2lnbmVkU2xvdCgpIGNvbnN0OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwMzU5KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDUt
MDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgZXZlbnQudGFy
Z2V0IHNob3VsZG4ndCBiZSByZXRhcmdldGVkIGFzIHRoZSBldmVudCBidWJibGVzIGludG8gYSBz
bG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcz
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGVkIHRlc3QgY2FzZXMgdG8gZXhwZWN0IHRoZSB0YXJnZXQgdG8gYmUgbm90IGFkanVzdGVkIHRv
IGEgc2xvdCBlbGVtZW50IHdoZW4gdGhlIGV2ZW50IHBhdGgKKyAgICAgICAgZW50ZXJzIG9uZSBh
cyB0aGlzIGRpZG4ndCBtYXRjaCB0aGUgc3BlYyBvciB0aGUgYmVoYXZpb3Igb2YgR29vZ2xlIENo
cm9tZSBDYW5hcnkuIEJvdGggV2ViS2l0IGFuZAorICAgICAgICBDaHJvbWUgcGFzc2VzIHRoZSB0
ZXN0IHdpdGggdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vZXZlbnQt
aW5zaWRlLXNsb3R0ZWQtbm9kZS5odG1sOgorCiAyMDE2LTA1LTAyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhpbmcgQ1NTU3R5bGVEZWNsYXJhdGlvbiBv
YmplY3Qgd2l0aCBvdXQtb2YtcmFuZ2UgaW5kZXggc2hvdWxkIHJldHVybiB1bmRlZmluZWQKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9ldmVudC1pbnNpZGUtc2xvdHRlZC1ub2Rl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2V2ZW50LWlu
c2lkZS1zbG90dGVkLW5vZGUuaHRtbAkocmV2aXNpb24gMjAwMzU5KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL2V2ZW50LWluc2lkZS1zbG90dGVkLW5vZGUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtODAsOSArODAsOSBAQAogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMobG9n
Lmxlbmd0aCwgNiwgJ0V2ZW50UGF0aCBtdXN0IGNvbnRhaW4gW3RhcmdldCwgdGFyZ2V0IHBhcmVu
dCwgc2xvdCwgc2xvdCBwYXJlbnQsIHNoYWRvdyByb290LCBzaGFkb3cgaG9zdF0nKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1swXSwgW3NoYWRvdy50YXJnZXQsIHNo
YWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzBdIG11c3QgYmUgdGhlIHRhcmdldCcpOwogICAgICAg
ICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzFdLCBbc2hhZG93LnRhcmdldFBhcmVu
dCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMV0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRo
ZSB0YXJnZXQnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1syXSwg
W3NoYWRvdy5zbG90LCBzaGFkb3cuc2xvdF0sICdFdmVudFBhdGhbMl0gbXVzdCBiZSB0aGUgc2xv
dCcpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzNdLCBbc2hhZG93
LnNsb3RQYXJlbnQsIHNoYWRvdy5zbG90XSwgJ0V2ZW50UGF0aFszXSBtdXN0IGJlIHRoZSBwYXJl
bnQgb2YgdGhlIHNsb3QnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxv
Z1s0XSwgW3NoYWRvdy5yb290LCBzaGFkb3cuc2xvdF0sICdFdmVudFBhdGhbNF0gbXVzdCBiZSB0
aGUgc2hhZG93IHJvb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxv
Z1syXSwgW3NoYWRvdy5zbG90LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsyXSBtdXN0IGJl
IHRoZSBzbG90Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbM10s
IFtzaGFkb3cuc2xvdFBhcmVudCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbM10gbXVzdCBi
ZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhsb2dbNF0sIFtzaGFkb3cucm9vdCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhb
NF0gbXVzdCBiZSB0aGUgc2hhZG93IHJvb3QnKTsKICAgICAgICAgICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGxvZ1s1XSwgW3NoYWRvdy5ob3N0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0
aFs1XSBtdXN0IGJlIHRoZSBzaGFkb3cgaG9zdCcpOwogCiAgICAgICAgICAgICB9LCAnRmlyaW5n
IGFuIGV2ZW50IGluc2lkZSBhIGdyYW5kIGNoaWxkIG9mIGEgZGV0YWNoZWQgJyArIG1vZGUgKyAn
IG1vZGUgc2hhZG93IGhvc3QnKTsKQEAgLTEwMSw5ICsxMDEsOSBAQAogICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMobG9nLmxlbmd0aCwgOSwgJ0V2ZW50UGF0aCBtdXN0IGNvbnRhaW4gW3Rh
cmdldCwgdGFyZ2V0IHBhcmVudCwgc2xvdCwgc2xvdCBwYXJlbnQsIHNoYWRvdyByb290LCBzaGFk
b3cgaG9zdCwgYm9keSwgaHRtbCwgZG9jdW1lbnRdJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhsb2dbMF0sIFtzaGFkb3cudGFyZ2V0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2
ZW50UGF0aFswXSBtdXN0IGJlIHRoZSB0YXJnZXQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGxvZ1sxXSwgW3NoYWRvdy50YXJnZXRQYXJlbnQsIHNoYWRvdy50YXJnZXRd
LCAnRXZlbnRQYXRoWzFdIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUgdGFyZ2V0Jyk7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMl0sIFtzaGFkb3cuc2xvdCwgc2hh
ZG93LnNsb3RdLCAnRXZlbnRQYXRoWzJdIG11c3QgYmUgdGhlIHNsb3QnKTsKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1szXSwgW3NoYWRvdy5zbG90UGFyZW50LCBzaGFk
b3cuc2xvdF0sICdFdmVudFBhdGhbM10gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90Jyk7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNF0sIFtzaGFkb3cucm9v
dCwgc2hhZG93LnNsb3RdLCAnRXZlbnRQYXRoWzRdIG11c3QgYmUgdGhlIHNoYWRvdyByb290Jyk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMl0sIFtzaGFkb3cuc2xv
dCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMl0gbXVzdCBiZSB0aGUgc2xvdCcpOworICAg
ICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzNdLCBbc2hhZG93LnNsb3RQYXJl
bnQsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzNdIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0
aGUgc2xvdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzRdLCBb
c2hhZG93LnJvb3QsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzRdIG11c3QgYmUgdGhlIHNo
YWRvdyByb290Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNV0s
IFtzaGFkb3cuaG9zdCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbNV0gbXVzdCBiZSB0aGUg
c2hhZG93IGhvc3QnKTsKICAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s2
XSwgW2RvY3VtZW50LmJvZHksIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzZdIG11c3QgYmUg
dGhlIGJvZHkgZWxlbWVudCcpOwogICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzddLCBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50
UGF0aFs3XSBtdXN0IGJlIHRoZSBodG1sIGVsZW1lbnQnKTsKQEAgLTE3OSwxOSArMTc5LDE5IEBA
CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhsb2cubGVuZ3RoLCAxNSwgJ0V2ZW50UGF0
aCBtdXN0IGNvbnRhaW4gMTUgdGFyZ2V0cycpOwogCiAgICAgICAgICAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhsb2dbMF0sIFtzaGFkb3cudGFyZ2V0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50
UGF0aFswXSBtdXN0IGJlIHRoZSB0YXJnZXQnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGxvZ1sxXSwgW3NoYWRvdy5sb3dlclNsb3QsIHNoYWRvdy5sb3dlclNsb3RdLCAn
RXZlbnRQYXRoWzFdIG11c3QgYmUgdGhlIHNsb3QgaW5zaWRlIHRoZSBsb3dlciBzaGFkb3cgdHJl
ZScpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzJdLCBbc2hhZG93
Lmxvd2VyU2xvdC5wYXJlbnROb2RlLCBzaGFkb3cubG93ZXJTbG90XSwgJ0V2ZW50UGF0aFsyXSBt
dXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QgaW5zaWRlIHRoZSBsb3dlciBzaGFkb3cgdHJl
ZScpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzNdLCBbc2hhZG93
LmlubmVyU2xvdCwgc2hhZG93LmlubmVyU2xvdF0sICdFdmVudFBhdGhbM10gbXVzdCBiZSB0aGUg
c2xvdCBpbnNpZGUgdGhlIHNoYWRvdyB0cmVlIGluc2lkZSB0aGUgbG93ZXIgc2hhZG93IHRyZWUn
KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s0XSwgW3NoYWRvdy5p
bm5lclNsb3QucGFyZW50Tm9kZSwgc2hhZG93LmlubmVyU2xvdF0sICdFdmVudFBhdGhbNF0gbXVz
dCBiZSB0aGUgY2hpbGQgb2YgdGhlIGlubmVyIHNoYWRvdyByb290Jyk7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNV0sIFtzaGFkb3cuaW5uZXJTaGFkb3csIHNoYWRv
dy5pbm5lclNsb3RdLCAnRXZlbnRQYXRoWzVdIG11c3QgYmUgdGhlIGlubmVyIHNoYWRvdyByb290
Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNl0sIFtzaGFkb3cu
aW5uZXJTaGFkb3cuaG9zdCwgc2hhZG93Lmxvd2VyU2xvdF0sICdFdmVudFBhdGhbNl0gbXVzdCBi
ZSB0aGUgaG9zdCBvZiB0aGUgaW5uZXIgc2hhZG93IHRyZWUnKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s3XSwgW3NoYWRvdy5sb3dlclNoYWRvdy5maXJzdENoaWxk
LCBzaGFkb3cubG93ZXJTbG90XSwgJ0V2ZW50UGF0aFs3XSBtdXN0IGJlIHRoZSBwYXJlbnQgb2Yg
dGhlIGlubmVyIHNoYWRvdyBob3N0Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhsb2dbOF0sIFtzaGFkb3cubG93ZXJTaGFkb3csIHNoYWRvdy5sb3dlclNsb3RdLCAnRXZl
bnRQYXRoWzhdIG11c3QgYmUgdGhlIGxvd2VyIHNoYWRvdyByb290Jyk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMV0sIFtzaGFkb3cubG93ZXJTbG90LCBzaGFkb3cu
dGFyZ2V0XSwgJ0V2ZW50UGF0aFsxXSBtdXN0IGJlIHRoZSBzbG90IGluc2lkZSB0aGUgbG93ZXIg
c2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sy
XSwgW3NoYWRvdy5sb3dlclNsb3QucGFyZW50Tm9kZSwgc2hhZG93LnRhcmdldF0sICdFdmVudFBh
dGhbMl0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90IGluc2lkZSB0aGUgbG93ZXIgc2hh
ZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1szXSwg
W3NoYWRvdy5pbm5lclNsb3QsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzNdIG11c3QgYmUg
dGhlIHNsb3QgaW5zaWRlIHRoZSBzaGFkb3cgdHJlZSBpbnNpZGUgdGhlIGxvd2VyIHNoYWRvdyB0
cmVlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNF0sIFtzaGFk
b3cuaW5uZXJTbG90LnBhcmVudE5vZGUsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzRdIG11
c3QgYmUgdGhlIGNoaWxkIG9mIHRoZSBpbm5lciBzaGFkb3cgcm9vdCcpOworICAgICAgICAgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzVdLCBbc2hhZG93LmlubmVyU2hhZG93LCBzaGFk
b3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFs1XSBtdXN0IGJlIHRoZSBpbm5lciBzaGFkb3cgcm9vdCcp
OworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzZdLCBbc2hhZG93Lmlu
bmVyU2hhZG93Lmhvc3QsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzZdIG11c3QgYmUgdGhl
IGhvc3Qgb2YgdGhlIGlubmVyIHNoYWRvdyB0cmVlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhsb2dbN10sIFtzaGFkb3cubG93ZXJTaGFkb3cuZmlyc3RDaGlsZCwgc2hh
ZG93LnRhcmdldF0sICdFdmVudFBhdGhbN10gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBpbm5l
ciBzaGFkb3cgaG9zdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
WzhdLCBbc2hhZG93Lmxvd2VyU2hhZG93LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFs4XSBt
dXN0IGJlIHRoZSBsb3dlciBzaGFkb3cgcm9vdCcpOwogICAgICAgICAgICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMobG9nWzldLCBbc2hhZG93Lmxvd2VyU2hhZG93Lmhvc3QsIHNoYWRvdy50YXJn
ZXRdLCAnRXZlbnRQYXRoWzldIG11c3QgYmUgdGhlIGxvd2VyIHNoYWRvdyBob3N0Jyk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMTBdLCBbc2hhZG93Lmhvc3QuZmly
c3RDaGlsZCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMTBdIG11c3QgYmUgdGhlIHBhcmVu
dCBvZiB0aGUgZ3JhbmQgcGFyZW50IG9mIHRoZSB0YXJnZXQnKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxMV0sIFtzaGFkb3cudXBwZXJTbG90LCBzaGFkb3cudXBw
ZXJTbG90XSwgJ0V2ZW50UGF0aFsxMV0gbXVzdCBiZSB0aGUgc2xvdCBpbnNpZGUgdGhlIHVwcGVy
IHNoYWRvdyB0cmVlJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2db
MTJdLCBbc2hhZG93LnVwcGVyU2xvdC5wYXJlbnROb2RlLCBzaGFkb3cudXBwZXJTbG90XSwgJ0V2
ZW50UGF0aFsxMl0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90IGluc2lkZSB0aGUgdXBw
ZXIgc2hhZG93IHRyZWUnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxv
Z1sxM10sIFtzaGFkb3cudXBwZXJTaGFkb3csIHNoYWRvdy51cHBlclNsb3RdLCAnRXZlbnRQYXRo
WzEzXSBtdXN0IGJlIHRoZSB1cHBlciBzaGFkb3cgcm9vdCcpOworICAgICAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMobG9nWzExXSwgW3NoYWRvdy51cHBlclNsb3QsIHNoYWRvdy50YXJn
ZXRdLCAnRXZlbnRQYXRoWzExXSBtdXN0IGJlIHRoZSBzbG90IGluc2lkZSB0aGUgdXBwZXIgc2hh
ZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxMl0s
IFtzaGFkb3cudXBwZXJTbG90LnBhcmVudE5vZGUsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRo
WzEyXSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QgaW5zaWRlIHRoZSB1cHBlciBzaGFk
b3cgdHJlZScpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzEzXSwg
W3NoYWRvdy51cHBlclNoYWRvdywgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMTNdIG11c3Qg
YmUgdGhlIHVwcGVyIHNoYWRvdyByb290Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhsb2dbMTRdLCBbc2hhZG93Lmhvc3QsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRo
WzE0XSBtdXN0IGJlIHRoZSBob3N0Jyk7CiAKICAgICAgICAgICAgIH0sICdGaXJpbmcgYW4gZXZl
bnQgb24gYSBub2RlIHdpdGggdHdvIGFuY2VzdG9ycyB3aXRoIGEgZGV0YWNoZWQgJyArIG91dGVy
VXBwZXJNb2RlICsgJyBhbmQgJyArIG91dGVyTG93ZXJNb2RlCkBAIC0yMTUsNyArMjE1LDcgQEAK
ICAgICAgICAgICAgICsgYSAgICAgICAgICAgICAgICsgZW0gKDQpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICsgaW5uZXItaG9zdCAoMykgLS0gKGlubmVyU2hhZG93OyAyKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc3BhbiAgICAgICAgICAgICsgaSAoMSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2xvdCAgICAgICAgICAgICsg
c2xvdCAoaW5uZXJTbG90OyAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KyBzbG90ICAgICAgICAgICAgKyBzbG90IChpbm5lclNsb3QsIHRhcmdldDsgMCkKICAgICAgICAg
Ki8KIAogICAgICAgICBmdW5jdGlvbiB0ZXN0RXZlbnRJbnNpZGVOZXN0ZWRTaGFkb3dzVW5kZXJB
bm90aGVyU2hhZG93KG91dGVyVXBwZXJNb2RlLCBvdXRlckxvd2VyTW9kZSwgaW5uZXJNb2RlKSB7
CkBAIC0yMzYsOSArMjM2LDkgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGxvZ1s1XSwgW3NoYWRvdy5sb3dlclNoYWRvdywgc2hhZG93LmlubmVyU2hhZG93Lmhvc3RdLCAn
RXZlbnRQYXRoWzVdIG11c3QgYmUgdGhlIGxvd2VyIChidXQgb3V0ZXIpIHNoYWRvdyByb290Jyk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNl0sIFtzaGFkb3cubG93
ZXJTaGFkb3cuaG9zdCwgc2hhZG93Lmxvd2VyU2hhZG93Lmhvc3RdLCAnRXZlbnRQYXRoWzZdIG11
c3QgYmUgdGhlIGxvd2VyIChidXQgb3V0ZXIpIHNoYWRvdyByb290Jyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbN10sIFtzaGFkb3cuaG9zdC5maXJzdENoaWxkLCBz
aGFkb3cubG93ZXJTaGFkb3cuaG9zdF0sICdFdmVudFBhdGhbN10gbXVzdCBiZSB0aGUgc2xvdCBp
bnNpZGUgdGhlIHVwcGVyIHNoYWRvdyB0cmVlJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhsb2dbOF0sIFtzaGFkb3cudXBwZXJTbG90LCBzaGFkb3cudXBwZXJTbG90XSwg
J0V2ZW50UGF0aFs4XSBtdXN0IGJlIHRoZSBzbG90IGluc2lkZSB0aGUgdXBwZXIgc2hhZG93IHRy
ZWUnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s5XSwgW3NoYWRv
dy51cHBlclNsb3QucGFyZW50Tm9kZSwgc2hhZG93LnVwcGVyU2xvdF0sICdFdmVudFBhdGhbOV0g
bXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90IGluc2lkZSB0aGUgdXBwZXIgc2hhZG93IHRy
ZWUnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxMF0sIFtzaGFk
b3cudXBwZXJTaGFkb3csIHNoYWRvdy51cHBlclNsb3RdLCAnRXZlbnRQYXRoWzEwXSBtdXN0IGJl
IHRoZSB1cHBlciBzaGFkb3cgcm9vdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMobG9nWzhdLCBbc2hhZG93LnVwcGVyU2xvdCwgc2hhZG93Lmxvd2VyU2hhZG93Lmhvc3Rd
LCAnRXZlbnRQYXRoWzhdIG11c3QgYmUgdGhlIHNsb3QgaW5zaWRlIHRoZSB1cHBlciBzaGFkb3cg
dHJlZScpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzldLCBbc2hh
ZG93LnVwcGVyU2xvdC5wYXJlbnROb2RlLCBzaGFkb3cubG93ZXJTaGFkb3cuaG9zdF0sICdFdmVu
dFBhdGhbOV0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90IGluc2lkZSB0aGUgdXBwZXIg
c2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sx
MF0sIFtzaGFkb3cudXBwZXJTaGFkb3csIHNoYWRvdy5sb3dlclNoYWRvdy5ob3N0XSwgJ0V2ZW50
UGF0aFsxMF0gbXVzdCBiZSB0aGUgdXBwZXIgc2hhZG93IHJvb3QnKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxMV0sIFtzaGFkb3cudXBwZXJTaGFkb3cuaG9zdCwg
c2hhZG93Lmxvd2VyU2hhZG93Lmhvc3RdLCAnRXZlbnRQYXRoWzExXSBtdXN0IGJlIHRoZSBob3N0
Jyk7CiAKICAgICAgICAgICAgIH0sICdGaXJpbmcgYW4gZXZlbnQgb24gYSBub2RlIHdpdGggdHdv
IGFuY2VzdG9ycyB3aXRoIGEgZGV0YWNoZWQgJyArIG91dGVyVXBwZXJNb2RlICsgJyBhbmQgJyAr
IG91dGVyTG93ZXJNb2RlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278167</attachid>
            <date>2016-05-05 09:16:18 -0700</date>
            <delta_ts>2016-05-05 09:42:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-157369-20160505091659.patch</filename>
            <type>text/plain</type>
            <size>28652</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDQ0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTA1LTA0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGV2ZW50LnRhcmdldCBzaG91bGRu
J3QgYmUgcmV0YXJnZXRlZCBhcyB0aGUgZXZlbnQgYnViYmxlcyBpbnRvIGEgc2xvdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MzY5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgV2hlbiBhbiBldmVudCBi
dWJibGVzIHVwIGZyb20gYW4gYXNzaWduZWQgbm9kZSB0byBpdHMgYXNzaWduZWQgc2xvdCwgd2Ug
c2hvdWxkbid0IGJlIGFkanVzdGluZworICAgICAgICBldmVudC50YXJnZXQgdG8gcG9pbnQgdG8g
dGhlIHNsb3QuIFNpbmNlIGEgc2hhZG93IHRyZWUgc2hvdWxkIGhhdmUgYWNjZXNzIHRvIG5vZGVz
IG91dHNpZGUKKyAgICAgICAgdGhlIHNoYWRvdyB0cmVlLCBldmVudC50YXJnZXQgaXMgYWNjZXNz
aWJsZSBpbnNpZGUgdGhlIHNoYWRvdyB0cmVlIG9mIHN1Y2ggYSBzbG90LgorCisgICAgICAgIE5l
dyBiZWhhdmlvciBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBHb29nbGUgQ2hyb21lIENhbmFyeSBh
cyB3ZWxsIGFzIHRoZSBzaGFkb3cgRE9NIHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHA6Ly93
M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cvI2Rmbi1yZXRhcmdldGluZy1h
bGdvcml0aG0KKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNs
b3R0ZWQtbm9kZS5odG1sCisKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnQ6OmRlZXBQYXRoKToKKyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudENvbnRleHQ6OmlzVW5yZWFjaGFibGVOb2RlKTogVXNlIE5v
ZGU6OmlzVW5jbG9zZWROb2RlIGluc3RlYWQgb2YgaXNSZWFjaGFibGUuCisgICAgICAgIChXZWJD
b3JlOjpFdmVudENvbnRleHQ6OmlzUmVhY2hhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
RXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKTog
RG9uJ3Qgc2V0IHRoZSB0YXJnZXQgdG8gdGhlIHNsb3Qgd2hlbiBlbnRlcmluZyBhIHNsb3QuIEFs
c28gbW92ZWQKKyAgICAgICAgdGhlIGNvZGUgdG8gYWRqdXN0IHRoZSB0YXJnZXQgYXMgd2UgZXhp
dCBhIHNoYWRvdyB0cmVlIHRvIHRoZSBlbmQgb2YgdGhlIG91dGVyIGxvb3AgZm9yIGNsYXJpdHku
CisgICAgICAgIChXZWJDb3JlOjppc1VuY2xvc2VkTm9kZU9mKTogRGVsZXRlZC4gUmVuYW1lZCB0
byBOb2RlOjppc1VuY2xvc2VkTm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6c2V0
UmVsYXRlZFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmNvbXB1dGVQYXRo
VW5jbG9zZWRUb1RhcmdldCk6IFJlbmFtZWQgZnJvbSBjb21wdXRlUGF0aERpc2Nsb3NlZFRvVGFy
Z2V0LgorICAgICAgICAoV2ViQ29yZTo6bW92ZU91dE9mQWxsU2hhZG93Um9vdHMpOiBFeHRyYWN0
ZWQgZnJvbSBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OlJlbGF0ZWROb2RlUmV0YXJnZXRlci4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6UmVsYXRlZE5vZGVSZXRhcmdl
dGVyKTogRml4ZWQgYSBidWcgdGhhdCB3ZSB3ZXJlIGV4aXRpbmcgZWFybHkKKyAgICAgICAgd2l0
aG91dCBzZXR0aW5nIG1faGFzRGlmZmVyZW50VHJlZVJvb3QgdHJ1ZSB3aGVuIHRhcmdldCBhbmQg
cmVsYXRlZE5vZGUgYXJlIGRpc2Nvbm5lY3RlZCBmcm9tCisgICAgICAgIGEgZG9jdW1lbnQuCisg
ICAgICAgIChXZWJDb3JlOjpSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OmN1cnJlbnROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6Y2hlY2tDb25zaXN0ZW5jeSk6
IFVwZGF0ZWQgdG8gbWF0Y2ggdGhlIHNwZWMgd2l0aCBvbmUgZXhjZXB0aW9uLgorICAgICAgICBX
ZSBkb24ndCB1c2UgbnVsbCBhcyB0aGUgYWRqdXN0ZWQgcmVsYXRlZCB0YXJnZXQgd2hlbiB0aGUg
KG9yaWdpbmFsKSByZWxhdGVkIHRhcmdldCBhbmQgdGhlIHRhcmdldAorICAgICAgICBhcmUgaW4g
dHdvIGRpc3RpbmN0IGRpc2Nvbm5lY3RlZCB0cmVlcyBzaW5jZSBzdWNoIGEgYmVoYXZpb3IgaXMg
bm90IFdlYiBjb21wYXRpYmxlLiBUaGlzIHNwZWMgYnVnIGlzCisgICAgICAgIHRyYWNrZWQgYnkg
aHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJjb21wb25lbnRzL2lzc3Vlcy80OTQKKyAgICAgICAg
KiBkb20vRXZlbnRQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmV2ZW50VGFy
Z2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKTogUmV0dXJucyBOb2RlKiBpbnN0ZWFkIG9mIEV2ZW50
VGFyZ2V0KiBzaW5jZQorICAgICAgICB3ZSBuZWVkIGEgTm9kZSBpbiBSZWxhdGVkTm9kZVJldGFy
Z2V0ZXI6OmNoZWNrQ29uc2lzdGVuY3kuCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6aXNVbmNsb3NlZE5vZGUpOiBNb3ZlZCBmcm9tIFJlbGF0ZWROb2Rl
UmV0YXJnZXRlci5jcHAKKyAgICAgICAgKiBkb20vTm9kZS5oOgorCiAyMDE2LTA1LTAzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdGFydCBvbiBkaWN0aW9uYXJ5
IHN1cHBvcnQgZm9yIElETCwgZ2V0dGluZyBlbm91Z2ggdG8gd29yayBmb3Igb25lIGRpY3Rpb25h
cnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNpb24gMjAwMzU5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSw3IEBAIFZl
Y3RvcjxFdmVudFRhcmdldCo+IEV2ZW50OjpkZWVwUGF0aCgpIGMKIHsKICAgICBpZiAoIW1fZXZl
bnRQYXRoKQogICAgICAgICByZXR1cm4gVmVjdG9yPEV2ZW50VGFyZ2V0Kj4oKTsKLSAgICByZXR1
cm4gbV9ldmVudFBhdGgtPmNvbXB1dGVQYXRoRGlzY2xvc2VkVG9UYXJnZXQoKm1fdGFyZ2V0KTsK
KyAgICByZXR1cm4gbV9ldmVudFBhdGgtPmNvbXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldCgqbV9j
dXJyZW50VGFyZ2V0KTsKIH0KIAogdm9pZCBFdmVudDo6cmVjZWl2ZWRUYXJnZXQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaAkocmV2aXNpb24gMjAwMzU5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw2IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBpc1Vu
cmVhY2hhYmxlTm9kZShFdmVudFRhcmdldCopOwotICAgIGJvb2wgaXNSZWFjaGFibGUoTm9kZSop
IGNvbnN0OwogI2VuZGlmCiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBSZWZQdHI8RXZl
bnRUYXJnZXQ+IG1fY3VycmVudFRhcmdldDsKQEAgLTEzNCwxOCArMTMzLDcgQEAgaW5saW5lIFRv
dWNoRXZlbnRDb250ZXh0KiB0b1RvdWNoRXZlbnRDbwogaW5saW5lIGJvb2wgRXZlbnRDb250ZXh0
Ojppc1VucmVhY2hhYmxlTm9kZShFdmVudFRhcmdldCogdGFyZ2V0KQogewogICAgIC8vIEZJWE1F
OiBDaGVja3MgYWxzbyBmb3IgU1ZHIGVsZW1lbnRzLgotICAgIHJldHVybiB0YXJnZXQgJiYgdGFy
Z2V0LT50b05vZGUoKSAmJiAhdGFyZ2V0LT50b05vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgIWlz
UmVhY2hhYmxlKHRhcmdldC0+dG9Ob2RlKCkpOwotfQotCi1pbmxpbmUgYm9vbCBFdmVudENvbnRl
eHQ6OmlzUmVhY2hhYmxlKE5vZGUqIHRhcmdldCkgY29uc3QKLXsKLSAgICBBU1NFUlQodGFyZ2V0
KTsKLSAgICBUcmVlU2NvcGUmIHRhcmdldFNjb3BlID0gdGFyZ2V0LT50cmVlU2NvcGUoKTsKLSAg
ICBmb3IgKFRyZWVTY29wZSogc2NvcGUgPSAmbV9ub2RlLT50cmVlU2NvcGUoKTsgc2NvcGU7IHNj
b3BlID0gc2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKSB7Ci0gICAgICAgIGlmIChzY29wZSA9PSAm
dGFyZ2V0U2NvcGUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiB0YXJnZXQgJiYgdGFyZ2V0LT50b05vZGUoKSAmJiAhdGFyZ2V0
LT50b05vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgIW1fbm9kZS0+aXNVbmNsb3NlZE5vZGUoKnRh
cmdldC0+dG9Ob2RlKCkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGgu
Y3BwCShyZXZpc2lvbiAyMDAzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsOSBAQCBzdGF0aWMgTm9kZSogbm9kZU9ySG9z
dElmUHNldWRvRWxlbWVudChOCiAKIGNsYXNzIFJlbGF0ZWROb2RlUmV0YXJnZXRlciB7CiBwdWJs
aWM6Ci0gICAgUmVsYXRlZE5vZGVSZXRhcmdldGVyKE5vZGUmIHJlbGF0ZWROb2RlLCBUcmVlU2Nv
cGUmIHRhcmdldFRyZWVTY29wZSk7CisgICAgUmVsYXRlZE5vZGVSZXRhcmdldGVyKE5vZGUmIHJl
bGF0ZWROb2RlLCBOb2RlJiB0YXJnZXQpOwogCi0gICAgTm9kZSogY3VycmVudE5vZGUoVHJlZVNj
b3BlJiBjdXJyZW50VHJlZVNjb3BlKTsKKyAgICBOb2RlKiBjdXJyZW50Tm9kZShOb2RlJiBjdXJy
ZW50VHJlZVNjb3BlKTsKICAgICB2b2lkIG1vdmVUb05ld1RyZWVTY29wZShUcmVlU2NvcGUqIHBy
ZXZpb3VzVHJlZVNjb3BlLCBUcmVlU2NvcGUmIG5ld1RyZWVTY29wZSk7CiAKIHByaXZhdGU6CkBA
IC03MSw5ICs3MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0VHJlZVNjb3BlcygpOwog
CiAjaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFRyZWVTY29w
ZSYpIHsgfQorICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShOb2RlJikgeyB9CiAjZWxzZQotICAg
IHZvaWQgY2hlY2tDb25zaXN0ZW5jeShUcmVlU2NvcGUmIGN1cnJlbnRUcmVlU2NvcGUpOworICAg
IHZvaWQgY2hlY2tDb25zaXN0ZW5jeShOb2RlJiBjdXJyZW50VGFyZ2V0KTsKICNlbmRpZgogCiAg
ICAgTm9kZSYgbV9yZWxhdGVkTm9kZTsKQEAgLTg2LDIyICs4NiwxNCBAQCBwcml2YXRlOgogRXZl
bnRQYXRoOjpFdmVudFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKICAg
ICA6IG1fZXZlbnQoZXZlbnQpCiB7Ci0jaWYgRU5BQkxFKFNIQURPV19ET00pIHx8IEVOQUJMRShE
RVRBSUxTX0VMRU1FTlQpCi0gICAgVmVjdG9yPEV2ZW50VGFyZ2V0KiwgMTY+IHRhcmdldFN0YWNr
OwotI2VuZGlmCi0KICAgICBib29sIGlzTW91c2VPckZvY3VzRXZlbnQgPSBldmVudC5pc01vdXNl
RXZlbnQoKSB8fCBldmVudC5pc0ZvY3VzRXZlbnQoKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgIGJvb2wgaXNUb3VjaEV2ZW50ID0gZXZlbnQuaXNUb3VjaEV2ZW50KCk7CiAjZW5kaWYK
LSAgICBFdmVudFRhcmdldCogdGFyZ2V0ID0gbnVsbHB0cjsKLQogICAgIE5vZGUqIG5vZGUgPSBu
b2RlT3JIb3N0SWZQc2V1ZG9FbGVtZW50KCZvcmlnaW5hbFRhcmdldCk7CisgICAgTm9kZSogdGFy
Z2V0ID0gZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUpOwogICAgIHdoaWxl
IChub2RlKSB7Ci0gICAgICAgIGlmICghdGFyZ2V0KQotICAgICAgICAgICAgdGFyZ2V0ID0gZXZl
bnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUpOwotICAgICAgICBDb250YWluZXJO
b2RlKiBwYXJlbnQ7Ci0gICAgICAgIGZvciAoOyBub2RlOyBub2RlID0gcGFyZW50KSB7CisgICAg
ICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgICAgICBFdmVudFRhcmdldCogY3VycmVudFRhcmdl
dCA9IGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKTsKIAogICAgICAgICAg
ICAgaWYgKGlzTW91c2VPckZvY3VzRXZlbnQpCkBAIC0xMTYsOCArMTA4LDcgQEAgRXZlbnRQYXRo
OjpFdmVudFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZQogICAgICAgICAgICAgaWYgKGlzPFNoYWRv
d1Jvb3Q+KCpub2RlKSkKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgcGFy
ZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotCisgICAgICAgICAgICBDb250YWluZXJOb2RlKiBw
YXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgICAgICBpZiAoIXBhcmVudCkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEyNSwzMCArMTE2LDIxIEBAIEV2ZW50UGF0aDo6
RXZlbnRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2UKICAgICAgICAgICAgIGlmIChTaGFkb3dSb290
KiBzaGFkb3dSb290T2ZQYXJlbnQgPSBwYXJlbnQtPnNoYWRvd1Jvb3QoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBhc3NpZ25lZFNsb3QgPSBzaGFkb3dSb290T2ZQYXJlbnQtPmZpbmRB
c3NpZ25lZFNsb3QoKm5vZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIG5vZGUgaXMgYXNz
aWduZWQgdG8gYSBzbG90LiBDb250aW51ZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgYXQgdGhpcyBz
bG90LgotICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGFjay5hcHBlbmQodGFyZ2V0KTsKICAg
ICAgICAgICAgICAgICAgICAgcGFyZW50ID0gYXNzaWduZWRTbG90OwotICAgICAgICAgICAgICAg
ICAgICB0YXJnZXQgPSBhc3NpZ25lZFNsb3Q7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogI2VuZGlmCiAgICAgICAgICAgICBub2RlID0gcGFyZW50OwogICAgICAgICB9CiAKKyAg
ICAgICAgYm9vbCBleGl0aW5nU2hhZG93VHJlZU9mVGFyZ2V0ID0gJnRhcmdldC0+dHJlZVNjb3Bl
KCkgPT0gJm5vZGUtPnRyZWVTY29wZSgpOwogICAgICAgICBTaGFkb3dSb290JiBzaGFkb3dSb290
ID0gZG93bmNhc3Q8U2hhZG93Um9vdD4oKm5vZGUpOwotICAgICAgICAvLyBBdCBhIHNoYWRvdyBy
b290LiBDb250aW51ZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgYXQgdGhlIHNoYWRvdyBob3N0Lgot
I2lmIEVOQUJMRShTSEFET1dfRE9NKSB8fCBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQotICAgICAg
ICBpZiAoIXRhcmdldFN0YWNrLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gTW92ZSB0YXJn
ZXQgYmFjayB0byBhIGRlc2NlbmRhbnQgb2YgdGhlIHNoYWRvdyBob3N0IGlmIHRoZSBldmVudCBk
aWQgbm90IG9yaWdpbmF0ZSBpbiB0aGlzIHNoYWRvdyB0cmVlIG9yIGl0cyBpbm5lciBzaGFkb3cg
dHJlZXMuCi0gICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXRTdGFjay5sYXN0KCk7Ci0gICAgICAg
ICAgICB0YXJnZXRTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICBBU1NFUlQoc2hhZG93
Um9vdC5ob3N0KCktPmNvbnRhaW5zKHRhcmdldC0+dG9Ob2RlKCkpKTsKLSAgICAgICAgfSBlbHNl
Ci0jZW5kaWYKLSAgICAgICAgICAgIHRhcmdldCA9IG51bGxwdHI7Ci0KICAgICAgICAgaWYgKCFz
aG91bGRFdmVudENyb3NzU2hhZG93Qm91bmRhcnkoZXZlbnQsIHNoYWRvd1Jvb3QsIG9yaWdpbmFs
VGFyZ2V0KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbm9kZSA9IHNoYWRvd1Jvb3Qu
aG9zdCgpOworICAgICAgICBpZiAoZXhpdGluZ1NoYWRvd1RyZWVPZlRhcmdldCkKKyAgICAgICAg
ICAgIHRhcmdldCA9IGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKTsKKwog
ICAgIH0KIH0KIApAQCAtMTU4LDcgKzE0MCw3IEBAIHZvaWQgRXZlbnRQYXRoOjpzZXRSZWxhdGVk
VGFyZ2V0KE5vZGUmIG8KICAgICBpZiAoIXJlbGF0ZWROb2RlIHx8IG1fcGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbGF0ZWROb2RlUmV0YXJnZXRlciByZXRhcmdldGVy
KCpyZWxhdGVkTm9kZSwgZG93bmNhc3Q8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0PigqbV9wYXRo
WzBdKS5ub2RlKCktPnRyZWVTY29wZSgpKTsKKyAgICBSZWxhdGVkTm9kZVJldGFyZ2V0ZXIgcmV0
YXJnZXRlcigqcmVsYXRlZE5vZGUsICptX3BhdGhbMF0tPm5vZGUoKSk7CiAKICAgICBib29sIG9y
aWdpbklzUmVsYXRlZFRhcmdldCA9ICZvcmlnaW4gPT0gcmVsYXRlZE5vZGU7CiAgICAgYm9vbCBy
ZWxhdGVkVGFyZ2V0U2NvcGVkID0gbV9ldmVudC5yZWxhdGVkVGFyZ2V0U2NvcGVkKCk7CkBAIC0x
NjgsMTEgKzE1MCwxMiBAQCB2b2lkIEV2ZW50UGF0aDo6c2V0UmVsYXRlZFRhcmdldChOb2RlJiBv
CiAgICAgZm9yICh1bnNpZ25lZCBjb250ZXh0SW5kZXggPSAwOyBjb250ZXh0SW5kZXggPCBvcmln
aW5hbEV2ZW50UGF0aFNpemU7IGNvbnRleHRJbmRleCsrKSB7CiAgICAgICAgIGF1dG8mIGNvbnRl
eHQgPSBkb3duY2FzdDxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KCptX3BhdGhbY29udGV4dElu
ZGV4XSk7CiAKLSAgICAgICAgVHJlZVNjb3BlJiBjdXJyZW50VHJlZVNjb3BlID0gY29udGV4dC5u
b2RlKCktPnRyZWVTY29wZSgpOworICAgICAgICBOb2RlJiBjdXJyZW50VGFyZ2V0ID0gKmNvbnRl
eHQubm9kZSgpOworICAgICAgICBUcmVlU2NvcGUmIGN1cnJlbnRUcmVlU2NvcGUgPSBjdXJyZW50
VGFyZ2V0LnRyZWVTY29wZSgpOwogICAgICAgICBpZiAoVU5MSUtFTFkocHJldmlvdXNUcmVlU2Nv
cGUgJiYgJmN1cnJlbnRUcmVlU2NvcGUgIT0gcHJldmlvdXNUcmVlU2NvcGUpKQogICAgICAgICAg
ICAgcmV0YXJnZXRlci5tb3ZlVG9OZXdUcmVlU2NvcGUocHJldmlvdXNUcmVlU2NvcGUsIGN1cnJl
bnRUcmVlU2NvcGUpOwogCi0gICAgICAgIE5vZGUqIGN1cnJlbnRSZWxhdGVkTm9kZSA9IHJldGFy
Z2V0ZXIuY3VycmVudE5vZGUoY3VycmVudFRyZWVTY29wZSk7CisgICAgICAgIE5vZGUqIGN1cnJl
bnRSZWxhdGVkTm9kZSA9IHJldGFyZ2V0ZXIuY3VycmVudE5vZGUoY3VycmVudFRhcmdldCk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWShyZWxhdGVkVGFyZ2V0U2NvcGVkICYmICFvcmlnaW5Jc1JlbGF0
ZWRUYXJnZXQgJiYgY29udGV4dC50YXJnZXQoKSA9PSBjdXJyZW50UmVsYXRlZE5vZGUpKSB7CiAg
ICAgICAgICAgICBtX3BhdGguc2hyaW5rKGNvbnRleHRJbmRleCk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTIwMCw3ICsxODMsNyBAQCB2b2lkIEV2ZW50UGF0aDo6cmV0YXJnZXRUb3VjaChUb3Vj
aEV2ZW50CiAgICAgaWYgKCF0YXJnZXROb2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWxh
dGVkTm9kZVJldGFyZ2V0ZXIgcmV0YXJnZXRlcigqdGFyZ2V0Tm9kZSwgbV9wYXRoWzBdLT5ub2Rl
KCktPnRyZWVTY29wZSgpKTsKKyAgICBSZWxhdGVkTm9kZVJldGFyZ2V0ZXIgcmV0YXJnZXRlcigq
dGFyZ2V0Tm9kZSwgKm1fcGF0aFswXS0+bm9kZSgpKTsKICAgICBUcmVlU2NvcGUqIHByZXZpb3Vz
VHJlZVNjb3BlID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8mIGNvbnRleHQgOiBtX3BhdGgpIHsK
ICAgICAgICAgVHJlZVNjb3BlJiBjdXJyZW50VHJlZVNjb3BlID0gY29udGV4dC0+bm9kZSgpLT50
cmVlU2NvcGUoKTsKQEAgLTI0MywyOSArMjI2LDcgQEAgYm9vbCBFdmVudFBhdGg6Omhhc0V2ZW50
TGlzdGVuZXJzKGNvbnN0IAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotLy8gaHR0cDovL3czYy5n
aXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZGZuLXVuY2xvc2VkLW5vZGUKLXN0
YXRpYyBib29sIGlzVW5jbG9zZWROb2RlT2YoY29uc3QgTm9kZSYgYSwgY29uc3QgTm9kZSYgYikK
LXsKLSAgICAvLyBVc2UgVmVjdG9yIGluc3RlYWQgb2YgSGFzaFNldCBzaW5jZSB3ZSBleHBlY3Qg
dGhlIG51bWJlciBvZiBhbmNlc3RvciB0cmVlIHNjb3BlcyB0byBiZSBzbWFsbC4KLSAgICBWZWN0
b3I8VHJlZVNjb3BlKiwgOD4gdHJlZVNjb3Blc09wZW5Ub0I7Ci0KLSAgICBmb3IgKGF1dG8qIHNj
b3BlID0gJmIudHJlZVNjb3BlKCk7IHNjb3BlOyBzY29wZSA9IHNjb3BlLT5wYXJlbnRUcmVlU2Nv
cGUoKSkKLSAgICAgICAgdHJlZVNjb3Blc09wZW5Ub0IuYXBwZW5kKHNjb3BlKTsKLQotICAgIGZv
ciAoYXV0byogdHJlZVNjb3BlVGhhdENhbkFjY2Vzc0EgPSAmYS50cmVlU2NvcGUoKTsgdHJlZVNj
b3BlVGhhdENhbkFjY2Vzc0E7IHRyZWVTY29wZVRoYXRDYW5BY2Nlc3NBID0gdHJlZVNjb3BlVGhh
dENhbkFjY2Vzc0EtPnBhcmVudFRyZWVTY29wZSgpKSB7Ci0gICAgICAgIGZvciAoYXV0byogb3Bl
blRvQiA6IHRyZWVTY29wZXNPcGVuVG9CKSB7Ci0gICAgICAgICAgICBpZiAob3BlblRvQiA9PSB0
cmVlU2NvcGVUaGF0Q2FuQWNjZXNzQSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgICAgICBhdXRvJiByb290ID0gdHJlZVNjb3BlVGhhdENhbkFjY2Vzc0EtPnJv
b3ROb2RlKCk7Ci0gICAgICAgIGlmIChpczxTaGFkb3dSb290Pihyb290KSAmJiBkb3duY2FzdDxT
aGFkb3dSb290Pihyb290KS50eXBlKCkgIT0gU2hhZG93Um9vdDo6VHlwZTo6T3BlbikKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotVmVjdG9yPEV2
ZW50VGFyZ2V0Kj4gRXZlbnRQYXRoOjpjb21wdXRlUGF0aERpc2Nsb3NlZFRvVGFyZ2V0KGNvbnN0
IEV2ZW50VGFyZ2V0JiB0YXJnZXQpIGNvbnN0CitWZWN0b3I8RXZlbnRUYXJnZXQqPiBFdmVudFBh
dGg6OmNvbXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldChjb25zdCBFdmVudFRhcmdldCYgdGFyZ2V0
KSBjb25zdAogewogICAgIFZlY3RvcjxFdmVudFRhcmdldCo+IHBhdGg7CiAgICAgY29uc3QgTm9k
ZSogdGFyZ2V0Tm9kZSA9IGNvbnN0X2Nhc3Q8RXZlbnRUYXJnZXQmPih0YXJnZXQpLnRvTm9kZSgp
OwpAQCAtMjc0LDcgKzIzNSw3IEBAIFZlY3RvcjxFdmVudFRhcmdldCo+IEV2ZW50UGF0aDo6Y29t
cHV0ZVAKIAogICAgIGZvciAoYXV0byYgY29udGV4dCA6IG1fcGF0aCkgewogICAgICAgICBpZiAo
Tm9kZSogbm9kZUluUGF0aCA9IGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKS0+dG9Ob2RlKCkpIHsK
LSAgICAgICAgICAgIGlmIChpc1VuY2xvc2VkTm9kZU9mKCpub2RlSW5QYXRoLCAqdGFyZ2V0Tm9k
ZSkpCisgICAgICAgICAgICBpZiAodGFyZ2V0Tm9kZS0+aXNVbmNsb3NlZE5vZGUoKm5vZGVJblBh
dGgpKQogICAgICAgICAgICAgICAgIHBhdGguYXBwZW5kKGNvbnRleHQtPmN1cnJlbnRUYXJnZXQo
KSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yODIsMTIgKzI0MywyMSBAQCBWZWN0b3I8RXZlbnRU
YXJnZXQqPiBFdmVudFBhdGg6OmNvbXB1dGVQCiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKLVJlbGF0
ZWROb2RlUmV0YXJnZXRlcjo6UmVsYXRlZE5vZGVSZXRhcmdldGVyKE5vZGUmIHJlbGF0ZWROb2Rl
LCBUcmVlU2NvcGUmIHRhcmdldFRyZWVTY29wZSkKK3N0YXRpYyBOb2RlKiBtb3ZlT3V0T2ZBbGxT
aGFkb3dSb290cyhOb2RlJiBzdGFydGluZ05vZGUpCit7CisgICAgTm9kZSogbm9kZSA9ICZzdGFy
dGluZ05vZGU7CisgICAgd2hpbGUgKG5vZGUtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIG5v
ZGUgPSBkb3duY2FzdDxTaGFkb3dSb290Pihub2RlLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpKS5o
b3N0KCk7CisgICAgcmV0dXJuIG5vZGU7Cit9CisKK1JlbGF0ZWROb2RlUmV0YXJnZXRlcjo6UmVs
YXRlZE5vZGVSZXRhcmdldGVyKE5vZGUmIHJlbGF0ZWROb2RlLCBOb2RlJiB0YXJnZXQpCiAgICAg
OiBtX3JlbGF0ZWROb2RlKHJlbGF0ZWROb2RlKQogICAgICwgbV9yZXRhcmdldGVkUmVsYXRlZE5v
ZGUoJnJlbGF0ZWROb2RlKQogeworICAgIGF1dG8mIHRhcmdldFRyZWVTY29wZSA9IHRhcmdldC50
cmVlU2NvcGUoKTsKICAgICBUcmVlU2NvcGUqIGN1cnJlbnRUcmVlU2NvcGUgPSAmbV9yZWxhdGVk
Tm9kZS50cmVlU2NvcGUoKTsKLSAgICBpZiAoTElLRUxZKGN1cnJlbnRUcmVlU2NvcGUgPT0gJnRh
cmdldFRyZWVTY29wZSkpCisgICAgaWYgKExJS0VMWShjdXJyZW50VHJlZVNjb3BlID09ICZ0YXJn
ZXRUcmVlU2NvcGUgJiYgdGFyZ2V0LmluRG9jdW1lbnQoKSAmJiBtX3JlbGF0ZWROb2RlLmluRG9j
dW1lbnQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgmY3VycmVudFRyZWVTY29wZS0+
ZG9jdW1lbnRTY29wZSgpICE9ICZ0YXJnZXRUcmVlU2NvcGUuZG9jdW1lbnRTY29wZSgpKSB7CkBA
IC0yOTUsMTAgKzI2NSw5IEBAIFJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6UmVsYXRlZE5vZGVSZXRh
cmcKICAgICAgICAgbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUgPSBudWxscHRyOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGlmIChyZWxhdGVkTm9kZS5pbkRvY3VtZW50KCkgIT0gdGFyZ2V0
VHJlZVNjb3BlLnJvb3ROb2RlKCkuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKHJlbGF0ZWROb2Rl
LmluRG9jdW1lbnQoKSAhPSB0YXJnZXQuaW5Eb2N1bWVudCgpKSB7CiAgICAgICAgIG1faGFzRGlm
ZmVyZW50VHJlZVJvb3QgPSB0cnVlOwotICAgICAgICB3aGlsZSAobV9yZXRhcmdldGVkUmVsYXRl
ZE5vZGUtPmlzSW5TaGFkb3dUcmVlKCkpCi0gICAgICAgICAgICBtX3JldGFyZ2V0ZWRSZWxhdGVk
Tm9kZSA9IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KG1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlLT50cmVl
U2NvcGUoKS5yb290Tm9kZSgpKS5ob3N0KCk7CisgICAgICAgIG1fcmV0YXJnZXRlZFJlbGF0ZWRO
b2RlID0gbW92ZU91dE9mQWxsU2hhZG93Um9vdHMocmVsYXRlZE5vZGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0zMjAsMTMgKzI4OSwyNCBAQCBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6
OlJlbGF0ZWROb2RlUmV0YXJnCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBib29s
IGxvd2VzdENvbW1vbkFuY2VzdG9ySXNEb2N1bWVudFNjb3BlID0gaSArIDEgPT0gbV9hbmNlc3Rv
clRyZWVTY29wZXMuc2l6ZSgpOworICAgIGlmIChsb3dlc3RDb21tb25BbmNlc3RvcklzRG9jdW1l
bnRTY29wZSAmJiAhcmVsYXRlZE5vZGUuaW5Eb2N1bWVudCgpICYmICF0YXJnZXQuaW5Eb2N1bWVu
dCgpKSB7CisgICAgICAgIE5vZGUmIHRhcmdldEFuY2VzdG9ySW5Eb2N1bWVudFNjb3BlID0gaSA/
ICpkb3duY2FzdDxTaGFkb3dSb290PihtX2FuY2VzdG9yVHJlZVNjb3Blc1tpIC0gMV0tPnJvb3RO
b2RlKCkpLnNoYWRvd0hvc3QoKSA6IHRhcmdldDsKKyAgICAgICAgTm9kZSYgcmVsYXRlZE5vZGVB
bmNlc3RvckluRG9jdW1lbnRTY29wZSA9IGogPyAqZG93bmNhc3Q8U2hhZG93Um9vdD4odGFyZ2V0
VHJlZVNjb3BlQW5jZXN0b3JzW2ogLSAxXS0+cm9vdE5vZGUoKSkuc2hhZG93SG9zdCgpIDogcmVs
YXRlZE5vZGU7CisgICAgICAgIGlmICh0YXJnZXRBbmNlc3RvckluRG9jdW1lbnRTY29wZS5yb290
Tm9kZSgpICE9IHJlbGF0ZWROb2RlQW5jZXN0b3JJbkRvY3VtZW50U2NvcGUucm9vdE5vZGUoKSkg
eworICAgICAgICAgICAgbV9oYXNEaWZmZXJlbnRUcmVlUm9vdCA9IHRydWU7CisgICAgICAgICAg
ICBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9IG1vdmVPdXRPZkFsbFNoYWRvd1Jvb3RzKHJlbGF0
ZWROb2RlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIG1f
bG93ZXN0Q29tbW9uQW5jZXN0b3JJbmRleCA9IGk7CiAgICAgbV9yZXRhcmdldGVkUmVsYXRlZE5v
ZGUgPSBub2RlSW5Mb3dlc3RDb21tb25BbmNlc3RvcigpOwogfQogCi1pbmxpbmUgTm9kZSogUmVs
YXRlZE5vZGVSZXRhcmdldGVyOjpjdXJyZW50Tm9kZShUcmVlU2NvcGUmIGN1cnJlbnRUcmVlU2Nv
cGUpCitpbmxpbmUgTm9kZSogUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpjdXJyZW50Tm9kZShOb2Rl
JiBjdXJyZW50VGFyZ2V0KQogewotICAgIGNoZWNrQ29uc2lzdGVuY3koY3VycmVudFRyZWVTY29w
ZSk7CisgICAgY2hlY2tDb25zaXN0ZW5jeShjdXJyZW50VGFyZ2V0KTsKICAgICByZXR1cm4gbV9y
ZXRhcmdldGVkUmVsYXRlZE5vZGU7CiB9CiAKQEAgLTM4MSwxNyArMzYxLDE5IEBAIHZvaWQgUmVs
YXRlZE5vZGVSZXRhcmdldGVyOjpjb2xsZWN0VHJlZVMKIH0KIAogI2lmICFBU1NFUlRfRElTQUJM
RUQKLXZvaWQgUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpjaGVja0NvbnNpc3RlbmN5KFRyZWVTY29w
ZSYgY3VycmVudFRyZWVTY29wZSkKK3ZvaWQgUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpjaGVja0Nv
bnNpc3RlbmN5KE5vZGUmIGN1cnJlbnRUYXJnZXQpCiB7Ci0gICAgZm9yIChhdXRvKiByZWxhdGVk
Tm9kZVNjb3BlID0gJm1fcmVsYXRlZE5vZGUudHJlZVNjb3BlKCk7IHJlbGF0ZWROb2RlU2NvcGU7
IHJlbGF0ZWROb2RlU2NvcGUgPSByZWxhdGVkTm9kZVNjb3BlLT5wYXJlbnRUcmVlU2NvcGUoKSkg
ewotICAgICAgICBmb3IgKGF1dG8qIHRhcmdldFNjb3BlID0gJmN1cnJlbnRUcmVlU2NvcGU7IHRh
cmdldFNjb3BlOyB0YXJnZXRTY29wZSA9IHRhcmdldFNjb3BlLT5wYXJlbnRUcmVlU2NvcGUoKSkg
ewotICAgICAgICAgICAgaWYgKHRhcmdldFNjb3BlID09IHJlbGF0ZWROb2RlU2NvcGUpIHsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQoJm1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlLT50cmVlU2NvcGUo
KSA9PSByZWxhdGVkTm9kZVNjb3BlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9CisgICAgQVNTRVJUKCFtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSB8fCBjdXJyZW50VGFy
Z2V0LmlzVW5jbG9zZWROb2RlKCptX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSkpOworCisgICAgLy8g
aHR0cDovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZGZuLXJldGFy
Z2V0aW5nLWFsZ29yaXRobQorICAgIE5vZGUmIGJhc2UgPSBjdXJyZW50VGFyZ2V0OworICAgIGZv
ciAoTm9kZSogdGFyZ2V0QW5jZXN0b3IgPSAmbV9yZWxhdGVkTm9kZTsgdGFyZ2V0QW5jZXN0b3I7
IHRhcmdldEFuY2VzdG9yID0gdGFyZ2V0QW5jZXN0b3ItPnBhcmVudE9yU2hhZG93SG9zdE5vZGUo
KSkgeworICAgICAgICBpZiAodGFyZ2V0QW5jZXN0b3ItPnJvb3ROb2RlKCktPmNvbnRhaW5zSW5j
bHVkaW5nU2hhZG93RE9NKCZiYXNlKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fcmV0YXJnZXRl
ZFJlbGF0ZWROb2RlID09IHRhcmdldEFuY2VzdG9yKTsKKyAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KLSAgICBBU1NFUlQoIW1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlKTsKKyAg
ICBBU1NFUlQoIW1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlIHx8IG1faGFzRGlmZmVyZW50VHJlZVJv
b3QpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmgJKHJldmlzaW9uIDIw
MDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguaAkod29ya2luZyBjb3B5KQpA
QCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAKICAgICBFdmVudENvbnRleHQqIGxhc3RDb250ZXh0
SWZFeGlzdHMoKSB7IHJldHVybiBtX3BhdGguaXNFbXB0eSgpID8gbnVsbHB0ciA6IG1fcGF0aC5s
YXN0KCkuZ2V0KCk7IH0KIAotICAgIFZlY3RvcjxFdmVudFRhcmdldCo+IGNvbXB1dGVQYXRoRGlz
Y2xvc2VkVG9UYXJnZXQoY29uc3QgRXZlbnRUYXJnZXQmKSBjb25zdDsKKyAgICBWZWN0b3I8RXZl
bnRUYXJnZXQqPiBjb21wdXRlUGF0aFVuY2xvc2VkVG9UYXJnZXQoY29uc3QgRXZlbnRUYXJnZXQm
KSBjb25zdDsKIAotICAgIHN0YXRpYyBFdmVudFRhcmdldCogZXZlbnRUYXJnZXRSZXNwZWN0aW5n
VGFyZ2V0UnVsZXMoTm9kZSYgcmVmZXJlbmNlTm9kZSkKKyAgICBzdGF0aWMgTm9kZSogZXZlbnRU
YXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoTm9kZSYgcmVmZXJlbmNlTm9kZSkKICAgICB7CiAg
ICAgICAgIGlmIChpczxQc2V1ZG9FbGVtZW50PihyZWZlcmVuY2VOb2RlKSkKICAgICAgICAgICAg
IHJldHVybiBkb3duY2FzdDxQc2V1ZG9FbGVtZW50PihyZWZlcmVuY2VOb2RlKS5ob3N0RWxlbWVu
dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjAwMzU5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU4LDYgKzEwNTgsMjggQEAg
U2hhZG93Um9vdCogTm9kZTo6Y29udGFpbmluZ1NoYWRvd1Jvb3QoKQogICAgIHJldHVybiBpczxT
aGFkb3dSb290Pihyb290KSA/IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KCZyb290KSA6IG51bGxwdHI7
CiB9CiAKKy8vIGh0dHA6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cv
I2Rmbi11bmNsb3NlZC1ub2RlCitib29sIE5vZGU6OmlzVW5jbG9zZWROb2RlKGNvbnN0IE5vZGUm
IG90aGVyTm9kZSkgY29uc3QKK3sKKyAgICAvLyBVc2UgVmVjdG9yIGluc3RlYWQgb2YgSGFzaFNl
dCBzaW5jZSB3ZSBleHBlY3QgdGhlIG51bWJlciBvZiBhbmNlc3RvciB0cmVlIHNjb3BlcyB0byBi
ZSBzbWFsbC4KKyAgICBWZWN0b3I8VHJlZVNjb3BlKiwgOD4gYW5jZXN0b3JTY29wZXNPZlRoaXNO
b2RlOworCisgICAgZm9yIChhdXRvKiBzY29wZSA9ICZ0cmVlU2NvcGUoKTsgc2NvcGU7IHNjb3Bl
ID0gc2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKQorICAgICAgICBhbmNlc3RvclNjb3Blc09mVGhp
c05vZGUuYXBwZW5kKHNjb3BlKTsKKworICAgIGZvciAoYXV0byogdHJlZVNjb3BlVGhhdENhbkFj
Y2Vzc090aGVyTm9kZSA9ICZvdGhlck5vZGUudHJlZVNjb3BlKCk7IHRyZWVTY29wZVRoYXRDYW5B
Y2Nlc3NPdGhlck5vZGU7IHRyZWVTY29wZVRoYXRDYW5BY2Nlc3NPdGhlck5vZGUgPSB0cmVlU2Nv
cGVUaGF0Q2FuQWNjZXNzT3RoZXJOb2RlLT5wYXJlbnRUcmVlU2NvcGUoKSkgeworICAgICAgICBm
b3IgKGF1dG8qIHNjb3BlIDogYW5jZXN0b3JTY29wZXNPZlRoaXNOb2RlKSB7CisgICAgICAgICAg
ICBpZiAoc2NvcGUgPT0gdHJlZVNjb3BlVGhhdENhbkFjY2Vzc090aGVyTm9kZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gdHJlZVNjb3BlVGhhdENhbkFjY2Vzc090aGVyTm9kZSBp
cyBhIHNoYWRvdy1pbmNsdWRpbmcgaW5jbHVzaXZlIGFuY2VzdG9yIG9mIHRoaXMgbm9kZS4KKyAg
ICAgICAgfQorICAgICAgICBhdXRvJiByb290ID0gdHJlZVNjb3BlVGhhdENhbkFjY2Vzc090aGVy
Tm9kZS0+cm9vdE5vZGUoKTsKKyAgICAgICAgaWYgKGlzPFNoYWRvd1Jvb3Q+KHJvb3QpICYmIGRv
d25jYXN0PFNoYWRvd1Jvb3Q+KHJvb3QpLnR5cGUoKSAhPSBTaGFkb3dSb290OjpUeXBlOjpPcGVu
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiAj
aWYgRU5BQkxFKFNIQURPV19ET00pCiBIVE1MU2xvdEVsZW1lbnQqIE5vZGU6OmFzc2lnbmVkU2xv
dCgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDIwMDM1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw2ICsyNTksNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTm9kZSogZGVwcmVjYXRlZFNoYWRvd0FuY2VzdG9y
Tm9kZSgpIGNvbnN0OwogICAgIFNoYWRvd1Jvb3QqIGNvbnRhaW5pbmdTaGFkb3dSb290KCkgY29u
c3Q7CiAgICAgU2hhZG93Um9vdCogc2hhZG93Um9vdCgpIGNvbnN0OworICAgIGJvb2wgaXNVbmNs
b3NlZE5vZGUoY29uc3QgTm9kZSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFNIQURPV19ET00pCiAg
ICAgSFRNTFNsb3RFbGVtZW50KiBhc3NpZ25lZFNsb3QoKSBjb25zdDsKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIwMDM1OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDE2LTA1LTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgorCisgICAgICAgIGV2ZW50LnRhcmdldCBzaG91bGRuJ3QgYmUgcmV0YXJnZXRlZCBhcyB0aGUg
ZXZlbnQgYnViYmxlcyBpbnRvIGEgc2xvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0IGNhc2VzIHRvIGV4cGVjdCB0aGUgdGFyZ2V0
IHRvIGJlIG5vdCBhZGp1c3RlZCB0byBhIHNsb3QgZWxlbWVudCB3aGVuIHRoZSBldmVudCBwYXRo
CisgICAgICAgIGVudGVycyBvbmUgYXMgdGhpcyBkaWRuJ3QgbWF0Y2ggdGhlIHNwZWMgb3IgdGhl
IGJlaGF2aW9yIG9mIEdvb2dsZSBDaHJvbWUgQ2FuYXJ5LiBCb3RoIFdlYktpdCBhbmQKKyAgICAg
ICAgQ2hyb21lIHBhc3NlcyB0aGUgdGVzdCB3aXRoIHRoaXMgY2hhbmdlLgorCisgICAgICAgICog
ZmFzdC9zaGFkb3ctZG9tL2V2ZW50LWluc2lkZS1zbG90dGVkLW5vZGUuaHRtbDoKKwogMjAxNi0w
NS0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEluZGV4aW5n
IENTU1N0eWxlRGVjbGFyYXRpb24gb2JqZWN0IHdpdGggb3V0LW9mLXJhbmdlIGluZGV4IHNob3Vs
ZCByZXR1cm4gdW5kZWZpbmVkCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZXZl
bnQtaW5zaWRlLXNsb3R0ZWQtbm9kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3Qvc2hhZG93LWRvbS9ldmVudC1pbnNpZGUtc2xvdHRlZC1ub2RlLmh0bWwJKHJldmlzaW9uIDIw
MDM1OSkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9ldmVudC1pbnNpZGUtc2xvdHRl
ZC1ub2RlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgwLDkgKzgwLDkgQEAKICAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGxvZy5sZW5ndGgsIDYsICdFdmVudFBhdGggbXVzdCBjb250YWlu
IFt0YXJnZXQsIHRhcmdldCBwYXJlbnQsIHNsb3QsIHNsb3QgcGFyZW50LCBzaGFkb3cgcm9vdCwg
c2hhZG93IGhvc3RdJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2db
MF0sIFtzaGFkb3cudGFyZ2V0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFswXSBtdXN0IGJl
IHRoZSB0YXJnZXQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sx
XSwgW3NoYWRvdy50YXJnZXRQYXJlbnQsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzFdIG11
c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUgdGFyZ2V0Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhsb2dbMl0sIFtzaGFkb3cuc2xvdCwgc2hhZG93LnNsb3RdLCAnRXZlbnRQ
YXRoWzJdIG11c3QgYmUgdGhlIHNsb3QnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1szXSwgW3NoYWRvdy5zbG90UGFyZW50LCBzaGFkb3cuc2xvdF0sICdFdmVudFBh
dGhbM10gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90Jyk7Ci0gICAgICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNF0sIFtzaGFkb3cucm9vdCwgc2hhZG93LnNsb3RdLCAn
RXZlbnRQYXRoWzRdIG11c3QgYmUgdGhlIHNoYWRvdyByb290Jyk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMl0sIFtzaGFkb3cuc2xvdCwgc2hhZG93LnRhcmdldF0s
ICdFdmVudFBhdGhbMl0gbXVzdCBiZSB0aGUgc2xvdCcpOworICAgICAgICAgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMobG9nWzNdLCBbc2hhZG93LnNsb3RQYXJlbnQsIHNoYWRvdy50YXJnZXRd
LCAnRXZlbnRQYXRoWzNdIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUgc2xvdCcpOworICAgICAg
ICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzRdLCBbc2hhZG93LnJvb3QsIHNoYWRv
dy50YXJnZXRdLCAnRXZlbnRQYXRoWzRdIG11c3QgYmUgdGhlIHNoYWRvdyByb290Jyk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNV0sIFtzaGFkb3cuaG9zdCwgc2hh
ZG93LnRhcmdldF0sICdFdmVudFBhdGhbNV0gbXVzdCBiZSB0aGUgc2hhZG93IGhvc3QnKTsKIAog
ICAgICAgICAgICAgfSwgJ0ZpcmluZyBhbiBldmVudCBpbnNpZGUgYSBncmFuZCBjaGlsZCBvZiBh
IGRldGFjaGVkICcgKyBtb2RlICsgJyBtb2RlIHNoYWRvdyBob3N0Jyk7CkBAIC0xMDEsOSArMTAx
LDkgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGxvZy5sZW5ndGgsIDksICdFdmVu
dFBhdGggbXVzdCBjb250YWluIFt0YXJnZXQsIHRhcmdldCBwYXJlbnQsIHNsb3QsIHNsb3QgcGFy
ZW50LCBzaGFkb3cgcm9vdCwgc2hhZG93IGhvc3QsIGJvZHksIGh0bWwsIGRvY3VtZW50XScpOwog
ICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzBdLCBbc2hhZG93LnRhcmdl
dCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMF0gbXVzdCBiZSB0aGUgdGFyZ2V0Jyk7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMV0sIFtzaGFkb3cudGFyZ2V0
UGFyZW50LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsxXSBtdXN0IGJlIHRoZSBwYXJlbnQg
b2YgdGhlIHRhcmdldCcpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
WzJdLCBbc2hhZG93LnNsb3QsIHNoYWRvdy5zbG90XSwgJ0V2ZW50UGF0aFsyXSBtdXN0IGJlIHRo
ZSBzbG90Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbM10sIFtz
aGFkb3cuc2xvdFBhcmVudCwgc2hhZG93LnNsb3RdLCAnRXZlbnRQYXRoWzNdIG11c3QgYmUgdGhl
IHBhcmVudCBvZiB0aGUgc2xvdCcpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMobG9nWzRdLCBbc2hhZG93LnJvb3QsIHNoYWRvdy5zbG90XSwgJ0V2ZW50UGF0aFs0XSBtdXN0
IGJlIHRoZSBzaGFkb3cgcm9vdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMobG9nWzJdLCBbc2hhZG93LnNsb3QsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzJdIG11
c3QgYmUgdGhlIHNsb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxv
Z1szXSwgW3NoYWRvdy5zbG90UGFyZW50LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFszXSBt
dXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGxvZ1s0XSwgW3NoYWRvdy5yb290LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50
UGF0aFs0XSBtdXN0IGJlIHRoZSBzaGFkb3cgcm9vdCcpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMobG9nWzVdLCBbc2hhZG93Lmhvc3QsIHNoYWRvdy50YXJnZXRdLCAnRXZl
bnRQYXRoWzVdIG11c3QgYmUgdGhlIHNoYWRvdyBob3N0Jyk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhsb2dbNl0sIFtkb2N1bWVudC5ib2R5LCBzaGFkb3cudGFyZ2V0XSwg
J0V2ZW50UGF0aFs2XSBtdXN0IGJlIHRoZSBib2R5IGVsZW1lbnQnKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s3XSwgW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwg
c2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbN10gbXVzdCBiZSB0aGUgaHRtbCBlbGVtZW50Jyk7
CkBAIC0xNzksMTkgKzE3OSwxOSBAQAogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMobG9n
Lmxlbmd0aCwgMTUsICdFdmVudFBhdGggbXVzdCBjb250YWluIDE1IHRhcmdldHMnKTsKIAogICAg
ICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzBdLCBbc2hhZG93LnRhcmdldCwg
c2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMF0gbXVzdCBiZSB0aGUgdGFyZ2V0Jyk7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMV0sIFtzaGFkb3cubG93ZXJTbG90
LCBzaGFkb3cubG93ZXJTbG90XSwgJ0V2ZW50UGF0aFsxXSBtdXN0IGJlIHRoZSBzbG90IGluc2lk
ZSB0aGUgbG93ZXIgc2hhZG93IHRyZWUnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1syXSwgW3NoYWRvdy5sb3dlclNsb3QucGFyZW50Tm9kZSwgc2hhZG93Lmxvd2Vy
U2xvdF0sICdFdmVudFBhdGhbMl0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90IGluc2lk
ZSB0aGUgbG93ZXIgc2hhZG93IHRyZWUnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1szXSwgW3NoYWRvdy5pbm5lclNsb3QsIHNoYWRvdy5pbm5lclNsb3RdLCAnRXZl
bnRQYXRoWzNdIG11c3QgYmUgdGhlIHNsb3QgaW5zaWRlIHRoZSBzaGFkb3cgdHJlZSBpbnNpZGUg
dGhlIGxvd2VyIHNoYWRvdyB0cmVlJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhsb2dbNF0sIFtzaGFkb3cuaW5uZXJTbG90LnBhcmVudE5vZGUsIHNoYWRvdy5pbm5lclNs
b3RdLCAnRXZlbnRQYXRoWzRdIG11c3QgYmUgdGhlIGNoaWxkIG9mIHRoZSBpbm5lciBzaGFkb3cg
cm9vdCcpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzVdLCBbc2hh
ZG93LmlubmVyU2hhZG93LCBzaGFkb3cuaW5uZXJTbG90XSwgJ0V2ZW50UGF0aFs1XSBtdXN0IGJl
IHRoZSBpbm5lciBzaGFkb3cgcm9vdCcpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMobG9nWzZdLCBbc2hhZG93LmlubmVyU2hhZG93Lmhvc3QsIHNoYWRvdy5sb3dlclNsb3Rd
LCAnRXZlbnRQYXRoWzZdIG11c3QgYmUgdGhlIGhvc3Qgb2YgdGhlIGlubmVyIHNoYWRvdyB0cmVl
Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbN10sIFtzaGFkb3cu
bG93ZXJTaGFkb3cuZmlyc3RDaGlsZCwgc2hhZG93Lmxvd2VyU2xvdF0sICdFdmVudFBhdGhbN10g
bXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBpbm5lciBzaGFkb3cgaG9zdCcpOwotICAgICAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzhdLCBbc2hhZG93Lmxvd2VyU2hhZG93LCBz
aGFkb3cubG93ZXJTbG90XSwgJ0V2ZW50UGF0aFs4XSBtdXN0IGJlIHRoZSBsb3dlciBzaGFkb3cg
cm9vdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzFdLCBbc2hh
ZG93Lmxvd2VyU2xvdCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMV0gbXVzdCBiZSB0aGUg
c2xvdCBpbnNpZGUgdGhlIGxvd2VyIHNoYWRvdyB0cmVlJyk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhsb2dbMl0sIFtzaGFkb3cubG93ZXJTbG90LnBhcmVudE5vZGUsIHNo
YWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzJdIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUgc2xv
dCBpbnNpZGUgdGhlIGxvd2VyIHNoYWRvdyB0cmVlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhsb2dbM10sIFtzaGFkb3cuaW5uZXJTbG90LCBzaGFkb3cudGFyZ2V0XSwg
J0V2ZW50UGF0aFszXSBtdXN0IGJlIHRoZSBzbG90IGluc2lkZSB0aGUgc2hhZG93IHRyZWUgaW5z
aWRlIHRoZSBsb3dlciBzaGFkb3cgdHJlZScpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMobG9nWzRdLCBbc2hhZG93LmlubmVyU2xvdC5wYXJlbnROb2RlLCBzaGFkb3cudGFy
Z2V0XSwgJ0V2ZW50UGF0aFs0XSBtdXN0IGJlIHRoZSBjaGlsZCBvZiB0aGUgaW5uZXIgc2hhZG93
IHJvb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s1XSwgW3No
YWRvdy5pbm5lclNoYWRvdywgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbNV0gbXVzdCBiZSB0
aGUgaW5uZXIgc2hhZG93IHJvb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGxvZ1s2XSwgW3NoYWRvdy5pbm5lclNoYWRvdy5ob3N0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2
ZW50UGF0aFs2XSBtdXN0IGJlIHRoZSBob3N0IG9mIHRoZSBpbm5lciBzaGFkb3cgdHJlZScpOwor
ICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzddLCBbc2hhZG93Lmxvd2Vy
U2hhZG93LmZpcnN0Q2hpbGQsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzddIG11c3QgYmUg
dGhlIHBhcmVudCBvZiB0aGUgaW5uZXIgc2hhZG93IGhvc3QnKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s4XSwgW3NoYWRvdy5sb3dlclNoYWRvdywgc2hhZG93LnRh
cmdldF0sICdFdmVudFBhdGhbOF0gbXVzdCBiZSB0aGUgbG93ZXIgc2hhZG93IHJvb3QnKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s5XSwgW3NoYWRvdy5sb3dlclNo
YWRvdy5ob3N0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFs5XSBtdXN0IGJlIHRoZSBsb3dl
ciBzaGFkb3cgaG9zdCcpOwogICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
WzEwXSwgW3NoYWRvdy5ob3N0LmZpcnN0Q2hpbGQsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRo
WzEwXSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIGdyYW5kIHBhcmVudCBvZiB0aGUgdGFyZ2V0
Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMTFdLCBbc2hhZG93
LnVwcGVyU2xvdCwgc2hhZG93LnVwcGVyU2xvdF0sICdFdmVudFBhdGhbMTFdIG11c3QgYmUgdGhl
IHNsb3QgaW5zaWRlIHRoZSB1cHBlciBzaGFkb3cgdHJlZScpOwotICAgICAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMobG9nWzEyXSwgW3NoYWRvdy51cHBlclNsb3QucGFyZW50Tm9kZSwg
c2hhZG93LnVwcGVyU2xvdF0sICdFdmVudFBhdGhbMTJdIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0
aGUgc2xvdCBpbnNpZGUgdGhlIHVwcGVyIHNoYWRvdyB0cmVlJyk7Ci0gICAgICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMTNdLCBbc2hhZG93LnVwcGVyU2hhZG93LCBzaGFkb3cu
dXBwZXJTbG90XSwgJ0V2ZW50UGF0aFsxM10gbXVzdCBiZSB0aGUgdXBwZXIgc2hhZG93IHJvb3Qn
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxMV0sIFtzaGFkb3cu
dXBwZXJTbG90LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsxMV0gbXVzdCBiZSB0aGUgc2xv
dCBpbnNpZGUgdGhlIHVwcGVyIHNoYWRvdyB0cmVlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhsb2dbMTJdLCBbc2hhZG93LnVwcGVyU2xvdC5wYXJlbnROb2RlLCBzaGFk
b3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsxMl0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90
IGluc2lkZSB0aGUgdXBwZXIgc2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGxvZ1sxM10sIFtzaGFkb3cudXBwZXJTaGFkb3csIHNoYWRvdy50YXJnZXRd
LCAnRXZlbnRQYXRoWzEzXSBtdXN0IGJlIHRoZSB1cHBlciBzaGFkb3cgcm9vdCcpOwogICAgICAg
ICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzE0XSwgW3NoYWRvdy5ob3N0LCBzaGFk
b3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsxNF0gbXVzdCBiZSB0aGUgaG9zdCcpOwogCiAgICAgICAg
ICAgICB9LCAnRmlyaW5nIGFuIGV2ZW50IG9uIGEgbm9kZSB3aXRoIHR3byBhbmNlc3RvcnMgd2l0
aCBhIGRldGFjaGVkICcgKyBvdXRlclVwcGVyTW9kZSArICcgYW5kICcgKyBvdXRlckxvd2VyTW9k
ZQpAQCAtMjE1LDcgKzIxNSw3IEBACiAgICAgICAgICAgICArIGEgICAgICAgICAgICAgICArIGVt
ICg0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGlubmVyLWhvc3QgKDMpIC0t
IChpbm5lclNoYWRvdzsgMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNw
YW4gICAgICAgICAgICArIGkgKDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICArIHNsb3QgICAgICAgICAgICArIHNsb3QgKGlubmVyU2xvdDsgMCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICsgc2xvdCAgICAgICAgICAgICsgc2xvdCAoaW5uZXJTbG90
LCB0YXJnZXQ7IDApCiAgICAgICAgICovCiAKICAgICAgICAgZnVuY3Rpb24gdGVzdEV2ZW50SW5z
aWRlTmVzdGVkU2hhZG93c1VuZGVyQW5vdGhlclNoYWRvdyhvdXRlclVwcGVyTW9kZSwgb3V0ZXJM
b3dlck1vZGUsIGlubmVyTW9kZSkgewpAQCAtMjM2LDkgKzIzNiw5IEBACiAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNV0sIFtzaGFkb3cubG93ZXJTaGFkb3csIHNoYWRv
dy5pbm5lclNoYWRvdy5ob3N0XSwgJ0V2ZW50UGF0aFs1XSBtdXN0IGJlIHRoZSBsb3dlciAoYnV0
IG91dGVyKSBzaGFkb3cgcm9vdCcpOwogICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMobG9nWzZdLCBbc2hhZG93Lmxvd2VyU2hhZG93Lmhvc3QsIHNoYWRvdy5sb3dlclNoYWRvdy5o
b3N0XSwgJ0V2ZW50UGF0aFs2XSBtdXN0IGJlIHRoZSBsb3dlciAoYnV0IG91dGVyKSBzaGFkb3cg
cm9vdCcpOwogICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzddLCBbc2hh
ZG93Lmhvc3QuZmlyc3RDaGlsZCwgc2hhZG93Lmxvd2VyU2hhZG93Lmhvc3RdLCAnRXZlbnRQYXRo
WzddIG11c3QgYmUgdGhlIHNsb3QgaW5zaWRlIHRoZSB1cHBlciBzaGFkb3cgdHJlZScpOwotICAg
ICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzhdLCBbc2hhZG93LnVwcGVyU2xv
dCwgc2hhZG93LnVwcGVyU2xvdF0sICdFdmVudFBhdGhbOF0gbXVzdCBiZSB0aGUgc2xvdCBpbnNp
ZGUgdGhlIHVwcGVyIHNoYWRvdyB0cmVlJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhsb2dbOV0sIFtzaGFkb3cudXBwZXJTbG90LnBhcmVudE5vZGUsIHNoYWRvdy51cHBl
clNsb3RdLCAnRXZlbnRQYXRoWzldIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUgc2xvdCBpbnNp
ZGUgdGhlIHVwcGVyIHNoYWRvdyB0cmVlJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhsb2dbMTBdLCBbc2hhZG93LnVwcGVyU2hhZG93LCBzaGFkb3cudXBwZXJTbG90XSwg
J0V2ZW50UGF0aFsxMF0gbXVzdCBiZSB0aGUgdXBwZXIgc2hhZG93IHJvb3QnKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s4XSwgW3NoYWRvdy51cHBlclNsb3QsIHNo
YWRvdy5sb3dlclNoYWRvdy5ob3N0XSwgJ0V2ZW50UGF0aFs4XSBtdXN0IGJlIHRoZSBzbG90IGlu
c2lkZSB0aGUgdXBwZXIgc2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGxvZ1s5XSwgW3NoYWRvdy51cHBlclNsb3QucGFyZW50Tm9kZSwgc2hhZG93Lmxv
d2VyU2hhZG93Lmhvc3RdLCAnRXZlbnRQYXRoWzldIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUg
c2xvdCBpbnNpZGUgdGhlIHVwcGVyIHNoYWRvdyB0cmVlJyk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhsb2dbMTBdLCBbc2hhZG93LnVwcGVyU2hhZG93LCBzaGFkb3cubG93
ZXJTaGFkb3cuaG9zdF0sICdFdmVudFBhdGhbMTBdIG11c3QgYmUgdGhlIHVwcGVyIHNoYWRvdyBy
b290Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMTFdLCBbc2hh
ZG93LnVwcGVyU2hhZG93Lmhvc3QsIHNoYWRvdy5sb3dlclNoYWRvdy5ob3N0XSwgJ0V2ZW50UGF0
aFsxMV0gbXVzdCBiZSB0aGUgaG9zdCcpOwogCiAgICAgICAgICAgICB9LCAnRmlyaW5nIGFuIGV2
ZW50IG9uIGEgbm9kZSB3aXRoIHR3byBhbmNlc3RvcnMgd2l0aCBhIGRldGFjaGVkICcgKyBvdXRl
clVwcGVyTW9kZSArICcgYW5kICcgKyBvdXRlckxvd2VyTW9kZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278169</attachid>
            <date>2016-05-05 09:42:17 -0700</date>
            <delta_ts>2016-05-05 10:05:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-157369-20160505094258.patch</filename>
            <type>text/plain</type>
            <size>29265</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDQ0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTA1LTA0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGV2ZW50LnRhcmdldCBzaG91bGRu
J3QgYmUgcmV0YXJnZXRlZCBhcyB0aGUgZXZlbnQgYnViYmxlcyBpbnRvIGEgc2xvdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MzY5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgV2hlbiBhbiBldmVudCBi
dWJibGVzIHVwIGZyb20gYW4gYXNzaWduZWQgbm9kZSB0byBpdHMgYXNzaWduZWQgc2xvdCwgd2Ug
c2hvdWxkbid0IGJlIGFkanVzdGluZworICAgICAgICBldmVudC50YXJnZXQgdG8gcG9pbnQgdG8g
dGhlIHNsb3QuIFNpbmNlIGEgc2hhZG93IHRyZWUgc2hvdWxkIGhhdmUgYWNjZXNzIHRvIG5vZGVz
IG91dHNpZGUKKyAgICAgICAgdGhlIHNoYWRvdyB0cmVlLCBldmVudC50YXJnZXQgaXMgYWNjZXNz
aWJsZSBpbnNpZGUgdGhlIHNoYWRvdyB0cmVlIG9mIHN1Y2ggYSBzbG90LgorCisgICAgICAgIE5l
dyBiZWhhdmlvciBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBHb29nbGUgQ2hyb21lIENhbmFyeSBh
cyB3ZWxsIGFzIHRoZSBzaGFkb3cgRE9NIHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHA6Ly93
M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cvI2Rmbi1yZXRhcmdldGluZy1h
bGdvcml0aG0KKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNs
b3R0ZWQtbm9kZS5odG1sCisKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnQ6OmRlZXBQYXRoKToKKyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudENvbnRleHQ6OmlzVW5yZWFjaGFibGVOb2RlKTogVXNlIE5v
ZGU6OmlzVW5jbG9zZWROb2RlIGluc3RlYWQgb2YgaXNSZWFjaGFibGUuCisgICAgICAgIChXZWJD
b3JlOjpFdmVudENvbnRleHQ6OmlzUmVhY2hhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
RXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKTog
RG9uJ3Qgc2V0IHRoZSB0YXJnZXQgdG8gdGhlIHNsb3Qgd2hlbiBlbnRlcmluZyBhIHNsb3QuIEFs
c28gbW92ZWQKKyAgICAgICAgdGhlIGNvZGUgdG8gYWRqdXN0IHRoZSB0YXJnZXQgYXMgd2UgZXhp
dCBhIHNoYWRvdyB0cmVlIHRvIHRoZSBlbmQgb2YgdGhlIG91dGVyIGxvb3AgZm9yIGNsYXJpdHku
CisgICAgICAgIChXZWJDb3JlOjppc1VuY2xvc2VkTm9kZU9mKTogRGVsZXRlZC4gUmVuYW1lZCB0
byBOb2RlOjppc1VuY2xvc2VkTm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6c2V0
UmVsYXRlZFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmNvbXB1dGVQYXRo
VW5jbG9zZWRUb1RhcmdldCk6IFJlbmFtZWQgZnJvbSBjb21wdXRlUGF0aERpc2Nsb3NlZFRvVGFy
Z2V0LgorICAgICAgICAoV2ViQ29yZTo6bW92ZU91dE9mQWxsU2hhZG93Um9vdHMpOiBFeHRyYWN0
ZWQgZnJvbSBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OlJlbGF0ZWROb2RlUmV0YXJnZXRlci4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6UmVsYXRlZE5vZGVSZXRhcmdl
dGVyKTogRml4ZWQgYSBidWcgdGhhdCB3ZSB3ZXJlIGV4aXRpbmcgZWFybHkKKyAgICAgICAgd2l0
aG91dCBzZXR0aW5nIG1faGFzRGlmZmVyZW50VHJlZVJvb3QgdHJ1ZSB3aGVuIHRhcmdldCBhbmQg
cmVsYXRlZE5vZGUgYXJlIGRpc2Nvbm5lY3RlZCBmcm9tCisgICAgICAgIGEgZG9jdW1lbnQuCisg
ICAgICAgIChXZWJDb3JlOjpSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OmN1cnJlbnROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6Y2hlY2tDb25zaXN0ZW5jeSk6
IFVwZGF0ZWQgdG8gbWF0Y2ggdGhlIHNwZWMgd2l0aCBvbmUgZXhjZXB0aW9uLgorICAgICAgICBX
ZSBkb24ndCB1c2UgbnVsbCBhcyB0aGUgYWRqdXN0ZWQgcmVsYXRlZCB0YXJnZXQgd2hlbiB0aGUg
KG9yaWdpbmFsKSByZWxhdGVkIHRhcmdldCBhbmQgdGhlIHRhcmdldAorICAgICAgICBhcmUgaW4g
dHdvIGRpc3RpbmN0IGRpc2Nvbm5lY3RlZCB0cmVlcyBzaW5jZSBzdWNoIGEgYmVoYXZpb3IgaXMg
bm90IFdlYiBjb21wYXRpYmxlLiBUaGlzIHNwZWMgYnVnIGlzCisgICAgICAgIHRyYWNrZWQgYnkg
aHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJjb21wb25lbnRzL2lzc3Vlcy80OTQKKyAgICAgICAg
KiBkb20vRXZlbnRQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmV2ZW50VGFy
Z2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKTogUmV0dXJucyBOb2RlKiBpbnN0ZWFkIG9mIEV2ZW50
VGFyZ2V0KiBzaW5jZQorICAgICAgICB3ZSBuZWVkIGEgTm9kZSBpbiBSZWxhdGVkTm9kZVJldGFy
Z2V0ZXI6OmNoZWNrQ29uc2lzdGVuY3kuCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6aXNVbmNsb3NlZE5vZGUpOiBNb3ZlZCBmcm9tIFJlbGF0ZWROb2Rl
UmV0YXJnZXRlci5jcHAKKyAgICAgICAgKiBkb20vTm9kZS5oOgorCiAyMDE2LTA1LTAzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdGFydCBvbiBkaWN0aW9uYXJ5
IHN1cHBvcnQgZm9yIElETCwgZ2V0dGluZyBlbm91Z2ggdG8gd29yayBmb3Igb25lIGRpY3Rpb25h
cnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNpb24gMjAwMzU5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSw3IEBAIFZl
Y3RvcjxFdmVudFRhcmdldCo+IEV2ZW50OjpkZWVwUGF0aCgpIGMKIHsKICAgICBpZiAoIW1fZXZl
bnRQYXRoKQogICAgICAgICByZXR1cm4gVmVjdG9yPEV2ZW50VGFyZ2V0Kj4oKTsKLSAgICByZXR1
cm4gbV9ldmVudFBhdGgtPmNvbXB1dGVQYXRoRGlzY2xvc2VkVG9UYXJnZXQoKm1fdGFyZ2V0KTsK
KyAgICByZXR1cm4gbV9ldmVudFBhdGgtPmNvbXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldCgqbV9j
dXJyZW50VGFyZ2V0KTsKIH0KIAogdm9pZCBFdmVudDo6cmVjZWl2ZWRUYXJnZXQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaAkocmV2aXNpb24gMjAwMzU5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw2IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBpc1Vu
cmVhY2hhYmxlTm9kZShFdmVudFRhcmdldCopOwotICAgIGJvb2wgaXNSZWFjaGFibGUoTm9kZSop
IGNvbnN0OwogI2VuZGlmCiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBSZWZQdHI8RXZl
bnRUYXJnZXQ+IG1fY3VycmVudFRhcmdldDsKQEAgLTEzNCwxOCArMTMzLDcgQEAgaW5saW5lIFRv
dWNoRXZlbnRDb250ZXh0KiB0b1RvdWNoRXZlbnRDbwogaW5saW5lIGJvb2wgRXZlbnRDb250ZXh0
Ojppc1VucmVhY2hhYmxlTm9kZShFdmVudFRhcmdldCogdGFyZ2V0KQogewogICAgIC8vIEZJWE1F
OiBDaGVja3MgYWxzbyBmb3IgU1ZHIGVsZW1lbnRzLgotICAgIHJldHVybiB0YXJnZXQgJiYgdGFy
Z2V0LT50b05vZGUoKSAmJiAhdGFyZ2V0LT50b05vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgIWlz
UmVhY2hhYmxlKHRhcmdldC0+dG9Ob2RlKCkpOwotfQotCi1pbmxpbmUgYm9vbCBFdmVudENvbnRl
eHQ6OmlzUmVhY2hhYmxlKE5vZGUqIHRhcmdldCkgY29uc3QKLXsKLSAgICBBU1NFUlQodGFyZ2V0
KTsKLSAgICBUcmVlU2NvcGUmIHRhcmdldFNjb3BlID0gdGFyZ2V0LT50cmVlU2NvcGUoKTsKLSAg
ICBmb3IgKFRyZWVTY29wZSogc2NvcGUgPSAmbV9ub2RlLT50cmVlU2NvcGUoKTsgc2NvcGU7IHNj
b3BlID0gc2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKSB7Ci0gICAgICAgIGlmIChzY29wZSA9PSAm
dGFyZ2V0U2NvcGUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiB0YXJnZXQgJiYgdGFyZ2V0LT50b05vZGUoKSAmJiAhdGFyZ2V0
LT50b05vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgIW1fbm9kZS0+aXNVbmNsb3NlZE5vZGUoKnRh
cmdldC0+dG9Ob2RlKCkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGgu
Y3BwCShyZXZpc2lvbiAyMDAzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsOSBAQCBzdGF0aWMgTm9kZSogbm9kZU9ySG9z
dElmUHNldWRvRWxlbWVudChOCiAKIGNsYXNzIFJlbGF0ZWROb2RlUmV0YXJnZXRlciB7CiBwdWJs
aWM6Ci0gICAgUmVsYXRlZE5vZGVSZXRhcmdldGVyKE5vZGUmIHJlbGF0ZWROb2RlLCBUcmVlU2Nv
cGUmIHRhcmdldFRyZWVTY29wZSk7CisgICAgUmVsYXRlZE5vZGVSZXRhcmdldGVyKE5vZGUmIHJl
bGF0ZWROb2RlLCBOb2RlJiB0YXJnZXQpOwogCi0gICAgTm9kZSogY3VycmVudE5vZGUoVHJlZVNj
b3BlJiBjdXJyZW50VHJlZVNjb3BlKTsKKyAgICBOb2RlKiBjdXJyZW50Tm9kZShOb2RlJiBjdXJy
ZW50VHJlZVNjb3BlKTsKICAgICB2b2lkIG1vdmVUb05ld1RyZWVTY29wZShUcmVlU2NvcGUqIHBy
ZXZpb3VzVHJlZVNjb3BlLCBUcmVlU2NvcGUmIG5ld1RyZWVTY29wZSk7CiAKIHByaXZhdGU6CkBA
IC03MSw5ICs3MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0VHJlZVNjb3BlcygpOwog
CiAjaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFRyZWVTY29w
ZSYpIHsgfQorICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShOb2RlJikgeyB9CiAjZWxzZQotICAg
IHZvaWQgY2hlY2tDb25zaXN0ZW5jeShUcmVlU2NvcGUmIGN1cnJlbnRUcmVlU2NvcGUpOworICAg
IHZvaWQgY2hlY2tDb25zaXN0ZW5jeShOb2RlJiBjdXJyZW50VGFyZ2V0KTsKICNlbmRpZgogCiAg
ICAgTm9kZSYgbV9yZWxhdGVkTm9kZTsKQEAgLTg2LDIyICs4NiwxNCBAQCBwcml2YXRlOgogRXZl
bnRQYXRoOjpFdmVudFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKICAg
ICA6IG1fZXZlbnQoZXZlbnQpCiB7Ci0jaWYgRU5BQkxFKFNIQURPV19ET00pIHx8IEVOQUJMRShE
RVRBSUxTX0VMRU1FTlQpCi0gICAgVmVjdG9yPEV2ZW50VGFyZ2V0KiwgMTY+IHRhcmdldFN0YWNr
OwotI2VuZGlmCi0KICAgICBib29sIGlzTW91c2VPckZvY3VzRXZlbnQgPSBldmVudC5pc01vdXNl
RXZlbnQoKSB8fCBldmVudC5pc0ZvY3VzRXZlbnQoKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgIGJvb2wgaXNUb3VjaEV2ZW50ID0gZXZlbnQuaXNUb3VjaEV2ZW50KCk7CiAjZW5kaWYK
LSAgICBFdmVudFRhcmdldCogdGFyZ2V0ID0gbnVsbHB0cjsKLQogICAgIE5vZGUqIG5vZGUgPSBu
b2RlT3JIb3N0SWZQc2V1ZG9FbGVtZW50KCZvcmlnaW5hbFRhcmdldCk7CisgICAgTm9kZSogdGFy
Z2V0ID0gZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUpOwogICAgIHdoaWxl
IChub2RlKSB7Ci0gICAgICAgIGlmICghdGFyZ2V0KQotICAgICAgICAgICAgdGFyZ2V0ID0gZXZl
bnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUpOwotICAgICAgICBDb250YWluZXJO
b2RlKiBwYXJlbnQ7Ci0gICAgICAgIGZvciAoOyBub2RlOyBub2RlID0gcGFyZW50KSB7CisgICAg
ICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgICAgICBFdmVudFRhcmdldCogY3VycmVudFRhcmdl
dCA9IGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKTsKIAogICAgICAgICAg
ICAgaWYgKGlzTW91c2VPckZvY3VzRXZlbnQpCkBAIC0xMTYsOCArMTA4LDcgQEAgRXZlbnRQYXRo
OjpFdmVudFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZQogICAgICAgICAgICAgaWYgKGlzPFNoYWRv
d1Jvb3Q+KCpub2RlKSkKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgcGFy
ZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotCisgICAgICAgICAgICBDb250YWluZXJOb2RlKiBw
YXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgICAgICBpZiAoIXBhcmVudCkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEyNSwzMCArMTE2LDIxIEBAIEV2ZW50UGF0aDo6
RXZlbnRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2UKICAgICAgICAgICAgIGlmIChTaGFkb3dSb290
KiBzaGFkb3dSb290T2ZQYXJlbnQgPSBwYXJlbnQtPnNoYWRvd1Jvb3QoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBhc3NpZ25lZFNsb3QgPSBzaGFkb3dSb290T2ZQYXJlbnQtPmZpbmRB
c3NpZ25lZFNsb3QoKm5vZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIG5vZGUgaXMgYXNz
aWduZWQgdG8gYSBzbG90LiBDb250aW51ZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgYXQgdGhpcyBz
bG90LgotICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGFjay5hcHBlbmQodGFyZ2V0KTsKICAg
ICAgICAgICAgICAgICAgICAgcGFyZW50ID0gYXNzaWduZWRTbG90OwotICAgICAgICAgICAgICAg
ICAgICB0YXJnZXQgPSBhc3NpZ25lZFNsb3Q7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogI2VuZGlmCiAgICAgICAgICAgICBub2RlID0gcGFyZW50OwogICAgICAgICB9CiAKKyAg
ICAgICAgYm9vbCBleGl0aW5nU2hhZG93VHJlZU9mVGFyZ2V0ID0gJnRhcmdldC0+dHJlZVNjb3Bl
KCkgPT0gJm5vZGUtPnRyZWVTY29wZSgpOwogICAgICAgICBTaGFkb3dSb290JiBzaGFkb3dSb290
ID0gZG93bmNhc3Q8U2hhZG93Um9vdD4oKm5vZGUpOwotICAgICAgICAvLyBBdCBhIHNoYWRvdyBy
b290LiBDb250aW51ZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgYXQgdGhlIHNoYWRvdyBob3N0Lgot
I2lmIEVOQUJMRShTSEFET1dfRE9NKSB8fCBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQotICAgICAg
ICBpZiAoIXRhcmdldFN0YWNrLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gTW92ZSB0YXJn
ZXQgYmFjayB0byBhIGRlc2NlbmRhbnQgb2YgdGhlIHNoYWRvdyBob3N0IGlmIHRoZSBldmVudCBk
aWQgbm90IG9yaWdpbmF0ZSBpbiB0aGlzIHNoYWRvdyB0cmVlIG9yIGl0cyBpbm5lciBzaGFkb3cg
dHJlZXMuCi0gICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXRTdGFjay5sYXN0KCk7Ci0gICAgICAg
ICAgICB0YXJnZXRTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICBBU1NFUlQoc2hhZG93
Um9vdC5ob3N0KCktPmNvbnRhaW5zKHRhcmdldC0+dG9Ob2RlKCkpKTsKLSAgICAgICAgfSBlbHNl
Ci0jZW5kaWYKLSAgICAgICAgICAgIHRhcmdldCA9IG51bGxwdHI7Ci0KICAgICAgICAgaWYgKCFz
aG91bGRFdmVudENyb3NzU2hhZG93Qm91bmRhcnkoZXZlbnQsIHNoYWRvd1Jvb3QsIG9yaWdpbmFs
VGFyZ2V0KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbm9kZSA9IHNoYWRvd1Jvb3Qu
aG9zdCgpOworICAgICAgICBpZiAoZXhpdGluZ1NoYWRvd1RyZWVPZlRhcmdldCkKKyAgICAgICAg
ICAgIHRhcmdldCA9IGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKTsKKwog
ICAgIH0KIH0KIApAQCAtMTU4LDcgKzE0MCw3IEBAIHZvaWQgRXZlbnRQYXRoOjpzZXRSZWxhdGVk
VGFyZ2V0KE5vZGUmIG8KICAgICBpZiAoIXJlbGF0ZWROb2RlIHx8IG1fcGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbGF0ZWROb2RlUmV0YXJnZXRlciByZXRhcmdldGVy
KCpyZWxhdGVkTm9kZSwgZG93bmNhc3Q8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0PigqbV9wYXRo
WzBdKS5ub2RlKCktPnRyZWVTY29wZSgpKTsKKyAgICBSZWxhdGVkTm9kZVJldGFyZ2V0ZXIgcmV0
YXJnZXRlcigqcmVsYXRlZE5vZGUsICptX3BhdGhbMF0tPm5vZGUoKSk7CiAKICAgICBib29sIG9y
aWdpbklzUmVsYXRlZFRhcmdldCA9ICZvcmlnaW4gPT0gcmVsYXRlZE5vZGU7CiAgICAgYm9vbCBy
ZWxhdGVkVGFyZ2V0U2NvcGVkID0gbV9ldmVudC5yZWxhdGVkVGFyZ2V0U2NvcGVkKCk7CkBAIC0x
NjgsMTEgKzE1MCwxMiBAQCB2b2lkIEV2ZW50UGF0aDo6c2V0UmVsYXRlZFRhcmdldChOb2RlJiBv
CiAgICAgZm9yICh1bnNpZ25lZCBjb250ZXh0SW5kZXggPSAwOyBjb250ZXh0SW5kZXggPCBvcmln
aW5hbEV2ZW50UGF0aFNpemU7IGNvbnRleHRJbmRleCsrKSB7CiAgICAgICAgIGF1dG8mIGNvbnRl
eHQgPSBkb3duY2FzdDxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KCptX3BhdGhbY29udGV4dElu
ZGV4XSk7CiAKLSAgICAgICAgVHJlZVNjb3BlJiBjdXJyZW50VHJlZVNjb3BlID0gY29udGV4dC5u
b2RlKCktPnRyZWVTY29wZSgpOworICAgICAgICBOb2RlJiBjdXJyZW50VGFyZ2V0ID0gKmNvbnRl
eHQubm9kZSgpOworICAgICAgICBUcmVlU2NvcGUmIGN1cnJlbnRUcmVlU2NvcGUgPSBjdXJyZW50
VGFyZ2V0LnRyZWVTY29wZSgpOwogICAgICAgICBpZiAoVU5MSUtFTFkocHJldmlvdXNUcmVlU2Nv
cGUgJiYgJmN1cnJlbnRUcmVlU2NvcGUgIT0gcHJldmlvdXNUcmVlU2NvcGUpKQogICAgICAgICAg
ICAgcmV0YXJnZXRlci5tb3ZlVG9OZXdUcmVlU2NvcGUocHJldmlvdXNUcmVlU2NvcGUsIGN1cnJl
bnRUcmVlU2NvcGUpOwogCi0gICAgICAgIE5vZGUqIGN1cnJlbnRSZWxhdGVkTm9kZSA9IHJldGFy
Z2V0ZXIuY3VycmVudE5vZGUoY3VycmVudFRyZWVTY29wZSk7CisgICAgICAgIE5vZGUqIGN1cnJl
bnRSZWxhdGVkTm9kZSA9IHJldGFyZ2V0ZXIuY3VycmVudE5vZGUoY3VycmVudFRhcmdldCk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWShyZWxhdGVkVGFyZ2V0U2NvcGVkICYmICFvcmlnaW5Jc1JlbGF0
ZWRUYXJnZXQgJiYgY29udGV4dC50YXJnZXQoKSA9PSBjdXJyZW50UmVsYXRlZE5vZGUpKSB7CiAg
ICAgICAgICAgICBtX3BhdGguc2hyaW5rKGNvbnRleHRJbmRleCk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTIwMCwxNCArMTgzLDE1IEBAIHZvaWQgRXZlbnRQYXRoOjpyZXRhcmdldFRvdWNoKFRv
dWNoRXZlbnQKICAgICBpZiAoIXRhcmdldE5vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
bGF0ZWROb2RlUmV0YXJnZXRlciByZXRhcmdldGVyKCp0YXJnZXROb2RlLCBtX3BhdGhbMF0tPm5v
ZGUoKS0+dHJlZVNjb3BlKCkpOworICAgIFJlbGF0ZWROb2RlUmV0YXJnZXRlciByZXRhcmdldGVy
KCp0YXJnZXROb2RlLCAqbV9wYXRoWzBdLT5ub2RlKCkpOwogICAgIFRyZWVTY29wZSogcHJldmlv
dXNUcmVlU2NvcGUgPSBudWxscHRyOwogICAgIGZvciAoYXV0byYgY29udGV4dCA6IG1fcGF0aCkg
ewotICAgICAgICBUcmVlU2NvcGUmIGN1cnJlbnRUcmVlU2NvcGUgPSBjb250ZXh0LT5ub2RlKCkt
PnRyZWVTY29wZSgpOworICAgICAgICBOb2RlJiBjdXJyZW50VGFyZ2V0ID0gKmNvbnRleHQubm9k
ZSgpOworICAgICAgICBUcmVlU2NvcGUmIGN1cnJlbnRUcmVlU2NvcGUgPSBjdXJyZW50VGFyZ2V0
LnRyZWVTY29wZSgpOwogICAgICAgICBpZiAoVU5MSUtFTFkocHJldmlvdXNUcmVlU2NvcGUgJiYg
JmN1cnJlbnRUcmVlU2NvcGUgIT0gcHJldmlvdXNUcmVlU2NvcGUpKQogICAgICAgICAgICAgcmV0
YXJnZXRlci5tb3ZlVG9OZXdUcmVlU2NvcGUocHJldmlvdXNUcmVlU2NvcGUsIGN1cnJlbnRUcmVl
U2NvcGUpOwogCi0gICAgICAgIE5vZGUqIGN1cnJlbnRSZWxhdGVkTm9kZSA9IHJldGFyZ2V0ZXIu
Y3VycmVudE5vZGUoY3VycmVudFRyZWVTY29wZSk7CisgICAgICAgIE5vZGUqIGN1cnJlbnRSZWxh
dGVkTm9kZSA9IHJldGFyZ2V0ZXIuY3VycmVudE5vZGUoY3VycmVudFRhcmdldCk7CiAgICAgICAg
IGRvd25jYXN0PFRvdWNoRXZlbnRDb250ZXh0PigqY29udGV4dCkudG91Y2hMaXN0KHRvdWNoTGlz
dFR5cGUpLT5hcHBlbmQodG91Y2guY2xvbmVXaXRoTmV3VGFyZ2V0KGN1cnJlbnRSZWxhdGVkTm9k
ZSkpOwogCiAgICAgICAgIHByZXZpb3VzVHJlZVNjb3BlID0gJmN1cnJlbnRUcmVlU2NvcGU7CkBA
IC0yNDMsMjkgKzIyNyw3IEBAIGJvb2wgRXZlbnRQYXRoOjpoYXNFdmVudExpc3RlbmVycyhjb25z
dCAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLS8vIGh0dHA6Ly93M2MuZ2l0aHViLmlvL3dlYmNv
bXBvbmVudHMvc3BlYy9zaGFkb3cvI2Rmbi11bmNsb3NlZC1ub2RlCi1zdGF0aWMgYm9vbCBpc1Vu
Y2xvc2VkTm9kZU9mKGNvbnN0IE5vZGUmIGEsIGNvbnN0IE5vZGUmIGIpCi17Ci0gICAgLy8gVXNl
IFZlY3RvciBpbnN0ZWFkIG9mIEhhc2hTZXQgc2luY2Ugd2UgZXhwZWN0IHRoZSBudW1iZXIgb2Yg
YW5jZXN0b3IgdHJlZSBzY29wZXMgdG8gYmUgc21hbGwuCi0gICAgVmVjdG9yPFRyZWVTY29wZSos
IDg+IHRyZWVTY29wZXNPcGVuVG9COwotCi0gICAgZm9yIChhdXRvKiBzY29wZSA9ICZiLnRyZWVT
Y29wZSgpOyBzY29wZTsgc2NvcGUgPSBzY29wZS0+cGFyZW50VHJlZVNjb3BlKCkpCi0gICAgICAg
IHRyZWVTY29wZXNPcGVuVG9CLmFwcGVuZChzY29wZSk7Ci0KLSAgICBmb3IgKGF1dG8qIHRyZWVT
Y29wZVRoYXRDYW5BY2Nlc3NBID0gJmEudHJlZVNjb3BlKCk7IHRyZWVTY29wZVRoYXRDYW5BY2Nl
c3NBOyB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzQSA9IHRyZWVTY29wZVRoYXRDYW5BY2Nlc3NBLT5w
YXJlbnRUcmVlU2NvcGUoKSkgewotICAgICAgICBmb3IgKGF1dG8qIG9wZW5Ub0IgOiB0cmVlU2Nv
cGVzT3BlblRvQikgewotICAgICAgICAgICAgaWYgKG9wZW5Ub0IgPT0gdHJlZVNjb3BlVGhhdENh
bkFjY2Vzc0EpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgYXV0byYgcm9vdCA9IHRyZWVTY29wZVRoYXRDYW5BY2Nlc3NBLT5yb290Tm9kZSgpOwotICAg
ICAgICBpZiAoaXM8U2hhZG93Um9vdD4ocm9vdCkgJiYgZG93bmNhc3Q8U2hhZG93Um9vdD4ocm9v
dCkudHlwZSgpICE9IFNoYWRvd1Jvb3Q6OlR5cGU6Ok9wZW4pCi0gICAgICAgICAgICBicmVhazsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVZlY3RvcjxFdmVudFRhcmdldCo+IEV2
ZW50UGF0aDo6Y29tcHV0ZVBhdGhEaXNjbG9zZWRUb1RhcmdldChjb25zdCBFdmVudFRhcmdldCYg
dGFyZ2V0KSBjb25zdAorVmVjdG9yPEV2ZW50VGFyZ2V0Kj4gRXZlbnRQYXRoOjpjb21wdXRlUGF0
aFVuY2xvc2VkVG9UYXJnZXQoY29uc3QgRXZlbnRUYXJnZXQmIHRhcmdldCkgY29uc3QKIHsKICAg
ICBWZWN0b3I8RXZlbnRUYXJnZXQqPiBwYXRoOwogICAgIGNvbnN0IE5vZGUqIHRhcmdldE5vZGUg
PSBjb25zdF9jYXN0PEV2ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b05vZGUoKTsKQEAgLTI3NCw3ICsy
MzYsNyBAQCBWZWN0b3I8RXZlbnRUYXJnZXQqPiBFdmVudFBhdGg6OmNvbXB1dGVQCiAKICAgICBm
b3IgKGF1dG8mIGNvbnRleHQgOiBtX3BhdGgpIHsKICAgICAgICAgaWYgKE5vZGUqIG5vZGVJblBh
dGggPSBjb250ZXh0LT5jdXJyZW50VGFyZ2V0KCktPnRvTm9kZSgpKSB7Ci0gICAgICAgICAgICBp
ZiAoaXNVbmNsb3NlZE5vZGVPZigqbm9kZUluUGF0aCwgKnRhcmdldE5vZGUpKQorICAgICAgICAg
ICAgaWYgKHRhcmdldE5vZGUtPmlzVW5jbG9zZWROb2RlKCpub2RlSW5QYXRoKSkKICAgICAgICAg
ICAgICAgICBwYXRoLmFwcGVuZChjb250ZXh0LT5jdXJyZW50VGFyZ2V0KCkpOwogICAgICAgICB9
CiAgICAgfQpAQCAtMjgyLDEyICsyNDQsMjEgQEAgVmVjdG9yPEV2ZW50VGFyZ2V0Kj4gRXZlbnRQ
YXRoOjpjb21wdXRlUAogICAgIHJldHVybiBwYXRoOwogfQogCi1SZWxhdGVkTm9kZVJldGFyZ2V0
ZXI6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcihOb2RlJiByZWxhdGVkTm9kZSwgVHJlZVNjb3BlJiB0
YXJnZXRUcmVlU2NvcGUpCitzdGF0aWMgTm9kZSogbW92ZU91dE9mQWxsU2hhZG93Um9vdHMoTm9k
ZSYgc3RhcnRpbmdOb2RlKQoreworICAgIE5vZGUqIG5vZGUgPSAmc3RhcnRpbmdOb2RlOworICAg
IHdoaWxlIChub2RlLT5pc0luU2hhZG93VHJlZSgpKQorICAgICAgICBub2RlID0gZG93bmNhc3Q8
U2hhZG93Um9vdD4obm9kZS0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSkuaG9zdCgpOworICAgIHJl
dHVybiBub2RlOworfQorCitSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OlJlbGF0ZWROb2RlUmV0YXJn
ZXRlcihOb2RlJiByZWxhdGVkTm9kZSwgTm9kZSYgdGFyZ2V0KQogICAgIDogbV9yZWxhdGVkTm9k
ZShyZWxhdGVkTm9kZSkKICAgICAsIG1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlKCZyZWxhdGVkTm9k
ZSkKIHsKKyAgICBhdXRvJiB0YXJnZXRUcmVlU2NvcGUgPSB0YXJnZXQudHJlZVNjb3BlKCk7CiAg
ICAgVHJlZVNjb3BlKiBjdXJyZW50VHJlZVNjb3BlID0gJm1fcmVsYXRlZE5vZGUudHJlZVNjb3Bl
KCk7Ci0gICAgaWYgKExJS0VMWShjdXJyZW50VHJlZVNjb3BlID09ICZ0YXJnZXRUcmVlU2NvcGUp
KQorICAgIGlmIChMSUtFTFkoY3VycmVudFRyZWVTY29wZSA9PSAmdGFyZ2V0VHJlZVNjb3BlICYm
IHRhcmdldC5pbkRvY3VtZW50KCkgJiYgbV9yZWxhdGVkTm9kZS5pbkRvY3VtZW50KCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoJmN1cnJlbnRUcmVlU2NvcGUtPmRvY3VtZW50U2NvcGUo
KSAhPSAmdGFyZ2V0VHJlZVNjb3BlLmRvY3VtZW50U2NvcGUoKSkgewpAQCAtMjk1LDEwICsyNjYs
OSBAQCBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OlJlbGF0ZWROb2RlUmV0YXJnCiAgICAgICAgIG1f
cmV0YXJnZXRlZFJlbGF0ZWROb2RlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAocmVsYXRlZE5vZGUuaW5Eb2N1bWVudCgpICE9IHRhcmdldFRyZWVTY29wZS5yb290
Tm9kZSgpLmluRG9jdW1lbnQoKSkgeworICAgIGlmIChyZWxhdGVkTm9kZS5pbkRvY3VtZW50KCkg
IT0gdGFyZ2V0LmluRG9jdW1lbnQoKSkgewogICAgICAgICBtX2hhc0RpZmZlcmVudFRyZWVSb290
ID0gdHJ1ZTsKLSAgICAgICAgd2hpbGUgKG1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlLT5pc0luU2hh
ZG93VHJlZSgpKQotICAgICAgICAgICAgbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUgPSBkb3duY2Fz
dDxTaGFkb3dSb290PihtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZS0+dHJlZVNjb3BlKCkucm9vdE5v
ZGUoKSkuaG9zdCgpOworICAgICAgICBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9IG1vdmVPdXRP
ZkFsbFNoYWRvd1Jvb3RzKHJlbGF0ZWROb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMzIwLDEzICsyOTAsMjQgQEAgUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpSZWxhdGVkTm9kZVJl
dGFyZwogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgYm9vbCBsb3dlc3RDb21tb25B
bmNlc3RvcklzRG9jdW1lbnRTY29wZSA9IGkgKyAxID09IG1fYW5jZXN0b3JUcmVlU2NvcGVzLnNp
emUoKTsKKyAgICBpZiAobG93ZXN0Q29tbW9uQW5jZXN0b3JJc0RvY3VtZW50U2NvcGUgJiYgIXJl
bGF0ZWROb2RlLmluRG9jdW1lbnQoKSAmJiAhdGFyZ2V0LmluRG9jdW1lbnQoKSkgeworICAgICAg
ICBOb2RlJiB0YXJnZXRBbmNlc3RvckluRG9jdW1lbnRTY29wZSA9IGkgPyAqZG93bmNhc3Q8U2hh
ZG93Um9vdD4obV9hbmNlc3RvclRyZWVTY29wZXNbaSAtIDFdLT5yb290Tm9kZSgpKS5zaGFkb3dI
b3N0KCkgOiB0YXJnZXQ7CisgICAgICAgIE5vZGUmIHJlbGF0ZWROb2RlQW5jZXN0b3JJbkRvY3Vt
ZW50U2NvcGUgPSBqID8gKmRvd25jYXN0PFNoYWRvd1Jvb3Q+KHRhcmdldFRyZWVTY29wZUFuY2Vz
dG9yc1tqIC0gMV0tPnJvb3ROb2RlKCkpLnNoYWRvd0hvc3QoKSA6IHJlbGF0ZWROb2RlOworICAg
ICAgICBpZiAodGFyZ2V0QW5jZXN0b3JJbkRvY3VtZW50U2NvcGUucm9vdE5vZGUoKSAhPSByZWxh
dGVkTm9kZUFuY2VzdG9ySW5Eb2N1bWVudFNjb3BlLnJvb3ROb2RlKCkpIHsKKyAgICAgICAgICAg
IG1faGFzRGlmZmVyZW50VHJlZVJvb3QgPSB0cnVlOworICAgICAgICAgICAgbV9yZXRhcmdldGVk
UmVsYXRlZE5vZGUgPSBtb3ZlT3V0T2ZBbGxTaGFkb3dSb290cyhyZWxhdGVkTm9kZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBtX2xvd2VzdENvbW1vbkFu
Y2VzdG9ySW5kZXggPSBpOwogICAgIG1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlID0gbm9kZUluTG93
ZXN0Q29tbW9uQW5jZXN0b3IoKTsKIH0KIAotaW5saW5lIE5vZGUqIFJlbGF0ZWROb2RlUmV0YXJn
ZXRlcjo6Y3VycmVudE5vZGUoVHJlZVNjb3BlJiBjdXJyZW50VHJlZVNjb3BlKQoraW5saW5lIE5v
ZGUqIFJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6Y3VycmVudE5vZGUoTm9kZSYgY3VycmVudFRhcmdl
dCkKIHsKLSAgICBjaGVja0NvbnNpc3RlbmN5KGN1cnJlbnRUcmVlU2NvcGUpOworICAgIGNoZWNr
Q29uc2lzdGVuY3koY3VycmVudFRhcmdldCk7CiAgICAgcmV0dXJuIG1fcmV0YXJnZXRlZFJlbGF0
ZWROb2RlOwogfQogCkBAIC0zODEsMTcgKzM2MiwxOSBAQCB2b2lkIFJlbGF0ZWROb2RlUmV0YXJn
ZXRlcjo6Y29sbGVjdFRyZWVTCiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECi12b2lkIFJlbGF0
ZWROb2RlUmV0YXJnZXRlcjo6Y2hlY2tDb25zaXN0ZW5jeShUcmVlU2NvcGUmIGN1cnJlbnRUcmVl
U2NvcGUpCit2b2lkIFJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6Y2hlY2tDb25zaXN0ZW5jeShOb2Rl
JiBjdXJyZW50VGFyZ2V0KQogewotICAgIGZvciAoYXV0byogcmVsYXRlZE5vZGVTY29wZSA9ICZt
X3JlbGF0ZWROb2RlLnRyZWVTY29wZSgpOyByZWxhdGVkTm9kZVNjb3BlOyByZWxhdGVkTm9kZVNj
b3BlID0gcmVsYXRlZE5vZGVTY29wZS0+cGFyZW50VHJlZVNjb3BlKCkpIHsKLSAgICAgICAgZm9y
IChhdXRvKiB0YXJnZXRTY29wZSA9ICZjdXJyZW50VHJlZVNjb3BlOyB0YXJnZXRTY29wZTsgdGFy
Z2V0U2NvcGUgPSB0YXJnZXRTY29wZS0+cGFyZW50VHJlZVNjb3BlKCkpIHsKLSAgICAgICAgICAg
IGlmICh0YXJnZXRTY29wZSA9PSByZWxhdGVkTm9kZVNjb3BlKSB7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKCZtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZS0+dHJlZVNjb3BlKCkgPT0gcmVsYXRlZE5v
ZGVTY29wZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgIEFT
U0VSVCghbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUgfHwgY3VycmVudFRhcmdldC5pc1VuY2xvc2Vk
Tm9kZSgqbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUpKTsKKworICAgIC8vIGh0dHA6Ly93M2MuZ2l0
aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cvI2Rmbi1yZXRhcmdldGluZy1hbGdvcml0
aG0KKyAgICBOb2RlJiBiYXNlID0gY3VycmVudFRhcmdldDsKKyAgICBmb3IgKE5vZGUqIHRhcmdl
dEFuY2VzdG9yID0gJm1fcmVsYXRlZE5vZGU7IHRhcmdldEFuY2VzdG9yOyB0YXJnZXRBbmNlc3Rv
ciA9IHRhcmdldEFuY2VzdG9yLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKKyAgICAgICAg
aWYgKHRhcmdldEFuY2VzdG9yLT5yb290Tm9kZSgpLT5jb250YWluc0luY2x1ZGluZ1NoYWRvd0RP
TSgmYmFzZSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9
PSB0YXJnZXRBbmNlc3Rvcik7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9
Ci0gICAgQVNTRVJUKCFtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSk7CisgICAgQVNTRVJUKCFtX3Jl
dGFyZ2V0ZWRSZWxhdGVkTm9kZSB8fCBtX2hhc0RpZmZlcmVudFRyZWVSb290KTsKIH0KICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5oCShyZXZpc2lvbiAyMDAzNTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkg
QEAgcHVibGljOgogCiAgICAgRXZlbnRDb250ZXh0KiBsYXN0Q29udGV4dElmRXhpc3RzKCkgeyBy
ZXR1cm4gbV9wYXRoLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX3BhdGgubGFzdCgpLmdldCgpOyB9
CiAKLSAgICBWZWN0b3I8RXZlbnRUYXJnZXQqPiBjb21wdXRlUGF0aERpc2Nsb3NlZFRvVGFyZ2V0
KGNvbnN0IEV2ZW50VGFyZ2V0JikgY29uc3Q7CisgICAgVmVjdG9yPEV2ZW50VGFyZ2V0Kj4gY29t
cHV0ZVBhdGhVbmNsb3NlZFRvVGFyZ2V0KGNvbnN0IEV2ZW50VGFyZ2V0JikgY29uc3Q7CiAKLSAg
ICBzdGF0aWMgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKE5v
ZGUmIHJlZmVyZW5jZU5vZGUpCisgICAgc3RhdGljIE5vZGUqIGV2ZW50VGFyZ2V0UmVzcGVjdGlu
Z1RhcmdldFJ1bGVzKE5vZGUmIHJlZmVyZW5jZU5vZGUpCiAgICAgewogICAgICAgICBpZiAoaXM8
UHNldWRvRWxlbWVudD4ocmVmZXJlbmNlTm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNh
c3Q8UHNldWRvRWxlbWVudD4ocmVmZXJlbmNlTm9kZSkuaG9zdEVsZW1lbnQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAJKHJldmlzaW9uIDIwMDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1OCw2ICsxMDU4LDI4IEBAIFNoYWRvd1Jvb3QqIE5v
ZGU6OmNvbnRhaW5pbmdTaGFkb3dSb290KCkKICAgICByZXR1cm4gaXM8U2hhZG93Um9vdD4ocm9v
dCkgPyBkb3duY2FzdDxTaGFkb3dSb290Pigmcm9vdCkgOiBudWxscHRyOwogfQogCisvLyBodHRw
Oi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyNkZm4tdW5jbG9zZWQt
bm9kZQorYm9vbCBOb2RlOjppc1VuY2xvc2VkTm9kZShjb25zdCBOb2RlJiBvdGhlck5vZGUpIGNv
bnN0Cit7CisgICAgLy8gVXNlIFZlY3RvciBpbnN0ZWFkIG9mIEhhc2hTZXQgc2luY2Ugd2UgZXhw
ZWN0IHRoZSBudW1iZXIgb2YgYW5jZXN0b3IgdHJlZSBzY29wZXMgdG8gYmUgc21hbGwuCisgICAg
VmVjdG9yPFRyZWVTY29wZSosIDg+IGFuY2VzdG9yU2NvcGVzT2ZUaGlzTm9kZTsKKworICAgIGZv
ciAoYXV0byogc2NvcGUgPSAmdHJlZVNjb3BlKCk7IHNjb3BlOyBzY29wZSA9IHNjb3BlLT5wYXJl
bnRUcmVlU2NvcGUoKSkKKyAgICAgICAgYW5jZXN0b3JTY29wZXNPZlRoaXNOb2RlLmFwcGVuZChz
Y29wZSk7CisKKyAgICBmb3IgKGF1dG8qIHRyZWVTY29wZVRoYXRDYW5BY2Nlc3NPdGhlck5vZGUg
PSAmb3RoZXJOb2RlLnRyZWVTY29wZSgpOyB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzT3RoZXJOb2Rl
OyB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzT3RoZXJOb2RlID0gdHJlZVNjb3BlVGhhdENhbkFjY2Vz
c090aGVyTm9kZS0+cGFyZW50VHJlZVNjb3BlKCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBzY29w
ZSA6IGFuY2VzdG9yU2NvcGVzT2ZUaGlzTm9kZSkgeworICAgICAgICAgICAgaWYgKHNjb3BlID09
IHRyZWVTY29wZVRoYXRDYW5BY2Nlc3NPdGhlck5vZGUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7IC8vIHRyZWVTY29wZVRoYXRDYW5BY2Nlc3NPdGhlck5vZGUgaXMgYSBzaGFkb3ctaW5j
bHVkaW5nIGluY2x1c2l2ZSBhbmNlc3RvciBvZiB0aGlzIG5vZGUuCisgICAgICAgIH0KKyAgICAg
ICAgYXV0byYgcm9vdCA9IHRyZWVTY29wZVRoYXRDYW5BY2Nlc3NPdGhlck5vZGUtPnJvb3ROb2Rl
KCk7CisgICAgICAgIGlmIChpczxTaGFkb3dSb290Pihyb290KSAmJiBkb3duY2FzdDxTaGFkb3dS
b290Pihyb290KS50eXBlKCkgIT0gU2hhZG93Um9vdDo6VHlwZTo6T3BlbikKKyAgICAgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQogSFRNTFNsb3RFbGVtZW50KiBOb2RlOjphc3NpZ25lZFNsb3QoKSBjb25zdAogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyMDAzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksNiArMjU5LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIE5vZGUqIGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKSBjb25zdDsK
ICAgICBTaGFkb3dSb290KiBjb250YWluaW5nU2hhZG93Um9vdCgpIGNvbnN0OwogICAgIFNoYWRv
d1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKKyAgICBib29sIGlzVW5jbG9zZWROb2RlKGNvbnN0
IE5vZGUmKSBjb25zdDsKIAogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIEhUTUxTbG90RWxl
bWVudCogYXNzaWduZWRTbG90KCkgY29uc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDAzNTkpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAxNi0wNS0wNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBl
dmVudC50YXJnZXQgc2hvdWxkbid0IGJlIHJldGFyZ2V0ZWQgYXMgdGhlIGV2ZW50IGJ1YmJsZXMg
aW50byBhIHNsb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NzM2OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAg
ICAgIFVwZGF0ZWQgdGVzdCBjYXNlcyB0byBleHBlY3QgdGhlIHRhcmdldCB0byBiZSBub3QgYWRq
dXN0ZWQgdG8gYSBzbG90IGVsZW1lbnQgd2hlbiB0aGUgZXZlbnQgcGF0aAorICAgICAgICBlbnRl
cnMgb25lIGFzIHRoaXMgZGlkbid0IG1hdGNoIHRoZSBzcGVjIG9yIHRoZSBiZWhhdmlvciBvZiBH
b29nbGUgQ2hyb21lIENhbmFyeS4gQm90aCBXZWJLaXQgYW5kCisgICAgICAgIENocm9tZSBwYXNz
ZXMgdGhlIHRlc3Qgd2l0aCB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIGZhc3Qvc2hhZG93LWRv
bS9ldmVudC1pbnNpZGUtc2xvdHRlZC1ub2RlLmh0bWw6CisKIDIwMTYtMDUtMDIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbmRleGluZyBDU1NTdHlsZURlY2xh
cmF0aW9uIG9iamVjdCB3aXRoIG91dC1vZi1yYW5nZSBpbmRleCBzaG91bGQgcmV0dXJuIHVuZGVm
aW5lZApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2V2ZW50LWluc2lkZS1zbG90
dGVkLW5vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
ZXZlbnQtaW5zaWRlLXNsb3R0ZWQtbm9kZS5odG1sCShyZXZpc2lvbiAyMDAzNTkpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNsb3R0ZWQtbm9kZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC04MCw5ICs4MCw5IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhsb2cubGVuZ3RoLCA2LCAnRXZlbnRQYXRoIG11c3QgY29udGFpbiBbdGFyZ2V0LCB0YXJn
ZXQgcGFyZW50LCBzbG90LCBzbG90IHBhcmVudCwgc2hhZG93IHJvb3QsIHNoYWRvdyBob3N0XScp
OwogICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzBdLCBbc2hhZG93LnRh
cmdldCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMF0gbXVzdCBiZSB0aGUgdGFyZ2V0Jyk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMV0sIFtzaGFkb3cudGFy
Z2V0UGFyZW50LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsxXSBtdXN0IGJlIHRoZSBwYXJl
bnQgb2YgdGhlIHRhcmdldCcpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzJdLCBbc2hhZG93LnNsb3QsIHNoYWRvdy5zbG90XSwgJ0V2ZW50UGF0aFsyXSBtdXN0IGJl
IHRoZSBzbG90Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbM10s
IFtzaGFkb3cuc2xvdFBhcmVudCwgc2hhZG93LnNsb3RdLCAnRXZlbnRQYXRoWzNdIG11c3QgYmUg
dGhlIHBhcmVudCBvZiB0aGUgc2xvdCcpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMobG9nWzRdLCBbc2hhZG93LnJvb3QsIHNoYWRvdy5zbG90XSwgJ0V2ZW50UGF0aFs0XSBt
dXN0IGJlIHRoZSBzaGFkb3cgcm9vdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMobG9nWzJdLCBbc2hhZG93LnNsb3QsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzJd
IG11c3QgYmUgdGhlIHNsb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGxvZ1szXSwgW3NoYWRvdy5zbG90UGFyZW50LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsz
XSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QnKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGxvZ1s0XSwgW3NoYWRvdy5yb290LCBzaGFkb3cudGFyZ2V0XSwgJ0V2
ZW50UGF0aFs0XSBtdXN0IGJlIHRoZSBzaGFkb3cgcm9vdCcpOwogICAgICAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMobG9nWzVdLCBbc2hhZG93Lmhvc3QsIHNoYWRvdy50YXJnZXRdLCAn
RXZlbnRQYXRoWzVdIG11c3QgYmUgdGhlIHNoYWRvdyBob3N0Jyk7CiAKICAgICAgICAgICAgIH0s
ICdGaXJpbmcgYW4gZXZlbnQgaW5zaWRlIGEgZ3JhbmQgY2hpbGQgb2YgYSBkZXRhY2hlZCAnICsg
bW9kZSArICcgbW9kZSBzaGFkb3cgaG9zdCcpOwpAQCAtMTAxLDkgKzEwMSw5IEBACiAgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhsb2cubGVuZ3RoLCA5LCAnRXZlbnRQYXRoIG11c3QgY29u
dGFpbiBbdGFyZ2V0LCB0YXJnZXQgcGFyZW50LCBzbG90LCBzbG90IHBhcmVudCwgc2hhZG93IHJv
b3QsIHNoYWRvdyBob3N0LCBib2R5LCBodG1sLCBkb2N1bWVudF0nKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1swXSwgW3NoYWRvdy50YXJnZXQsIHNoYWRvdy50YXJn
ZXRdLCAnRXZlbnRQYXRoWzBdIG11c3QgYmUgdGhlIHRhcmdldCcpOwogICAgICAgICAgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzFdLCBbc2hhZG93LnRhcmdldFBhcmVudCwgc2hhZG93
LnRhcmdldF0sICdFdmVudFBhdGhbMV0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSB0YXJnZXQn
KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1syXSwgW3NoYWRvdy5z
bG90LCBzaGFkb3cuc2xvdF0sICdFdmVudFBhdGhbMl0gbXVzdCBiZSB0aGUgc2xvdCcpOwotICAg
ICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzNdLCBbc2hhZG93LnNsb3RQYXJl
bnQsIHNoYWRvdy5zbG90XSwgJ0V2ZW50UGF0aFszXSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhl
IHNsb3QnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s0XSwgW3No
YWRvdy5yb290LCBzaGFkb3cuc2xvdF0sICdFdmVudFBhdGhbNF0gbXVzdCBiZSB0aGUgc2hhZG93
IHJvb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1syXSwgW3No
YWRvdy5zbG90LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsyXSBtdXN0IGJlIHRoZSBzbG90
Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbM10sIFtzaGFkb3cu
c2xvdFBhcmVudCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbM10gbXVzdCBiZSB0aGUgcGFy
ZW50IG9mIHRoZSBzbG90Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2dbNF0sIFtzaGFkb3cucm9vdCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbNF0gbXVzdCBi
ZSB0aGUgc2hhZG93IHJvb3QnKTsKICAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGxvZ1s1XSwgW3NoYWRvdy5ob3N0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFs1XSBtdXN0
IGJlIHRoZSBzaGFkb3cgaG9zdCcpOwogICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMobG9nWzZdLCBbZG9jdW1lbnQuYm9keSwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbNl0g
bXVzdCBiZSB0aGUgYm9keSBlbGVtZW50Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhsb2dbN10sIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHNoYWRvdy50YXJnZXRd
LCAnRXZlbnRQYXRoWzddIG11c3QgYmUgdGhlIGh0bWwgZWxlbWVudCcpOwpAQCAtMTc5LDE5ICsx
NzksMTkgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGxvZy5sZW5ndGgsIDE1LCAn
RXZlbnRQYXRoIG11c3QgY29udGFpbiAxNSB0YXJnZXRzJyk7CiAKICAgICAgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1swXSwgW3NoYWRvdy50YXJnZXQsIHNoYWRvdy50YXJnZXRd
LCAnRXZlbnRQYXRoWzBdIG11c3QgYmUgdGhlIHRhcmdldCcpOwotICAgICAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMobG9nWzFdLCBbc2hhZG93Lmxvd2VyU2xvdCwgc2hhZG93Lmxvd2Vy
U2xvdF0sICdFdmVudFBhdGhbMV0gbXVzdCBiZSB0aGUgc2xvdCBpbnNpZGUgdGhlIGxvd2VyIHNo
YWRvdyB0cmVlJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMl0s
IFtzaGFkb3cubG93ZXJTbG90LnBhcmVudE5vZGUsIHNoYWRvdy5sb3dlclNsb3RdLCAnRXZlbnRQ
YXRoWzJdIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUgc2xvdCBpbnNpZGUgdGhlIGxvd2VyIHNo
YWRvdyB0cmVlJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbM10s
IFtzaGFkb3cuaW5uZXJTbG90LCBzaGFkb3cuaW5uZXJTbG90XSwgJ0V2ZW50UGF0aFszXSBtdXN0
IGJlIHRoZSBzbG90IGluc2lkZSB0aGUgc2hhZG93IHRyZWUgaW5zaWRlIHRoZSBsb3dlciBzaGFk
b3cgdHJlZScpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzRdLCBb
c2hhZG93LmlubmVyU2xvdC5wYXJlbnROb2RlLCBzaGFkb3cuaW5uZXJTbG90XSwgJ0V2ZW50UGF0
aFs0XSBtdXN0IGJlIHRoZSBjaGlsZCBvZiB0aGUgaW5uZXIgc2hhZG93IHJvb3QnKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s1XSwgW3NoYWRvdy5pbm5lclNoYWRv
dywgc2hhZG93LmlubmVyU2xvdF0sICdFdmVudFBhdGhbNV0gbXVzdCBiZSB0aGUgaW5uZXIgc2hh
ZG93IHJvb3QnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s2XSwg
W3NoYWRvdy5pbm5lclNoYWRvdy5ob3N0LCBzaGFkb3cubG93ZXJTbG90XSwgJ0V2ZW50UGF0aFs2
XSBtdXN0IGJlIHRoZSBob3N0IG9mIHRoZSBpbm5lciBzaGFkb3cgdHJlZScpOwotICAgICAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzddLCBbc2hhZG93Lmxvd2VyU2hhZG93LmZp
cnN0Q2hpbGQsIHNoYWRvdy5sb3dlclNsb3RdLCAnRXZlbnRQYXRoWzddIG11c3QgYmUgdGhlIHBh
cmVudCBvZiB0aGUgaW5uZXIgc2hhZG93IGhvc3QnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGxvZ1s4XSwgW3NoYWRvdy5sb3dlclNoYWRvdywgc2hhZG93Lmxvd2VyU2xv
dF0sICdFdmVudFBhdGhbOF0gbXVzdCBiZSB0aGUgbG93ZXIgc2hhZG93IHJvb3QnKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxXSwgW3NoYWRvdy5sb3dlclNsb3Qs
IHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzFdIG11c3QgYmUgdGhlIHNsb3QgaW5zaWRlIHRo
ZSBsb3dlciBzaGFkb3cgdHJlZScpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMobG9nWzJdLCBbc2hhZG93Lmxvd2VyU2xvdC5wYXJlbnROb2RlLCBzaGFkb3cudGFyZ2V0XSwg
J0V2ZW50UGF0aFsyXSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QgaW5zaWRlIHRoZSBs
b3dlciBzaGFkb3cgdHJlZScpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzNdLCBbc2hhZG93LmlubmVyU2xvdCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbM10g
bXVzdCBiZSB0aGUgc2xvdCBpbnNpZGUgdGhlIHNoYWRvdyB0cmVlIGluc2lkZSB0aGUgbG93ZXIg
c2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s0
XSwgW3NoYWRvdy5pbm5lclNsb3QucGFyZW50Tm9kZSwgc2hhZG93LnRhcmdldF0sICdFdmVudFBh
dGhbNF0gbXVzdCBiZSB0aGUgY2hpbGQgb2YgdGhlIGlubmVyIHNoYWRvdyByb290Jyk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNV0sIFtzaGFkb3cuaW5uZXJTaGFk
b3csIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzVdIG11c3QgYmUgdGhlIGlubmVyIHNoYWRv
dyByb290Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNl0sIFtz
aGFkb3cuaW5uZXJTaGFkb3cuaG9zdCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbNl0gbXVz
dCBiZSB0aGUgaG9zdCBvZiB0aGUgaW5uZXIgc2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s3XSwgW3NoYWRvdy5sb3dlclNoYWRvdy5maXJzdENo
aWxkLCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFs3XSBtdXN0IGJlIHRoZSBwYXJlbnQgb2Yg
dGhlIGlubmVyIHNoYWRvdyBob3N0Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhsb2dbOF0sIFtzaGFkb3cubG93ZXJTaGFkb3csIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQ
YXRoWzhdIG11c3QgYmUgdGhlIGxvd2VyIHNoYWRvdyByb290Jyk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbOV0sIFtzaGFkb3cubG93ZXJTaGFkb3cuaG9zdCwgc2hh
ZG93LnRhcmdldF0sICdFdmVudFBhdGhbOV0gbXVzdCBiZSB0aGUgbG93ZXIgc2hhZG93IGhvc3Qn
KTsKICAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxMF0sIFtzaGFkb3cu
aG9zdC5maXJzdENoaWxkLCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsxMF0gbXVzdCBiZSB0
aGUgcGFyZW50IG9mIHRoZSBncmFuZCBwYXJlbnQgb2YgdGhlIHRhcmdldCcpOwotICAgICAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzExXSwgW3NoYWRvdy51cHBlclNsb3QsIHNo
YWRvdy51cHBlclNsb3RdLCAnRXZlbnRQYXRoWzExXSBtdXN0IGJlIHRoZSBzbG90IGluc2lkZSB0
aGUgdXBwZXIgc2hhZG93IHRyZWUnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGxvZ1sxMl0sIFtzaGFkb3cudXBwZXJTbG90LnBhcmVudE5vZGUsIHNoYWRvdy51cHBlclNs
b3RdLCAnRXZlbnRQYXRoWzEyXSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QgaW5zaWRl
IHRoZSB1cHBlciBzaGFkb3cgdHJlZScpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMobG9nWzEzXSwgW3NoYWRvdy51cHBlclNoYWRvdywgc2hhZG93LnVwcGVyU2xvdF0sICdF
dmVudFBhdGhbMTNdIG11c3QgYmUgdGhlIHVwcGVyIHNoYWRvdyByb290Jyk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMTFdLCBbc2hhZG93LnVwcGVyU2xvdCwgc2hh
ZG93LnRhcmdldF0sICdFdmVudFBhdGhbMTFdIG11c3QgYmUgdGhlIHNsb3QgaW5zaWRlIHRoZSB1
cHBlciBzaGFkb3cgdHJlZScpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzEyXSwgW3NoYWRvdy51cHBlclNsb3QucGFyZW50Tm9kZSwgc2hhZG93LnRhcmdldF0sICdF
dmVudFBhdGhbMTJdIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUgc2xvdCBpbnNpZGUgdGhlIHVw
cGVyIHNoYWRvdyB0cmVlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2dbMTNdLCBbc2hhZG93LnVwcGVyU2hhZG93LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsx
M10gbXVzdCBiZSB0aGUgdXBwZXIgc2hhZG93IHJvb3QnKTsKICAgICAgICAgICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGxvZ1sxNF0sIFtzaGFkb3cuaG9zdCwgc2hhZG93LnRhcmdldF0sICdF
dmVudFBhdGhbMTRdIG11c3QgYmUgdGhlIGhvc3QnKTsKIAogICAgICAgICAgICAgfSwgJ0Zpcmlu
ZyBhbiBldmVudCBvbiBhIG5vZGUgd2l0aCB0d28gYW5jZXN0b3JzIHdpdGggYSBkZXRhY2hlZCAn
ICsgb3V0ZXJVcHBlck1vZGUgKyAnIGFuZCAnICsgb3V0ZXJMb3dlck1vZGUKQEAgLTIxNSw3ICsy
MTUsNyBAQAogICAgICAgICAgICAgKyBhICAgICAgICAgICAgICAgKyBlbSAoNCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKyBpbm5lci1ob3N0ICgzKSAtLSAoaW5uZXJTaGFkb3c7
IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzcGFuICAgICAgICAgICAg
KyBpICgxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzbG90ICAgICAg
ICAgICAgKyBzbG90IChpbm5lclNsb3Q7IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICArIHNsb3QgICAgICAgICAgICArIHNsb3QgKGlubmVyU2xvdCwgdGFyZ2V0OyAwKQog
ICAgICAgICAqLwogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RFdmVudEluc2lkZU5lc3RlZFNoYWRv
d3NVbmRlckFub3RoZXJTaGFkb3cob3V0ZXJVcHBlck1vZGUsIG91dGVyTG93ZXJNb2RlLCBpbm5l
ck1vZGUpIHsKQEAgLTIzNiw5ICsyMzYsOSBAQAogICAgICAgICAgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMobG9nWzVdLCBbc2hhZG93Lmxvd2VyU2hhZG93LCBzaGFkb3cuaW5uZXJTaGFkb3cu
aG9zdF0sICdFdmVudFBhdGhbNV0gbXVzdCBiZSB0aGUgbG93ZXIgKGJ1dCBvdXRlcikgc2hhZG93
IHJvb3QnKTsKICAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s2XSwgW3No
YWRvdy5sb3dlclNoYWRvdy5ob3N0LCBzaGFkb3cubG93ZXJTaGFkb3cuaG9zdF0sICdFdmVudFBh
dGhbNl0gbXVzdCBiZSB0aGUgbG93ZXIgKGJ1dCBvdXRlcikgc2hhZG93IHJvb3QnKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s3XSwgW3NoYWRvdy5ob3N0LmZpcnN0
Q2hpbGQsIHNoYWRvdy5sb3dlclNoYWRvdy5ob3N0XSwgJ0V2ZW50UGF0aFs3XSBtdXN0IGJlIHRo
ZSBzbG90IGluc2lkZSB0aGUgdXBwZXIgc2hhZG93IHRyZWUnKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s4XSwgW3NoYWRvdy51cHBlclNsb3QsIHNoYWRvdy51cHBl
clNsb3RdLCAnRXZlbnRQYXRoWzhdIG11c3QgYmUgdGhlIHNsb3QgaW5zaWRlIHRoZSB1cHBlciBz
aGFkb3cgdHJlZScpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzld
LCBbc2hhZG93LnVwcGVyU2xvdC5wYXJlbnROb2RlLCBzaGFkb3cudXBwZXJTbG90XSwgJ0V2ZW50
UGF0aFs5XSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QgaW5zaWRlIHRoZSB1cHBlciBz
aGFkb3cgdHJlZScpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzEw
XSwgW3NoYWRvdy51cHBlclNoYWRvdywgc2hhZG93LnVwcGVyU2xvdF0sICdFdmVudFBhdGhbMTBd
IG11c3QgYmUgdGhlIHVwcGVyIHNoYWRvdyByb290Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhsb2dbOF0sIFtzaGFkb3cudXBwZXJTbG90LCBzaGFkb3cubG93ZXJTaGFk
b3cuaG9zdF0sICdFdmVudFBhdGhbOF0gbXVzdCBiZSB0aGUgc2xvdCBpbnNpZGUgdGhlIHVwcGVy
IHNoYWRvdyB0cmVlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2db
OV0sIFtzaGFkb3cudXBwZXJTbG90LnBhcmVudE5vZGUsIHNoYWRvdy5sb3dlclNoYWRvdy5ob3N0
XSwgJ0V2ZW50UGF0aFs5XSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QgaW5zaWRlIHRo
ZSB1cHBlciBzaGFkb3cgdHJlZScpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMobG9nWzEwXSwgW3NoYWRvdy51cHBlclNoYWRvdywgc2hhZG93Lmxvd2VyU2hhZG93Lmhvc3Rd
LCAnRXZlbnRQYXRoWzEwXSBtdXN0IGJlIHRoZSB1cHBlciBzaGFkb3cgcm9vdCcpOwogICAgICAg
ICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzExXSwgW3NoYWRvdy51cHBlclNoYWRv
dy5ob3N0LCBzaGFkb3cubG93ZXJTaGFkb3cuaG9zdF0sICdFdmVudFBhdGhbMTFdIG11c3QgYmUg
dGhlIGhvc3QnKTsKIAogICAgICAgICAgICAgfSwgJ0ZpcmluZyBhbiBldmVudCBvbiBhIG5vZGUg
d2l0aCB0d28gYW5jZXN0b3JzIHdpdGggYSBkZXRhY2hlZCAnICsgb3V0ZXJVcHBlck1vZGUgKyAn
IGFuZCAnICsgb3V0ZXJMb3dlck1vZGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278172</attachid>
            <date>2016-05-05 10:05:47 -0700</date>
            <delta_ts>2016-05-05 11:32:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-157369-20160505100628.patch</filename>
            <type>text/plain</type>
            <size>29266</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDQ0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTA1LTA0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGV2ZW50LnRhcmdldCBzaG91bGRu
J3QgYmUgcmV0YXJnZXRlZCBhcyB0aGUgZXZlbnQgYnViYmxlcyBpbnRvIGEgc2xvdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MzY5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgV2hlbiBhbiBldmVudCBi
dWJibGVzIHVwIGZyb20gYW4gYXNzaWduZWQgbm9kZSB0byBpdHMgYXNzaWduZWQgc2xvdCwgd2Ug
c2hvdWxkbid0IGJlIGFkanVzdGluZworICAgICAgICBldmVudC50YXJnZXQgdG8gcG9pbnQgdG8g
dGhlIHNsb3QuIFNpbmNlIGEgc2hhZG93IHRyZWUgc2hvdWxkIGhhdmUgYWNjZXNzIHRvIG5vZGVz
IG91dHNpZGUKKyAgICAgICAgdGhlIHNoYWRvdyB0cmVlLCBldmVudC50YXJnZXQgaXMgYWNjZXNz
aWJsZSBpbnNpZGUgdGhlIHNoYWRvdyB0cmVlIG9mIHN1Y2ggYSBzbG90LgorCisgICAgICAgIE5l
dyBiZWhhdmlvciBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBHb29nbGUgQ2hyb21lIENhbmFyeSBh
cyB3ZWxsIGFzIHRoZSBzaGFkb3cgRE9NIHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHA6Ly93
M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cvI2Rmbi1yZXRhcmdldGluZy1h
bGdvcml0aG0KKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNs
b3R0ZWQtbm9kZS5odG1sCisKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnQ6OmRlZXBQYXRoKToKKyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudENvbnRleHQ6OmlzVW5yZWFjaGFibGVOb2RlKTogVXNlIE5v
ZGU6OmlzVW5jbG9zZWROb2RlIGluc3RlYWQgb2YgaXNSZWFjaGFibGUuCisgICAgICAgIChXZWJD
b3JlOjpFdmVudENvbnRleHQ6OmlzUmVhY2hhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
RXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKTog
RG9uJ3Qgc2V0IHRoZSB0YXJnZXQgdG8gdGhlIHNsb3Qgd2hlbiBlbnRlcmluZyBhIHNsb3QuIEFs
c28gbW92ZWQKKyAgICAgICAgdGhlIGNvZGUgdG8gYWRqdXN0IHRoZSB0YXJnZXQgYXMgd2UgZXhp
dCBhIHNoYWRvdyB0cmVlIHRvIHRoZSBlbmQgb2YgdGhlIG91dGVyIGxvb3AgZm9yIGNsYXJpdHku
CisgICAgICAgIChXZWJDb3JlOjppc1VuY2xvc2VkTm9kZU9mKTogRGVsZXRlZC4gUmVuYW1lZCB0
byBOb2RlOjppc1VuY2xvc2VkTm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6c2V0
UmVsYXRlZFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmNvbXB1dGVQYXRo
VW5jbG9zZWRUb1RhcmdldCk6IFJlbmFtZWQgZnJvbSBjb21wdXRlUGF0aERpc2Nsb3NlZFRvVGFy
Z2V0LgorICAgICAgICAoV2ViQ29yZTo6bW92ZU91dE9mQWxsU2hhZG93Um9vdHMpOiBFeHRyYWN0
ZWQgZnJvbSBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OlJlbGF0ZWROb2RlUmV0YXJnZXRlci4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6UmVsYXRlZE5vZGVSZXRhcmdl
dGVyKTogRml4ZWQgYSBidWcgdGhhdCB3ZSB3ZXJlIGV4aXRpbmcgZWFybHkKKyAgICAgICAgd2l0
aG91dCBzZXR0aW5nIG1faGFzRGlmZmVyZW50VHJlZVJvb3QgdHJ1ZSB3aGVuIHRhcmdldCBhbmQg
cmVsYXRlZE5vZGUgYXJlIGRpc2Nvbm5lY3RlZCBmcm9tCisgICAgICAgIGEgZG9jdW1lbnQuCisg
ICAgICAgIChXZWJDb3JlOjpSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OmN1cnJlbnROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6Y2hlY2tDb25zaXN0ZW5jeSk6
IFVwZGF0ZWQgdG8gbWF0Y2ggdGhlIHNwZWMgd2l0aCBvbmUgZXhjZXB0aW9uLgorICAgICAgICBX
ZSBkb24ndCB1c2UgbnVsbCBhcyB0aGUgYWRqdXN0ZWQgcmVsYXRlZCB0YXJnZXQgd2hlbiB0aGUg
KG9yaWdpbmFsKSByZWxhdGVkIHRhcmdldCBhbmQgdGhlIHRhcmdldAorICAgICAgICBhcmUgaW4g
dHdvIGRpc3RpbmN0IGRpc2Nvbm5lY3RlZCB0cmVlcyBzaW5jZSBzdWNoIGEgYmVoYXZpb3IgaXMg
bm90IFdlYiBjb21wYXRpYmxlLiBUaGlzIHNwZWMgYnVnIGlzCisgICAgICAgIHRyYWNrZWQgYnkg
aHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJjb21wb25lbnRzL2lzc3Vlcy80OTQKKyAgICAgICAg
KiBkb20vRXZlbnRQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmV2ZW50VGFy
Z2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKTogUmV0dXJucyBOb2RlKiBpbnN0ZWFkIG9mIEV2ZW50
VGFyZ2V0KiBzaW5jZQorICAgICAgICB3ZSBuZWVkIGEgTm9kZSBpbiBSZWxhdGVkTm9kZVJldGFy
Z2V0ZXI6OmNoZWNrQ29uc2lzdGVuY3kuCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6aXNVbmNsb3NlZE5vZGUpOiBNb3ZlZCBmcm9tIFJlbGF0ZWROb2Rl
UmV0YXJnZXRlci5jcHAKKyAgICAgICAgKiBkb20vTm9kZS5oOgorCiAyMDE2LTA1LTAzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdGFydCBvbiBkaWN0aW9uYXJ5
IHN1cHBvcnQgZm9yIElETCwgZ2V0dGluZyBlbm91Z2ggdG8gd29yayBmb3Igb25lIGRpY3Rpb25h
cnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNpb24gMjAwMzU5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSw3IEBAIFZl
Y3RvcjxFdmVudFRhcmdldCo+IEV2ZW50OjpkZWVwUGF0aCgpIGMKIHsKICAgICBpZiAoIW1fZXZl
bnRQYXRoKQogICAgICAgICByZXR1cm4gVmVjdG9yPEV2ZW50VGFyZ2V0Kj4oKTsKLSAgICByZXR1
cm4gbV9ldmVudFBhdGgtPmNvbXB1dGVQYXRoRGlzY2xvc2VkVG9UYXJnZXQoKm1fdGFyZ2V0KTsK
KyAgICByZXR1cm4gbV9ldmVudFBhdGgtPmNvbXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldCgqbV9j
dXJyZW50VGFyZ2V0KTsKIH0KIAogdm9pZCBFdmVudDo6cmVjZWl2ZWRUYXJnZXQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaAkocmV2aXNpb24gMjAwMzU5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw2IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBpc1Vu
cmVhY2hhYmxlTm9kZShFdmVudFRhcmdldCopOwotICAgIGJvb2wgaXNSZWFjaGFibGUoTm9kZSop
IGNvbnN0OwogI2VuZGlmCiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBSZWZQdHI8RXZl
bnRUYXJnZXQ+IG1fY3VycmVudFRhcmdldDsKQEAgLTEzNCwxOCArMTMzLDcgQEAgaW5saW5lIFRv
dWNoRXZlbnRDb250ZXh0KiB0b1RvdWNoRXZlbnRDbwogaW5saW5lIGJvb2wgRXZlbnRDb250ZXh0
Ojppc1VucmVhY2hhYmxlTm9kZShFdmVudFRhcmdldCogdGFyZ2V0KQogewogICAgIC8vIEZJWE1F
OiBDaGVja3MgYWxzbyBmb3IgU1ZHIGVsZW1lbnRzLgotICAgIHJldHVybiB0YXJnZXQgJiYgdGFy
Z2V0LT50b05vZGUoKSAmJiAhdGFyZ2V0LT50b05vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgIWlz
UmVhY2hhYmxlKHRhcmdldC0+dG9Ob2RlKCkpOwotfQotCi1pbmxpbmUgYm9vbCBFdmVudENvbnRl
eHQ6OmlzUmVhY2hhYmxlKE5vZGUqIHRhcmdldCkgY29uc3QKLXsKLSAgICBBU1NFUlQodGFyZ2V0
KTsKLSAgICBUcmVlU2NvcGUmIHRhcmdldFNjb3BlID0gdGFyZ2V0LT50cmVlU2NvcGUoKTsKLSAg
ICBmb3IgKFRyZWVTY29wZSogc2NvcGUgPSAmbV9ub2RlLT50cmVlU2NvcGUoKTsgc2NvcGU7IHNj
b3BlID0gc2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKSB7Ci0gICAgICAgIGlmIChzY29wZSA9PSAm
dGFyZ2V0U2NvcGUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiB0YXJnZXQgJiYgdGFyZ2V0LT50b05vZGUoKSAmJiAhdGFyZ2V0
LT50b05vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgIW1fbm9kZS0+aXNVbmNsb3NlZE5vZGUoKnRh
cmdldC0+dG9Ob2RlKCkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGgu
Y3BwCShyZXZpc2lvbiAyMDAzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsOSBAQCBzdGF0aWMgTm9kZSogbm9kZU9ySG9z
dElmUHNldWRvRWxlbWVudChOCiAKIGNsYXNzIFJlbGF0ZWROb2RlUmV0YXJnZXRlciB7CiBwdWJs
aWM6Ci0gICAgUmVsYXRlZE5vZGVSZXRhcmdldGVyKE5vZGUmIHJlbGF0ZWROb2RlLCBUcmVlU2Nv
cGUmIHRhcmdldFRyZWVTY29wZSk7CisgICAgUmVsYXRlZE5vZGVSZXRhcmdldGVyKE5vZGUmIHJl
bGF0ZWROb2RlLCBOb2RlJiB0YXJnZXQpOwogCi0gICAgTm9kZSogY3VycmVudE5vZGUoVHJlZVNj
b3BlJiBjdXJyZW50VHJlZVNjb3BlKTsKKyAgICBOb2RlKiBjdXJyZW50Tm9kZShOb2RlJiBjdXJy
ZW50VHJlZVNjb3BlKTsKICAgICB2b2lkIG1vdmVUb05ld1RyZWVTY29wZShUcmVlU2NvcGUqIHBy
ZXZpb3VzVHJlZVNjb3BlLCBUcmVlU2NvcGUmIG5ld1RyZWVTY29wZSk7CiAKIHByaXZhdGU6CkBA
IC03MSw5ICs3MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0VHJlZVNjb3BlcygpOwog
CiAjaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFRyZWVTY29w
ZSYpIHsgfQorICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShOb2RlJikgeyB9CiAjZWxzZQotICAg
IHZvaWQgY2hlY2tDb25zaXN0ZW5jeShUcmVlU2NvcGUmIGN1cnJlbnRUcmVlU2NvcGUpOworICAg
IHZvaWQgY2hlY2tDb25zaXN0ZW5jeShOb2RlJiBjdXJyZW50VGFyZ2V0KTsKICNlbmRpZgogCiAg
ICAgTm9kZSYgbV9yZWxhdGVkTm9kZTsKQEAgLTg2LDIyICs4NiwxNCBAQCBwcml2YXRlOgogRXZl
bnRQYXRoOjpFdmVudFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKICAg
ICA6IG1fZXZlbnQoZXZlbnQpCiB7Ci0jaWYgRU5BQkxFKFNIQURPV19ET00pIHx8IEVOQUJMRShE
RVRBSUxTX0VMRU1FTlQpCi0gICAgVmVjdG9yPEV2ZW50VGFyZ2V0KiwgMTY+IHRhcmdldFN0YWNr
OwotI2VuZGlmCi0KICAgICBib29sIGlzTW91c2VPckZvY3VzRXZlbnQgPSBldmVudC5pc01vdXNl
RXZlbnQoKSB8fCBldmVudC5pc0ZvY3VzRXZlbnQoKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgIGJvb2wgaXNUb3VjaEV2ZW50ID0gZXZlbnQuaXNUb3VjaEV2ZW50KCk7CiAjZW5kaWYK
LSAgICBFdmVudFRhcmdldCogdGFyZ2V0ID0gbnVsbHB0cjsKLQogICAgIE5vZGUqIG5vZGUgPSBu
b2RlT3JIb3N0SWZQc2V1ZG9FbGVtZW50KCZvcmlnaW5hbFRhcmdldCk7CisgICAgTm9kZSogdGFy
Z2V0ID0gZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUpOwogICAgIHdoaWxl
IChub2RlKSB7Ci0gICAgICAgIGlmICghdGFyZ2V0KQotICAgICAgICAgICAgdGFyZ2V0ID0gZXZl
bnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUpOwotICAgICAgICBDb250YWluZXJO
b2RlKiBwYXJlbnQ7Ci0gICAgICAgIGZvciAoOyBub2RlOyBub2RlID0gcGFyZW50KSB7CisgICAg
ICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgICAgICBFdmVudFRhcmdldCogY3VycmVudFRhcmdl
dCA9IGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKTsKIAogICAgICAgICAg
ICAgaWYgKGlzTW91c2VPckZvY3VzRXZlbnQpCkBAIC0xMTYsOCArMTA4LDcgQEAgRXZlbnRQYXRo
OjpFdmVudFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZQogICAgICAgICAgICAgaWYgKGlzPFNoYWRv
d1Jvb3Q+KCpub2RlKSkKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgcGFy
ZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotCisgICAgICAgICAgICBDb250YWluZXJOb2RlKiBw
YXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgICAgICBpZiAoIXBhcmVudCkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEyNSwzMCArMTE2LDIxIEBAIEV2ZW50UGF0aDo6
RXZlbnRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2UKICAgICAgICAgICAgIGlmIChTaGFkb3dSb290
KiBzaGFkb3dSb290T2ZQYXJlbnQgPSBwYXJlbnQtPnNoYWRvd1Jvb3QoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBhc3NpZ25lZFNsb3QgPSBzaGFkb3dSb290T2ZQYXJlbnQtPmZpbmRB
c3NpZ25lZFNsb3QoKm5vZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIG5vZGUgaXMgYXNz
aWduZWQgdG8gYSBzbG90LiBDb250aW51ZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgYXQgdGhpcyBz
bG90LgotICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGFjay5hcHBlbmQodGFyZ2V0KTsKICAg
ICAgICAgICAgICAgICAgICAgcGFyZW50ID0gYXNzaWduZWRTbG90OwotICAgICAgICAgICAgICAg
ICAgICB0YXJnZXQgPSBhc3NpZ25lZFNsb3Q7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogI2VuZGlmCiAgICAgICAgICAgICBub2RlID0gcGFyZW50OwogICAgICAgICB9CiAKKyAg
ICAgICAgYm9vbCBleGl0aW5nU2hhZG93VHJlZU9mVGFyZ2V0ID0gJnRhcmdldC0+dHJlZVNjb3Bl
KCkgPT0gJm5vZGUtPnRyZWVTY29wZSgpOwogICAgICAgICBTaGFkb3dSb290JiBzaGFkb3dSb290
ID0gZG93bmNhc3Q8U2hhZG93Um9vdD4oKm5vZGUpOwotICAgICAgICAvLyBBdCBhIHNoYWRvdyBy
b290LiBDb250aW51ZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgYXQgdGhlIHNoYWRvdyBob3N0Lgot
I2lmIEVOQUJMRShTSEFET1dfRE9NKSB8fCBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQotICAgICAg
ICBpZiAoIXRhcmdldFN0YWNrLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gTW92ZSB0YXJn
ZXQgYmFjayB0byBhIGRlc2NlbmRhbnQgb2YgdGhlIHNoYWRvdyBob3N0IGlmIHRoZSBldmVudCBk
aWQgbm90IG9yaWdpbmF0ZSBpbiB0aGlzIHNoYWRvdyB0cmVlIG9yIGl0cyBpbm5lciBzaGFkb3cg
dHJlZXMuCi0gICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXRTdGFjay5sYXN0KCk7Ci0gICAgICAg
ICAgICB0YXJnZXRTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICBBU1NFUlQoc2hhZG93
Um9vdC5ob3N0KCktPmNvbnRhaW5zKHRhcmdldC0+dG9Ob2RlKCkpKTsKLSAgICAgICAgfSBlbHNl
Ci0jZW5kaWYKLSAgICAgICAgICAgIHRhcmdldCA9IG51bGxwdHI7Ci0KICAgICAgICAgaWYgKCFz
aG91bGRFdmVudENyb3NzU2hhZG93Qm91bmRhcnkoZXZlbnQsIHNoYWRvd1Jvb3QsIG9yaWdpbmFs
VGFyZ2V0KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbm9kZSA9IHNoYWRvd1Jvb3Qu
aG9zdCgpOworICAgICAgICBpZiAoZXhpdGluZ1NoYWRvd1RyZWVPZlRhcmdldCkKKyAgICAgICAg
ICAgIHRhcmdldCA9IGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKTsKKwog
ICAgIH0KIH0KIApAQCAtMTU4LDcgKzE0MCw3IEBAIHZvaWQgRXZlbnRQYXRoOjpzZXRSZWxhdGVk
VGFyZ2V0KE5vZGUmIG8KICAgICBpZiAoIXJlbGF0ZWROb2RlIHx8IG1fcGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbGF0ZWROb2RlUmV0YXJnZXRlciByZXRhcmdldGVy
KCpyZWxhdGVkTm9kZSwgZG93bmNhc3Q8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0PigqbV9wYXRo
WzBdKS5ub2RlKCktPnRyZWVTY29wZSgpKTsKKyAgICBSZWxhdGVkTm9kZVJldGFyZ2V0ZXIgcmV0
YXJnZXRlcigqcmVsYXRlZE5vZGUsICptX3BhdGhbMF0tPm5vZGUoKSk7CiAKICAgICBib29sIG9y
aWdpbklzUmVsYXRlZFRhcmdldCA9ICZvcmlnaW4gPT0gcmVsYXRlZE5vZGU7CiAgICAgYm9vbCBy
ZWxhdGVkVGFyZ2V0U2NvcGVkID0gbV9ldmVudC5yZWxhdGVkVGFyZ2V0U2NvcGVkKCk7CkBAIC0x
NjgsMTEgKzE1MCwxMiBAQCB2b2lkIEV2ZW50UGF0aDo6c2V0UmVsYXRlZFRhcmdldChOb2RlJiBv
CiAgICAgZm9yICh1bnNpZ25lZCBjb250ZXh0SW5kZXggPSAwOyBjb250ZXh0SW5kZXggPCBvcmln
aW5hbEV2ZW50UGF0aFNpemU7IGNvbnRleHRJbmRleCsrKSB7CiAgICAgICAgIGF1dG8mIGNvbnRl
eHQgPSBkb3duY2FzdDxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KCptX3BhdGhbY29udGV4dElu
ZGV4XSk7CiAKLSAgICAgICAgVHJlZVNjb3BlJiBjdXJyZW50VHJlZVNjb3BlID0gY29udGV4dC5u
b2RlKCktPnRyZWVTY29wZSgpOworICAgICAgICBOb2RlJiBjdXJyZW50VGFyZ2V0ID0gKmNvbnRl
eHQubm9kZSgpOworICAgICAgICBUcmVlU2NvcGUmIGN1cnJlbnRUcmVlU2NvcGUgPSBjdXJyZW50
VGFyZ2V0LnRyZWVTY29wZSgpOwogICAgICAgICBpZiAoVU5MSUtFTFkocHJldmlvdXNUcmVlU2Nv
cGUgJiYgJmN1cnJlbnRUcmVlU2NvcGUgIT0gcHJldmlvdXNUcmVlU2NvcGUpKQogICAgICAgICAg
ICAgcmV0YXJnZXRlci5tb3ZlVG9OZXdUcmVlU2NvcGUocHJldmlvdXNUcmVlU2NvcGUsIGN1cnJl
bnRUcmVlU2NvcGUpOwogCi0gICAgICAgIE5vZGUqIGN1cnJlbnRSZWxhdGVkTm9kZSA9IHJldGFy
Z2V0ZXIuY3VycmVudE5vZGUoY3VycmVudFRyZWVTY29wZSk7CisgICAgICAgIE5vZGUqIGN1cnJl
bnRSZWxhdGVkTm9kZSA9IHJldGFyZ2V0ZXIuY3VycmVudE5vZGUoY3VycmVudFRhcmdldCk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWShyZWxhdGVkVGFyZ2V0U2NvcGVkICYmICFvcmlnaW5Jc1JlbGF0
ZWRUYXJnZXQgJiYgY29udGV4dC50YXJnZXQoKSA9PSBjdXJyZW50UmVsYXRlZE5vZGUpKSB7CiAg
ICAgICAgICAgICBtX3BhdGguc2hyaW5rKGNvbnRleHRJbmRleCk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTIwMCwxNCArMTgzLDE1IEBAIHZvaWQgRXZlbnRQYXRoOjpyZXRhcmdldFRvdWNoKFRv
dWNoRXZlbnQKICAgICBpZiAoIXRhcmdldE5vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
bGF0ZWROb2RlUmV0YXJnZXRlciByZXRhcmdldGVyKCp0YXJnZXROb2RlLCBtX3BhdGhbMF0tPm5v
ZGUoKS0+dHJlZVNjb3BlKCkpOworICAgIFJlbGF0ZWROb2RlUmV0YXJnZXRlciByZXRhcmdldGVy
KCp0YXJnZXROb2RlLCAqbV9wYXRoWzBdLT5ub2RlKCkpOwogICAgIFRyZWVTY29wZSogcHJldmlv
dXNUcmVlU2NvcGUgPSBudWxscHRyOwogICAgIGZvciAoYXV0byYgY29udGV4dCA6IG1fcGF0aCkg
ewotICAgICAgICBUcmVlU2NvcGUmIGN1cnJlbnRUcmVlU2NvcGUgPSBjb250ZXh0LT5ub2RlKCkt
PnRyZWVTY29wZSgpOworICAgICAgICBOb2RlJiBjdXJyZW50VGFyZ2V0ID0gKmNvbnRleHQtPm5v
ZGUoKTsKKyAgICAgICAgVHJlZVNjb3BlJiBjdXJyZW50VHJlZVNjb3BlID0gY3VycmVudFRhcmdl
dC50cmVlU2NvcGUoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHByZXZpb3VzVHJlZVNjb3BlICYm
ICZjdXJyZW50VHJlZVNjb3BlICE9IHByZXZpb3VzVHJlZVNjb3BlKSkKICAgICAgICAgICAgIHJl
dGFyZ2V0ZXIubW92ZVRvTmV3VHJlZVNjb3BlKHByZXZpb3VzVHJlZVNjb3BlLCBjdXJyZW50VHJl
ZVNjb3BlKTsKIAotICAgICAgICBOb2RlKiBjdXJyZW50UmVsYXRlZE5vZGUgPSByZXRhcmdldGVy
LmN1cnJlbnROb2RlKGN1cnJlbnRUcmVlU2NvcGUpOworICAgICAgICBOb2RlKiBjdXJyZW50UmVs
YXRlZE5vZGUgPSByZXRhcmdldGVyLmN1cnJlbnROb2RlKGN1cnJlbnRUYXJnZXQpOwogICAgICAg
ICBkb3duY2FzdDxUb3VjaEV2ZW50Q29udGV4dD4oKmNvbnRleHQpLnRvdWNoTGlzdCh0b3VjaExp
c3RUeXBlKS0+YXBwZW5kKHRvdWNoLmNsb25lV2l0aE5ld1RhcmdldChjdXJyZW50UmVsYXRlZE5v
ZGUpKTsKIAogICAgICAgICBwcmV2aW91c1RyZWVTY29wZSA9ICZjdXJyZW50VHJlZVNjb3BlOwpA
QCAtMjQzLDI5ICsyMjcsNyBAQCBib29sIEV2ZW50UGF0aDo6aGFzRXZlbnRMaXN0ZW5lcnMoY29u
c3QgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0vLyBodHRwOi8vdzNjLmdpdGh1Yi5pby93ZWJj
b21wb25lbnRzL3NwZWMvc2hhZG93LyNkZm4tdW5jbG9zZWQtbm9kZQotc3RhdGljIGJvb2wgaXNV
bmNsb3NlZE5vZGVPZihjb25zdCBOb2RlJiBhLCBjb25zdCBOb2RlJiBiKQotewotICAgIC8vIFVz
ZSBWZWN0b3IgaW5zdGVhZCBvZiBIYXNoU2V0IHNpbmNlIHdlIGV4cGVjdCB0aGUgbnVtYmVyIG9m
IGFuY2VzdG9yIHRyZWUgc2NvcGVzIHRvIGJlIHNtYWxsLgotICAgIFZlY3RvcjxUcmVlU2NvcGUq
LCA4PiB0cmVlU2NvcGVzT3BlblRvQjsKLQotICAgIGZvciAoYXV0byogc2NvcGUgPSAmYi50cmVl
U2NvcGUoKTsgc2NvcGU7IHNjb3BlID0gc2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKQotICAgICAg
ICB0cmVlU2NvcGVzT3BlblRvQi5hcHBlbmQoc2NvcGUpOwotCi0gICAgZm9yIChhdXRvKiB0cmVl
U2NvcGVUaGF0Q2FuQWNjZXNzQSA9ICZhLnRyZWVTY29wZSgpOyB0cmVlU2NvcGVUaGF0Q2FuQWNj
ZXNzQTsgdHJlZVNjb3BlVGhhdENhbkFjY2Vzc0EgPSB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzQS0+
cGFyZW50VHJlZVNjb3BlKCkpIHsKLSAgICAgICAgZm9yIChhdXRvKiBvcGVuVG9CIDogdHJlZVNj
b3Blc09wZW5Ub0IpIHsKLSAgICAgICAgICAgIGlmIChvcGVuVG9CID09IHRyZWVTY29wZVRoYXRD
YW5BY2Nlc3NBKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAg
ICAgIGF1dG8mIHJvb3QgPSB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzQS0+cm9vdE5vZGUoKTsKLSAg
ICAgICAgaWYgKGlzPFNoYWRvd1Jvb3Q+KHJvb3QpICYmIGRvd25jYXN0PFNoYWRvd1Jvb3Q+KHJv
b3QpLnR5cGUoKSAhPSBTaGFkb3dSb290OjpUeXBlOjpPcGVuKQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1WZWN0b3I8RXZlbnRUYXJnZXQqPiBF
dmVudFBhdGg6OmNvbXB1dGVQYXRoRGlzY2xvc2VkVG9UYXJnZXQoY29uc3QgRXZlbnRUYXJnZXQm
IHRhcmdldCkgY29uc3QKK1ZlY3RvcjxFdmVudFRhcmdldCo+IEV2ZW50UGF0aDo6Y29tcHV0ZVBh
dGhVbmNsb3NlZFRvVGFyZ2V0KGNvbnN0IEV2ZW50VGFyZ2V0JiB0YXJnZXQpIGNvbnN0CiB7CiAg
ICAgVmVjdG9yPEV2ZW50VGFyZ2V0Kj4gcGF0aDsKICAgICBjb25zdCBOb2RlKiB0YXJnZXROb2Rl
ID0gY29uc3RfY2FzdDxFdmVudFRhcmdldCY+KHRhcmdldCkudG9Ob2RlKCk7CkBAIC0yNzQsNyAr
MjM2LDcgQEAgVmVjdG9yPEV2ZW50VGFyZ2V0Kj4gRXZlbnRQYXRoOjpjb21wdXRlUAogCiAgICAg
Zm9yIChhdXRvJiBjb250ZXh0IDogbV9wYXRoKSB7CiAgICAgICAgIGlmIChOb2RlKiBub2RlSW5Q
YXRoID0gY29udGV4dC0+Y3VycmVudFRhcmdldCgpLT50b05vZGUoKSkgewotICAgICAgICAgICAg
aWYgKGlzVW5jbG9zZWROb2RlT2YoKm5vZGVJblBhdGgsICp0YXJnZXROb2RlKSkKKyAgICAgICAg
ICAgIGlmICh0YXJnZXROb2RlLT5pc1VuY2xvc2VkTm9kZSgqbm9kZUluUGF0aCkpCiAgICAgICAg
ICAgICAgICAgcGF0aC5hcHBlbmQoY29udGV4dC0+Y3VycmVudFRhcmdldCgpKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTI4MiwxMiArMjQ0LDIxIEBAIFZlY3RvcjxFdmVudFRhcmdldCo+IEV2ZW50
UGF0aDo6Y29tcHV0ZVAKICAgICByZXR1cm4gcGF0aDsKIH0KIAotUmVsYXRlZE5vZGVSZXRhcmdl
dGVyOjpSZWxhdGVkTm9kZVJldGFyZ2V0ZXIoTm9kZSYgcmVsYXRlZE5vZGUsIFRyZWVTY29wZSYg
dGFyZ2V0VHJlZVNjb3BlKQorc3RhdGljIE5vZGUqIG1vdmVPdXRPZkFsbFNoYWRvd1Jvb3RzKE5v
ZGUmIHN0YXJ0aW5nTm9kZSkKK3sKKyAgICBOb2RlKiBub2RlID0gJnN0YXJ0aW5nTm9kZTsKKyAg
ICB3aGlsZSAobm9kZS0+aXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgbm9kZSA9IGRvd25jYXN0
PFNoYWRvd1Jvb3Q+KG5vZGUtPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmhvc3QoKTsKKyAgICBy
ZXR1cm4gbm9kZTsKK30KKworUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpSZWxhdGVkTm9kZVJldGFy
Z2V0ZXIoTm9kZSYgcmVsYXRlZE5vZGUsIE5vZGUmIHRhcmdldCkKICAgICA6IG1fcmVsYXRlZE5v
ZGUocmVsYXRlZE5vZGUpCiAgICAgLCBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSgmcmVsYXRlZE5v
ZGUpCiB7CisgICAgYXV0byYgdGFyZ2V0VHJlZVNjb3BlID0gdGFyZ2V0LnRyZWVTY29wZSgpOwog
ICAgIFRyZWVTY29wZSogY3VycmVudFRyZWVTY29wZSA9ICZtX3JlbGF0ZWROb2RlLnRyZWVTY29w
ZSgpOwotICAgIGlmIChMSUtFTFkoY3VycmVudFRyZWVTY29wZSA9PSAmdGFyZ2V0VHJlZVNjb3Bl
KSkKKyAgICBpZiAoTElLRUxZKGN1cnJlbnRUcmVlU2NvcGUgPT0gJnRhcmdldFRyZWVTY29wZSAm
JiB0YXJnZXQuaW5Eb2N1bWVudCgpICYmIG1fcmVsYXRlZE5vZGUuaW5Eb2N1bWVudCgpKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCZjdXJyZW50VHJlZVNjb3BlLT5kb2N1bWVudFNjb3Bl
KCkgIT0gJnRhcmdldFRyZWVTY29wZS5kb2N1bWVudFNjb3BlKCkpIHsKQEAgLTI5NSwxMCArMjY2
LDkgQEAgUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpSZWxhdGVkTm9kZVJldGFyZwogICAgICAgICBt
X3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKHJlbGF0ZWROb2RlLmluRG9jdW1lbnQoKSAhPSB0YXJnZXRUcmVlU2NvcGUucm9v
dE5vZGUoKS5pbkRvY3VtZW50KCkpIHsKKyAgICBpZiAocmVsYXRlZE5vZGUuaW5Eb2N1bWVudCgp
ICE9IHRhcmdldC5pbkRvY3VtZW50KCkpIHsKICAgICAgICAgbV9oYXNEaWZmZXJlbnRUcmVlUm9v
dCA9IHRydWU7Ci0gICAgICAgIHdoaWxlIChtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZS0+aXNJblNo
YWRvd1RyZWUoKSkKLSAgICAgICAgICAgIG1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlID0gZG93bmNh
c3Q8U2hhZG93Um9vdD4obV9yZXRhcmdldGVkUmVsYXRlZE5vZGUtPnRyZWVTY29wZSgpLnJvb3RO
b2RlKCkpLmhvc3QoKTsKKyAgICAgICAgbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUgPSBtb3ZlT3V0
T2ZBbGxTaGFkb3dSb290cyhyZWxhdGVkTm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTMyMCwxMyArMjkwLDI0IEBAIFJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6UmVsYXRlZE5vZGVS
ZXRhcmcKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGJvb2wgbG93ZXN0Q29tbW9u
QW5jZXN0b3JJc0RvY3VtZW50U2NvcGUgPSBpICsgMSA9PSBtX2FuY2VzdG9yVHJlZVNjb3Blcy5z
aXplKCk7CisgICAgaWYgKGxvd2VzdENvbW1vbkFuY2VzdG9ySXNEb2N1bWVudFNjb3BlICYmICFy
ZWxhdGVkTm9kZS5pbkRvY3VtZW50KCkgJiYgIXRhcmdldC5pbkRvY3VtZW50KCkpIHsKKyAgICAg
ICAgTm9kZSYgdGFyZ2V0QW5jZXN0b3JJbkRvY3VtZW50U2NvcGUgPSBpID8gKmRvd25jYXN0PFNo
YWRvd1Jvb3Q+KG1fYW5jZXN0b3JUcmVlU2NvcGVzW2kgLSAxXS0+cm9vdE5vZGUoKSkuc2hhZG93
SG9zdCgpIDogdGFyZ2V0OworICAgICAgICBOb2RlJiByZWxhdGVkTm9kZUFuY2VzdG9ySW5Eb2N1
bWVudFNjb3BlID0gaiA/ICpkb3duY2FzdDxTaGFkb3dSb290Pih0YXJnZXRUcmVlU2NvcGVBbmNl
c3RvcnNbaiAtIDFdLT5yb290Tm9kZSgpKS5zaGFkb3dIb3N0KCkgOiByZWxhdGVkTm9kZTsKKyAg
ICAgICAgaWYgKHRhcmdldEFuY2VzdG9ySW5Eb2N1bWVudFNjb3BlLnJvb3ROb2RlKCkgIT0gcmVs
YXRlZE5vZGVBbmNlc3RvckluRG9jdW1lbnRTY29wZS5yb290Tm9kZSgpKSB7CisgICAgICAgICAg
ICBtX2hhc0RpZmZlcmVudFRyZWVSb290ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fcmV0YXJnZXRl
ZFJlbGF0ZWROb2RlID0gbW92ZU91dE9mQWxsU2hhZG93Um9vdHMocmVsYXRlZE5vZGUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgbV9sb3dlc3RDb21tb25B
bmNlc3RvckluZGV4ID0gaTsKICAgICBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9IG5vZGVJbkxv
d2VzdENvbW1vbkFuY2VzdG9yKCk7CiB9CiAKLWlubGluZSBOb2RlKiBSZWxhdGVkTm9kZVJldGFy
Z2V0ZXI6OmN1cnJlbnROb2RlKFRyZWVTY29wZSYgY3VycmVudFRyZWVTY29wZSkKK2lubGluZSBO
b2RlKiBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OmN1cnJlbnROb2RlKE5vZGUmIGN1cnJlbnRUYXJn
ZXQpCiB7Ci0gICAgY2hlY2tDb25zaXN0ZW5jeShjdXJyZW50VHJlZVNjb3BlKTsKKyAgICBjaGVj
a0NvbnNpc3RlbmN5KGN1cnJlbnRUYXJnZXQpOwogICAgIHJldHVybiBtX3JldGFyZ2V0ZWRSZWxh
dGVkTm9kZTsKIH0KIApAQCAtMzgxLDE3ICszNjIsMTkgQEAgdm9pZCBSZWxhdGVkTm9kZVJldGFy
Z2V0ZXI6OmNvbGxlY3RUcmVlUwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotdm9pZCBSZWxh
dGVkTm9kZVJldGFyZ2V0ZXI6OmNoZWNrQ29uc2lzdGVuY3koVHJlZVNjb3BlJiBjdXJyZW50VHJl
ZVNjb3BlKQordm9pZCBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OmNoZWNrQ29uc2lzdGVuY3koTm9k
ZSYgY3VycmVudFRhcmdldCkKIHsKLSAgICBmb3IgKGF1dG8qIHJlbGF0ZWROb2RlU2NvcGUgPSAm
bV9yZWxhdGVkTm9kZS50cmVlU2NvcGUoKTsgcmVsYXRlZE5vZGVTY29wZTsgcmVsYXRlZE5vZGVT
Y29wZSA9IHJlbGF0ZWROb2RlU2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKSB7Ci0gICAgICAgIGZv
ciAoYXV0byogdGFyZ2V0U2NvcGUgPSAmY3VycmVudFRyZWVTY29wZTsgdGFyZ2V0U2NvcGU7IHRh
cmdldFNjb3BlID0gdGFyZ2V0U2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKSB7Ci0gICAgICAgICAg
ICBpZiAodGFyZ2V0U2NvcGUgPT0gcmVsYXRlZE5vZGVTY29wZSkgewotICAgICAgICAgICAgICAg
IEFTU0VSVCgmbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUtPnRyZWVTY29wZSgpID09IHJlbGF0ZWRO
b2RlU2NvcGUpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICBB
U1NFUlQoIW1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlIHx8IGN1cnJlbnRUYXJnZXQuaXNVbmNsb3Nl
ZE5vZGUoKm1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlKSk7CisKKyAgICAvLyBodHRwOi8vdzNjLmdp
dGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyNkZm4tcmV0YXJnZXRpbmctYWxnb3Jp
dGhtCisgICAgTm9kZSYgYmFzZSA9IGN1cnJlbnRUYXJnZXQ7CisgICAgZm9yIChOb2RlKiB0YXJn
ZXRBbmNlc3RvciA9ICZtX3JlbGF0ZWROb2RlOyB0YXJnZXRBbmNlc3RvcjsgdGFyZ2V0QW5jZXN0
b3IgPSB0YXJnZXRBbmNlc3Rvci0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CisgICAgICAg
IGlmICh0YXJnZXRBbmNlc3Rvci0+cm9vdE5vZGUoKS0+Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dE
T00oJmJhc2UpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9yZXRhcmdldGVkUmVsYXRlZE5vZGUg
PT0gdGFyZ2V0QW5jZXN0b3IpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQotICAgIEFTU0VSVCghbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUpOworICAgIEFTU0VSVCghbV9y
ZXRhcmdldGVkUmVsYXRlZE5vZGUgfHwgbV9oYXNEaWZmZXJlbnRUcmVlUm9vdCk7CiB9CiAjZW5k
aWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguaAkocmV2aXNpb24gMjAwMzU5KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw5ICs0OCw5
IEBAIHB1YmxpYzoKIAogICAgIEV2ZW50Q29udGV4dCogbGFzdENvbnRleHRJZkV4aXN0cygpIHsg
cmV0dXJuIG1fcGF0aC5pc0VtcHR5KCkgPyBudWxscHRyIDogbV9wYXRoLmxhc3QoKS5nZXQoKTsg
fQogCi0gICAgVmVjdG9yPEV2ZW50VGFyZ2V0Kj4gY29tcHV0ZVBhdGhEaXNjbG9zZWRUb1Rhcmdl
dChjb25zdCBFdmVudFRhcmdldCYpIGNvbnN0OworICAgIFZlY3RvcjxFdmVudFRhcmdldCo+IGNv
bXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldChjb25zdCBFdmVudFRhcmdldCYpIGNvbnN0OwogCi0g
ICAgc3RhdGljIEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcyhO
b2RlJiByZWZlcmVuY2VOb2RlKQorICAgIHN0YXRpYyBOb2RlKiBldmVudFRhcmdldFJlc3BlY3Rp
bmdUYXJnZXRSdWxlcyhOb2RlJiByZWZlcmVuY2VOb2RlKQogICAgIHsKICAgICAgICAgaWYgKGlz
PFBzZXVkb0VsZW1lbnQ+KHJlZmVyZW5jZU5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PFBzZXVkb0VsZW1lbnQ+KHJlZmVyZW5jZU5vZGUpLmhvc3RFbGVtZW50KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCShyZXZpc2lvbiAyMDAzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTgsNiArMTA1OCwyOCBAQCBTaGFkb3dSb290KiBO
b2RlOjpjb250YWluaW5nU2hhZG93Um9vdCgpCiAgICAgcmV0dXJuIGlzPFNoYWRvd1Jvb3Q+KHJv
b3QpID8gZG93bmNhc3Q8U2hhZG93Um9vdD4oJnJvb3QpIDogbnVsbHB0cjsKIH0KIAorLy8gaHR0
cDovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZGZuLXVuY2xvc2Vk
LW5vZGUKK2Jvb2wgTm9kZTo6aXNVbmNsb3NlZE5vZGUoY29uc3QgTm9kZSYgb3RoZXJOb2RlKSBj
b25zdAoreworICAgIC8vIFVzZSBWZWN0b3IgaW5zdGVhZCBvZiBIYXNoU2V0IHNpbmNlIHdlIGV4
cGVjdCB0aGUgbnVtYmVyIG9mIGFuY2VzdG9yIHRyZWUgc2NvcGVzIHRvIGJlIHNtYWxsLgorICAg
IFZlY3RvcjxUcmVlU2NvcGUqLCA4PiBhbmNlc3RvclNjb3Blc09mVGhpc05vZGU7CisKKyAgICBm
b3IgKGF1dG8qIHNjb3BlID0gJnRyZWVTY29wZSgpOyBzY29wZTsgc2NvcGUgPSBzY29wZS0+cGFy
ZW50VHJlZVNjb3BlKCkpCisgICAgICAgIGFuY2VzdG9yU2NvcGVzT2ZUaGlzTm9kZS5hcHBlbmQo
c2NvcGUpOworCisgICAgZm9yIChhdXRvKiB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzT3RoZXJOb2Rl
ID0gJm90aGVyTm9kZS50cmVlU2NvcGUoKTsgdHJlZVNjb3BlVGhhdENhbkFjY2Vzc090aGVyTm9k
ZTsgdHJlZVNjb3BlVGhhdENhbkFjY2Vzc090aGVyTm9kZSA9IHRyZWVTY29wZVRoYXRDYW5BY2Nl
c3NPdGhlck5vZGUtPnBhcmVudFRyZWVTY29wZSgpKSB7CisgICAgICAgIGZvciAoYXV0byogc2Nv
cGUgOiBhbmNlc3RvclNjb3Blc09mVGhpc05vZGUpIHsKKyAgICAgICAgICAgIGlmIChzY29wZSA9
PSB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzT3RoZXJOb2RlKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOyAvLyB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzT3RoZXJOb2RlIGlzIGEgc2hhZG93LWlu
Y2x1ZGluZyBpbmNsdXNpdmUgYW5jZXN0b3Igb2YgdGhpcyBub2RlLgorICAgICAgICB9CisgICAg
ICAgIGF1dG8mIHJvb3QgPSB0cmVlU2NvcGVUaGF0Q2FuQWNjZXNzT3RoZXJOb2RlLT5yb290Tm9k
ZSgpOworICAgICAgICBpZiAoaXM8U2hhZG93Um9vdD4ocm9vdCkgJiYgZG93bmNhc3Q8U2hhZG93
Um9vdD4ocm9vdCkudHlwZSgpICE9IFNoYWRvd1Jvb3Q6OlR5cGU6Ok9wZW4pCisgICAgICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKIEhUTUxTbG90RWxlbWVudCogTm9kZTo6YXNzaWduZWRTbG90KCkgY29uc3QKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gMjAwMzU5KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDYgKzI1OSw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBOb2RlKiBkZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlKCkgY29uc3Q7
CiAgICAgU2hhZG93Um9vdCogY29udGFpbmluZ1NoYWRvd1Jvb3QoKSBjb25zdDsKICAgICBTaGFk
b3dSb290KiBzaGFkb3dSb290KCkgY29uc3Q7CisgICAgYm9vbCBpc1VuY2xvc2VkTm9kZShjb25z
dCBOb2RlJikgY29uc3Q7CiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBIVE1MU2xvdEVs
ZW1lbnQqIGFzc2lnbmVkU2xvdCgpIGNvbnN0OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwMzU5KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTYtMDUtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
ZXZlbnQudGFyZ2V0IHNob3VsZG4ndCBiZSByZXRhcmdldGVkIGFzIHRoZSBldmVudCBidWJibGVz
IGludG8gYSBzbG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTczNjkKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAg
ICAgICBVcGRhdGVkIHRlc3QgY2FzZXMgdG8gZXhwZWN0IHRoZSB0YXJnZXQgdG8gYmUgbm90IGFk
anVzdGVkIHRvIGEgc2xvdCBlbGVtZW50IHdoZW4gdGhlIGV2ZW50IHBhdGgKKyAgICAgICAgZW50
ZXJzIG9uZSBhcyB0aGlzIGRpZG4ndCBtYXRjaCB0aGUgc3BlYyBvciB0aGUgYmVoYXZpb3Igb2Yg
R29vZ2xlIENocm9tZSBDYW5hcnkuIEJvdGggV2ViS2l0IGFuZAorICAgICAgICBDaHJvbWUgcGFz
c2VzIHRoZSB0ZXN0IHdpdGggdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1k
b20vZXZlbnQtaW5zaWRlLXNsb3R0ZWQtbm9kZS5odG1sOgorCiAyMDE2LTA1LTAyICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhpbmcgQ1NTU3R5bGVEZWNs
YXJhdGlvbiBvYmplY3Qgd2l0aCBvdXQtb2YtcmFuZ2UgaW5kZXggc2hvdWxkIHJldHVybiB1bmRl
ZmluZWQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9ldmVudC1pbnNpZGUtc2xv
dHRlZC1ub2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9t
L2V2ZW50LWluc2lkZS1zbG90dGVkLW5vZGUuaHRtbAkocmV2aXNpb24gMjAwMzU5KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2V2ZW50LWluc2lkZS1zbG90dGVkLW5vZGUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtODAsOSArODAsOSBAQAogICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMobG9nLmxlbmd0aCwgNiwgJ0V2ZW50UGF0aCBtdXN0IGNvbnRhaW4gW3RhcmdldCwgdGFy
Z2V0IHBhcmVudCwgc2xvdCwgc2xvdCBwYXJlbnQsIHNoYWRvdyByb290LCBzaGFkb3cgaG9zdF0n
KTsKICAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1swXSwgW3NoYWRvdy50
YXJnZXQsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzBdIG11c3QgYmUgdGhlIHRhcmdldCcp
OwogICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzFdLCBbc2hhZG93LnRh
cmdldFBhcmVudCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMV0gbXVzdCBiZSB0aGUgcGFy
ZW50IG9mIHRoZSB0YXJnZXQnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGxvZ1syXSwgW3NoYWRvdy5zbG90LCBzaGFkb3cuc2xvdF0sICdFdmVudFBhdGhbMl0gbXVzdCBi
ZSB0aGUgc2xvdCcpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzNd
LCBbc2hhZG93LnNsb3RQYXJlbnQsIHNoYWRvdy5zbG90XSwgJ0V2ZW50UGF0aFszXSBtdXN0IGJl
IHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1s0XSwgW3NoYWRvdy5yb290LCBzaGFkb3cuc2xvdF0sICdFdmVudFBhdGhbNF0g
bXVzdCBiZSB0aGUgc2hhZG93IHJvb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1syXSwgW3NoYWRvdy5zbG90LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsy
XSBtdXN0IGJlIHRoZSBzbG90Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhsb2dbM10sIFtzaGFkb3cuc2xvdFBhcmVudCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhb
M10gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90Jyk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhsb2dbNF0sIFtzaGFkb3cucm9vdCwgc2hhZG93LnRhcmdldF0sICdF
dmVudFBhdGhbNF0gbXVzdCBiZSB0aGUgc2hhZG93IHJvb3QnKTsKICAgICAgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s1XSwgW3NoYWRvdy5ob3N0LCBzaGFkb3cudGFyZ2V0XSwg
J0V2ZW50UGF0aFs1XSBtdXN0IGJlIHRoZSBzaGFkb3cgaG9zdCcpOwogCiAgICAgICAgICAgICB9
LCAnRmlyaW5nIGFuIGV2ZW50IGluc2lkZSBhIGdyYW5kIGNoaWxkIG9mIGEgZGV0YWNoZWQgJyAr
IG1vZGUgKyAnIG1vZGUgc2hhZG93IGhvc3QnKTsKQEAgLTEwMSw5ICsxMDEsOSBAQAogICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMobG9nLmxlbmd0aCwgOSwgJ0V2ZW50UGF0aCBtdXN0IGNv
bnRhaW4gW3RhcmdldCwgdGFyZ2V0IHBhcmVudCwgc2xvdCwgc2xvdCBwYXJlbnQsIHNoYWRvdyBy
b290LCBzaGFkb3cgaG9zdCwgYm9keSwgaHRtbCwgZG9jdW1lbnRdJyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMF0sIFtzaGFkb3cudGFyZ2V0LCBzaGFkb3cudGFy
Z2V0XSwgJ0V2ZW50UGF0aFswXSBtdXN0IGJlIHRoZSB0YXJnZXQnKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxXSwgW3NoYWRvdy50YXJnZXRQYXJlbnQsIHNoYWRv
dy50YXJnZXRdLCAnRXZlbnRQYXRoWzFdIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUgdGFyZ2V0
Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMl0sIFtzaGFkb3cu
c2xvdCwgc2hhZG93LnNsb3RdLCAnRXZlbnRQYXRoWzJdIG11c3QgYmUgdGhlIHNsb3QnKTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1szXSwgW3NoYWRvdy5zbG90UGFy
ZW50LCBzaGFkb3cuc2xvdF0sICdFdmVudFBhdGhbM10gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRo
ZSBzbG90Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNF0sIFtz
aGFkb3cucm9vdCwgc2hhZG93LnNsb3RdLCAnRXZlbnRQYXRoWzRdIG11c3QgYmUgdGhlIHNoYWRv
dyByb290Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMl0sIFtz
aGFkb3cuc2xvdCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMl0gbXVzdCBiZSB0aGUgc2xv
dCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzNdLCBbc2hhZG93
LnNsb3RQYXJlbnQsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzNdIG11c3QgYmUgdGhlIHBh
cmVudCBvZiB0aGUgc2xvdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzRdLCBbc2hhZG93LnJvb3QsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzRdIG11c3Qg
YmUgdGhlIHNoYWRvdyByb290Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhsb2dbNV0sIFtzaGFkb3cuaG9zdCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbNV0gbXVz
dCBiZSB0aGUgc2hhZG93IGhvc3QnKTsKICAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGxvZ1s2XSwgW2RvY3VtZW50LmJvZHksIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzZd
IG11c3QgYmUgdGhlIGJvZHkgZWxlbWVudCcpOwogICAgICAgICAgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMobG9nWzddLCBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBzaGFkb3cudGFyZ2V0
XSwgJ0V2ZW50UGF0aFs3XSBtdXN0IGJlIHRoZSBodG1sIGVsZW1lbnQnKTsKQEAgLTE3OSwxOSAr
MTc5LDE5IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhsb2cubGVuZ3RoLCAxNSwg
J0V2ZW50UGF0aCBtdXN0IGNvbnRhaW4gMTUgdGFyZ2V0cycpOwogCiAgICAgICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMF0sIFtzaGFkb3cudGFyZ2V0LCBzaGFkb3cudGFyZ2V0
XSwgJ0V2ZW50UGF0aFswXSBtdXN0IGJlIHRoZSB0YXJnZXQnKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxXSwgW3NoYWRvdy5sb3dlclNsb3QsIHNoYWRvdy5sb3dl
clNsb3RdLCAnRXZlbnRQYXRoWzFdIG11c3QgYmUgdGhlIHNsb3QgaW5zaWRlIHRoZSBsb3dlciBz
aGFkb3cgdHJlZScpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzJd
LCBbc2hhZG93Lmxvd2VyU2xvdC5wYXJlbnROb2RlLCBzaGFkb3cubG93ZXJTbG90XSwgJ0V2ZW50
UGF0aFsyXSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QgaW5zaWRlIHRoZSBsb3dlciBz
aGFkb3cgdHJlZScpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzNd
LCBbc2hhZG93LmlubmVyU2xvdCwgc2hhZG93LmlubmVyU2xvdF0sICdFdmVudFBhdGhbM10gbXVz
dCBiZSB0aGUgc2xvdCBpbnNpZGUgdGhlIHNoYWRvdyB0cmVlIGluc2lkZSB0aGUgbG93ZXIgc2hh
ZG93IHRyZWUnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s0XSwg
W3NoYWRvdy5pbm5lclNsb3QucGFyZW50Tm9kZSwgc2hhZG93LmlubmVyU2xvdF0sICdFdmVudFBh
dGhbNF0gbXVzdCBiZSB0aGUgY2hpbGQgb2YgdGhlIGlubmVyIHNoYWRvdyByb290Jyk7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNV0sIFtzaGFkb3cuaW5uZXJTaGFk
b3csIHNoYWRvdy5pbm5lclNsb3RdLCAnRXZlbnRQYXRoWzVdIG11c3QgYmUgdGhlIGlubmVyIHNo
YWRvdyByb290Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNl0s
IFtzaGFkb3cuaW5uZXJTaGFkb3cuaG9zdCwgc2hhZG93Lmxvd2VyU2xvdF0sICdFdmVudFBhdGhb
Nl0gbXVzdCBiZSB0aGUgaG9zdCBvZiB0aGUgaW5uZXIgc2hhZG93IHRyZWUnKTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s3XSwgW3NoYWRvdy5sb3dlclNoYWRvdy5m
aXJzdENoaWxkLCBzaGFkb3cubG93ZXJTbG90XSwgJ0V2ZW50UGF0aFs3XSBtdXN0IGJlIHRoZSBw
YXJlbnQgb2YgdGhlIGlubmVyIHNoYWRvdyBob3N0Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhsb2dbOF0sIFtzaGFkb3cubG93ZXJTaGFkb3csIHNoYWRvdy5sb3dlclNs
b3RdLCAnRXZlbnRQYXRoWzhdIG11c3QgYmUgdGhlIGxvd2VyIHNoYWRvdyByb290Jyk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMV0sIFtzaGFkb3cubG93ZXJTbG90
LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsxXSBtdXN0IGJlIHRoZSBzbG90IGluc2lkZSB0
aGUgbG93ZXIgc2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGxvZ1syXSwgW3NoYWRvdy5sb3dlclNsb3QucGFyZW50Tm9kZSwgc2hhZG93LnRhcmdldF0s
ICdFdmVudFBhdGhbMl0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90IGluc2lkZSB0aGUg
bG93ZXIgc2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGxvZ1szXSwgW3NoYWRvdy5pbm5lclNsb3QsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzNd
IG11c3QgYmUgdGhlIHNsb3QgaW5zaWRlIHRoZSBzaGFkb3cgdHJlZSBpbnNpZGUgdGhlIGxvd2Vy
IHNoYWRvdyB0cmVlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2db
NF0sIFtzaGFkb3cuaW5uZXJTbG90LnBhcmVudE5vZGUsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQ
YXRoWzRdIG11c3QgYmUgdGhlIGNoaWxkIG9mIHRoZSBpbm5lciBzaGFkb3cgcm9vdCcpOworICAg
ICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzVdLCBbc2hhZG93LmlubmVyU2hh
ZG93LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFs1XSBtdXN0IGJlIHRoZSBpbm5lciBzaGFk
b3cgcm9vdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzZdLCBb
c2hhZG93LmlubmVyU2hhZG93Lmhvc3QsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzZdIG11
c3QgYmUgdGhlIGhvc3Qgb2YgdGhlIGlubmVyIHNoYWRvdyB0cmVlJyk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbN10sIFtzaGFkb3cubG93ZXJTaGFkb3cuZmlyc3RD
aGlsZCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbN10gbXVzdCBiZSB0aGUgcGFyZW50IG9m
IHRoZSBpbm5lciBzaGFkb3cgaG9zdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMobG9nWzhdLCBbc2hhZG93Lmxvd2VyU2hhZG93LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50
UGF0aFs4XSBtdXN0IGJlIHRoZSBsb3dlciBzaGFkb3cgcm9vdCcpOwogICAgICAgICAgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzldLCBbc2hhZG93Lmxvd2VyU2hhZG93Lmhvc3QsIHNo
YWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzldIG11c3QgYmUgdGhlIGxvd2VyIHNoYWRvdyBob3N0
Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMTBdLCBbc2hhZG93
Lmhvc3QuZmlyc3RDaGlsZCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMTBdIG11c3QgYmUg
dGhlIHBhcmVudCBvZiB0aGUgZ3JhbmQgcGFyZW50IG9mIHRoZSB0YXJnZXQnKTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxMV0sIFtzaGFkb3cudXBwZXJTbG90LCBz
aGFkb3cudXBwZXJTbG90XSwgJ0V2ZW50UGF0aFsxMV0gbXVzdCBiZSB0aGUgc2xvdCBpbnNpZGUg
dGhlIHVwcGVyIHNoYWRvdyB0cmVlJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhsb2dbMTJdLCBbc2hhZG93LnVwcGVyU2xvdC5wYXJlbnROb2RlLCBzaGFkb3cudXBwZXJT
bG90XSwgJ0V2ZW50UGF0aFsxMl0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90IGluc2lk
ZSB0aGUgdXBwZXIgc2hhZG93IHRyZWUnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1sxM10sIFtzaGFkb3cudXBwZXJTaGFkb3csIHNoYWRvdy51cHBlclNsb3RdLCAn
RXZlbnRQYXRoWzEzXSBtdXN0IGJlIHRoZSB1cHBlciBzaGFkb3cgcm9vdCcpOworICAgICAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzExXSwgW3NoYWRvdy51cHBlclNsb3QsIHNo
YWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzExXSBtdXN0IGJlIHRoZSBzbG90IGluc2lkZSB0aGUg
dXBwZXIgc2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGxvZ1sxMl0sIFtzaGFkb3cudXBwZXJTbG90LnBhcmVudE5vZGUsIHNoYWRvdy50YXJnZXRdLCAn
RXZlbnRQYXRoWzEyXSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QgaW5zaWRlIHRoZSB1
cHBlciBzaGFkb3cgdHJlZScpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzEzXSwgW3NoYWRvdy51cHBlclNoYWRvdywgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhb
MTNdIG11c3QgYmUgdGhlIHVwcGVyIHNoYWRvdyByb290Jyk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhsb2dbMTRdLCBbc2hhZG93Lmhvc3QsIHNoYWRvdy50YXJnZXRdLCAn
RXZlbnRQYXRoWzE0XSBtdXN0IGJlIHRoZSBob3N0Jyk7CiAKICAgICAgICAgICAgIH0sICdGaXJp
bmcgYW4gZXZlbnQgb24gYSBub2RlIHdpdGggdHdvIGFuY2VzdG9ycyB3aXRoIGEgZGV0YWNoZWQg
JyArIG91dGVyVXBwZXJNb2RlICsgJyBhbmQgJyArIG91dGVyTG93ZXJNb2RlCkBAIC0yMTUsNyAr
MjE1LDcgQEAKICAgICAgICAgICAgICsgYSAgICAgICAgICAgICAgICsgZW0gKDQpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICsgaW5uZXItaG9zdCAoMykgLS0gKGlubmVyU2hhZG93
OyAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc3BhbiAgICAgICAgICAg
ICsgaSAoMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2xvdCAgICAg
ICAgICAgICsgc2xvdCAoaW5uZXJTbG90OyAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKyBzbG90ICAgICAgICAgICAgKyBzbG90IChpbm5lclNsb3QsIHRhcmdldDsgMCkK
ICAgICAgICAgKi8KIAogICAgICAgICBmdW5jdGlvbiB0ZXN0RXZlbnRJbnNpZGVOZXN0ZWRTaGFk
b3dzVW5kZXJBbm90aGVyU2hhZG93KG91dGVyVXBwZXJNb2RlLCBvdXRlckxvd2VyTW9kZSwgaW5u
ZXJNb2RlKSB7CkBAIC0yMzYsOSArMjM2LDkgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGxvZ1s1XSwgW3NoYWRvdy5sb3dlclNoYWRvdywgc2hhZG93LmlubmVyU2hhZG93
Lmhvc3RdLCAnRXZlbnRQYXRoWzVdIG11c3QgYmUgdGhlIGxvd2VyIChidXQgb3V0ZXIpIHNoYWRv
dyByb290Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNl0sIFtz
aGFkb3cubG93ZXJTaGFkb3cuaG9zdCwgc2hhZG93Lmxvd2VyU2hhZG93Lmhvc3RdLCAnRXZlbnRQ
YXRoWzZdIG11c3QgYmUgdGhlIGxvd2VyIChidXQgb3V0ZXIpIHNoYWRvdyByb290Jyk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbN10sIFtzaGFkb3cuaG9zdC5maXJz
dENoaWxkLCBzaGFkb3cubG93ZXJTaGFkb3cuaG9zdF0sICdFdmVudFBhdGhbN10gbXVzdCBiZSB0
aGUgc2xvdCBpbnNpZGUgdGhlIHVwcGVyIHNoYWRvdyB0cmVlJyk7Ci0gICAgICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbOF0sIFtzaGFkb3cudXBwZXJTbG90LCBzaGFkb3cudXBw
ZXJTbG90XSwgJ0V2ZW50UGF0aFs4XSBtdXN0IGJlIHRoZSBzbG90IGluc2lkZSB0aGUgdXBwZXIg
c2hhZG93IHRyZWUnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s5
XSwgW3NoYWRvdy51cHBlclNsb3QucGFyZW50Tm9kZSwgc2hhZG93LnVwcGVyU2xvdF0sICdFdmVu
dFBhdGhbOV0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90IGluc2lkZSB0aGUgdXBwZXIg
c2hhZG93IHRyZWUnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sx
MF0sIFtzaGFkb3cudXBwZXJTaGFkb3csIHNoYWRvdy51cHBlclNsb3RdLCAnRXZlbnRQYXRoWzEw
XSBtdXN0IGJlIHRoZSB1cHBlciBzaGFkb3cgcm9vdCcpOworICAgICAgICAgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMobG9nWzhdLCBbc2hhZG93LnVwcGVyU2xvdCwgc2hhZG93Lmxvd2VyU2hh
ZG93Lmhvc3RdLCAnRXZlbnRQYXRoWzhdIG11c3QgYmUgdGhlIHNsb3QgaW5zaWRlIHRoZSB1cHBl
ciBzaGFkb3cgdHJlZScpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
WzldLCBbc2hhZG93LnVwcGVyU2xvdC5wYXJlbnROb2RlLCBzaGFkb3cubG93ZXJTaGFkb3cuaG9z
dF0sICdFdmVudFBhdGhbOV0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90IGluc2lkZSB0
aGUgdXBwZXIgc2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGxvZ1sxMF0sIFtzaGFkb3cudXBwZXJTaGFkb3csIHNoYWRvdy5sb3dlclNoYWRvdy5ob3N0
XSwgJ0V2ZW50UGF0aFsxMF0gbXVzdCBiZSB0aGUgdXBwZXIgc2hhZG93IHJvb3QnKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxMV0sIFtzaGFkb3cudXBwZXJTaGFk
b3cuaG9zdCwgc2hhZG93Lmxvd2VyU2hhZG93Lmhvc3RdLCAnRXZlbnRQYXRoWzExXSBtdXN0IGJl
IHRoZSBob3N0Jyk7CiAKICAgICAgICAgICAgIH0sICdGaXJpbmcgYW4gZXZlbnQgb24gYSBub2Rl
IHdpdGggdHdvIGFuY2VzdG9ycyB3aXRoIGEgZGV0YWNoZWQgJyArIG91dGVyVXBwZXJNb2RlICsg
JyBhbmQgJyArIG91dGVyTG93ZXJNb2RlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>