<?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>178531</bug_id>
          
          <creation_ts>2017-10-19 12:18:49 -0700</creation_ts>
          <short_desc>We should hard code the poly proto offset</short_desc>
          <delta_ts>2017-11-15 13:02:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1362251</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-19 12:18:49 -0700</bug_when>
    <thetext>Currently, it&apos;s always at offset zero in inline storage. Let&apos;s make this a hard coded assumption because it speeds up speedometer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362267</commentid>
    <comment_count>1</comment_count>
      <attachid>324267</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-19 13:07:02 -0700</bug_when>
    <thetext>Created attachment 324267
might be the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362270</commentid>
    <comment_count>2</comment_count>
      <attachid>324269</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-19 13:09:58 -0700</bug_when>
    <thetext>Created attachment 324269
test on EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362328</commentid>
    <comment_count>3</comment_count>
      <attachid>324283</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-19 14:22:04 -0700</bug_when>
    <thetext>Created attachment 324283
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362354</commentid>
    <comment_count>4</comment_count>
      <attachid>324283</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-10-19 14:31:44 -0700</bug_when>
    <thetext>Comment on attachment 324283
patch

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

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:450
&gt; +                        RELEASE_ASSERT(isInlineOffset(knownPolyProtoOffset));

Remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362355</commentid>
    <comment_count>5</comment_count>
      <attachid>324292</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-19 14:33:13 -0700</bug_when>
    <thetext>Created attachment 324292
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362378</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-19 15:02:41 -0700</bug_when>
    <thetext>need to fix some debug asserts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362391</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-19 15:24:17 -0700</bug_when>
    <thetext>landed in:
https://trac.webkit.org/changeset/223715/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372322</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 13:02:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/35568656&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324267</attachid>
            <date>2017-10-19 13:07:02 -0700</date>
            <delta_ts>2017-10-19 13:09:58 -0700</delta_ts>
            <desc>might be the patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>19649</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJ
KHJldmlzaW9uIDIyMzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDEzICs0MzIsMTIgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRy
YW5zaXRpb25zIG11c3QgZG8gdGhpcyBiZWNhdXNlIHRoZXkgbmVlZCB0byB2ZXJpZnkgdGhlcmUg
aXNuJ3QgYSBzZXR0ZXIgaW4gdGhlIGNoYWluLgogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
TWlzcy9Jbk1pc3MgbmVlZCB0byBkbyB0aGlzIHRvIGVuc3VyZSB0aGVyZSBpc24ndCBhIG5ldyBp
dGVtIGF0IHRoZSBlbmQgb2YgdGhlIGNoYWluIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGhhcyB0aGUgcHJvcGVydHkuCi0gICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBwb2x5UHJvdG9PZmZzZXQgPSBzdHJ1Y3R1cmUtPnBvbHlQcm90b09mZnNldCgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbmxpbmVPZmZzZXQocG9seVBy
b3RvT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0lu
bGluZU9mZnNldChrbm93blBvbHlQcm90b09mZnNldCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHBvbHlQcm90b09mZnNldCkp
LCBiYXNlRm9yQWNjZXNzR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZvckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVU
b0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpKSwgYmFzZUZvckFjY2Vzc0dQUik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVs
cGVyczo6Tm90RXF1YWwsIGJhc2VGb3JBY2Nlc3NHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KFZhbHVlTnVsbCkpKTsKICNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0
aXZlVG9CYXNlKHBvbHlQcm90b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgYmFzZUZvckFjY2Vz
c0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9s
eVByb3RvT2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihD
Q2FsbEhlbHBlcnM6Ok5vblplcm8sIGJhc2VGb3JBY2Nlc3NHUFIpKTsKICNlbmRpZgogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC00NDksMTMgKzQ0OCwxMiBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlV2l0aEd1YXJkKAogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGFzT2JqZWN0KHByb3RvdHlwZSkpLCBiYXNlRm9yQWNjZXNz
R1BSKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7IC8vIFByaW1pdGl2ZXMg
bXVzdCBoYXZlIGEgc3RvcmVkIHByb3RvdHlwZS4gV2UgdXNlIHByb3RvdHlwZUZvckxvb2t1cCBm
b3IgdGhlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IHBvbHlQcm90
b09mZnNldCA9IHN0cnVjdHVyZS0+cG9seVByb3RvT2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0lubGluZU9mZnNldChwb2x5UHJvdG9PZmZzZXQpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5saW5lT2Zmc2V0KGtu
b3duUG9seVByb3RvT2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZvckFjY2Vz
c0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UocG9seVByb3RvT2Zmc2V0KSksIGJhc2VGb3JBY2Nl
c3NHUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlRm9yQWNjZXNzR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBv
bHlQcm90b09mZnNldCkpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpFcXVhbCwg
YmFzZUZvckFjY2Vzc0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSkp
OwogI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUZvckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UocG9seVBy
b3RvT2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZv
ckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsg
UGF5bG9hZE9mZnNldCksIGJhc2VGb3JBY2Nlc3NHUFIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVy
bywgYmFzZUZvckFjY2Vzc0dQUikpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMjIzNjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDcgKzI0OSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25DcmVhdGVUaGkKICAgICAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhh
c1BvbHlQcm90bygpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0ganNDYXN0
PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPnByb3RvdHlwZUZvckNvbnN0cnVjdGlvbih2bSwg
ZXhlYyk7Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgc3RydWN0dXJlLT5wb2x5
UHJvdG9PZmZzZXQoKSwgcHJvdG90eXBlKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBrbm93blBvbHlQcm90b09mZnNldCwgcHJvdG90eXBlKTsKICAgICAgICAgICAgIHByb3Rv
dHlwZS0+ZGlkQmVjb21lUHJvdG90eXBlKCk7CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFoYXNJbmRleGVkUHJvcGVydGllcyhyZXN1bHQtPmluZGV4aW5nVHlwZSgpKSwgIldlIHJl
bHkgb24gSlNGaW5hbE9iamVjdCBub3Qgc3RhcnRpbmcgb3V0IHdpdGggYW4gaW5kZXhpbmcgdHlw
ZSBvdGhlcndpc2Ugd2Ugd291bGQgcG90ZW50aWFsbHkgbmVlZCB0byBjb252ZXJ0IHRvIHNsb3cg
cHV0IHN0b3JhZ2UiKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyMzY5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjQ5LDE3ICszMjQ5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mRm8KICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSgqbV9qaXQudm0oKSwgc2NyYXRj
aFJlZywgc2NyYXRjaDNSZWcsIHNjcmF0Y2gyUmVnKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoM1JlZywgU3RydWN0
dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHNjcmF0Y2gzUmVnKTsKLSAgICBhdXRvIGlzTW9ub1By
b3RvID0gbV9qaXQuYnJhbmNoSWZOb3RJbnQzMihKU1ZhbHVlUmVncyhzY3JhdGNoM1JlZykpOwot
ICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHNjcmF0Y2gzUmVnLCBzY3JhdGNoM1JlZyk7Ci0g
ICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoc2NyYXRjaFJlZywgc2NyYXRj
aDNSZWcsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVT
dG9yYWdlKCkpLCBzY3JhdGNoM1JlZyk7Ci0gICAgaXNNb25vUHJvdG8ubGluaygmbV9qaXQpOwor
ICAgIGF1dG8gaGFzTW9ub1Byb3RvID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpO
b25aZXJvLCBzY3JhdGNoM1JlZyk7CisgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHNjcmF0Y2hSZWcsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0
KSksIHNjcmF0Y2gzUmVnKTsKKyAgICBoYXNNb25vUHJvdG8ubGluaygmbV9qaXQpOwogICAgIG1f
aml0Lm1vdmUoc2NyYXRjaDNSZWcsIHNjcmF0Y2hSZWcpOwogI2Vsc2UKICAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaDNSZWcsIFN0cnVjdHVyZTo6cHJvdG90
eXBlT2Zmc2V0KCkgKyBUYWdPZmZzZXQpLCBzY3JhdGNoMlJlZyk7CiAgICAgbV9qaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2gzUmVnLCBTdHJ1Y3R1cmU6OnByb3RvdHlw
ZU9mZnNldCgpICsgUGF5bG9hZE9mZnNldCksIHNjcmF0Y2gzUmVnKTsKLSAgICBhdXRvIGlzTW9u
b1Byb3RvID0gbV9qaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDJS
ZWcsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6QmFzZUluZGV4KHNjcmF0Y2hSZWcsIHNjcmF0Y2gzUmVnLCBKSVRDb21waWxl
cjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgUGF5bG9h
ZE9mZnNldCksIHNjcmF0Y2gzUmVnKTsKLSAgICBpc01vbm9Qcm90by5saW5rKCZtX2ppdCk7Cisg
ICAgYXV0byBoYXNNb25vUHJvdG8gPSBtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBzY3JhdGNoMlJlZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsK
KyAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgb2Zmc2V0
UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsgUGF5bG9hZE9mZnNldCksIHNj
cmF0Y2gzUmVnKTsKKyAgICBoYXNNb25vUHJvdG8ubGluaygmbV9qaXQpOwogICAgIG1faml0Lm1v
dmUoc2NyYXRjaDNSZWcsIHNjcmF0Y2hSZWcpOwogI2VuZGlmCiAKQEAgLTEwODMwLDE0ICsxMDgy
OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90eXBlCiAKICAgICAg
ICAgICAgIGlmIChoYXNQb2x5UHJvdG8gJiYgIWhhc01vbm9Qcm90bykgewogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKLSAg
ICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cih0ZW1wR1BSLCB0ZW1wR1BSKTsK
LSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmpl
Y3RHUFIsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
NjQoSklUQ29tcGlsZXI6OkFkZHJlc3Mob2JqZWN0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShr
bm93blBvbHlQcm90b09mZnNldCkpLCB0ZW1wR1BSKTsKICAgICAgICAgICAgICAgICBqc1ZhbHVl
UmVzdWx0KHRlbXBHUFIsIG5vZGUpOwogI2Vsc2UKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjpwcm90b3R5cGVP
ZmZzZXQoKSArIFBheWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsKLSAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmplY3RHUFIsIHRlbXBHUFIsIEpJVENv
bXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBU
YWdPZmZzZXQpLCB0ZW1wMkdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENv
bXBpbGVyOjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNF
aWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgUGF5bG9hZE9mZnNldCks
IHRlbXBHUFIpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRk
cmVzcyhvYmplY3RHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0
KSArIFRhZ09mZnNldCksIHRlbXAyR1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OkFkZHJlc3Mob2JqZWN0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93
blBvbHlQcm90b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7CiAgICAgICAgICAg
ICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wMkdQUiwgdGVtcEdQUiwgbm9kZSk7CiAjZW5kaWYKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDg0NiwxOCArMTA4NDIsMTcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3RvdHlwZQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVj
dHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKLSAgICAgICAgYXV0byBpc01vbm9Q
cm90byA9IG1faml0LmJyYW5jaElmTm90SW50MzIoSlNWYWx1ZVJlZ3ModGVtcEdQUikpOwotICAg
ICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cih0ZW1wR1BSLCB0ZW1wR1BSKTsKLSAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBK
SVRDb21waWxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
KSwgdGVtcEdQUik7Ci0gICAgICAgIGlzTW9ub1Byb3RvLmxpbmsoJm1faml0KTsKKyAgICAgICAg
YXV0byBoYXNNb25vUHJvdG8gPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblpl
cm8sIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
b2JqZWN0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90b09mZnNldCkpLCB0
ZW1wR1BSKTsKKyAgICAgICAgaGFzTW9ub1Byb3RvLmxpbmsoJm1faml0KTsKICAgICAgICAganNW
YWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKICNlbHNlCiAgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNl
dCgpICsgVGFnT2Zmc2V0KSwgdGVtcDJHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSAr
IFBheWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsKLSAgICAgICAgYXV0byBpc01vbm9Qcm90byA9IG1f
aml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHRlbXAyR1BSLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVy
OjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwg
SlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgVGFnT2Zmc2V0KSwgdGVtcDJHUFIp
OwotICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmplY3RHUFIs
IHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7Ci0gICAgICAgIGlzTW9ub1By
b3RvLmxpbmsoJm1faml0KTsKKyAgICAgICAgYXV0byBoYXNNb25vUHJvdG8gPSBtX2ppdC5icmFu
Y2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCB0ZW1wMkdQUiwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKG9iamVjdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZz
ZXQpICsgVGFnT2Zmc2V0KSwgdGVtcDJHUFIpOworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OkFkZHJlc3Mob2JqZWN0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQ
cm90b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7CisgICAgICAgIGhhc01vbm9Q
cm90by5saW5rKCZtX2ppdCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcDJHUFIsIHRlbXBH
UFIsIG5vZGUpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyMzY5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQ3NCw5ICszNDc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICBpZiAoaGFzUG9seVByb3RvICYmICFoYXNNb25vUHJvdG8pIHsKLSAg
ICAgICAgICAgICAgICAgICAgTFZhbHVlIHByb3RvdHlwZUJpdHMgPSBtX291dC5sb2FkNjQoc3Ry
dWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9wcm90b3R5cGUpOwotICAgICAgICAgICAgICAgICAg
ICBMVmFsdWUgaW5kZXggPSBtX291dC5iaXRBbmQocHJvdG90eXBlQml0cywgbV9vdXQuY29uc3RJ
bnQ2NChVSU5UX01BWCkpOwotICAgICAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0Lmxv
YWQ2NChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55TnVtYmVyKCksIG9i
amVjdCwgaW5kZXgsIFNjYWxlRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KSkpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkNjQobV9vdXQu
YmFzZUluZGV4KG1faGVhcHMucHJvcGVydGllcy5hdEFueU51bWJlcigpLCBvYmplY3QsIG1fb3V0
LmNvbnN0SW50NjQoa25vd25Qb2x5UHJvdG9PZmZzZXQpLCBTY2FsZUVpZ2h0LCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zNDg2LDEyICszNDg0LDExIEBA
IHByaXZhdGU6CiAKICAgICAgICAgICAgIExWYWx1ZSBwcm90b3R5cGVCaXRzID0gbV9vdXQubG9h
ZDY0KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfcHJvdG90eXBlKTsKICAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGRpcmVjdFByb3RvdHlwZSA9IG1fb3V0LmFuY2hvcihwcm90b3R5cGVC
aXRzKTsKLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHByb3RvdHlwZUJpdHMpLCB1
bnN1cmUobG9hZFBvbHlQcm90byksIHVuc3VyZShjb250aW51YXRpb24pKTsKKyAgICAgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5pc1plcm82NChwcm90b3R5cGVCaXRzKSwgdW5zdXJlKGxvYWRQ
b2x5UHJvdG8pLCB1bnN1cmUoY29udGludWF0aW9uKSk7CiAKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obG9hZFBvbHlQcm90bywgY29udGludWF0aW9u
KTsKLSAgICAgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LmJpdEFuZChwcm90b3R5cGVCaXRz
LCBtX291dC5jb25zdEludDY0KFVJTlRfTUFYKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9j
ayBwb2x5UHJvdG8gPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICAgICAgbV9vdXQubG9hZDY0
KG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLnByb3BlcnRpZXMuYXRBbnlOdW1iZXIoKSwgb2JqZWN0
LCBpbmRleCwgU2NhbGVFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSkp
OworICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ2NChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5w
cm9wZXJ0aWVzLmF0QW55TnVtYmVyKCksIG9iamVjdCwgbV9vdXQuY29uc3RJbnQ2NChrbm93blBv
bHlQcm90b09mZnNldCksIFNjYWxlRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3Jh
Z2UoKSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC05MDgzLDEy
ICs5MDgwLDExIEBAIHByaXZhdGU6CiAKICAgICAgICAgTFZhbHVlIHByb3RvdHlwZUJpdHMgPSBt
X291dC5sb2FkNjQoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9wcm90b3R5cGUpOwogICAg
ICAgICBWYWx1ZUZyb21CbG9jayBkaXJlY3RQcm90b3R5cGUgPSBtX291dC5hbmNob3IocHJvdG90
eXBlQml0cyk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHByb3RvdHlwZUJpdHMpLCB1
bnN1cmUobG9hZFBvbHlQcm90byksIHVuc3VyZShjb21wYXJlUHJvdG90eXBlKSk7CisgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5pc1plcm82NChwcm90b3R5cGVCaXRzKSwgdW5zdXJlKGxvYWRQ
b2x5UHJvdG8pLCB1bnN1cmUoY29tcGFyZVByb3RvdHlwZSkpOwogCiAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGxvYWRQb2x5UHJvdG8sIGNvbXBhcmVQcm90b3R5cGUpOwotICAgICAgICBMVmFsdWUg
aW5kZXggPSBtX291dC5iaXRBbmQocHJvdG90eXBlQml0cywgbV9vdXQuY29uc3RJbnQ2NChVSU5U
X01BWCkpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBwb2x5UHJvdG8gPSBtX291dC5hbmNob3Io
Ci0gICAgICAgICAgICBtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KG1faGVhcHMucHJvcGVy
dGllcy5hdEFueU51bWJlcigpLCB2YWx1ZSwgaW5kZXgsIFNjYWxlRWlnaHQsIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmxvYWQ2NChtX291
dC5iYXNlSW5kZXgobV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55TnVtYmVyKCksIHZhbHVlLCBtX291
dC5jb25zdEludDY0KGtub3duUG9seVByb3RvT2Zmc2V0KSwgU2NhbGVFaWdodCwgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbXBhcmVQ
cm90b3R5cGUpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbXBhcmVQcm90b3R5cGUsIG5v
dFlldEluc3RhbmNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDkgKzI1MSw5
IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1Q0KTsKICAg
ICBsb2FkMzIoQWRkcmVzcyhyZWdUNCwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIFRh
Z09mZnNldCksIHJlZ1QzKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUNCwgU3RydWN0dXJlOjpw
cm90b3R5cGVPZmZzZXQoKSArIFBheWxvYWRPZmZzZXQpLCByZWdUNCk7Ci0gICAgYXV0byBpc01v
bm9Qcm90byA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkludDMyVGFnKSk7Ci0gICAgbG9hZDMyKEJhc2VJbmRleChyZWdUMiwgcmVnVDQsIFRpbWVzRWln
aHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIFBheWxvYWRPZmZzZXQpLCBy
ZWdUNCk7Ci0gICAgaXNNb25vUHJvdG8ubGluayh0aGlzKTsKKyAgICBhdXRvIGhhc01vbm9Qcm90
byA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5
VmFsdWVUYWcpKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgb2Zmc2V0UmVsYXRpdmVUb0Jh
c2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsgUGF5bG9hZE9mZnNldCksIHJlZ1Q0KTsKKyAgICBo
YXNNb25vUHJvdG8ubGluayh0aGlzKTsKICAgICBtb3ZlKHJlZ1Q0LCByZWdUMik7CiAgICAgSnVt
cCBpc0luc3RhbmNlID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMiwgcmVnVDEpOwogICAgIGJyYW5j
aFRlc3QzMihOb25aZXJvLCByZWdUMikubGlua1RvKGxvb3AsIHRoaXMpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMjM2OTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjgsOSArMTY4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlv
bgogICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgaWYgd2UndmUgaGl0IG51bGwgLSBpZiB3ZSBoYXZl
IHRoZW4gZHJvcCBvdXQgb2YgdGhlIGxvb3AsIGlmIG5vdCBnbyBhZ2Fpbi4KICAgICBlbWl0TG9h
ZFN0cnVjdHVyZSgqdm0oKSwgcmVnVDIsIHJlZ1Q0LCByZWdUMyk7CiAgICAgbG9hZDY0KEFkZHJl
c3MocmVnVDQsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCByZWdUNCk7Ci0gICAgYXV0
byBoYXNNb25vUHJvdG8gPSBicmFuY2hJZk5vdEludDMyKEpTVmFsdWVSZWdzKHJlZ1Q0KSk7Ci0g
ICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDQsIHJlZ1Q0KTsKLSAgICBsb2FkNjQoQmFzZUluZGV4
KHJlZ1QyLCByZWdUNCwgVGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpKSwgcmVnVDQpOworICAgIGF1dG8gaGFzTW9ub1Byb3RvID0gYnJhbmNoVGVzdDY0KE5vblpl
cm8sIHJlZ1Q0KTsKKyAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMiwgb2Zmc2V0UmVsYXRpdmVUb0Jh
c2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpKSwgcmVnVDQpOwogICAgIGhhc01vbm9Qcm90by5saW5r
KHRoaXMpOwogICAgIG1vdmUocmVnVDQsIHJlZ1QyKTsKICAgICBKdW1wIGlzSW5zdGFuY2UgPSBi
cmFuY2hQdHIoRXF1YWwsIHJlZ1QyLCByZWdUMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyMzY5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0OCw3ICsyNDgsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Y3JlYXRlX3RoaXMpCiAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMs
IHN0cnVjdHVyZSk7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKSB7CiAg
ICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0b3ItPnByb3RvdHlwZUZv
ckNvbnN0cnVjdGlvbih2bSwgZXhlYyk7Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgc3RydWN0dXJlLT5wb2x5UHJvdG9PZmZzZXQoKSwgcHJvdG90eXBlKTsKKyAgICAgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBrbm93blBvbHlQcm90b09mZnNldCwgcHJvdG90eXBlKTsK
ICAgICAgICAgICAgIHByb3RvdHlwZS0+ZGlkQmVjb21lUHJvdG90eXBlKCk7CiAgICAgICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFoYXNJbmRleGVkUHJvcGVydGllcyhyZXN1bHQtPmluZGV4
aW5nVHlwZSgpKSwgIldlIHJlbHkgb24gSlNGaW5hbE9iamVjdCBub3Qgc3RhcnRpbmcgb3V0IHdp
dGggYW4gaW5kZXhpbmcgdHlwZSBvdGhlcndpc2Ugd2Ugd291bGQgcG90ZW50aWFsbHkgbmVlZCB0
byBjb252ZXJ0IHRvIHNsb3cgcHV0IHN0b3JhZ2UiKTsKICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjIzNjkzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjM4LDcgKzE2MzgsNyBAQCB2b2lkIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVEaXJl
Y3QoVk0mIHZtCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpj
aGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBwcm90b3R5cGUsIGRl
ZmVycmVkKTsKICAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBuZXdTdHJ1Y3R1cmUpOwogICAgIH0g
ZWxzZQotICAgICAgICBwdXREaXJlY3Qodm0sIHN0cnVjdHVyZSh2bSktPnBvbHlQcm90b09mZnNl
dCgpLCBwcm90b3R5cGUpOworICAgICAgICBwdXREaXJlY3Qodm0sIGtub3duUG9seVByb3RvT2Zm
c2V0LCBwcm90b3R5cGUpOwogCiAgICAgaWYgKCFhbnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0
SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaAkocmV2aXNpb24gMjIzNjkzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsOCArMzEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHR5cGVkZWYgaW50
IFByb3BlcnR5T2Zmc2V0OwogCi1zdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW52YWxpZE9m
ZnNldCA9IC0xOwotc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGZpcnN0T3V0T2ZMaW5lT2Zm
c2V0ID0gMTAwOworc3RhdGljIGNvbnN0ZXhwciBQcm9wZXJ0eU9mZnNldCBpbnZhbGlkT2Zmc2V0
ID0gLTE7CitzdGF0aWMgY29uc3RleHByIFByb3BlcnR5T2Zmc2V0IGZpcnN0T3V0T2ZMaW5lT2Zm
c2V0ID0gMTAwOworc3RhdGljIGNvbnN0ZXhwciBQcm9wZXJ0eU9mZnNldCBrbm93blBvbHlQcm90
b09mZnNldCA9IDA7CitzdGF0aWNfYXNzZXJ0KGtub3duUG9seVByb3RvT2Zmc2V0IDwgZmlyc3RP
dXRPZkxpbmVPZmZzZXQsICJXZSBhc3N1bWUgaW4gYWxsIHRoZSBKSVRzIHRoYXQgdGhlIHBvbHkg
cHJvdG8gb2Zmc2V0IGlzIGFuIGlubGluZSBvZmZzZXQiKTsKIAogLy8gRGVjbGFyZSBhbGwgb2Yg
dGhlIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgdGVuZCB0byBkbyBmb3J3YXJkIGNhbGxzLgogaW5s
aW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAyMjM2OTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDksNyArMzA5LDggQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZShQb2x5UHJv
dG9UYQogICAgICAgICBbJl0gKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCwgUHJvcGVydHlPZmZzZXQgbmV3TGFzdE9mZnNldCkgewogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoU3RydWN0dXJlOjpvdXRPZkxpbmVDYXBhY2l0eShuZXdMYXN0
T2Zmc2V0KSA9PSBvbGRPdXRPZkxpbmVDYXBhY2l0eSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpc0lubGluZU9mZnNldChvZmZzZXQpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+bV9wcm90
b3R5cGUuc2V0KHZtLCByZXN1bHQsIGpzTnVtYmVyKG9mZnNldCkpOworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQob2Zmc2V0ID09IGtub3duUG9seVByb3RvT2Zmc2V0KTsKKyAgICAgICAgICAg
IHJlc3VsdC0+bV9wcm90b3R5cGUuc2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlKCkpOwog
ICAgICAgICAgICAgcmVzdWx0LT5zZXRMYXN0T2Zmc2V0KG5ld0xhc3RPZmZzZXQpOwogICAgICAg
ICB9KTsKIApAQCAtMTE3Miw3ICsxMTczLDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgYwogICAgIG91dC5wcmludCgifSwgIiwgSW5kZXhpbmdUeXBlRHVtcChpbmRl
eGluZ1R5cGUoKSkpOwogICAgIAogICAgIGlmIChoYXNQb2x5UHJvdG8oKSkKLSAgICAgICAgb3V0
LnByaW50KCIsIFBvbHlQcm90byBvZmZzZXQ6IiwgcG9seVByb3RvT2Zmc2V0KCkpOworICAgICAg
ICBvdXQucHJpbnQoIiwgUG9seVByb3RvIG9mZnNldDoiLCBrbm93blBvbHlQcm90b09mZnNldCk7
CiAgICAgZWxzZSBpZiAobV9wcm90b3R5cGUuZ2V0KCkuaXNDZWxsKCkpCiAgICAgICAgIG91dC5w
cmludCgiLCBQcm90bzoiLCBSYXdQb2ludGVyKG1fcHJvdG90eXBlLmdldCgpLmFzQ2VsbCgpKSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZp
c2lvbiAyMjM2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aGFzTW9ub1Byb3RvKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhbV9wcm90b3R5cGUu
Z2V0KCkuaXNJbnQzMigpOworICAgICAgICByZXR1cm4gIW1fcHJvdG90eXBlLmdldCgpLmlzRW1w
dHkoKTsKICAgICB9CiAgICAgYm9vbCBoYXNQb2x5UHJvdG8oKSBjb25zdAogICAgIHsKQEAgLTI3
NSwxMSArMjc1LDYgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChoYXNNb25vUHJv
dG8oKSk7CiAgICAgICAgIHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsKICAgICB9Ci0gICAgUHJv
cGVydHlPZmZzZXQgcG9seVByb3RvT2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKGhhc1BvbHlQcm90bygpKTsKLSAgICAgICAgcmV0dXJuIG1fcHJvdG90eXBlLmdl
dCgpLmFzSW50MzIoKTsKLSAgICB9CiAgICAgSlNWYWx1ZSBzdG9yZWRQcm90b3R5cGUoY29uc3Qg
SlNPYmplY3QqKSBjb25zdDsKICAgICBKU09iamVjdCogc3RvcmVkUHJvdG90eXBlT2JqZWN0KGNv
bnN0IEpTT2JqZWN0KikgY29uc3Q7CiAgICAgU3RydWN0dXJlKiBzdG9yZWRQcm90b3R5cGVTdHJ1
Y3R1cmUoY29uc3QgSlNPYmplY3QqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHJldmlzaW9uIDIyMzY5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBTdHJ1Y3R1
cmU6OnN0b3JlCiAgICAgUkVMRUFTRV9BU1NFUlQob2JqZWN0LT5zdHJ1Y3R1cmUoKSA9PSB0aGlz
KTsKICAgICBpZiAoaGFzTW9ub1Byb3RvKCkpCiAgICAgICAgIHJldHVybiBzdG9yZWRQcm90b3R5
cGVPYmplY3QoKTsKLSAgICBKU1ZhbHVlIHByb3RvID0gb2JqZWN0LT5nZXREaXJlY3QocG9seVBy
b3RvT2Zmc2V0KCkpOworICAgIEpTVmFsdWUgcHJvdG8gPSBvYmplY3QtPmdldERpcmVjdChrbm93
blBvbHlQcm90b09mZnNldCk7CiAgICAgaWYgKHByb3RvLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYXNPYmplY3QocHJvdG8pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324269</attachid>
            <date>2017-10-19 13:09:58 -0700</date>
            <delta_ts>2017-10-19 14:22:04 -0700</delta_ts>
            <desc>test on EWS</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>22134</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJ
KHJldmlzaW9uIDIyMzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDEzICs0MzIsMTIgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRy
YW5zaXRpb25zIG11c3QgZG8gdGhpcyBiZWNhdXNlIHRoZXkgbmVlZCB0byB2ZXJpZnkgdGhlcmUg
aXNuJ3QgYSBzZXR0ZXIgaW4gdGhlIGNoYWluLgogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
TWlzcy9Jbk1pc3MgbmVlZCB0byBkbyB0aGlzIHRvIGVuc3VyZSB0aGVyZSBpc24ndCBhIG5ldyBp
dGVtIGF0IHRoZSBlbmQgb2YgdGhlIGNoYWluIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGhhcyB0aGUgcHJvcGVydHkuCi0gICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBwb2x5UHJvdG9PZmZzZXQgPSBzdHJ1Y3R1cmUtPnBvbHlQcm90b09mZnNldCgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbmxpbmVPZmZzZXQocG9seVBy
b3RvT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0lu
bGluZU9mZnNldChrbm93blBvbHlQcm90b09mZnNldCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHBvbHlQcm90b09mZnNldCkp
LCBiYXNlRm9yQWNjZXNzR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZvckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVU
b0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpKSwgYmFzZUZvckFjY2Vzc0dQUik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVs
cGVyczo6Tm90RXF1YWwsIGJhc2VGb3JBY2Nlc3NHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KFZhbHVlTnVsbCkpKTsKICNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0
aXZlVG9CYXNlKHBvbHlQcm90b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgYmFzZUZvckFjY2Vz
c0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9s
eVByb3RvT2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihD
Q2FsbEhlbHBlcnM6Ok5vblplcm8sIGJhc2VGb3JBY2Nlc3NHUFIpKTsKICNlbmRpZgogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC00NDksMTMgKzQ0OCwxMiBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlV2l0aEd1YXJkKAogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGFzT2JqZWN0KHByb3RvdHlwZSkpLCBiYXNlRm9yQWNjZXNz
R1BSKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7IC8vIFByaW1pdGl2ZXMg
bXVzdCBoYXZlIGEgc3RvcmVkIHByb3RvdHlwZS4gV2UgdXNlIHByb3RvdHlwZUZvckxvb2t1cCBm
b3IgdGhlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IHBvbHlQcm90
b09mZnNldCA9IHN0cnVjdHVyZS0+cG9seVByb3RvT2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0lubGluZU9mZnNldChwb2x5UHJvdG9PZmZzZXQpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5saW5lT2Zmc2V0KGtu
b3duUG9seVByb3RvT2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZvckFjY2Vz
c0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UocG9seVByb3RvT2Zmc2V0KSksIGJhc2VGb3JBY2Nl
c3NHUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlRm9yQWNjZXNzR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBv
bHlQcm90b09mZnNldCkpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpFcXVhbCwg
YmFzZUZvckFjY2Vzc0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSkp
OwogI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUZvckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UocG9seVBy
b3RvT2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZv
ckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsg
UGF5bG9hZE9mZnNldCksIGJhc2VGb3JBY2Nlc3NHUFIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVy
bywgYmFzZUZvckFjY2Vzc0dQUikpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMjIzNjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDcgKzI0OSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25DcmVhdGVUaGkKICAgICAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhh
c1BvbHlQcm90bygpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0ganNDYXN0
PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPnByb3RvdHlwZUZvckNvbnN0cnVjdGlvbih2bSwg
ZXhlYyk7Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgc3RydWN0dXJlLT5wb2x5
UHJvdG9PZmZzZXQoKSwgcHJvdG90eXBlKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBrbm93blBvbHlQcm90b09mZnNldCwgcHJvdG90eXBlKTsKICAgICAgICAgICAgIHByb3Rv
dHlwZS0+ZGlkQmVjb21lUHJvdG90eXBlKCk7CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFoYXNJbmRleGVkUHJvcGVydGllcyhyZXN1bHQtPmluZGV4aW5nVHlwZSgpKSwgIldlIHJl
bHkgb24gSlNGaW5hbE9iamVjdCBub3Qgc3RhcnRpbmcgb3V0IHdpdGggYW4gaW5kZXhpbmcgdHlw
ZSBvdGhlcndpc2Ugd2Ugd291bGQgcG90ZW50aWFsbHkgbmVlZCB0byBjb252ZXJ0IHRvIHNsb3cg
cHV0IHN0b3JhZ2UiKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyMzY5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjQ5LDE3ICszMjQ5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mRm8KICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSgqbV9qaXQudm0oKSwgc2NyYXRj
aFJlZywgc2NyYXRjaDNSZWcsIHNjcmF0Y2gyUmVnKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoM1JlZywgU3RydWN0
dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHNjcmF0Y2gzUmVnKTsKLSAgICBhdXRvIGlzTW9ub1By
b3RvID0gbV9qaXQuYnJhbmNoSWZOb3RJbnQzMihKU1ZhbHVlUmVncyhzY3JhdGNoM1JlZykpOwot
ICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHNjcmF0Y2gzUmVnLCBzY3JhdGNoM1JlZyk7Ci0g
ICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoc2NyYXRjaFJlZywgc2NyYXRj
aDNSZWcsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVT
dG9yYWdlKCkpLCBzY3JhdGNoM1JlZyk7Ci0gICAgaXNNb25vUHJvdG8ubGluaygmbV9qaXQpOwor
ICAgIGF1dG8gaGFzTW9ub1Byb3RvID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpO
b25aZXJvLCBzY3JhdGNoM1JlZyk7CisgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHNjcmF0Y2hSZWcsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0
KSksIHNjcmF0Y2gzUmVnKTsKKyAgICBoYXNNb25vUHJvdG8ubGluaygmbV9qaXQpOwogICAgIG1f
aml0Lm1vdmUoc2NyYXRjaDNSZWcsIHNjcmF0Y2hSZWcpOwogI2Vsc2UKICAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaDNSZWcsIFN0cnVjdHVyZTo6cHJvdG90
eXBlT2Zmc2V0KCkgKyBUYWdPZmZzZXQpLCBzY3JhdGNoMlJlZyk7CiAgICAgbV9qaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2gzUmVnLCBTdHJ1Y3R1cmU6OnByb3RvdHlw
ZU9mZnNldCgpICsgUGF5bG9hZE9mZnNldCksIHNjcmF0Y2gzUmVnKTsKLSAgICBhdXRvIGlzTW9u
b1Byb3RvID0gbV9qaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDJS
ZWcsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6QmFzZUluZGV4KHNjcmF0Y2hSZWcsIHNjcmF0Y2gzUmVnLCBKSVRDb21waWxl
cjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgUGF5bG9h
ZE9mZnNldCksIHNjcmF0Y2gzUmVnKTsKLSAgICBpc01vbm9Qcm90by5saW5rKCZtX2ppdCk7Cisg
ICAgYXV0byBoYXNNb25vUHJvdG8gPSBtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBzY3JhdGNoMlJlZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsK
KyAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgb2Zmc2V0
UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsgUGF5bG9hZE9mZnNldCksIHNj
cmF0Y2gzUmVnKTsKKyAgICBoYXNNb25vUHJvdG8ubGluaygmbV9qaXQpOwogICAgIG1faml0Lm1v
dmUoc2NyYXRjaDNSZWcsIHNjcmF0Y2hSZWcpOwogI2VuZGlmCiAKQEAgLTEwODMwLDE0ICsxMDgy
OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90eXBlCiAKICAgICAg
ICAgICAgIGlmIChoYXNQb2x5UHJvdG8gJiYgIWhhc01vbm9Qcm90bykgewogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKLSAg
ICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cih0ZW1wR1BSLCB0ZW1wR1BSKTsK
LSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmpl
Y3RHUFIsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
NjQoSklUQ29tcGlsZXI6OkFkZHJlc3Mob2JqZWN0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShr
bm93blBvbHlQcm90b09mZnNldCkpLCB0ZW1wR1BSKTsKICAgICAgICAgICAgICAgICBqc1ZhbHVl
UmVzdWx0KHRlbXBHUFIsIG5vZGUpOwogI2Vsc2UKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjpwcm90b3R5cGVP
ZmZzZXQoKSArIFBheWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsKLSAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmplY3RHUFIsIHRlbXBHUFIsIEpJVENv
bXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBU
YWdPZmZzZXQpLCB0ZW1wMkdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENv
bXBpbGVyOjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNF
aWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgUGF5bG9hZE9mZnNldCks
IHRlbXBHUFIpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRk
cmVzcyhvYmplY3RHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0
KSArIFRhZ09mZnNldCksIHRlbXAyR1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OkFkZHJlc3Mob2JqZWN0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93
blBvbHlQcm90b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7CiAgICAgICAgICAg
ICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wMkdQUiwgdGVtcEdQUiwgbm9kZSk7CiAjZW5kaWYKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDg0NiwxOCArMTA4NDIsMTcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3RvdHlwZQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVj
dHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKLSAgICAgICAgYXV0byBpc01vbm9Q
cm90byA9IG1faml0LmJyYW5jaElmTm90SW50MzIoSlNWYWx1ZVJlZ3ModGVtcEdQUikpOwotICAg
ICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cih0ZW1wR1BSLCB0ZW1wR1BSKTsKLSAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBK
SVRDb21waWxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
KSwgdGVtcEdQUik7Ci0gICAgICAgIGlzTW9ub1Byb3RvLmxpbmsoJm1faml0KTsKKyAgICAgICAg
YXV0byBoYXNNb25vUHJvdG8gPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblpl
cm8sIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
b2JqZWN0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90b09mZnNldCkpLCB0
ZW1wR1BSKTsKKyAgICAgICAgaGFzTW9ub1Byb3RvLmxpbmsoJm1faml0KTsKICAgICAgICAganNW
YWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKICNlbHNlCiAgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNl
dCgpICsgVGFnT2Zmc2V0KSwgdGVtcDJHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSAr
IFBheWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsKLSAgICAgICAgYXV0byBpc01vbm9Qcm90byA9IG1f
aml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHRlbXAyR1BSLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVy
OjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwg
SlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgVGFnT2Zmc2V0KSwgdGVtcDJHUFIp
OwotICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmplY3RHUFIs
IHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7Ci0gICAgICAgIGlzTW9ub1By
b3RvLmxpbmsoJm1faml0KTsKKyAgICAgICAgYXV0byBoYXNNb25vUHJvdG8gPSBtX2ppdC5icmFu
Y2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCB0ZW1wMkdQUiwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKG9iamVjdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZz
ZXQpICsgVGFnT2Zmc2V0KSwgdGVtcDJHUFIpOworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OkFkZHJlc3Mob2JqZWN0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQ
cm90b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7CisgICAgICAgIGhhc01vbm9Q
cm90by5saW5rKCZtX2ppdCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcDJHUFIsIHRlbXBH
UFIsIG5vZGUpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyMzY5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQ3NCw5ICszNDc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICBpZiAoaGFzUG9seVByb3RvICYmICFoYXNNb25vUHJvdG8pIHsKLSAg
ICAgICAgICAgICAgICAgICAgTFZhbHVlIHByb3RvdHlwZUJpdHMgPSBtX291dC5sb2FkNjQoc3Ry
dWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9wcm90b3R5cGUpOwotICAgICAgICAgICAgICAgICAg
ICBMVmFsdWUgaW5kZXggPSBtX291dC5iaXRBbmQocHJvdG90eXBlQml0cywgbV9vdXQuY29uc3RJ
bnQ2NChVSU5UX01BWCkpOwotICAgICAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0Lmxv
YWQ2NChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55TnVtYmVyKCksIG9i
amVjdCwgaW5kZXgsIFNjYWxlRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KSkpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkNjQobV9vdXQu
YmFzZUluZGV4KG1faGVhcHMucHJvcGVydGllcy5hdEFueU51bWJlcigpLCBvYmplY3QsIG1fb3V0
LmNvbnN0SW50NjQoa25vd25Qb2x5UHJvdG9PZmZzZXQpLCBTY2FsZUVpZ2h0LCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zNDg2LDEyICszNDg0LDExIEBA
IHByaXZhdGU6CiAKICAgICAgICAgICAgIExWYWx1ZSBwcm90b3R5cGVCaXRzID0gbV9vdXQubG9h
ZDY0KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfcHJvdG90eXBlKTsKICAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGRpcmVjdFByb3RvdHlwZSA9IG1fb3V0LmFuY2hvcihwcm90b3R5cGVC
aXRzKTsKLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHByb3RvdHlwZUJpdHMpLCB1
bnN1cmUobG9hZFBvbHlQcm90byksIHVuc3VyZShjb250aW51YXRpb24pKTsKKyAgICAgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5pc1plcm82NChwcm90b3R5cGVCaXRzKSwgdW5zdXJlKGxvYWRQ
b2x5UHJvdG8pLCB1bnN1cmUoY29udGludWF0aW9uKSk7CiAKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obG9hZFBvbHlQcm90bywgY29udGludWF0aW9u
KTsKLSAgICAgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LmJpdEFuZChwcm90b3R5cGVCaXRz
LCBtX291dC5jb25zdEludDY0KFVJTlRfTUFYKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9j
ayBwb2x5UHJvdG8gPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICAgICAgbV9vdXQubG9hZDY0
KG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLnByb3BlcnRpZXMuYXRBbnlOdW1iZXIoKSwgb2JqZWN0
LCBpbmRleCwgU2NhbGVFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSkp
OworICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ2NChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5w
cm9wZXJ0aWVzLmF0QW55TnVtYmVyKCksIG9iamVjdCwgbV9vdXQuY29uc3RJbnQ2NChrbm93blBv
bHlQcm90b09mZnNldCksIFNjYWxlRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3Jh
Z2UoKSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC05MDgzLDEy
ICs5MDgwLDExIEBAIHByaXZhdGU6CiAKICAgICAgICAgTFZhbHVlIHByb3RvdHlwZUJpdHMgPSBt
X291dC5sb2FkNjQoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9wcm90b3R5cGUpOwogICAg
ICAgICBWYWx1ZUZyb21CbG9jayBkaXJlY3RQcm90b3R5cGUgPSBtX291dC5hbmNob3IocHJvdG90
eXBlQml0cyk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHByb3RvdHlwZUJpdHMpLCB1
bnN1cmUobG9hZFBvbHlQcm90byksIHVuc3VyZShjb21wYXJlUHJvdG90eXBlKSk7CisgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5pc1plcm82NChwcm90b3R5cGVCaXRzKSwgdW5zdXJlKGxvYWRQ
b2x5UHJvdG8pLCB1bnN1cmUoY29tcGFyZVByb3RvdHlwZSkpOwogCiAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGxvYWRQb2x5UHJvdG8sIGNvbXBhcmVQcm90b3R5cGUpOwotICAgICAgICBMVmFsdWUg
aW5kZXggPSBtX291dC5iaXRBbmQocHJvdG90eXBlQml0cywgbV9vdXQuY29uc3RJbnQ2NChVSU5U
X01BWCkpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBwb2x5UHJvdG8gPSBtX291dC5hbmNob3Io
Ci0gICAgICAgICAgICBtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KG1faGVhcHMucHJvcGVy
dGllcy5hdEFueU51bWJlcigpLCB2YWx1ZSwgaW5kZXgsIFNjYWxlRWlnaHQsIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmxvYWQ2NChtX291
dC5iYXNlSW5kZXgobV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55TnVtYmVyKCksIHZhbHVlLCBtX291
dC5jb25zdEludDY0KGtub3duUG9seVByb3RvT2Zmc2V0KSwgU2NhbGVFaWdodCwgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbXBhcmVQ
cm90b3R5cGUpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbXBhcmVQcm90b3R5cGUsIG5v
dFlldEluc3RhbmNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDkgKzI1MSw5
IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1Q0KTsKICAg
ICBsb2FkMzIoQWRkcmVzcyhyZWdUNCwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIFRh
Z09mZnNldCksIHJlZ1QzKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUNCwgU3RydWN0dXJlOjpw
cm90b3R5cGVPZmZzZXQoKSArIFBheWxvYWRPZmZzZXQpLCByZWdUNCk7Ci0gICAgYXV0byBpc01v
bm9Qcm90byA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkludDMyVGFnKSk7Ci0gICAgbG9hZDMyKEJhc2VJbmRleChyZWdUMiwgcmVnVDQsIFRpbWVzRWln
aHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIFBheWxvYWRPZmZzZXQpLCBy
ZWdUNCk7Ci0gICAgaXNNb25vUHJvdG8ubGluayh0aGlzKTsKKyAgICBhdXRvIGhhc01vbm9Qcm90
byA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5
VmFsdWVUYWcpKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgb2Zmc2V0UmVsYXRpdmVUb0Jh
c2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsgUGF5bG9hZE9mZnNldCksIHJlZ1Q0KTsKKyAgICBo
YXNNb25vUHJvdG8ubGluayh0aGlzKTsKICAgICBtb3ZlKHJlZ1Q0LCByZWdUMik7CiAgICAgSnVt
cCBpc0luc3RhbmNlID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMiwgcmVnVDEpOwogICAgIGJyYW5j
aFRlc3QzMihOb25aZXJvLCByZWdUMikubGlua1RvKGxvb3AsIHRoaXMpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMjM2OTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjgsOSArMTY4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlv
bgogICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgaWYgd2UndmUgaGl0IG51bGwgLSBpZiB3ZSBoYXZl
IHRoZW4gZHJvcCBvdXQgb2YgdGhlIGxvb3AsIGlmIG5vdCBnbyBhZ2Fpbi4KICAgICBlbWl0TG9h
ZFN0cnVjdHVyZSgqdm0oKSwgcmVnVDIsIHJlZ1Q0LCByZWdUMyk7CiAgICAgbG9hZDY0KEFkZHJl
c3MocmVnVDQsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCByZWdUNCk7Ci0gICAgYXV0
byBoYXNNb25vUHJvdG8gPSBicmFuY2hJZk5vdEludDMyKEpTVmFsdWVSZWdzKHJlZ1Q0KSk7Ci0g
ICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDQsIHJlZ1Q0KTsKLSAgICBsb2FkNjQoQmFzZUluZGV4
KHJlZ1QyLCByZWdUNCwgVGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpKSwgcmVnVDQpOworICAgIGF1dG8gaGFzTW9ub1Byb3RvID0gYnJhbmNoVGVzdDY0KE5vblpl
cm8sIHJlZ1Q0KTsKKyAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMiwgb2Zmc2V0UmVsYXRpdmVUb0Jh
c2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpKSwgcmVnVDQpOwogICAgIGhhc01vbm9Qcm90by5saW5r
KHRoaXMpOwogICAgIG1vdmUocmVnVDQsIHJlZ1QyKTsKICAgICBKdW1wIGlzSW5zdGFuY2UgPSBi
cmFuY2hQdHIoRXF1YWwsIHJlZ1QyLCByZWdUMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyMzY5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0OCw3ICsyNDgsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Y3JlYXRlX3RoaXMpCiAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMs
IHN0cnVjdHVyZSk7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKSB7CiAg
ICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0b3ItPnByb3RvdHlwZUZv
ckNvbnN0cnVjdGlvbih2bSwgZXhlYyk7Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgc3RydWN0dXJlLT5wb2x5UHJvdG9PZmZzZXQoKSwgcHJvdG90eXBlKTsKKyAgICAgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBrbm93blBvbHlQcm90b09mZnNldCwgcHJvdG90eXBlKTsK
ICAgICAgICAgICAgIHByb3RvdHlwZS0+ZGlkQmVjb21lUHJvdG90eXBlKCk7CiAgICAgICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFoYXNJbmRleGVkUHJvcGVydGllcyhyZXN1bHQtPmluZGV4
aW5nVHlwZSgpKSwgIldlIHJlbHkgb24gSlNGaW5hbE9iamVjdCBub3Qgc3RhcnRpbmcgb3V0IHdp
dGggYW4gaW5kZXhpbmcgdHlwZSBvdGhlcndpc2Ugd2Ugd291bGQgcG90ZW50aWFsbHkgbmVlZCB0
byBjb252ZXJ0IHRvIHNsb3cgcHV0IHN0b3JhZ2UiKTsKICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjIzNjkzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjM4LDcgKzE2MzgsNyBAQCB2b2lkIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVEaXJl
Y3QoVk0mIHZtCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpj
aGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBwcm90b3R5cGUsIGRl
ZmVycmVkKTsKICAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBuZXdTdHJ1Y3R1cmUpOwogICAgIH0g
ZWxzZQotICAgICAgICBwdXREaXJlY3Qodm0sIHN0cnVjdHVyZSh2bSktPnBvbHlQcm90b09mZnNl
dCgpLCBwcm90b3R5cGUpOworICAgICAgICBwdXREaXJlY3Qodm0sIGtub3duUG9seVByb3RvT2Zm
c2V0LCBwcm90b3R5cGUpOwogCiAgICAgaWYgKCFhbnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0
SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjIzNjkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjc1LDE0
ICs2NzUsMTQgQEAgcHVibGljOgogICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIG91dE9mTGluZVN0
b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX2J1dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCk7IH0K
ICAgICBQcm9wZXJ0eVN0b3JhZ2Ugb3V0T2ZMaW5lU3RvcmFnZSgpIHsgcmV0dXJuIG1fYnV0dGVy
Zmx5LT5wcm9wZXJ0eVN0b3JhZ2UoKTsgfQogCi0gICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdAor
ICAgIEFMV0FZU19JTkxJTkUgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRp
b25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gJmlubGluZVN0
b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KV07CiAgICAgICAgIHJldHVybiAm
b3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpXTsKICAg
ICB9CiAKLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQpCisgICAgQUxXQVlTX0lOTElORSBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAg
ewogICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVy
biAmaW5saW5lU3RvcmFnZSgpW29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKQEAgLTcw
NCw3ICs3MDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwdXRPd25EYXRhUHJvcGVydHlNYXlCZUlu
ZGV4KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAKICAgICAvLyBGYXN0IGFjY2VzcyB0byBrbm93biBwcm9wZXJ0eSBvZmZzZXRzLgotICAgIEpT
VmFsdWUgZ2V0RGlyZWN0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbG9j
YXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+Z2V0KCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUgZ2V0RGlyZWN0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbG9jYXRp
b25Gb3JPZmZzZXQob2Zmc2V0KS0+Z2V0KCk7IH0KICAgICB2b2lkIHB1dERpcmVjdChWTSYgdm0s
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9mZnNl
dChvZmZzZXQpLT5zZXQodm0sIHRoaXMsIHZhbHVlKTsgfQogICAgIHZvaWQgcHV0RGlyZWN0V2l0
aG91dEJhcnJpZXIoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IGxvY2F0
aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodmFsdWUpOyB9CiAg
ICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0
aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDIyMzY5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiB0eXBlZGVm
IGludCBQcm9wZXJ0eU9mZnNldDsKIAotc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGludmFs
aWRPZmZzZXQgPSAtMTsKLXN0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBmaXJzdE91dE9mTGlu
ZU9mZnNldCA9IDEwMDsKK3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgaW52YWxpZE9m
ZnNldCA9IC0xOworc3RhdGljIGNvbnN0ZXhwciBQcm9wZXJ0eU9mZnNldCBmaXJzdE91dE9mTGlu
ZU9mZnNldCA9IDEwMDsKK3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQga25vd25Qb2x5
UHJvdG9PZmZzZXQgPSAwOworc3RhdGljX2Fzc2VydChrbm93blBvbHlQcm90b09mZnNldCA8IGZp
cnN0T3V0T2ZMaW5lT2Zmc2V0LCAiV2UgYXNzdW1lIGluIGFsbCB0aGUgSklUcyB0aGF0IHRoZSBw
b2x5IHByb3RvIG9mZnNldCBpcyBhbiBpbmxpbmUgb2Zmc2V0Iik7CiAKIC8vIERlY2xhcmUgYWxs
IG9mIHRoZSBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5IHRlbmQgdG8gZG8gZm9yd2FyZCBjYWxscy4K
IGlubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMjIzNjkzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzA4LDggKzMwOCw5IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGUoUG9s
eVByb3RvVGEKICAgICAgICAgdm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnVu
ZGVyc2NvcmVQcm90b1ByaXZhdGVOYW1lKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLAogICAgICAgICBbJl0gKGNvbnN0IEdDU2FmZUNvbmN1cnJl
bnRKU0xvY2tlciYsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgUHJvcGVydHlPZmZzZXQgbmV3TGFz
dE9mZnNldCkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoU3RydWN0dXJlOjpvdXRPZkxp
bmVDYXBhY2l0eShuZXdMYXN0T2Zmc2V0KSA9PSBvbGRPdXRPZkxpbmVDYXBhY2l0eSk7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0lubGluZU9mZnNldChvZmZzZXQpKTsKLSAgICAgICAg
ICAgIHJlc3VsdC0+bV9wcm90b3R5cGUuc2V0KHZtLCByZXN1bHQsIGpzTnVtYmVyKG9mZnNldCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0ID09IGtub3duUG9seVByb3RvT2Zm
c2V0KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5saW5lT2Zmc2V0KGtub3duUG9s
eVByb3RvT2Zmc2V0KSk7CisgICAgICAgICAgICByZXN1bHQtPm1fcHJvdG90eXBlLnNldFdpdGhv
dXRXcml0ZUJhcnJpZXIoSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0TGFzdE9m
ZnNldChuZXdMYXN0T2Zmc2V0KTsKICAgICAgICAgfSk7CiAKQEAgLTExNzIsNyArMTE3Myw3IEBA
IHZvaWQgU3RydWN0dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGMKICAgICBvdXQucHJpbnQo
In0sICIsIEluZGV4aW5nVHlwZUR1bXAoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBpZiAo
aGFzUG9seVByb3RvKCkpCi0gICAgICAgIG91dC5wcmludCgiLCBQb2x5UHJvdG8gb2Zmc2V0OiIs
IHBvbHlQcm90b09mZnNldCgpKTsKKyAgICAgICAgb3V0LnByaW50KCIsIFBvbHlQcm90byBvZmZz
ZXQ6Iiwga25vd25Qb2x5UHJvdG9PZmZzZXQpOwogICAgIGVsc2UgaWYgKG1fcHJvdG90eXBlLmdl
dCgpLmlzQ2VsbCgpKQogICAgICAgICBvdXQucHJpbnQoIiwgUHJvdG86IiwgUmF3UG9pbnRlciht
X3Byb3RvdHlwZS5nZXQoKS5hc0NlbGwoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjIzNjkzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsy
NjQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc01vbm9Qcm90bygpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gIW1fcHJvdG90eXBlLmdldCgpLmlzSW50MzIoKTsKKyAgICAgICAgcmV0
dXJuICFtX3Byb3RvdHlwZS5nZXQoKS5pc0VtcHR5KCk7CiAgICAgfQogICAgIGJvb2wgaGFzUG9s
eVByb3RvKCkgY29uc3QKICAgICB7CkBAIC0yNzUsMTEgKzI3NSw2IEBAIHB1YmxpYzoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaGFzTW9ub1Byb3RvKCkpOwogICAgICAgICByZXR1cm4gbV9wcm90
b3R5cGUuZ2V0KCk7CiAgICAgfQotICAgIFByb3BlcnR5T2Zmc2V0IHBvbHlQcm90b09mZnNldCgp
IGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChoYXNQb2x5UHJvdG8oKSk7Ci0g
ICAgICAgIHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKS5hc0ludDMyKCk7Ci0gICAgfQogICAgIEpT
VmFsdWUgc3RvcmVkUHJvdG90eXBlKGNvbnN0IEpTT2JqZWN0KikgY29uc3Q7CiAgICAgSlNPYmpl
Y3QqIHN0b3JlZFByb3RvdHlwZU9iamVjdChjb25zdCBKU09iamVjdCopIGNvbnN0OwogICAgIFN0
cnVjdHVyZSogc3RvcmVkUHJvdG90eXBlU3RydWN0dXJlKGNvbnN0IEpTT2JqZWN0KikgY29uc3Q7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oCShyZXZpc2lvbiAyMjM2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDkgKzgyLDcgQEAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlIFN0cnVjdHVyZTo6c3RvcmVkUAogICAgIFJFTEVBU0VfQVNTRVJU
KG9iamVjdC0+c3RydWN0dXJlKCkgPT0gdGhpcyk7CiAgICAgaWYgKGhhc01vbm9Qcm90bygpKQog
ICAgICAgICByZXR1cm4gc3RvcmVkUHJvdG90eXBlKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9w
cm90b3R5cGUuZ2V0KCkuaXNJbnQzMigpKTsKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBt
X3Byb3RvdHlwZS5nZXQoKS5hc0ludDMyKCk7Ci0gICAgcmV0dXJuIG9iamVjdC0+Z2V0RGlyZWN0
KG9mZnNldCk7CisgICAgcmV0dXJuIG9iamVjdC0+Z2V0RGlyZWN0KGtub3duUG9seVByb3RvT2Zm
c2V0KTsKIH0KIAogQUxXQVlTX0lOTElORSBKU09iamVjdCogU3RydWN0dXJlOjpzdG9yZWRQcm90
b3R5cGVPYmplY3QoY29uc3QgSlNPYmplY3QqIG9iamVjdCkgY29uc3QKQEAgLTkyLDcgKzkwLDcg
QEAgQUxXQVlTX0lOTElORSBKU09iamVjdCogU3RydWN0dXJlOjpzdG9yZQogICAgIFJFTEVBU0Vf
QVNTRVJUKG9iamVjdC0+c3RydWN0dXJlKCkgPT0gdGhpcyk7CiAgICAgaWYgKGhhc01vbm9Qcm90
bygpKQogICAgICAgICByZXR1cm4gc3RvcmVkUHJvdG90eXBlT2JqZWN0KCk7Ci0gICAgSlNWYWx1
ZSBwcm90byA9IG9iamVjdC0+Z2V0RGlyZWN0KHBvbHlQcm90b09mZnNldCgpKTsKKyAgICBKU1Zh
bHVlIHByb3RvID0gb2JqZWN0LT5nZXREaXJlY3Qoa25vd25Qb2x5UHJvdG9PZmZzZXQpOwogICAg
IGlmIChwcm90by5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJu
IGFzT2JqZWN0KHByb3RvKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324283</attachid>
            <date>2017-10-19 14:22:04 -0700</date>
            <delta_ts>2017-10-19 14:33:13 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>24457</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzNzEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE3LTEwLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlIHNob3VsZCBoYXJkIGNvZGUgdGhlIHBvbHkgcHJvdG8gb2Zmc2V0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg1MzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVtYnJhY2VzIHRo
YXQgdGhlIHBvbHkgcHJvdG8gb2Zmc2V0IGlzIGFsd2F5cyB6ZXJvLiBJdCdzIGFscmVhZHkKKyAg
ICAgICAgdGhlIGNhc2UgdGhhdCB3ZSB3b3VsZCBhbHdheXMgZ2V0IHRoZSBpbmxpbmUgb2Zmc2V0
IHplcm8gZm9yIHBvbHkgcHJvdG8ganVzdAorICAgICAgICBieSBjb25zdHJ1Y3Rpb24uIFRoaXMg
anVzdCBoYXJkY29kZXMgdGhpcyBhc3N1bXB0aW9uIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlLgor
ICAgICAgICBUaGlzIGFwcGVhcnMgdG8gYmUgYSAxJSBzcGVlZG9tZXRlciBwcm9ncmVzc2lvbiBp
biBteSB0ZXN0aW5nLgorICAgICAgICAKKyAgICAgICAgVGhlIGRvd25zaWRlIG9mIHRoaXMgcGF0
Y2ggaXMgdGhhdCBpdCBtYXkgcmVxdWlyZSBjaGFuZ2luZyBob3cgd2UgZG8KKyAgICAgICAgdGhp
bmdzIHdoZW4gd2UgaW1wbGVtZW50IHBvbHkgcHJvdG8gd2hlbiBpbmhlcml0aW5nIGZyb20gYnVp
bHRpbgorICAgICAgICB0eXBlcy4gSSB0aGluayB3ZSBjYW4gZmFjZSB0aGlzIHByb2JsZW0gd2hl
biB3ZSBkZWNpZGUgdG8gaW1wbGVtZW50CisgICAgICAgIHRoYXQuCisKKyAgICAgICAgKiBieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVX
aXRoR3VhcmQpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVPZik6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2Yp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlRGlyZWN0KToKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb2NhdGlvbkZvck9mZnNldCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb2NhdGlvbkZvck9mZnNldCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3QgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUv
UHJvcGVydHlPZmZzZXQuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpk
dW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN0b3Jl
ZFByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3RvcmVkUHJvdG90
eXBlT2JqZWN0IGNvbnN0KToKKwogMjAxNy0xMC0xOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBUdXJuIHZhcmlvdXMgcG9seSBwcm90byBSRUxFQVNFX0FTU0VS
VHMgaW50byBBU1NFUlRzIGJlY2F1c2UgdGhleSdyZSBvbiB0aGUgaG90IHBhdGggaW4gc3BlZWRv
bWV0ZXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAJKHJldmlzaW9uIDIyMzcxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDEzICs0MzIsMTEgQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFRyYW5zaXRpb25zIG11c3QgZG8gdGhpcyBiZWNhdXNlIHRoZXkgbmVlZCB0byB2ZXJpZnkg
dGhlcmUgaXNuJ3QgYSBzZXR0ZXIgaW4gdGhlIGNoYWluLgogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gTWlzcy9Jbk1pc3MgbmVlZCB0byBkbyB0aGlzIHRvIGVuc3VyZSB0aGVyZSBpc24ndCBh
IG5ldyBpdGVtIGF0IHRoZSBlbmQgb2YgdGhlIGNoYWluIHRoYXQKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGhhcyB0aGUgcHJvcGVydHkuCi0gICAgICAgICAgICAgICAgICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBwb2x5UHJvdG9PZmZzZXQgPSBzdHJ1Y3R1cmUtPnBvbHlQcm90b09mZnNldCgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbmxpbmVPZmZzZXQo
cG9seVByb3RvT2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZvckFjY2Vzc0dQ
Uiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UocG9seVByb3RvT2Zmc2V0KSksIGJhc2VGb3JBY2Nlc3NH
UFIpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlRm9yQWNjZXNzR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQ
cm90b09mZnNldCkpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwg
YmFzZUZvckFjY2Vzc0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSkp
OwogI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUZvckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UocG9seVBy
b3RvT2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZv
ckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsg
UGF5bG9hZE9mZnNldCksIGJhc2VGb3JBY2Nlc3NHUFIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9u
WmVybywgYmFzZUZvckFjY2Vzc0dQUikpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIH0K
QEAgLTQ0OSwxMyArNDQ3LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQo
CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoYXNPYmplY3QocHJvdG90eXBlKSksIGJhc2VGb3JBY2Nlc3NHUFIpOwogICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsgLy8gUHJpbWl0aXZlcyBtdXN0IGhhdmUgYSBzdG9y
ZWQgcHJvdG90eXBlLiBXZSB1c2UgcHJvdG90eXBlRm9yTG9va3VwIGZvciB0aGVtLgotICAgICAg
ICAgICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgcG9seVByb3RvT2Zmc2V0ID0gc3RydWN0
dXJlLT5wb2x5UHJvdG9PZmZzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGlzSW5saW5lT2Zmc2V0KHBvbHlQcm90b09mZnNldCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbmxpbmVPZmZzZXQoa25vd25Qb2x5UHJvdG9PZmZz
ZXQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmxv
YWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlRm9yQWNjZXNzR1BSLCBvZmZzZXRSZWxh
dGl2ZVRvQmFzZShwb2x5UHJvdG9PZmZzZXQpKSwgYmFzZUZvckFjY2Vzc0dQUik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VG
b3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSks
IGJhc2VGb3JBY2Nlc3NHUFIpOwogICAgICAgICAgICAgICAgICAgICAgICAgZmFsbFRocm91Z2gu
YXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6OkVxdWFsLCBiYXNlRm9yQWNjZXNzR1BS
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChWYWx1ZU51bGwpKSk7CiAjZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
Rm9yQWNjZXNzR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShwb2x5UHJvdG9PZmZzZXQpICsgUGF5
bG9hZE9mZnNldCksIGJhc2VGb3JBY2Nlc3NHUFIpOworICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlRm9yQWNjZXNzR1BSLCBvZmZz
ZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwg
YmFzZUZvckFjY2Vzc0dQUik7CiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5h
cHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBiYXNlRm9yQWNjZXNz
R1BSKSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjM3MTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDksNyArMjQ5LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0
ZVRoaQogICAgICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
Yywgc3RydWN0dXJlKTsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsK
ICAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNv
bnN0cnVjdG9yKS0+cHJvdG90eXBlRm9yQ29uc3RydWN0aW9uKHZtLCBleGVjKTsKLSAgICAgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBzdHJ1Y3R1cmUtPnBvbHlQcm90b09mZnNldCgpLCBw
cm90b3R5cGUpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIGtub3duUG9seVBy
b3RvT2Zmc2V0LCBwcm90b3R5cGUpOwogICAgICAgICAgICAgcHJvdG90eXBlLT5kaWRCZWNvbWVQ
cm90b3R5cGUoKTsKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWhhc0luZGV4ZWRQ
cm9wZXJ0aWVzKHJlc3VsdC0+aW5kZXhpbmdUeXBlKCkpLCAiV2UgcmVseSBvbiBKU0ZpbmFsT2Jq
ZWN0IG5vdCBzdGFydGluZyBvdXQgd2l0aCBhbiBpbmRleGluZyB0eXBlIG90aGVyd2lzZSB3ZSB3
b3VsZCBwb3RlbnRpYWxseSBuZWVkIHRvIGNvbnZlcnQgdG8gc2xvdyBwdXQgc3RvcmFnZSIpOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjIzNzEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNDksMTcgKzMy
NDksMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGbwogICAgIG1f
aml0LmVtaXRMb2FkU3RydWN0dXJlKCptX2ppdC52bSgpLCBzY3JhdGNoUmVnLCBzY3JhdGNoM1Jl
Zywgc2NyYXRjaDJSZWcpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgbV9qaXQubG9hZDY0KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2gzUmVnLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9m
ZnNldCgpKSwgc2NyYXRjaDNSZWcpOwotICAgIGF1dG8gaXNNb25vUHJvdG8gPSBtX2ppdC5icmFu
Y2hJZk5vdEludDMyKEpTVmFsdWVSZWdzKHNjcmF0Y2gzUmVnKSk7Ci0gICAgbV9qaXQuemVyb0V4
dGVuZDMyVG9QdHIoc2NyYXRjaDNSZWcsIHNjcmF0Y2gzUmVnKTsKLSAgICBtX2ppdC5sb2FkNjQo
SklUQ29tcGlsZXI6OkJhc2VJbmRleChzY3JhdGNoUmVnLCBzY3JhdGNoM1JlZywgSklUQ29tcGls
ZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSksIHNjcmF0
Y2gzUmVnKTsKLSAgICBpc01vbm9Qcm90by5saW5rKCZtX2ppdCk7CisgICAgYXV0byBoYXNNb25v
UHJvdG8gPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHNjcmF0Y2gz
UmVnKTsKKyAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywg
b2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpKSwgc2NyYXRjaDNSZWcp
OworICAgIGhhc01vbm9Qcm90by5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZShzY3JhdGNo
M1JlZywgc2NyYXRjaFJlZyk7CiAjZWxzZQogICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzY3JhdGNoM1JlZywgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIFRh
Z09mZnNldCksIHNjcmF0Y2gyUmVnKTsKICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaDNSZWcsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBQYXls
b2FkT2Zmc2V0KSwgc2NyYXRjaDNSZWcpOwotICAgIGF1dG8gaXNNb25vUHJvdG8gPSBtX2ppdC5i
cmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMlJlZywgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNl
SW5kZXgoc2NyYXRjaFJlZywgc2NyYXRjaDNSZWcsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBK
U09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBQYXlsb2FkT2Zmc2V0KSwgc2NyYXRj
aDNSZWcpOwotICAgIGlzTW9ub1Byb3RvLmxpbmsoJm1faml0KTsKKyAgICBhdXRvIGhhc01vbm9Q
cm90byA9IG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gyUmVn
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShr
bm93blBvbHlQcm90b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgc2NyYXRjaDNSZWcpOworICAg
IGhhc01vbm9Qcm90by5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZShzY3JhdGNoM1JlZywg
c2NyYXRjaFJlZyk7CiAjZW5kaWYKIApAQCAtMTA4MzAsMTQgKzEwODI5LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGUKIAogICAgICAgICAgICAgaWYgKGhhc1Bv
bHlQcm90byAmJiAhaGFzTW9ub1Byb3RvKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3Ry
dWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOwotICAgICAgICAgICAgICAgIG1f
aml0Lnplcm9FeHRlbmQzMlRvUHRyKHRlbXBHUFIsIHRlbXBHUFIpOwotICAgICAgICAgICAgICAg
IG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6QmFzZUluZGV4KG9iamVjdEdQUiwgdGVtcEdQUiwg
SklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KSksIHRlbXBHUFIpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6
QWRkcmVzcyhvYmplY3RHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zm
c2V0KSksIHRlbXBHUFIpOwogICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwg
bm9kZSk7CiAjZWxzZQotICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgUGF5bG9h
ZE9mZnNldCksIHRlbXBHUFIpOwotICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6QmFzZUluZGV4KG9iamVjdEdQUiwgdGVtcEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWln
aHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIFRhZ09mZnNldCksIHRlbXAy
R1BSKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRl
eChvYmplY3RHUFIsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7CisgICAg
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKG9iamVjdEdQUiwg
b2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsgVGFnT2Zmc2V0KSwg
dGVtcDJHUFIpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRk
cmVzcyhvYmplY3RHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0
KSArIFBheWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsKICAgICAgICAgICAgICAgICBqc1ZhbHVlUmVz
dWx0KHRlbXAyR1BSLCB0ZW1wR1BSLCBub2RlKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEwODQ2LDE4ICsxMDg0MiwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0UHJvdG90eXBlCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBtX2ppdC5sb2Fk
NjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjpwcm90b3R5cGVP
ZmZzZXQoKSksIHRlbXBHUFIpOwotICAgICAgICBhdXRvIGlzTW9ub1Byb3RvID0gbV9qaXQuYnJh
bmNoSWZOb3RJbnQzMihKU1ZhbHVlUmVncyh0ZW1wR1BSKSk7Ci0gICAgICAgIG1faml0Lnplcm9F
eHRlbmQzMlRvUHRyKHRlbXBHUFIsIHRlbXBHUFIpOwotICAgICAgICBtX2ppdC5sb2FkNjQoSklU
Q29tcGlsZXI6OkJhc2VJbmRleChvYmplY3RHUFIsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1l
c0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkpLCB0ZW1wR1BSKTsKLSAg
ICAgICAgaXNNb25vUHJvdG8ubGluaygmbV9qaXQpOworICAgICAgICBhdXRvIGhhc01vbm9Qcm90
byA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywgdGVtcEdQUik7Cisg
ICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6QWRkcmVzcyhvYmplY3RHUFIsIG9mZnNl
dFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSksIHRlbXBHUFIpOworICAgICAg
ICBoYXNNb25vUHJvdG8ubGluaygmbV9qaXQpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXBH
UFIsIG5vZGUpOwogI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBUYWdPZmZzZXQp
LCB0ZW1wMkdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgUGF5bG9hZE9mZnNldCks
IHRlbXBHUFIpOwotICAgICAgICBhdXRvIGlzTW9ub1Byb3RvID0gbV9qaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgdGVtcDJHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQz
MlRhZykpOwotICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmpl
Y3RHUFIsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkgKyBUYWdPZmZzZXQpLCB0ZW1wMkdQUik7Ci0gICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6QmFzZUluZGV4KG9iamVjdEdQUiwgdGVtcEdQUiwgSklUQ29t
cGlsZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIFBh
eWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsKLSAgICAgICAgaXNNb25vUHJvdG8ubGluaygmbV9qaXQp
OworICAgICAgICBhdXRvIGhhc01vbm9Qcm90byA9IG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVy
czo6Tm90RXF1YWwsIHRlbXAyR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRh
ZykpOworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob2JqZWN0R1BS
LCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90b09mZnNldCkgKyBUYWdPZmZzZXQp
LCB0ZW1wMkdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhv
YmplY3RHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSArIFBh
eWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsKKyAgICAgICAgaGFzTW9ub1Byb3RvLmxpbmsoJm1faml0
KTsKICAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wMkdQUiwgdGVtcEdQUiwgbm9kZSk7CiAjZW5k
aWYKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjIzNzEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDc0LDkg
KzM0NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IGlmIChoYXNQb2x5UHJvdG8gJiYgIWhhc01vbm9Qcm90bykgewotICAgICAgICAgICAgICAgICAg
ICBMVmFsdWUgcHJvdG90eXBlQml0cyA9IG1fb3V0LmxvYWQ2NChzdHJ1Y3R1cmUsIG1faGVhcHMu
U3RydWN0dXJlX3Byb3RvdHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleCA9
IG1fb3V0LmJpdEFuZChwcm90b3R5cGVCaXRzLCBtX291dC5jb25zdEludDY0KFVJTlRfTUFYKSk7
Ci0gICAgICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZDY0KG1fb3V0LmJhc2VJ
bmRleChtX2hlYXBzLnByb3BlcnRpZXMuYXRBbnlOdW1iZXIoKSwgb2JqZWN0LCBpbmRleCwgU2Nh
bGVFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSkpOworICAgICAgICAg
ICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWQ2NChtX291dC5iYXNlSW5kZXgobV9oZWFw
cy5wcm9wZXJ0aWVzLmF0QW55TnVtYmVyKCksIG9iamVjdCwgbV9vdXQuY29uc3RJbnQ2NChrbm93
blBvbHlQcm90b09mZnNldCksIFNjYWxlRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKSkpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTM0ODYsMTIgKzM0ODQsMTEgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgTFZhbHVlIHByb3RvdHlwZUJpdHMgPSBtX291dC5sb2FkNjQoc3RydWN0dXJlLCBt
X2hlYXBzLlN0cnVjdHVyZV9wcm90b3R5cGUpOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
ZGlyZWN0UHJvdG90eXBlID0gbV9vdXQuYW5jaG9yKHByb3RvdHlwZUJpdHMpOwotICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzSW50MzIocHJvdG90eXBlQml0cyksIHVuc3VyZShsb2FkUG9seVBy
b3RvKSwgdW5zdXJlKGNvbnRpbnVhdGlvbikpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0LmlzWmVybzY0KHByb3RvdHlwZUJpdHMpLCB1bnN1cmUobG9hZFBvbHlQcm90byksIHVuc3Vy
ZShjb250aW51YXRpb24pKTsKIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhsb2FkUG9seVByb3RvLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAg
TFZhbHVlIGluZGV4ID0gbV9vdXQuYml0QW5kKHByb3RvdHlwZUJpdHMsIG1fb3V0LmNvbnN0SW50
NjQoVUlOVF9NQVgpKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHBvbHlQcm90byA9IG1f
b3V0LmFuY2hvcigKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4
KG1faGVhcHMucHJvcGVydGllcy5hdEFueU51bWJlcigpLCBvYmplY3QsIGluZGV4LCBTY2FsZUVp
Z2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkpKSk7CisgICAgICAgICAgICAg
ICAgbV9vdXQubG9hZDY0KG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLnByb3BlcnRpZXMuYXRBbnlO
dW1iZXIoKSwgb2JqZWN0LCBtX291dC5jb25zdEludDY0KGtub3duUG9seVByb3RvT2Zmc2V0KSwg
U2NhbGVFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSkpOwogICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTkwODMsMTIgKzkwODAsMTEgQEAgcHJp
dmF0ZToKIAogICAgICAgICBMVmFsdWUgcHJvdG90eXBlQml0cyA9IG1fb3V0LmxvYWQ2NChzdHJ1
Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX3Byb3RvdHlwZSk7CiAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGRpcmVjdFByb3RvdHlwZSA9IG1fb3V0LmFuY2hvcihwcm90b3R5cGVCaXRzKTsKLSAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzSW50MzIocHJvdG90eXBlQml0cyksIHVuc3VyZShsb2FkUG9seVBy
b3RvKSwgdW5zdXJlKGNvbXBhcmVQcm90b3R5cGUpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0LmlzWmVybzY0KHByb3RvdHlwZUJpdHMpLCB1bnN1cmUobG9hZFBvbHlQcm90byksIHVuc3Vy
ZShjb21wYXJlUHJvdG90eXBlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obG9hZFBvbHlQ
cm90bywgY29tcGFyZVByb3RvdHlwZSk7Ci0gICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LmJp
dEFuZChwcm90b3R5cGVCaXRzLCBtX291dC5jb25zdEludDY0KFVJTlRfTUFYKSk7CiAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIHBvbHlQcm90byA9IG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgIG1f
b3V0LmxvYWQ2NChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55TnVtYmVy
KCksIHZhbHVlLCBpbmRleCwgU2NhbGVFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpKSkpOworICAgICAgICAgICAgbV9vdXQubG9hZDY0KG1fb3V0LmJhc2VJbmRleChtX2hl
YXBzLnByb3BlcnRpZXMuYXRBbnlOdW1iZXIoKSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoa25v
d25Qb2x5UHJvdG9PZmZzZXQpLCBTY2FsZUVpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVT
dG9yYWdlKCkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29tcGFyZVByb3RvdHlwZSk7CiAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29tcGFyZVByb3RvdHlwZSwgbm90WWV0SW5zdGFuY2UpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAko
cmV2aXNpb24gMjIzNzEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsOSArMjUxLDkgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDQpOwogICAgIGxvYWQzMihBZGRyZXNz
KHJlZ1Q0LCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgVGFnT2Zmc2V0KSwgcmVnVDMp
OwogICAgIGxvYWQzMihBZGRyZXNzKHJlZ1Q0LCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgp
ICsgUGF5bG9hZE9mZnNldCksIHJlZ1Q0KTsKLSAgICBhdXRvIGlzTW9ub1Byb3RvID0gYnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAg
ICBsb2FkMzIoQmFzZUluZGV4KHJlZ1QyLCByZWdUNCwgVGltZXNFaWdodCwgSlNPYmplY3Q6Om9m
ZnNldE9mSW5saW5lU3RvcmFnZSgpICsgUGF5bG9hZE9mZnNldCksIHJlZ1Q0KTsKLSAgICBpc01v
bm9Qcm90by5saW5rKHRoaXMpOworICAgIGF1dG8gaGFzTW9ub1Byb3RvID0gYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworICAg
IGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90
b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDQpOworICAgIGhhc01vbm9Qcm90by5saW5r
KHRoaXMpOwogICAgIG1vdmUocmVnVDQsIHJlZ1QyKTsKICAgICBKdW1wIGlzSW5zdGFuY2UgPSBi
cmFuY2hQdHIoRXF1YWwsIHJlZ1QyLCByZWdUMSk7CiAgICAgYnJhbmNoVGVzdDMyKE5vblplcm8s
IHJlZ1QyKS5saW5rVG8obG9vcCwgdGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIyMzcxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw5ICsxNjgsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgLy8gT3RoZXJ3
aXNlLCBjaGVjayBpZiB3ZSd2ZSBoaXQgbnVsbCAtIGlmIHdlIGhhdmUgdGhlbiBkcm9wIG91dCBv
ZiB0aGUgbG9vcCwgaWYgbm90IGdvIGFnYWluLgogICAgIGVtaXRMb2FkU3RydWN0dXJlKCp2bSgp
LCByZWdUMiwgcmVnVDQsIHJlZ1QzKTsKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUNCwgU3RydWN0
dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHJlZ1Q0KTsKLSAgICBhdXRvIGhhc01vbm9Qcm90byA9
IGJyYW5jaElmTm90SW50MzIoSlNWYWx1ZVJlZ3MocmVnVDQpKTsKLSAgICB6ZXJvRXh0ZW5kMzJU
b1B0cihyZWdUNCwgcmVnVDQpOwotICAgIGxvYWQ2NChCYXNlSW5kZXgocmVnVDIsIHJlZ1Q0LCBU
aW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkpLCByZWdUNCk7Cisg
ICAgYXV0byBoYXNNb25vUHJvdG8gPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDQpOworICAg
IGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90
b09mZnNldCkpLCByZWdUNCk7CiAgICAgaGFzTW9ub1Byb3RvLmxpbmsodGhpcyk7CiAgICAgbW92
ZShyZWdUNCwgcmVnVDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwg
cmVnVDIsIHJlZ1QxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIzNzEwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQ4LDcgKzI0OCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcykKICAg
ICAgICAgcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKTsKICAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsKICAgICAgICAgICAgIEpTT2Jq
ZWN0KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3Rvci0+cHJvdG90eXBlRm9yQ29uc3RydWN0aW9uKHZt
LCBleGVjKTsKLSAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBzdHJ1Y3R1cmUtPnBv
bHlQcm90b09mZnNldCgpLCBwcm90b3R5cGUpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIGtub3duUG9seVByb3RvT2Zmc2V0LCBwcm90b3R5cGUpOwogICAgICAgICAgICAgcHJv
dG90eXBlLT5kaWRCZWNvbWVQcm90b3R5cGUoKTsKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKHJlc3VsdC0+aW5kZXhpbmdUeXBlKCkpLCAiV2Ug
cmVseSBvbiBKU0ZpbmFsT2JqZWN0IG5vdCBzdGFydGluZyBvdXQgd2l0aCBhbiBpbmRleGluZyB0
eXBlIG90aGVyd2lzZSB3ZSB3b3VsZCBwb3RlbnRpYWxseSBuZWVkIHRvIGNvbnZlcnQgdG8gc2xv
dyBwdXQgc3RvcmFnZSIpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyMjM3MTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MzgsNyAr
MTYzOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlwZURpcmVjdChWTSYgdm0KICAgICAg
ICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHByb3RvdHlwZSwgZGVmZXJyZWQpOwogICAgICAg
ICBzZXRTdHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVyZSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHB1
dERpcmVjdCh2bSwgc3RydWN0dXJlKHZtKS0+cG9seVByb3RvT2Zmc2V0KCksIHByb3RvdHlwZSk7
CisgICAgICAgIHB1dERpcmVjdCh2bSwga25vd25Qb2x5UHJvdG9PZmZzZXQsIHByb3RvdHlwZSk7
CiAKICAgICBpZiAoIWFueU9iamVjdEluQ2hhaW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMo
KSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCShyZXZpc2lvbiAyMjM3MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzUsMTQgKzY3NSwxNCBAQCBwdWJs
aWM6CiAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2Ugb3V0T2ZMaW5lU3RvcmFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnV0dGVyZmx5LT5wcm9wZXJ0eVN0b3JhZ2UoKTsgfQogICAgIFByb3BlcnR5U3Rv
cmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgeyByZXR1cm4gbV9idXR0ZXJmbHktPnByb3BlcnR5U3Rv
cmFnZSgpOyB9CiAKLSAgICBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlv
bkZvck9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0CisgICAgQUxXQVlTX0lOTElO
RSBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNJbmxpbmVPZmZz
ZXQob2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiAmaW5saW5lU3RvcmFnZSgpW29mZnNldElu
SW5saW5lU3RvcmFnZShvZmZzZXQpXTsKICAgICAgICAgcmV0dXJuICZvdXRPZkxpbmVTdG9yYWdl
KClbb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCldOwogICAgIH0KIAotICAgIFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkKKyAgICBBTFdBWVNfSU5MSU5FIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0
aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICB7CiAgICAgICAgIGlmIChp
c0lubGluZU9mZnNldChvZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuICZpbmxpbmVTdG9yYWdl
KClbb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCldOwpAQCAtNzA0LDcgKzcwNCw3IEBAIHB1
YmxpYzoKICAgICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgoRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIC8vIEZhc3Qg
YWNjZXNzIHRvIGtub3duIHByb3BlcnR5IG9mZnNldHMuCi0gICAgSlNWYWx1ZSBnZXREaXJlY3Qo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBsb2NhdGlvbkZvck9mZnNldChv
ZmZzZXQpLT5nZXQoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXREaXJlY3QoUHJv
cGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBsb2NhdGlvbkZvck9mZnNldChvZmZz
ZXQpLT5nZXQoKTsgfQogICAgIHZvaWQgcHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldCh2
bSwgdGhpcywgdmFsdWUpOyB9CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0QmFycmllcihQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zm
c2V0KS0+c2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZSk7IH0KICAgICB2b2lkIHB1dERpcmVj
dFVuZGVmaW5lZChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zm
c2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5T2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaAkocmV2aXNpb24gMjIzNzEwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsOCArMzEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHR5cGVkZWYgaW50IFByb3BlcnR5T2Zm
c2V0OwogCi1zdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW52YWxpZE9mZnNldCA9IC0xOwot
c3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ID0gMTAwOwor
c3RhdGljIGNvbnN0ZXhwciBQcm9wZXJ0eU9mZnNldCBpbnZhbGlkT2Zmc2V0ID0gLTE7CitzdGF0
aWMgY29uc3RleHByIFByb3BlcnR5T2Zmc2V0IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ID0gMTAwOwor
c3RhdGljIGNvbnN0ZXhwciBQcm9wZXJ0eU9mZnNldCBrbm93blBvbHlQcm90b09mZnNldCA9IDA7
CitzdGF0aWNfYXNzZXJ0KGtub3duUG9seVByb3RvT2Zmc2V0IDwgZmlyc3RPdXRPZkxpbmVPZmZz
ZXQsICJXZSBhc3N1bWUgaW4gYWxsIHRoZSBKSVRzIHRoYXQgdGhlIHBvbHkgcHJvdG8gb2Zmc2V0
IGlzIGFuIGlubGluZSBvZmZzZXQiKTsKIAogLy8gRGVjbGFyZSBhbGwgb2YgdGhlIGZ1bmN0aW9u
cyBiZWNhdXNlIHRoZXkgdGVuZCB0byBkbyBmb3J3YXJkIGNhbGxzLgogaW5saW5lIHZvaWQgY2hl
Y2tPZmZzZXQoUHJvcGVydHlPZmZzZXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAyMjM3MTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDgsOCAr
MzA4LDkgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZShQb2x5UHJvdG9UYQogICAgICAg
ICB2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudW5kZXJzY29yZVByb3RvUHJp
dmF0ZU5hbWUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksCiAgICAgICAgIFsmXSAoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCBuZXdMYXN0T2Zmc2V0KSB7CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChTdHJ1Y3R1cmU6Om91dE9mTGluZUNhcGFjaXR5KG5ld0xh
c3RPZmZzZXQpID09IG9sZE91dE9mTGluZUNhcGFjaXR5KTsKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpOwotICAgICAgICAgICAgcmVzdWx0LT5tX3By
b3RvdHlwZS5zZXQodm0sIHJlc3VsdCwganNOdW1iZXIob2Zmc2V0KSk7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChvZmZzZXQgPT0ga25vd25Qb2x5UHJvdG9PZmZzZXQpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNJbmxpbmVPZmZzZXQoa25vd25Qb2x5UHJvdG9PZmZzZXQpKTsK
KyAgICAgICAgICAgIHJlc3VsdC0+bV9wcm90b3R5cGUuc2V0V2l0aG91dFdyaXRlQmFycmllcihK
U1ZhbHVlKCkpOwogICAgICAgICAgICAgcmVzdWx0LT5zZXRMYXN0T2Zmc2V0KG5ld0xhc3RPZmZz
ZXQpOwogICAgICAgICB9KTsKIApAQCAtMTE3Miw3ICsxMTczLDcgQEAgdm9pZCBTdHJ1Y3R1cmU6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgYwogICAgIG91dC5wcmludCgifSwgIiwgSW5kZXhpbmdU
eXBlRHVtcChpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIGlmIChoYXNQb2x5UHJvdG8oKSkK
LSAgICAgICAgb3V0LnByaW50KCIsIFBvbHlQcm90byBvZmZzZXQ6IiwgcG9seVByb3RvT2Zmc2V0
KCkpOworICAgICAgICBvdXQucHJpbnQoIiwgUG9seVByb3RvIG9mZnNldDoiLCBrbm93blBvbHlQ
cm90b09mZnNldCk7CiAgICAgZWxzZSBpZiAobV9wcm90b3R5cGUuZ2V0KCkuaXNDZWxsKCkpCiAg
ICAgICAgIG91dC5wcmludCgiLCBQcm90bzoiLCBSYXdQb2ludGVyKG1fcHJvdG90eXBlLmdldCgp
LmFzQ2VsbCgpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCShyZXZpc2lvbiAyMjM3MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIHB1YmxpYzoK
IAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNNb25vUHJvdG8oKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuICFtX3Byb3RvdHlwZS5nZXQoKS5pc0ludDMyKCk7CisgICAgICAgIHJldHVy
biAhbV9wcm90b3R5cGUuZ2V0KCkuaXNFbXB0eSgpOwogICAgIH0KICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaGFzUG9seVByb3RvKCkgY29uc3QKICAgICB7CkBAIC0yNzUsMTEgKzI3NSw2IEBAIHB1
YmxpYzoKICAgICAgICAgQVNTRVJUKGhhc01vbm9Qcm90bygpKTsKICAgICAgICAgcmV0dXJuIG1f
cHJvdG90eXBlLmdldCgpOwogICAgIH0KLSAgICBBTFdBWVNfSU5MSU5FIFByb3BlcnR5T2Zmc2V0
IHBvbHlQcm90b09mZnNldCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaGFzUG9seVBy
b3RvKCkpOwotICAgICAgICByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCkuYXNJbnQzMigpOwotICAg
IH0KICAgICBKU1ZhbHVlIHN0b3JlZFByb3RvdHlwZShjb25zdCBKU09iamVjdCopIGNvbnN0Owog
ICAgIEpTT2JqZWN0KiBzdG9yZWRQcm90b3R5cGVPYmplY3QoY29uc3QgSlNPYmplY3QqKSBjb25z
dDsKICAgICBTdHJ1Y3R1cmUqIHN0b3JlZFByb3RvdHlwZVN0cnVjdHVyZShjb25zdCBKU09iamVj
dCopIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMjIzNzEwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw5ICs4
Miw3IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBTdHJ1Y3R1cmU6OnN0b3JlZFAKICAgICBBU1NF
UlQob2JqZWN0LT5zdHJ1Y3R1cmUoKSA9PSB0aGlzKTsKICAgICBpZiAoaGFzTW9ub1Byb3RvKCkp
CiAgICAgICAgIHJldHVybiBzdG9yZWRQcm90b3R5cGUoKTsKLSAgICBBU1NFUlQobV9wcm90b3R5
cGUuZ2V0KCkuaXNJbnQzMigpKTsKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBtX3Byb3Rv
dHlwZS5nZXQoKS5hc0ludDMyKCk7Ci0gICAgcmV0dXJuIG9iamVjdC0+Z2V0RGlyZWN0KG9mZnNl
dCk7CisgICAgcmV0dXJuIG9iamVjdC0+Z2V0RGlyZWN0KGtub3duUG9seVByb3RvT2Zmc2V0KTsK
IH0KIAogQUxXQVlTX0lOTElORSBKU09iamVjdCogU3RydWN0dXJlOjpzdG9yZWRQcm90b3R5cGVP
YmplY3QoY29uc3QgSlNPYmplY3QqIG9iamVjdCkgY29uc3QKQEAgLTkyLDcgKzkwLDcgQEAgQUxX
QVlTX0lOTElORSBKU09iamVjdCogU3RydWN0dXJlOjpzdG9yZQogICAgIEFTU0VSVChvYmplY3Qt
PnN0cnVjdHVyZSgpID09IHRoaXMpOwogICAgIGlmIChoYXNNb25vUHJvdG8oKSkKICAgICAgICAg
cmV0dXJuIHN0b3JlZFByb3RvdHlwZU9iamVjdCgpOwotICAgIEpTVmFsdWUgcHJvdG8gPSBvYmpl
Y3QtPmdldERpcmVjdChwb2x5UHJvdG9PZmZzZXQoKSk7CisgICAgSlNWYWx1ZSBwcm90byA9IG9i
amVjdC0+Z2V0RGlyZWN0KGtub3duUG9seVByb3RvT2Zmc2V0KTsKICAgICBpZiAocHJvdG8uaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBhc09iamVjdChwcm90
byk7Cg==
</data>
<flag name="review"
          id="343923"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324292</attachid>
            <date>2017-10-19 14:33:13 -0700</date>
            <delta_ts>2017-10-19 15:02:33 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>24375</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzNzEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE3LTEwLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlIHNob3VsZCBoYXJkIGNvZGUgdGhlIHBvbHkgcHJvdG8gb2Zmc2V0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg1MzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBUaGlzIHBhdGNoIGVtYnJhY2VzIHRoYXQg
dGhlIHBvbHkgcHJvdG8gb2Zmc2V0IGlzIGFsd2F5cyB6ZXJvLiBJdCdzIGFscmVhZHkKKyAgICAg
ICAgdGhlIGNhc2UgdGhhdCB3ZSB3b3VsZCBhbHdheXMgZ2V0IHRoZSBpbmxpbmUgb2Zmc2V0IHpl
cm8gZm9yIHBvbHkgcHJvdG8ganVzdAorICAgICAgICBieSBjb25zdHJ1Y3Rpb24uIFRoaXMganVz
dCBoYXJkY29kZXMgdGhpcyBhc3N1bXB0aW9uIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlLgorICAg
ICAgICBUaGlzIGFwcGVhcnMgdG8gYmUgYSAxJSBzcGVlZG9tZXRlciBwcm9ncmVzc2lvbiBpbiBt
eSB0ZXN0aW5nLgorICAgICAgICAKKyAgICAgICAgVGhlIGRvd25zaWRlIG9mIHRoaXMgcGF0Y2gg
aXMgdGhhdCBpdCBtYXkgcmVxdWlyZSBjaGFuZ2luZyBob3cgd2UgZG8KKyAgICAgICAgdGhpbmdz
IHdoZW4gd2UgaW1wbGVtZW50IHBvbHkgcHJvdG8gd2hlbiBpbmhlcml0aW5nIGZyb20gYnVpbHRp
bgorICAgICAgICB0eXBlcy4gSSB0aGluayB3ZSBjYW4gZmFjZSB0aGlzIHByb2JsZW0gd2hlbiB3
ZSBkZWNpZGUgdG8gaW1wbGVtZW50CisgICAgICAgIHRoYXQuCisKKyAgICAgICAgKiBieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRo
R3VhcmQpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVPZik6CisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xP
V19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlRGlyZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pT
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb2NhdGlvbkZvck9mZnNldCBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb2NhdGlvbkZvck9mZnNldCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3QgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJv
cGVydHlPZmZzZXQuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1w
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN0b3JlZFBy
b3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3RvcmVkUHJvdG90eXBl
T2JqZWN0IGNvbnN0KToKKwogMjAxNy0xMC0xOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBUdXJuIHZhcmlvdXMgcG9seSBwcm90byBSRUxFQVNFX0FTU0VSVHMg
aW50byBBU1NFUlRzIGJlY2F1c2UgdGhleSdyZSBvbiB0aGUgaG90IHBhdGggaW4gc3BlZWRvbWV0
ZXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAJKHJldmlzaW9uIDIyMzcxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDEzICs0MzIsMTEgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRyYW5zaXRpb25zIG11c3QgZG8gdGhpcyBiZWNhdXNlIHRoZXkgbmVlZCB0byB2ZXJpZnkgdGhl
cmUgaXNuJ3QgYSBzZXR0ZXIgaW4gdGhlIGNoYWluLgogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gTWlzcy9Jbk1pc3MgbmVlZCB0byBkbyB0aGlzIHRvIGVuc3VyZSB0aGVyZSBpc24ndCBhIG5l
dyBpdGVtIGF0IHRoZSBlbmQgb2YgdGhlIGNoYWluIHRoYXQKICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGhhcyB0aGUgcHJvcGVydHkuCi0gICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0
eU9mZnNldCBwb2x5UHJvdG9PZmZzZXQgPSBzdHJ1Y3R1cmUtPnBvbHlQcm90b09mZnNldCgpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbmxpbmVPZmZzZXQocG9s
eVByb3RvT2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZvckFjY2Vzc0dQUiwg
b2Zmc2V0UmVsYXRpdmVUb0Jhc2UocG9seVByb3RvT2Zmc2V0KSksIGJhc2VGb3JBY2Nlc3NHUFIp
OworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlRm9yQWNjZXNzR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90
b09mZnNldCkpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZh
bGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgYmFz
ZUZvckFjY2Vzc0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSkpOwog
I2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUZvckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UocG9seVByb3Rv
T2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZvckFj
Y2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsgUGF5
bG9hZE9mZnNldCksIGJhc2VGb3JBY2Nlc3NHUFIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVy
bywgYmFzZUZvckFjY2Vzc0dQUikpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIH0KQEAg
LTQ0OSwxMyArNDQ3LDExIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoYXNPYmplY3QocHJvdG90eXBlKSksIGJhc2VGb3JBY2Nlc3NHUFIpOwogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
c3RydWN0dXJlLT5pc09iamVjdCgpKTsgLy8gUHJpbWl0aXZlcyBtdXN0IGhhdmUgYSBzdG9yZWQg
cHJvdG90eXBlLiBXZSB1c2UgcHJvdG90eXBlRm9yTG9va3VwIGZvciB0aGVtLgotICAgICAgICAg
ICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgcG9seVByb3RvT2Zmc2V0ID0gc3RydWN0dXJl
LT5wb2x5UHJvdG9PZmZzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzSW5saW5lT2Zmc2V0KHBvbHlQcm90b09mZnNldCkpOwogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHBvbHlQcm90b09mZnNl
dCkpLCBiYXNlRm9yQWNjZXNzR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2Fk
NjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZvckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRp
dmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpKSwgYmFzZUZvckFjY2Vzc0dQUik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxs
SGVscGVyczo6RXF1YWwsIGJhc2VGb3JBY2Nlc3NHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KFZhbHVlTnVsbCkpKTsKICNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0
aXZlVG9CYXNlKHBvbHlQcm90b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgYmFzZUZvckFjY2Vz
c0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9s
eVByb3RvT2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihD
Q2FsbEhlbHBlcnM6Olplcm8sIGJhc2VGb3JBY2Nlc3NHUFIpKTsKICNlbmRpZgogICAgICAgICAg
ICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDIyMzcxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw3ICsyNDksNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpCiAgICAgICAgIEpTT2JqZWN0KiBy
ZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpOwogICAgICAgICBp
ZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIHBy
b3RvdHlwZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5wcm90b3R5cGVGb3JD
b25zdHJ1Y3Rpb24odm0sIGV4ZWMpOwotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IHN0cnVjdHVyZS0+cG9seVByb3RvT2Zmc2V0KCksIHByb3RvdHlwZSk7CisgICAgICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwga25vd25Qb2x5UHJvdG9PZmZzZXQsIHByb3RvdHlwZSk7CiAg
ICAgICAgICAgICBwcm90b3R5cGUtPmRpZEJlY29tZVByb3RvdHlwZSgpOwogICAgICAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghaGFzSW5kZXhlZFByb3BlcnRpZXMocmVzdWx0LT5pbmRleGlu
Z1R5cGUoKSksICJXZSByZWx5IG9uIEpTRmluYWxPYmplY3Qgbm90IHN0YXJ0aW5nIG91dCB3aXRo
IGFuIGluZGV4aW5nIHR5cGUgb3RoZXJ3aXNlIHdlIHdvdWxkIHBvdGVudGlhbGx5IG5lZWQgdG8g
Y29udmVydCB0byBzbG93IHB1dCBzdG9yYWdlIik7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAy
MjM3MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzI0OSwxNyArMzI0OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5zdGFuY2VPZkZvCiAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUoKm1f
aml0LnZtKCksIHNjcmF0Y2hSZWcsIHNjcmF0Y2gzUmVnLCBzY3JhdGNoMlJlZyk7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2Ny
YXRjaDNSZWcsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCBzY3JhdGNoM1JlZyk7Ci0g
ICAgYXV0byBpc01vbm9Qcm90byA9IG1faml0LmJyYW5jaElmTm90SW50MzIoSlNWYWx1ZVJlZ3Mo
c2NyYXRjaDNSZWcpKTsKLSAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihzY3JhdGNoM1JlZywg
c2NyYXRjaDNSZWcpOwotICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6QmFzZUluZGV4KHNj
cmF0Y2hSZWcsIHNjcmF0Y2gzUmVnLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSwgc2NyYXRjaDNSZWcpOwotICAgIGlzTW9ub1Byb3Rv
LmxpbmsoJm1faml0KTsKKyAgICBhdXRvIGhhc01vbm9Qcm90byA9IG1faml0LmJyYW5jaFRlc3Q2
NChKSVRDb21waWxlcjo6Tm9uWmVybywgc2NyYXRjaDNSZWcpOworICAgIG1faml0LmxvYWQ2NChK
SVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93
blBvbHlQcm90b09mZnNldCkpLCBzY3JhdGNoM1JlZyk7CisgICAgaGFzTW9ub1Byb3RvLmxpbmso
Jm1faml0KTsKICAgICBtX2ppdC5tb3ZlKHNjcmF0Y2gzUmVnLCBzY3JhdGNoUmVnKTsKICNlbHNl
CiAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2gzUmVnLCBT
dHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgVGFnT2Zmc2V0KSwgc2NyYXRjaDJSZWcpOwog
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoM1JlZywgU3Ry
dWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIFBheWxvYWRPZmZzZXQpLCBzY3JhdGNoM1JlZyk7
Ci0gICAgYXV0byBpc01vbm9Qcm90byA9IG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90
RXF1YWwsIHNjcmF0Y2gyUmVnLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAg
ICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChzY3JhdGNoUmVnLCBzY3JhdGNo
M1JlZywgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKSArIFBheWxvYWRPZmZzZXQpLCBzY3JhdGNoM1JlZyk7Ci0gICAgaXNNb25vUHJvdG8u
bGluaygmbV9qaXQpOworICAgIGF1dG8gaGFzTW9ub1Byb3RvID0gbV9qaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDJSZWcsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpF
bXB0eVZhbHVlVGFnKSk7CisgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHNj
cmF0Y2hSZWcsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSArIFBh
eWxvYWRPZmZzZXQpLCBzY3JhdGNoM1JlZyk7CisgICAgaGFzTW9ub1Byb3RvLmxpbmsoJm1faml0
KTsKICAgICBtX2ppdC5tb3ZlKHNjcmF0Y2gzUmVnLCBzY3JhdGNoUmVnKTsKICNlbmRpZgogCkBA
IC0xMDgzMCwxNCArMTA4MjksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFBy
b3RvdHlwZQogCiAgICAgICAgICAgICBpZiAoaGFzUG9seVByb3RvICYmICFoYXNNb25vUHJvdG8p
IHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgp
KSwgdGVtcEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIodGVt
cEdQUiwgdGVtcEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVy
OjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwg
SlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSwgdGVtcEdQUik7CisgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpBZGRyZXNzKG9iamVjdEdQUiwgb2Zmc2V0
UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpKSwgdGVtcEdQUik7CiAgICAgICAg
ICAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKICNlbHNlCi0gICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVj
dHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7Ci0gICAg
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgob2JqZWN0R1BS
LCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpICsgVGFnT2Zmc2V0KSwgdGVtcDJHUFIpOwotICAgICAgICAgICAgICAgIG1f
aml0LmxvYWQzMihKSVRDb21waWxlcjo6QmFzZUluZGV4KG9iamVjdEdQUiwgdGVtcEdQUiwgSklU
Q29tcGlsZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAr
IFBheWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OkFkZHJlc3Mob2JqZWN0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93
blBvbHlQcm90b09mZnNldCkgKyBUYWdPZmZzZXQpLCB0ZW1wMkdQUik7CisgICAgICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKG9iamVjdEdQUiwgb2Zmc2V0UmVs
YXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsgUGF5bG9hZE9mZnNldCksIHRlbXBH
UFIpOwogICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcDJHUFIsIHRlbXBHUFIsIG5v
ZGUpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA4NDYsMTggKzEwODQy
LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGUKIAogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgdGVtcEdQUik7Ci0gICAg
ICAgIGF1dG8gaXNNb25vUHJvdG8gPSBtX2ppdC5icmFuY2hJZk5vdEludDMyKEpTVmFsdWVSZWdz
KHRlbXBHUFIpKTsKLSAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIodGVtcEdQUiwgdGVt
cEdQUik7Ci0gICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6QmFzZUluZGV4KG9iamVj
dEdQUiwgdGVtcEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRP
ZklubGluZVN0b3JhZ2UoKSksIHRlbXBHUFIpOwotICAgICAgICBpc01vbm9Qcm90by5saW5rKCZt
X2ppdCk7CisgICAgICAgIGF1dG8gaGFzTW9ub1Byb3RvID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJ
VENvbXBpbGVyOjpOb25aZXJvLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENv
bXBpbGVyOjpBZGRyZXNzKG9iamVjdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5
UHJvdG9PZmZzZXQpKSwgdGVtcEdQUik7CisgICAgICAgIGhhc01vbm9Qcm90by5saW5rKCZtX2pp
dCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CiAjZWxzZQogICAgICAg
ICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJl
Ojpwcm90b3R5cGVPZmZzZXQoKSArIFRhZ09mZnNldCksIHRlbXAyR1BSKTsKICAgICAgICAgbV9q
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJv
dG90eXBlT2Zmc2V0KCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7Ci0gICAgICAgIGF1dG8g
aXNNb25vUHJvdG8gPSBtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCB0ZW1w
MkdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6QmFzZUluZGV4KG9iamVjdEdQUiwgdGVtcEdQUiwgSklUQ29tcGls
ZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIFRhZ09m
ZnNldCksIHRlbXAyR1BSKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNl
SW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgUGF5bG9hZE9mZnNldCksIHRlbXBHUFIpOwot
ICAgICAgICBpc01vbm9Qcm90by5saW5rKCZtX2ppdCk7CisgICAgICAgIGF1dG8gaGFzTW9ub1By
b3RvID0gbV9qaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgdGVtcDJHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6QWRkcmVzcyhvYmplY3RHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtu
b3duUG9seVByb3RvT2Zmc2V0KSArIFRhZ09mZnNldCksIHRlbXAyR1BSKTsKKyAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKG9iamVjdEdQUiwgb2Zmc2V0UmVsYXRpdmVU
b0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsgUGF5bG9hZE9mZnNldCksIHRlbXBHUFIpOwor
ICAgICAgICBoYXNNb25vUHJvdG8ubGluaygmbV9qaXQpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0
KHRlbXAyR1BSLCB0ZW1wR1BSLCBub2RlKTsKICNlbmRpZgogICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZp
c2lvbiAyMjM3MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NzQsOSArMzQ3NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGhhc1BvbHlQcm90byAmJiAhaGFz
TW9ub1Byb3RvKSB7Ci0gICAgICAgICAgICAgICAgICAgIExWYWx1ZSBwcm90b3R5cGVCaXRzID0g
bV9vdXQubG9hZDY0KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfcHJvdG90eXBlKTsKLSAg
ICAgICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQuYml0QW5kKHByb3RvdHlwZUJp
dHMsIG1fb3V0LmNvbnN0SW50NjQoVUlOVF9NQVgpKTsKLSAgICAgICAgICAgICAgICAgICAgc2V0
SlNWYWx1ZShtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KG1faGVhcHMucHJvcGVydGllcy5h
dEFueU51bWJlcigpLCBvYmplY3QsIGluZGV4LCBTY2FsZUVpZ2h0LCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkpKSk7CisgICAgICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9v
dXQubG9hZDY0KG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLnByb3BlcnRpZXMuYXRBbnlOdW1iZXIo
KSwgb2JqZWN0LCBtX291dC5jb25zdEludDY0KGtub3duUG9seVByb3RvT2Zmc2V0KSwgU2NhbGVF
aWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSkpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMzQ4
NiwxMiArMzQ4NCwxMSBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBMVmFsdWUgcHJvdG90eXBl
Qml0cyA9IG1fb3V0LmxvYWQ2NChzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX3Byb3RvdHlw
ZSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBkaXJlY3RQcm90b3R5cGUgPSBtX291dC5h
bmNob3IocHJvdG90eXBlQml0cyk7Ci0gICAgICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMihw
cm90b3R5cGVCaXRzKSwgdW5zdXJlKGxvYWRQb2x5UHJvdG8pLCB1bnN1cmUoY29udGludWF0aW9u
KSk7CisgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQocHJvdG90eXBlQml0
cyksIHVuc3VyZShsb2FkUG9seVByb3RvKSwgdW5zdXJlKGNvbnRpbnVhdGlvbikpOwogCiAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGxvYWRQb2x5UHJv
dG8sIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5iaXRB
bmQocHJvdG90eXBlQml0cywgbV9vdXQuY29uc3RJbnQ2NChVSU5UX01BWCkpOwogICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgcG9seVByb3RvID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAg
ICAgIG1fb3V0LmxvYWQ2NChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55
TnVtYmVyKCksIG9iamVjdCwgaW5kZXgsIFNjYWxlRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSkpKTsKKyAgICAgICAgICAgICAgICBtX291dC5sb2FkNjQobV9vdXQuYmFz
ZUluZGV4KG1faGVhcHMucHJvcGVydGllcy5hdEFueU51bWJlcigpLCBvYmplY3QsIG1fb3V0LmNv
bnN0SW50NjQoa25vd25Qb2x5UHJvdG9PZmZzZXQpLCBTY2FsZUVpZ2h0LCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCkpKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwpAQCAtOTA4MywxMiArOTA4MCwxMSBAQCBwcml2YXRlOgogCiAgICAgICAgIExWYWx1ZSBw
cm90b3R5cGVCaXRzID0gbV9vdXQubG9hZDY0KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVf
cHJvdG90eXBlKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZGlyZWN0UHJvdG90eXBlID0gbV9v
dXQuYW5jaG9yKHByb3RvdHlwZUJpdHMpOwotICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMihw
cm90b3R5cGVCaXRzKSwgdW5zdXJlKGxvYWRQb2x5UHJvdG8pLCB1bnN1cmUoY29tcGFyZVByb3Rv
dHlwZSkpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQocHJvdG90eXBlQml0
cyksIHVuc3VyZShsb2FkUG9seVByb3RvKSwgdW5zdXJlKGNvbXBhcmVQcm90b3R5cGUpKTsKIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhsb2FkUG9seVByb3RvLCBjb21wYXJlUHJvdG90eXBlKTsK
LSAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQuYml0QW5kKHByb3RvdHlwZUJpdHMsIG1fb3V0
LmNvbnN0SW50NjQoVUlOVF9NQVgpKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcG9seVByb3Rv
ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgbV9vdXQubG9hZDY0KG1fb3V0LmJhc2VJbmRl
eChtX2hlYXBzLnByb3BlcnRpZXMuYXRBbnlOdW1iZXIoKSwgdmFsdWUsIGluZGV4LCBTY2FsZUVp
Z2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkpKSk7CisgICAgICAgICAgICBt
X291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KG1faGVhcHMucHJvcGVydGllcy5hdEFueU51bWJl
cigpLCB2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChrbm93blBvbHlQcm90b09mZnNldCksIFNjYWxl
RWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSkpKTsKICAgICAgICAgbV9v
dXQuanVtcChjb21wYXJlUHJvdG90eXBlKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb21w
YXJlUHJvdG90eXBlLCBub3RZZXRJbnN0YW5jZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMjM3MTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1MSw5ICsyNTEsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0
aW9uCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCByZWdUNCk7CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDQsIFN0cnVjdHVyZTo6cHJvdG90
eXBlT2Zmc2V0KCkgKyBUYWdPZmZzZXQpLCByZWdUMyk7CiAgICAgbG9hZDMyKEFkZHJlc3MocmVn
VDQsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDQp
OwotICAgIGF1dG8gaXNNb25vUHJvdG8gPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIGxvYWQzMihCYXNlSW5kZXgocmVnVDIs
IHJlZ1Q0LCBUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBQ
YXlsb2FkT2Zmc2V0KSwgcmVnVDQpOwotICAgIGlzTW9ub1Byb3RvLmxpbmsodGhpcyk7CisgICAg
YXV0byBoYXNNb25vUHJvdG8gPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIG9m
ZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSArIFBheWxvYWRPZmZzZXQp
LCByZWdUNCk7CisgICAgaGFzTW9ub1Byb3RvLmxpbmsodGhpcyk7CiAgICAgbW92ZShyZWdUNCwg
cmVnVDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDIsIHJl
Z1QxKTsKICAgICBicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDIpLmxpbmtUbyhsb29wLCB0aGlz
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNp
b24gMjIzNzEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY4LDkgKzE2OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3Rh
bmNlb2YoSW5zdHJ1Y3Rpb24KICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBu
dWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdh
aW4uCiAgICAgZW1pdExvYWRTdHJ1Y3R1cmUoKnZtKCksIHJlZ1QyLCByZWdUNCwgcmVnVDMpOwog
ICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1Q0LCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwg
cmVnVDQpOwotICAgIGF1dG8gaGFzTW9ub1Byb3RvID0gYnJhbmNoSWZOb3RJbnQzMihKU1ZhbHVl
UmVncyhyZWdUNCkpOwotICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1Q0LCByZWdUNCk7Ci0gICAg
bG9hZDY0KEJhc2VJbmRleChyZWdUMiwgcmVnVDQsIFRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKSksIHJlZ1Q0KTsKKyAgICBhdXRvIGhhc01vbm9Qcm90byA9IGJy
YW5jaFRlc3Q2NChOb25aZXJvLCByZWdUNCk7CisgICAgbG9hZDY0KEFkZHJlc3MocmVnVDIsIG9m
ZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSksIHJlZ1Q0KTsKICAgICBo
YXNNb25vUHJvdG8ubGluayh0aGlzKTsKICAgICBtb3ZlKHJlZ1Q0LCByZWdUMik7CiAgICAgSnVt
cCBpc0luc3RhbmNlID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMiwgcmVnVDEpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAyMjM3MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNyArMjQ4LDcgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlzKQogICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQ
b2x5UHJvdG8oKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGNvbnN0cnVj
dG9yLT5wcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24odm0sIGV4ZWMpOwotICAgICAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIHN0cnVjdHVyZS0+cG9seVByb3RvT2Zmc2V0KCksIHByb3RvdHlw
ZSk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwga25vd25Qb2x5UHJvdG9PZmZz
ZXQsIHByb3RvdHlwZSk7CiAgICAgICAgICAgICBwcm90b3R5cGUtPmRpZEJlY29tZVByb3RvdHlw
ZSgpOwogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghaGFzSW5kZXhlZFByb3BlcnRp
ZXMocmVzdWx0LT5pbmRleGluZ1R5cGUoKSksICJXZSByZWx5IG9uIEpTRmluYWxPYmplY3Qgbm90
IHN0YXJ0aW5nIG91dCB3aXRoIGFuIGluZGV4aW5nIHR5cGUgb3RoZXJ3aXNlIHdlIHdvdWxkIHBv
dGVudGlhbGx5IG5lZWQgdG8gY29udmVydCB0byBzbG93IHB1dCBzdG9yYWdlIik7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJl
dmlzaW9uIDIyMzcxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw3ICsxNjM4LDcgQEAgdm9pZCBKU09iamVjdDo6
c2V0UHJvdG90eXBlRGlyZWN0KFZNJiB2bQogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSA9IFN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZt
KSwgcHJvdG90eXBlLCBkZWZlcnJlZCk7CiAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3U3Ry
dWN0dXJlKTsKICAgICB9IGVsc2UKLSAgICAgICAgcHV0RGlyZWN0KHZtLCBzdHJ1Y3R1cmUodm0p
LT5wb2x5UHJvdG9PZmZzZXQoKSwgcHJvdG90eXBlKTsKKyAgICAgICAgcHV0RGlyZWN0KHZtLCBr
bm93blBvbHlQcm90b09mZnNldCwgcHJvdG90eXBlKTsKIAogICAgIGlmICghYW55T2JqZWN0SW5D
aGFpbk1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDIyMzcx
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3NSwxNCArNjc1LDE0IEBAIHB1YmxpYzoKICAgICBDb25zdFByb3BlcnR5U3Rv
cmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHktPnByb3Bl
cnR5U3RvcmFnZSgpOyB9CiAgICAgUHJvcGVydHlTdG9yYWdlIG91dE9mTGluZVN0b3JhZ2UoKSB7
IHJldHVybiBtX2J1dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCk7IH0KIAotICAgIGNvbnN0IFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkgY29uc3QKKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQogICAgICAgICAgICAg
cmV0dXJuICZpbmxpbmVTdG9yYWdlKClbb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCldOwog
ICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2Uob2Zmc2V0KV07CiAgICAgfQogCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9j
YXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorICAgIEFMV0FZU19JTkxJTkUg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCiAg
ICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3JhZ2Uo
b2Zmc2V0KV07CkBAIC03MDQsNyArNzA0LDcgQEAgcHVibGljOgogICAgIGJvb2wgcHV0T3duRGF0
YVByb3BlcnR5TWF5QmVJbmRleChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogCiAgICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25vd24gcHJvcGVydHkg
b2Zmc2V0cy4KLSAgICBKU1ZhbHVlIGdldERpcmVjdChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNv
bnN0IHsgcmV0dXJuIGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOyB9CisgICAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGdldERpcmVjdChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0
IHsgcmV0dXJuIGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOyB9CiAgICAgdm9pZCBw
dXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsg
bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0KHZtLCB0aGlzLCB2YWx1ZSk7IH0KICAgICB2
b2lkIHB1dERpcmVjdFdpdGhvdXRCYXJyaWVyKFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1
ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKHZhbHVlKTsgfQogICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5o
CShyZXZpc2lvbiAyMjM3MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU9mZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogdHlwZWRlZiBpbnQgUHJvcGVydHlPZmZzZXQ7CiAKLXN0YXRpYyBjb25zdCBQcm9w
ZXJ0eU9mZnNldCBpbnZhbGlkT2Zmc2V0ID0gLTE7Ci1zdGF0aWMgY29uc3QgUHJvcGVydHlPZmZz
ZXQgZmlyc3RPdXRPZkxpbmVPZmZzZXQgPSAxMDA7CitzdGF0aWMgY29uc3RleHByIFByb3BlcnR5
T2Zmc2V0IGludmFsaWRPZmZzZXQgPSAtMTsKK3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZz
ZXQgZmlyc3RPdXRPZkxpbmVPZmZzZXQgPSAxMDA7CitzdGF0aWMgY29uc3RleHByIFByb3BlcnR5
T2Zmc2V0IGtub3duUG9seVByb3RvT2Zmc2V0ID0gMDsKK3N0YXRpY19hc3NlcnQoa25vd25Qb2x5
UHJvdG9PZmZzZXQgPCBmaXJzdE91dE9mTGluZU9mZnNldCwgIldlIGFzc3VtZSBpbiBhbGwgdGhl
IEpJVHMgdGhhdCB0aGUgcG9seSBwcm90byBvZmZzZXQgaXMgYW4gaW5saW5lIG9mZnNldCIpOwog
CiAvLyBEZWNsYXJlIGFsbCBvZiB0aGUgZnVuY3Rpb25zIGJlY2F1c2UgdGhleSB0ZW5kIHRvIGRv
IGZvcndhcmQgY2FsbHMuCiBpbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0eU9mZnNldCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJl
dmlzaW9uIDIyMzcxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw4ICszMDgsOSBAQCBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6Y3JlYXRlKFBvbHlQcm90b1RhCiAgICAgICAgIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS51bmRlcnNjb3JlUHJvdG9Qcml2YXRlTmFtZSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwKICAgICAgICAgWyZdIChjb25z
dCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFByb3Bl
cnR5T2Zmc2V0IG5ld0xhc3RPZmZzZXQpIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKFN0
cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkobmV3TGFzdE9mZnNldCkgPT0gb2xkT3V0T2ZMaW5l
Q2FwYWNpdHkpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbmxpbmVPZmZzZXQob2Zm
c2V0KSk7Ci0gICAgICAgICAgICByZXN1bHQtPm1fcHJvdG90eXBlLnNldCh2bSwgcmVzdWx0LCBq
c051bWJlcihvZmZzZXQpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldCA9PSBr
bm93blBvbHlQcm90b09mZnNldCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0lubGlu
ZU9mZnNldChrbm93blBvbHlQcm90b09mZnNldCkpOworICAgICAgICAgICAgcmVzdWx0LT5tX3By
b3RvdHlwZS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBy
ZXN1bHQtPnNldExhc3RPZmZzZXQobmV3TGFzdE9mZnNldCk7CiAgICAgICAgIH0pOwogCkBAIC0x
MTcyLDcgKzExNzMsNyBAQCB2b2lkIFN0cnVjdHVyZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
CiAgICAgb3V0LnByaW50KCJ9LCAiLCBJbmRleGluZ1R5cGVEdW1wKGluZGV4aW5nVHlwZSgpKSk7
CiAgICAgCiAgICAgaWYgKGhhc1BvbHlQcm90bygpKQotICAgICAgICBvdXQucHJpbnQoIiwgUG9s
eVByb3RvIG9mZnNldDoiLCBwb2x5UHJvdG9PZmZzZXQoKSk7CisgICAgICAgIG91dC5wcmludCgi
LCBQb2x5UHJvdG8gb2Zmc2V0OiIsIGtub3duUG9seVByb3RvT2Zmc2V0KTsKICAgICBlbHNlIGlm
IChtX3Byb3RvdHlwZS5nZXQoKS5pc0NlbGwoKSkKICAgICAgICAgb3V0LnByaW50KCIsIFByb3Rv
OiIsIFJhd1BvaW50ZXIobV9wcm90b3R5cGUuZ2V0KCkuYXNDZWxsKCkpKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDIyMzcxMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjQsNyArMjY0LDcgQEAgcHVibGljOgogCiAgICAgQUxXQVlTX0lOTElORSBib29s
IGhhc01vbm9Qcm90bygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gIW1fcHJvdG90eXBl
LmdldCgpLmlzSW50MzIoKTsKKyAgICAgICAgcmV0dXJuICFtX3Byb3RvdHlwZS5nZXQoKS5pc0Vt
cHR5KCk7CiAgICAgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQb2x5UHJvdG8oKSBjb25z
dAogICAgIHsKQEAgLTI3NSwxMSArMjc1LDYgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaGFz
TW9ub1Byb3RvKCkpOwogICAgICAgICByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7CiAgICAgfQot
ICAgIEFMV0FZU19JTkxJTkUgUHJvcGVydHlPZmZzZXQgcG9seVByb3RvT2Zmc2V0KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNQb2x5UHJvdG8oKSk7Ci0gICAgICAgIHJldHVybiBt
X3Byb3RvdHlwZS5nZXQoKS5hc0ludDMyKCk7Ci0gICAgfQogICAgIEpTVmFsdWUgc3RvcmVkUHJv
dG90eXBlKGNvbnN0IEpTT2JqZWN0KikgY29uc3Q7CiAgICAgSlNPYmplY3QqIHN0b3JlZFByb3Rv
dHlwZU9iamVjdChjb25zdCBKU09iamVjdCopIGNvbnN0OwogICAgIFN0cnVjdHVyZSogc3RvcmVk
UHJvdG90eXBlU3RydWN0dXJlKGNvbnN0IEpTT2JqZWN0KikgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lv
biAyMjM3MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDkgKzgyLDcgQEAgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIFN0cnVjdHVyZTo6c3RvcmVkUAogICAgIEFTU0VSVChvYmplY3QtPnN0cnVjdHVyZSgpID09
IHRoaXMpOwogICAgIGlmIChoYXNNb25vUHJvdG8oKSkKICAgICAgICAgcmV0dXJuIHN0b3JlZFBy
b3RvdHlwZSgpOwotICAgIEFTU0VSVChtX3Byb3RvdHlwZS5nZXQoKS5pc0ludDMyKCkpOwotICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG1fcHJvdG90eXBlLmdldCgpLmFzSW50MzIoKTsKLSAg
ICByZXR1cm4gb2JqZWN0LT5nZXREaXJlY3Qob2Zmc2V0KTsKKyAgICByZXR1cm4gb2JqZWN0LT5n
ZXREaXJlY3Qoa25vd25Qb2x5UHJvdG9PZmZzZXQpOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTT2Jq
ZWN0KiBTdHJ1Y3R1cmU6OnN0b3JlZFByb3RvdHlwZU9iamVjdChjb25zdCBKU09iamVjdCogb2Jq
ZWN0KSBjb25zdApAQCAtOTIsNyArOTAsNyBAQCBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBTdHJ1
Y3R1cmU6OnN0b3JlCiAgICAgQVNTRVJUKG9iamVjdC0+c3RydWN0dXJlKCkgPT0gdGhpcyk7CiAg
ICAgaWYgKGhhc01vbm9Qcm90bygpKQogICAgICAgICByZXR1cm4gc3RvcmVkUHJvdG90eXBlT2Jq
ZWN0KCk7Ci0gICAgSlNWYWx1ZSBwcm90byA9IG9iamVjdC0+Z2V0RGlyZWN0KHBvbHlQcm90b09m
ZnNldCgpKTsKKyAgICBKU1ZhbHVlIHByb3RvID0gb2JqZWN0LT5nZXREaXJlY3Qoa25vd25Qb2x5
UHJvdG9PZmZzZXQpOwogICAgIGlmIChwcm90by5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgcmV0dXJuIGFzT2JqZWN0KHByb3RvKTsK
</data>
<flag name="commit-queue"
          id="343933"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>