<?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>205125</bug_id>
          
          <creation_ts>2019-12-11 10:32:33 -0800</creation_ts>
          <short_desc>Add encoders for MediaPlayerEnum enums</short_desc>
          <delta_ts>2019-12-11 14:25:08 -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>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>205123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1597678</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-11 10:32:33 -0800</bug_when>
    <thetext>Add encoders for MediaPlayerEnum enums</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597679</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-11 10:32:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/57842985&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597709</commentid>
    <comment_count>2</comment_count>
      <attachid>385417</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-11 11:35:59 -0800</bug_when>
    <thetext>Created attachment 385417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597713</commentid>
    <comment_count>3</comment_count>
      <attachid>385418</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-11 11:49:33 -0800</bug_when>
    <thetext>Created attachment 385418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597721</commentid>
    <comment_count>4</comment_count>
      <attachid>385420</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-11 12:04:01 -0800</bug_when>
    <thetext>Created attachment 385420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597794</commentid>
    <comment_count>5</comment_count>
      <attachid>385420</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-11 14:25:05 -0800</bug_when>
    <thetext>Comment on attachment 385420
Patch

Clearing flags on attachment: 385420

Committed r253397: &lt;https://trac.webkit.org/changeset/253397&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597795</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-11 14:25:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385417</attachid>
            <date>2019-12-11 11:35:59 -0800</date>
            <delta_ts>2019-12-11 11:49:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205125-20191211113557.patch</filename>
            <type>text/plain</type>
            <size>127555</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE5MDUzNmRmMzEwYTI0
ODBlZTkzZjlkOGUxZGIwMTcwNzRiMGQwMC4uNGUzN2MwYjFlMzVjM2NlYzFlMGVlMDE5NjE0YThh
NWIzNDcxYjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAxOS0xMi0xMSAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZW5jb2Rl
cnMgZm9yIE1lZGlhUGxheWVyRW51bSBlbnVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Nzg0
Mjk4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0
ZWRDYXBhYmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6
c2V0UHJpdmF0ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNlZWtU
b1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Om1vbml0b3JTb3VyY2VCdWZm
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aXNUeXBlU3VwcG9ydGVkKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnJlbW92ZUNvZGVkRnJhbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXph
dGlvblNlZ21lbnQpOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpjYW5QbGF5VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzZXROZXR3b3JrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwcmVsb2FkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0cmluZ0Zvck5ldHdvcmtTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp2aWRlb0Z1bGxzY3JlZW5HcmF2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnByZWxvYWRWYWx1ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246
OmVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6
OnNldFZpZGVvTGF5ZXJHcmF2aXR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0
UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyRW51bXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZTo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6Om1vdmllTG9hZFR5cGUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnByZXBhcmVUb1BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjppc1JlYWR5Rm9y
VmlkZW9TZXR1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXRQcmVsb2FkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb246Om1ldGFEYXRhQXZhaWxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1
cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVs
bHNjcmVlbkdyYXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjptb3ZpZUxvYWRUeXBlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZW5zdXJlTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzaG91bGRCZVBsYXlpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRz
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmxvYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6bWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpyZWFkeVN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpjYW5Td2l0Y2hUb1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkNvY29hKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bG9hZEZ1bGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnByZXBhcmVUb1BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6c2V0UHJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlRG93
bmxvYWRCdWZmZXJpbmdGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFLmNwcDoKKyAgICAgICAgKGR1bXBSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6bG9hZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmRvU2Vlayk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnNldFJlYWR5U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzZWVrQ29tcGxl
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
dXBkYXRlU3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRTo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6Y3VycmVudE1lZGlhVGltZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRz
VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6dXBkYXRlUmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om9uU2Vzc2lvbkVuZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06
CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2aXR5Ol0pOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakMgc2V0VXBQSVBGb3JWaWRlb1Zp
ZXc6d2l0aEZyYW1lOmluV2luZG93Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWNPYmpDIHBpcERpZENsb3NlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6TW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlh
U291cmNlUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2
YXRlOjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNl
UHJpdmF0ZTo6bWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWFkeVN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpjYW5Td2l0Y2hUb1R5cGUpOgorCiAyMDE5LTEy
LTEwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IGl0IHBvc3NpYmxlIHRvIGFkZCByZWdyZXNzaW9uIHRlc3RzIGZvciBibG9ja2VkIFhQQyBzZXJ2
aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmlu
ZGV4IDYwMzhhZGQ4MzhhYWIyNjQwMzY5MzIyMDExNjRlMzY2NzE1MGEyNWUuLjRiYmIyYmNlNjE4
NzRiN2VlMTQ4YTQxNjg1NTBhNmIxNTY0MzkyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTQ2OCwxMCArNDY4LDExIEBAIE9wdGlvbmFs
PFZlY3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4+IENETTo6Z2V0U3VwcG9ydGVk
Q2FwYWJpbGl0aWVzRm9yCiAgICAgICAgIC8vICAgICAgIHdpdGggcmVzdHJpY3Rpb25zOgogICAg
ICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgICAgIHBh
cmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlLT5taW1lVHlwZSgpKTsKLSAg
ICAgICAgaWYgKCFNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpKSB7CisgICAg
ICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09IE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7CisKICAgICAgICAgICAgIC8vIFRy
eSB3aXRoIE1lZGlhIFNvdXJjZToKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJj
ZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoIU1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFy
YW1ldGVycykpCisgICAgICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJh
bWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGY0NTU4YzczMTkz
MjliM2Q0NDRjMmRjMzRiYzRiODA3NzU3NDZiZTAuLjJhNWFkYjc0ZTliNmVkYjQxNTNjMGNlYTg2
YmNhZTA5ODhjYTVlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBNZWRpYVNvdXJj
ZTo6c2V0UHJpdmF0ZUFuZE9wZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJiBtZWRpYVNvdXJj
ZVByaXZhdGUKICAgICAvLyAgICBSdW4gdGhlICJJZiB0aGUgbWVkaWEgZGF0YSBjYW5ub3QgYmUg
ZmV0Y2hlZCBhdCBhbGwsIGR1ZSB0byBuZXR3b3JrIGVycm9ycywgY2F1c2luZyB0aGUgdXNlciBh
Z2VudCB0byBnaXZlIHVwIHRyeWluZwogICAgIC8vICAgIHRvIGZldGNoIHRoZSByZXNvdXJjZSIg
c3RlcHMgb2YgdGhlIHJlc291cmNlIGZldGNoIGFsZ29yaXRobSdzIG1lZGlhIGRhdGEgcHJvY2Vz
c2luZyBzdGVwcyBsaXN0LgogICAgIGlmICghaXNDbG9zZWQoKSkgewotICAgICAgICBtX21lZGlh
RWxlbWVudC0+bWVkaWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya0Vy
cm9yKTsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHko
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0d29ya0Vycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnNlZWtUb1Rp
bWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQogICAgIGlmICghaGFzQnVmZmVyZWRUaW1lKHRpbWUp
KSB7CiAgICAgICAgIC8vIDEuIElmIHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0
cmlidXRlIGlzIGdyZWF0ZXIgdGhhbiBIQVZFX01FVEFEQVRBLAogICAgICAgICAvLyB0aGVuIHNl
dCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGF0dHJpYnV0ZSB0byBIQVZFX01FVEFE
QVRBLgotICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVN
ZXRhZGF0YSk7CisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKTsKIAogICAgICAgICAvLyAyLiBUaGUgbWVkaWEgZWxl
bWVudCB3YWl0cyB1bnRpbCBhbiBhcHBlbmRCdWZmZXIoKSBvciBhbiBhcHBlbmRTdHJlYW0oKSBj
YWxsIGNhdXNlcyB0aGUgY29kZWQKICAgICAgICAgLy8gZnJhbWUgcHJvY2Vzc2luZyBhbGdvcml0
aG0gdG8gc2V0IHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIHRvIGEg
dmFsdWUgZ3JlYXRlcgpAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6Om1vbml0
b3JTb3VyY2VCdWZmZXJzKCkKIAogICAgIC8vIE5vdGUsIHRoZSBiZWhhdmlvciBpZiBhY3RpdmVT
b3VyY2VCdWZmZXJzIGlzIGVtcHR5IGlzIHVuZGVmaW5lZC4KICAgICBpZiAoIW1fYWN0aXZlU291
cmNlQnVmZmVycykgewotICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5
ZXI6OkhhdmVOb3RoaW5nKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQ0MSw3ICs0NDEsNyBAQCB2b2lkIE1lZGlhU291cmNlOjptb25pdG9yU291cmNlQnVm
ZmVycygpCiAgICAgICAgIC8vIDEuIFNldCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRl
IGF0dHJpYnV0ZSB0byBIQVZFX01FVEFEQVRBLgogICAgICAgICAvLyAyLiBJZiB0aGlzIGlzIHRo
ZSBmaXJzdCB0cmFuc2l0aW9uIHRvIEhBVkVfTUVUQURBVEEsIHRoZW4gcXVldWUgYSB0YXNrIHRv
IGZpcmUgYSBzaW1wbGUgZXZlbnQKICAgICAgICAgLy8gbmFtZWQgbG9hZGVkbWV0YWRhdGEgYXQg
dGhlIG1lZGlhIGVsZW1lbnQuCi0gICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6SGF2ZU1ldGFkYXRhKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGEpOwogCiAgICAgICAgIC8vIDMu
IEFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICByZXR1cm47CkBAIC00NTYsNyArNDU2LDcgQEAg
dm9pZCBNZWRpYVNvdXJjZTo6bW9uaXRvclNvdXJjZUJ1ZmZlcnMoKQogICAgICAgICAvLyAxLiBT
ZXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgdG8gSEFWRV9FTk9V
R0hfREFUQS4KICAgICAgICAgLy8gMi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQgY2FucGxheXRocm91Z2ggYXQgdGhlIG1lZGlhIGVsZW1lbnQuCiAgICAgICAgIC8v
IDMuIFBsYXliYWNrIG1heSByZXN1bWUgYXQgdGhpcyBwb2ludCBpZiBpdCB3YXMgcHJldmlvdXNs
eSBzdXNwZW5kZWQgYnkgYSB0cmFuc2l0aW9uIHRvIEhBVkVfQ1VSUkVOVF9EQVRBLgotICAgICAg
ICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhKTsK
KyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
OjpIYXZlRW5vdWdoRGF0YSk7CiAKICAgICAgICAgaWYgKG1fcGVuZGluZ1NlZWtUaW1lLmlzVmFs
aWQoKSkKICAgICAgICAgICAgIGNvbXBsZXRlU2VlaygpOwpAQCAtNDcxLDcgKzQ3MSw3IEBAIHZv
aWQgTWVkaWFTb3VyY2U6Om1vbml0b3JTb3VyY2VCdWZmZXJzKCkKICAgICAgICAgLy8gMS4gU2V0
IHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIHRvIEhBVkVfRlVUVVJF
X0RBVEEuCiAgICAgICAgIC8vIDIuIElmIHRoZSBwcmV2aW91cyB2YWx1ZSBvZiBIVE1MTWVkaWFF
bGVtZW50LnJlYWR5U3RhdGUgd2FzIGxlc3MgdGhhbiBIQVZFX0ZVVFVSRV9EQVRBLCB0aGVuIHF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNhbnBsYXkgYXQgdGhlIG1l
ZGlhIGVsZW1lbnQuCiAgICAgICAgIC8vIDMuIFBsYXliYWNrIG1heSByZXN1bWUgYXQgdGhpcyBw
b2ludCBpZiBpdCB3YXMgcHJldmlvdXNseSBzdXNwZW5kZWQgYnkgYSB0cmFuc2l0aW9uIHRvIEhB
VkVfQ1VSUkVOVF9EQVRBLgotICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQ
bGF5ZXI6OkhhdmVGdXR1cmVEYXRhKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRnV0dXJlRGF0YSk7CiAKICAgICAgICAgaWYg
KG1fcGVuZGluZ1NlZWtUaW1lLmlzVmFsaWQoKSkKICAgICAgICAgICAgIGNvbXBsZXRlU2Vlaygp
OwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6Om1vbml0b3JTb3VyY2VCdWZm
ZXJzKCkKICAgICAvLyBldmVudCBuYW1lZCBsb2FkZWRkYXRhIGF0IHRoZSBtZWRpYSBlbGVtZW50
LgogICAgIC8vIDMuIFBsYXliYWNrIGlzIHN1c3BlbmRlZCBhdCB0aGlzIHBvaW50IHNpbmNlIHRo
ZSBtZWRpYSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggZGF0YSB0bwogICAgIC8vIGFkdmFu
Y2UgdGhlIG1lZGlhIHRpbWVsaW5lLgotICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhKTsKKyAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUo
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSk7CiAKICAgICBpZiAobV9w
ZW5kaW5nU2Vla1RpbWUuaXNWYWxpZCgpKQogICAgICAgICBjb21wbGV0ZVNlZWsoKTsKQEAgLTYz
NywxMyArNjM3LDEzIEBAIHZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKE9w
dGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgICAgICAgICAgLy8gICAgUnVuIHRo
ZSAiSWYgdGhlIG1lZGlhIGRhdGEgY2Fubm90IGJlIGZldGNoZWQgYXQgYWxsLCBkdWUgdG8gbmV0
d29yayBlcnJvcnMsIGNhdXNpbmcKICAgICAgICAgICAgIC8vICAgIHRoZSB1c2VyIGFnZW50IHRv
IGdpdmUgdXAgdHJ5aW5nIHRvIGZldGNoIHRoZSByZXNvdXJjZSIgc3RlcHMgb2YgdGhlIHJlc291
cmNlIGZldGNoIGFsZ29yaXRobS4KICAgICAgICAgICAgIC8vICAgIE5PVEU6IFRoaXMgc3RlcCBp
cyBoYW5kbGVkIGJ5IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZCgpLgotICAg
ICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6
TmV0d29ya0Vycm9yKTsKKyAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5tZWRpYUxvYWRpbmdG
YWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0d29ya0Vycm9yKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIC8vICDihrMgSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVh
ZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgZ3JlYXRlciB0aGFuIEhBVkVfTk9USElORwogICAgICAgICAg
ICAgLy8gICAgUnVuIHRoZSAiSWYgdGhlIGNvbm5lY3Rpb24gaXMgaW50ZXJydXB0ZWQgYWZ0ZXIg
c29tZSBtZWRpYSBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLCBjYXVzaW5nIHRoZQogICAgICAgICAg
ICAgLy8gICAgdXNlciBhZ2VudCB0byBnaXZlIHVwIHRyeWluZyB0byBmZXRjaCB0aGUgcmVzb3Vy
Y2UiIHN0ZXBzIG9mIHRoZSByZXNvdXJjZSBmZXRjaCBhbGdvcml0aG0uCiAgICAgICAgICAgICAv
LyAgICBOT1RFOiBUaGlzIHN0ZXAgaXMgaGFuZGxlZCBieSBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YUxvYWRpbmdGYWlsZWRGYXRhbGx5KCkuCi0gICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+bWVk
aWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya0Vycm9yKTsKKyAgICAg
ICAgICAgIG1fbWVkaWFFbGVtZW50LT5tZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvcik7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJkZWNvZGUiCkBAIC02NTQsMTIg
KzY1NCwxMiBAQCB2b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25h
bDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKICAgICAgICAgICAgIC8vICAgIFJ1biB0aGUgIklm
IHRoZSBtZWRpYSBkYXRhIGNhbiBiZSBmZXRjaGVkIGJ1dCBpcyBmb3VuZCBieSBpbnNwZWN0aW9u
IHRvIGJlIGluIGFuIHVuc3VwcG9ydGVkCiAgICAgICAgICAgICAvLyAgICBmb3JtYXQsIG9yIGNh
biBvdGhlcndpc2Ugbm90IGJlIHJlbmRlcmVkIGF0IGFsbCIgc3RlcHMgb2YgdGhlIHJlc291cmNl
IGZldGNoIGFsZ29yaXRobS4KICAgICAgICAgICAgIC8vICAgIE5PVEU6IFRoaXMgc3RlcCBpcyBo
YW5kbGVkIGJ5IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZCgpLgotICAgICAg
ICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9y
bWF0RXJyb3IpOworICAgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlhTG9hZGluZ0ZhaWxl
ZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyAg4oazIElmIHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3Rh
dGUgYXR0cmlidXRlIGlzIGdyZWF0ZXIgdGhhbiBIQVZFX05PVEhJTkcKICAgICAgICAgICAgIC8v
ICAgIFJ1biB0aGUgbWVkaWEgZGF0YSBpcyBjb3JydXB0ZWQgc3RlcHMgb2YgdGhlIHJlc291cmNl
IGZldGNoIGFsZ29yaXRobS4KICAgICAgICAgICAgIC8vICAgIE5PVEU6IFRoaXMgc3RlcCBpcyBo
YW5kbGVkIGJ5IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkoKS4K
LSAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5tZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KE1l
ZGlhUGxheWVyOjpEZWNvZGVFcnJvcik7CisgICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+bWVk
aWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpEZWNvZGVF
cnJvcik7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC04OTQsOSArODk0LDkgQEAgYm9vbCBNZWRp
YVNvdXJjZTo6aXNUeXBlU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUo
cGFyYW1ldGVycyk7CiAKICAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHN1cHBvcnRlZCAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVy
biBzdXBwb3J0ZWQgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7
CiAKLSAgICByZXR1cm4gc3VwcG9ydGVkID09IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKKyAg
ICByZXR1cm4gc3VwcG9ydGVkID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9y
dGVkOwogfQogCiBib29sIE1lZGlhU291cmNlOjppc09wZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDA3
ZmIwZGUzZjlmYmMzZGIwYWQ4OTc2Nzk1NjQ2ZTgxMzc3ZWE0ZDUuLmI5ZDQwMDVmMWJkZDE4OTUw
M2E0Y2IzMWYyMGQ5Njg3NDUzMDI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTg4Myw4ICs4ODMsOCBAQCB2b2lk
IFNvdXJjZUJ1ZmZlcjo6cmVtb3ZlQ29kZWRGcmFtZXMoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwg
Y29uc3QgTWVkaWFUaW1lJiBlbgogICAgICAgICAvLyAzLjQgSWYgdGhpcyBvYmplY3QgaXMgaW4g
YWN0aXZlU291cmNlQnVmZmVycywgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gaXMgZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIHN0YXJ0CiAgICAgICAgIC8vIGFuZCBsZXNzIHRoYW4gdGhl
IHJlbW92ZSBlbmQgdGltZXN0YW1wLCBhbmQgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGlz
IGdyZWF0ZXIgdGhhbiBIQVZFX01FVEFEQVRBLCB0aGVuIHNldAogICAgICAgICAvLyB0aGUgSFRN
TE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGF0dHJpYnV0ZSB0byBIQVZFX01FVEFEQVRBIGFuZCBz
dGFsbCBwbGF5YmFjay4KLSAgICAgICAgaWYgKG1fYWN0aXZlICYmIGN1cnJlbnRNZWRpYVRpbWUg
Pj0gc3RhcnQgJiYgY3VycmVudE1lZGlhVGltZSA8IGVuZCAmJiBtX3ByaXZhdGUtPnJlYWR5U3Rh
dGUoKSA+IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEpCi0gICAgICAgICAgICBtX3ByaXZhdGUt
PnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSk7CisgICAgICAgIGlmICht
X2FjdGl2ZSAmJiBjdXJyZW50TWVkaWFUaW1lID49IHN0YXJ0ICYmIGN1cnJlbnRNZWRpYVRpbWUg
PCBlbmQgJiYgbV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZTo6SGF2ZU1ldGFkYXRhKQorICAgICAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGEpOwogICAgIH0KICAgICAKICAgICB1
cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoKTsKQEAgLTEyODUsNyArMTI4NSw3IEBAIHZv
aWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgbV9wZW5kaW5nSW5pdGlhbGl6YXRpb25TZWdtZW50
Rm9yQ2hhbmdlVHlwZSA9IGZhbHNlOwogCiAgICAgLy8gNi4gSWYgdGhlIEhUTUxNZWRpYUVsZW1l
bnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgSEFWRV9OT1RISU5HLCB0aGVuIHJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzOgotICAgIGlmIChtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVBs
YXllcjo6SGF2ZU5vdGhpbmcpIHsKKyAgICBpZiAobV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPT0g
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKSB7CiAgICAgICAgIC8vIDYuMSBJ
ZiBvbmUgb3IgbW9yZSBvYmplY3RzIGluIHNvdXJjZUJ1ZmZlcnMgaGF2ZSBmaXJzdCBpbml0aWFs
aXphdGlvbiBzZWdtZW50IGZsYWcgc2V0IHRvIGZhbHNlLCB0aGVuIGFib3J0IHRoZXNlIHN0ZXBz
LgogICAgICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6ICptX3NvdXJjZS0+c291cmNlQnVm
ZmVycygpKSB7CiAgICAgICAgICAgICBpZiAoIXNvdXJjZUJ1ZmZlci0+bV9yZWNlaXZlZEZpcnN0
SW5pdGlhbGl6YXRpb25TZWdtZW50KQpAQCAtMTI5NCwxNCArMTI5NCwxNCBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoY29uc3QgSW5pdAogCiAgICAgICAgIC8vIDYuMiBTZXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQu
cmVhZHlTdGF0ZSBhdHRyaWJ1dGUgdG8gSEFWRV9NRVRBREFUQS4KICAgICAgICAgLy8gNi4zIFF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGxvYWRlZG1ldGFkYXRhIGF0
IHRoZSBtZWRpYSBlbGVtZW50LgotICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVk
aWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSk7CisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0
ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKTsKICAgICB9CiAKICAgICAv
LyA3LiBJZiB0aGUgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUgYW5kIHRoZSBIVE1MTWVk
aWFFbGVtZW50LnJlYWR5U3RhdGUKICAgICAvLyBhdHRyaWJ1dGUgaXMgZ3JlYXRlciB0aGFuIEhB
VkVfQ1VSUkVOVF9EQVRBLCB0aGVuIHNldCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRl
CiAgICAgLy8gYXR0cmlidXRlIHRvIEhBVkVfTUVUQURBVEEuCi0gICAgaWYgKGFjdGl2ZVRyYWNr
RmxhZyAmJiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA+IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVu
dERhdGEpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2
ZU1ldGFkYXRhKTsKKyAgICBpZiAoYWN0aXZlVHJhY2tGbGFnICYmIG1fcHJpdmF0ZS0+cmVhZHlT
dGF0ZSgpID4gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAgICAg
ICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZl
TWV0YWRhdGEpOwogfQogCiBib29sIFNvdXJjZUJ1ZmZlcjo6dmFsaWRhdGVJbml0aWFsaXphdGlv
blNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JiBzZWdtZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5kZXggMTQ2NmVhYWUyZTE2MmQyZWY4N2E5
N2FkMTdmZmFmYjEyNzQ4NjA5Yy4uN2E4YWY4MmMyZjA5MjEwYTBmOWFkZGI2MTFhMmM3M2ZiNDA4
MmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1l
bnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUKICAgICBNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5
cGUgeyB0eXBlIH07CiAgICAgcGFyYW1ldGVycy51cmwgPSB1cmw7Ci0gICAgaWYgKE1lZGlhUGxh
eWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykpCisgICAgaWYgKE1lZGlhUGxheWVyOjpzdXBw
b3J0c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQpCiAgICAgICAgIHJldHVybiBNZWRpYURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVy
bCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggYzQ4M2UxYzk0Y2EzZGIzYzI0NWI0NTIxYzQwOTZjOWNmOGE0ZmQ5ZC4uNjUyNDMxMjhjZDQx
MTVjY2JkMTVkZmNmMGNmNmVhNDc1YWZkNGEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC04MTYsMTMgKzgxNiwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbgogICAgICAgICB1cGRhdGVTbGVlcERpc2FibGluZygpOwogICAgIGVsc2UgaWYgKG5hbWUg
PT0gcHJlbG9hZEF0dHIpIHsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHZhbHVlLCAibm9uZSIpKQotICAgICAgICAgICAgbV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6
Ok5vbmU7CisgICAgICAgICAgICBtX3ByZWxvYWQgPSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6Tm9u
ZTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUs
ICJtZXRhZGF0YSIpKQotICAgICAgICAgICAgbV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6Ok1ldGFE
YXRhOworICAgICAgICAgICAgbV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6OlByZWxvYWQ6Ok1ldGFE
YXRhOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoZSBzcGVjIGRvZXMgbm90IGRl
ZmluZSBhbiAiaW52YWxpZCB2YWx1ZSBkZWZhdWx0IiBidXQgImF1dG8iIGlzIHN1Z2dlc3RlZCBh
cyB0aGUKICAgICAgICAgICAgIC8vICJtaXNzaW5nIHZhbHVlIGRlZmF1bHQiLCBzbyB1c2UgaXQg
Zm9yIGV2ZXJ5dGhpbmcgZXhjZXB0ICJub25lIiBhbmQgIm1ldGFkYXRhIgotICAgICAgICAgICAg
bV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6OkF1dG87CisgICAgICAgICAgICBtX3ByZWxvYWQgPSBN
ZWRpYVBsYXllcjo6UHJlbG9hZDo6QXV0bzsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBh
dHRyaWJ1dGUgbXVzdCBiZSBpZ25vcmVkIGlmIHRoZSBhdXRvcGxheSBhdHRyaWJ1dGUgaXMgcHJl
c2VudApAQCAtMTE1NSwxMyArMTE1NSwxMyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6Y2Fu
UGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKICAgICAvLyA0LjguMTAuMwog
ICAgIHN3aXRjaCAoc3VwcG9ydCkKICAgICB7Ci0gICAgICAgIGNhc2UgTWVkaWFQbGF5ZXI6Oklz
Tm90U3VwcG9ydGVkOgorICAgICAgICBjYXNlIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Oklz
Tm90U3VwcG9ydGVkOgogICAgICAgICAgICAgY2FuUGxheSA9IGVtcHR5U3RyaW5nKCk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ6
CisgICAgICAgIGNhc2UgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQ6
CiAgICAgICAgICAgICBjYW5QbGF5ID0gIm1heWJlIl9zOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOgorICAgICAgICBjYXNlIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkOgogICAgICAgICAgICAgY2FuUGxheSA9
ICJwcm9iYWJseSJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE0NDYsMTMgKzE0
NDYsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKCkKICAg
ICAgICAgICAgIC8vICAgIGF0dHJpYnV0ZSB3YXMgbGFzdCBjaGFuZ2VkLgogICAgICAgICAgICAg
VVJMIGFic29sdXRlVVJMID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAg
ICAgICAgICBpZiAoYWJzb2x1dGVVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgbWVk
aWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgICAgICAg
ICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVy
cm9yKTsKICAgICAgICAgICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAiZW1w
dHkgJ3NyYyciKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmICghaXNTYWZlVG9Mb2FkVVJMKGFic29sdXRlVVJMLCBDb21wbGFpbikgfHwg
IWRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGFic29sdXRlVVJMLnN0cmluZygpKSkgewotICAgICAg
ICAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOwor
ICAgICAgICAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0
YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCkBAIC0xNTA4LDI2ICsxNTA4LDI2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJl
c291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAKICAg
ICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpIHsKLSAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJv
cik7CisgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
OjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBQYWdlKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpIHsKLSAgICAgICAgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgIG1lZGlhTG9hZGluZ0Zh
aWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBVUkwgdXJsID0gaW5pdGlhbFVSTDsKICAgICBpZiAoIXVybC5p
c0VtcHR5KCkgJiYgIWZyYW1lLT5sb2FkZXIoKS53aWxsTG9hZE1lZGlhRWxlbWVudFVSTCh1cmws
ICp0aGlzKSkgewotICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkZvcm1h
dEVycm9yKTsKKyAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGU6OkZvcm1hdEVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKGF1dG8gZG9jdW1lbnRMb2FkZXIgPSBtYWtl
UmVmUHRyKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkgewogICAgICAgICBpZiAo
cGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9h
ZCh1cmwsIENvbnRlbnRFeHRlbnNpb25zOjpSZXNvdXJjZVR5cGU6Ok1lZGlhLCAqZG9jdW1lbnRM
b2FkZXIpLnN1bW1hcnkuYmxvY2tlZExvYWQpIHsKLSAgICAgICAgICAgIG1lZGlhTG9hZGluZ0Zh
aWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOworICAgICAgICAgICAgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTE1NDIsNyArMTU0Miw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29u
dGVudFR5cGUmIGNvbnRlbnRUCiAgICAgICAgIC8vIFJlc291cmNlcyB0aGF0IGFyZSBub3QgcHJl
c2VudCBpbiB0aGUgbWFuaWZlc3Qgd2lsbCBhbHdheXMgZmFpbCB0byBsb2FkIChhdCBsZWFzdCwg
YWZ0ZXIgdGhlCiAgICAgICAgIC8vIGNhY2hlIGhhcyBiZWVuIHByaW1lZCB0aGUgZmlyc3QgdGlt
ZSksIG1ha2luZyB0aGUgdGVzdGluZyBvZiBvZmZsaW5lIGFwcGxpY2F0aW9ucyBzaW1wbGVyLgog
ICAgICAgICBpZiAoIXJlc291cmNlIHx8IHJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcik7
CisgICAgICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZTo6TmV0d29ya0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
QEAgLTE1OTYsNyArMTU5Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNl
KGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAgICAgICAgICAg
ICAvLyBGb3JnZXQgb3VyIHJlZmVyZW5jZSB0byB0aGUgTWVkaWFTb3VyY2UsIHNvIHdlIGxlYXZl
IGl0IGFsb25lCiAgICAgICAgICAgICAvLyB3aGlsZSBwcm9jZXNzaW5nIHJlbWFpbmRlciBvZiBs
b2FkIGZhaWx1cmUuCiAgICAgICAgICAgICBtX21lZGlhU291cmNlID0gbnVsbHB0cjsKLSAgICAg
ICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOworICAg
ICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZv
cm1hdEVycm9yKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMTYwNSw3ICsxNjA1LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgVVJMJiBpbml0aWFs
VVJMLCBDb250ZW50VHlwZSYgY29udGVudFQKICAgICAgICAgbG9hZEF0dGVtcHRlZCA9IHRydWU7
CiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImxvYWRpbmcgbWVkaWEgc3RyZWFt
IGJsb2IiKTsKICAgICAgICAgaWYgKCFtX3BsYXllci0+bG9hZChtX21lZGlhU3RyZWFtU3JjT2Jq
ZWN0LT5wcml2YXRlU3RyZWFtKCkpKQotICAgICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1l
ZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQo
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3IpOwogICAgIH0KICNlbmRpZgog
CkBAIC0xNjEzLDExICsxNjEzLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291
cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAgICAgICAg
IGxvYWRBdHRlbXB0ZWQgPSB0cnVlOwogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJsb2FkaW5nIGdlbmVyaWMgYmxvYiIpOwogICAgICAgICBpZiAoIW1fcGxheWVyLT5sb2FkKG1f
YmxvYi0+dXJsKCksIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pKQotICAgICAgICAgICAgbWVkaWFM
b2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgICAgICBtZWRp
YUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3IpOwog
ICAgIH0KIAogICAgIGlmICghbG9hZEF0dGVtcHRlZCAmJiAhbV9wbGF5ZXItPmxvYWQodXJsLCBj
b250ZW50VHlwZSwga2V5U3lzdGVtKSkKLSAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlh
UGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAKICAgICAvLyBJZiB0aGVyZSBpcyBu
byBwb3N0ZXIgdG8gZGlzcGxheSwgYWxsb3cgdGhlIG1lZGlhIGVuZ2luZSB0byByZW5kZXIgdmlk
ZW8gZnJhbWVzIGFzIHNvb24gYXMKICAgICAvLyB0aGV5IGFyZSBhdmFpbGFibGUuCkBAIC0yMjEz
LDkgKzIyMTMsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZh
dGFsbHkoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcgogCiAgICAgLy8gMiAtIFNldCB0
aGUgZXJyb3IgYXR0cmlidXRlIHRvIGEgbmV3IE1lZGlhRXJyb3Igb2JqZWN0IHdob3NlIGNvZGUg
YXR0cmlidXRlIGlzCiAgICAgLy8gc2V0IHRvIE1FRElBX0VSUl9ORVRXT1JLL01FRElBX0VSUl9E
RUNPREUuCi0gICAgaWYgKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrRXJyb3IpCisgICAg
aWYgKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvcikKICAg
ICAgICAgbV9lcnJvciA9IE1lZGlhRXJyb3I6OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJf
TkVUV09SSyk7Ci0gICAgZWxzZSBpZiAoZXJyb3IgPT0gTWVkaWFQbGF5ZXI6OkRlY29kZUVycm9y
KQorICAgIGVsc2UgaWYgKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkRlY29k
ZUVycm9yKQogICAgICAgICBtX2Vycm9yID0gTWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlhRXJyb3I6
Ok1FRElBX0VSUl9ERUNPREUpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0yMjg0LDIwICsyMjg0LDYgQEAgc3RhdGljIHZvaWQgbG9nTWVkaWFMb2FkUmVxdWVz
dChQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lZGlhRW5naW5lLCBjb25zdCBTdHIKICAgICBw
YWdlLT5zYXdNZWRpYUVuZ2luZShtZWRpYUVuZ2luZSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgc3Ry
aW5nRm9yTmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgc3RhdGUpCi17Ci0g
ICAgc3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2UgTWVkaWFQbGF5ZXI6OkVtcHR5OiByZXR1cm4g
IkVtcHR5Il9zOwotICAgIGNhc2UgTWVkaWFQbGF5ZXI6OklkbGU6IHJldHVybiAiSWRsZSJfczsK
LSAgICBjYXNlIE1lZGlhUGxheWVyOjpMb2FkaW5nOiByZXR1cm4gIkxvYWRpbmciX3M7Ci0gICAg
Y2FzZSBNZWRpYVBsYXllcjo6TG9hZGVkOiByZXR1cm4gIkxvYWRlZCJfczsKLSAgICBjYXNlIE1l
ZGlhUGxheWVyOjpGb3JtYXRFcnJvcjogcmV0dXJuICJGb3JtYXRFcnJvciJfczsKLSAgICBjYXNl
IE1lZGlhUGxheWVyOjpOZXR3b3JrRXJyb3I6IHJldHVybiAiTmV0d29ya0Vycm9yIl9zOwotICAg
IGNhc2UgTWVkaWFQbGF5ZXI6OkRlY29kZUVycm9yOiByZXR1cm4gIkRlY29kZUVycm9yIl9zOwot
ICAgIGRlZmF1bHQ6IHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLX0KLQogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZSBlcnJvcikKIHsKICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKQEAgLTIzMjksOSArMjMxNSw5
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGUgZXJyb3IpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
KGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrRXJyb3IgJiYgbV9yZWFkeVN0YXRlID49IEhB
VkVfTUVUQURBVEEpIHx8IGVycm9yID09IE1lZGlhUGxheWVyOjpEZWNvZGVFcnJvcikKKyAgICBp
ZiAoKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvciAmJiBt
X3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSkgfHwgZXJyb3IgPT0gTWVkaWFQbGF5ZXI6Ok5l
dHdvcmtTdGF0ZTo6RGVjb2RlRXJyb3IpCiAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFs
bHkoZXJyb3IpOwotICAgIGVsc2UgaWYgKChlcnJvciA9PSBNZWRpYVBsYXllcjo6Rm9ybWF0RXJy
b3IgfHwgZXJyb3IgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcikgJiYgbV9sb2FkU3RhdGUg
PT0gTG9hZGluZ0Zyb21TcmNBdHRyKQorICAgIGVsc2UgaWYgKChlcnJvciA9PSBNZWRpYVBsYXll
cjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvciB8fCBlcnJvciA9PSBNZWRpYVBsYXllcjo6TmV0
d29ya1N0YXRlOjpOZXR3b3JrRXJyb3IpICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU3Jj
QXR0cikKICAgICAgICAgbm9uZVN1cHBvcnRlZCgpOwogCiAgICAgdXBkYXRlRGlzcGxheVN0YXRl
KCk7CkBAIC0yMzQyLDcgKzIzMjgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9h
ZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yKQogCiAgICAgRVJST1Jf
TE9HKExPR0lERU5USUZJRVIsICJlcnJvciA9ICIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IpKTsK
IAotICAgIGxvZ01lZGlhTG9hZFJlcXVlc3QoZG9jdW1lbnQoKS5wYWdlKCksIFN0cmluZygpLCBz
dHJpbmdGb3JOZXR3b3JrU3RhdGUoZXJyb3IpLCBmYWxzZSk7CisgICAgbG9nTWVkaWFMb2FkUmVx
dWVzdChkb2N1bWVudCgpLnBhZ2UoKSwgU3RyaW5nKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKGVycm9yKSwgZmFsc2UpOwogCiAgICAgbV9tZWRpYVNlc3Npb24tPmNsaWVudENoYXJhY3Rl
cmlzdGljc0NoYW5nZWQoKTsKIH0KQEAgLTIzNTIsMTggKzIzMzgsMTggQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBzdGF0
ZSkKICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihzdGF0ZSkgIT0gc3RhdGljX2Nhc3Q8aW50Piht
X25ldHdvcmtTdGF0ZSkpCiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIm5ldyBz
dGF0ZSA9ICIsIHN0YXRlLCAiLCBjdXJyZW50IHN0YXRlID0gIiwgbV9uZXR3b3JrU3RhdGUpOwog
Ci0gICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpFbXB0eSkgeworICAgIGlmIChzdGF0ZSA9
PSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSkgewogICAgICAgICAvLyBKdXN0IHVw
ZGF0ZSB0aGUgY2FjaGVkIHN0YXRlIGFuZCBsZWF2ZSwgd2UgY2FuJ3QgZG8gYW55dGhpbmcuCiAg
ICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19FTVBUWTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IgfHwgc3Rh
dGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvciB8fCBzdGF0ZSA9PSBNZWRpYVBsYXllcjo6
RGVjb2RlRXJyb3IpIHsKKyAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZTo6Rm9ybWF0RXJyb3IgfHwgc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0
d29ya0Vycm9yIHx8IHN0YXRlID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkRlY29kZUVy
cm9yKSB7CiAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChzdGF0ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OklkbGUpIHsKKyAgICBp
ZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6SWRsZSkgewogICAgICAgICBp
ZiAobV9uZXR3b3JrU3RhdGUgPiBORVRXT1JLX0lETEUpIHsKICAgICAgICAgICAgIGNoYW5nZU5l
dHdvcmtTdGF0ZUZyb21Mb2FkaW5nVG9JZGxlKCk7CiAgICAgICAgICAgICBzZXRTaG91bGREZWxh
eUxvYWRFdmVudChmYWxzZSk7CkBAIC0yMzcyLDEzICsyMzU4LDEzIEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgc3RhdGUp
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkxvYWRp
bmcpIHsKKyAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGlu
ZykgewogICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPCBORVRXT1JLX0xPQURJTkcgfHwgbV9u
ZXR3b3JrU3RhdGUgPT0gTkVUV09SS19OT19TT1VSQ0UpCiAgICAgICAgICAgICBzdGFydFByb2dy
ZXNzRXZlbnRUaW1lcigpOwogICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfTE9BRElO
RzsKICAgICB9CiAKLSAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkxvYWRlZCkgeworICAg
IGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQpIHsKICAgICAg
ICAgaWYgKG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktfSURMRSkKICAgICAgICAgICAgIGNoYW5n
ZU5ldHdvcmtTdGF0ZUZyb21Mb2FkaW5nVG9JZGxlKCk7CiAgICAgICAgIG1fY29tcGxldGVseUxv
YWRlZCA9IHRydWU7CkBAIC0zMDI1LDcgKzMwMTEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25zdCBNZWRpYVRp
bQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB0aGUgbWVkaWEgZW5naW5lIGhhcyBiZWVu
IHRvbGQgdG8gcG9zdHBvbmUgbG9hZGluZyBkYXRhLCBsZXQgaXQgZ28gYWhlYWQgbm93LgotICAg
IGlmIChtX3ByZWxvYWQgPCBNZWRpYVBsYXllcjo6QXV0byAmJiBtX3JlYWR5U3RhdGUgPCBIQVZF
X0ZVVFVSRV9EQVRBKQorICAgIGlmIChtX3ByZWxvYWQgPCBNZWRpYVBsYXllcjo6UHJlbG9hZDo6
QXV0byAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBKQogICAgICAgICBwcmVwYXJl
VG9QbGF5KCk7CiAKICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZSBiZWZvcmUgc2V0dGluZyBt
X3NlZWtpbmcsIG1fbGFzdFNlZWtUaW1lIGlzIHJldHVybmVkIG9uY2UgaXQgaXMgc2V0LgpAQCAt
MzE5Nyw3ICszMTgzLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6UmVhZHlTdGF0ZSBIVE1MTWVkaWFF
bGVtZW50OjpyZWFkeVN0YXRlKCkgY29uc3QKIAogTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUg
SFRNTE1lZGlhRWxlbWVudDo6bW92aWVMb2FkVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cGxheWVyID8gbV9wbGF5ZXItPm1vdmllTG9hZFR5cGUoKSA6IE1lZGlhUGxheWVyOjpVbmtub3du
OworICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5tb3ZpZUxvYWRUeXBlKCkgOiBNZWRp
YVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjpoYXNBdWRpbygpIGNvbnN0CkBAIC0zNDkzLDExICszNDc5LDExIEBAIFN0cmluZyBIVE1M
TWVkaWFFbGVtZW50OjpwcmVsb2FkKCkgY29uc3QKICNlbmRpZgogCiAgICAgc3dpdGNoIChtX3By
ZWxvYWQpIHsKLSAgICBjYXNlIE1lZGlhUGxheWVyOjpOb25lOgorICAgIGNhc2UgTWVkaWFQbGF5
ZXI6OlByZWxvYWQ6Ok5vbmU6CiAgICAgICAgIHJldHVybiAibm9uZSJfczsKLSAgICBjYXNlIE1l
ZGlhUGxheWVyOjpNZXRhRGF0YToKKyAgICBjYXNlIE1lZGlhUGxheWVyOjpQcmVsb2FkOjpNZXRh
RGF0YToKICAgICAgICAgcmV0dXJuICJtZXRhZGF0YSJfczsKLSAgICBjYXNlIE1lZGlhUGxheWVy
OjpBdXRvOgorICAgIGNhc2UgTWVkaWFQbGF5ZXI6OlByZWxvYWQ6OkF1dG86CiAgICAgICAgIHJl
dHVybiAiYXV0byJfczsKICAgICB9CiAKQEAgLTQ3MzIsNyArNDcxOCw3IEBAIFVSTCBIVE1MTWVk
aWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqIGNvbnRlbnRUeXBl
LCBTdHJpbmcqIGtlCiAgICAgICAgICAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5hbGxv
d01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjaygpIHx8
IFRyYXZlcnNhbDxIVE1MU291cmNlRWxlbWVudD46Om5leHRTa2lwcGluZ0NoaWxkcmVuKHNvdXJj
ZSkpCiAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5jb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnQgPSBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgp
OwogCi0gICAgICAgICAgICBpZiAoIU1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVy
cykpCisgICAgICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAg
ICAgICAgICBnb3RvIENoZWNrQWdhaW47CiAgICAgICAgIH0KIApAQCAtNTA2OSw3ICs1MDU1LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVk
KCkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIC8vIFRoZSBNZWRpYVBsYXll
ciBjYW1lIGFjcm9zcyBjb250ZW50IHdoaWNoIG5vIGluc3RhbGxlZCBlbmdpbmUgc3VwcG9ydHMu
Ci0gICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAg
bWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9y
KTsKIH0KIAogLy8gTWVkaWFQbGF5ZXJQcmVzZW50YXRpb24gbWV0aG9kcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBjMGJkNmIyMjNmNTNjNGQ1OGU5ZDhiZWZlMjY0
MTM4YWMyZjJiZDRkLi5kOTM0OWQ2Nzk5MjQzYWQzMmM1ZDg2ZDI2NGM5MTg0ZmEyMmNiZmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTg3LDggKzE4Nyw4IEBA
IHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCk7IH0KICNlbmRpZgogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOwotICAgIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkp
OwotICAgIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSB2aWRlb0Z1bGxzY3JlZW5HcmF2
aXR5KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OyB9CisgICAgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpOwor
ICAgIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkgdmlkZW9GdWxsc2NyZWVuR3Jhdml0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eTsgfQogI2VuZGlmCiAKICAgICB2
b2lkIHNjaGVkdWxlQ2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGFiaWxpdHkoKTsKQEAgLTIwMSw3
ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZU5vdGlmeUFib3V0UGxheWluZygp
OwogICAgIHZvaWQgbm90aWZ5QWJvdXRQbGF5aW5nKFBsYXlQcm9taXNlVmVjdG9yJiYpOwogICAg
IAotICAgIE1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNv
bnN0OworICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25z
dDsKICAgICAKICAgICBib29sIGluQWN0aXZlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lu
QWN0aXZlRG9jdW1lbnQ7IH0KIApAQCAtNDk1LDggKzQ5NSw4IEBAIHB1YmxpYzoKIAogICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBmaWxlU2l6ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBtZWRpYUxvYWRp
bmdGYWlsZWQoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlKTsKLSAgICB2b2lkIG1lZGlh
TG9hZGluZ0ZhaWxlZEZhdGFsbHkoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlKTsKKyAg
ICB2b2lkIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKKyAg
ICB2b2lkIG1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZSk7CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBXRUJDT1JFX0VYUE9SVCBkb3Vi
bGUgcGxheWVyVm9sdW1lKCkgY29uc3Q7CkBAIC01MTUsNyArNTE1LDcgQEAgcHVibGljOgogCiAg
ICAgUmVmUHRyPFZpZGVvUGxheWJhY2tRdWFsaXR5PiBnZXRWaWRlb1BsYXliYWNrUXVhbGl0eSgp
OwogCi0gICAgTWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ByZWxvYWQ7IH0KKyAgICBNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3ByZWxvYWQ7IH0KICAgICBNZWRpYUVsZW1lbnRTZXNzaW9u
JiBtZWRpYVNlc3Npb24oKSBjb25zdCB7IHJldHVybiAqbV9tZWRpYVNlc3Npb247IH0KIAogI2lm
IEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCkBAIC02NTAsOCArNjUwLDggQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKSB7IH0KICAgICAKLSAg
ICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSk7Ci0gICAg
dm9pZCBzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlKTsKKyAg
ICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpOworICAgIHZvaWQg
c2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogCiAgICAgZG91Ymxl
IGVmZmVjdGl2ZVBsYXliYWNrUmF0ZSgpIGNvbnN0OwogICAgIGRvdWJsZSByZXF1ZXN0ZWRQbGF5
YmFja1JhdGUoKSBjb25zdDsKQEAgLTg2NSw3ICs4NjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNCbG9ja2VkKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigp
IGNvbnN0OwogICAgIGJvb2wgaGFzQ3VycmVudFNyYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICFtX2N1cnJlbnRTcmMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6
TGl2ZVN0cmVhbTsgfQorICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbW92aWVMb2FkVHlwZSgpID09IE1vdmllTG9hZFR5cGU6OkxpdmVTdHJlYW07IH0KIAog
ICAgIHZvaWQgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsKICAgICBlbnVtIGNsYXNzIFNsZWVwVHlw
ZSB7IE5vbmUsIERpc3BsYXksIFN5c3RlbSB9OwpAQCAtMTAzNywxMiArMTAzNywxMiBAQCBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+
IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GdWxsc2NyZWVu
RnJhbWU7Ci0gICAgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IG1fdmlkZW9GdWxsc2Ny
ZWVuR3Jhdml0eSB7IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgfTsKKyAg
ICBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eSB7IE1l
ZGlhUGxheWVyOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZUFzcGVjdCB9OwogI2VuZGlmCiAKICAgICBS
ZWZQdHI8TWVkaWFQbGF5ZXI+IG1fcGxheWVyOwogCi0gICAgTWVkaWFQbGF5ZXJFbnVtczo6UHJl
bG9hZCBtX3ByZWxvYWQgeyBNZWRpYVBsYXllcjo6QXV0byB9OworICAgIE1lZGlhUGxheWVyOjpQ
cmVsb2FkIG1fcHJlbG9hZCB7IFByZWxvYWQ6OkF1dG8gfTsKIAogICAgIERpc3BsYXlNb2RlIG1f
ZGlzcGxheU1vZGUgeyBVbmtub3duIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwCmluZGV4IDRjMTcyNjgwN2IyMWY5MDBmOWQ4NGIyNjZiYjA3YzU0MjA2
MmY3Y2QuLmRlNWZmMzc2OGIzZDVmNjBkYjkyZmRhMTdmNDVjMzIwNDA1ZDQxM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtNzAzLDggKzcwMyw4
IEBAIE1lZGlhUGxheWVyOjpQcmVsb2FkIE1lZGlhRWxlbWVudFNlc3Npb246OmVmZmVjdGl2ZVBy
ZWxvYWRGb3JFbGVtZW50KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHByZWxvYWQ7CiAKICAgICBp
ZiAobV9yZXN0cmljdGlvbnMgJiBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCkgewotICAgICAg
ICBpZiAocHJlbG9hZCA+IE1lZGlhUGxheWVyOjpNZXRhRGF0YSkKLSAgICAgICAgICAgIHJldHVy
biBNZWRpYVBsYXllcjo6TWV0YURhdGE7CisgICAgICAgIGlmIChwcmVsb2FkID4gTWVkaWFQbGF5
ZXI6OlByZWxvYWQ6Ok1ldGFEYXRhKQorICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpQ
cmVsb2FkOjpNZXRhRGF0YTsKICAgICB9CiAKICAgICByZXR1cm4gcHJlbG9hZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggN2I1MDRjMzlkNmIxZTYzYjhjMWJmODcwMTgx
Njk1M2I3YTVmYmYyMi4uZWI3ZjI2NzdkMGI1ZWZiNDQxZjY5YzY5YmI5MzY4ZDE4MGM0NDIzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTE0OCw3ICsxNDgsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudQogICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBtX3ZpZGVv
RWxlbWVudC0+ZnVsbHNjcmVlbk1vZGUoKSAhPSBtb2RlKQogICAgICAgICBtX3ZpZGVvRWxlbWVu
dC0+c2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7CiAKLSAgICBpZiAobV92aWRlb0VsZW1lbnQgJiYg
ZmluaXNoZWRXaXRoTWVkaWEgJiYgbW9kZSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSkgeworICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBmaW5pc2hlZFdpdGhN
ZWRpYSAmJiBtb2RlID09IE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkgewog
ICAgICAgICBpZiAobV92aWRlb0VsZW1lbnQtPmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkp
IHsKICAgICAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBtX3ZpZGVvRWxlbWVudC0+ZG9jdW1l
bnQoKS5kb21XaW5kb3coKSkKICAgICAgICAgICAgICAgICB3aW5kb3ctPmhpc3RvcnkoKS5iYWNr
KCk7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6c2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCByZWN0KQogICAgICAgICBtX3ZpZGVv
RWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUocmVjdCk7CiB9CiAKLXZvaWQgVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlhUGxh
eWVyRW51bXM6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQordm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6c2V0VmlkZW9MYXllckdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jh
dml0eSBncmF2aXR5KQogewogICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5H
cmF2aXR5KGdyYXZpdHkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDdkNWJjY2Q5MGIxNzk0YzcxNmVmM2ViMWQxOTk2ZDYz
YTc3NTUwODAuLmNlMjNhYjc4NGJjNmMyYTE1ZmI4OTFkODE1Nzk1OWYxYzE2NGI1NGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAg
LTE0Myw4ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zp
c2libGUoYm9vbCkgZmluYWwgeyB9OwogCi0gICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBu
ZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6RW1wdHk7IH0K
LSAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOyB9CisgICAgTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlOjpFbXB0eTsgfQorICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5
U3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2
ZU5vdGhpbmc7IH0KIAogICAgIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIDA7IH0KICAgICBkb3VibGUgbWluVGltZVNlZWthYmxlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gMDsgfQpAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNvbnN0IE1lZGlhCiAg
ICAgfQogCiAgICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBmb3VuZEVuZ2luZSA9IG51bGxw
dHI7Ci0gICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0ZWQgPSBNZWRpYVBsYXll
cjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0
ZWQgPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICAgICBmb3Ig
KGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIGlmIChj
dXJyZW50KSB7CiAgICAgICAgICAgICBpZiAoY3VycmVudCA9PSAmZW5naW5lKQpAQCAtOTE2LDEx
ICs5MTYsMTEgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9y
dHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmEKICAgICAvLyB1c2VyIGFnZW50IGtu
b3dzIGl0IGNhbm5vdCByZW5kZXIgb3IgaXMgdGhlIHR5cGUgImFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbSIKICAgICBBdG9tU3RyaW5nIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5cGUuY29u
dGFpbmVyVHlwZSgpOwogICAgIGlmIChjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRT
dHJlYW0oKSkKLSAgICAgICAgcmV0dXJuIElzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4g
U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIGNvbnN0IE1lZGlhUGxheWVyRmFj
dG9yeSogZW5naW5lID0gYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1l
dGVycyk7CiAgICAgaWYgKCFlbmdpbmUpCi0gICAgICAgIHJldHVybiBJc05vdFN1cHBvcnRlZDsK
KyAgICAgICAgcmV0dXJuIFN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICByZXR1
cm4gZW5naW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycyk7CiB9CkBAIC0xMTcw
LDcgKzExNzAsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKIHsK
ICAgICAvLyBJZiBtb3JlIHRoYW4gb25lIG1lZGlhIGVuZ2luZSBpcyBpbnN0YWxsZWQgYW5kIHRo
aXMgb25lIGZhaWxlZCBiZWZvcmUgZmluZGluZyBtZXRhZGF0YSwKICAgICAvLyBsZXQgdGhlIG5l
eHQgZW5naW5lIHRyeS4KLSAgICBpZiAobV9wcml2YXRlLT5uZXR3b3JrU3RhdGUoKSA+PSBGb3Jt
YXRFcnJvciAmJiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA8IEhhdmVNZXRhZGF0YSkgeworICAg
IGlmIChtX3ByaXZhdGUtPm5ldHdvcmtTdGF0ZSgpID49IE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkZvcm1hdEVycm9yICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSkgewogICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXll
ckVuZ2luZUZhaWxlZFRvTG9hZCgpOwogICAgICAgICBpZiAoaW5zdGFsbGVkTWVkaWFFbmdpbmVz
KCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlwZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRp
YUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkpKSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRp
bWVyLnN0YXJ0T25lU2hvdCgwX3MpOwpAQCAtMTU2Niw3ICsxNTY2LDcgQEAgY29uc3QgTG9nZ2Vy
JiBNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dnZXIoKQogfQogI2VuZGlmCiAKLVN0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlIGVu
dW1lcmF0aW9uVmFsdWUpCitTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUgZW51bWVyYXRpb25WYWx1ZSkKIHsKICAgICBzdGF0aWMgY29uc3Qg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAgICAgICAgTUFLRV9TVEFUSUNf
U1RSSU5HX0lNUEwoIkhhdmVOb3RoaW5nIiksCkBAIC0xNTc1LDE2ICsxNTc1LDE2IEBAIFN0cmlu
ZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRl
IGVudW1lcmF0aW9uVmFsdWUpCiAgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJIYXZl
RnV0dXJlRGF0YSIpLAogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiSGF2ZUVub3Vn
aERhdGEiKSwKICAgICB9OwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihN
ZWRpYVBsYXllckVudW1zOjpIYXZlTm90aGluZykgPT0gMCwgIk1lZGlhUGxheWVyRW51bXM6Okhh
dmVOb3RoaW5nIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6OkhhdmVNZXRhZGF0YSkgPT0gMSwgIk1l
ZGlhUGxheWVyRW51bXM6OkhhdmVNZXRhZGF0YSBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwotICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpIYXZl
Q3VycmVudERhdGEpID09IDIsICJNZWRpYVBsYXllckVudW1zOjpIYXZlQ3VycmVudERhdGEgaXMg
bm90IDIgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVf
dD4oTWVkaWFQbGF5ZXJFbnVtczo6SGF2ZUZ1dHVyZURhdGEpID09IDMsICJNZWRpYVBsYXllckVu
dW1zOjpIYXZlRnV0dXJlRGF0YSBpcyBub3QgMyBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpIYXZlRW5vdWdoRGF0
YSkgPT0gNCwgIk1lZGlhUGxheWVyRW51bXM6OkhhdmVFbm91Z2hEYXRhIGlzIG5vdCA0IGFzIGV4
cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZykgPT0gMCwgIk1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlOjpIYXZlTm90aGluZyBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFk
YXRhKSA9PSAxLCAiTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSBpcyBub3Qg
MSBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhKSA9PSAyLCAiTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSBpcyBub3QgMiBhcyBleHBlY3RlZCIpOwor
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZTo6SGF2ZUZ1dHVyZURhdGEpID09IDMsICJNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2
ZUZ1dHVyZURhdGEgaXMgbm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVFbm91Z2hEYXRh
KSA9PSA0LCAiTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVFbm91Z2hEYXRhIGlzIG5vdCA0
IGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRp
b25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAgIHJldHVybiB2YWx1ZXNb
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07CiB9CiAKLVN0cmluZyBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGUgZW51
bWVyYXRpb25WYWx1ZSkKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlIGVudW1lcmF0aW9uVmFsdWUpCiB7CiAgICAgc3RhdGljIGNvbnN0
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmFsdWVzW10gPSB7CiAgICAgICAgIE1BS0VfU1RBVElD
X1NUUklOR19JTVBMKCJFbXB0eSIpLApAQCAtMTU5NSw0NiArMTU5NSw0NiBAQCBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlIGVu
dW1lcmF0aW9uVmFsdQogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiTmV0d29ya0Vy
cm9yIiksCiAgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJEZWNvZGVFcnJvciIpLAog
ICAgIH07Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVy
RW51bXM6OkVtcHR5KSA9PSAwLCAiTWVkaWFQbGF5ZXJFbnVtczo6RW1wdHkgaXMgbm90IDAgYXMg
ZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQ
bGF5ZXJFbnVtczo6SWRsZSkgPT0gMSwgIk1lZGlhUGxheWVyRW51bXM6OklkbGUgaXMgbm90IDEg
YXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVk
aWFQbGF5ZXJFbnVtczo6TG9hZGluZykgPT0gMiwgIk1lZGlhUGxheWVyRW51bXM6OkxvYWRpbmcg
aXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNp
emVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6TG9hZGVkKSA9PSAzLCAiTWVkaWFQbGF5ZXJFbnVtczo6
TG9hZGVkIGlzIG5vdCAzIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
Y2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6OkZvcm1hdEVycm9yKSA9PSA0LCAiTWVkaWFQ
bGF5ZXJFbnVtczo6Rm9ybWF0RXJyb3IgaXMgbm90IDQgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya0Vy
cm9yKSA9PSA1LCAiTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya0Vycm9yIGlzIG5vdCA1IGFzIGV4
cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxh
eWVyRW51bXM6OkRlY29kZUVycm9yKSA9PSA2LCAiTWVkaWFQbGF5ZXJFbnVtczo6RGVjb2RlRXJy
b3IgaXMgbm90IDYgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0
PHNpemVfdD4oTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHkpID09IDAsICJNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0
YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
OjpJZGxlKSA9PSAxLCAiTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6SWRsZSBpcyBub3QgMSBh
cyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkaW5nKSA9PSAyLCAiTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6TG9hZGluZyBpcyBub3QgMiBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQp
ID09IDMsICJNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQgaXMgbm90IDMgYXMgZXhw
ZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5
ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3IpID09IDQsICJNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpGb3JtYXRFcnJvciBpcyBub3QgNCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpOZXR3
b3JrRXJyb3IpID09IDUsICJNZWRpYVBsYXllcjo6TmV0d29ya0Vycm9yIGlzIG5vdCA1IGFzIGV4
cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGU6OkRlY29kZUVycm9yKSA9PSA2LCAiTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6RGVjb2RlRXJyb3IgaXMgbm90IDYgYXMgZXhwZWN0ZWQiKTsKICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgo
dmFsdWVzKSk7CiAgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0
aW9uVmFsdWUpXTsKIH0KIAotU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlh
UGxheWVyRW51bXM6OlByZWxvYWQgZW51bWVyYXRpb25WYWx1ZSkKK1N0cmluZyBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllcjo6UHJlbG9hZCBlbnVtZXJhdGlvblZhbHVlKQog
ewogICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVlc1tdID0gewog
ICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiTm9uZSIpLAogICAgICAgICBNQUtFX1NU
QVRJQ19TVFJJTkdfSU1QTCgiTWV0YURhdGEiKSwKICAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5H
X0lNUEwoIkF1dG8iKSwKICAgICB9OwotICAgIHN0YXRpY19hc3NlcnQoIXN0YXRpY19jYXN0PHNp
emVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6Tm9uZSksICJNZWRpYVBsYXllckVudW1zOjpOb25lIGlz
IG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXpl
X3Q+KE1lZGlhUGxheWVyRW51bXM6Ok1ldGFEYXRhKSA9PSAxLCAiTWVkaWFQbGF5ZXJFbnVtczo6
TWV0YURhdGEgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6QXV0bykgPT0gMiwgIk1lZGlhUGxheWVy
RW51bXM6OkF1dG8gaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFz
dGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyOjpQcmVsb2FkOjpOb25lKSwgIk1lZGlhUGxh
eWVyOjpQcmVsb2FkOjpOb25lIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyOjpQcmVsb2FkOjpNZXRhRGF0YSkg
PT0gMSwgIk1lZGlhUGxheWVyOjpQcmVsb2FkOjpNZXRhRGF0YSBpcyBub3QgMSBhcyBleHBlY3Rl
ZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6
UHJlbG9hZDo6QXV0bykgPT0gMiwgIk1lZGlhUGxheWVyOjpQcmVsb2FkOjpBdXRvIGlzIG5vdCAy
IGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRp
b25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAgIHJldHVybiB2YWx1ZXNb
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07CiB9CiAKLVN0cmluZyBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgZW51
bWVyYXRpb25WYWx1ZSkKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIGVudW1lcmF0aW9uVmFsdWUpCiB7CiAgICAgc3RhdGljIGNvbnN0
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmFsdWVzW10gPSB7CiAgICAgICAgIE1BS0VfU1RBVElD
X1NUUklOR19JTVBMKCJJc05vdFN1cHBvcnRlZCIpLAogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgiSXNTdXBwb3J0ZWQiKSwKICAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwo
Ik1heUJlU3VwcG9ydGVkIiksCiAgICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGF0aWNfY2Fz
dDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6OklzTm90U3VwcG9ydGVkKSwgIk1lZGlhUGxheWVy
RW51bXM6OklzTm90U3VwcG9ydGVkIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6OklzU3VwcG9ydGVk
KSA9PSAxLCAiTWVkaWFQbGF5ZXJFbnVtczo6SXNTdXBwb3J0ZWQgaXMgbm90IDEgYXMgZXhwZWN0
ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJF
bnVtczo6TWF5QmVTdXBwb3J0ZWQpID09IDIsICJNZWRpYVBsYXllckVudW1zOjpNYXlCZVN1cHBv
cnRlZCBpcyBub3QgMiBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoIXN0YXRpY19j
YXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpLCAi
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQgaXMgbm90IDAgYXMgZXhw
ZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQpID09IDEsICJNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlOjpJc1N1cHBvcnRlZCBpcyBub3QgMSBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlC
ZVN1cHBvcnRlZCkgPT0gMiwgIk1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9y
dGVkIGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVf
dD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAgIHJl
dHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07CiB9CiAK
LVN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpCdWZm
ZXJpbmdQb2xpY3kgZW51bWVyYXRpb25WYWx1ZSkKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyhNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5IGVudW1lcmF0aW9uVmFsdWUpCiB7
CiAgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmFsdWVzW10gPSB7CiAg
ICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJEZWZhdWx0IiksCkBAIC0xNjQyLDEwICsx
NjQyLDEwIEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVu
dW1zOjpCdWZmZXJpbmdQb2xpY3kgZW51bWVyYXRpb25WCiAgICAgICAgIE1BS0VfU1RBVElDX1NU
UklOR19JTVBMKCJNYWtlUmVzb3VyY2VzUHVyZ2VhYmxlIiksCiAgICAgICAgIE1BS0VfU1RBVElD
X1NUUklOR19JTVBMKCJQdXJnZVJlc291cmNlcyIpLAogICAgIH07Ci0gICAgc3RhdGljX2Fzc2Vy
dCghc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k6
OkRlZmF1bHQpLCAiTWVkaWFQbGF5ZXJFbnVtczo6RGVmYXVsdCBpcyBub3QgMCBhcyBleHBlY3Rl
ZCIpOwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVu
dW1zOjpCdWZmZXJpbmdQb2xpY3k6OkxpbWl0UmVhZEFoZWFkKSA9PSAxLCAiTWVkaWFQbGF5ZXJF
bnVtczo6TGltaXRSZWFkQWhlYWQgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9s
aWN5OjpNYWtlUmVzb3VyY2VzUHVyZ2VhYmxlKSA9PSAyLCAiTWVkaWFQbGF5ZXJFbnVtczo6TWFr
ZVJlc291cmNlc1B1cmdlYWJsZSBpcyBub3QgMiBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xp
Y3k6OlB1cmdlUmVzb3VyY2VzKSA9PSAzLCAiTWVkaWFQbGF5ZXJFbnVtczo6UHVyZ2VSZXNvdXJj
ZXMgaXMgbm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGF0aWNfY2Fz
dDxzaXplX3Q+KE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6OkRlZmF1bHQpLCAiTWVkaWFQ
bGF5ZXI6OkRlZmF1bHQgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeTo6TGltaXRS
ZWFkQWhlYWQpID09IDEsICJNZWRpYVBsYXllcjo6TGltaXRSZWFkQWhlYWQgaXMgbm90IDEgYXMg
ZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQ
bGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeTo6TWFrZVJlc291cmNlc1B1cmdlYWJsZSkgPT0gMiwgIk1l
ZGlhUGxheWVyOjpNYWtlUmVzb3VyY2VzUHVyZ2VhYmxlIGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7
CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyOjpCdWZm
ZXJpbmdQb2xpY3k6OlB1cmdlUmVzb3VyY2VzKSA9PSAzLCAiTWVkaWFQbGF5ZXI6OlB1cmdlUmVz
b3VyY2VzIGlzIG5vdCAzIGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNp
emVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAg
IHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRl
eCBmYjllYmEwZTRhYmUzMWM3NTI3MDBjYjdjZTY4OTBkYjk4OWMyMjJiLi44YTdiMWU5YmZkNzg3
ZjUxMzA1MmI1Njg4MzQ1OTQ0MGRmOWQxYjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTI1Myw3ICsyNTMsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICAvLyBNZWRpYSBlbmdpbmUgc3VwcG9ydC4KLSAg
ICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU7CiAgICAgc3RhdGljIFN1cHBv
cnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYp
OwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsK
QEAgLTYxMSw3ICs2MTAsNyBAQCBwcml2YXRlOgogICAgIENvbnRlbnRUeXBlIG1fY29udGVudFR5
cGU7CiAgICAgU3RyaW5nIG1fa2V5U3lzdGVtOwogICAgIEludFNpemUgbV9zaXplOwotICAgIFBy
ZWxvYWQgbV9wcmVsb2FkIHsgQXV0byB9OworICAgIFByZWxvYWQgbV9wcmVsb2FkIHsgUHJlbG9h
ZDo6QXV0byB9OwogICAgIGRvdWJsZSBtX3ZvbHVtZSB7IDEgfTsKICAgICBib29sIG1fdmlzaWJs
ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAppbmRleCAwMTk1
YzY5NzZkNGVjNGE0OTgzYzQyYTQ3NmUxZDQ1ZGQ3YTYxOThiLi40YjEwZjA0ODMwODdlMmU2NmUz
YWFkODFlZTQ0MmU2ZDI0OGRlOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCkBAIC0zMSwxMiArMzEsNDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXllckVudW1zIHsKIHB1YmxpYzoKLSAgICBl
bnVtIE5ldHdvcmtTdGF0ZSB7IEVtcHR5LCBJZGxlLCBMb2FkaW5nLCBMb2FkZWQsIEZvcm1hdEVy
cm9yLCBOZXR3b3JrRXJyb3IsIERlY29kZUVycm9yIH07Ci0gICAgZW51bSBSZWFkeVN0YXRlICB7
IEhhdmVOb3RoaW5nLCBIYXZlTWV0YWRhdGEsIEhhdmVDdXJyZW50RGF0YSwgSGF2ZUZ1dHVyZURh
dGEsIEhhdmVFbm91Z2hEYXRhIH07Ci0gICAgZW51bSBNb3ZpZUxvYWRUeXBlIHsgVW5rbm93biwg
RG93bmxvYWQsIFN0b3JlZFN0cmVhbSwgTGl2ZVN0cmVhbSB9OwotICAgIGVudW0gUHJlbG9hZCB7
IE5vbmUsIE1ldGFEYXRhLCBBdXRvIH07Ci0gICAgZW51bSBWaWRlb0dyYXZpdHkgeyBWaWRlb0dy
YXZpdHlSZXNpemUsIFZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgVmlkZW9HcmF2aXR5UmVzaXpl
QXNwZWN0RmlsbCB9OwotICAgIGVudW0gU3VwcG9ydHNUeXBlIHsgSXNOb3RTdXBwb3J0ZWQsIElz
U3VwcG9ydGVkLCBNYXlCZVN1cHBvcnRlZCB9OworICAgIGVudW0gY2xhc3MgTmV0d29ya1N0YXRl
IDogdWludDhfdCB7CisgICAgICAgIEVtcHR5LAorICAgICAgICBJZGxlLAorICAgICAgICBMb2Fk
aW5nLAorICAgICAgICBMb2FkZWQsCisgICAgICAgIEZvcm1hdEVycm9yLAorICAgICAgICBOZXR3
b3JrRXJyb3IsCisgICAgICAgIERlY29kZUVycm9yCisgICAgfTsKKworICAgIGVudW0gY2xhc3Mg
UmVhZHlTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBIYXZlTm90aGluZywKKyAgICAgICAgSGF2
ZU1ldGFkYXRhLAorICAgICAgICBIYXZlQ3VycmVudERhdGEsCisgICAgICAgIEhhdmVGdXR1cmVE
YXRhLAorICAgICAgICBIYXZlRW5vdWdoRGF0YQorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIE1v
dmllTG9hZFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5rbm93biwKKyAgICAgICAgRG93bmxv
YWQsCisgICAgICAgIFN0b3JlZFN0cmVhbSwKKyAgICAgICAgTGl2ZVN0cmVhbQorICAgIH07CisK
KyAgICBlbnVtIGNsYXNzIFByZWxvYWQgOiB1aW50OF90IHsKKyAgICAgICAgTm9uZSwKKyAgICAg
ICAgTWV0YURhdGEsCisgICAgICAgIEF1dG8KKyAgICB9OworCisgICAgZW51bSBjbGFzcyBWaWRl
b0dyYXZpdHkgOiB1aW50OF90IHsKKyAgICAgICAgUmVzaXplLAorICAgICAgICBSZXNpemVBc3Bl
Y3QsCisgICAgICAgIFJlc2l6ZUFzcGVjdEZpbGwKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBT
dXBwb3J0c1R5cGUgOiB1aW50OF90IHsKKyAgICAgICAgSXNOb3RTdXBwb3J0ZWQsCisgICAgICAg
IElzU3VwcG9ydGVkLAorICAgICAgICBNYXlCZVN1cHBvcnRlZAorICAgIH07CisKICAgICBlbnVt
IHsKICAgICAgICAgVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgPSAwLAogICAgICAgICBWaWRlb0Z1
bGxzY3JlZW5Nb2RlU3RhbmRhcmQgPSAxIDw8IDAsCkBAIC00NCw3ICs4MSw3IEBAIHB1YmxpYzoK
ICAgICB9OwogICAgIHR5cGVkZWYgdWludDMyX3QgVmlkZW9GdWxsc2NyZWVuTW9kZTsKIAotICAg
IGVudW0gY2xhc3MgQnVmZmVyaW5nUG9saWN5IHsKKyAgICBlbnVtIGNsYXNzIEJ1ZmZlcmluZ1Bv
bGljeSA6IHVpbnQ4X3QgewogICAgICAgICBEZWZhdWx0LAogICAgICAgICBMaW1pdFJlYWRBaGVh
ZCwKICAgICAgICAgTWFrZVJlc291cmNlc1B1cmdlYWJsZSwKQEAgLTkwLDQgKzEyNyw3NiBAQCBz
dHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9s
aWN5PiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3Rh
dGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTo6RW1w
dHksCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTo6SWRs
ZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlOjpMb2Fk
aW5nLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU6Okxv
YWRlZCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlOjpG
b3JtYXRFcnJvciwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0
YXRlOjpOZXR3b3JrRXJyb3IsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5l
dHdvcmtTdGF0ZTo6RGVjb2RlRXJyb3IKKyAgICA+OworfTsKKworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpSZWFkeVN0YXRlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpS
ZWFkeVN0YXRlOjpIYXZlTm90aGluZywKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpSZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGEsCisgICAgICAgIFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU6OkhhdmVGdXR1cmVEYXRhLAorICAgICAgICBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YQorICAgID47
Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6Ok1vdmllTG9hZFR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBlLAorICAgICAg
ICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duLAorICAg
ICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBlOjpEb3dubG9hZCwK
KyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZTo6U3RvcmVk
U3RyZWFtLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBl
OjpMaXZlU3RyZWFtCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZD4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQs
CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQ6Ok5vbmUsCisgICAg
ICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQ6Ok1ldGFEYXRhLAorICAgICAg
ICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkOjpBdXRvCisgICAgPjsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
VmlkZW9HcmF2aXR5PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5LAorICAgICAgICBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZSwKKyAgICAgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5OjpSZXNpemVBc3BlY3QsCisgICAgICAg
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eTo6UmVzaXplQXNwZWN0Rmls
bAorICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSwK
KyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1
cHBvcnRlZCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBl
OjpJc1N1cHBvcnRlZCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9y
dHNUeXBlOjpNYXlCZVN1cHBvcnRlZAorICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeT4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k6OkxpbWl0UmVhZEFoZWFkLAorICAgICAgICBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k6Ok1ha2VSZXNvdXJjZXNQdXJn
ZWFibGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGlj
eTo6UHVyZ2VSZXNvdXJjZXMKKyAgICA+OworfTsKKwogfTsgLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaAppbmRleCAxZDJmYzAwOTIwNGE4YzAyNTU0MWIyYTJkN2M1ZjBkMGJlNWM5OWNkLi5kYmNj
MDVmY2U4MjI4NTEwYWQxMjcxOGE2NjBkYThiMDk5NDljYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTUx
LDcgKzE1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVsb2FkKE1lZGlh
UGxheWVyOjpQcmVsb2FkKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYXNBdmFpbGFibGVWaWRl
b0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gcmVhZHlTdGF0ZSgpID49IE1lZGlhUGxheWVyOjpIYXZl
Q3VycmVudERhdGE7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIHJlYWR5U3RhdGUoKSA+PSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6
SGF2ZUN1cnJlbnREYXRhOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFBvc3RlcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFBvc3Rlcihjb25zdCBT
dHJpbmcmKSB7IH0KQEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biYpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQogCi0gICAgdmlydHVhbCBNZWRpYVBs
YXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFQ
bGF5ZXI6OlVua25vd247IH0KKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBl
IG1vdmllTG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlw
ZTo6VW5rbm93bjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmcoKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQppbmRleCAwY2QwMTI5YTNjZDllYWY4NjNhZDQ3ODk4Mzg1MDMxZDhiNzZlZjZkLi5lOGQx
MjYwNDkxYWU5ZTJmZjAyNGExNjE1ZDdkNDM2NDAxNTAzYzUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTE0LDcgKzExNCw3
IEBAIGJvb2wgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1B
bmRNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtlCiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNl
ID0gdHJ1ZTsKICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZSk7CiAK
LSAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0
c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgIHJl
dHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShw
YXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsK
IH0KIAogYm9vbCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBDRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNlID0gdHJ1ZTsKICAgICBwYXJhbWV0
ZXJzLnR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZSk7CiAKLSAgICByZXR1cm4gTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgIT0g
TWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgIHJldHVybiBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PExlZ2FjeUNETVNlc3Npb24+IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNl
c3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCBhN2QwNDcw
YTNmMDQwOWM4MDM4OWIyMzJjOTdmYzk3YzQwMjgxNzFlLi5hN2RmNDNmNGY0MmMxODE5ZjQ1Nzg4
ZTI2ZTZjMTZmZmQxZWZmZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtNTgsOSArNTgsOSBAQCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbihNZWRp
YVBsYXllciogcGxheQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV9xdWV1ZWROb3Rp
ZmljYXRpb25zKCkKICAgICAsIG1fcXVldWVNdXRleCgpCi0gICAgLCBtX25ldHdvcmtTdGF0ZShN
ZWRpYVBsYXllcjo6RW1wdHkpCi0gICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVO
b3RoaW5nKQotICAgICwgbV9wcmVsb2FkKE1lZGlhUGxheWVyOjpBdXRvKQorICAgICwgbV9uZXR3
b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHkpCisgICAgLCBtX3JlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKQorICAgICwgbV9wcmVs
b2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkOjpBdXRvKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQogICAgICwgbV9s
b2dJZGVudGlmaWVyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkpCkBAIC0xNjgs
OCArMTY4LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmxvYWQoY29u
c3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAg
IHNldE5ldHdvcmtTdGF0ZShtX3ByZWxvYWQgPT0gTWVkaWFQbGF5ZXI6Ok5vbmUgPyBNZWRpYVBs
YXllcjo6SWRsZSA6IE1lZGlhUGxheWVyOjpMb2FkaW5nKTsKLSAgICBzZXRSZWFkeVN0YXRlKE1l
ZGlhUGxheWVyOjpIYXZlTm90aGluZyk7CisgICAgc2V0TmV0d29ya1N0YXRlKG1fcHJlbG9hZCA9
PSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6Tm9uZSA/IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6
OklkbGUgOiBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkaW5nKTsKKyAgICBzZXRSZWFk
eVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZyk7CiAKICAgICBtX2Fz
c2V0VVJMID0gVVJMKHsgfSwgdXJsKTsKICAgICBtX3JlcXVlc3RlZE9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUobV9hc3NldFVSTCk7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Ojpsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCopCiB7Ci0gICAg
c2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgc2V0TmV0d29y
a1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yKTsKIH0KICNlbmRp
ZgogCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OnBsYXlhYmlsaXR5S25vd24oKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OnByZXBhcmVUb1BsYXkoKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0g
ICAgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6QXV0byk7CisgICAgc2V0UHJlbG9hZChNZWRpYVBs
YXllcjo6UHJlbG9hZDo6QXV0byk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpwbGF5KCkKQEAgLTQ0MCw3ICs0NDAsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbjo6aXNSZWFkeUZvclZpZGVvU2V0dXAoKSBjb25zdAogICAgIC8vIEFWRm91
bmRhdGlvbiB3aWxsIG5vdCByZXR1cm4gdHJ1ZSBmb3IgZmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxl
IHVudGlsCiAgICAgLy8gYW4gQVZQbGF5ZXJMYXllciBoYXMgYmVlbiBhZGRlZCB0byB0aGUgQVZQ
bGF5ZXJJdGVtLCBzbyBhbGxvdyB2aWRlbyBzZXR1cAogICAgIC8vIGhlcmUgaWYgYSB2aWRlbyB0
cmFjayB0byB0cmlnZ2VyIGFsbG9jYXRpb24gb2YgYSBBVlBsYXllckxheWVyLgotICAgIHJldHVy
biAobV9pc0FsbG93ZWRUb1JlbmRlciB8fCBtX2NhY2hlZEhhc1ZpZGVvKSAmJiBtX3JlYWR5U3Rh
dGUgPj0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSAmJiBtX3BsYXllci0+dmlzaWJsZSgpOwor
ICAgIHJldHVybiAobV9pc0FsbG93ZWRUb1JlbmRlciB8fCBtX2NhY2hlZEhhc1ZpZGVvKSAmJiBt
X3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSAmJiBt
X3BsYXllci0+dmlzaWJsZSgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjo6cHJlcGFyZUZvclJlbmRlcmluZygpCkBAIC00OTEsMzAgKzQ5MSwzMCBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6dXBkYXRlU3RhdGVzKCkKICAgICBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSBuZXdSZWFkeVN0YXRlID0gbV9yZWFkeVN0YXRlOwogCiAgICAgaWYg
KG1fbG9hZGluZ01ldGFkYXRhKQotICAgICAgICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXll
cjo6TG9hZGluZzsKKyAgICAgICAgbmV3TmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6TG9hZGluZzsKICAgICBlbHNlIHsKICAgICAgICAgLy8gLWxvYWRWYWx1ZXNBc3lu
Y2hyb25vdXNseUZvcktleXM6Y29tcGxldGlvbkhhbmRsZXI6IGhhcyBpbnZva2VkIGl0cyBoYW5k
bGVyOyB0ZXN0IHN0YXR1cyBvZiBrZXlzIGFuZCBkZXRlcm1pbmUgc3RhdGUuCiAgICAgICAgIEFz
c2V0U3RhdHVzIGFzc2V0U3RhdHVzID0gdGhpcy0+YXNzZXRTdGF0dXMoKTsKICAgICAgICAgSXRl
bVN0YXR1cyBpdGVtU3RhdHVzID0gcGxheWVySXRlbVN0YXR1cygpOwogICAgICAgICAKICAgICAg
ICAgbV9hc3NldElzUGxheWFibGUgPSAoYXNzZXRTdGF0dXMgPT0gTWVkaWFQbGF5ZXJBVkFzc2V0
U3RhdHVzUGxheWFibGUpOwotICAgICAgICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6
OkhhdmVNZXRhZGF0YSAmJiBhc3NldFN0YXR1cyA+IE1lZGlhUGxheWVyQVZBc3NldFN0YXR1c0xv
YWRpbmcpIHsKKyAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlOjpIYXZlTWV0YWRhdGEgJiYgYXNzZXRTdGF0dXMgPiBNZWRpYVBsYXllckFWQXNzZXRTdGF0
dXNMb2FkaW5nKSB7CiAgICAgICAgICAgICBpZiAobV9hc3NldElzUGxheWFibGUpIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXNzZXRTdGF0dXMgPj0gTWVkaWFQbGF5ZXJBVkFzc2V0U3RhdHVzTG9h
ZGVkKQotICAgICAgICAgICAgICAgICAgICBuZXdSZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6Okhh
dmVNZXRhZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGE7CiAgICAgICAgICAgICAgICAgaWYgKGl0ZW1T
dGF0dXMgPD0gTWVkaWFQbGF5ZXJBVlBsYXllckl0ZW1TdGF0dXNVbmtub3duKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChhc3NldFN0YXR1cyA9PSBNZWRpYVBsYXllckFWQXNzZXRTdGF0dXNG
YWlsZWQgfHwgbV9wcmVsb2FkID4gTWVkaWFQbGF5ZXI6Ok1ldGFEYXRhIHx8IGlzTGl2ZVN0cmVh
bSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhc3NldFN0YXR1cyA9PSBNZWRpYVBsYXll
ckFWQXNzZXRTdGF0dXNGYWlsZWQgfHwgbV9wcmVsb2FkID4gTWVkaWFQbGF5ZXI6OlByZWxvYWQ6
Ok1ldGFEYXRhIHx8IGlzTGl2ZVN0cmVhbSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBUaGUgYXNzZXQgaXMgcGxheWFibGUgYnV0IGRvZXNuJ3Qgc3VwcG9ydCBpbnNwZWN0aW9uIHBy
aW9yIHRvIHBsYXliYWNrIChlZy4gc3RyZWFtaW5nIGZpbGVzKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIG9yIHdlIGFyZSBzdXBwb3NlZCB0byBwcmVwYXJlIGZvciBwbGF5YmFjayBpbW1l
ZGlhdGVseSwgc28gY3JlYXRlIHRoZSBwbGF5ZXIgaXRlbSBub3cuCi0gICAgICAgICAgICAgICAg
ICAgICAgICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld05ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkxvYWRpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QbGF5KCk7CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgbmV3TmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OklkbGU7CisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdOZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpJZGxlOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gRklY
IE1FOiBmZXRjaCB0aGUgZXJyb3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBAInBsYXlhYmxlIiBrZXkg
dG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBmb3JtYXQgCiAgICAgICAgICAgICAgICAgLy8gYW5kIG5l
dHdvcmsgZXJyb3JzLgotICAgICAgICAgICAgICAgIG5ld05ldHdvcmtTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpGb3JtYXRFcnJvcjsKKyAgICAgICAgICAgICAgICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICAKQEAgLTUzMCwyNSArNTMwLDI1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgICAgIC8vIElmIHRo
ZSBzdGF0dXMgYmVjb21lcyBQbGF5YmFja0J1ZmZlckZ1bGwsIGxvYWRpbmcgc3RvcHMgYW5kIHRo
ZSBzdGF0dXMgd2lsbCBub3QKICAgICAgICAgICAgICAgICAvLyBwcm9ncmVzcyB0byBMaWtlbHlU
b0tlZXBVcC4gU2V0IHRoZSByZWFkeVN0YXRlIHRvICBIQVZFX0VOT1VHSF9EQVRBLCBvbiB0aGUK
ICAgICAgICAgICAgICAgICAvLyBwcmVzdW1wdGlvbiB0aGF0IGlmIHRoZSBwbGF5YmFjayBidWZm
ZXIgaXMgZnVsbCwgcGxheWJhY2sgd2lsbCBwcm9iYWJseSBub3Qgc3RhbGwuCi0gICAgICAgICAg
ICAgICAgbmV3UmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKKyAgICAg
ICAgICAgICAgICBuZXdSZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVF
bm91Z2hEYXRhOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIE1l
ZGlhUGxheWVyQVZQbGF5ZXJJdGVtU3RhdHVzUmVhZHlUb1BsYXk6Ci0gICAgICAgICAgICAgICAg
aWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGEgJiYgbWF4VGlt
ZUxvYWRlZCgpID4gY3VycmVudE1lZGlhVGltZSgpKQotICAgICAgICAgICAgICAgICAgICBuZXdS
ZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVGdXR1cmVEYXRhOworICAgICAgICAgICAgICAg
IGlmIChtX3JlYWR5U3RhdGUgIT0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVFbm91Z2hE
YXRhICYmIG1heFRpbWVMb2FkZWQoKSA+IGN1cnJlbnRNZWRpYVRpbWUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRnV0
dXJlRGF0YTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBNZWRp
YVBsYXllckFWUGxheWVySXRlbVN0YXR1c1BsYXliYWNrQnVmZmVyRW1wdHk6Ci0gICAgICAgICAg
ICAgICAgbmV3UmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGE7CisgICAg
ICAgICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZl
Q3VycmVudERhdGE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChpdGVtU3RhdHVzID09IE1lZGlhUGxheWVyQVZQbGF5ZXJJdGVtU3RhdHVz
UGxheWJhY2tCdWZmZXJGdWxsKQotICAgICAgICAgICAgICAgIG5ld05ldHdvcmtTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpJZGxlOworICAgICAgICAgICAgICAgIG5ld05ldHdvcmtTdGF0ZSA9IE1lZGlh
UGxheWVyOjpOZXR3b3JrU3RhdGU6OklkbGU7CiAgICAgICAgICAgICBlbHNlIGlmIChpdGVtU3Rh
dHVzID09IE1lZGlhUGxheWVyQVZQbGF5ZXJJdGVtU3RhdHVzRmFpbGVkKQotICAgICAgICAgICAg
ICAgIG5ld05ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpEZWNvZGVFcnJvcjsKKyAgICAgICAg
ICAgICAgICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpEZWNv
ZGVFcnJvcjsKICAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW1TdGF0dXMgIT0gTWVkaWFQbGF5ZXJB
VlBsYXllckl0ZW1TdGF0dXNQbGF5YmFja0J1ZmZlckZ1bGwgJiYgaXRlbVN0YXR1cyA+PSBNZWRp
YVBsYXllckFWUGxheWVySXRlbVN0YXR1c1JlYWR5VG9QbGF5KQotICAgICAgICAgICAgICAgIG5l
d05ldHdvcmtTdGF0ZSA9IChtYXhUaW1lTG9hZGVkKCkgPT0gZHVyYXRpb25NZWRpYVRpbWUoKSkg
PyBNZWRpYVBsYXllcjo6TG9hZGVkIDogTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisgICAgICAgICAg
ICAgICAgbmV3TmV0d29ya1N0YXRlID0gKG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbk1lZGlh
VGltZSgpKSA/IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRlZCA6IE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGU6OkxvYWRpbmc7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU1Niw4ICs1
NTYsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6dXBkYXRlU3RhdGVz
KCkKICAgICAgICAgc2V0VXBWaWRlb1JlbmRlcmluZygpOwogCiAgICAgaWYgKCFtX2hhdmVSZXBv
cnRlZEZpcnN0VmlkZW9GcmFtZSAmJiBtX2NhY2hlZEhhc1ZpZGVvICYmIGhhc0F2YWlsYWJsZVZp
ZGVvRnJhbWUoKSkgewotICAgICAgICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6Okhh
dmVDdXJyZW50RGF0YSkKLSAgICAgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6
SGF2ZUN1cnJlbnREYXRhOworICAgICAgICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAgICAgICAgICAgIG5ld1JlYWR5U3RhdGUg
PSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhOwogICAgICAgICBtX2hh
dmVSZXBvcnRlZEZpcnN0VmlkZW9GcmFtZSA9IHRydWU7CiAgICAgICAgIG1fcGxheWVyLT5maXJz
dFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKICAgICB9IGVsc2UgaWYgKCFoYXNBdmFpbGFibGVWaWRl
b0ZyYW1lKCkpCkBAIC02OTMsMTIgKzY5MywxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbjo6cmVwYWludCgpCiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246Om1vdmllTG9hZFR5cGUoKSBjb25zdAogewogICAgIGlm
ICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBhc3NldFN0YXR1cygpID09IE1lZGlhUGxheWVyQVZB
c3NldFN0YXR1c1Vua25vd24pCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6VW5rbm93bjsK
KyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duOwogCiAg
ICAgaWYgKGlzTGl2ZVN0cmVhbSgpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkxpdmVT
dHJlYW07CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6TGl2ZVN0
cmVhbTsKIAotICAgIHJldHVybiBNZWRpYVBsYXllcjo6RG93bmxvYWQ7CisgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpEb3dubG9hZDsKIH0KIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJl
bG9hZCkKQEAgLTcxMCwxNCArNzEwLDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQpCiAKICAgICBz
ZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKIAotICAgIGlmIChtX3ByZWxvYWQgPj0gTWVkaWFQbGF5
ZXI6Ok1ldGFEYXRhICYmIGFzc2V0U3RhdHVzKCkgPT0gTWVkaWFQbGF5ZXJBVkFzc2V0U3RhdHVz
RG9lc05vdEV4aXN0KSB7CisgICAgaWYgKG1fcHJlbG9hZCA+PSBNZWRpYVBsYXllcjo6UHJlbG9h
ZDo6TWV0YURhdGEgJiYgYXNzZXRTdGF0dXMoKSA9PSBNZWRpYVBsYXllckFWQXNzZXRTdGF0dXNE
b2VzTm90RXhpc3QpIHsKICAgICAgICAgY3JlYXRlQVZBc3NldEZvclVSTChtX2Fzc2V0VVJMKTsK
ICAgICAgICAgY2hlY2tQbGF5YWJpbGl0eSgpOwogICAgIH0KIAogICAgIC8vIERvbid0IGZvcmNl
IGNyZWF0aW9uIG9mIHRoZSBwbGF5ZXIgYW5kIHBsYXllciBpdGVtIHVubGVzcyB3ZSBhbHJlYWR5
IGtub3cgdGhhdCB0aGUgYXNzZXQgaXMgcGxheWFibGUuIElmIHdlIGFyZW4ndAogICAgIC8vIHRo
ZXJlIHlldCwgb3IgaWYgd2UgYWxyZWFkeSBrbm93IGl0IGlzIG5vdCBwbGF5YWJsZSwgY3JlYXRp
bmcgdGhlbSBub3cgd29uJ3QgaGVscC4KLSAgICBpZiAobV9wcmVsb2FkID09IE1lZGlhUGxheWVy
OjpBdXRvICYmIG1fYXNzZXRJc1BsYXlhYmxlKSB7CisgICAgaWYgKG1fcHJlbG9hZCA9PSBNZWRp
YVBsYXllcjo6UHJlbG9hZDo6QXV0byAmJiBtX2Fzc2V0SXNQbGF5YWJsZSkgewogICAgICAgICBj
cmVhdGVBVlBsYXllckl0ZW0oKTsKICAgICAgICAgY3JlYXRlQVZQbGF5ZXIoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgK
aW5kZXggMDQ1MzI0NDMyZjdhZDI5NjY2YmNjNGM4OWQ5YThiM2Q5NTQyZGRmNC4uNmEyMGEyZmYw
ZDQwYzA3ZWUxNTZmMTk3ZjFhMGY0YzhhNGJmMzJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaApAQCAtMTY2LDcgKzE2Niw3IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
ICAgIHZvaWQgbG9hZChNZWRpYVN0cmVhbVByaXZhdGUmKSBvdmVycmlkZSB7IHNldE5ldHdvcmtT
dGF0ZShNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOyB9CisgICAgdm9pZCBsb2FkKE1lZGlhU3Ry
ZWFtUHJpdmF0ZSYpIG92ZXJyaWRlIHsgc2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGU6OkZvcm1hdEVycm9yKTsgfQogI2VuZGlmCiAgICAgdm9pZCBjYW5jZWxMb2FkKCkg
b3ZlcnJpZGUgPSAwOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlh
UmVuZGVyaW5nTW9kZSBjdXJyZW50UmVuZGVyaW5nTW9kZSgpIGNvbnN0OwogICAgIE1lZGlhUmVu
ZGVyaW5nTW9kZSBwcmVmZXJyZWRSZW5kZXJpbmdNb2RlKCkgY29uc3Q7CiAKLSAgICBib29sIG1l
dGFEYXRhQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlID49IE1lZGlhUGxh
eWVyOjpIYXZlTWV0YWRhdGE7IH0KKyAgICBib29sIG1ldGFEYXRhQXZhaWxhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWFkeVN0YXRlID49IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0
YWRhdGE7IH0KICAgICBkb3VibGUgcmVxdWVzdGVkUmF0ZSgpIGNvbnN0OwogICAgIE1lZGlhVGlt
ZSBtYXhUaW1lTG9hZGVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc1JlYWR5Rm9yVmlkZW9TZXR1cCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggMGNlOGNlYjQ4YmQ3ODhjZWIxOWFhOWRkODk3
ZjkyOTlkZWFiZGQwZC4uODU2MmU4NDVkMWZjYTBjMzllNmNjZmUxYTcxM2M1ZGFiNTgxNTcyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC05MDcsMjQgKzkwNywyNCBAQCBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzdXBwb3J0c1R5cGUo
Y29uc3QgTQogewogICAgIGF1dG8gY29udGFpbmVyVHlwZSA9IHBhcmFtZXRlcnMudHlwZS5jb250
YWluZXJUeXBlKCk7CiAgICAgaWYgKGlzVW5zdXBwb3J0ZWRNSU1FVHlwZShjb250YWluZXJUeXBl
KSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogCiAgICAg
aWYgKCFzdGF0aWNNSU1FVHlwZUxpc3QoKS5jb250YWlucyhjb250YWluZXJUeXBlKSAmJiAhYXZm
TUlNRVR5cGVzKCkuY29udGFpbnMoY29udGFpbmVyVHlwZSkpCi0gICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIGF1dG8gY29kZWNzID0gcGFyYW1ldGVy
cy50eXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOwogI2lmIEhB
VkUoQVZDRlVSTF9QTEFZQUJMRV9NSU1FVFlQRSkKICAgICAvLyBUaGUgc3BlYyBzYXlzOgogICAg
IC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNz
IHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0
ZWQgb3Igbm90LiIKICAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOwogCiAgICAgU3RyaW5nIHR5cGVTdHJpbmcgPSBj
b250YWluZXJUeXBlICsgIjsgY29kZWNzPVwiIiArIGNvZGVjcyArICJcIiI7Ci0gICAgcmV0dXJu
IEFWQ0ZVUkxBc3NldElzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBlKHR5cGVTdHJpbmcuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSkgPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXll
cjo6TWF5QmVTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIEFWQ0ZVUkxBc3NldElzUGxheWFibGVFeHRl
bmRlZE1JTUVUeXBlKHR5cGVTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkgPyBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGU6Ok1heUJlU3VwcG9ydGVkOwogI2Vsc2UKICAgICBpZiAoYXZmTUlNRVR5cGVzKCkuY29udGFp
bnMoY29udGFpbmVyVHlwZSkpCi0gICAgICAgIHJldHVybiBjb2RlY3MuaXNFbXB0eSgpID8gTWVk
aWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOwotICAg
IHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBjb2Rl
Y3MuaXNFbXB0eSgpID8gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQg
OiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKKyAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCmluZGV4IGU5OGQ4ZWE5MDAwNDcxOGNmYzkwNDRhMDk4MzZhZjBiOTBl
MGZlMDEuLmNhZGEyMzExYmI2YzY4MjI4OWIwZmE2NmJiNmQ4ZDUxMjU5M2Y2MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5Q
bGF5RmFzdFJldmVyc2VEaWRDaGFuZ2UoYm9vbCk7CiAgICAgdm9pZCBjYW5QbGF5RmFzdEZvcndh
cmREaWRDaGFuZ2UoYm9vbCk7CiAKLSAgICB2b2lkIHNldEJ1ZmZlcmluZ1BvbGljeShNZWRpYVBs
YXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3kpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QnVmZmVy
aW5nUG9saWN5KE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kpIG92ZXJyaWRlOwogCiAjaWYg
SEFWRShBVkZPVU5EQVRJT05fVklERU9fT1VUUFVUKQogICAgIHZvaWQgb3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZShBVlBsYXllckl0ZW1WaWRlb091dHB1dCopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KaW5kZXggNTQxMDM5MTM0MTllZTVkNDhlOWVjMWFjYjY4OTJmOThkZGU5ZjNiZC4uNzE4OTI5
YzYyMTIyMzExZjY5YTNkOGRhZTAyODIzZDMxNjE1MmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYKIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbihwbGF5ZXIpCiAgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihtYWtl
VW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCi0gICAgLCBtX3ZpZGVv
RnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCkK
KyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5
OjpSZXNpemVBc3BlY3QpCiAgICAgLCBtX29iamNPYnNlcnZlcihhZG9wdE5TKFtbV2ViQ29yZUFW
Rk1vdmllT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoUGxheWVyOm1ha2VXZWFrUHRyKCp0aGlzKV0p
KQogICAgICwgbV92aWRlb0ZyYW1lSGFzRHJhd24oZmFsc2UpCiAgICAgLCBtX2hhdmVDaGVja2Vk
UGxheWFiaWxpdHkoZmFsc2UpCkBAIC0xMDkxLDExICsxMDkxLDExIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRp
YVBsYXllcjo6CiAgICAgICAgIHJldHVybjsKIAogICAgIE5TU3RyaW5nICp2aWRlb0dyYXZpdHkg
PSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OwotICAgIGlmIChncmF2aXR5ID09IE1l
ZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemUpCisgICAgaWYgKGdyYXZpdHkgPT0gTWVkaWFQ
bGF5ZXI6OlZpZGVvR3Jhdml0eTo6UmVzaXplKQogICAgICAgICB2aWRlb0dyYXZpdHkgPSBBVkxh
eWVyVmlkZW9HcmF2aXR5UmVzaXplOwotICAgIGVsc2UgaWYgKGdyYXZpdHkgPT0gTWVkaWFQbGF5
ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCkKKyAgICBlbHNlIGlmIChncmF2aXR5ID09IE1l
ZGlhUGxheWVyOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZUFzcGVjdCkKICAgICAgICAgdmlkZW9HcmF2
aXR5ID0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBlbHNlIGlmIChncmF2
aXR5ID09IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKQorICAgIGVs
c2UgaWYgKGdyYXZpdHkgPT0gTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eTo6UmVzaXplQXNwZWN0
RmlsbCkKICAgICAgICAgdmlkZW9HcmF2aXR5ID0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFz
cGVjdEZpbGw7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE1
OTIsMzAgKzE1OTIsMzAgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QKIHsKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQogICAgIGlmIChwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCi0gICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICNlbmRpZgogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAgICAgaWYgKHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSkKLSAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogI2VuZGlmCiAKICAgICBh
dXRvIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpOwogICAg
IGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUoY29udGFpbmVyVHlwZSkpCi0gICAgICAgIHJldHVy
biBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIGlmICghc3RhdGljTUlNRVR5
cGVMaXN0KCkuY29udGFpbnMoY29udGFpbmVyVHlwZSkgJiYgIUFWQXNzZXRNSU1FVHlwZUNhY2hl
OjpzaW5nbGV0b24oKS5jYW5EZWNvZGVUeXBlKGNvbnRhaW5lclR5cGUpKQotICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICAvLyBUaGUgc3BlYyBzYXlz
OgogICAgIC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIg
dW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBz
dXBwb3J0ZWQgb3Igbm90LiIKICAgICBpZiAocGFyYW1ldGVycy50eXBlLmNvZGVjcygpLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOwogCiAg
ICAgaWYgKCFjb250ZW50VHlwZU1lZXRzSGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHMocGFyYW1l
dGVycy50eXBlLCBwYXJhbWV0ZXJzLmNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9y
dCkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAogICAg
IE5TU3RyaW5nICp0eXBlU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDsg
Y29kZWNzPVwiJUBcIiIsIChOU1N0cmluZyAqKWNvbnRhaW5lclR5cGUsIChOU1N0cmluZyAqKXBh
cmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKV07
Ci0gICAgcmV0dXJuIFtQQUw6OmdldEFWVVJMQXNzZXRDbGFzcygpIGlzUGxheWFibGVFeHRlbmRl
ZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQ
bGF5ZXI6Ok1heUJlU3VwcG9ydGVkOworICAgIHJldHVybiBbUEFMOjpnZXRBVlVSTEFzc2V0Q2xh
c3MoKSBpc1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlwZTp0eXBlU3RyaW5nXSA/IE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6
TWF5QmVTdXBwb3J0ZWQ7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCkBAIC0xNjI0LDcgKzE2MjQsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5
U3lzdAogICAgIGlmICgha2V5U3lzdGVtLmlzRW1wdHkoKSkgewogICAgICAgICAvLyAiQ2xlYXIg
S2V5IiBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIEhMUzoKICAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLnczYy5jbGVhcmtleSIpICYmICFtaW1lVHlwZS5p
c0VtcHR5KCkgJiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlv
bi94LW1wZWd1cmwiKSkKLSAgICAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBw
b3J0ZWQ7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaWYgKCFrZXlTeXN0
ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDcxNTI4Yzk5YzBjYzYwN2QzOGYyZWYzZTA3Mjg4
Y2Y2ZDMzNTFmZDYuLmRmZjNlMjQ1MmJmNWFlMjVhYzQ2MzA1YjEwMzlmZTI4NzNjOThiNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTEzMSw4ICsxMzEsOCBAQCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQyhNZWRpYQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV9zeW5jaHJvbml6
ZXIoYWRvcHROUyhbUEFMOjphbGxvY0FWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVySW5z
dGFuY2UoKSBpbml0XSkpCiAgICAgLCBtX3NlZWtUaW1lcigqdGhpcywgJk1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla0ludGVybmFsKQotICAgICwgbV9uZXR3b3JrU3Rh
dGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQotICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpI
YXZlTm90aGluZykKKyAgICAsIG1fbmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkVtcHR5KQorICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlTm90aGluZykKICAgICAsIG1fcmF0ZSgxKQogICAgICwgbV9wbGF5aW5nKDApCiAgICAgLCBt
X3NlZWtpbmcoZmFsc2UpCkBAIC0yMzMsNDEgKzIzMyw0MSBAQCBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBl
KGNvbgogewogICAgIC8vIFRoaXMgZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgbm9uLW1lZGlhLXNv
dXJjZSBzb3VyY2VzLgogICAgIGlmICghcGFyYW1ldGVycy5pc01lZGlhU291cmNlKQotICAgICAg
ICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKICAgICBpZiAocGFyYW1ldGVycy5pc01lZGlhU3RyZWFtKQotICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAjZW5kaWYKIAogICAgIGlmIChwYXJh
bWV0ZXJzLnR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90
U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNO
b3RTdXBwb3J0ZWQ7CiAKICAgICBpZiAoQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6
c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSkgewogICAgICAgICBpZiAoIUFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLnN1cHBvcnRzQ29udGVudFR5cGUocGFyYW1l
dGVycy50eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0
ZWQ7CisgICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQ7CiAgICAgfSBlbHNlIGlmIChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9u
KCkuaXNBdmFpbGFibGUoKSkgewogICAgICAgICBpZiAoIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpz
aW5nbGV0b24oKS5zdXBwb3J0c0NvbnRlbnRUeXBlKHBhcmFtZXRlcnMudHlwZSkpCi0gICAgICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogICAgIH0gZWxz
ZQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICAv
LyBUaGUgc3BlYyBzYXlzOgogICAgIC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8g
cmV0dXJuICJtYXliZSIgdW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxp
c2hlZCBhcyBiZWluZyBzdXBwb3J0ZWQgb3Igbm90LiIKICAgICBhdXRvIGNvZGVjcyA9IHBhcmFt
ZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKICAg
ICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNYXlC
ZVN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1h
eUJlU3VwcG9ydGVkOwogCiAgICAgU3RyaW5nIG91dHB1dENvZGVjcyA9IGNvZGVjczsKICAgICBp
ZiAoW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1l
dGVyOildKQogICAgICAgICBvdXRwdXRDb2RlY3MgPSBbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJz
ZXJDbGFzcygpIG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1l
dGVyOm91dHB1dENvZGVjc107CiAKICAgICBpZiAoIWNvbnRlbnRUeXBlTWVldHNIYXJkd2FyZURl
Y29kZVJlcXVpcmVtZW50cyhwYXJhbWV0ZXJzLnR5cGUsIHBhcmFtZXRlcnMuY29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJ
c05vdFN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6
OklzTm90U3VwcG9ydGVkOwogCiAgICAgU3RyaW5nIHR5cGUgPSBtYWtlU3RyaW5nKHBhcmFtZXRl
cnMudHlwZS5jb250YWluZXJUeXBlKCksICI7IGNvZGVjcz1cIiIsIG91dHB1dENvZGVjcywgIlwi
Iik7CiAgICAgaWYgKEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigp
LmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJldHVybiBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlw
ZUNhY2hlOjpzaW5nbGV0b24oKS5jYW5EZWNvZGVUeXBlKHR5cGUpID8gTWVkaWFQbGF5ZXI6Oklz
U3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwotICAgIHJldHVybiBBVkFz
c2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuY2FuRGVjb2RlVHlwZSh0eXBlKSA/IE1lZGlh
UGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKyAgICAg
ICAgcmV0dXJuIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNh
bkRlY29kZVR5cGUodHlwZSkgPyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRl
ZCA6IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOworICAgIHJldHVy
biBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuY2FuRGVjb2RlVHlwZSh0eXBlKSA/
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQ7CiB9CiAKICNwcmFnbWEgbWFyayAtCkBAIC0yNzYs
NyArMjc2LDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShjb24KIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpsb2FkKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gVGhp
cyBtZWRpYSBlbmdpbmUgb25seSBzdXBwb3J0cyBNZWRpYVNvdXJjZSBVUkxzLgotICAgIG1fbmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yOworICAgIG1fbmV0d29ya1N0YXRl
ID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7CiAgICAgbV9wbGF5ZXIt
Pm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIH0KIApAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpsb2FkKGNvbnN0IFN0cmluZyYsIE1l
ZGlhU291cmNlUHJpdmF0CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYpCiB7
Ci0gICAgc2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgc2V0
TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yKTsKIH0K
ICNlbmRpZgogCkBAIC02ODIsNyArNjgyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6Om5vdGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkKIAogTWVk
aWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjptb3ZpZUxvYWRUeXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN0
b3JlZFN0cmVhbTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OlN0b3Jl
ZFN0cmVhbTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnByZXBhcmVGb3JSZW5kZXJpbmcoKQpAQCAtNzU0LDcgKzc1NCw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjplbnN1cmVMYXllcigpCiAgICAgQVNTRVJUKG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKTsKICAgICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyKSB7CiAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGNy
ZWF0ZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciIpOwotICAgICAgICBzZXROZXR3b3JrU3Rh
dGUoTWVkaWFQbGF5ZXI6OkRlY29kZUVycm9yKTsKKyAgICAgICAgc2V0TmV0d29ya1N0YXRlKE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkRlY29kZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtODE1LDcgKzgxNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpkZXN0cm95RGVjb21wcmVzc2lvblNlc3Npb24oKQogCiBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2hvdWxkQmVQbGF5aW5nKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9wbGF5aW5nICYmICFzZWVraW5nKCkgJiYgYWxsUmVuZGVyZXJzSGF2
ZUF2YWlsYWJsZVNhbXBsZXMoKSAmJiBtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkhhdmVG
dXR1cmVEYXRhOworICAgIHJldHVybiBtX3BsYXlpbmcgJiYgIXNlZWtpbmcoKSAmJiBhbGxSZW5k
ZXJlcnNIYXZlQXZhaWxhYmxlU2FtcGxlcygpICYmIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGE7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRIYXNBdmFpbGFibGVWaWRlb0ZyYW1lKGJvb2wgZmxh
ZykKQEAgLTEwOTgsNyArMTA5OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlCiAgICAgZWxz
ZQogICAgICAgICBbbV9zeW5jaHJvbml6ZXIgc2V0UmF0ZTowXTsKIAotICAgIGlmIChtX3JlYWR5
U3RhdGUgPj0gTWVkaWFQbGF5ZXJFbnVtczo6SGF2ZUN1cnJlbnREYXRhICYmIGhhc1ZpZGVvKCkg
JiYgIW1faGFzQXZhaWxhYmxlVmlkZW9GcmFtZSkgeworICAgIGlmIChtX3JlYWR5U3RhdGUgPj0g
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSAmJiBoYXNWaWRlbygpICYm
ICFtX2hhc0F2YWlsYWJsZVZpZGVvRnJhbWUpIHsKICAgICAgICAgbV9yZWFkeVN0YXRlSXNXYWl0
aW5nRm9yQXZhaWxhYmxlRnJhbWUgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCA3NDBlOTZjYTQ4MGEwOTNlMTA4MjZjYTdiMDBiMTIz
YjljNzk5ZDI2Li5mZTY5ZmFjM2EzZTcwOTc2ZWQ1NmRhNGNkODUwYWM4NzYxOTY3YWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMTU4LDE0ICsxNTgsMTQgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICBib29sIG1ldGFEYXRhQXZhaWxhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0cmVhbVByaXZhdGUgJiYgbV9yZWFkeVN0YXRlID49
IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7IH0KKyAgICBib29sIG1ldGFEYXRhQXZhaWxhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0cmVhbVByaXZhdGUgJiYgbV9yZWFkeVN0YXRlID49
IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGE7IH0KIAogICAgIHZvaWQgYWNj
ZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBv
cnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0gICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2Fk
VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtOyB9
CisgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpMaXZlU3RyZWFtOyB9
CiAKICAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIApAQCAt
MjU1LDggKzI1NSw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV92aWRlb1RyYWNrTWFwOwogICAgIFBlbmRpbmdT
YW1wbGVRdWV1ZSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlOwogCi0gICAgTWVkaWFQbGF5ZXI6
Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZSB7IE1lZGlhUGxheWVyOjpFbXB0eSB9OwotICAg
IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZSB7IE1lZGlhUGxheWVyOjpIYXZl
Tm90aGluZyB9OworICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGUg
eyBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSB9OworICAgIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZSB7IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90
aGluZyB9OwogICAgIEZsb2F0U2l6ZSBtX2ludHJpbnNpY1NpemU7CiAgICAgZmxvYXQgbV92b2x1
bWUgeyAxIH07CiAgICAgRGlzcGxheU1vZGUgbV9kaXNwbGF5TW9kZSB7IE5vbmUgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCA2MzE0ODE0YmM4OGZjOWNmN2ViYmNlOTRmYzhlNzE5
MWRmM2Y0NTRmLi4yNTE5YzExNGY0MDg5NjlhM2M0MGJlYjM4NTQzNTkwOGYwYjI1YjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8
U3RyaW5nLCBBU0MKIAogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBwYXJhbWV0ZXJzLmlzTWVk
aWFTdHJlYW0gPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNOb3RT
dXBwb3J0ZWQ7CisgICAgcmV0dXJuIHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSA/IE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKICNwcmFnbWEgbWFyayAtCkBAIC01MjYsNyArNTI2LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmxvYWQoY29uc3Qg
U3RyaW5nJikKIHsKICAgICAvLyBUaGlzIG1lZGlhIGVuZ2luZSBvbmx5IHN1cHBvcnRzIE1lZGlh
U3RyZWFtIFVSTHMuCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKLSAgICAgICAg
c2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgIHNldE5l
dHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAgICAg
fSk7CiB9CiAKQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6bG9hZChjb25zdCBTdHJpbmcmLCBNZWRpYVNvdXJjZVByaXZhdAogewog
ICAgIC8vIFRoaXMgbWVkaWEgZW5naW5lIG9ubHkgc3VwcG9ydHMgTWVkaWFTdHJlYW0gVVJMcy4K
ICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewotICAgICAgICBzZXROZXR3b3JrU3Rh
dGUoTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yKTsKKyAgICAgICAgc2V0TmV0d29ya1N0YXRlKE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yKTsKICAgICB9KTsKIH0KICNlbmRp
ZgpAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQogCiAgICAgc2NoZWR1bGVE
ZWZlcnJlZFRhc2soW3RoaXNdIHsKICAgICAgICAgdXBkYXRlVHJhY2tzKCk7Ci0gICAgICAgIHNl
dE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6SWRsZSk7CisgICAgICAgIHNldE5ldHdvcmtTdGF0
ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpJZGxlKTsKICAgICAgICAgdXBkYXRlUmVhZHlT
dGF0ZSgpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggNGRhMDlkMmIxNzhjMjJlNjNkMWVlZTViZjNi
MWI5ZmE3ZWNiMjhlNi4uMGU3YWUwNTNkOWRjZjMyYWM4ZTFiN2I5ZmZkZTUxOTA1NmQyNzI2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDLm1tCkBAIC04Miw3ICs4Miw3IEBAIE1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIE1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDCiAgICAgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuaXNN
ZWRpYVNvdXJjZSA9IHRydWU7CiAgICAgcGFyYW1ldGVycy50eXBlID0gY29udGVudFR5cGU7Ci0g
ICAgaWYgKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZCkKKyAgICBpZiAoTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVy
cykgPT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpCiAgICAgICAg
IHJldHVybiBOb3RTdXBwb3J0ZWQ7CiAKICAgICBhdXRvIG5ld1NvdXJjZUJ1ZmZlciA9IFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUodGhpcyk7CkBAIC0xMzEsNyArMTMxLDcgQEAg
dm9pZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpkdXJhdGlvbkNoYW5nZWQoKQogdm9pZCBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjptYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0
dXMgc3RhdHVzKQogewogICAgIGlmIChzdGF0dXMgPT0gRW9zTm9FcnJvcikKLSAgICAgICAgbV9w
bGF5ZXItPnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TG9hZGVkKTsKKyAgICAgICAgbV9w
bGF5ZXItPnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQp
OwogICAgIG1faXNFbmRlZCA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggMzExZGJmNDdhOTJlMjBi
ZGQyZDA2N2I0MzkzNDFjM2UzNWRkMTE3Yy4uNWE1NjFjMzhhOThjNzE1YWE2NTE4YjJlMGIyNDk2
MDI4MGFmZGUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpyZW1vdmVkRnJvbU1lZGlhU291cmNlKCkKIAogTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlYWR5U3RhdGUoKSBjb25z
dAogewotICAgIHJldHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNvdXJjZS0+cGxheWVyKCkt
PnJlYWR5U3RhdGUoKSA6IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKyAgICByZXR1cm4gbV9t
ZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5yZWFkeVN0YXRlKCkgOiBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVh
ZHlTdGF0ZSkKQEAgLTEyODksNyArMTI4OSw3IEBAIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmNhblN3aXRjaFRvVHlwZShjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCiAg
ICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRl
cnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CiAgICAgcGFyYW1ldGVycy50eXBlID0gY29udGVudFR5
cGU7Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3Vw
cG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAg
ICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5
cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0
ZWQ7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldFZpZGVvTGF5ZXIo
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFj
dG9yeUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKaW5kZXggMmVlMzgyNzA4NDk0
YzViN2EzMTY3NTlmZGRhZGI4NGYwMzJhYjlmYy4uOThhNTNjNDJmMzA1YjkyODRlY2VhNzhiNWUz
NmE0NzBkNzUwZGRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5Q29jb2EuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgY3JlYXRlTWVkaWFQ
bGF5ZXJEZWNvZGluZ0NvbmZpZ3VyYXRpb25Db2NvYShNZWRpYURlY29kaW5nQ29uZmlndXJhdGlv
biYmIGNvCiAgICAgICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVycyB7
IH07CiAgICAgICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKHZpZGVvQ29uZmlndXJh
dGlvbi5jb250ZW50VHlwZSk7CiAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IGNv
bmZpZ3VyYXRpb24udHlwZSA9PSBNZWRpYURlY29kaW5nVHlwZTo6TWVkaWFTb3VyY2U7Ci0gICAg
ICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxh
eWVyOjpJc1N1cHBvcnRlZCkgeworICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlw
ZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkg
ewogICAgICAgICAgICAgY2FsbGJhY2soe3sgfSwgV1RGTW92ZShjb25maWd1cmF0aW9uKX0pOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBj
cmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkNvY29hKE1lZGlhRGVjb2RpbmdD
b25maWd1cmF0aW9uJiYgY28KICAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBw
YXJhbWV0ZXJzIHsgfTsKICAgICAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5cGUoY29u
ZmlndXJhdGlvbi5hdWRpby52YWx1ZSgpLmNvbnRlbnRUeXBlKTsKICAgICAgICAgcGFyYW1ldGVy
cy5pc01lZGlhU291cmNlID0gY29uZmlndXJhdGlvbi50eXBlID09IE1lZGlhRGVjb2RpbmdUeXBl
OjpNZWRpYVNvdXJjZTsKLSAgICAgICAgaWYgKE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFy
YW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkKSB7CisgICAgICAgIGlmIChNZWRp
YVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGU6OklzU3VwcG9ydGVkKSB7CiAgICAgICAgICAgICBjYWxsYmFjayh7eyB9LCBXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDEyN2M1
N2QxYWI4NTFmM2MyNDc2OGUwYTU1NzFhOGZmM2ZhZTZlZS4uYTBjNmVmOTRiMmZkZmIxYTk5M2Yy
ODlhMWIzY2VmODhlYjMzYjM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTQ3NywxMyArNDc3LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFy
IHJlZ2lzCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZEZ1bGwoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGlwZWxpbmVOYW1lKQogewogICAgIGlm
IChtX3BsYXllci0+Y29udGVudE1JTUVUeXBlKCkgPT0gImltYWdlL2dpZiIpIHsKLSAgICAgICAg
bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IsIE1lZGlhUGxheWVyOjpIYXZl
Tm90aGluZywgdHJ1ZSk7CisgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6Rm9ybWF0RXJyb3IsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGlu
ZywgdHJ1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBVUkwgdXJsKFVSTCgpLCB1
cmxTdHJpbmcpOwogICAgIGlmICh1cmwucHJvdG9jb2xJc0Fib3V0KCkpIHsKLSAgICAgICAgbG9h
ZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IsIE1lZGlhUGxheWVyOjpIYXZlTm90
aGluZywgdHJ1ZSk7CisgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZTo6Rm9ybWF0RXJyb3IsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZywg
dHJ1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ5OCwxNiArNDk4LDE2IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkRnVsbChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgc2V0UGxheWJpblVSTCh1cmwpOwogCiAgICAgR1NU
X0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAicHJlbG9hZDogJXMiLCBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhtX3ByZWxvYWQpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGlmIChtX3ByZWxvYWQg
PT0gTWVkaWFQbGF5ZXI6Ok5vbmUpIHsKKyAgICBpZiAobV9wcmVsb2FkID09IE1lZGlhUGxheWVy
OjpQcmVsb2FkOjpOb25lKSB7CiAgICAgICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAi
RGVsYXlpbmcgbG9hZC4iKTsKICAgICAgICAgbV9pc0RlbGF5aW5nTG9hZCA9IHRydWU7CiAgICAg
fQogCiAgICAgLy8gUmVzZXQgbmV0d29yayBhbmQgcmVhZHkgc3RhdGVzLiBUaG9zZSB3aWxsIGJl
IHNldCBwcm9wZXJseSBvbmNlCiAgICAgLy8gdGhlIHBpcGVsaW5lIHByZS1yb2xsZWQuCi0gICAg
bV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKKyAgICBtX25ldHdvcmtTdGF0
ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRpbmc7CiAgICAgbV9wbGF5ZXItPm5l
dHdvcmtTdGF0ZUNoYW5nZWQoKTsKLSAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmc7CisgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6Okhh
dmVOb3RoaW5nOwogICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogICAgIG1fYXJl
Vm9sdW1lQW5kTXV0ZUluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgbV9oYXNUYWludGVkT3JpZ2lu
ID0gV1RGOjpudWxsb3B0OwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50KikKIHsKICAgICAvLyBQcm9wZXJseSBmYWlsIHNvIHRoZSBnbG9iYWwgTWVkaWFQ
bGF5ZXIgdHJpZXMgdG8gZmFsbGJhY2sgdG8gdGhlIG5leHQgTWVkaWFQbGF5ZXJQcml2YXRlLgot
ICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yOworICAgIG1fbmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7CiAgICAg
bV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIH0KICNlbmRpZgpAQCAtNTQ2LDcgKzU0
Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkKE1lZGlhU3RyZWFt
UHJpdmF0ZSYgc3RyZWFtKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2Fu
Y2VsTG9hZCgpCiB7Ci0gICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRp
bmcgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkxvYWRlZCkKKyAgICBpZiAobV9u
ZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkaW5nIHx8IG1fbmV0
d29ya1N0YXRlID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRlZCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1fcGlwZWxpbmUpCkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhbmNlbExvYWQoKQogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnByZXBhcmVUb1BsYXkoKQogewogICAgIEdTVF9ERUJVR19PQkpF
Q1QocGlwZWxpbmUoKSwgIlByZXBhcmUgdG8gcGxheSIpOwotICAgIG1fcHJlbG9hZCA9IE1lZGlh
UGxheWVyOjpBdXRvOworICAgIG1fcHJlbG9hZCA9IE1lZGlhUGxheWVyOjpQcmVsb2FkOjpBdXRv
OwogICAgIGlmIChtX2lzRGVsYXlpbmdMb2FkKSB7CiAgICAgICAgIG1faXNEZWxheWluZ0xvYWQg
PSBmYWxzZTsKICAgICAgICAgY29tbWl0TG9hZCgpOwpAQCAtNTczLDcgKzU3Myw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF5KCkKICAgICBpZiAoY2hhbmdlUGlwZWxp
bmVTdGF0ZShHU1RfU1RBVEVfUExBWUlORykpIHsKICAgICAgICAgbV9pc0VuZFJlYWNoZWQgPSBm
YWxzZTsKICAgICAgICAgbV9pc0RlbGF5aW5nTG9hZCA9IGZhbHNlOwotICAgICAgICBtX3ByZWxv
YWQgPSBNZWRpYVBsYXllcjo6QXV0bzsKKyAgICAgICAgbV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6
OlByZWxvYWQ6OkF1dG87CiAgICAgICAgIHVwZGF0ZURvd25sb2FkQnVmZmVyaW5nRmxhZygpOwog
ICAgICAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXkiKTsKICAgICB9IGVsc2UK
QEAgLTgwOCwxMyArODA4LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpz
ZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9hZCkK
IHsKICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJTZXR0aW5nIHByZWxvYWQgdG8g
JXMiLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhwcmVsb2FkKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBpZiAocHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6QXV0byAmJiBtX2lzTGl2ZVN0cmVhbSkK
KyAgICBpZiAocHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6QXV0byAmJiBtX2lzTGl2
ZVN0cmVhbSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wcmVsb2FkID0gcHJlbG9hZDsKICAg
ICB1cGRhdGVEb3dubG9hZEJ1ZmZlcmluZ0ZsYWcoKTsKIAotICAgIGlmIChtX2lzRGVsYXlpbmdM
b2FkICYmIG1fcHJlbG9hZCAhPSBNZWRpYVBsYXllcjo6Tm9uZSkgeworICAgIGlmIChtX2lzRGVs
YXlpbmdMb2FkICYmIG1fcHJlbG9hZCAhPSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6Tm9uZSkgewog
ICAgICAgICBtX2lzRGVsYXlpbmdMb2FkID0gZmFsc2U7CiAgICAgICAgIGNvbW1pdExvYWQoKTsK
ICAgICB9CkBAIC0xOTg4LDE3ICsxOTg4LDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICB8
fCBnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1RfU1RSRUFNX0VSUk9SLCBHU1RfU1RSRUFN
X0VSUk9SX0ZBSUxFRCkKICAgICAgICAgICAgIHx8IGdfZXJyb3JfbWF0Y2hlcyhlcnIuZ2V0KCks
IEdTVF9DT1JFX0VSUk9SLCBHU1RfQ09SRV9FUlJPUl9NSVNTSU5HX1BMVUdJTikKICAgICAgICAg
ICAgIHx8IGdfZXJyb3JfbWF0Y2hlcyhlcnIuZ2V0KCksIEdTVF9SRVNPVVJDRV9FUlJPUiwgR1NU
X1JFU09VUkNFX0VSUk9SX05PVF9GT1VORCkpCi0gICAgICAgICAgICBlcnJvciA9IE1lZGlhUGxh
eWVyOjpGb3JtYXRFcnJvcjsKKyAgICAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6Rm9ybWF0RXJyb3I7CiAgICAgICAgIGVsc2UgaWYgKGdfZXJyb3JfbWF0Y2hlcyhl
cnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfVFlQRV9OT1RfRk9V
TkQpKSB7CiAgICAgICAgICAgICAvLyBMZXQgdGhlIG1lZGlhUGxheWVyQ2xpZW50IGhhbmRsZSB0
aGUgc3RyZWFtIGVycm9yLCBpbiB0aGlzIGNhc2UgdGhlIEhUTUxNZWRpYUVsZW1lbnQgd2lsbCBl
bWl0IGEgc3RhbGxlZCBldmVudC4KICAgICAgICAgICAgIEdTVF9FUlJPUigiRGVjb2RlIGVycm9y
LCBsZXQgdGhlIE1lZGlhIGVsZW1lbnQgZW1pdCBhIHN0YWxsZWQgZXZlbnQuIik7CiAgICAgICAg
ICAgICBtX2xvYWRpbmdTdGFsbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9IGVsc2UgaWYgKGVyci0+ZG9tYWluID09IEdTVF9TVFJFQU1fRVJST1IpIHsKLSAgICAgICAg
ICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6OkRlY29kZUVycm9yOworICAgICAgICAgICAgZXJyb3Ig
PSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpEZWNvZGVFcnJvcjsKICAgICAgICAgICAgIGF0
dGVtcHROZXh0TG9jYXRpb24gPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKGVyci0+ZG9tYWlu
ID09IEdTVF9SRVNPVVJDRV9FUlJPUikKLSAgICAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6
Ok5ldHdvcmtFcnJvcjsKKyAgICAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZTo6TmV0d29ya0Vycm9yOwogCiAgICAgICAgIGlmIChhdHRlbXB0TmV4dExvY2F0aW9uKQog
ICAgICAgICAgICAgaXNzdWVFcnJvciA9ICFsb2FkTmV4dExvY2F0aW9uKCk7CkBAIC0yNTMxLDEy
ICsyNTMxLDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0
ZXMoKQogICAgICAgICAvLyBVcGRhdGUgcmVhZHkgYW5kIG5ldHdvcmsgc3RhdGVzLgogICAgICAg
ICBzd2l0Y2ggKG1fY3VycmVudFN0YXRlKSB7CiAgICAgICAgIGNhc2UgR1NUX1NUQVRFX05VTEw6
Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7Ci0g
ICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpFbXB0eTsKKyAgICAgICAg
ICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsK
KyAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6
RW1wdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHU1RfU1RBVEVfUkVBRFk6
Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOwot
ICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6RW1wdHk7CisgICAgICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRh
OworICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
OjpFbXB0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdTVF9TVEFURV9QQVVT
RUQ6CiAgICAgICAgIGNhc2UgR1NUX1NUQVRFX1BMQVlJTkc6CkBAIC0yNTQ0LDE4ICsyNTQ0LDE4
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAg
ICAgICAgICAgICAgIGlmIChtX2J1ZmZlcmluZ1BlcmNlbnRhZ2UgPT0gMTAwKSB7CiAgICAgICAg
ICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIltCdWZmZXJpbmddIENv
bXBsZXRlLiIpOwogICAgICAgICAgICAgICAgICAgICBtX2lzQnVmZmVyaW5nID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdo
RGF0YTsKLSAgICAgICAgICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBtX2RpZERvd25sb2Fk
RmluaXNoID8gTWVkaWFQbGF5ZXI6OklkbGUgOiBNZWRpYVBsYXllcjo6TG9hZGluZzsKKyAgICAg
ICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6Okhh
dmVFbm91Z2hEYXRhOworICAgICAgICAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IG1fZGlk
RG93bmxvYWRGaW5pc2ggPyBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpJZGxlIDogTWVkaWFQ
bGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGluZzsKICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUN1cnJl
bnREYXRhOwotICAgICAgICAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVy
OjpMb2FkaW5nOworICAgICAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhOworICAgICAgICAgICAgICAgICAgICBtX25l
dHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRpbmc7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIGlmIChtX2RpZERvd25sb2FkRmluaXNoKSB7
Ci0gICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hE
YXRhOwotICAgICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRl
ZDsKKyAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZTo6SGF2ZUVub3VnaERhdGE7CisgICAgICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQ7CiAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRnV0dXJlRGF0YTsK
LSAgICAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwor
ICAgICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlRnV0dXJlRGF0YTsKKyAgICAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRpbmc7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjYxOSw5ICsyNjE5LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIHVwZGF0ZURvd25sb2FkQnVmZmVyaW5nRmxh
ZygpOwogCiAgICAgICAgIGlmIChtX2N1cnJlbnRTdGF0ZSA9PSBHU1RfU1RBVEVfUkVBRFkpCi0g
ICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisgICAg
ICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhp
bmc7CiAgICAgICAgIGVsc2UgaWYgKG1fY3VycmVudFN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQp
IHsKLSAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0
YTsKKyAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlRW5vdWdoRGF0YTsKICAgICAgICAgICAgIG1faXNQYXVzZWQgPSB0cnVlOwogICAgICAgICB9
IGVsc2UgaWYgKG1fY3VycmVudFN0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HKQogICAgICAgICAg
ICAgbV9pc1BhdXNlZCA9IGZhbHNlOwpAQCAtMjYyOSw3ICsyNjI5LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIGlmICghbV9pc1Bh
dXNlZCAmJiBtX3BsYXliYWNrUmF0ZSkKICAgICAgICAgICAgIGNoYW5nZVBpcGVsaW5lU3RhdGUo
R1NUX1NUQVRFX1BMQVlJTkcpOwogCi0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5
ZXI6OkxvYWRpbmc7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6TG9hZGluZzsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
R1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiRWxzZSA6ICVkIiwgZ2V0U3RhdGVSZXN1bHQp
OwpAQCAtMjc0MSw5ICsyNzQxLDkgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmxvYWROZXh0TG9jYXRpb24oKQogICAgICAgICAgICAgR1NUX0lORk9fT0JKRUNUKHBpcGVsaW5l
KCksICJOZXcgbWVkaWEgdXJsOiAlcyIsIG5ld1VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
IAogICAgICAgICAgICAgLy8gUmVzZXQgcGxheWVyIHN0YXRlcy4KLSAgICAgICAgICAgIG1fbmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisgICAgICAgICAgICBtX25ldHdvcmtT
dGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRpbmc7CiAgICAgICAgICAgICBt
X3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwotICAgICAgICAgICAgbV9yZWFkeVN0YXRl
ID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0g
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOwogICAgICAgICAgICAgbV9wbGF5
ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAKICAgICAgICAgICAgIC8vIFJlc2V0IHBpcGVsaW5l
IHN0YXRlLgpAQCAtMjc5Niw3ICsyNzk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnMKIAog
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1
cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogewotICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgcmVzdWx0ID0gTWVkaWFQbGF5ZXI6
OklzTm90U3VwcG9ydGVkOworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgcmVzdWx0ID0g
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKICAgICAvLyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UgaXMgaW4g
Y2hhcmdlIG9mIG1lZGlhc291cmNlIHBsYXliYWNrLCBub3QgdXMuCiAgICAgaWYgKHBhcmFtZXRl
cnMuaXNNZWRpYVNvdXJjZSkKQEAgLTI4MTcsNyArMjgxNyw3IEBAIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c1R5cGUoY29uc3Qg
TWVkaWFFCiAgICAgaWYgKGdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoY29udGFpbmVyVHlwZSkpIHsKICAgICAgICAgLy8gU3BlYyBzYXlzIHdlIHNob3VsZCBub3Qg
cmV0dXJuICJwcm9iYWJseSIgaWYgdGhlIGNvZGVjcyBzdHJpbmcgaXMgZW1wdHkuCiAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IGNvZGVjcyA9IHBhcmFtZXRlcnMudHlwZS5jb2RlY3MoKTsKLSAgICAg
ICAgcmVzdWx0ID0gY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRl
ZCA6IChnc3RSZWdpc3RyeVNjYW5uZXIuYXJlQWxsQ29kZWNzU3VwcG9ydGVkKGNvZGVjcykgPyBN
ZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpOwor
ICAgICAgICByZXN1bHQgPSBjb2RlY3MuaXNFbXB0eSgpID8gTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZTo6TWF5QmVTdXBwb3J0ZWQgOiAoZ3N0UmVnaXN0cnlTY2FubmVyLmFyZUFsbENvZGVjc1N1
cHBvcnRlZChjb2RlY3MpID8gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQg
OiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCk7CiAgICAgfQogCiAg
ICAgYXV0byBmaW5hbFJlc3VsdCA9IGV4dGVuZGVkU3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMsIHJl
c3VsdCk7CkBAIC0yODM2LDEyICsyODM2LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp1cGRhdGVEb3dubG9hZEJ1ZmZlcmluZ0ZsYWcoKQogICAgIHVuc2lnbmVkIGZsYWdE
b3dubG9hZCA9IGdldEdzdFBsYXlGbGFnKCJkb3dubG9hZCIpOwogCiAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBzdG9wIGRvd25sb2FkaW5nIGlmIHdlIGFscmVhZHkgc3RhcnRlZCBpdC4KLSAgICBp
ZiAoZmxhZ3MgJiBmbGFnRG93bmxvYWQgJiYgbV9yZWFkeVN0YXRlID4gTWVkaWFQbGF5ZXI6Okhh
dmVOb3RoaW5nICYmICFtX3Nob3VsZFJlc2V0UGlwZWxpbmUpIHsKKyAgICBpZiAoZmxhZ3MgJiBm
bGFnRG93bmxvYWQgJiYgbV9yZWFkeVN0YXRlID4gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6Okhh
dmVOb3RoaW5nICYmICFtX3Nob3VsZFJlc2V0UGlwZWxpbmUpIHsKICAgICAgICAgR1NUX0RFQlVH
X09CSkVDVChwaXBlbGluZSgpLCAiRG93bmxvYWQgYWxyZWFkeSBzdGFydGVkLCBub3Qgc3RhcnRp
bmcgYWdhaW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkRG93
bmxvYWQgPSAhbV9pc0xpdmVTdHJlYW0gJiYgbV9wcmVsb2FkID09IE1lZGlhUGxheWVyOjpBdXRv
OworICAgIGJvb2wgc2hvdWxkRG93bmxvYWQgPSAhbV9pc0xpdmVTdHJlYW0gJiYgbV9wcmVsb2Fk
ID09IE1lZGlhUGxheWVyOjpQcmVsb2FkOjpBdXRvOwogICAgIGlmIChzaG91bGREb3dubG9hZCkg
ewogICAgICAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIkVuYWJsaW5nIG9uLWRpc2sg
YnVmZmVyaW5nIik7CiAgICAgICAgIGdfb2JqZWN0X3NldChtX3BpcGVsaW5lLmdldCgpLCAiZmxh
Z3MiLCBmbGFncyB8IGZsYWdEb3dubG9hZCwgbnVsbHB0cik7CkBAIC0zMzczLDEzICszMzczLDEz
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c0Z1bGxzY3JlZW4o
KSBjb25zdAogCiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om1vdmllTG9hZFR5cGUoKSBjb25zdAogewotICAgIGlmIChtX3JlYWR5U3RhdGUg
PT0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
OlVua25vd247CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZTo6SGF2ZU5vdGhpbmcpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlw
ZTo6VW5rbm93bjsKIAogICAgIGlmIChtX2lzTGl2ZVN0cmVhbSkKLSAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpMaXZlU3RyZWFtOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmll
TG9hZFR5cGU6OkxpdmVTdHJlYW07CiAKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkRvd25sb2Fk
OworICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6RG93bmxvYWQ7CiB9CiAK
ICNpZiBVU0UoR1NUUkVBTUVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oCmluZGV4IDE1MmMwOTM1ZGI3MjhiNjFjYWJmMDNhZjFiZDg5MTU2NjA0MWIx
MTMuLmY5YzQ3YTFmNjAxMjRiOThiZmNjYmFlMWM3M2E0YTA0NTE4NTM4ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTMwOSw3ICszMDksNyBA
QCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAgIHZvaWQgdGltZUNoYW5nZWQoKTsKLSAgICB2b2lk
IGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSwgTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcsIGJvb2wgZm9yY2VOb3RpZmljYXRp
b25zID0gZmFsc2UpOworICAgIHZvaWQgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlLCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
OjpIYXZlTm90aGluZywgYm9vbCBmb3JjZU5vdGlmaWNhdGlvbnMgPSBmYWxzZSk7CiAgICAgdm9p
ZCBsb2FkU3RhdGVDaGFuZ2VkKCk7CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCkBAIC0z
NDcsOCArMzQ3LDggQEAgcHJvdGVjdGVkOgogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9waXBl
bGluZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKIAotICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IG1fcmVhZHlTdGF0ZSB7IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZyB9OwotICAgIG11dGFibGUg
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZSB7IE1lZGlhUGxheWVyOjpF
bXB0eSB9OworICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZSB7IE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZyB9OworICAgIG11dGFibGUgTWVkaWFQbGF5
ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZSB7IE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkVtcHR5IH07CiAKICAgICBtdXRhYmxlIExvY2sgbV9zYW1wbGVNdXRleDsKICAgICBHUmVm
UHRyPEdzdFNhbXBsZT4gbV9zYW1wbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggZGMyNDViNDdkZTNkZTcyZmFj
MjM2NzJlNWY2ZWZkNGIzNzYyOWI0Yi4uYzBiNTQ5MTc5YjYyZGM3MTUyMmZjYzUzMzE5NzBkZDU4
MmY2MTM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtNTgsMTEgKzU4LDExIEBACiBzdGF0aWMgY29uc3QgY2hh
ciogZHVtcFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSkKIHsKICAgICBzd2l0Y2ggKHJlYWR5U3RhdGUpIHsKLSAgICBjYXNlIFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpIYXZlTm90aGluZzogcmV0dXJuICJIYXZlTm90aGluZyI7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOiByZXR1cm4gIkhhdmVNZXRhZGF0YSI7
Ci0gICAgY2FzZSBXZWJDb3JlOjpNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhOiByZXR1cm4g
IkhhdmVDdXJyZW50RGF0YSI7Ci0gICAgY2FzZSBXZWJDb3JlOjpNZWRpYVBsYXllcjo6SGF2ZUZ1
dHVyZURhdGE6IHJldHVybiAiSGF2ZUZ1dHVyZURhdGEiOwotICAgIGNhc2UgV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOiByZXR1cm4gIkhhdmVFbm91Z2hEYXRhIjsKKyAgICBj
YXNlIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzogcmV0dXJu
ICJIYXZlTm90aGluZyI7CisgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZTo6SGF2ZU1ldGFkYXRhOiByZXR1cm4gIkhhdmVNZXRhZGF0YSI7CisgICAgY2FzZSBXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhOiByZXR1cm4gIkhhdmVD
dXJyZW50RGF0YSI7CisgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6
SGF2ZUZ1dHVyZURhdGE6IHJldHVybiAiSGF2ZUZ1dHVyZURhdGEiOworICAgIGNhc2UgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVFbm91Z2hEYXRhOiByZXR1cm4gIkhhdmVF
bm91Z2hEYXRhIjsKICAgICBkZWZhdWx0OiByZXR1cm4gIih1bmtub3duKSI7CiAgICAgfQogfQpA
QCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjps
b2FkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewogICAgIGlmICghdXJsU3RyaW5nLnN0YXJ0
c1dpdGgoIm1lZGlhc291cmNlIikpIHsKICAgICAgICAgLy8gUHJvcGVybHkgZmFpbCBzbyB0aGUg
Z2xvYmFsIE1lZGlhUGxheWVyIHRyaWVzIHRvIGZhbGxiYWNrIHRvIHRoZSBuZXh0IE1lZGlhUGxh
eWVyUHJpdmF0ZS4KLSAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6Rm9ybWF0
RXJyb3I7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZTo6Rm9ybWF0RXJyb3I7CiAgICAgICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMDQsNyArMzA0LDcgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmRvU2VlaygpCiAgICAgICAgICAgICBtX2lzU2Vla2lu
ZyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAg
IG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7CisgICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGE7CiAgICAgICAg
IG5vdGlmeVNlZWtOZWVkc0RhdGFGb3JUaW1lKHNlZWtUaW1lKTsKICAgICAgICAgQVNTRVJUKCFt
X21zZVNlZWtDb21wbGV0ZWQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQxMCw3ICs0MTAs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c2V0UmVhZHlTdGF0ZShN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeQogICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5U3Rh
dGU7CiAgICAgR1NUX0RFQlVHKCJtX3JlYWR5U3RhdGU6ICVzIC0+ICVzIiwgZHVtcFJlYWR5U3Rh
dGUob2xkUmVhZHlTdGF0ZSksIGR1bXBSZWFkeVN0YXRlKG1fcmVhZHlTdGF0ZSkpOwogCi0gICAg
aWYgKG9sZFJlYWR5U3RhdGUgPCBNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhICYmIG1fcmVh
ZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhKSB7CisgICAgaWYgKG9sZFJl
YWR5U3RhdGUgPCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhICYmIG1f
cmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhKSB7
CiAgICAgICAgIEdTVF9ERUJVRygiW1NlZWtdIFJlcG9ydGluZyBsb2FkIHN0YXRlIGNoYW5nZWQg
dG8gdHJpZ2dlciBzZWVrIGNvbnRpbnVhdGlvbiIpOwogICAgICAgICBsb2FkU3RhdGVDaGFuZ2Vk
KCk7CiAgICAgfQpAQCAtNDIwLDcgKzQyMCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5CiAg
ICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ2V0U3RhdGVSZXN1bHQgPSBnc3RfZWxlbWVudF9nZXRf
c3RhdGUobV9waXBlbGluZS5nZXQoKSwgJnBpcGVsaW5lU3RhdGUsIG51bGxwdHIsIDI1MCAqIEdT
VF9OU0VDT05EKTsKICAgICBib29sIGlzUGxheWluZyA9IChnZXRTdGF0ZVJlc3VsdCA9PSBHU1Rf
U1RBVEVfQ0hBTkdFX1NVQ0NFU1MgJiYgcGlwZWxpbmVTdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlO
Ryk7CiAKLSAgICBpZiAobV9yZWFkeVN0YXRlID09IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEg
JiYgb2xkUmVhZHlTdGF0ZSA+IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEgJiYgaXNQbGF5aW5n
KSB7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2
ZU1ldGFkYXRhICYmIG9sZFJlYWR5U3RhdGUgPiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2
ZU1ldGFkYXRhICYmIGlzUGxheWluZykgewogICAgICAgICBHU1RfVFJBQ0UoIkNoYW5naW5nIHBp
cGVsaW5lIHRvIFBBVVNFRC4uLiIpOwogICAgICAgICBib29sIG9rID0gY2hhbmdlUGlwZWxpbmVT
dGF0ZShHU1RfU1RBVEVfUEFVU0VEKTsKICAgICAgICAgR1NUX1RSQUNFKCJDaGFuZ2VkIHBpcGVs
aW5lIHRvIFBBVVNFRDogJXMiLCBvayA/ICJTdWNjZXNzIiA6ICJFcnJvciIpOwpAQCAtNDQ2LDcg
KzQ0Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzZWVrQ29tcGxl
dGVkKCkKIAogICAgIGRvU2VlaygpOwogCi0gICAgaWYgKCFzZWVraW5nKCkgJiYgbV9yZWFkeVN0
YXRlID49IE1lZGlhUGxheWVyOjpIYXZlRnV0dXJlRGF0YSkKKyAgICBpZiAoIXNlZWtpbmcoKSAm
JiBtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVGdXR1cmVEYXRh
KQogICAgICAgICBjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QTEFZSU5HKTsKIAogICAg
IGlmICghc2Vla2luZygpKQpAQCAtNTA2LDI2ICs1MDYsMjYgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIC8vIFVwZGF0ZSByZWFk
eSBhbmQgbmV0d29yayBzdGF0ZXMuCiAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKICAgICAgICAg
Y2FzZSBHU1RfU1RBVEVfTlVMTDoKLSAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpIYXZlTm90aGluZzsKKyAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKICAgICAgICAgICAgIEdTVF9ERUJVRygibV9yZWFk
eVN0YXRlPSVzIiwgZHVtcFJlYWR5U3RhdGUobV9yZWFkeVN0YXRlKSk7Ci0gICAgICAgICAgICBt
X25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpFbXB0eTsKKyAgICAgICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBHU1RfU1RBVEVfUkVBRFk6Ci0gICAgICAgICAgICBtX3JlYWR5
U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOworICAgICAgICAgICAgbV9yZWFkeVN0
YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YTsKICAgICAgICAgICAg
IEdTVF9ERUJVRygibV9yZWFkeVN0YXRlPSVzIiwgZHVtcFJlYWR5U3RhdGUobV9yZWFkeVN0YXRl
KSk7Ci0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpFbXB0eTsKKyAg
ICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1w
dHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHU1RfU1RBVEVfUEFVU0VEOgog
ICAgICAgICBjYXNlIEdTVF9TVEFURV9QTEFZSU5HOgogICAgICAgICAgICAgaWYgKHNlZWtpbmco
KSkgewotICAgICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTWV0
YWRhdGE7CisgICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGU6OkhhdmVNZXRhZGF0YTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdl
IG1hbmFnZSBOZXR3b3JrU3RhdGUgdG9vPwogICAgICAgICAgICAgICAgIEdTVF9ERUJVRygibV9y
ZWFkeVN0YXRlPSVzIiwgZHVtcFJlYWR5U3RhdGUobV9yZWFkeVN0YXRlKSk7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXll
cjo6SGF2ZUZ1dHVyZURhdGEpCi0gICAgICAgICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpIYXZlRnV0dXJlRGF0YTsKKyAgICAgICAgICAgICAgICBpZiAobV9yZWFkeVN0
YXRlIDwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVGdXR1cmVEYXRhKQorICAgICAgICAg
ICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUZ1
dHVyZURhdGE7CiAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJtX3JlYWR5U3RhdGU9JXMiLCBk
dW1wUmVhZHlTdGF0ZShtX3JlYWR5U3RhdGUpKTsKLSAgICAgICAgICAgICAgICBtX25ldHdvcmtT
dGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOworICAgICAgICAgICAgICAgIG1fbmV0d29ya1N0
YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGluZzsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKG1fZW9zTWFya2VkICYmIHN0YXRlID09IEdTVF9TVEFURV9QTEFZ
SU5HKQpAQCAtNTgxLDEwICs1ODEsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0U6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIG1faXNMaXZlU3RyZWFtID0gdHJ1ZTsKIAog
ICAgICAgICBpZiAoc3RhdGUgPT0gR1NUX1NUQVRFX1JFQURZKSB7Ci0gICAgICAgICAgICBtX3Jl
YWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisgICAgICAgICAgICBtX3JlYWR5
U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiAgICAgICAgICAg
ICBHU1RfREVCVUcoIm1fcmVhZHlTdGF0ZT0lcyIsIGR1bXBSZWFkeVN0YXRlKG1fcmVhZHlTdGF0
ZSkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQpIHsKLSAg
ICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKKyAg
ICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5v
dWdoRGF0YTsKICAgICAgICAgICAgIEdTVF9ERUJVRygibV9yZWFkeVN0YXRlPSVzIiwgZHVtcFJl
YWR5U3RhdGUobV9yZWFkeVN0YXRlKSk7CiAgICAgICAgICAgICBtX2lzUGF1c2VkID0gdHJ1ZTsK
ICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlORykKQEAgLTU5Myw3
ICs1OTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6dXBkYXRlU3Rh
dGVzKCkKICAgICAgICAgaWYgKCFtX2lzUGF1c2VkICYmIG1fcGxheWJhY2tSYXRlKQogICAgICAg
ICAgICAgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUExBWUlORyk7CiAKLSAgICAgICAg
bV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKKyAgICAgICAgbV9uZXR3b3Jr
U3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkaW5nOwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgogICAgICAgICBHU1RfREVCVUcoIkVsc2UgOiAlZCIsIGdldFN0YXRl
UmVzdWx0KTsKQEAgLTcxOSw3ICs3MTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRTo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZQogCiBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiB7Ci0gICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSByZXN1bHQgPSBNZWRpYVBsYXll
cjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSByZXN1bHQg
PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICAgICBpZiAoIXBh
cmFtZXRlcnMuaXNNZWRpYVNvdXJjZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtNzI3
LDcgKzcyNyw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkCiAKICAgICAvLyBZb3VUdWJlIFRW
IHByb3ZpZGVzIGVtcHR5IHR5cGVzIGZvciBzb21lIHZpZGVvcyBhbmQgd2Ugd2FudCB0byBiZSBz
ZWxlY3RlZCBhcyBiZXN0IG1lZGlhIGVuZ2luZSBmb3IgdGhlbS4KICAgICBpZiAoY29udGFpbmVy
VHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVzdWx0ID0gTWVkaWFQbGF5ZXI6Ok1heUJlU3Vw
cG9ydGVkOworICAgICAgICByZXN1bHQgPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlC
ZVN1cHBvcnRlZDsKICAgICAgICAgR1NUX0RFQlVHKCJtaW1lLXR5cGUgXCIlc1wiIHN1cHBvcnRl
ZDogJXMiLCBwYXJhbWV0ZXJzLnR5cGUucmF3KCkudXRmOCgpLmRhdGEoKSwgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcocmVzdWx0KS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CkBAIC03MzcsNyArNzM3LDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzVHlwZShjb25zdCBNZWQK
ICAgICAvLyBTcGVjIHNheXMgd2Ugc2hvdWxkIG5vdCByZXR1cm4gInByb2JhYmx5IiBpZiB0aGUg
Y29kZWNzIHN0cmluZyBpcyBlbXB0eS4KICAgICBpZiAoZ3N0UmVnaXN0cnlTY2FubmVyLmlzQ29u
dGFpbmVyVHlwZVN1cHBvcnRlZChjb250YWluZXJUeXBlKSkgewogICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBjb2RlY3MgPSBwYXJhbWV0ZXJzLnR5cGUuY29kZWNzKCk7Ci0gICAgICAgIHJlc3VsdCA9
IGNvZGVjcy5pc0VtcHR5KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiAoZ3N0UmVn
aXN0cnlTY2FubmVyLmFyZUFsbENvZGVjc1N1cHBvcnRlZChjb2RlY3MpID8gTWVkaWFQbGF5ZXI6
OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkKTsKKyAgICAgICAgcmVz
dWx0ID0gY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJl
U3VwcG9ydGVkIDogKGdzdFJlZ2lzdHJ5U2Nhbm5lci5hcmVBbGxDb2RlY3NTdXBwb3J0ZWQoY29k
ZWNzKSA/IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpOwogICAgIH0KIAogICAgIGF1dG8gZmlu
YWxSZXN1bHQgPSBleHRlbmRlZFN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzLCByZXN1bHQpOwpAQCAt
NzYwLDggKzc2MCw4IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6
OmN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdAogICAgIE1lZGlhVGltZSBwb3NpdGlvbiA9IE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3VycmVudE1lZGlhVGltZSgpOwogCiAgICAgaWYgKG1f
ZW9zUGVuZGluZyAmJiBwb3NpdGlvbiA+PSBkdXJhdGlvbk1lZGlhVGltZSgpKSB7Ci0gICAgICAg
IGlmIChtX25ldHdvcmtTdGF0ZSAhPSBNZWRpYVBsYXllcjo6TG9hZGVkKSB7Ci0gICAgICAgICAg
ICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWQ7CisgICAgICAgIGlmIChtX25l
dHdvcmtTdGF0ZSAhPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQpIHsKKyAgICAg
ICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGVk
OwogICAgICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVu
Y2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCmlu
ZGV4IDBmMDhjMTlkYmRiZTY5YjA2ZjdiNzU1M2Y4YWI0OTdkNDdlMzc3YTkuLmI4YzRlMDFmYWRm
NDEzYWRkYzcxNTRlMWVhZjFmNWJiMDU1MzZhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRp
YVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCkBAIC0xMzEsMTIgKzEzMSwxMiBAQCBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3VwcG9ydHNU
eXBlKGNvbnN0IE1lZGlhRQogICAgIC8vIFNwZWMgc2F5cyB3ZSBzaG91bGQgbm90IHJldHVybiAi
cHJvYmFibHkiIGlmIHRoZSBjb2RlY3Mgc3RyaW5nIGlzIGVtcHR5LgogICAgIGlmICghY29udGFp
bmVyVHlwZS5pc0VtcHR5KCkgJiYgbWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKGNvbnRhaW5lclR5
cGUpKSB7CiAgICAgICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuY29kZWNzKCkuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKyAgICAgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKIAot
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOworICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CiAgICAgfQogCi0gICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJl
Z2lzdHJhcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hv
bGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaApp
bmRleCA4YmY3MjEzMTg4MTljNDAyNjdiNzIxZmE5YjgyYWMxY2Q5MjZmOWQyLi45YTEwODdkMzJi
MjViM2MzMGRjZGRiZWI0MDA4Y2EwNTAwOTU3ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNo
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlh
UGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCkBAIC03Niw4ICs3Niw4IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgcGF1c2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CiAKLSAgICBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IE1lZGlhUGxheWVyOjpFbXB0eTsgfTsKLSAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFk
eVN0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsg
fTsKKyAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5OyB9OworICAgIE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhOyB9OwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCA2ZDY0YWU5YTZlM2E0MTdm
YjE0ZjEyMTY2ZjY4ZDNjOWE1NTI2NmRlLi5iYmJiNDMyMmVkM2E3NWJmODFkMGJmNDc3NjJmMDUw
ODJjMzk0YmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uLmNwcApAQCAtNjcsOCArNjcsOCBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbihNZWRpYVBsYXllcgogICAgICwg
bV9oYXNWaWRlbyhmYWxzZSkKICAgICAsIG1fcHJlcGFyaW5nVG9QbGF5KGZhbHNlKQogICAgICwg
bV92b2x1bWUoMS4wKQotICAgICwgbV9uZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQot
ICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykKKyAgICAsIG1fbmV0
d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5KQorICAgICwgbV9yZWFk
eVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZykKIHsKICAgICBjcmVh
dGVTZXNzaW9uKCk7CiB9CkBAIC0xMjYsMTIgKzEyNiwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQwogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewogICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICBpZiAobWlt
ZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCkpKQot
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOworICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CiAKLSAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb246OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCkBAIC0xNDMsOSArMTQzLDkgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmxvYWQoY29uc3QgU3RyaW5n
JiB1cmwpCiAKICAgICBzdGFydENyZWF0ZU1lZGlhU291cmNlKHVybCk7CiAKLSAgICBtX25ldHdv
cmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOworICAgIG1fbmV0d29ya1N0YXRlID0gTWVk
aWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGluZzsKICAgICBtX3BsYXllci0+bmV0d29ya1N0
YXRlQ2hhbmdlZCgpOwotICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGlu
ZzsKKyAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhp
bmc7CiAgICAgbV9wbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiB9CiAKQEAgLTczMSwxNSAr
NzMxLDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjp1cGRhdGVS
ZWFkeVN0YXRlKCkKIAogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG9sZFJlYWR5U3RhdGUg
PSBtX3JlYWR5U3RhdGU7CiAgICAgaWYgKHBlcmNlbnRhZ2VPZlBsYXliYWNrQnVmZmVyRmlsbGVk
ID49IDEwMCkgewotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUVub3Vn
aERhdGE7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlRW5vdWdoRGF0YTsKICAgICAgICAgaWYgKG1fcHJlcGFyaW5nVG9QbGF5KSB7CiAgICAgICAg
ICAgICBwYXVzZSgpOwogICAgICAgICAgICAgbV9wcmVwYXJpbmdUb1BsYXkgPSBmYWxzZTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSBpZiAocGVyY2VudGFnZU9mUGxheWJhY2tCdWZmZXJGaWxsZWQg
PiAwKQotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUZ1dHVyZURhdGE7
CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRnV0
dXJlRGF0YTsKICAgICBlbHNlCi0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpI
YXZlQ3VycmVudERhdGE7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFk
eVN0YXRlOjpIYXZlQ3VycmVudERhdGE7CiAKICAgICBpZiAobV9yZWFkeVN0YXRlICE9IG9sZFJl
YWR5U3RhdGUpCiAgICAgICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwpAQCAtNzk5
LDcgKzc5OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpvblNl
c3Npb25TdGFydGVkKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
Om9uU2Vzc2lvbkVuZGVkKCkKIHsKLSAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpM
b2FkZWQ7CisgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpM
b2FkZWQ7CiAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIAogICAgIG1fcGF1
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCA2MDBlNmIzZjhiMDI2ZGYx
MDIwZDAwOWVjMzVjZjVjYzU4ZmI3NTBmLi5mNGY4ZTBlYmQ5ZTQzMTVkM2U2YmUxZjUyMDI3NDll
NjU5OTQ5MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC0zMzQsMTMgKzMzNCwxMyBA
QCBzdGF0aWMgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVh
c29uIGNvbnZlcnRUb0V4aXRGdWxsU2NyZQogICAgIGlmICghW19hdlBsYXllckNvbnRyb2xsZXIg
ZGVsZWdhdGVdKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSA9IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZp
ZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKKyAgICBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IGdy
YXZpdHkgPSBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5OjpSZXNpemVBc3BlY3Q7CiAgICAgaWYg
KHZpZGVvR3Jhdml0eSA9PSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplKQotICAgICAgICBncmF2
aXR5ID0gV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5UmVzaXplOworICAg
ICAgICBncmF2aXR5ID0gTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eTo6UmVzaXplOwogICAgIGlm
ICh2aWRlb0dyYXZpdHkgPT0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCkKLSAgICAg
ICAgZ3Jhdml0eSA9IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdDsKKyAgICAgICAgZ3Jhdml0eSA9IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHk6OlJl
c2l6ZUFzcGVjdDsKICAgICBlbHNlIGlmICh2aWRlb0dyYXZpdHkgPT0gQVZMYXllclZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdEZpbGwpCi0gICAgICAgIGdyYXZpdHkgPSBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOworICAgICAgICBncmF2aXR5
ID0gTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eTo6UmVzaXplQXNwZWN0RmlsbDsKICAgICBlbHNl
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0K
aW5kZXggMTU1NzFjZGMzOTIyYWJkMTk1ZmVmM2U4MTViNGNhM2JkMjMyYzg2Mi4uODVjNzBiMmJi
YjUwNDdlZjhlZGRhNzQyOTQ2NjU5YTRiMjdlMTdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCkBA
IC0xOTUsNyArMTk1LDcgQEAgZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiAgICAgW19waXBWaWV3Q29u
dHJvbGxlciBzZXRQbGF5aW5nOl9wbGF5aW5nXTsKICAgICBbc2VsZiBzZXRWaWRlb0RpbWVuc2lv
bnM6TlNFcXVhbFNpemVzKF92aWRlb0RpbWVuc2lvbnMsIE5TWmVyb1NpemUpID8gZnJhbWUuc2l6
ZSA6IF92aWRlb0RpbWVuc2lvbnNdOwogICAgIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjICYmIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVs
KCkpCi0gICAgICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVl
bk1vZGVsKCktPnNldFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdEZpbGwpOworICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZXRWaWRlb0xheWVyR3Jhdml0eShNZWRpYVBs
YXllckVudW1zOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZUFzcGVjdEZpbGwpOwogCiAgICAgX3ZpZGVv
Vmlld0NvbnRhaW5lciA9IGFkb3B0TlMoW1tXZWJWaWRlb1ZpZXdDb250YWluZXIgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6ZnJhbWVdKTsKICAgICBbX3ZpZGVvVmlld0NvbnRhaW5lciBzZXRWaWRlb1Zp
ZXdDb250YWluZXJEZWxlZ2F0ZTpzZWxmXTsKQEAgLTMwMiw3ICszMDIsNyBAQCBlbnVtIGNsYXNz
IFBJUFN0YXRlIHsKICAgICAgICAgICAgIGNvbnRleHQuYWxsb3dzSW1wbGljaXRBbmltYXRpb24g
PSBOTzsKICAgICAgICAgICAgIFtfdmlkZW9WaWV3Q29udGFpbmVyIHNldEZyYW1lOl9yZXR1cm5p
bmdSZWN0XTsKICAgICAgICAgICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVv
RnVsbHNjcmVlbk1vZGVsKCktPnNldFZpZGVvTGF5ZXJGcmFtZShbX3ZpZGVvVmlld0NvbnRhaW5l
ciBib3VuZHNdKTsKLSAgICAgICAgICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZp
ZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNldFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlhUGxheWVyRW51
bXM6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCk7CisgICAgICAgICAgICBfdmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZXRWaWRlb0xheWVyR3Jh
dml0eShNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZUFzcGVjdCk7CiAKICAg
ICAgICAgICAgIFtbX3JldHVybmluZ1dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzpfdmlk
ZW9WaWV3Q29udGFpbmVyLmdldCgpIHBvc2l0aW9uZWQ6TlNXaW5kb3dBYm92ZSByZWxhdGl2ZVRv
Om5pbF07CiAgICAgICAgIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKQEAgLTMxMSw3ICszMTEs
NyBAQCBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKICAgICBpZiAoIXNlbGYuaXNFeGl0aW5nVG9TdGFu
ZGFyZEZ1bGxzY3JlZW4pIHsKICAgICAgICAgaWYgKFZpZGVvRnVsbHNjcmVlbk1vZGVsKiB2aWRl
b0Z1bGxzY3JlZW5Nb2RlbCA9IF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVs
bHNjcmVlbk1vZGVsKCkpIHsKICAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRF
eGl0UGljdHVyZUluUGljdHVyZSgpOwotICAgICAgICAgICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwt
PnNldFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdCk7CisgICAgICAgICAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9MYXll
ckdyYXZpdHkoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5OjpSZXNpemVBc3BlY3QpOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2UuY3BwCmluZGV4IDM4N2EyMWRhZjQ1NTIzOTY4YWVlNGY3OTQxOWQzZDhiODg2OTBkN2MuLjAx
YTZhMDAzMGY0ZjQ2MWQ0NjcyN2JiNjk2MDE2NWFiOWJjZmExYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCkBAIC02MiwyNyArNjIsMjcgQEAgdm9pZCBN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2UKIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmICghcGFyYW1ldGVycy5pc01lZGlhU291cmNl
KQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICBh
dXRvIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpOwogICAg
IGlmIChjb250YWluZXJUeXBlLmlzRW1wdHkoKSB8fCAhbWltZVR5cGVDYWNoZSgpLmNvbnRhaW5z
KGNvbnRhaW5lclR5cGUpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9y
dGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBw
b3J0ZWQ7CiAKICAgICBhdXRvIGNvZGVjcyA9IHBhcmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29u
dGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKICAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKyAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOwogCiAgICAgaWYg
KGNvZGVjcyA9PSAibW9jayIgfHwgY29kZWNzID09ICJrY29tIikKLSAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGU6OklzU3VwcG9ydGVkOwogCi0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNYXlCZVN1
cHBvcnRlZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6TWF5QmVTdXBw
b3J0ZWQ7CiB9CiAKIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZShNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQog
ICAgICwgbV9jdXJyZW50VGltZShNZWRpYVRpbWU6Onplcm9UaW1lKCkpCi0gICAgLCBtX3JlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQotICAgICwgbV9uZXR3b3JrU3RhdGUoTWVk
aWFQbGF5ZXI6OkVtcHR5KQorICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlOjpIYXZlTm90aGluZykKKyAgICAsIG1fbmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGU6OkVtcHR5KQogICAgICwgbV9wbGF5aW5nKGZhbHNlKQogICAgICwgbV9zZWVrQ29t
cGxldGVkKHRydWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcAppbmRl
eCA3ZGNjOTY0OTM1MDI4NjQ5MzE1ZTViMzgxZmI5ZWFmODFiM2FhOTVhLi42ZTIxYjVkZDJiODk3
ZTg3YWFmYTAwZTc1YmM4ZmY4ZmYxZWVlMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNl
UHJpdmF0ZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgTWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0
dXMgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IENvbnQKICAg
ICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVy
cy5pc01lZGlhU291cmNlID0gdHJ1ZTsKICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlw
ZTsKLSAgICBpZiAoTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZShwYXJh
bWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpCisgICAgaWYgKE1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgPT0gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpCiAgICAgICAgIHJldHVybiBOb3RTdXBw
b3J0ZWQ7CiAKICAgICBtX3NvdXJjZUJ1ZmZlcnMuYXBwZW5kKE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlOjpjcmVhdGUodGhpcykpOwpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIE1vY2tNZWRpYVNvdXJj
ZVByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZCgpCiB2b2lkIE1vY2tNZWRpYVNvdXJjZVByaXZhdGU6
Om1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyBzdGF0dXMpCiB7CiAgICAgaWYgKHN0
YXR1cyA9PSBFb3NOb0Vycm9yKQotICAgICAgICBtX3BsYXllci5zZXROZXR3b3JrU3RhdGUoTWVk
aWFQbGF5ZXI6OkxvYWRlZCk7CisgICAgICAgIG1fcGxheWVyLnNldE5ldHdvcmtTdGF0ZShNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQpOwogICAgIG1faXNFbmRlZCA9IHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggNmIxMzczZTQ0
NzNiOTM3ODUyNjcwNWVjMGZiYTBhNDAxYjAwODUzYS4uMzI4NjkxNWE2YWUwOGJiYWViYzBhN2Mx
NjZhMTZkNDVkOGJhMzBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5j
cHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpyZW1v
dmVkRnJvbU1lZGlhU291cmNlKCkKIAogTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGU6OnJlYWR5U3RhdGUoKSBjb25zdAogewotICAgIHJldHVybiBtX21lZGlh
U291cmNlID8gbV9tZWRpYVNvdXJjZS0+cGxheWVyKCkucmVhZHlTdGF0ZSgpIDogTWVkaWFQbGF5
ZXI6OkhhdmVOb3RoaW5nOworICAgIHJldHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNvdXJj
ZS0+cGxheWVyKCkucmVhZHlTdGF0ZSgpIDogTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVO
b3RoaW5nOwogfQogCiB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCkBAIC0yNzAsNyArMjcwLDcgQEAg
Ym9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6Y2FuU3dpdGNoVG9UeXBlKGNvbnN0IENvbnRl
bnRUeXBlJiBjb250ZW50VHlwZSkKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBh
cmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNlID0gdHJ1ZTsKICAgICBwYXJh
bWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZTsKLSAgICByZXR1cm4gTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2U6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RT
dXBwb3J0ZWQ7CisgICAgcmV0dXJuIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzdXBwb3J0
c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBw
b3J0ZWQ7CiB9CiAKIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmVucXVldWVTYW1wbGUo
UmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgQXRvbVN0cmluZyYpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385418</attachid>
            <date>2019-12-11 11:49:33 -0800</date>
            <delta_ts>2019-12-11 12:03:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205125-20191211114930.patch</filename>
            <type>text/plain</type>
            <size>130755</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE5MDUzNmRmMzEwYTI0
ODBlZTkzZjlkOGUxZGIwMTcwNzRiMGQwMC4uNGUzN2MwYjFlMzVjM2NlYzFlMGVlMDE5NjE0YThh
NWIzNDcxYjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAxOS0xMi0xMSAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZW5jb2Rl
cnMgZm9yIE1lZGlhUGxheWVyRW51bSBlbnVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Nzg0
Mjk4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0
ZWRDYXBhYmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6
c2V0UHJpdmF0ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNlZWtU
b1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Om1vbml0b3JTb3VyY2VCdWZm
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aXNUeXBlU3VwcG9ydGVkKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnJlbW92ZUNvZGVkRnJhbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXph
dGlvblNlZ21lbnQpOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpjYW5QbGF5VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzZXROZXR3b3JrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwcmVsb2FkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0cmluZ0Zvck5ldHdvcmtTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp2aWRlb0Z1bGxzY3JlZW5HcmF2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnByZWxvYWRWYWx1ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246
OmVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6
OnNldFZpZGVvTGF5ZXJHcmF2aXR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0
UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyRW51bXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZTo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6Om1vdmllTG9hZFR5cGUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnByZXBhcmVUb1BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjppc1JlYWR5Rm9y
VmlkZW9TZXR1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXRQcmVsb2FkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb246Om1ldGFEYXRhQXZhaWxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1
cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVs
bHNjcmVlbkdyYXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjptb3ZpZUxvYWRUeXBlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZW5zdXJlTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzaG91bGRCZVBsYXlpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRz
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmxvYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6bWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpyZWFkeVN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpjYW5Td2l0Y2hUb1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkNvY29hKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bG9hZEZ1bGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnByZXBhcmVUb1BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6c2V0UHJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlRG93
bmxvYWRCdWZmZXJpbmdGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFLmNwcDoKKyAgICAgICAgKGR1bXBSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6bG9hZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmRvU2Vlayk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnNldFJlYWR5U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzZWVrQ29tcGxl
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
dXBkYXRlU3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRTo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6Y3VycmVudE1lZGlhVGltZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRz
VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6dXBkYXRlUmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om9uU2Vzc2lvbkVuZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06
CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2aXR5Ol0pOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakMgc2V0VXBQSVBGb3JWaWRlb1Zp
ZXc6d2l0aEZyYW1lOmluV2luZG93Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWNPYmpDIHBpcERpZENsb3NlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6TW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlh
U291cmNlUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2
YXRlOjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNl
UHJpdmF0ZTo6bWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWFkeVN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpjYW5Td2l0Y2hUb1R5cGUpOgorCiAyMDE5LTEy
LTEwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IGl0IHBvc3NpYmxlIHRvIGFkZCByZWdyZXNzaW9uIHRlc3RzIGZvciBibG9ja2VkIFhQQyBzZXJ2
aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmlu
ZGV4IDYwMzhhZGQ4MzhhYWIyNjQwMzY5MzIyMDExNjRlMzY2NzE1MGEyNWUuLjRiYmIyYmNlNjE4
NzRiN2VlMTQ4YTQxNjg1NTBhNmIxNTY0MzkyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTQ2OCwxMCArNDY4LDExIEBAIE9wdGlvbmFs
PFZlY3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4+IENETTo6Z2V0U3VwcG9ydGVk
Q2FwYWJpbGl0aWVzRm9yCiAgICAgICAgIC8vICAgICAgIHdpdGggcmVzdHJpY3Rpb25zOgogICAg
ICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgICAgIHBh
cmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlLT5taW1lVHlwZSgpKTsKLSAg
ICAgICAgaWYgKCFNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpKSB7CisgICAg
ICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09IE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7CisKICAgICAgICAgICAgIC8vIFRy
eSB3aXRoIE1lZGlhIFNvdXJjZToKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJj
ZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoIU1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFy
YW1ldGVycykpCisgICAgICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJh
bWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGY0NTU4YzczMTkz
MjliM2Q0NDRjMmRjMzRiYzRiODA3NzU3NDZiZTAuLjJhNWFkYjc0ZTliNmVkYjQxNTNjMGNlYTg2
YmNhZTA5ODhjYTVlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBNZWRpYVNvdXJj
ZTo6c2V0UHJpdmF0ZUFuZE9wZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJiBtZWRpYVNvdXJj
ZVByaXZhdGUKICAgICAvLyAgICBSdW4gdGhlICJJZiB0aGUgbWVkaWEgZGF0YSBjYW5ub3QgYmUg
ZmV0Y2hlZCBhdCBhbGwsIGR1ZSB0byBuZXR3b3JrIGVycm9ycywgY2F1c2luZyB0aGUgdXNlciBh
Z2VudCB0byBnaXZlIHVwIHRyeWluZwogICAgIC8vICAgIHRvIGZldGNoIHRoZSByZXNvdXJjZSIg
c3RlcHMgb2YgdGhlIHJlc291cmNlIGZldGNoIGFsZ29yaXRobSdzIG1lZGlhIGRhdGEgcHJvY2Vz
c2luZyBzdGVwcyBsaXN0LgogICAgIGlmICghaXNDbG9zZWQoKSkgewotICAgICAgICBtX21lZGlh
RWxlbWVudC0+bWVkaWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya0Vy
cm9yKTsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHko
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0d29ya0Vycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnNlZWtUb1Rp
bWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQogICAgIGlmICghaGFzQnVmZmVyZWRUaW1lKHRpbWUp
KSB7CiAgICAgICAgIC8vIDEuIElmIHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0
cmlidXRlIGlzIGdyZWF0ZXIgdGhhbiBIQVZFX01FVEFEQVRBLAogICAgICAgICAvLyB0aGVuIHNl
dCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGF0dHJpYnV0ZSB0byBIQVZFX01FVEFE
QVRBLgotICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVN
ZXRhZGF0YSk7CisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKTsKIAogICAgICAgICAvLyAyLiBUaGUgbWVkaWEgZWxl
bWVudCB3YWl0cyB1bnRpbCBhbiBhcHBlbmRCdWZmZXIoKSBvciBhbiBhcHBlbmRTdHJlYW0oKSBj
YWxsIGNhdXNlcyB0aGUgY29kZWQKICAgICAgICAgLy8gZnJhbWUgcHJvY2Vzc2luZyBhbGdvcml0
aG0gdG8gc2V0IHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIHRvIGEg
dmFsdWUgZ3JlYXRlcgpAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6Om1vbml0
b3JTb3VyY2VCdWZmZXJzKCkKIAogICAgIC8vIE5vdGUsIHRoZSBiZWhhdmlvciBpZiBhY3RpdmVT
b3VyY2VCdWZmZXJzIGlzIGVtcHR5IGlzIHVuZGVmaW5lZC4KICAgICBpZiAoIW1fYWN0aXZlU291
cmNlQnVmZmVycykgewotICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5
ZXI6OkhhdmVOb3RoaW5nKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQ0MSw3ICs0NDEsNyBAQCB2b2lkIE1lZGlhU291cmNlOjptb25pdG9yU291cmNlQnVm
ZmVycygpCiAgICAgICAgIC8vIDEuIFNldCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRl
IGF0dHJpYnV0ZSB0byBIQVZFX01FVEFEQVRBLgogICAgICAgICAvLyAyLiBJZiB0aGlzIGlzIHRo
ZSBmaXJzdCB0cmFuc2l0aW9uIHRvIEhBVkVfTUVUQURBVEEsIHRoZW4gcXVldWUgYSB0YXNrIHRv
IGZpcmUgYSBzaW1wbGUgZXZlbnQKICAgICAgICAgLy8gbmFtZWQgbG9hZGVkbWV0YWRhdGEgYXQg
dGhlIG1lZGlhIGVsZW1lbnQuCi0gICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6SGF2ZU1ldGFkYXRhKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGEpOwogCiAgICAgICAgIC8vIDMu
IEFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICByZXR1cm47CkBAIC00NTYsNyArNDU2LDcgQEAg
dm9pZCBNZWRpYVNvdXJjZTo6bW9uaXRvclNvdXJjZUJ1ZmZlcnMoKQogICAgICAgICAvLyAxLiBT
ZXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgdG8gSEFWRV9FTk9V
R0hfREFUQS4KICAgICAgICAgLy8gMi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQgY2FucGxheXRocm91Z2ggYXQgdGhlIG1lZGlhIGVsZW1lbnQuCiAgICAgICAgIC8v
IDMuIFBsYXliYWNrIG1heSByZXN1bWUgYXQgdGhpcyBwb2ludCBpZiBpdCB3YXMgcHJldmlvdXNs
eSBzdXNwZW5kZWQgYnkgYSB0cmFuc2l0aW9uIHRvIEhBVkVfQ1VSUkVOVF9EQVRBLgotICAgICAg
ICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhKTsK
KyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
OjpIYXZlRW5vdWdoRGF0YSk7CiAKICAgICAgICAgaWYgKG1fcGVuZGluZ1NlZWtUaW1lLmlzVmFs
aWQoKSkKICAgICAgICAgICAgIGNvbXBsZXRlU2VlaygpOwpAQCAtNDcxLDcgKzQ3MSw3IEBAIHZv
aWQgTWVkaWFTb3VyY2U6Om1vbml0b3JTb3VyY2VCdWZmZXJzKCkKICAgICAgICAgLy8gMS4gU2V0
IHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIHRvIEhBVkVfRlVUVVJF
X0RBVEEuCiAgICAgICAgIC8vIDIuIElmIHRoZSBwcmV2aW91cyB2YWx1ZSBvZiBIVE1MTWVkaWFF
bGVtZW50LnJlYWR5U3RhdGUgd2FzIGxlc3MgdGhhbiBIQVZFX0ZVVFVSRV9EQVRBLCB0aGVuIHF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNhbnBsYXkgYXQgdGhlIG1l
ZGlhIGVsZW1lbnQuCiAgICAgICAgIC8vIDMuIFBsYXliYWNrIG1heSByZXN1bWUgYXQgdGhpcyBw
b2ludCBpZiBpdCB3YXMgcHJldmlvdXNseSBzdXNwZW5kZWQgYnkgYSB0cmFuc2l0aW9uIHRvIEhB
VkVfQ1VSUkVOVF9EQVRBLgotICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQ
bGF5ZXI6OkhhdmVGdXR1cmVEYXRhKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRnV0dXJlRGF0YSk7CiAKICAgICAgICAgaWYg
KG1fcGVuZGluZ1NlZWtUaW1lLmlzVmFsaWQoKSkKICAgICAgICAgICAgIGNvbXBsZXRlU2Vlaygp
OwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6Om1vbml0b3JTb3VyY2VCdWZm
ZXJzKCkKICAgICAvLyBldmVudCBuYW1lZCBsb2FkZWRkYXRhIGF0IHRoZSBtZWRpYSBlbGVtZW50
LgogICAgIC8vIDMuIFBsYXliYWNrIGlzIHN1c3BlbmRlZCBhdCB0aGlzIHBvaW50IHNpbmNlIHRo
ZSBtZWRpYSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggZGF0YSB0bwogICAgIC8vIGFkdmFu
Y2UgdGhlIG1lZGlhIHRpbWVsaW5lLgotICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhKTsKKyAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUo
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSk7CiAKICAgICBpZiAobV9w
ZW5kaW5nU2Vla1RpbWUuaXNWYWxpZCgpKQogICAgICAgICBjb21wbGV0ZVNlZWsoKTsKQEAgLTYz
NywxMyArNjM3LDEzIEBAIHZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKE9w
dGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgICAgICAgICAgLy8gICAgUnVuIHRo
ZSAiSWYgdGhlIG1lZGlhIGRhdGEgY2Fubm90IGJlIGZldGNoZWQgYXQgYWxsLCBkdWUgdG8gbmV0
d29yayBlcnJvcnMsIGNhdXNpbmcKICAgICAgICAgICAgIC8vICAgIHRoZSB1c2VyIGFnZW50IHRv
IGdpdmUgdXAgdHJ5aW5nIHRvIGZldGNoIHRoZSByZXNvdXJjZSIgc3RlcHMgb2YgdGhlIHJlc291
cmNlIGZldGNoIGFsZ29yaXRobS4KICAgICAgICAgICAgIC8vICAgIE5PVEU6IFRoaXMgc3RlcCBp
cyBoYW5kbGVkIGJ5IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZCgpLgotICAg
ICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6
TmV0d29ya0Vycm9yKTsKKyAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5tZWRpYUxvYWRpbmdG
YWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0d29ya0Vycm9yKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIC8vICDihrMgSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVh
ZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgZ3JlYXRlciB0aGFuIEhBVkVfTk9USElORwogICAgICAgICAg
ICAgLy8gICAgUnVuIHRoZSAiSWYgdGhlIGNvbm5lY3Rpb24gaXMgaW50ZXJydXB0ZWQgYWZ0ZXIg
c29tZSBtZWRpYSBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLCBjYXVzaW5nIHRoZQogICAgICAgICAg
ICAgLy8gICAgdXNlciBhZ2VudCB0byBnaXZlIHVwIHRyeWluZyB0byBmZXRjaCB0aGUgcmVzb3Vy
Y2UiIHN0ZXBzIG9mIHRoZSByZXNvdXJjZSBmZXRjaCBhbGdvcml0aG0uCiAgICAgICAgICAgICAv
LyAgICBOT1RFOiBUaGlzIHN0ZXAgaXMgaGFuZGxlZCBieSBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YUxvYWRpbmdGYWlsZWRGYXRhbGx5KCkuCi0gICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+bWVk
aWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya0Vycm9yKTsKKyAgICAg
ICAgICAgIG1fbWVkaWFFbGVtZW50LT5tZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvcik7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJkZWNvZGUiCkBAIC02NTQsMTIg
KzY1NCwxMiBAQCB2b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25h
bDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKICAgICAgICAgICAgIC8vICAgIFJ1biB0aGUgIklm
IHRoZSBtZWRpYSBkYXRhIGNhbiBiZSBmZXRjaGVkIGJ1dCBpcyBmb3VuZCBieSBpbnNwZWN0aW9u
IHRvIGJlIGluIGFuIHVuc3VwcG9ydGVkCiAgICAgICAgICAgICAvLyAgICBmb3JtYXQsIG9yIGNh
biBvdGhlcndpc2Ugbm90IGJlIHJlbmRlcmVkIGF0IGFsbCIgc3RlcHMgb2YgdGhlIHJlc291cmNl
IGZldGNoIGFsZ29yaXRobS4KICAgICAgICAgICAgIC8vICAgIE5PVEU6IFRoaXMgc3RlcCBpcyBo
YW5kbGVkIGJ5IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZCgpLgotICAgICAg
ICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9y
bWF0RXJyb3IpOworICAgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlhTG9hZGluZ0ZhaWxl
ZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyAg4oazIElmIHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3Rh
dGUgYXR0cmlidXRlIGlzIGdyZWF0ZXIgdGhhbiBIQVZFX05PVEhJTkcKICAgICAgICAgICAgIC8v
ICAgIFJ1biB0aGUgbWVkaWEgZGF0YSBpcyBjb3JydXB0ZWQgc3RlcHMgb2YgdGhlIHJlc291cmNl
IGZldGNoIGFsZ29yaXRobS4KICAgICAgICAgICAgIC8vICAgIE5PVEU6IFRoaXMgc3RlcCBpcyBo
YW5kbGVkIGJ5IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkoKS4K
LSAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5tZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KE1l
ZGlhUGxheWVyOjpEZWNvZGVFcnJvcik7CisgICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+bWVk
aWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpEZWNvZGVF
cnJvcik7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC04OTQsOSArODk0LDkgQEAgYm9vbCBNZWRp
YVNvdXJjZTo6aXNUeXBlU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUo
cGFyYW1ldGVycyk7CiAKICAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHN1cHBvcnRlZCAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVy
biBzdXBwb3J0ZWQgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7
CiAKLSAgICByZXR1cm4gc3VwcG9ydGVkID09IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKKyAg
ICByZXR1cm4gc3VwcG9ydGVkID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9y
dGVkOwogfQogCiBib29sIE1lZGlhU291cmNlOjppc09wZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDA3
ZmIwZGUzZjlmYmMzZGIwYWQ4OTc2Nzk1NjQ2ZTgxMzc3ZWE0ZDUuLmI5ZDQwMDVmMWJkZDE4OTUw
M2E0Y2IzMWYyMGQ5Njg3NDUzMDI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTg4Myw4ICs4ODMsOCBAQCB2b2lk
IFNvdXJjZUJ1ZmZlcjo6cmVtb3ZlQ29kZWRGcmFtZXMoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwg
Y29uc3QgTWVkaWFUaW1lJiBlbgogICAgICAgICAvLyAzLjQgSWYgdGhpcyBvYmplY3QgaXMgaW4g
YWN0aXZlU291cmNlQnVmZmVycywgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gaXMgZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIHN0YXJ0CiAgICAgICAgIC8vIGFuZCBsZXNzIHRoYW4gdGhl
IHJlbW92ZSBlbmQgdGltZXN0YW1wLCBhbmQgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGlz
IGdyZWF0ZXIgdGhhbiBIQVZFX01FVEFEQVRBLCB0aGVuIHNldAogICAgICAgICAvLyB0aGUgSFRN
TE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGF0dHJpYnV0ZSB0byBIQVZFX01FVEFEQVRBIGFuZCBz
dGFsbCBwbGF5YmFjay4KLSAgICAgICAgaWYgKG1fYWN0aXZlICYmIGN1cnJlbnRNZWRpYVRpbWUg
Pj0gc3RhcnQgJiYgY3VycmVudE1lZGlhVGltZSA8IGVuZCAmJiBtX3ByaXZhdGUtPnJlYWR5U3Rh
dGUoKSA+IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEpCi0gICAgICAgICAgICBtX3ByaXZhdGUt
PnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSk7CisgICAgICAgIGlmICht
X2FjdGl2ZSAmJiBjdXJyZW50TWVkaWFUaW1lID49IHN0YXJ0ICYmIGN1cnJlbnRNZWRpYVRpbWUg
PCBlbmQgJiYgbV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZTo6SGF2ZU1ldGFkYXRhKQorICAgICAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGEpOwogICAgIH0KICAgICAKICAgICB1
cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoKTsKQEAgLTEyODUsNyArMTI4NSw3IEBAIHZv
aWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgbV9wZW5kaW5nSW5pdGlhbGl6YXRpb25TZWdtZW50
Rm9yQ2hhbmdlVHlwZSA9IGZhbHNlOwogCiAgICAgLy8gNi4gSWYgdGhlIEhUTUxNZWRpYUVsZW1l
bnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgSEFWRV9OT1RISU5HLCB0aGVuIHJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzOgotICAgIGlmIChtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVBs
YXllcjo6SGF2ZU5vdGhpbmcpIHsKKyAgICBpZiAobV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPT0g
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKSB7CiAgICAgICAgIC8vIDYuMSBJ
ZiBvbmUgb3IgbW9yZSBvYmplY3RzIGluIHNvdXJjZUJ1ZmZlcnMgaGF2ZSBmaXJzdCBpbml0aWFs
aXphdGlvbiBzZWdtZW50IGZsYWcgc2V0IHRvIGZhbHNlLCB0aGVuIGFib3J0IHRoZXNlIHN0ZXBz
LgogICAgICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6ICptX3NvdXJjZS0+c291cmNlQnVm
ZmVycygpKSB7CiAgICAgICAgICAgICBpZiAoIXNvdXJjZUJ1ZmZlci0+bV9yZWNlaXZlZEZpcnN0
SW5pdGlhbGl6YXRpb25TZWdtZW50KQpAQCAtMTI5NCwxNCArMTI5NCwxNCBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoY29uc3QgSW5pdAogCiAgICAgICAgIC8vIDYuMiBTZXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQu
cmVhZHlTdGF0ZSBhdHRyaWJ1dGUgdG8gSEFWRV9NRVRBREFUQS4KICAgICAgICAgLy8gNi4zIFF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGxvYWRlZG1ldGFkYXRhIGF0
IHRoZSBtZWRpYSBlbGVtZW50LgotICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVk
aWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSk7CisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0
ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKTsKICAgICB9CiAKICAgICAv
LyA3LiBJZiB0aGUgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUgYW5kIHRoZSBIVE1MTWVk
aWFFbGVtZW50LnJlYWR5U3RhdGUKICAgICAvLyBhdHRyaWJ1dGUgaXMgZ3JlYXRlciB0aGFuIEhB
VkVfQ1VSUkVOVF9EQVRBLCB0aGVuIHNldCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRl
CiAgICAgLy8gYXR0cmlidXRlIHRvIEhBVkVfTUVUQURBVEEuCi0gICAgaWYgKGFjdGl2ZVRyYWNr
RmxhZyAmJiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA+IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVu
dERhdGEpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2
ZU1ldGFkYXRhKTsKKyAgICBpZiAoYWN0aXZlVHJhY2tGbGFnICYmIG1fcHJpdmF0ZS0+cmVhZHlT
dGF0ZSgpID4gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAgICAg
ICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZl
TWV0YWRhdGEpOwogfQogCiBib29sIFNvdXJjZUJ1ZmZlcjo6dmFsaWRhdGVJbml0aWFsaXphdGlv
blNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JiBzZWdtZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5kZXggMTQ2NmVhYWUyZTE2MmQyZWY4N2E5
N2FkMTdmZmFmYjEyNzQ4NjA5Yy4uN2E4YWY4MmMyZjA5MjEwYTBmOWFkZGI2MTFhMmM3M2ZiNDA4
MmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1l
bnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUKICAgICBNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5
cGUgeyB0eXBlIH07CiAgICAgcGFyYW1ldGVycy51cmwgPSB1cmw7Ci0gICAgaWYgKE1lZGlhUGxh
eWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykpCisgICAgaWYgKE1lZGlhUGxheWVyOjpzdXBw
b3J0c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQpCiAgICAgICAgIHJldHVybiBNZWRpYURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVy
bCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggYzQ4M2UxYzk0Y2EzZGIzYzI0NWI0NTIxYzQwOTZjOWNmOGE0ZmQ5ZC4uNjUyNDMxMjhjZDQx
MTVjY2JkMTVkZmNmMGNmNmVhNDc1YWZkNGEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC04MTYsMTMgKzgxNiwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbgogICAgICAgICB1cGRhdGVTbGVlcERpc2FibGluZygpOwogICAgIGVsc2UgaWYgKG5hbWUg
PT0gcHJlbG9hZEF0dHIpIHsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHZhbHVlLCAibm9uZSIpKQotICAgICAgICAgICAgbV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6
Ok5vbmU7CisgICAgICAgICAgICBtX3ByZWxvYWQgPSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6Tm9u
ZTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUs
ICJtZXRhZGF0YSIpKQotICAgICAgICAgICAgbV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6Ok1ldGFE
YXRhOworICAgICAgICAgICAgbV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6OlByZWxvYWQ6Ok1ldGFE
YXRhOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoZSBzcGVjIGRvZXMgbm90IGRl
ZmluZSBhbiAiaW52YWxpZCB2YWx1ZSBkZWZhdWx0IiBidXQgImF1dG8iIGlzIHN1Z2dlc3RlZCBh
cyB0aGUKICAgICAgICAgICAgIC8vICJtaXNzaW5nIHZhbHVlIGRlZmF1bHQiLCBzbyB1c2UgaXQg
Zm9yIGV2ZXJ5dGhpbmcgZXhjZXB0ICJub25lIiBhbmQgIm1ldGFkYXRhIgotICAgICAgICAgICAg
bV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6OkF1dG87CisgICAgICAgICAgICBtX3ByZWxvYWQgPSBN
ZWRpYVBsYXllcjo6UHJlbG9hZDo6QXV0bzsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBh
dHRyaWJ1dGUgbXVzdCBiZSBpZ25vcmVkIGlmIHRoZSBhdXRvcGxheSBhdHRyaWJ1dGUgaXMgcHJl
c2VudApAQCAtMTE1NSwxMyArMTE1NSwxMyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6Y2Fu
UGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKICAgICAvLyA0LjguMTAuMwog
ICAgIHN3aXRjaCAoc3VwcG9ydCkKICAgICB7Ci0gICAgICAgIGNhc2UgTWVkaWFQbGF5ZXI6Oklz
Tm90U3VwcG9ydGVkOgorICAgICAgICBjYXNlIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Oklz
Tm90U3VwcG9ydGVkOgogICAgICAgICAgICAgY2FuUGxheSA9IGVtcHR5U3RyaW5nKCk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ6
CisgICAgICAgIGNhc2UgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQ6
CiAgICAgICAgICAgICBjYW5QbGF5ID0gIm1heWJlIl9zOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOgorICAgICAgICBjYXNlIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkOgogICAgICAgICAgICAgY2FuUGxheSA9
ICJwcm9iYWJseSJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE0NDYsMTMgKzE0
NDYsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKCkKICAg
ICAgICAgICAgIC8vICAgIGF0dHJpYnV0ZSB3YXMgbGFzdCBjaGFuZ2VkLgogICAgICAgICAgICAg
VVJMIGFic29sdXRlVVJMID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAg
ICAgICAgICBpZiAoYWJzb2x1dGVVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgbWVk
aWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgICAgICAg
ICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVy
cm9yKTsKICAgICAgICAgICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAiZW1w
dHkgJ3NyYyciKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmICghaXNTYWZlVG9Mb2FkVVJMKGFic29sdXRlVVJMLCBDb21wbGFpbikgfHwg
IWRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGFic29sdXRlVVJMLnN0cmluZygpKSkgewotICAgICAg
ICAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOwor
ICAgICAgICAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0
YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCkBAIC0xNTA4LDI2ICsxNTA4LDI2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJl
c291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAKICAg
ICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpIHsKLSAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJv
cik7CisgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
OjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBQYWdlKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpIHsKLSAgICAgICAgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgIG1lZGlhTG9hZGluZ0Zh
aWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBVUkwgdXJsID0gaW5pdGlhbFVSTDsKICAgICBpZiAoIXVybC5p
c0VtcHR5KCkgJiYgIWZyYW1lLT5sb2FkZXIoKS53aWxsTG9hZE1lZGlhRWxlbWVudFVSTCh1cmws
ICp0aGlzKSkgewotICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkZvcm1h
dEVycm9yKTsKKyAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGU6OkZvcm1hdEVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKGF1dG8gZG9jdW1lbnRMb2FkZXIgPSBtYWtl
UmVmUHRyKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkgewogICAgICAgICBpZiAo
cGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9h
ZCh1cmwsIENvbnRlbnRFeHRlbnNpb25zOjpSZXNvdXJjZVR5cGU6Ok1lZGlhLCAqZG9jdW1lbnRM
b2FkZXIpLnN1bW1hcnkuYmxvY2tlZExvYWQpIHsKLSAgICAgICAgICAgIG1lZGlhTG9hZGluZ0Zh
aWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOworICAgICAgICAgICAgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTE1NDIsNyArMTU0Miw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29u
dGVudFR5cGUmIGNvbnRlbnRUCiAgICAgICAgIC8vIFJlc291cmNlcyB0aGF0IGFyZSBub3QgcHJl
c2VudCBpbiB0aGUgbWFuaWZlc3Qgd2lsbCBhbHdheXMgZmFpbCB0byBsb2FkIChhdCBsZWFzdCwg
YWZ0ZXIgdGhlCiAgICAgICAgIC8vIGNhY2hlIGhhcyBiZWVuIHByaW1lZCB0aGUgZmlyc3QgdGlt
ZSksIG1ha2luZyB0aGUgdGVzdGluZyBvZiBvZmZsaW5lIGFwcGxpY2F0aW9ucyBzaW1wbGVyLgog
ICAgICAgICBpZiAoIXJlc291cmNlIHx8IHJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcik7
CisgICAgICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZTo6TmV0d29ya0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
QEAgLTE1OTYsNyArMTU5Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNl
KGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAgICAgICAgICAg
ICAvLyBGb3JnZXQgb3VyIHJlZmVyZW5jZSB0byB0aGUgTWVkaWFTb3VyY2UsIHNvIHdlIGxlYXZl
IGl0IGFsb25lCiAgICAgICAgICAgICAvLyB3aGlsZSBwcm9jZXNzaW5nIHJlbWFpbmRlciBvZiBs
b2FkIGZhaWx1cmUuCiAgICAgICAgICAgICBtX21lZGlhU291cmNlID0gbnVsbHB0cjsKLSAgICAg
ICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOworICAg
ICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZv
cm1hdEVycm9yKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMTYwNSw3ICsxNjA1LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgVVJMJiBpbml0aWFs
VVJMLCBDb250ZW50VHlwZSYgY29udGVudFQKICAgICAgICAgbG9hZEF0dGVtcHRlZCA9IHRydWU7
CiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImxvYWRpbmcgbWVkaWEgc3RyZWFt
IGJsb2IiKTsKICAgICAgICAgaWYgKCFtX3BsYXllci0+bG9hZChtX21lZGlhU3RyZWFtU3JjT2Jq
ZWN0LT5wcml2YXRlU3RyZWFtKCkpKQotICAgICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1l
ZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQo
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3IpOwogICAgIH0KICNlbmRpZgog
CkBAIC0xNjEzLDExICsxNjEzLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291
cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAgICAgICAg
IGxvYWRBdHRlbXB0ZWQgPSB0cnVlOwogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJsb2FkaW5nIGdlbmVyaWMgYmxvYiIpOwogICAgICAgICBpZiAoIW1fcGxheWVyLT5sb2FkKG1f
YmxvYi0+dXJsKCksIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pKQotICAgICAgICAgICAgbWVkaWFM
b2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgICAgICBtZWRp
YUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3IpOwog
ICAgIH0KIAogICAgIGlmICghbG9hZEF0dGVtcHRlZCAmJiAhbV9wbGF5ZXItPmxvYWQodXJsLCBj
b250ZW50VHlwZSwga2V5U3lzdGVtKSkKLSAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlh
UGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAKICAgICAvLyBJZiB0aGVyZSBpcyBu
byBwb3N0ZXIgdG8gZGlzcGxheSwgYWxsb3cgdGhlIG1lZGlhIGVuZ2luZSB0byByZW5kZXIgdmlk
ZW8gZnJhbWVzIGFzIHNvb24gYXMKICAgICAvLyB0aGV5IGFyZSBhdmFpbGFibGUuCkBAIC0yMjEz
LDkgKzIyMTMsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZh
dGFsbHkoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcgogCiAgICAgLy8gMiAtIFNldCB0
aGUgZXJyb3IgYXR0cmlidXRlIHRvIGEgbmV3IE1lZGlhRXJyb3Igb2JqZWN0IHdob3NlIGNvZGUg
YXR0cmlidXRlIGlzCiAgICAgLy8gc2V0IHRvIE1FRElBX0VSUl9ORVRXT1JLL01FRElBX0VSUl9E
RUNPREUuCi0gICAgaWYgKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrRXJyb3IpCisgICAg
aWYgKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvcikKICAg
ICAgICAgbV9lcnJvciA9IE1lZGlhRXJyb3I6OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJf
TkVUV09SSyk7Ci0gICAgZWxzZSBpZiAoZXJyb3IgPT0gTWVkaWFQbGF5ZXI6OkRlY29kZUVycm9y
KQorICAgIGVsc2UgaWYgKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkRlY29k
ZUVycm9yKQogICAgICAgICBtX2Vycm9yID0gTWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlhRXJyb3I6
Ok1FRElBX0VSUl9ERUNPREUpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0yMjg0LDIwICsyMjg0LDYgQEAgc3RhdGljIHZvaWQgbG9nTWVkaWFMb2FkUmVxdWVz
dChQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lZGlhRW5naW5lLCBjb25zdCBTdHIKICAgICBw
YWdlLT5zYXdNZWRpYUVuZ2luZShtZWRpYUVuZ2luZSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgc3Ry
aW5nRm9yTmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgc3RhdGUpCi17Ci0g
ICAgc3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2UgTWVkaWFQbGF5ZXI6OkVtcHR5OiByZXR1cm4g
IkVtcHR5Il9zOwotICAgIGNhc2UgTWVkaWFQbGF5ZXI6OklkbGU6IHJldHVybiAiSWRsZSJfczsK
LSAgICBjYXNlIE1lZGlhUGxheWVyOjpMb2FkaW5nOiByZXR1cm4gIkxvYWRpbmciX3M7Ci0gICAg
Y2FzZSBNZWRpYVBsYXllcjo6TG9hZGVkOiByZXR1cm4gIkxvYWRlZCJfczsKLSAgICBjYXNlIE1l
ZGlhUGxheWVyOjpGb3JtYXRFcnJvcjogcmV0dXJuICJGb3JtYXRFcnJvciJfczsKLSAgICBjYXNl
IE1lZGlhUGxheWVyOjpOZXR3b3JrRXJyb3I6IHJldHVybiAiTmV0d29ya0Vycm9yIl9zOwotICAg
IGNhc2UgTWVkaWFQbGF5ZXI6OkRlY29kZUVycm9yOiByZXR1cm4gIkRlY29kZUVycm9yIl9zOwot
ICAgIGRlZmF1bHQ6IHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLX0KLQogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZSBlcnJvcikKIHsKICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKQEAgLTIzMjksOSArMjMxNSw5
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGUgZXJyb3IpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
KGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrRXJyb3IgJiYgbV9yZWFkeVN0YXRlID49IEhB
VkVfTUVUQURBVEEpIHx8IGVycm9yID09IE1lZGlhUGxheWVyOjpEZWNvZGVFcnJvcikKKyAgICBp
ZiAoKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvciAmJiBt
X3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSkgfHwgZXJyb3IgPT0gTWVkaWFQbGF5ZXI6Ok5l
dHdvcmtTdGF0ZTo6RGVjb2RlRXJyb3IpCiAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFs
bHkoZXJyb3IpOwotICAgIGVsc2UgaWYgKChlcnJvciA9PSBNZWRpYVBsYXllcjo6Rm9ybWF0RXJy
b3IgfHwgZXJyb3IgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcikgJiYgbV9sb2FkU3RhdGUg
PT0gTG9hZGluZ0Zyb21TcmNBdHRyKQorICAgIGVsc2UgaWYgKChlcnJvciA9PSBNZWRpYVBsYXll
cjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvciB8fCBlcnJvciA9PSBNZWRpYVBsYXllcjo6TmV0
d29ya1N0YXRlOjpOZXR3b3JrRXJyb3IpICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU3Jj
QXR0cikKICAgICAgICAgbm9uZVN1cHBvcnRlZCgpOwogCiAgICAgdXBkYXRlRGlzcGxheVN0YXRl
KCk7CkBAIC0yMzQyLDcgKzIzMjgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9h
ZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yKQogCiAgICAgRVJST1Jf
TE9HKExPR0lERU5USUZJRVIsICJlcnJvciA9ICIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IpKTsK
IAotICAgIGxvZ01lZGlhTG9hZFJlcXVlc3QoZG9jdW1lbnQoKS5wYWdlKCksIFN0cmluZygpLCBz
dHJpbmdGb3JOZXR3b3JrU3RhdGUoZXJyb3IpLCBmYWxzZSk7CisgICAgbG9nTWVkaWFMb2FkUmVx
dWVzdChkb2N1bWVudCgpLnBhZ2UoKSwgU3RyaW5nKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKGVycm9yKSwgZmFsc2UpOwogCiAgICAgbV9tZWRpYVNlc3Npb24tPmNsaWVudENoYXJhY3Rl
cmlzdGljc0NoYW5nZWQoKTsKIH0KQEAgLTIzNTIsMTggKzIzMzgsMTggQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBzdGF0
ZSkKICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihzdGF0ZSkgIT0gc3RhdGljX2Nhc3Q8aW50Piht
X25ldHdvcmtTdGF0ZSkpCiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIm5ldyBz
dGF0ZSA9ICIsIHN0YXRlLCAiLCBjdXJyZW50IHN0YXRlID0gIiwgbV9uZXR3b3JrU3RhdGUpOwog
Ci0gICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpFbXB0eSkgeworICAgIGlmIChzdGF0ZSA9
PSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSkgewogICAgICAgICAvLyBKdXN0IHVw
ZGF0ZSB0aGUgY2FjaGVkIHN0YXRlIGFuZCBsZWF2ZSwgd2UgY2FuJ3QgZG8gYW55dGhpbmcuCiAg
ICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19FTVBUWTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IgfHwgc3Rh
dGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvciB8fCBzdGF0ZSA9PSBNZWRpYVBsYXllcjo6
RGVjb2RlRXJyb3IpIHsKKyAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZTo6Rm9ybWF0RXJyb3IgfHwgc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0
d29ya0Vycm9yIHx8IHN0YXRlID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkRlY29kZUVy
cm9yKSB7CiAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChzdGF0ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OklkbGUpIHsKKyAgICBp
ZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6SWRsZSkgewogICAgICAgICBp
ZiAobV9uZXR3b3JrU3RhdGUgPiBORVRXT1JLX0lETEUpIHsKICAgICAgICAgICAgIGNoYW5nZU5l
dHdvcmtTdGF0ZUZyb21Mb2FkaW5nVG9JZGxlKCk7CiAgICAgICAgICAgICBzZXRTaG91bGREZWxh
eUxvYWRFdmVudChmYWxzZSk7CkBAIC0yMzcyLDEzICsyMzU4LDEzIEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgc3RhdGUp
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkxvYWRp
bmcpIHsKKyAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGlu
ZykgewogICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPCBORVRXT1JLX0xPQURJTkcgfHwgbV9u
ZXR3b3JrU3RhdGUgPT0gTkVUV09SS19OT19TT1VSQ0UpCiAgICAgICAgICAgICBzdGFydFByb2dy
ZXNzRXZlbnRUaW1lcigpOwogICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfTE9BRElO
RzsKICAgICB9CiAKLSAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkxvYWRlZCkgeworICAg
IGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQpIHsKICAgICAg
ICAgaWYgKG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktfSURMRSkKICAgICAgICAgICAgIGNoYW5n
ZU5ldHdvcmtTdGF0ZUZyb21Mb2FkaW5nVG9JZGxlKCk7CiAgICAgICAgIG1fY29tcGxldGVseUxv
YWRlZCA9IHRydWU7CkBAIC0zMDI1LDcgKzMwMTEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25zdCBNZWRpYVRp
bQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB0aGUgbWVkaWEgZW5naW5lIGhhcyBiZWVu
IHRvbGQgdG8gcG9zdHBvbmUgbG9hZGluZyBkYXRhLCBsZXQgaXQgZ28gYWhlYWQgbm93LgotICAg
IGlmIChtX3ByZWxvYWQgPCBNZWRpYVBsYXllcjo6QXV0byAmJiBtX3JlYWR5U3RhdGUgPCBIQVZF
X0ZVVFVSRV9EQVRBKQorICAgIGlmIChtX3ByZWxvYWQgPCBNZWRpYVBsYXllcjo6UHJlbG9hZDo6
QXV0byAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBKQogICAgICAgICBwcmVwYXJl
VG9QbGF5KCk7CiAKICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZSBiZWZvcmUgc2V0dGluZyBt
X3NlZWtpbmcsIG1fbGFzdFNlZWtUaW1lIGlzIHJldHVybmVkIG9uY2UgaXQgaXMgc2V0LgpAQCAt
MzE5Nyw3ICszMTgzLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6UmVhZHlTdGF0ZSBIVE1MTWVkaWFF
bGVtZW50OjpyZWFkeVN0YXRlKCkgY29uc3QKIAogTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUg
SFRNTE1lZGlhRWxlbWVudDo6bW92aWVMb2FkVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cGxheWVyID8gbV9wbGF5ZXItPm1vdmllTG9hZFR5cGUoKSA6IE1lZGlhUGxheWVyOjpVbmtub3du
OworICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5tb3ZpZUxvYWRUeXBlKCkgOiBNZWRp
YVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjpoYXNBdWRpbygpIGNvbnN0CkBAIC0zNDkzLDExICszNDc5LDExIEBAIFN0cmluZyBIVE1M
TWVkaWFFbGVtZW50OjpwcmVsb2FkKCkgY29uc3QKICNlbmRpZgogCiAgICAgc3dpdGNoIChtX3By
ZWxvYWQpIHsKLSAgICBjYXNlIE1lZGlhUGxheWVyOjpOb25lOgorICAgIGNhc2UgTWVkaWFQbGF5
ZXI6OlByZWxvYWQ6Ok5vbmU6CiAgICAgICAgIHJldHVybiAibm9uZSJfczsKLSAgICBjYXNlIE1l
ZGlhUGxheWVyOjpNZXRhRGF0YToKKyAgICBjYXNlIE1lZGlhUGxheWVyOjpQcmVsb2FkOjpNZXRh
RGF0YToKICAgICAgICAgcmV0dXJuICJtZXRhZGF0YSJfczsKLSAgICBjYXNlIE1lZGlhUGxheWVy
OjpBdXRvOgorICAgIGNhc2UgTWVkaWFQbGF5ZXI6OlByZWxvYWQ6OkF1dG86CiAgICAgICAgIHJl
dHVybiAiYXV0byJfczsKICAgICB9CiAKQEAgLTQ3MzIsNyArNDcxOCw3IEBAIFVSTCBIVE1MTWVk
aWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqIGNvbnRlbnRUeXBl
LCBTdHJpbmcqIGtlCiAgICAgICAgICAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5hbGxv
d01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjaygpIHx8
IFRyYXZlcnNhbDxIVE1MU291cmNlRWxlbWVudD46Om5leHRTa2lwcGluZ0NoaWxkcmVuKHNvdXJj
ZSkpCiAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5jb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnQgPSBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgp
OwogCi0gICAgICAgICAgICBpZiAoIU1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVy
cykpCisgICAgICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAg
ICAgICAgICBnb3RvIENoZWNrQWdhaW47CiAgICAgICAgIH0KIApAQCAtNTA2OSw3ICs1MDU1LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVk
KCkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIC8vIFRoZSBNZWRpYVBsYXll
ciBjYW1lIGFjcm9zcyBjb250ZW50IHdoaWNoIG5vIGluc3RhbGxlZCBlbmdpbmUgc3VwcG9ydHMu
Ci0gICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAg
bWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9y
KTsKIH0KIAogLy8gTWVkaWFQbGF5ZXJQcmVzZW50YXRpb24gbWV0aG9kcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBjMGJkNmIyMjNmNTNjNGQ1OGU5ZDhiZWZlMjY0
MTM4YWMyZjJiZDRkLi5kNDAzZWM0MDBhZDczMjU5OWQ4NGM2NDEwYTZjNjhjZTA2OTBiODdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTg3LDggKzE4Nyw4IEBA
IHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCk7IH0KICNlbmRpZgogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOwotICAgIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkp
OwotICAgIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSB2aWRlb0Z1bGxzY3JlZW5HcmF2
aXR5KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OyB9CisgICAgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpOwor
ICAgIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkgdmlkZW9GdWxsc2NyZWVuR3Jhdml0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eTsgfQogI2VuZGlmCiAKICAgICB2
b2lkIHNjaGVkdWxlQ2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGFiaWxpdHkoKTsKQEAgLTIwMSw3
ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZU5vdGlmeUFib3V0UGxheWluZygp
OwogICAgIHZvaWQgbm90aWZ5QWJvdXRQbGF5aW5nKFBsYXlQcm9taXNlVmVjdG9yJiYpOwogICAg
IAotICAgIE1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNv
bnN0OworICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25z
dDsKICAgICAKICAgICBib29sIGluQWN0aXZlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lu
QWN0aXZlRG9jdW1lbnQ7IH0KIApAQCAtNDk1LDggKzQ5NSw4IEBAIHB1YmxpYzoKIAogICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBmaWxlU2l6ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBtZWRpYUxvYWRp
bmdGYWlsZWQoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlKTsKLSAgICB2b2lkIG1lZGlh
TG9hZGluZ0ZhaWxlZEZhdGFsbHkoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlKTsKKyAg
ICB2b2lkIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKKyAg
ICB2b2lkIG1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZSk7CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBXRUJDT1JFX0VYUE9SVCBkb3Vi
bGUgcGxheWVyVm9sdW1lKCkgY29uc3Q7CkBAIC01MTUsNyArNTE1LDcgQEAgcHVibGljOgogCiAg
ICAgUmVmUHRyPFZpZGVvUGxheWJhY2tRdWFsaXR5PiBnZXRWaWRlb1BsYXliYWNrUXVhbGl0eSgp
OwogCi0gICAgTWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ByZWxvYWQ7IH0KKyAgICBNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3ByZWxvYWQ7IH0KICAgICBNZWRpYUVsZW1lbnRTZXNzaW9u
JiBtZWRpYVNlc3Npb24oKSBjb25zdCB7IHJldHVybiAqbV9tZWRpYVNlc3Npb247IH0KIAogI2lm
IEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCkBAIC02NTAsOCArNjUwLDggQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKSB7IH0KICAgICAKLSAg
ICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSk7Ci0gICAg
dm9pZCBzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlKTsKKyAg
ICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpOworICAgIHZvaWQg
c2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogCiAgICAgZG91Ymxl
IGVmZmVjdGl2ZVBsYXliYWNrUmF0ZSgpIGNvbnN0OwogICAgIGRvdWJsZSByZXF1ZXN0ZWRQbGF5
YmFja1JhdGUoKSBjb25zdDsKQEAgLTg2NSw3ICs4NjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNCbG9ja2VkKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigp
IGNvbnN0OwogICAgIGJvb2wgaGFzQ3VycmVudFNyYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICFtX2N1cnJlbnRTcmMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6
TGl2ZVN0cmVhbTsgfQorICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbW92aWVMb2FkVHlwZSgpID09IE1vdmllTG9hZFR5cGU6OkxpdmVTdHJlYW07IH0KIAog
ICAgIHZvaWQgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsKICAgICBlbnVtIGNsYXNzIFNsZWVwVHlw
ZSB7IE5vbmUsIERpc3BsYXksIFN5c3RlbSB9OwpAQCAtMTAzNywxMiArMTAzNywxMiBAQCBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+
IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GdWxsc2NyZWVu
RnJhbWU7Ci0gICAgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IG1fdmlkZW9GdWxsc2Ny
ZWVuR3Jhdml0eSB7IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgfTsKKyAg
ICBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eSB7IE1l
ZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgfTsKICNlbmRpZgogCiAgICAgUmVm
UHRyPE1lZGlhUGxheWVyPiBtX3BsYXllcjsKIAotICAgIE1lZGlhUGxheWVyRW51bXM6OlByZWxv
YWQgbV9wcmVsb2FkIHsgTWVkaWFQbGF5ZXI6OkF1dG8gfTsKKyAgICBNZWRpYVBsYXllcjo6UHJl
bG9hZCBtX3ByZWxvYWQgeyBQcmVsb2FkOjpBdXRvIH07CiAKICAgICBEaXNwbGF5TW9kZSBtX2Rp
c3BsYXlNb2RlIHsgVW5rbm93biB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmNwcAppbmRleCA0YzE3MjY4MDdiMjFmOTAwZjlkODRiMjY2YmIwN2M1NDIwNjJm
N2NkLi5kZTVmZjM3NjhiM2Q1ZjYwZGI5MmZkYTE3ZjQ1YzMyMDQwNWQ0MTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTcwMyw4ICs3MDMsOCBA
QCBNZWRpYVBsYXllcjo6UHJlbG9hZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjplZmZlY3RpdmVQcmVs
b2FkRm9yRWxlbWVudCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBwcmVsb2FkOwogCiAgICAgaWYg
KG1fcmVzdHJpY3Rpb25zICYgQXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpIHsKLSAgICAgICAg
aWYgKHByZWxvYWQgPiBNZWRpYVBsYXllcjo6TWV0YURhdGEpCi0gICAgICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6Ok1ldGFEYXRhOworICAgICAgICBpZiAocHJlbG9hZCA+IE1lZGlhUGxheWVy
OjpQcmVsb2FkOjpNZXRhRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6UHJl
bG9hZDo6TWV0YURhdGE7CiAgICAgfQogCiAgICAgcmV0dXJuIHByZWxvYWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDdiNTA0YzM5ZDZiMWU2M2I4YzFiZjg3MDE4MTY5
NTNiN2E1ZmJmMjIuLmViN2YyNjc3ZDBiNWVmYjQ0MWY2OWM2OWJiOTM2OGQxODBjNDQyMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2Rl
KEhUTUxNZWRpYUVsZW1lbnRFbnUKICAgICBpZiAobV92aWRlb0VsZW1lbnQgJiYgbV92aWRlb0Vs
ZW1lbnQtPmZ1bGxzY3JlZW5Nb2RlKCkgIT0gbW9kZSkKICAgICAgICAgbV92aWRlb0VsZW1lbnQt
PnNldEZ1bGxzY3JlZW5Nb2RlKG1vZGUpOwogCi0gICAgaWYgKG1fdmlkZW9FbGVtZW50ICYmIGZp
bmlzaGVkV2l0aE1lZGlhICYmIG1vZGUgPT0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZU5vbmUpIHsKKyAgICBpZiAobV92aWRlb0VsZW1lbnQgJiYgZmluaXNoZWRXaXRoTWVk
aWEgJiYgbW9kZSA9PSBNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpIHsKICAg
ICAgICAgaWYgKG1fdmlkZW9FbGVtZW50LT5kb2N1bWVudCgpLmlzTWVkaWFEb2N1bWVudCgpKSB7
CiAgICAgICAgICAgICBpZiAoYXV0byogd2luZG93ID0gbV92aWRlb0VsZW1lbnQtPmRvY3VtZW50
KCkuZG9tV2luZG93KCkpCiAgICAgICAgICAgICAgICAgd2luZG93LT5oaXN0b3J5KCkuYmFjaygp
OwpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QgcmVjdCkKICAgICAgICAgbV92aWRlb0Vs
ZW1lbnQtPnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKHJlY3QpOwogfQogCi12b2lkIFZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0xheWVyR3Jhdml0eShNZWRpYVBsYXll
ckVudW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZp
dHkgZ3Jhdml0eSkKIHsKICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jh
dml0eShncmF2aXR5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAppbmRleCA3ZDViY2NkOTBiMTc5NGM3MTZlZjNlYjFkMTk5NmQ2M2E3
NzU1MDgwLi5jZTIzYWI3ODRiYzZjMmExNWZiODkxZDgxNTc5NTlmMWMxNjRiNTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0x
NDMsOCArMTQzLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNp
YmxlKGJvb2wpIGZpbmFsIHsgfTsKIAotICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0
d29ya1N0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkVtcHR5OyB9Ci0g
ICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsgfQorICAgIE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6Ok5l
dHdvcmtTdGF0ZTo6RW1wdHk7IH0KKyAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0
YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVO
b3RoaW5nOyB9CiAKICAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAwOyB9CiAgICAgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIDA7IH0KQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgY29uc3QgTWVkaWFQbGF5ZXJGYWN0
b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhjb25zdCBNZWRpYQogICAg
IH0KIAogICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogZm91bmRFbmdpbmUgPSBudWxscHRy
OwotICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6
OklzTm90U3VwcG9ydGVkOworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydGVk
ID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAgICAgZm9yIChh
dXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewogICAgICAgICBpZiAoY3Vy
cmVudCkgewogICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gJmVuZ2luZSkKQEAgLTkxNiwxMSAr
OTE2LDExIEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXI6OnN1cHBvcnRz
VHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhCiAgICAgLy8gdXNlciBhZ2VudCBrbm93
cyBpdCBjYW5ub3QgcmVuZGVyIG9yIGlzIHRoZSB0eXBlICJhcHBsaWNhdGlvbi9vY3RldC1zdHJl
YW0iCiAgICAgQXRvbVN0cmluZyBjb250YWluZXJUeXBlID0gcGFyYW1ldGVycy50eXBlLmNvbnRh
aW5lclR5cGUoKTsKICAgICBpZiAoY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3Ry
ZWFtKCkpCi0gICAgICAgIHJldHVybiBJc05vdFN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIFN1
cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICBjb25zdCBNZWRpYVBsYXllckZhY3Rv
cnkqIGVuZ2luZSA9IGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKHBhcmFtZXRl
cnMpOwogICAgIGlmICghZW5naW5lKQotICAgICAgICByZXR1cm4gSXNOb3RTdXBwb3J0ZWQ7Cisg
ICAgICAgIHJldHVybiBTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogCiAgICAgcmV0dXJu
IGVuZ2luZS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHBhcmFtZXRlcnMpOwogfQpAQCAtMTE3MCw3
ICsxMTcwLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiB7CiAg
ICAgLy8gSWYgbW9yZSB0aGFuIG9uZSBtZWRpYSBlbmdpbmUgaXMgaW5zdGFsbGVkIGFuZCB0aGlz
IG9uZSBmYWlsZWQgYmVmb3JlIGZpbmRpbmcgbWV0YWRhdGEsCiAgICAgLy8gbGV0IHRoZSBuZXh0
IGVuZ2luZSB0cnkuCi0gICAgaWYgKG1fcHJpdmF0ZS0+bmV0d29ya1N0YXRlKCkgPj0gRm9ybWF0
RXJyb3IgJiYgbV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPCBIYXZlTWV0YWRhdGEpIHsKKyAgICBp
ZiAobV9wcml2YXRlLT5uZXR3b3JrU3RhdGUoKSA+PSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
OjpGb3JtYXRFcnJvciAmJiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA8IE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGEpIHsKICAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJF
bmdpbmVGYWlsZWRUb0xvYWQoKTsKICAgICAgICAgaWYgKGluc3RhbGxlZE1lZGlhRW5naW5lcygp
LnNpemUoKSA+IDEgJiYgKG1fY29udGVudFR5cGUuaXNFbXB0eSgpIHx8IG5leHRCZXN0TWVkaWFF
bmdpbmUobV9jdXJyZW50TWVkaWFFbmdpbmUpKSkgewogICAgICAgICAgICAgbV9yZWxvYWRUaW1l
ci5zdGFydE9uZVNob3QoMF9zKTsKQEAgLTE1NjYsNyArMTU2Niw3IEBAIGNvbnN0IExvZ2dlciYg
TWVkaWFQbGF5ZXI6Om1lZGlhUGxheWVyTG9nZ2VyKCkKIH0KICNlbmRpZgogCi1TdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSBlbnVt
ZXJhdGlvblZhbHVlKQorU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlIGVudW1lcmF0aW9uVmFsdWUpCiB7CiAgICAgc3RhdGljIGNvbnN0IE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gdmFsdWVzW10gPSB7CiAgICAgICAgIE1BS0VfU1RBVElDX1NU
UklOR19JTVBMKCJIYXZlTm90aGluZyIpLApAQCAtMTU3NSwxNiArMTU3NSwxNiBAQCBTdHJpbmcg
Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSBl
bnVtZXJhdGlvblZhbHVlKQogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiSGF2ZUZ1
dHVyZURhdGEiKSwKICAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkhhdmVFbm91Z2hE
YXRhIiksCiAgICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVk
aWFQbGF5ZXJFbnVtczo6SGF2ZU5vdGhpbmcpID09IDAsICJNZWRpYVBsYXllckVudW1zOjpIYXZl
Tm90aGluZyBpcyBub3QgMCBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpIYXZlTWV0YWRhdGEpID09IDEsICJNZWRp
YVBsYXllckVudW1zOjpIYXZlTWV0YWRhdGEgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6SGF2ZUN1
cnJlbnREYXRhKSA9PSAyLCAiTWVkaWFQbGF5ZXJFbnVtczo6SGF2ZUN1cnJlbnREYXRhIGlzIG5v
dCAyIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+
KE1lZGlhUGxheWVyRW51bXM6OkhhdmVGdXR1cmVEYXRhKSA9PSAzLCAiTWVkaWFQbGF5ZXJFbnVt
czo6SGF2ZUZ1dHVyZURhdGEgaXMgbm90IDMgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6SGF2ZUVub3VnaERhdGEp
ID09IDQsICJNZWRpYVBsYXllckVudW1zOjpIYXZlRW5vdWdoRGF0YSBpcyBub3QgNCBhcyBleHBl
Y3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcpID09IDAsICJNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZTo6SGF2ZU5vdGhpbmcgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0
YSkgPT0gMSwgIk1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGEgaXMgbm90IDEg
YXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkgPT0gMiwgIk1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGEgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGU6OkhhdmVGdXR1cmVEYXRhKSA9PSAzLCAiTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVG
dXR1cmVEYXRhIGlzIG5vdCAzIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YSkg
PT0gNCwgIk1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YSBpcyBub3QgNCBh
cyBleHBlY3RlZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9u
VmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4gdmFsdWVzW3N0
YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldOwogfQogCi1TdHJpbmcgY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlIGVudW1l
cmF0aW9uVmFsdWUpCitTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5
ZXI6Ok5ldHdvcmtTdGF0ZSBlbnVtZXJhdGlvblZhbHVlKQogewogICAgIHN0YXRpYyBjb25zdCBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVlc1tdID0gewogICAgICAgICBNQUtFX1NUQVRJQ19T
VFJJTkdfSU1QTCgiRW1wdHkiKSwKQEAgLTE1OTUsNDYgKzE1OTUsNDYgQEAgU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZSBlbnVt
ZXJhdGlvblZhbHUKICAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIk5ldHdvcmtFcnJv
ciIpLAogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiRGVjb2RlRXJyb3IiKSwKICAg
ICB9OwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVu
dW1zOjpFbXB0eSkgPT0gMCwgIk1lZGlhUGxheWVyRW51bXM6OkVtcHR5IGlzIG5vdCAwIGFzIGV4
cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxh
eWVyRW51bXM6OklkbGUpID09IDEsICJNZWRpYVBsYXllckVudW1zOjpJZGxlIGlzIG5vdCAxIGFz
IGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlh
UGxheWVyRW51bXM6OkxvYWRpbmcpID09IDIsICJNZWRpYVBsYXllckVudW1zOjpMb2FkaW5nIGlz
IG5vdCAyIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXpl
X3Q+KE1lZGlhUGxheWVyRW51bXM6OkxvYWRlZCkgPT0gMywgIk1lZGlhUGxheWVyRW51bXM6Okxv
YWRlZCBpcyBub3QgMyBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpGb3JtYXRFcnJvcikgPT0gNCwgIk1lZGlhUGxh
eWVyRW51bXM6OkZvcm1hdEVycm9yIGlzIG5vdCA0IGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtFcnJv
cikgPT0gNSwgIk1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtFcnJvciBpcyBub3QgNSBhcyBleHBl
Y3RlZCIpOwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXll
ckVudW1zOjpEZWNvZGVFcnJvcikgPT0gNiwgIk1lZGlhUGxheWVyRW51bXM6OkRlY29kZUVycm9y
IGlzIG5vdCA2IGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxz
aXplX3Q+KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5KSA9PSAwLCAiTWVkaWFQbGF5
ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHkgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6
SWRsZSkgPT0gMSwgIk1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OklkbGUgaXMgbm90IDEgYXMg
ZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQ
bGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGluZykgPT0gMiwgIk1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGU6OkxvYWRpbmcgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGVkKSA9
PSAzLCAiTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGVkIGlzIG5vdCAzIGFzIGV4cGVj
dGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yKSA9PSA0LCAiTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZTo6Rm9ybWF0RXJyb3IgaXMgbm90IDQgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0d29y
a0Vycm9yKSA9PSA1LCAiTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvciBpcyBub3QgNSBhcyBleHBl
Y3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXll
cjo6TmV0d29ya1N0YXRlOjpEZWNvZGVFcnJvcikgPT0gNiwgIk1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGU6OkRlY29kZUVycm9yIGlzIG5vdCA2IGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZh
bHVlcykpOwogICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlv
blZhbHVlKV07CiB9CiAKLVN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBs
YXllckVudW1zOjpQcmVsb2FkIGVudW1lcmF0aW9uVmFsdWUpCitTdHJpbmcgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXI6OlByZWxvYWQgZW51bWVyYXRpb25WYWx1ZSkKIHsK
ICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAg
ICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIk5vbmUiKSwKICAgICAgICAgTUFLRV9TVEFU
SUNfU1RSSU5HX0lNUEwoIk1ldGFEYXRhIiksCiAgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19J
TVBMKCJBdXRvIiksCiAgICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGF0aWNfY2FzdDxzaXpl
X3Q+KE1lZGlhUGxheWVyRW51bXM6Ok5vbmUpLCAiTWVkaWFQbGF5ZXJFbnVtczo6Tm9uZSBpcyBu
b3QgMCBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90
PihNZWRpYVBsYXllckVudW1zOjpNZXRhRGF0YSkgPT0gMSwgIk1lZGlhUGxheWVyRW51bXM6Ok1l
dGFEYXRhIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
Y2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6OkF1dG8pID09IDIsICJNZWRpYVBsYXllckVu
dW1zOjpBdXRvIGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydCghc3Rh
dGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6UHJlbG9hZDo6Tm9uZSksICJNZWRpYVBsYXll
cjo6UHJlbG9hZDo6Tm9uZSBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6UHJlbG9hZDo6TWV0YURhdGEpID09
IDEsICJNZWRpYVBsYXllcjo6UHJlbG9hZDo6TWV0YURhdGEgaXMgbm90IDEgYXMgZXhwZWN0ZWQi
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6OlBy
ZWxvYWQ6OkF1dG8pID09IDIsICJNZWRpYVBsYXllcjo6UHJlbG9hZDo6QXV0byBpcyBub3QgMiBh
cyBleHBlY3RlZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9u
VmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4gdmFsdWVzW3N0
YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldOwogfQogCi1TdHJpbmcgY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGVudW1l
cmF0aW9uVmFsdWUpCitTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBlbnVtZXJhdGlvblZhbHVlKQogewogICAgIHN0YXRpYyBjb25zdCBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVlc1tdID0gewogICAgICAgICBNQUtFX1NUQVRJQ19T
VFJJTkdfSU1QTCgiSXNOb3RTdXBwb3J0ZWQiKSwKICAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5H
X0lNUEwoIklzU3VwcG9ydGVkIiksCiAgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJN
YXlCZVN1cHBvcnRlZCIpLAogICAgIH07Ci0gICAgc3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8
c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpJc05vdFN1cHBvcnRlZCksICJNZWRpYVBsYXllckVu
dW1zOjpJc05vdFN1cHBvcnRlZCBpcyBub3QgMCBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpJc1N1cHBvcnRlZCkg
PT0gMSwgIk1lZGlhUGxheWVyRW51bXM6OklzU3VwcG9ydGVkIGlzIG5vdCAxIGFzIGV4cGVjdGVk
Iik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51
bXM6Ok1heUJlU3VwcG9ydGVkKSA9PSAyLCAiTWVkaWFQbGF5ZXJFbnVtczo6TWF5QmVTdXBwb3J0
ZWQgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGF0aWNfY2Fz
dDxzaXplX3Q+KE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSwgIk1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkIGlzIG5vdCAwIGFzIGV4cGVj
dGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkKSA9PSAxLCAiTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZTo6SXNTdXBwb3J0ZWQgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6TWF5QmVT
dXBwb3J0ZWQpID09IDIsICJNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRl
ZCBpcyBub3QgMiBhcyBleHBlY3RlZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+
KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1
cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldOwogfQogCi1T
dHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVy
aW5nUG9saWN5IGVudW1lcmF0aW9uVmFsdWUpCitTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9T
dHJpbmcoTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSBlbnVtZXJhdGlvblZhbHVlKQogewog
ICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVlc1tdID0gewogICAg
ICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiRGVmYXVsdCIpLApAQCAtMTY0MiwxMCArMTY0
MiwxMCBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVt
czo6QnVmZmVyaW5nUG9saWN5IGVudW1lcmF0aW9uVgogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgiTWFrZVJlc291cmNlc1B1cmdlYWJsZSIpLAogICAgICAgICBNQUtFX1NUQVRJQ19T
VFJJTkdfSU1QTCgiUHVyZ2VSZXNvdXJjZXMiKSwKICAgICB9OwotICAgIHN0YXRpY19hc3NlcnQo
IXN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5OjpE
ZWZhdWx0KSwgIk1lZGlhUGxheWVyRW51bXM6OkRlZmF1bHQgaXMgbm90IDAgYXMgZXhwZWN0ZWQi
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVt
czo6QnVmZmVyaW5nUG9saWN5OjpMaW1pdFJlYWRBaGVhZCkgPT0gMSwgIk1lZGlhUGxheWVyRW51
bXM6OkxpbWl0UmVhZEFoZWFkIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGlj
eTo6TWFrZVJlc291cmNlc1B1cmdlYWJsZSkgPT0gMiwgIk1lZGlhUGxheWVyRW51bXM6Ok1ha2VS
ZXNvdXJjZXNQdXJnZWFibGUgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5
OjpQdXJnZVJlc291cmNlcykgPT0gMywgIk1lZGlhUGxheWVyRW51bXM6OlB1cmdlUmVzb3VyY2Vz
IGlzIG5vdCAzIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8
c2l6ZV90PihNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0KSwgIk1lZGlhUGxh
eWVyOjpEZWZhdWx0IGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6OkxpbWl0UmVh
ZEFoZWFkKSA9PSAxLCAiTWVkaWFQbGF5ZXI6OkxpbWl0UmVhZEFoZWFkIGlzIG5vdCAxIGFzIGV4
cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxh
eWVyOjpCdWZmZXJpbmdQb2xpY3k6Ok1ha2VSZXNvdXJjZXNQdXJnZWFibGUpID09IDIsICJNZWRp
YVBsYXllcjo6TWFrZVJlc291cmNlc1B1cmdlYWJsZSBpcyBub3QgMiBhcyBleHBlY3RlZCIpOwor
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6QnVmZmVy
aW5nUG9saWN5OjpQdXJnZVJlc291cmNlcykgPT0gMywgIk1lZGlhUGxheWVyOjpQdXJnZVJlc291
cmNlcyBpcyBub3QgMyBhcyBleHBlY3RlZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXpl
X3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICBy
ZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXgg
ZmI5ZWJhMGU0YWJlMzFjNzUyNzAwY2I3Y2U2ODkwZGI5ODljMjIyYi4uOGE3YjFlOWJmZDc4N2Y1
MTMwNTJiNTY4ODM0NTk0NDBkZjlkMWIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0yNTMsNyArMjUzLDYgQEAgcHVibGljOgogICAg
IHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgLy8gTWVkaWEgZW5naW5lIHN1cHBvcnQuCi0gICAg
dXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOwogICAgIHN0YXRpYyBTdXBwb3J0
c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsK
ICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CkBA
IC02MTEsNyArNjEwLDcgQEAgcHJpdmF0ZToKICAgICBDb250ZW50VHlwZSBtX2NvbnRlbnRUeXBl
OwogICAgIFN0cmluZyBtX2tleVN5c3RlbTsKICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICBQcmVs
b2FkIG1fcHJlbG9hZCB7IEF1dG8gfTsKKyAgICBQcmVsb2FkIG1fcHJlbG9hZCB7IFByZWxvYWQ6
OkF1dG8gfTsKICAgICBkb3VibGUgbV92b2x1bWUgeyAxIH07CiAgICAgYm9vbCBtX3Zpc2libGUg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKaW5kZXggMDE5NWM2
OTc2ZDRlYzRhNDk4M2M0MmE0NzZlMWQ0NWRkN2E2MTk4Yi4uNGIxMGYwNDgzMDg3ZTJlNjZlM2Fh
ZDgxZWU0NDJlNmQyNDhkZTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaApAQCAtMzEsMTIgKzMxLDQ5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5ZXJFbnVtcyB7CiBwdWJsaWM6Ci0gICAgZW51
bSBOZXR3b3JrU3RhdGUgeyBFbXB0eSwgSWRsZSwgTG9hZGluZywgTG9hZGVkLCBGb3JtYXRFcnJv
ciwgTmV0d29ya0Vycm9yLCBEZWNvZGVFcnJvciB9OwotICAgIGVudW0gUmVhZHlTdGF0ZSAgeyBI
YXZlTm90aGluZywgSGF2ZU1ldGFkYXRhLCBIYXZlQ3VycmVudERhdGEsIEhhdmVGdXR1cmVEYXRh
LCBIYXZlRW5vdWdoRGF0YSB9OwotICAgIGVudW0gTW92aWVMb2FkVHlwZSB7IFVua25vd24sIERv
d25sb2FkLCBTdG9yZWRTdHJlYW0sIExpdmVTdHJlYW0gfTsKLSAgICBlbnVtIFByZWxvYWQgeyBO
b25lLCBNZXRhRGF0YSwgQXV0byB9OwotICAgIGVudW0gVmlkZW9HcmF2aXR5IHsgVmlkZW9HcmF2
aXR5UmVzaXplLCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QsIFZpZGVvR3Jhdml0eVJlc2l6ZUFz
cGVjdEZpbGwgfTsKLSAgICBlbnVtIFN1cHBvcnRzVHlwZSB7IElzTm90U3VwcG9ydGVkLCBJc1N1
cHBvcnRlZCwgTWF5QmVTdXBwb3J0ZWQgfTsKKyAgICBlbnVtIGNsYXNzIE5ldHdvcmtTdGF0ZSA6
IHVpbnQ4X3QgeworICAgICAgICBFbXB0eSwKKyAgICAgICAgSWRsZSwKKyAgICAgICAgTG9hZGlu
ZywKKyAgICAgICAgTG9hZGVkLAorICAgICAgICBGb3JtYXRFcnJvciwKKyAgICAgICAgTmV0d29y
a0Vycm9yLAorICAgICAgICBEZWNvZGVFcnJvcgorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIFJl
YWR5U3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAgSGF2ZU5vdGhpbmcsCisgICAgICAgIEhhdmVN
ZXRhZGF0YSwKKyAgICAgICAgSGF2ZUN1cnJlbnREYXRhLAorICAgICAgICBIYXZlRnV0dXJlRGF0
YSwKKyAgICAgICAgSGF2ZUVub3VnaERhdGEKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBNb3Zp
ZUxvYWRUeXBlIDogdWludDhfdCB7CisgICAgICAgIFVua25vd24sCisgICAgICAgIERvd25sb2Fk
LAorICAgICAgICBTdG9yZWRTdHJlYW0sCisgICAgICAgIExpdmVTdHJlYW0KKyAgICB9OworCisg
ICAgZW51bSBjbGFzcyBQcmVsb2FkIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisgICAgICAg
IE1ldGFEYXRhLAorICAgICAgICBBdXRvCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgVmlkZW9H
cmF2aXR5IDogdWludDhfdCB7CisgICAgICAgIFJlc2l6ZSwKKyAgICAgICAgUmVzaXplQXNwZWN0
LAorICAgICAgICBSZXNpemVBc3BlY3RGaWxsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgU3Vw
cG9ydHNUeXBlIDogdWludDhfdCB7CisgICAgICAgIElzTm90U3VwcG9ydGVkLAorICAgICAgICBJ
c1N1cHBvcnRlZCwKKyAgICAgICAgTWF5QmVTdXBwb3J0ZWQKKyAgICB9OworCiAgICAgZW51bSB7
CiAgICAgICAgIFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lID0gMCwKICAgICAgICAgVmlkZW9GdWxs
c2NyZWVuTW9kZVN0YW5kYXJkID0gMSA8PCAwLApAQCAtNDQsNyArODEsNyBAQCBwdWJsaWM6CiAg
ICAgfTsKICAgICB0eXBlZGVmIHVpbnQzMl90IFZpZGVvRnVsbHNjcmVlbk1vZGU7CiAKLSAgICBl
bnVtIGNsYXNzIEJ1ZmZlcmluZ1BvbGljeSB7CisgICAgZW51bSBjbGFzcyBCdWZmZXJpbmdQb2xp
Y3kgOiB1aW50OF90IHsKICAgICAgICAgRGVmYXVsdCwKICAgICAgICAgTGltaXRSZWFkQWhlYWQs
CiAgICAgICAgIE1ha2VSZXNvdXJjZXNQdXJnZWFibGUsCkBAIC05MCw0ICsxMjcsNzYgQEAgc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGlj
eT4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRl
LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU6OkVtcHR5
LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU6OklkbGUs
CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTo6TG9hZGlu
ZywKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlOjpMb2Fk
ZWQsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTo6Rm9y
bWF0RXJyb3IsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0
ZTo6TmV0d29ya0Vycm9yLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3
b3JrU3RhdGU6OkRlY29kZUVycm9yCisgICAgPjsKK307CisKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlPiB7CisgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6UmVhZHlTdGF0ZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVh
ZHlTdGF0ZTo6SGF2ZU5vdGhpbmcsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhLAorICAgICAgICBXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpSZWFkeVN0YXRlOjpIYXZlRnV0dXJlRGF0YSwKKyAgICAgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZTo6SGF2ZUVub3VnaERhdGEKKyAgICA+Owor
fTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpNb3ZpZUxvYWRUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAg
ICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZSwKKyAgICAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZTo6VW5rbm93biwKKyAgICAg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZTo6RG93bmxvYWQsCisg
ICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGU6OlN0b3JlZFN0
cmVhbSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZTo6
TGl2ZVN0cmVhbQorICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLAor
ICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkOjpOb25lLAorICAgICAg
ICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkOjpNZXRhRGF0YSwKKyAgICAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZDo6QXV0bworICAgID47Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZp
ZGVvR3Jhdml0eT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSwKKyAgICAgICAgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5OjpSZXNpemUsCisgICAgICAgIFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eTo6UmVzaXplQXNwZWN0LAorICAgICAgICBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZUFzcGVjdEZpbGwK
KyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUsCisg
ICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBw
b3J0ZWQsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6
SXNTdXBwb3J0ZWQsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRz
VHlwZTo6TWF5QmVTdXBwb3J0ZWQKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpCdWZmZXJpbmdQb2xpY3ksCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6OkJ1ZmZlcmluZ1BvbGljeTo6RGVmYXVsdCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5OjpMaW1pdFJlYWRBaGVhZCwKKyAgICAgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5OjpNYWtlUmVzb3VyY2VzUHVyZ2Vh
YmxlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k6
OlB1cmdlUmVzb3VyY2VzCisgICAgPjsKK307CisKIH07IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgKaW5kZXggMWQyZmMwMDkyMDRhOGMwMjU1NDFiMmEyZDdjNWYwZDBiZTVjOTljZC4uZGJjYzA1
ZmNlODIyODUxMGFkMTI3MThhNjYwZGE4YjA5OTQ5Y2IzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE1MSw3
ICsxNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBs
YXllcjo6UHJlbG9hZCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9G
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlYWR5U3RhdGUoKSA+PSBNZWRpYVBsYXllcjo6SGF2ZUN1
cnJlbnREYXRhOyB9CisgICAgdmlydHVhbCBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBj
b25zdCB7IHJldHVybiByZWFkeVN0YXRlKCkgPj0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6Okhh
dmVDdXJyZW50RGF0YTsgfQogCiAgICAgdmlydHVhbCBib29sIGNhbkxvYWRQb3N0ZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRQb3N0ZXIoY29uc3QgU3Ry
aW5nJikgeyB9CkBAIC0xOTIsNyArMTkyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBk
aWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIE9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4m
KSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIAotICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxh
eWVyOjpVbmtub3duOyB9CisgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBt
b3ZpZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6
OlVua25vd247IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCkgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0KaW5kZXggMGNkMDEyOWEzY2Q5ZWFmODYzYWQ0Nzg5ODM4NTAzMWQ4Yjc2ZWY2ZC4uZThkMTI2
MDQ5MWFlOWUyZmYwMjRhMTYxNWQ3ZDQzNjQwMTUwM2M1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTExNCw3ICsxMTQsNyBA
QCBib29sIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtQW5k
TWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZQogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9
IHRydWU7CiAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5cGUobWltZVR5cGUpOwogCi0g
ICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNU
eXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICByZXR1
cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUocGFy
YW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9
CiAKIGJvb2wgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgQ0RNUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CiAgICAgcGFyYW1ldGVy
cy50eXBlID0gQ29udGVudFR5cGUobWltZVR5cGUpOwogCi0gICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1l
ZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxM
ZWdhY3lDRE1TZXNzaW9uPiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNz
aW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggYTdkMDQ3MGEz
ZjA0MDljODAzODliMjMyYzk3ZmM5N2M0MDI4MTcxZS4uYTdkZjQzZjRmNDJjMTgxOWY0NTc4OGUy
NmU2YzE2ZmZkMWVmZmY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTU4LDkgKzU4LDkgQEAgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24oTWVkaWFQ
bGF5ZXIqIHBsYXkKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fcXVldWVkTm90aWZp
Y2F0aW9ucygpCiAgICAgLCBtX3F1ZXVlTXV0ZXgoKQotICAgICwgbV9uZXR3b3JrU3RhdGUoTWVk
aWFQbGF5ZXI6OkVtcHR5KQotICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlTm90
aGluZykKLSAgICAsIG1fcHJlbG9hZChNZWRpYVBsYXllcjo6QXV0bykKKyAgICAsIG1fbmV0d29y
a1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5KQorICAgICwgbV9yZWFkeVN0
YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZykKKyAgICAsIG1fcHJlbG9h
ZChNZWRpYVBsYXllcjo6UHJlbG9hZDo6QXV0bykKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKICAgICAsIG1fbG9n
SWRlbnRpZmllcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKQpAQCAtMTY4LDgg
KzE2OCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2FkKGNvbnN0
IFN0cmluZyYgdXJsKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBz
ZXROZXR3b3JrU3RhdGUobV9wcmVsb2FkID09IE1lZGlhUGxheWVyOjpOb25lID8gTWVkaWFQbGF5
ZXI6OklkbGUgOiBNZWRpYVBsYXllcjo6TG9hZGluZyk7Ci0gICAgc2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6SGF2ZU5vdGhpbmcpOworICAgIHNldE5ldHdvcmtTdGF0ZShtX3ByZWxvYWQgPT0g
TWVkaWFQbGF5ZXI6OlByZWxvYWQ6Ok5vbmUgPyBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpJ
ZGxlIDogTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGluZyk7CisgICAgc2V0UmVhZHlT
dGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcpOwogCiAgICAgbV9hc3Nl
dFVSTCA9IFVSTCh7IH0sIHVybCk7CiAgICAgbV9yZXF1ZXN0ZWRPcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKG1fYXNzZXRVUkwpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6
bG9hZChjb25zdCBTdHJpbmcmLCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqKQogewotICAgIHNl
dE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOworICAgIHNldE5ldHdvcmtT
dGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiB9CiAjZW5kaWYK
IApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
OjpwbGF5YWJpbGl0eUtub3duKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
OjpwcmVwYXJlVG9QbGF5KCkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwotICAg
IHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OkF1dG8pOworICAgIHNldFByZWxvYWQoTWVkaWFQbGF5
ZXI6OlByZWxvYWQ6OkF1dG8pOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjo6cGxheSgpCkBAIC00NDAsNyArNDQwLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmlzUmVhZHlGb3JWaWRlb1NldHVwKCkgY29uc3QKICAgICAvLyBBVkZvdW5k
YXRpb24gd2lsbCBub3QgcmV0dXJuIHRydWUgZm9yIGZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSB1
bnRpbAogICAgIC8vIGFuIEFWUGxheWVyTGF5ZXIgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIEFWUGxh
eWVySXRlbSwgc28gYWxsb3cgdmlkZW8gc2V0dXAKICAgICAvLyBoZXJlIGlmIGEgdmlkZW8gdHJh
Y2sgdG8gdHJpZ2dlciBhbGxvY2F0aW9uIG9mIGEgQVZQbGF5ZXJMYXllci4KLSAgICByZXR1cm4g
KG1faXNBbGxvd2VkVG9SZW5kZXIgfHwgbV9jYWNoZWRIYXNWaWRlbykgJiYgbV9yZWFkeVN0YXRl
ID49IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEgJiYgbV9wbGF5ZXItPnZpc2libGUoKTsKKyAg
ICByZXR1cm4gKG1faXNBbGxvd2VkVG9SZW5kZXIgfHwgbV9jYWNoZWRIYXNWaWRlbykgJiYgbV9y
ZWFkeVN0YXRlID49IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGEgJiYgbV9w
bGF5ZXItPnZpc2libGUoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OnByZXBhcmVGb3JSZW5kZXJpbmcoKQpAQCAtNDkxLDMwICs0OTEsMzAgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcygpCiAgICAgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgbmV3UmVhZHlTdGF0ZSA9IG1fcmVhZHlTdGF0ZTsKIAogICAgIGlmICht
X2xvYWRpbmdNZXRhZGF0YSkKLSAgICAgICAgbmV3TmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6
OkxvYWRpbmc7CisgICAgICAgIG5ld05ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGU6OkxvYWRpbmc7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIC1sb2FkVmFsdWVzQXN5bmNo
cm9ub3VzbHlGb3JLZXlzOmNvbXBsZXRpb25IYW5kbGVyOiBoYXMgaW52b2tlZCBpdHMgaGFuZGxl
cjsgdGVzdCBzdGF0dXMgb2Yga2V5cyBhbmQgZGV0ZXJtaW5lIHN0YXRlLgogICAgICAgICBBc3Nl
dFN0YXR1cyBhc3NldFN0YXR1cyA9IHRoaXMtPmFzc2V0U3RhdHVzKCk7CiAgICAgICAgIEl0ZW1T
dGF0dXMgaXRlbVN0YXR1cyA9IHBsYXllckl0ZW1TdGF0dXMoKTsKICAgICAgICAgCiAgICAgICAg
IG1fYXNzZXRJc1BsYXlhYmxlID0gKGFzc2V0U3RhdHVzID09IE1lZGlhUGxheWVyQVZBc3NldFN0
YXR1c1BsYXlhYmxlKTsKLSAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpI
YXZlTWV0YWRhdGEgJiYgYXNzZXRTdGF0dXMgPiBNZWRpYVBsYXllckFWQXNzZXRTdGF0dXNMb2Fk
aW5nKSB7CisgICAgICAgIGlmIChtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZTo6SGF2ZU1ldGFkYXRhICYmIGFzc2V0U3RhdHVzID4gTWVkaWFQbGF5ZXJBVkFzc2V0U3RhdHVz
TG9hZGluZykgewogICAgICAgICAgICAgaWYgKG1fYXNzZXRJc1BsYXlhYmxlKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGFzc2V0U3RhdHVzID49IE1lZGlhUGxheWVyQVZBc3NldFN0YXR1c0xvYWRl
ZCkKLSAgICAgICAgICAgICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZl
TWV0YWRhdGE7CisgICAgICAgICAgICAgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhOwogICAgICAgICAgICAgICAgIGlmIChpdGVtU3Rh
dHVzIDw9IE1lZGlhUGxheWVyQVZQbGF5ZXJJdGVtU3RhdHVzVW5rbm93bikgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXNzZXRTdGF0dXMgPT0gTWVkaWFQbGF5ZXJBVkFzc2V0U3RhdHVzRmFp
bGVkIHx8IG1fcHJlbG9hZCA+IE1lZGlhUGxheWVyOjpNZXRhRGF0YSB8fCBpc0xpdmVTdHJlYW0o
KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXNzZXRTdGF0dXMgPT0gTWVkaWFQbGF5ZXJB
VkFzc2V0U3RhdHVzRmFpbGVkIHx8IG1fcHJlbG9hZCA+IE1lZGlhUGxheWVyOjpQcmVsb2FkOjpN
ZXRhRGF0YSB8fCBpc0xpdmVTdHJlYW0oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VGhlIGFzc2V0IGlzIHBsYXlhYmxlIGJ1dCBkb2Vzbid0IHN1cHBvcnQgaW5zcGVjdGlvbiBwcmlv
ciB0byBwbGF5YmFjayAoZWcuIHN0cmVhbWluZyBmaWxlcyksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBvciB3ZSBhcmUgc3VwcG9zZWQgdG8gcHJlcGFyZSBmb3IgcGxheWJhY2sgaW1tZWRp
YXRlbHksIHNvIGNyZWF0ZSB0aGUgcGxheWVyIGl0ZW0gbm93LgotICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3TmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisgICAgICAgICAg
ICAgICAgICAgICAgICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
OjpMb2FkaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgcHJlcGFyZVRvUGxheSgpOwogICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld05ldHdv
cmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpJZGxlOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3
TmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6SWRsZTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIEZJWCBN
RTogZmV0Y2ggdGhlIGVycm9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgQCJwbGF5YWJsZSIga2V5IHRv
IGRpc3Rpbmd1aXNoIGJldHdlZW4gZm9ybWF0IAogICAgICAgICAgICAgICAgIC8vIGFuZCBuZXR3
b3JrIGVycm9ycy4KLSAgICAgICAgICAgICAgICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXll
cjo6Rm9ybWF0RXJyb3I7CisgICAgICAgICAgICAgICAgbmV3TmV0d29ya1N0YXRlID0gTWVkaWFQ
bGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgCkBAIC01MzAsMjUgKzUzMCwyNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbjo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUg
c3RhdHVzIGJlY29tZXMgUGxheWJhY2tCdWZmZXJGdWxsLCBsb2FkaW5nIHN0b3BzIGFuZCB0aGUg
c3RhdHVzIHdpbGwgbm90CiAgICAgICAgICAgICAgICAgLy8gcHJvZ3Jlc3MgdG8gTGlrZWx5VG9L
ZWVwVXAuIFNldCB0aGUgcmVhZHlTdGF0ZSB0byAgSEFWRV9FTk9VR0hfREFUQSwgb24gdGhlCiAg
ICAgICAgICAgICAgICAgLy8gcHJlc3VtcHRpb24gdGhhdCBpZiB0aGUgcGxheWJhY2sgYnVmZmVy
IGlzIGZ1bGwsIHBsYXliYWNrIHdpbGwgcHJvYmFibHkgbm90IHN0YWxsLgotICAgICAgICAgICAg
ICAgIG5ld1JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CisgICAgICAg
ICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5v
dWdoRGF0YTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBNZWRp
YVBsYXllckFWUGxheWVySXRlbVN0YXR1c1JlYWR5VG9QbGF5OgotICAgICAgICAgICAgICAgIGlm
IChtX3JlYWR5U3RhdGUgIT0gTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhICYmIG1heFRpbWVM
b2FkZWQoKSA+IGN1cnJlbnRNZWRpYVRpbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgbmV3UmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRnV0dXJlRGF0YTsKKyAgICAgICAgICAgICAgICBp
ZiAobV9yZWFkeVN0YXRlICE9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0
YSAmJiBtYXhUaW1lTG9hZGVkKCkgPiBjdXJyZW50TWVkaWFUaW1lKCkpCisgICAgICAgICAgICAg
ICAgICAgIG5ld1JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUZ1dHVy
ZURhdGE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgTWVkaWFQ
bGF5ZXJBVlBsYXllckl0ZW1TdGF0dXNQbGF5YmFja0J1ZmZlckVtcHR5OgotICAgICAgICAgICAg
ICAgIG5ld1JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhOworICAgICAg
ICAgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1
cnJlbnREYXRhOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoaXRlbVN0YXR1cyA9PSBNZWRpYVBsYXllckFWUGxheWVySXRlbVN0YXR1c1Bs
YXliYWNrQnVmZmVyRnVsbCkKLSAgICAgICAgICAgICAgICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRp
YVBsYXllcjo6SWRsZTsKKyAgICAgICAgICAgICAgICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlOjpJZGxlOwogICAgICAgICAgICAgZWxzZSBpZiAoaXRlbVN0YXR1
cyA9PSBNZWRpYVBsYXllckFWUGxheWVySXRlbVN0YXR1c0ZhaWxlZCkKLSAgICAgICAgICAgICAg
ICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6RGVjb2RlRXJyb3I7CisgICAgICAgICAg
ICAgICAgbmV3TmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RGVjb2Rl
RXJyb3I7CiAgICAgICAgICAgICBlbHNlIGlmIChpdGVtU3RhdHVzICE9IE1lZGlhUGxheWVyQVZQ
bGF5ZXJJdGVtU3RhdHVzUGxheWJhY2tCdWZmZXJGdWxsICYmIGl0ZW1TdGF0dXMgPj0gTWVkaWFQ
bGF5ZXJBVlBsYXllckl0ZW1TdGF0dXNSZWFkeVRvUGxheSkKLSAgICAgICAgICAgICAgICBuZXdO
ZXR3b3JrU3RhdGUgPSAobWF4VGltZUxvYWRlZCgpID09IGR1cmF0aW9uTWVkaWFUaW1lKCkpID8g
TWVkaWFQbGF5ZXI6OkxvYWRlZCA6IE1lZGlhUGxheWVyOjpMb2FkaW5nOworICAgICAgICAgICAg
ICAgIG5ld05ldHdvcmtTdGF0ZSA9IChtYXhUaW1lTG9hZGVkKCkgPT0gZHVyYXRpb25NZWRpYVRp
bWUoKSkgPyBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQgOiBNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlOjpMb2FkaW5nOwogICAgICAgICB9CiAgICAgfQogCkBAIC01NTYsOCArNTU2
LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcygp
CiAgICAgICAgIHNldFVwVmlkZW9SZW5kZXJpbmcoKTsKIAogICAgIGlmICghbV9oYXZlUmVwb3J0
ZWRGaXJzdFZpZGVvRnJhbWUgJiYgbV9jYWNoZWRIYXNWaWRlbyAmJiBoYXNBdmFpbGFibGVWaWRl
b0ZyYW1lKCkpIHsKLSAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpIYXZl
Q3VycmVudERhdGEpCi0gICAgICAgICAgICBuZXdSZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6Okhh
dmVDdXJyZW50RGF0YTsKKyAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGEpCisgICAgICAgICAgICBuZXdSZWFkeVN0YXRlID0g
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YTsKICAgICAgICAgbV9oYXZl
UmVwb3J0ZWRGaXJzdFZpZGVvRnJhbWUgPSB0cnVlOwogICAgICAgICBtX3BsYXllci0+Zmlyc3RW
aWRlb0ZyYW1lQXZhaWxhYmxlKCk7CiAgICAgfSBlbHNlIGlmICghaGFzQXZhaWxhYmxlVmlkZW9G
cmFtZSgpKQpAQCAtNjkzLDEyICs2OTMsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246OnJlcGFpbnQoKQogTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjptb3ZpZUxvYWRUeXBlKCkgY29uc3QKIHsKICAgICBpZiAo
IW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgYXNzZXRTdGF0dXMoKSA9PSBNZWRpYVBsYXllckFWQXNz
ZXRTdGF0dXNVbmtub3duKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlVua25vd247Cisg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKIAogICAg
IGlmIChpc0xpdmVTdHJlYW0oKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpMaXZlU3Ry
ZWFtOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OkxpdmVTdHJl
YW07CiAKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkRvd25sb2FkOworICAgIHJldHVybiBNZWRp
YVBsYXllcjo6TW92aWVMb2FkVHlwZTo6RG93bmxvYWQ7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uOjpzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxv
YWQpCkBAIC03MTAsMTQgKzcxMCwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjo6c2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkKQogCiAgICAgc2V0
RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKLSAgICBpZiAobV9wcmVsb2FkID49IE1lZGlhUGxheWVy
OjpNZXRhRGF0YSAmJiBhc3NldFN0YXR1cygpID09IE1lZGlhUGxheWVyQVZBc3NldFN0YXR1c0Rv
ZXNOb3RFeGlzdCkgeworICAgIGlmIChtX3ByZWxvYWQgPj0gTWVkaWFQbGF5ZXI6OlByZWxvYWQ6
Ok1ldGFEYXRhICYmIGFzc2V0U3RhdHVzKCkgPT0gTWVkaWFQbGF5ZXJBVkFzc2V0U3RhdHVzRG9l
c05vdEV4aXN0KSB7CiAgICAgICAgIGNyZWF0ZUFWQXNzZXRGb3JVUkwobV9hc3NldFVSTCk7CiAg
ICAgICAgIGNoZWNrUGxheWFiaWxpdHkoKTsKICAgICB9CiAKICAgICAvLyBEb24ndCBmb3JjZSBj
cmVhdGlvbiBvZiB0aGUgcGxheWVyIGFuZCBwbGF5ZXIgaXRlbSB1bmxlc3Mgd2UgYWxyZWFkeSBr
bm93IHRoYXQgdGhlIGFzc2V0IGlzIHBsYXlhYmxlLiBJZiB3ZSBhcmVuJ3QKICAgICAvLyB0aGVy
ZSB5ZXQsIG9yIGlmIHdlIGFscmVhZHkga25vdyBpdCBpcyBub3QgcGxheWFibGUsIGNyZWF0aW5n
IHRoZW0gbm93IHdvbid0IGhlbHAuCi0gICAgaWYgKG1fcHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6
QXV0byAmJiBtX2Fzc2V0SXNQbGF5YWJsZSkgeworICAgIGlmIChtX3ByZWxvYWQgPT0gTWVkaWFQ
bGF5ZXI6OlByZWxvYWQ6OkF1dG8gJiYgbV9hc3NldElzUGxheWFibGUpIHsKICAgICAgICAgY3Jl
YXRlQVZQbGF5ZXJJdGVtKCk7CiAgICAgICAgIGNyZWF0ZUFWUGxheWVyKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCmlu
ZGV4IDA0NTMyNDQzMmY3YWQyOTY2NmJjYzRjODlkOWE4YjNkOTU0MmRkZjQuLjZhMjBhMmZmMGQ0
MGMwN2VlMTU2ZjE5N2YxYTBmNGM4YTRiZjMyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJpdmF0
ZUNsaWVudCopIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAg
ICB2b2lkIGxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJikgb3ZlcnJpZGUgeyBzZXROZXR3b3JrU3Rh
dGUoTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yKTsgfQorICAgIHZvaWQgbG9hZChNZWRpYVN0cmVh
bVByaXZhdGUmKSBvdmVycmlkZSB7IHNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpGb3JtYXRFcnJvcik7IH0KICNlbmRpZgogICAgIHZvaWQgY2FuY2VsTG9hZCgpIG92
ZXJyaWRlID0gMDsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYVJl
bmRlcmluZ01vZGUgY3VycmVudFJlbmRlcmluZ01vZGUoKSBjb25zdDsKICAgICBNZWRpYVJlbmRl
cmluZ01vZGUgcHJlZmVycmVkUmVuZGVyaW5nTW9kZSgpIGNvbnN0OwogCi0gICAgYm9vbCBtZXRh
RGF0YUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXll
cjo6SGF2ZU1ldGFkYXRhOyB9CisgICAgYm9vbCBtZXRhRGF0YUF2YWlsYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFk
YXRhOyB9CiAgICAgZG91YmxlIHJlcXVlc3RlZFJhdGUoKSBjb25zdDsKICAgICBNZWRpYVRpbWUg
bWF4VGltZUxvYWRlZCgpIGNvbnN0OwogICAgIGJvb2wgaXNSZWFkeUZvclZpZGVvU2V0dXAoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDBjZThjZWI0OGJkNzg4Y2ViMTlhYTlkZDg5N2Y5
Mjk5ZGVhYmRkMGQuLjg1NjJlODQ1ZDFmY2EwYzM5ZTZjY2ZlMWE3MTNjNWRhYjU4MTU3MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcApAQCAtOTA3LDI0ICs5MDcsMjQgQEAgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBlKGNv
bnN0IE0KIHsKICAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5cGUuY29udGFp
bmVyVHlwZSgpOwogICAgIGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUoY29udGFpbmVyVHlwZSkp
Ci0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJl
dHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIGlm
ICghc3RhdGljTUlNRVR5cGVMaXN0KCkuY29udGFpbnMoY29udGFpbmVyVHlwZSkgJiYgIWF2Zk1J
TUVUeXBlcygpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKQotICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICBhdXRvIGNvZGVjcyA9IHBhcmFtZXRlcnMu
dHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKICNpZiBIQVZF
KEFWQ0ZVUkxfUExBWUFCTEVfTUlNRVRZUEUpCiAgICAgLy8gVGhlIHNwZWMgc2F5czoKICAgICAv
LyAiSW1wbGVtZW50b3JzIGFyZSBlbmNvdXJhZ2VkIHRvIHJldHVybiAibWF5YmUiIHVubGVzcyB0
aGUgdHlwZSBjYW4gYmUgY29uZmlkZW50bHkgZXN0YWJsaXNoZWQgYXMgYmVpbmcgc3VwcG9ydGVk
IG9yIG5vdC4iCiAgICAgaWYgKGNvZGVjcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKIAogICAgIFN0cmluZyB0eXBlU3RyaW5nID0gY29u
dGFpbmVyVHlwZSArICI7IGNvZGVjcz1cIiIgKyBjb2RlY3MgKyAiXCIiOwotICAgIHJldHVybiBB
VkNGVVJMQXNzZXRJc1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlwZSh0eXBlU3RyaW5nLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6
Ok1heUJlU3VwcG9ydGVkOworICAgIHJldHVybiBBVkNGVVJMQXNzZXRJc1BsYXlhYmxlRXh0ZW5k
ZWRNSU1FVHlwZSh0eXBlU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpID8gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpNYXlCZVN1cHBvcnRlZDsKICNlbHNlCiAgICAgaWYgKGF2Zk1JTUVUeXBlcygpLmNvbnRhaW5z
KGNvbnRhaW5lclR5cGUpKQotICAgICAgICByZXR1cm4gY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlh
UGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKLSAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gY29kZWNz
LmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkIDog
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaAppbmRleCBlOThkOGVhOTAwMDQ3MThjZmM5MDQ0YTA5ODM2YWYwYjkwZTBm
ZTAxLi5jYWRhMjMxMWJiNmM2ODIyODliMGZhNjZiYjZkOGQ1MTI1OTNmNjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuUGxh
eUZhc3RSZXZlcnNlRGlkQ2hhbmdlKGJvb2wpOwogICAgIHZvaWQgY2FuUGxheUZhc3RGb3J3YXJk
RGlkQ2hhbmdlKGJvb2wpOwogCi0gICAgdm9pZCBzZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5
ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJ1ZmZlcmlu
Z1BvbGljeShNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5KSBvdmVycmlkZTsKIAogI2lmIEhB
VkUoQVZGT1VOREFUSU9OX1ZJREVPX09VVFBVVCkKICAgICB2b2lkIG91dHB1dE1lZGlhRGF0YVdp
bGxDaGFuZ2UoQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IDU0MTAzOTEzNDE5ZWU1ZDQ4ZTllYzFhY2I2ODkyZjk4ZGRlOWYzYmQuLjcxODkyOWM2
MjEyMjMxMWY2OWEzZDhkYWUwMjgyM2QzMTYxNTJiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmCiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgOiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24ocGxheWVyKQogICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVu
aXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQotICAgICwgbV92aWRlb0Z1
bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QpCisg
ICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eTo6
UmVzaXplQXNwZWN0KQogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVBVkZN
b3ZpZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFBsYXllcjptYWtlV2Vha1B0cigqdGhpcyldKSkK
ICAgICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQogICAgICwgbV9oYXZlQ2hlY2tlZFBs
YXlhYmlsaXR5KGZhbHNlKQpAQCAtMTA5MSwxMSArMTA5MSwxMSBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQ
bGF5ZXI6OgogICAgICAgICByZXR1cm47CiAKICAgICBOU1N0cmluZyAqdmlkZW9HcmF2aXR5ID0g
QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBpZiAoZ3Jhdml0eSA9PSBNZWRp
YVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplKQorICAgIGlmIChncmF2aXR5ID09IE1lZGlhUGxh
eWVyOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZSkKICAgICAgICAgdmlkZW9HcmF2aXR5ID0gQVZMYXll
clZpZGVvR3Jhdml0eVJlc2l6ZTsKLSAgICBlbHNlIGlmIChncmF2aXR5ID09IE1lZGlhUGxheWVy
OjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QpCisgICAgZWxzZSBpZiAoZ3Jhdml0eSA9PSBNZWRp
YVBsYXllcjo6VmlkZW9HcmF2aXR5OjpSZXNpemVBc3BlY3QpCiAgICAgICAgIHZpZGVvR3Jhdml0
eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7Ci0gICAgZWxzZSBpZiAoZ3Jhdml0
eSA9PSBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCkKKyAgICBlbHNl
IGlmIChncmF2aXR5ID09IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZUFzcGVjdEZp
bGwpCiAgICAgICAgIHZpZGVvR3Jhdml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3Bl
Y3RGaWxsOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNTky
LDMwICsxNTkyLDMwIEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNUeXBlKGNvbnN0CiB7CiAjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKICAgICBpZiAocGFyYW1ldGVycy5pc01lZGlhU291cmNlKQotICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAjZW5kaWYKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgIGlmIChwYXJhbWV0ZXJzLmlzTWVkaWFTdHJlYW0pCi0gICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICNlbmRpZgogCiAgICAgYXV0
byBjb250YWluZXJUeXBlID0gcGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKTsKICAgICBp
ZiAoaXNVbnN1cHBvcnRlZE1JTUVUeXBlKGNvbnRhaW5lclR5cGUpKQotICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICBpZiAoIXN0YXRpY01JTUVUeXBl
TGlzdCgpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpICYmICFBVkFzc2V0TUlNRVR5cGVDYWNoZTo6
c2luZ2xldG9uKCkuY2FuRGVjb2RlVHlwZShjb250YWluZXJUeXBlKSkKLSAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogCiAgICAgLy8gVGhlIHNwZWMgc2F5czoK
ICAgICAvLyAiSW1wbGVtZW50b3JzIGFyZSBlbmNvdXJhZ2VkIHRvIHJldHVybiAibWF5YmUiIHVu
bGVzcyB0aGUgdHlwZSBjYW4gYmUgY29uZmlkZW50bHkgZXN0YWJsaXNoZWQgYXMgYmVpbmcgc3Vw
cG9ydGVkIG9yIG5vdC4iCiAgICAgaWYgKHBhcmFtZXRlcnMudHlwZS5jb2RlY3MoKS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKIAogICAg
IGlmICghY29udGVudFR5cGVNZWV0c0hhcmR3YXJlRGVjb2RlUmVxdWlyZW1lbnRzKHBhcmFtZXRl
cnMudHlwZSwgcGFyYW1ldGVycy5jb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQp
KQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICBO
U1N0cmluZyAqdHlwZVN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA7IGNv
ZGVjcz1cIiVAXCIiLCAoTlNTdHJpbmcgKiljb250YWluZXJUeXBlLCAoTlNTdHJpbmcgKilwYXJh
bWV0ZXJzLnR5cGUucGFyYW1ldGVyKENvbnRlbnRUeXBlOjpjb2RlY3NQYXJhbWV0ZXIoKSldOwot
ICAgIHJldHVybiBbUEFMOjpnZXRBVlVSTEFzc2V0Q2xhc3MoKSBpc1BsYXlhYmxlRXh0ZW5kZWRN
SU1FVHlwZTp0eXBlU3RyaW5nXSA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxh
eWVyOjpNYXlCZVN1cHBvcnRlZDsKKyAgICByZXR1cm4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNz
KCkgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6dHlwZVN0cmluZ10gPyBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1h
eUJlU3VwcG9ydGVkOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQpAQCAtMTYyNCw3ICsxNjI0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5
c3QKICAgICBpZiAoIWtleVN5c3RlbS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gIkNsZWFyIEtl
eSIgaXMgb25seSBzdXBwb3J0ZWQgd2l0aCBITFM6CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKGtleVN5c3RlbSwgIm9yZy53M2MuY2xlYXJrZXkiKSAmJiAhbWltZVR5cGUuaXNF
bXB0eSgpICYmICFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24v
eC1tcGVndXJsIikpCi0gICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9y
dGVkOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmICgha2V5U3lzdGVt
SXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA3MTUyOGM5OWMwY2M2MDdkMzhmMmVmM2UwNzI4OGNm
NmQzMzUxZmQ2Li5kZmYzZTI0NTJiZjVhZTI1YWM0NjMwNWIxMDM5ZmUyODczYzk4YjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMzEsOCArMTMxLDggQEAgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMoTWVkaWEKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fc3luY2hyb25pemVy
KGFkb3B0TlMoW1BBTDo6YWxsb2NBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplckluc3Rh
bmNlKCkgaW5pdF0pKQogICAgICwgbV9zZWVrVGltZXIoKnRoaXMsICZNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtJbnRlcm5hbCkKLSAgICAsIG1fbmV0d29ya1N0YXRl
KE1lZGlhUGxheWVyOjpFbXB0eSkKLSAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmcpCisgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
OjpFbXB0eSkKKyAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2
ZU5vdGhpbmcpCiAgICAgLCBtX3JhdGUoMSkKICAgICAsIG1fcGxheWluZygwKQogICAgICwgbV9z
ZWVraW5nKGZhbHNlKQpAQCAtMjMzLDQxICsyMzMsNDEgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShj
b24KIHsKICAgICAvLyBUaGlzIGVuZ2luZSBkb2VzIG5vdCBzdXBwb3J0IG5vbi1tZWRpYS1zb3Vy
Y2Ugc291cmNlcy4KICAgICBpZiAoIXBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSkKLSAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgaWYgKHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSkKLSAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogI2VuZGlmCiAKICAgICBpZiAocGFyYW1l
dGVycy50eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1
cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90
U3VwcG9ydGVkOwogCiAgICAgaWYgKEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNp
bmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpIHsKICAgICAgICAgaWYgKCFBVlN0cmVhbURhdGFQYXJz
ZXJNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5zdXBwb3J0c0NvbnRlbnRUeXBlKHBhcmFtZXRl
cnMudHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVk
OworICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3Vw
cG9ydGVkOwogICAgIH0gZWxzZSBpZiAoQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigp
LmlzQXZhaWxhYmxlKCkpIHsKICAgICAgICAgaWYgKCFBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2lu
Z2xldG9uKCkuc3VwcG9ydHNDb250ZW50VHlwZShwYXJhbWV0ZXJzLnR5cGUpKQotICAgICAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICAgICAgICAgIHJldHVy
biBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICAgICB9IGVsc2UK
LSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogCiAgICAgLy8g
VGhlIHNwZWMgc2F5czoKICAgICAvLyAiSW1wbGVtZW50b3JzIGFyZSBlbmNvdXJhZ2VkIHRvIHJl
dHVybiAibWF5YmUiIHVubGVzcyB0aGUgdHlwZSBjYW4gYmUgY29uZmlkZW50bHkgZXN0YWJsaXNo
ZWQgYXMgYmVpbmcgc3VwcG9ydGVkIG9yIG5vdC4iCiAgICAgYXV0byBjb2RlY3MgPSBwYXJhbWV0
ZXJzLnR5cGUucGFyYW1ldGVyKENvbnRlbnRUeXBlOjpjb2RlY3NQYXJhbWV0ZXIoKSk7CiAgICAg
aWYgKGNvZGVjcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TWF5QmVT
dXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlC
ZVN1cHBvcnRlZDsKIAogICAgIFN0cmluZyBvdXRwdXRDb2RlY3MgPSBjb2RlY3M7CiAgICAgaWYg
KFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihvdXRwdXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1dE1JTUVDb2RlY1BhcmFtZXRl
cjopXSkKICAgICAgICAgb3V0cHV0Q29kZWNzID0gW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2Vy
Q2xhc3MoKSBvdXRwdXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1dE1JTUVDb2RlY1BhcmFtZXRl
cjpvdXRwdXRDb2RlY3NdOwogCiAgICAgaWYgKCFjb250ZW50VHlwZU1lZXRzSGFyZHdhcmVEZWNv
ZGVSZXF1aXJlbWVudHMocGFyYW1ldGVycy50eXBlLCBwYXJhbWV0ZXJzLmNvbnRlbnRUeXBlc1Jl
cXVpcmluZ0hhcmR3YXJlU3VwcG9ydCkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNO
b3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJ
c05vdFN1cHBvcnRlZDsKIAogICAgIFN0cmluZyB0eXBlID0gbWFrZVN0cmluZyhwYXJhbWV0ZXJz
LnR5cGUuY29udGFpbmVyVHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRDb2RlY3MsICJcIiIp
OwogICAgIGlmIChBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5p
c0F2YWlsYWJsZSgpKQotICAgICAgICByZXR1cm4gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVD
YWNoZTo6c2luZ2xldG9uKCkuY2FuRGVjb2RlVHlwZSh0eXBlKSA/IE1lZGlhUGxheWVyOjpJc1N1
cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKLSAgICByZXR1cm4gQVZBc3Nl
dE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUodHlwZSkgPyBNZWRpYVBs
YXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7CisgICAgICAg
IHJldHVybiBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5jYW5E
ZWNvZGVUeXBlKHR5cGUpID8gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQg
OiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKKyAgICByZXR1cm4g
QVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUodHlwZSkgPyBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOwogfQogCiAjcHJhZ21hIG1hcmsgLQpAQCAtMjc2LDcg
KzI3Niw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6bG9hZChjb25zdCBTdHJpbmcmKQogewogICAgIC8vIFRoaXMg
bWVkaWEgZW5naW5lIG9ubHkgc3VwcG9ydHMgTWVkaWFTb3VyY2UgVVJMcy4KLSAgICBtX25ldHdv
cmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcjsKKyAgICBtX25ldHdvcmtTdGF0ZSA9
IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yOwogICAgIG1fcGxheWVyLT5u
ZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiB9CiAKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bG9hZChjb25zdCBTdHJpbmcmLCBNZWRp
YVNvdXJjZVByaXZhdAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmKQogewot
ICAgIHNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOworICAgIHNldE5l
dHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiB9CiAj
ZW5kaWYKIApAQCAtNjgyLDcgKzY4Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpub3RpZnlBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCiAKIE1lZGlh
UGxheWVyOjpNb3ZpZUxvYWRUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6bW92aWVMb2FkVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdG9y
ZWRTdHJlYW07CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpTdG9yZWRT
dHJlYW07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpw
cmVwYXJlRm9yUmVuZGVyaW5nKCkKQEAgLTc1NCw3ICs3NTQsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZW5zdXJlTGF5ZXIoKQogICAgIEFTU0VSVChtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcik7CiAgICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcikgewogICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkZhaWxlZCB0byBjcmVh
dGUgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIiKTsKLSAgICAgICAgc2V0TmV0d29ya1N0YXRl
KE1lZGlhUGxheWVyOjpEZWNvZGVFcnJvcik7CisgICAgICAgIHNldE5ldHdvcmtTdGF0ZShNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpEZWNvZGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTgxNSw3ICs4MTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6ZGVzdHJveURlY29tcHJlc3Npb25TZXNzaW9uKCkKIAogYm9vbCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNob3VsZEJlUGxheWluZygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcGxheWluZyAmJiAhc2Vla2luZygpICYmIGFsbFJlbmRlcmVyc0hhdmVB
dmFpbGFibGVTYW1wbGVzKCkgJiYgbV9yZWFkeVN0YXRlID49IE1lZGlhUGxheWVyOjpIYXZlRnV0
dXJlRGF0YTsKKyAgICByZXR1cm4gbV9wbGF5aW5nICYmICFzZWVraW5nKCkgJiYgYWxsUmVuZGVy
ZXJzSGF2ZUF2YWlsYWJsZVNhbXBsZXMoKSAmJiBtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGU6OkhhdmVGdXR1cmVEYXRhOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0SGFzQXZhaWxhYmxlVmlkZW9GcmFtZShib29sIGZsYWcp
CkBAIC0xMDk4LDcgKzEwOTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZQogICAgIGVsc2UK
ICAgICAgICAgW21fc3luY2hyb25pemVyIHNldFJhdGU6MF07CiAKLSAgICBpZiAobV9yZWFkeVN0
YXRlID49IE1lZGlhUGxheWVyRW51bXM6OkhhdmVDdXJyZW50RGF0YSAmJiBoYXNWaWRlbygpICYm
ICFtX2hhc0F2YWlsYWJsZVZpZGVvRnJhbWUpIHsKKyAgICBpZiAobV9yZWFkeVN0YXRlID49IE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGEgJiYgaGFzVmlkZW8oKSAmJiAh
bV9oYXNBdmFpbGFibGVWaWRlb0ZyYW1lKSB7CiAgICAgICAgIG1fcmVhZHlTdGF0ZUlzV2FpdGlu
Z0ZvckF2YWlsYWJsZUZyYW1lID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggNzQwZTk2Y2E0ODBhMDkzZTEwODI2Y2E3YjAwYjEyM2I5
Yzc5OWQyNi4uZmU2OWZhYzNhM2U3MDk3NmVkNTZkYTRjZDg1MGFjODc2MTk2N2FjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTE1OCwxNCArMTU4LDE0IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBtZXRhRGF0YUF2YWlsYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdHJlYW1Qcml2YXRlICYmIG1fcmVhZHlTdGF0ZSA+PSBN
ZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOyB9CisgICAgYm9vbCBtZXRhRGF0YUF2YWlsYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdHJlYW1Qcml2YXRlICYmIG1fcmVhZHlTdGF0ZSA+PSBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhOyB9CiAKICAgICB2b2lkIGFjY2Vs
ZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0
c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5
cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbTsgfQor
ICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6TGl2ZVN0cmVhbTsgfQog
CiAgICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTI1
NSw4ICsyNTUsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKICAgICBQZW5kaW5nU2Ft
cGxlUXVldWUgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZTsKIAotICAgIE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGUgeyBNZWRpYVBsYXllcjo6RW1wdHkgfTsKLSAgICBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGUgeyBNZWRpYVBsYXllcjo6SGF2ZU5v
dGhpbmcgfTsKKyAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRlIHsg
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHkgfTsKKyAgICBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSBtX3JlYWR5U3RhdGUgeyBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhp
bmcgfTsKICAgICBGbG9hdFNpemUgbV9pbnRyaW5zaWNTaXplOwogICAgIGZsb2F0IG1fdm9sdW1l
IHsgMSB9OwogICAgIERpc3BsYXlNb2RlIG1fZGlzcGxheU1vZGUgeyBOb25lIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KaW5kZXggNjMxNDgxNGJjODhmYzljZjdlYmJjZTk0ZmM4ZTcxOTFk
ZjNmNDU0Zi4uMjUxOWMxMTRmNDA4OTY5YTNjNDBiZWIzODU0MzU5MDhmMGIyNWIxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0
cmluZywgQVNDCiAKIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gcGFyYW1ldGVycy5pc01lZGlh
U3RyZWFtID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzTm90U3Vw
cG9ydGVkOworICAgIHJldHVybiBwYXJhbWV0ZXJzLmlzTWVkaWFTdHJlYW0gPyBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6
OklzTm90U3VwcG9ydGVkOwogfQogCiAjcHJhZ21hIG1hcmsgLQpAQCAtNTI2LDcgKzUyNiw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsb2FkKGNvbnN0IFN0
cmluZyYpCiB7CiAgICAgLy8gVGhpcyBtZWRpYSBlbmdpbmUgb25seSBzdXBwb3J0cyBNZWRpYVN0
cmVhbSBVUkxzLgogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7Ci0gICAgICAgIHNl
dE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOworICAgICAgICBzZXROZXR3
b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3IpOwogICAgIH0p
OwogfQogCkBAIC01MzUsNyArNTM1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2YXQKIHsKICAg
ICAvLyBUaGlzIG1lZGlhIGVuZ2luZSBvbmx5IHN1cHBvcnRzIE1lZGlhU3RyZWFtIFVSTHMuCiAg
ICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKLSAgICAgICAgc2V0TmV0d29ya1N0YXRl
KE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgIHNldE5ldHdvcmtTdGF0ZShNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgfSk7CiB9CiAjZW5kaWYK
QEAgLTU1Miw3ICs1NTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKIAogICAgIHNjaGVkdWxlRGVm
ZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIHVwZGF0ZVRyYWNrcygpOwotICAgICAgICBzZXRO
ZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OklkbGUpOworICAgICAgICBzZXROZXR3b3JrU3RhdGUo
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6SWRsZSk7CiAgICAgICAgIHVwZGF0ZVJlYWR5U3Rh
dGUoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDRkYTA5ZDJiMTc4YzIyZTYzZDFlZWU1YmYzYjFi
OWZhN2VjYjI4ZTYuLjBlN2FlMDUzZDlkY2YzMmFjOGUxYjdiOWZmZGU1MTkwNTZkMjcyNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qy5tbQpAQCAtODIsNyArODIsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogICAgIE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmlzTWVk
aWFTb3VyY2UgPSB0cnVlOwogICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlOwotICAg
IGlmIChNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShw
YXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpCisgICAgaWYgKE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMp
ID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKQogICAgICAgICBy
ZXR1cm4gTm90U3VwcG9ydGVkOwogCiAgICAgYXV0byBuZXdTb3VyY2VCdWZmZXIgPSBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKHRoaXMpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZv
aWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6ZHVyYXRpb25DaGFuZ2VkKCkKIHZvaWQgTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6bWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVz
IHN0YXR1cykKIHsKICAgICBpZiAoc3RhdHVzID09IEVvc05vRXJyb3IpCi0gICAgICAgIG1fcGxh
eWVyLT5zZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OkxvYWRlZCk7CisgICAgICAgIG1fcGxh
eWVyLT5zZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGVkKTsK
ICAgICBtX2lzRW5kZWQgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDMxMWRiZjQ3YTkyZTIwYmRk
MmQwNjdiNDM5MzQxYzNlMzVkZDExN2MuLjVhNTYxYzM4YTk4YzcxNWFhNjUxOGIyZTBiMjQ5NjAy
ODBhZmRlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tCkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpCiAKIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZWFkeVN0YXRlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5y
ZWFkeVN0YXRlKCkgOiBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisgICAgcmV0dXJuIG1fbWVk
aWFTb3VyY2UgPyBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+cmVhZHlTdGF0ZSgpIDogTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5
U3RhdGUpCkBAIC0xMjg5LDcgKzEyODksNyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpjYW5Td2l0Y2hUb1R5cGUoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKQogICAg
IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJz
LmlzTWVkaWFTb3VyY2UgPSB0cnVlOwogICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBl
OwotICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBv
cnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVk
OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRWaWRlb0xheWVyKEFW
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnlDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCmluZGV4IDJlZTM4MjcwODQ5NGM1
YjdhMzE2NzU5ZmRkYWRiODRmMDMyYWI5ZmMuLjk4YTUzYzQyZjMwNWI5Mjg0ZWNlYTc4YjVlMzZh
NDcwZDc1MGRkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUNvY29hLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIGNyZWF0ZU1lZGlhUGxh
eWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29jb2EoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24m
JiBjbwogICAgICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgeyB9
OwogICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZSh2aWRlb0NvbmZpZ3VyYXRp
b24uY29udGVudFR5cGUpOwogICAgICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSBjb25m
aWd1cmF0aW9uLnR5cGUgPT0gTWVkaWFEZWNvZGluZ1R5cGU6Ok1lZGlhU291cmNlOwotICAgICAg
ICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXll
cjo6SXNTdXBwb3J0ZWQpIHsKKyAgICAgICAgaWYgKE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUo
cGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQpIHsK
ICAgICAgICAgICAgIGNhbGxiYWNrKHt7IH0sIFdURk1vdmUoY29uZmlndXJhdGlvbil9KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgY3Jl
YXRlTWVkaWFQbGF5ZXJEZWNvZGluZ0NvbmZpZ3VyYXRpb25Db2NvYShNZWRpYURlY29kaW5nQ29u
ZmlndXJhdGlvbiYmIGNvCiAgICAgICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFy
YW1ldGVycyB7IH07CiAgICAgICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKGNvbmZp
Z3VyYXRpb24uYXVkaW8udmFsdWUoKS5jb250ZW50VHlwZSk7CiAgICAgICAgIHBhcmFtZXRlcnMu
aXNNZWRpYVNvdXJjZSA9IGNvbmZpZ3VyYXRpb24udHlwZSA9PSBNZWRpYURlY29kaW5nVHlwZTo6
TWVkaWFTb3VyY2U7Ci0gICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFt
ZXRlcnMpICE9IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCkgeworICAgICAgICBpZiAoTWVkaWFQ
bGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlOjpJc1N1cHBvcnRlZCkgewogICAgICAgICAgICAgY2FsbGJhY2soe3sgfSwgV1RGTW92ZShj
b25maWd1cmF0aW9uKX0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDAxMjdjNTdk
MWFiODUxZjNjMjQ3NjhlMGE1NTcxYThmZjNmYWU2ZWUuLmQ0ODg1NDIyNjdhMzdhMmIzOGQ1OWIz
ZDM4YmY0MjkxOWE0YTE3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCkBAIC00NzcsMTMgKzQ3NywxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciBy
ZWdpcwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWRGdWxsKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBpcGVsaW5lTmFtZSkKIHsKICAgICBpZiAo
bV9wbGF5ZXItPmNvbnRlbnRNSU1FVHlwZSgpID09ICJpbWFnZS9naWYiKSB7Ci0gICAgICAgIGxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yLCBNZWRpYVBsYXllcjo6SGF2ZU5v
dGhpbmcsIHRydWUpOworICAgICAgICBsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGU6OkZvcm1hdEVycm9yLCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcs
IHRydWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVVJMIHVybChVUkwoKSwgdXJs
U3RyaW5nKTsKICAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpKSB7Ci0gICAgICAgIGxvYWRp
bmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yLCBNZWRpYVBsYXllcjo6SGF2ZU5vdGhp
bmcsIHRydWUpOworICAgICAgICBsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkZvcm1hdEVycm9yLCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcsIHRy
dWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00OTgsMTYgKzQ5OCwxNiBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZEZ1bGwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFN0cmluZwogICAgIHNldFBsYXliaW5VUkwodXJsKTsKIAogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgInByZWxvYWQ6ICVzIiwgY29udmVydEVudW1lcmF0aW9u
VG9TdHJpbmcobV9wcmVsb2FkKS51dGY4KCkuZGF0YSgpKTsKLSAgICBpZiAobV9wcmVsb2FkID09
IE1lZGlhUGxheWVyOjpOb25lKSB7CisgICAgaWYgKG1fcHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6
UHJlbG9hZDo6Tm9uZSkgewogICAgICAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIkRl
bGF5aW5nIGxvYWQuIik7CiAgICAgICAgIG1faXNEZWxheWluZ0xvYWQgPSB0cnVlOwogICAgIH0K
IAogICAgIC8vIFJlc2V0IG5ldHdvcmsgYW5kIHJlYWR5IHN0YXRlcy4gVGhvc2Ugd2lsbCBiZSBz
ZXQgcHJvcGVybHkgb25jZQogICAgIC8vIHRoZSBwaXBlbGluZSBwcmUtcm9sbGVkLgotICAgIG1f
bmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisgICAgbV9uZXR3b3JrU3RhdGUg
PSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkaW5nOwogICAgIG1fcGxheWVyLT5uZXR3
b3JrU3RhdGVDaGFuZ2VkKCk7Ci0gICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVO
b3RoaW5nOworICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZl
Tm90aGluZzsKICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICBtX2FyZVZv
bHVtZUFuZE11dGVJbml0aWFsaXplZCA9IGZhbHNlOwogICAgIG1faGFzVGFpbnRlZE9yaWdpbiA9
IFdURjo6bnVsbG9wdDsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bG9hZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJpdmF0
ZUNsaWVudCopCiB7CiAgICAgLy8gUHJvcGVybHkgZmFpbCBzbyB0aGUgZ2xvYmFsIE1lZGlhUGxh
eWVyIHRyaWVzIHRvIGZhbGxiYWNrIHRvIHRoZSBuZXh0IE1lZGlhUGxheWVyUHJpdmF0ZS4KLSAg
ICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcjsKKyAgICBtX25ldHdv
cmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yOwogICAgIG1f
cGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiB9CiAjZW5kaWYKQEAgLTU0Niw3ICs1NDYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZChNZWRpYVN0cmVhbVBy
aXZhdGUmIHN0cmVhbSkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhbmNl
bExvYWQoKQogewotICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkaW5n
IHx8IG1fbmV0d29ya1N0YXRlID09IE1lZGlhUGxheWVyOjpMb2FkZWQpCisgICAgaWYgKG1fbmV0
d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGluZyB8fCBtX25ldHdv
cmtTdGF0ZSA9PSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChtX3BpcGVsaW5lKQpAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjYW5jZWxMb2FkKCkKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwcmVwYXJlVG9QbGF5KCkKIHsKICAgICBHU1RfREVCVUdfT0JKRUNU
KHBpcGVsaW5lKCksICJQcmVwYXJlIHRvIHBsYXkiKTsKLSAgICBtX3ByZWxvYWQgPSBNZWRpYVBs
YXllcjo6QXV0bzsKKyAgICBtX3ByZWxvYWQgPSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6QXV0bzsK
ICAgICBpZiAobV9pc0RlbGF5aW5nTG9hZCkgewogICAgICAgICBtX2lzRGVsYXlpbmdMb2FkID0g
ZmFsc2U7CiAgICAgICAgIGNvbW1pdExvYWQoKTsKQEAgLTU3MywxMSArNTczLDExIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF5KCkKICAgICBpZiAoY2hhbmdlUGlwZWxp
bmVTdGF0ZShHU1RfU1RBVEVfUExBWUlORykpIHsKICAgICAgICAgbV9pc0VuZFJlYWNoZWQgPSBm
YWxzZTsKICAgICAgICAgbV9pc0RlbGF5aW5nTG9hZCA9IGZhbHNlOwotICAgICAgICBtX3ByZWxv
YWQgPSBNZWRpYVBsYXllcjo6QXV0bzsKKyAgICAgICAgbV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6
OlByZWxvYWQ6OkF1dG87CiAgICAgICAgIHVwZGF0ZURvd25sb2FkQnVmZmVyaW5nRmxhZygpOwog
ICAgICAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXkiKTsKICAgICB9IGVsc2UK
LSAgICAgICAgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6RW1wdHkpOworICAgICAgICBsb2Fk
aW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5KTsKIH0KIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhdXNlKCkKQEAgLTU5MSw3ICs1OTEsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2UoKQogICAgIGlmIChjaGFuZ2VQ
aXBlbGluZVN0YXRlKEdTVF9TVEFURV9QQVVTRUQpKQogICAgICAgICBHU1RfSU5GT19PQkpFQ1Qo
cGlwZWxpbmUoKSwgIlBhdXNlIik7CiAgICAgZWxzZQotICAgICAgICBsb2FkaW5nRmFpbGVkKE1l
ZGlhUGxheWVyOjpFbXB0eSk7CisgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5l
dHdvcmtTdGF0ZTo6RW1wdHkpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6cGF1c2VkKCkgY29uc3QKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6c2Vlayhjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkKICAgICAgICAg
ICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIltTZWVrXSByZXNldCBwaXBlbGluZSIp
OwogICAgICAgICAgICAgbV9zaG91bGRSZXNldFBpcGVsaW5lID0gdHJ1ZTsKICAgICAgICAgICAg
IGlmICghY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKSkKLSAgICAgICAgICAg
ICAgICBsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpFbXB0eSk7CisgICAgICAgICAgICAgICAg
bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSk7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyBXZSBjYW4gc2VlayBub3cuCkBAIC04MDgsMTMg
KzgwOCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UHJlc2VydmVz
UGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQpCiB7CiAgICAgR1NU
X0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiU2V0dGluZyBwcmVsb2FkIHRvICVzIiwgY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcocHJlbG9hZCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgaWYgKHBy
ZWxvYWQgPT0gTWVkaWFQbGF5ZXI6OkF1dG8gJiYgbV9pc0xpdmVTdHJlYW0pCisgICAgaWYgKHBy
ZWxvYWQgPT0gTWVkaWFQbGF5ZXI6OlByZWxvYWQ6OkF1dG8gJiYgbV9pc0xpdmVTdHJlYW0pCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fcHJlbG9hZCA9IHByZWxvYWQ7CiAgICAgdXBkYXRlRG93
bmxvYWRCdWZmZXJpbmdGbGFnKCk7CiAKLSAgICBpZiAobV9pc0RlbGF5aW5nTG9hZCAmJiBtX3By
ZWxvYWQgIT0gTWVkaWFQbGF5ZXI6Ok5vbmUpIHsKKyAgICBpZiAobV9pc0RlbGF5aW5nTG9hZCAm
JiBtX3ByZWxvYWQgIT0gTWVkaWFQbGF5ZXI6OlByZWxvYWQ6Ok5vbmUpIHsKICAgICAgICAgbV9p
c0RlbGF5aW5nTG9hZCA9IGZhbHNlOwogICAgICAgICBjb21taXRMb2FkKCk7CiAgICAgfQpAQCAt
MTk4MiwyMyArMTk4MiwyMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFu
ZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogCiAgICAgICAgIEdTVF9ERUJVR19CSU5f
VE9fRE9UX0ZJTEVfV0lUSF9UUyhHU1RfQklOKG1fcGlwZWxpbmUuZ2V0KCkpLCBHU1RfREVCVUdf
R1JBUEhfU0hPV19BTEwsICJ3ZWJraXQtdmlkZW8uZXJyb3IiKTsKIAotICAgICAgICBlcnJvciA9
IE1lZGlhUGxheWVyOjpFbXB0eTsKKyAgICAgICAgZXJyb3IgPSBNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnIuZ2V0KCksIEdT
VF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNfTk9UX0ZPVU5EKQogICAgICAg
ICAgICAgfHwgZ19lcnJvcl9tYXRjaGVzKGVyci5nZXQoKSwgR1NUX1NUUkVBTV9FUlJPUiwgR1NU
X1NUUkVBTV9FUlJPUl9XUk9OR19UWVBFKQogICAgICAgICAgICAgfHwgZ19lcnJvcl9tYXRjaGVz
KGVyci5nZXQoKSwgR1NUX1NUUkVBTV9FUlJPUiwgR1NUX1NUUkVBTV9FUlJPUl9GQUlMRUQpCiAg
ICAgICAgICAgICB8fCBnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1RfQ09SRV9FUlJPUiwg
R1NUX0NPUkVfRVJST1JfTUlTU0lOR19QTFVHSU4pCiAgICAgICAgICAgICB8fCBnX2Vycm9yX21h
dGNoZXMoZXJyLmdldCgpLCBHU1RfUkVTT1VSQ0VfRVJST1IsIEdTVF9SRVNPVVJDRV9FUlJPUl9O
T1RfRk9VTkQpKQotICAgICAgICAgICAgZXJyb3IgPSBNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3I7
CisgICAgICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVy
cm9yOwogICAgICAgICBlbHNlIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1RfU1RS
RUFNX0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX1RZUEVfTk9UX0ZPVU5EKSkgewogICAgICAgICAg
ICAgLy8gTGV0IHRoZSBtZWRpYVBsYXllckNsaWVudCBoYW5kbGUgdGhlIHN0cmVhbSBlcnJvciwg
aW4gdGhpcyBjYXNlIHRoZSBIVE1MTWVkaWFFbGVtZW50IHdpbGwgZW1pdCBhIHN0YWxsZWQgZXZl
bnQuCiAgICAgICAgICAgICBHU1RfRVJST1IoIkRlY29kZSBlcnJvciwgbGV0IHRoZSBNZWRpYSBl
bGVtZW50IGVtaXQgYSBzdGFsbGVkIGV2ZW50LiIpOwogICAgICAgICAgICAgbV9sb2FkaW5nU3Rh
bGxlZCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSBlbHNlIGlmIChlcnIt
PmRvbWFpbiA9PSBHU1RfU1RSRUFNX0VSUk9SKSB7Ci0gICAgICAgICAgICBlcnJvciA9IE1lZGlh
UGxheWVyOjpEZWNvZGVFcnJvcjsKKyAgICAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5l
dHdvcmtTdGF0ZTo6RGVjb2RlRXJyb3I7CiAgICAgICAgICAgICBhdHRlbXB0TmV4dExvY2F0aW9u
ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmIChlcnItPmRvbWFpbiA9PSBHU1RfUkVTT1VSQ0Vf
RVJST1IpCi0gICAgICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3b3JrRXJyb3I7Cisg
ICAgICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJv
cjsKIAogICAgICAgICBpZiAoYXR0ZW1wdE5leHRMb2NhdGlvbikKICAgICAgICAgICAgIGlzc3Vl
RXJyb3IgPSAhbG9hZE5leHRMb2NhdGlvbigpOwpAQCAtMjA0OCw3ICsyMDQ4LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVz
c2FnZSkKICAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShyZXF1ZXN0
ZWRTdGF0ZSkpOwogICAgICAgICAgICAgbV9yZXF1ZXN0ZWRTdGF0ZSA9IHJlcXVlc3RlZFN0YXRl
OwogICAgICAgICAgICAgaWYgKCFjaGFuZ2VQaXBlbGluZVN0YXRlKHJlcXVlc3RlZFN0YXRlKSkK
LSAgICAgICAgICAgICAgICBsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpFbXB0eSk7CisgICAg
ICAgICAgICAgICAgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0
eSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9DTE9D
S19MT1NUOgpAQCAtMjUzMSwxMiArMjUzMSwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgLy8gVXBkYXRlIHJlYWR5IGFuZCBuZXR3
b3JrIHN0YXRlcy4KICAgICAgICAgc3dpdGNoIChtX2N1cnJlbnRTdGF0ZSkgewogICAgICAgICBj
YXNlIEdTVF9TVEFURV9OVUxMOgotICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5
ZXI6OkhhdmVOb3RoaW5nOwotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXll
cjo6RW1wdHk7CisgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZTo6SGF2ZU5vdGhpbmc7CisgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgR1NUX1NUQVRFX1JFQURZOgotICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5
ZXI6OkhhdmVNZXRhZGF0YTsKLSAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5
ZXI6OkVtcHR5OworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGU6OkhhdmVNZXRhZGF0YTsKKyAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQ
bGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBHU1RfU1RBVEVfUEFVU0VEOgogICAgICAgICBjYXNlIEdTVF9TVEFURV9QTEFZSU5HOgpA
QCAtMjU0NCwxOCArMjU0NCwxOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
dXBkYXRlU3RhdGVzKCkKICAgICAgICAgICAgICAgICBpZiAobV9idWZmZXJpbmdQZXJjZW50YWdl
ID09IDEwMCkgewogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5l
KCksICJbQnVmZmVyaW5nXSBDb21wbGV0ZS4iKTsKICAgICAgICAgICAgICAgICAgICAgbV9pc0J1
ZmZlcmluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRp
YVBsYXllcjo6SGF2ZUVub3VnaERhdGE7Ci0gICAgICAgICAgICAgICAgICAgIG1fbmV0d29ya1N0
YXRlID0gbV9kaWREb3dubG9hZEZpbmlzaCA/IE1lZGlhUGxheWVyOjpJZGxlIDogTWVkaWFQbGF5
ZXI6OkxvYWRpbmc7CisgICAgICAgICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YTsKKyAgICAgICAgICAgICAgICAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBtX2RpZERvd25sb2FkRmluaXNoID8gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZTo6SWRsZSA6IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRpbmc7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVk
aWFQbGF5ZXI6OkhhdmVDdXJyZW50RGF0YTsKLSAgICAgICAgICAgICAgICAgICAgbV9uZXR3b3Jr
U3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKKyAgICAgICAgICAgICAgICAgICAgbV9yZWFk
eVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
OjpMb2FkaW5nOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9k
aWREb3dubG9hZEZpbmlzaCkgewotICAgICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlh
UGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKLSAgICAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9
IE1lZGlhUGxheWVyOjpMb2FkZWQ7CisgICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVFbm91Z2hEYXRhOworICAgICAgICAgICAgICAgIG1f
bmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGVkOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXll
cjo6SGF2ZUZ1dHVyZURhdGE7Ci0gICAgICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRp
YVBsYXllcjo6TG9hZGluZzsKKyAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGE7CisgICAgICAgICAgICAgICAgbV9uZXR3
b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkaW5nOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBicmVhazsKQEAgLTI2MTksOSArMjYxOSw5IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICB1cGRhdGVE
b3dubG9hZEJ1ZmZlcmluZ0ZsYWcoKTsKIAogICAgICAgICBpZiAobV9jdXJyZW50U3RhdGUgPT0g
R1NUX1NUQVRFX1JFQURZKQotICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6
OkhhdmVOb3RoaW5nOworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGU6OkhhdmVOb3RoaW5nOwogICAgICAgICBlbHNlIGlmIChtX2N1cnJlbnRTdGF0ZSA9
PSBHU1RfU1RBVEVfUEFVU0VEKSB7Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBs
YXllcjo6SGF2ZUVub3VnaERhdGE7CisgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUVub3VnaERhdGE7CiAgICAgICAgICAgICBtX2lzUGF1c2Vk
ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnRTdGF0ZSA9PSBHU1RfU1RBVEVf
UExBWUlORykKICAgICAgICAgICAgIG1faXNQYXVzZWQgPSBmYWxzZTsKQEAgLTI2MjksNyArMjYy
OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQog
ICAgICAgICBpZiAoIW1faXNQYXVzZWQgJiYgbV9wbGF5YmFja1JhdGUpCiAgICAgICAgICAgICBj
aGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QTEFZSU5HKTsKIAotICAgICAgICBtX25ldHdv
cmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOworICAgICAgICBtX25ldHdvcmtTdGF0ZSA9
IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRpbmc7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIkVsc2UgOiAl
ZCIsIGdldFN0YXRlUmVzdWx0KTsKQEAgLTI3NDEsOSArMjc0MSw5IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAgICAgIEdTVF9J
TkZPX09CSkVDVChwaXBlbGluZSgpLCAiTmV3IG1lZGlhIHVybDogJXMiLCBuZXdVcmwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgIC8vIFJlc2V0IHBsYXllciBzdGF0ZXMu
Ci0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOworICAg
ICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2Fk
aW5nOwogICAgICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKLSAgICAg
ICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKyAgICAgICAg
ICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsK
ICAgICAgICAgICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogCiAgICAgICAgICAg
ICAvLyBSZXNldCBwaXBlbGluZSBzdGF0ZS4KQEAgLTI3OTYsNyArMjc5Niw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zCiAKIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHJl
c3VsdCA9IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIHJlc3VsdCA9IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9y
dGVkOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgLy8gTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFIGlzIGluIGNoYXJnZSBvZiBtZWRpYXNvdXJjZSBwbGF5YmFjaywgbm90IHVz
LgogICAgIGlmIChwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCkBAIC0yODE3LDcgKzI4MTcsNyBA
QCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRQogICAgIGlmIChnc3RSZWdpc3RyeVNjYW5uZXIuaXND
b250YWluZXJUeXBlU3VwcG9ydGVkKGNvbnRhaW5lclR5cGUpKSB7CiAgICAgICAgIC8vIFNwZWMg
c2F5cyB3ZSBzaG91bGQgbm90IHJldHVybiAicHJvYmFibHkiIGlmIHRoZSBjb2RlY3Mgc3RyaW5n
IGlzIGVtcHR5LgogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjb2RlY3MgPSBwYXJhbWV0ZXJzLnR5
cGUuY29kZWNzKCk7Ci0gICAgICAgIHJlc3VsdCA9IGNvZGVjcy5pc0VtcHR5KCkgPyBNZWRpYVBs
YXllcjo6TWF5QmVTdXBwb3J0ZWQgOiAoZ3N0UmVnaXN0cnlTY2FubmVyLmFyZUFsbENvZGVjc1N1
cHBvcnRlZChjb2RlY3MpID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6
OklzTm90U3VwcG9ydGVkKTsKKyAgICAgICAgcmVzdWx0ID0gY29kZWNzLmlzRW1wdHkoKSA/IE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkIDogKGdzdFJlZ2lzdHJ5U2Nh
bm5lci5hcmVBbGxDb2RlY3NTdXBwb3J0ZWQoY29kZWNzKSA/IE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGU6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBw
b3J0ZWQpOwogICAgIH0KIAogICAgIGF1dG8gZmluYWxSZXN1bHQgPSBleHRlbmRlZFN1cHBvcnRz
VHlwZShwYXJhbWV0ZXJzLCByZXN1bHQpOwpAQCAtMjgzNiwxMiArMjgzNiwxMiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlRG93bmxvYWRCdWZmZXJpbmdGbGFnKCkK
ICAgICB1bnNpZ25lZCBmbGFnRG93bmxvYWQgPSBnZXRHc3RQbGF5RmxhZygiZG93bmxvYWQiKTsK
IAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gc3RvcCBkb3dubG9hZGluZyBpZiB3ZSBhbHJlYWR5
IHN0YXJ0ZWQgaXQuCi0gICAgaWYgKGZsYWdzICYgZmxhZ0Rvd25sb2FkICYmIG1fcmVhZHlTdGF0
ZSA+IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZyAmJiAhbV9zaG91bGRSZXNldFBpcGVsaW5lKSB7
CisgICAgaWYgKGZsYWdzICYgZmxhZ0Rvd25sb2FkICYmIG1fcmVhZHlTdGF0ZSA+IE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZyAmJiAhbV9zaG91bGRSZXNldFBpcGVsaW5lKSB7
CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIkRvd25sb2FkIGFscmVhZHkg
c3RhcnRlZCwgbm90IHN0YXJ0aW5nIGFnYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBib29sIHNob3VsZERvd25sb2FkID0gIW1faXNMaXZlU3RyZWFtICYmIG1fcHJlbG9hZCA9
PSBNZWRpYVBsYXllcjo6QXV0bzsKKyAgICBib29sIHNob3VsZERvd25sb2FkID0gIW1faXNMaXZl
U3RyZWFtICYmIG1fcHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6QXV0bzsKICAgICBp
ZiAoc2hvdWxkRG93bmxvYWQpIHsKICAgICAgICAgR1NUX0lORk9fT0JKRUNUKHBpcGVsaW5lKCks
ICJFbmFibGluZyBvbi1kaXNrIGJ1ZmZlcmluZyIpOwogICAgICAgICBnX29iamVjdF9zZXQobV9w
aXBlbGluZS5nZXQoKSwgImZsYWdzIiwgZmxhZ3MgfCBmbGFnRG93bmxvYWQsIG51bGxwdHIpOwpA
QCAtMzM3MywxMyArMzM3MywxMyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIAogTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptb3ZpZUxvYWRUeXBlKCkgY29uc3QKIHsKLSAg
ICBpZiAobV9yZWFkeVN0YXRlID09IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykKLSAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpVbmtub3duOworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKQorICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6Ok1vdmllTG9hZFR5cGU6OlVua25vd247CiAKICAgICBpZiAobV9pc0xpdmVTdHJlYW0p
Ci0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbTsKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpMaXZlU3RyZWFtOwogCi0gICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpEb3dubG9hZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5
cGU6OkRvd25sb2FkOwogfQogCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAxNTJjMDkzNWRiNzI4YjYxY2Fi
ZjAzYWYxYmQ4OTE1NjYwNDFiMTEzLi5mOWM0N2ExZjYwMTI0Yjk4YmZjY2JhZTFjNzNhNGEwNDUx
ODUzOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CkBAIC0zMDksNyArMzA5LDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICAgICB2b2lkIHRpbWVD
aGFuZ2VkKCk7Ci0gICAgdm9pZCBsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGUsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nLCBi
b29sIGZvcmNlTm90aWZpY2F0aW9ucyA9IGZhbHNlKTsKKyAgICB2b2lkIGxvYWRpbmdGYWlsZWQo
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgPSBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcsIGJvb2wgZm9yY2VOb3RpZmljYXRpb25z
ID0gZmFsc2UpOwogICAgIHZvaWQgbG9hZFN0YXRlQ2hhbmdlZCgpOwogCiAjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQpAQCAtMzQ3LDggKzM0Nyw4IEBAIHByb3RlY3RlZDoKICAgICBHUmVmUHRy
PEdzdEVsZW1lbnQ+IG1fcGlwZWxpbmU7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGUgeyBNZWRpYVBsYXllcjo6SGF2ZU5vdGhp
bmcgfTsKLSAgICBtdXRhYmxlIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3Rh
dGUgeyBNZWRpYVBsYXllcjo6RW1wdHkgfTsKKyAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBt
X3JlYWR5U3RhdGUgeyBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcgfTsKKyAg
ICBtdXRhYmxlIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGUgeyBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSB9OwogCiAgICAgbXV0YWJsZSBMb2NrIG1fc2Ft
cGxlTXV0ZXg7CiAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IG1fc2FtcGxlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4
IGRjMjQ1YjQ3ZGUzZGU3MmZhYzIzNjcyZTVmNmVmZDRiMzc2MjliNGIuLjgyMDE1NWU1NGQ4ODdl
NTE2N2EzNDBhZGQzYzRiMzFkNDk2ZTU2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKQEAgLTU4LDExICs1OCwxMSBA
QAogc3RhdGljIGNvbnN0IGNoYXIqIGR1bXBSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCiB7CiAgICAgc3dpdGNoIChyZWFkeVN0YXRlKSB7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc6IHJldHVybiAiSGF2ZU5v
dGhpbmciOwotICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTogcmV0
dXJuICJIYXZlTWV0YWRhdGEiOwotICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkhhdmVD
dXJyZW50RGF0YTogcmV0dXJuICJIYXZlQ3VycmVudERhdGEiOwotICAgIGNhc2UgV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6OkhhdmVGdXR1cmVEYXRhOiByZXR1cm4gIkhhdmVGdXR1cmVEYXRhIjsKLSAg
ICBjYXNlIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTogcmV0dXJuICJIYXZl
RW5vdWdoRGF0YSI7CisgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6
SGF2ZU5vdGhpbmc6IHJldHVybiAiSGF2ZU5vdGhpbmciOworICAgIGNhc2UgV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YTogcmV0dXJuICJIYXZlTWV0YWRhdGEi
OworICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50
RGF0YTogcmV0dXJuICJIYXZlQ3VycmVudERhdGEiOworICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVGdXR1cmVEYXRhOiByZXR1cm4gIkhhdmVGdXR1cmVEYXRh
IjsKKyAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdo
RGF0YTogcmV0dXJuICJIYXZlRW5vdWdoRGF0YSI7CiAgICAgZGVmYXVsdDogcmV0dXJuICIodW5r
bm93bikiOwogICAgIH0KIH0KQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6bG9hZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKICAgICBp
ZiAoIXVybFN0cmluZy5zdGFydHNXaXRoKCJtZWRpYXNvdXJjZSIpKSB7CiAgICAgICAgIC8vIFBy
b3Blcmx5IGZhaWwgc28gdGhlIGdsb2JhbCBNZWRpYVBsYXllciB0cmllcyB0byBmYWxsYmFjayB0
byB0aGUgbmV4dCBNZWRpYVBsYXllclByaXZhdGUuCi0gICAgICAgIG1fbmV0d29ya1N0YXRlID0g
TWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yOworICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlh
UGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yOwogICAgICAgICBtX3BsYXllci0+bmV0
d29ya1N0YXRlQ2hhbmdlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjcwLDcgKzI3
MCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpkb1NlZWsoKQogICAg
ICAgICAgICAgbV9zaG91bGRSZXNldFBpcGVsaW5lID0gdHJ1ZTsKICAgICAgICAgICAgIG1faXNT
ZWVraW5nID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIWNoYW5nZVBpcGVsaW5lU3RhdGUoR1NU
X1NUQVRFX1BBVVNFRCkpCi0gICAgICAgICAgICAgICAgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXll
cjo6RW1wdHkpOworICAgICAgICAgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5l
dHdvcmtTdGF0ZTo6RW1wdHkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1f
aXNTZWVraW5nID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzA0LDcgKzMwNCw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpkb1NlZWsoKQogICAgICAgICAgICAgbV9pc1Nl
ZWtpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOworICAgICAgICBt
X3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhOwogICAg
ICAgICBub3RpZnlTZWVrTmVlZHNEYXRhRm9yVGltZShzZWVrVGltZSk7CiAgICAgICAgIEFTU0VS
VCghbV9tc2VTZWVrQ29tcGxldGVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00MDUsMTIg
KzQwNSwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c2V0UmVhZHlT
dGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgR1NUX0RFQlVHKCJSZWFkeSBTdGF0ZSBDaGFuZ2VkIG1hbnVhbGx5IGZyb20gJXUg
dG8gJXUiLCBtX3JlYWR5U3RhdGUsIHJlYWR5U3RhdGUpOworICAgIEdTVF9ERUJVRygiUmVhZHkg
U3RhdGUgQ2hhbmdlZCBtYW51YWxseSBmcm9tICV1IHRvICV1Iiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fcmVhZHlTdGF0ZSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFkeVN0YXRlKSk7CiAg
ICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgb2xkUmVhZHlTdGF0ZSA9IG1fcmVhZHlTdGF0ZTsK
ICAgICBtX3JlYWR5U3RhdGUgPSByZWFkeVN0YXRlOwogICAgIEdTVF9ERUJVRygibV9yZWFkeVN0
YXRlOiAlcyAtPiAlcyIsIGR1bXBSZWFkeVN0YXRlKG9sZFJlYWR5U3RhdGUpLCBkdW1wUmVhZHlT
dGF0ZShtX3JlYWR5U3RhdGUpKTsKIAotICAgIGlmIChvbGRSZWFkeVN0YXRlIDwgTWVkaWFQbGF5
ZXI6OkhhdmVDdXJyZW50RGF0YSAmJiBtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkhhdmVD
dXJyZW50RGF0YSkgeworICAgIGlmIChvbGRSZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGU6OkhhdmVDdXJyZW50RGF0YSAmJiBtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkgewogICAgICAgICBHU1RfREVCVUcoIltTZWVrXSBS
ZXBvcnRpbmcgbG9hZCBzdGF0ZSBjaGFuZ2VkIHRvIHRyaWdnZXIgc2VlayBjb250aW51YXRpb24i
KTsKICAgICAgICAgbG9hZFN0YXRlQ2hhbmdlZCgpOwogICAgIH0KQEAgLTQyMCw3ICs0MjAsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeQogICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGdldFN0
YXRlUmVzdWx0ID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksICZwaXBl
bGluZVN0YXRlLCBudWxscHRyLCAyNTAgKiBHU1RfTlNFQ09ORCk7CiAgICAgYm9vbCBpc1BsYXlp
bmcgPSAoZ2V0U3RhdGVSZXN1bHQgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTICYmIHBpcGVs
aW5lU3RhdGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcpOwogCi0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9
PSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhICYmIG9sZFJlYWR5U3RhdGUgPiBNZWRpYVBsYXll
cjo6SGF2ZU1ldGFkYXRhICYmIGlzUGxheWluZykgeworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0g
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSAmJiBvbGRSZWFkeVN0YXRlID4g
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSAmJiBpc1BsYXlpbmcpIHsKICAg
ICAgICAgR1NUX1RSQUNFKCJDaGFuZ2luZyBwaXBlbGluZSB0byBQQVVTRUQuLi4iKTsKICAgICAg
ICAgYm9vbCBvayA9IGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNFRCk7CiAgICAg
ICAgIEdTVF9UUkFDRSgiQ2hhbmdlZCBwaXBlbGluZSB0byBQQVVTRUQ6ICVzIiwgb2sgPyAiU3Vj
Y2VzcyIgOiAiRXJyb3IiKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6c2Vla0NvbXBsZXRlZCgpCiAKICAgICBkb1NlZWsoKTsKIAotICAg
IGlmICghc2Vla2luZygpICYmIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2ZUZ1dHVy
ZURhdGEpCisgICAgaWYgKCFzZWVraW5nKCkgJiYgbV9yZWFkeVN0YXRlID49IE1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlOjpIYXZlRnV0dXJlRGF0YSkKICAgICAgICAgY2hhbmdlUGlwZWxpbmVTdGF0
ZShHU1RfU1RBVEVfUExBWUlORyk7CiAKICAgICBpZiAoIXNlZWtpbmcoKSkKQEAgLTUwNiwyNiAr
NTA2LDI2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjp1cGRhdGVTdGF0
ZXMoKQogICAgICAgICAvLyBVcGRhdGUgcmVhZHkgYW5kIG5ldHdvcmsgc3RhdGVzLgogICAgICAg
ICBzd2l0Y2ggKHN0YXRlKSB7CiAgICAgICAgIGNhc2UgR1NUX1NUQVRFX05VTEw6Ci0gICAgICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisgICAgICAgICAg
ICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiAg
ICAgICAgICAgICBHU1RfREVCVUcoIm1fcmVhZHlTdGF0ZT0lcyIsIGR1bXBSZWFkeVN0YXRlKG1f
cmVhZHlTdGF0ZSkpOwotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6
RW1wdHk7CisgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGU6OkVtcHR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR1NUX1NUQVRF
X1JFQURZOgotICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRh
ZGF0YTsKKyAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
OjpIYXZlTWV0YWRhdGE7CiAgICAgICAgICAgICBHU1RfREVCVUcoIm1fcmVhZHlTdGF0ZT0lcyIs
IGR1bXBSZWFkeVN0YXRlKG1fcmVhZHlTdGF0ZSkpOwotICAgICAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBNZWRpYVBsYXllcjo6RW1wdHk7CisgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgR1NUX1NUQVRFX1BBVVNFRDoKICAgICAgICAgY2FzZSBHU1RfU1RBVEVfUExBWUlO
RzoKICAgICAgICAgICAgIGlmIChzZWVraW5nKCkpIHsKLSAgICAgICAgICAgICAgICBtX3JlYWR5
U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOworICAgICAgICAgICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGE7CiAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBtYW5hZ2UgTmV0d29ya1N0YXRlIHRvbz8KICAg
ICAgICAgICAgICAgICBHU1RfREVCVUcoIm1fcmVhZHlTdGF0ZT0lcyIsIGR1bXBSZWFkeVN0YXRl
KG1fcmVhZHlTdGF0ZSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBp
ZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OkhhdmVGdXR1cmVEYXRhKQotICAgICAgICAg
ICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUZ1dHVyZURhdGE7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
OjpIYXZlRnV0dXJlRGF0YSkKKyAgICAgICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVGdXR1cmVEYXRhOwogICAgICAgICAgICAgICAgIEdT
VF9ERUJVRygibV9yZWFkeVN0YXRlPSVzIiwgZHVtcFJlYWR5U3RhdGUobV9yZWFkeVN0YXRlKSk7
Ci0gICAgICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsK
KyAgICAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkxvYWRpbmc7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtX2Vvc01hcmtl
ZCAmJiBzdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlORykKQEAgLTU4MSwxMCArNTgxLDEwIEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjp1cGRhdGVTdGF0ZXMoKQogICAgICAg
ICBtX2lzTGl2ZVN0cmVhbSA9IHRydWU7CiAKICAgICAgICAgaWYgKHN0YXRlID09IEdTVF9TVEFU
RV9SRUFEWSkgewotICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVO
b3RoaW5nOworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGU6OkhhdmVOb3RoaW5nOwogICAgICAgICAgICAgR1NUX0RFQlVHKCJtX3JlYWR5U3RhdGU9JXMi
LCBkdW1wUmVhZHlTdGF0ZShtX3JlYWR5U3RhdGUpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGF0
ZSA9PSBHU1RfU1RBVEVfUEFVU0VEKSB7Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRp
YVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CisgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUVub3VnaERhdGE7CiAgICAgICAgICAgICBHU1RfREVC
VUcoIm1fcmVhZHlTdGF0ZT0lcyIsIGR1bXBSZWFkeVN0YXRlKG1fcmVhZHlTdGF0ZSkpOwogICAg
ICAgICAgICAgbV9pc1BhdXNlZCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT0g
R1NUX1NUQVRFX1BMQVlJTkcpCkBAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIGlmICghbV9pc1BhdXNl
ZCAmJiBtX3BsYXliYWNrUmF0ZSkKICAgICAgICAgICAgIGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NU
X1NUQVRFX1BMQVlJTkcpOwogCi0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6
OkxvYWRpbmc7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZTo6TG9hZGluZzsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR1NU
X0RFQlVHKCJFbHNlIDogJWQiLCBnZXRTdGF0ZVJlc3VsdCk7CkBAIC02MDYsMTEgKzYwNiwxMSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6dXBkYXRlU3RhdGVzKCkKICAg
ICAgICAgbV9wbGF5ZXItPnBsYXliYWNrU3RhdGVDaGFuZ2VkKCk7CiAKICAgICBpZiAobV9uZXR3
b3JrU3RhdGUgIT0gb2xkTmV0d29ya1N0YXRlKSB7Ci0gICAgICAgIEdTVF9ERUJVRygiTmV0d29y
ayBTdGF0ZSBDaGFuZ2VkIGZyb20gJXUgdG8gJXUiLCBvbGROZXR3b3JrU3RhdGUsIG1fbmV0d29y
a1N0YXRlKTsKKyAgICAgICAgR1NUX0RFQlVHKCJOZXR3b3JrIFN0YXRlIENoYW5nZWQgZnJvbSAl
dSB0byAldSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvbGROZXR3b3JrU3RhdGUpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV9uZXR3b3JrU3RhdGUpKTsKICAgICAgICAgbV9wbGF5ZXItPm5ldHdv
cmtTdGF0ZUNoYW5nZWQoKTsKICAgICB9CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBvbGRSZWFk
eVN0YXRlKSB7Ci0gICAgICAgIEdTVF9ERUJVRygiUmVhZHkgU3RhdGUgQ2hhbmdlZCBmcm9tICV1
IHRvICV1Iiwgb2xkUmVhZHlTdGF0ZSwgbV9yZWFkeVN0YXRlKTsKKyAgICAgICAgR1NUX0RFQlVH
KCJSZWFkeSBTdGF0ZSBDaGFuZ2VkIGZyb20gJXUgdG8gJXUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ob2xkUmVhZHlTdGF0ZSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3JlYWR5U3RhdGUpKTsK
ICAgICAgICAgbV9wbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC03MTks
NyArNzE5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmdldFN1cHBv
cnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2UKIAogTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzVHlwZShjb25z
dCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgcmVzdWx0ID0gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVk
OworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgcmVzdWx0ID0gTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmlzTWVkaWFT
b3VyY2UpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKQEAgLTcyNyw3ICs3MjcsNyBAQCBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3Vw
cG9ydHNUeXBlKGNvbnN0IE1lZAogCiAgICAgLy8gWW91VHViZSBUViBwcm92aWRlcyBlbXB0eSB0
eXBlcyBmb3Igc29tZSB2aWRlb3MgYW5kIHdlIHdhbnQgdG8gYmUgc2VsZWN0ZWQgYXMgYmVzdCBt
ZWRpYSBlbmdpbmUgZm9yIHRoZW0uCiAgICAgaWYgKGNvbnRhaW5lclR5cGUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIHJlc3VsdCA9IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKyAgICAgICAg
cmVzdWx0ID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQ7CiAgICAg
ICAgIEdTVF9ERUJVRygibWltZS10eXBlIFwiJXNcIiBzdXBwb3J0ZWQ6ICVzIiwgcGFyYW1ldGVy
cy50eXBlLnJhdygpLnV0ZjgoKS5kYXRhKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHJl
c3VsdCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAt
NzM3LDcgKzczNyw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkCiAgICAgLy8gU3BlYyBzYXlz
IHdlIHNob3VsZCBub3QgcmV0dXJuICJwcm9iYWJseSIgaWYgdGhlIGNvZGVjcyBzdHJpbmcgaXMg
ZW1wdHkuCiAgICAgaWYgKGdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoY29udGFpbmVyVHlwZSkpIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY29kZWNzID0gcGFy
YW1ldGVycy50eXBlLmNvZGVjcygpOwotICAgICAgICByZXN1bHQgPSBjb2RlY3MuaXNFbXB0eSgp
ID8gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogKGdzdFJlZ2lzdHJ5U2Nhbm5lci5hcmVB
bGxDb2RlY3NTdXBwb3J0ZWQoY29kZWNzKSA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1l
ZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZCk7CisgICAgICAgIHJlc3VsdCA9IGNvZGVjcy5pc0Vt
cHR5KCkgPyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZCA6IChnc3RS
ZWdpc3RyeVNjYW5uZXIuYXJlQWxsQ29kZWNzU3VwcG9ydGVkKGNvZGVjcykgPyBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6
OklzTm90U3VwcG9ydGVkKTsKICAgICB9CiAKICAgICBhdXRvIGZpbmFsUmVzdWx0ID0gZXh0ZW5k
ZWRTdXBwb3J0c1R5cGUocGFyYW1ldGVycywgcmVzdWx0KTsKQEAgLTc2MCw4ICs3NjAsOCBAQCBN
ZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpjdXJyZW50TWVkaWFUaW1l
KCkgY29uc3QKICAgICBNZWRpYVRpbWUgcG9zaXRpb24gPSBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmN1cnJlbnRNZWRpYVRpbWUoKTsKIAogICAgIGlmIChtX2Vvc1BlbmRpbmcgJiYgcG9z
aXRpb24gPj0gZHVyYXRpb25NZWRpYVRpbWUoKSkgewotICAgICAgICBpZiAobV9uZXR3b3JrU3Rh
dGUgIT0gTWVkaWFQbGF5ZXI6OkxvYWRlZCkgewotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUg
PSBNZWRpYVBsYXllcjo6TG9hZGVkOworICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgIT0gTWVk
aWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGVkKSB7CisgICAgICAgICAgICBtX25ldHdvcmtT
dGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRlZDsKICAgICAgICAgICAgIG1f
cGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJp
dmF0ZUhvbGVQdW5jaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xl
cHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAppbmRleCAwZjA4YzE5ZGJkYmU2
OWIwNmY3Yjc1NTNmOGFiNDk3ZDQ3ZTM3N2E5Li5iOGM0ZTAxZmFkZjQxM2FkZGM3MTU0ZTFlYWYx
ZjViYjA1NTM2YTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9s
ZVB1bmNoLmNwcApAQCAtMTMxLDEyICsxMzEsMTIgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUUK
ICAgICAvLyBTcGVjIHNheXMgd2Ugc2hvdWxkIG5vdCByZXR1cm4gInByb2JhYmx5IiBpZiB0aGUg
Y29kZWNzIHN0cmluZyBpcyBlbXB0eS4KICAgICBpZiAoIWNvbnRhaW5lclR5cGUuaXNFbXB0eSgp
ICYmIG1pbWVUeXBlQ2FjaGUoKS5jb250YWlucyhjb250YWluZXJUeXBlKSkgewogICAgICAgICBp
ZiAocGFyYW1ldGVycy50eXBlLmNvZGVjcygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVy
biBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7CisgICAgICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQ7CiAKLSAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGU6OklzU3VwcG9ydGVkOwogICAgIH0KIAotICAgIHJldHVybiBNZWRpYVBsYXllcjo6
SXNOb3RTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Oklz
Tm90U3VwcG9ydGVkOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
b2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKaW5kZXggOGJmNzIxMzE4ODE5
YzQwMjY3YjcyMWZhOWI4MmFjMWNkOTI2ZjlkMi4uOWExMDg3ZDMyYjI1YjNjMzBkY2RkYmViNDAw
OGNhMDUwMDk1N2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guaApAQCAtNzYsOCArNzYsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHBhdXNlZCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9OwogCi0gICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6RW1w
dHk7IH07Ci0gICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7IH07CisgICAgTWVkaWFQbGF5
ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsgfTsKKyAgICBNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGU6OkhhdmVNZXRhZGF0YTsgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRp
bWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggNmQ2NGFlOWE2ZTNhNDE3ZmIxNGYxMjE2NmY2OGQzYzlh
NTUyNjZkZS4uYmJiYjQzMjJlZDNhNzViZjgxZDBiZjQ3NzYyZjA1MDgyYzM5NGJiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTY3LDgg
KzY3LDggQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24oTWVkaWFQbGF5ZXIKICAgICAsIG1faGFzVmlkZW8oZmFsc2Up
CiAgICAgLCBtX3ByZXBhcmluZ1RvUGxheShmYWxzZSkKICAgICAsIG1fdm9sdW1lKDEuMCkKLSAg
ICAsIG1fbmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpFbXB0eSkKLSAgICAsIG1fcmVhZHlTdGF0
ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCisgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSkKKyAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcpCiB7CiAgICAgY3JlYXRlU2Vzc2lvbigpOwogfQpA
QCAtMTI2LDEyICsxMjYsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUMKIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzdXBwb3J0
c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsK
ICAgICBpZiAocGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogCiAgICAgaWYgKG1pbWVUeXBlQ2FjaGUoKS5jb250
YWlucyhwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGU6OklzU3VwcG9ydGVkOwogCi0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1
cHBvcnRlZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBw
b3J0ZWQ7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpsb2Fk
KGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtMTQzLDkgKzE0Myw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogCiAgICAgc3Rh
cnRDcmVhdGVNZWRpYVNvdXJjZSh1cmwpOwogCi0gICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBs
YXllcjo6TG9hZGluZzsKKyAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGU6OkxvYWRpbmc7CiAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKLSAg
ICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisgICAgbV9yZWFkeVN0
YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOwogICAgIG1fcGxheWVy
LT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogfQogCkBAIC03MzEsMTUgKzczMSwxNSBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6dXBkYXRlUmVhZHlTdGF0ZSgpCiAKICAg
ICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBvbGRSZWFkeVN0YXRlID0gbV9yZWFkeVN0YXRlOwog
ICAgIGlmIChwZXJjZW50YWdlT2ZQbGF5YmFja0J1ZmZlckZpbGxlZCA+PSAxMDApIHsKLSAgICAg
ICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOworICAgICAgICBt
X3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUVub3VnaERhdGE7CiAg
ICAgICAgIGlmIChtX3ByZXBhcmluZ1RvUGxheSkgewogICAgICAgICAgICAgcGF1c2UoKTsKICAg
ICAgICAgICAgIG1fcHJlcGFyaW5nVG9QbGF5ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKHBlcmNlbnRhZ2VPZlBsYXliYWNrQnVmZmVyRmlsbGVkID4gMCkKLSAgICAgICAgbV9y
ZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVGdXR1cmVEYXRhOworICAgICAgICBtX3JlYWR5
U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGE7CiAgICAgZWxz
ZQotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhOwor
ICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJl
bnREYXRhOwogCiAgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBvbGRSZWFkeVN0YXRlKQogICAgICAg
ICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKQEAgLTc5OSw3ICs3OTksNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6b25TZXNzaW9uU3RhcnRlZCgpCiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpvblNlc3Npb25FbmRlZCgp
CiB7Ci0gICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkOworICAgIG1fbmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGVkOwogICAgIG1fcGxh
eWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAKICAgICBtX3BhdXNlZCA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNjAwZTZiM2Y4YjAyNmRmMTAyMGQwMDllYzM1Y2Y1Y2M1
OGZiNzUwZi4uNDk0YjNlZWQyNDUzOTg5NjFiN2YyNzNiOGE2MzYwNjZiYzhkYmMxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMzM0LDEzICszMzQsMTMgQEAgc3RhdGljIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0
RnVsbFNjcmUKICAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5
IGdyYXZpdHkgPSBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHlSZXNpemVB
c3BlY3Q7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkgPSBNZWRp
YVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZUFzcGVjdDsKICAgICBpZiAodmlkZW9H
cmF2aXR5ID09IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUpCi0gICAgICAgIGdyYXZpdHkgPSBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHlSZXNpemU7CisgICAgICAgIGdy
YXZpdHkgPSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZTsKICAgICBpZiAo
dmlkZW9HcmF2aXR5ID09IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QpCi0gICAgICAg
IGdyYXZpdHkgPSBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHlSZXNpemVB
c3BlY3Q7CisgICAgICAgIGdyYXZpdHkgPSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHk6
OlJlc2l6ZUFzcGVjdDsKICAgICBlbHNlIGlmICh2aWRlb0dyYXZpdHkgPT0gQVZMYXllclZpZGVv
R3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwpCi0gICAgICAgIGdyYXZpdHkgPSBXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOworICAgICAgICBncmF2
aXR5ID0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5OjpSZXNpemVBc3BlY3RGaWxsOwog
ICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5tbQppbmRleCAxNTU3MWNkYzM5MjJhYmQxOTVmZWYzZTgxNWI0Y2EzYmQyMzJjODYyLi44
NWM3MGIyYmJiNTA0N2VmOGVkZGE3NDI5NDY2NTlhNGIyN2UxN2NlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMubW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKICAgICBbX3Bp
cFZpZXdDb250cm9sbGVyIHNldFBsYXlpbmc6X3BsYXlpbmddOwogICAgIFtzZWxmIHNldFZpZGVv
RGltZW5zaW9uczpOU0VxdWFsU2l6ZXMoX3ZpZGVvRGltZW5zaW9ucywgTlNaZXJvU2l6ZSkgPyBm
cmFtZS5zaXplIDogX3ZpZGVvRGltZW5zaW9uc107CiAgICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWMgJiYgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2Ny
ZWVuTW9kZWwoKSkKLSAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9G
dWxsc2NyZWVuTW9kZWwoKS0+c2V0VmlkZW9MYXllckdyYXZpdHkoTWVkaWFQbGF5ZXJFbnVtczo6
VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCk7CisgICAgICAgIF92aWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNldFZpZGVvTGF5ZXJHcmF2aXR5
KE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eTo6UmVzaXplQXNwZWN0RmlsbCk7CiAKICAg
ICBfdmlkZW9WaWV3Q29udGFpbmVyID0gYWRvcHROUyhbW1dlYlZpZGVvVmlld0NvbnRhaW5lciBh
bGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZV0pOwogICAgIFtfdmlkZW9WaWV3Q29udGFpbmVyIHNl
dFZpZGVvVmlld0NvbnRhaW5lckRlbGVnYXRlOnNlbGZdOwpAQCAtMzAyLDcgKzMwMiw3IEBAIGVu
dW0gY2xhc3MgUElQU3RhdGUgewogICAgICAgICAgICAgY29udGV4dC5hbGxvd3NJbXBsaWNpdEFu
aW1hdGlvbiA9IE5POwogICAgICAgICAgICAgW192aWRlb1ZpZXdDb250YWluZXIgc2V0RnJhbWU6
X3JldHVybmluZ1JlY3RdOwogICAgICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
Yy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2V0VmlkZW9MYXllckZyYW1lKFtfdmlkZW9WaWV3
Q29udGFpbmVyIGJvdW5kc10pOwotICAgICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2V0VmlkZW9MYXllckdyYXZpdHkoTWVkaWFQ
bGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KTsKKyAgICAgICAgICAgIF92aWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNldFZpZGVv
TGF5ZXJHcmF2aXR5KE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eTo6UmVzaXplQXNwZWN0
KTsKIAogICAgICAgICAgICAgW1tfcmV0dXJuaW5nV2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2
aWV3Ol92aWRlb1ZpZXdDb250YWluZXIuZ2V0KCkgcG9zaXRpb25lZDpOU1dpbmRvd0Fib3ZlIHJl
bGF0aXZlVG86bmlsXTsKICAgICAgICAgfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwpAQCAtMzEx
LDcgKzMxMSw3IEBAIGVudW0gY2xhc3MgUElQU3RhdGUgewogICAgIGlmICghc2VsZi5pc0V4aXRp
bmdUb1N0YW5kYXJkRnVsbHNjcmVlbikgewogICAgICAgICBpZiAoVmlkZW9GdWxsc2NyZWVuTW9k
ZWwqIHZpZGVvRnVsbHNjcmVlbk1vZGVsID0gX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+
dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkgewogICAgICAgICAgICAgdmlkZW9GdWxsc2NyZWVuTW9k
ZWwtPmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7Ci0gICAgICAgICAgICB2aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC0+c2V0VmlkZW9MYXllckdyYXZpdHkoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2
aXR5UmVzaXplQXNwZWN0KTsKKyAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsLT5zZXRW
aWRlb0xheWVyR3Jhdml0eShNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZUFz
cGVjdCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZS5jcHAKaW5kZXggMzg3YTIxZGFmNDU1MjM5NjhhZWU0Zjc5NDE5ZDNkOGI4ODY5
MGQ3Yy4uMDFhNmEwMDMwZjRmNDYxZDQ2NzI3YmI2OTYwMTY1YWI5YmNmYTFjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTYyLDI3ICs2MiwyNyBA
QCB2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZQogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmlzTWVk
aWFTb3VyY2UpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7Cisg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsK
IAogICAgIGF1dG8gY29udGFpbmVyVHlwZSA9IHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBl
KCk7CiAgICAgaWYgKGNvbnRhaW5lclR5cGUuaXNFbXB0eSgpIHx8ICFtaW1lVHlwZUNhY2hlKCku
Y29udGFpbnMoY29udGFpbmVyVHlwZSkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNO
b3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJ
c05vdFN1cHBvcnRlZDsKIAogICAgIGF1dG8gY29kZWNzID0gcGFyYW1ldGVycy50eXBlLnBhcmFt
ZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOwogICAgIGlmIChjb2RlY3MuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOworICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQ7CiAK
ICAgICBpZiAoY29kZWNzID09ICJtb2NrIiB8fCBjb2RlY3MgPT0gImtjb20iKQotICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CiAKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
Ok1heUJlU3VwcG9ydGVkOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpN
YXlCZVN1cHBvcnRlZDsKIH0KIAogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6Ok1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgOiBtX3BsYXllcihw
bGF5ZXIpCiAgICAgLCBtX2N1cnJlbnRUaW1lKE1lZGlhVGltZTo6emVyb1RpbWUoKSkKLSAgICAs
IG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCi0gICAgLCBtX25ldHdvcmtT
dGF0ZShNZWRpYVBsYXllcjo6RW1wdHkpCisgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKQorICAgICwgbV9uZXR3b3JrU3RhdGUoTWVkaWFQbGF5
ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHkpCiAgICAgLCBtX3BsYXlpbmcoZmFsc2UpCiAgICAgLCBt
X3NlZWtDb21wbGV0ZWQodHJ1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUu
Y3BwCmluZGV4IDdkY2M5NjQ5MzUwMjg2NDkzMTVlNWIzODFmYjllYWY4MWIzYWE5NWEuLjZlMjFi
NWRkMmI4OTdlODdhYWZhMDBlNzViYzhmZjhmZjFlZWUwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFTb3VyY2VQcml2YXRlLmNwcApAQCAtNjIsNyArNjIsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6
OkFkZFN0YXR1cyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjphZGRTb3VyY2VCdWZmZXIoY29uc3Qg
Q29udAogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBw
YXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOwogICAgIHBhcmFtZXRlcnMudHlwZSA9IGNv
bnRlbnRUeXBlOwotICAgIGlmIChNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNU
eXBlKHBhcmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZCkKKyAgICBpZiAo
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9PSBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAgcmV0dXJu
IE5vdFN1cHBvcnRlZDsKIAogICAgIG1fc291cmNlQnVmZmVycy5hcHBlbmQoTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGU6OmNyZWF0ZSh0aGlzKSk7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgTW9ja01l
ZGlhU291cmNlUHJpdmF0ZTo6ZHVyYXRpb25DaGFuZ2VkKCkKIHZvaWQgTW9ja01lZGlhU291cmNl
UHJpdmF0ZTo6bWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzIHN0YXR1cykKIHsKICAg
ICBpZiAoc3RhdHVzID09IEVvc05vRXJyb3IpCi0gICAgICAgIG1fcGxheWVyLnNldE5ldHdvcmtT
dGF0ZShNZWRpYVBsYXllcjo6TG9hZGVkKTsKKyAgICAgICAgbV9wbGF5ZXIuc2V0TmV0d29ya1N0
YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRlZCk7CiAgICAgbV9pc0VuZGVkID0g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA2
YjEzNzNlNDQ3M2I5Mzc4NTI2NzA1ZWMwZmJhMGE0MDFiMDA4NTNhLi4zMjg2OTE1YTZhZTA4YmJh
ZWJjMGE3YzE2NmExNmQ0NWQ4YmEzMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGU6OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKQogCiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVhZHlTdGF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fbWVkaWFTb3VyY2UgPyBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS5yZWFkeVN0YXRlKCkgOiBN
ZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UgPyBtX21l
ZGlhU291cmNlLT5wbGF5ZXIoKS5yZWFkeVN0YXRlKCkgOiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZTo6SGF2ZU5vdGhpbmc7CiB9CiAKIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OnNldFJl
YWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKQEAgLTI3MCw3ICsy
NzAsNyBAQCBib29sIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpjYW5Td2l0Y2hUb1R5cGUoY29u
c3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKQogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOwog
ICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlOwotICAgIHJldHVybiBNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVy
OjpJc05vdFN1cHBvcnRlZDsKKyAgICByZXR1cm4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6
OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJ
c05vdFN1cHBvcnRlZDsKIH0KIAogdm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZW5xdWV1
ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBBdG9tU3RyaW5nJikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385420</attachid>
            <date>2019-12-11 12:04:01 -0800</date>
            <delta_ts>2019-12-11 14:25:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205125-20191211120358.patch</filename>
            <type>text/plain</type>
            <size>130757</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE5MDUzNmRmMzEwYTI0
ODBlZTkzZjlkOGUxZGIwMTcwNzRiMGQwMC4uNGUzN2MwYjFlMzVjM2NlYzFlMGVlMDE5NjE0YThh
NWIzNDcxYjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAxOS0xMi0xMSAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZW5jb2Rl
cnMgZm9yIE1lZGlhUGxheWVyRW51bSBlbnVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MTI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Nzg0
Mjk4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0
ZWRDYXBhYmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6
c2V0UHJpdmF0ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNlZWtU
b1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Om1vbml0b3JTb3VyY2VCdWZm
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aXNUeXBlU3VwcG9ydGVkKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnJlbW92ZUNvZGVkRnJhbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXph
dGlvblNlZ21lbnQpOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpjYW5QbGF5VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzZXROZXR3b3JrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwcmVsb2FkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0cmluZ0Zvck5ldHdvcmtTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp2aWRlb0Z1bGxzY3JlZW5HcmF2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnByZWxvYWRWYWx1ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246
OmVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6
OnNldFZpZGVvTGF5ZXJHcmF2aXR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0
UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyRW51bXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZTo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6Om1vdmllTG9hZFR5cGUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnByZXBhcmVUb1BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjppc1JlYWR5Rm9y
VmlkZW9TZXR1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXRQcmVsb2FkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb246Om1ldGFEYXRhQXZhaWxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1
cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVs
bHNjcmVlbkdyYXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjptb3ZpZUxvYWRUeXBlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZW5zdXJlTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzaG91bGRCZVBsYXlpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRz
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmxvYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6bWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpyZWFkeVN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpjYW5Td2l0Y2hUb1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkNvY29hKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bG9hZEZ1bGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnByZXBhcmVUb1BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6c2V0UHJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlRG93
bmxvYWRCdWZmZXJpbmdGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFLmNwcDoKKyAgICAgICAgKGR1bXBSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6bG9hZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmRvU2Vlayk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnNldFJlYWR5U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzZWVrQ29tcGxl
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
dXBkYXRlU3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRTo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6Y3VycmVudE1lZGlhVGltZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRz
VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6dXBkYXRlUmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om9uU2Vzc2lvbkVuZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06
CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2aXR5Ol0pOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakMgc2V0VXBQSVBGb3JWaWRlb1Zp
ZXc6d2l0aEZyYW1lOmluV2luZG93Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWNPYmpDIHBpcERpZENsb3NlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6TW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlh
U291cmNlUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2
YXRlOjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNl
UHJpdmF0ZTo6bWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWFkeVN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpjYW5Td2l0Y2hUb1R5cGUpOgorCiAyMDE5LTEy
LTEwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IGl0IHBvc3NpYmxlIHRvIGFkZCByZWdyZXNzaW9uIHRlc3RzIGZvciBibG9ja2VkIFhQQyBzZXJ2
aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmlu
ZGV4IDYwMzhhZGQ4MzhhYWIyNjQwMzY5MzIyMDExNjRlMzY2NzE1MGEyNWUuLjRiYmIyYmNlNjE4
NzRiN2VlMTQ4YTQxNjg1NTBhNmIxNTY0MzkyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTQ2OCwxMCArNDY4LDExIEBAIE9wdGlvbmFs
PFZlY3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4+IENETTo6Z2V0U3VwcG9ydGVk
Q2FwYWJpbGl0aWVzRm9yCiAgICAgICAgIC8vICAgICAgIHdpdGggcmVzdHJpY3Rpb25zOgogICAg
ICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgICAgIHBh
cmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlLT5taW1lVHlwZSgpKTsKLSAg
ICAgICAgaWYgKCFNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpKSB7CisgICAg
ICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09IE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7CisKICAgICAgICAgICAgIC8vIFRy
eSB3aXRoIE1lZGlhIFNvdXJjZToKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJj
ZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoIU1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFy
YW1ldGVycykpCisgICAgICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJh
bWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGY0NTU4YzczMTkz
MjliM2Q0NDRjMmRjMzRiYzRiODA3NzU3NDZiZTAuLjJhNWFkYjc0ZTliNmVkYjQxNTNjMGNlYTg2
YmNhZTA5ODhjYTVlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBNZWRpYVNvdXJj
ZTo6c2V0UHJpdmF0ZUFuZE9wZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJiBtZWRpYVNvdXJj
ZVByaXZhdGUKICAgICAvLyAgICBSdW4gdGhlICJJZiB0aGUgbWVkaWEgZGF0YSBjYW5ub3QgYmUg
ZmV0Y2hlZCBhdCBhbGwsIGR1ZSB0byBuZXR3b3JrIGVycm9ycywgY2F1c2luZyB0aGUgdXNlciBh
Z2VudCB0byBnaXZlIHVwIHRyeWluZwogICAgIC8vICAgIHRvIGZldGNoIHRoZSByZXNvdXJjZSIg
c3RlcHMgb2YgdGhlIHJlc291cmNlIGZldGNoIGFsZ29yaXRobSdzIG1lZGlhIGRhdGEgcHJvY2Vz
c2luZyBzdGVwcyBsaXN0LgogICAgIGlmICghaXNDbG9zZWQoKSkgewotICAgICAgICBtX21lZGlh
RWxlbWVudC0+bWVkaWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya0Vy
cm9yKTsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHko
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0d29ya0Vycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnNlZWtUb1Rp
bWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQogICAgIGlmICghaGFzQnVmZmVyZWRUaW1lKHRpbWUp
KSB7CiAgICAgICAgIC8vIDEuIElmIHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0
cmlidXRlIGlzIGdyZWF0ZXIgdGhhbiBIQVZFX01FVEFEQVRBLAogICAgICAgICAvLyB0aGVuIHNl
dCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGF0dHJpYnV0ZSB0byBIQVZFX01FVEFE
QVRBLgotICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVN
ZXRhZGF0YSk7CisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKTsKIAogICAgICAgICAvLyAyLiBUaGUgbWVkaWEgZWxl
bWVudCB3YWl0cyB1bnRpbCBhbiBhcHBlbmRCdWZmZXIoKSBvciBhbiBhcHBlbmRTdHJlYW0oKSBj
YWxsIGNhdXNlcyB0aGUgY29kZWQKICAgICAgICAgLy8gZnJhbWUgcHJvY2Vzc2luZyBhbGdvcml0
aG0gdG8gc2V0IHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIHRvIGEg
dmFsdWUgZ3JlYXRlcgpAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6Om1vbml0
b3JTb3VyY2VCdWZmZXJzKCkKIAogICAgIC8vIE5vdGUsIHRoZSBiZWhhdmlvciBpZiBhY3RpdmVT
b3VyY2VCdWZmZXJzIGlzIGVtcHR5IGlzIHVuZGVmaW5lZC4KICAgICBpZiAoIW1fYWN0aXZlU291
cmNlQnVmZmVycykgewotICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5
ZXI6OkhhdmVOb3RoaW5nKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQ0MSw3ICs0NDEsNyBAQCB2b2lkIE1lZGlhU291cmNlOjptb25pdG9yU291cmNlQnVm
ZmVycygpCiAgICAgICAgIC8vIDEuIFNldCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRl
IGF0dHJpYnV0ZSB0byBIQVZFX01FVEFEQVRBLgogICAgICAgICAvLyAyLiBJZiB0aGlzIGlzIHRo
ZSBmaXJzdCB0cmFuc2l0aW9uIHRvIEhBVkVfTUVUQURBVEEsIHRoZW4gcXVldWUgYSB0YXNrIHRv
IGZpcmUgYSBzaW1wbGUgZXZlbnQKICAgICAgICAgLy8gbmFtZWQgbG9hZGVkbWV0YWRhdGEgYXQg
dGhlIG1lZGlhIGVsZW1lbnQuCi0gICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6SGF2ZU1ldGFkYXRhKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGEpOwogCiAgICAgICAgIC8vIDMu
IEFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICByZXR1cm47CkBAIC00NTYsNyArNDU2LDcgQEAg
dm9pZCBNZWRpYVNvdXJjZTo6bW9uaXRvclNvdXJjZUJ1ZmZlcnMoKQogICAgICAgICAvLyAxLiBT
ZXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgdG8gSEFWRV9FTk9V
R0hfREFUQS4KICAgICAgICAgLy8gMi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQgY2FucGxheXRocm91Z2ggYXQgdGhlIG1lZGlhIGVsZW1lbnQuCiAgICAgICAgIC8v
IDMuIFBsYXliYWNrIG1heSByZXN1bWUgYXQgdGhpcyBwb2ludCBpZiBpdCB3YXMgcHJldmlvdXNs
eSBzdXNwZW5kZWQgYnkgYSB0cmFuc2l0aW9uIHRvIEhBVkVfQ1VSUkVOVF9EQVRBLgotICAgICAg
ICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhKTsK
KyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
OjpIYXZlRW5vdWdoRGF0YSk7CiAKICAgICAgICAgaWYgKG1fcGVuZGluZ1NlZWtUaW1lLmlzVmFs
aWQoKSkKICAgICAgICAgICAgIGNvbXBsZXRlU2VlaygpOwpAQCAtNDcxLDcgKzQ3MSw3IEBAIHZv
aWQgTWVkaWFTb3VyY2U6Om1vbml0b3JTb3VyY2VCdWZmZXJzKCkKICAgICAgICAgLy8gMS4gU2V0
IHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIHRvIEhBVkVfRlVUVVJF
X0RBVEEuCiAgICAgICAgIC8vIDIuIElmIHRoZSBwcmV2aW91cyB2YWx1ZSBvZiBIVE1MTWVkaWFF
bGVtZW50LnJlYWR5U3RhdGUgd2FzIGxlc3MgdGhhbiBIQVZFX0ZVVFVSRV9EQVRBLCB0aGVuIHF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNhbnBsYXkgYXQgdGhlIG1l
ZGlhIGVsZW1lbnQuCiAgICAgICAgIC8vIDMuIFBsYXliYWNrIG1heSByZXN1bWUgYXQgdGhpcyBw
b2ludCBpZiBpdCB3YXMgcHJldmlvdXNseSBzdXNwZW5kZWQgYnkgYSB0cmFuc2l0aW9uIHRvIEhB
VkVfQ1VSUkVOVF9EQVRBLgotICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVkaWFQ
bGF5ZXI6OkhhdmVGdXR1cmVEYXRhKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRnV0dXJlRGF0YSk7CiAKICAgICAgICAgaWYg
KG1fcGVuZGluZ1NlZWtUaW1lLmlzVmFsaWQoKSkKICAgICAgICAgICAgIGNvbXBsZXRlU2Vlaygp
OwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6Om1vbml0b3JTb3VyY2VCdWZm
ZXJzKCkKICAgICAvLyBldmVudCBuYW1lZCBsb2FkZWRkYXRhIGF0IHRoZSBtZWRpYSBlbGVtZW50
LgogICAgIC8vIDMuIFBsYXliYWNrIGlzIHN1c3BlbmRlZCBhdCB0aGlzIHBvaW50IHNpbmNlIHRo
ZSBtZWRpYSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggZGF0YSB0bwogICAgIC8vIGFkdmFu
Y2UgdGhlIG1lZGlhIHRpbWVsaW5lLgotICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhKTsKKyAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUo
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSk7CiAKICAgICBpZiAobV9w
ZW5kaW5nU2Vla1RpbWUuaXNWYWxpZCgpKQogICAgICAgICBjb21wbGV0ZVNlZWsoKTsKQEAgLTYz
NywxMyArNjM3LDEzIEBAIHZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKE9w
dGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgICAgICAgICAgLy8gICAgUnVuIHRo
ZSAiSWYgdGhlIG1lZGlhIGRhdGEgY2Fubm90IGJlIGZldGNoZWQgYXQgYWxsLCBkdWUgdG8gbmV0
d29yayBlcnJvcnMsIGNhdXNpbmcKICAgICAgICAgICAgIC8vICAgIHRoZSB1c2VyIGFnZW50IHRv
IGdpdmUgdXAgdHJ5aW5nIHRvIGZldGNoIHRoZSByZXNvdXJjZSIgc3RlcHMgb2YgdGhlIHJlc291
cmNlIGZldGNoIGFsZ29yaXRobS4KICAgICAgICAgICAgIC8vICAgIE5PVEU6IFRoaXMgc3RlcCBp
cyBoYW5kbGVkIGJ5IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZCgpLgotICAg
ICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6
TmV0d29ya0Vycm9yKTsKKyAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5tZWRpYUxvYWRpbmdG
YWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0d29ya0Vycm9yKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIC8vICDihrMgSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVh
ZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgZ3JlYXRlciB0aGFuIEhBVkVfTk9USElORwogICAgICAgICAg
ICAgLy8gICAgUnVuIHRoZSAiSWYgdGhlIGNvbm5lY3Rpb24gaXMgaW50ZXJydXB0ZWQgYWZ0ZXIg
c29tZSBtZWRpYSBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLCBjYXVzaW5nIHRoZQogICAgICAgICAg
ICAgLy8gICAgdXNlciBhZ2VudCB0byBnaXZlIHVwIHRyeWluZyB0byBmZXRjaCB0aGUgcmVzb3Vy
Y2UiIHN0ZXBzIG9mIHRoZSByZXNvdXJjZSBmZXRjaCBhbGdvcml0aG0uCiAgICAgICAgICAgICAv
LyAgICBOT1RFOiBUaGlzIHN0ZXAgaXMgaGFuZGxlZCBieSBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YUxvYWRpbmdGYWlsZWRGYXRhbGx5KCkuCi0gICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+bWVk
aWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya0Vycm9yKTsKKyAgICAg
ICAgICAgIG1fbWVkaWFFbGVtZW50LT5tZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvcik7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJkZWNvZGUiCkBAIC02NTQsMTIg
KzY1NCwxMiBAQCB2b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25h
bDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKICAgICAgICAgICAgIC8vICAgIFJ1biB0aGUgIklm
IHRoZSBtZWRpYSBkYXRhIGNhbiBiZSBmZXRjaGVkIGJ1dCBpcyBmb3VuZCBieSBpbnNwZWN0aW9u
IHRvIGJlIGluIGFuIHVuc3VwcG9ydGVkCiAgICAgICAgICAgICAvLyAgICBmb3JtYXQsIG9yIGNh
biBvdGhlcndpc2Ugbm90IGJlIHJlbmRlcmVkIGF0IGFsbCIgc3RlcHMgb2YgdGhlIHJlc291cmNl
IGZldGNoIGFsZ29yaXRobS4KICAgICAgICAgICAgIC8vICAgIE5PVEU6IFRoaXMgc3RlcCBpcyBo
YW5kbGVkIGJ5IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZCgpLgotICAgICAg
ICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9y
bWF0RXJyb3IpOworICAgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlhTG9hZGluZ0ZhaWxl
ZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyAg4oazIElmIHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3Rh
dGUgYXR0cmlidXRlIGlzIGdyZWF0ZXIgdGhhbiBIQVZFX05PVEhJTkcKICAgICAgICAgICAgIC8v
ICAgIFJ1biB0aGUgbWVkaWEgZGF0YSBpcyBjb3JydXB0ZWQgc3RlcHMgb2YgdGhlIHJlc291cmNl
IGZldGNoIGFsZ29yaXRobS4KICAgICAgICAgICAgIC8vICAgIE5PVEU6IFRoaXMgc3RlcCBpcyBo
YW5kbGVkIGJ5IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkoKS4K
LSAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5tZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KE1l
ZGlhUGxheWVyOjpEZWNvZGVFcnJvcik7CisgICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+bWVk
aWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpEZWNvZGVF
cnJvcik7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC04OTQsOSArODk0LDkgQEAgYm9vbCBNZWRp
YVNvdXJjZTo6aXNUeXBlU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUo
cGFyYW1ldGVycyk7CiAKICAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHN1cHBvcnRlZCAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVy
biBzdXBwb3J0ZWQgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7
CiAKLSAgICByZXR1cm4gc3VwcG9ydGVkID09IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKKyAg
ICByZXR1cm4gc3VwcG9ydGVkID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9y
dGVkOwogfQogCiBib29sIE1lZGlhU291cmNlOjppc09wZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDA3
ZmIwZGUzZjlmYmMzZGIwYWQ4OTc2Nzk1NjQ2ZTgxMzc3ZWE0ZDUuLmI5ZDQwMDVmMWJkZDE4OTUw
M2E0Y2IzMWYyMGQ5Njg3NDUzMDI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTg4Myw4ICs4ODMsOCBAQCB2b2lk
IFNvdXJjZUJ1ZmZlcjo6cmVtb3ZlQ29kZWRGcmFtZXMoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwg
Y29uc3QgTWVkaWFUaW1lJiBlbgogICAgICAgICAvLyAzLjQgSWYgdGhpcyBvYmplY3QgaXMgaW4g
YWN0aXZlU291cmNlQnVmZmVycywgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gaXMgZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIHN0YXJ0CiAgICAgICAgIC8vIGFuZCBsZXNzIHRoYW4gdGhl
IHJlbW92ZSBlbmQgdGltZXN0YW1wLCBhbmQgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGlz
IGdyZWF0ZXIgdGhhbiBIQVZFX01FVEFEQVRBLCB0aGVuIHNldAogICAgICAgICAvLyB0aGUgSFRN
TE1lZGlhRWxlbWVudC5yZWFkeVN0YXRlIGF0dHJpYnV0ZSB0byBIQVZFX01FVEFEQVRBIGFuZCBz
dGFsbCBwbGF5YmFjay4KLSAgICAgICAgaWYgKG1fYWN0aXZlICYmIGN1cnJlbnRNZWRpYVRpbWUg
Pj0gc3RhcnQgJiYgY3VycmVudE1lZGlhVGltZSA8IGVuZCAmJiBtX3ByaXZhdGUtPnJlYWR5U3Rh
dGUoKSA+IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEpCi0gICAgICAgICAgICBtX3ByaXZhdGUt
PnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSk7CisgICAgICAgIGlmICht
X2FjdGl2ZSAmJiBjdXJyZW50TWVkaWFUaW1lID49IHN0YXJ0ICYmIGN1cnJlbnRNZWRpYVRpbWUg
PCBlbmQgJiYgbV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZTo6SGF2ZU1ldGFkYXRhKQorICAgICAgICAgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGEpOwogICAgIH0KICAgICAKICAgICB1
cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoKTsKQEAgLTEyODUsNyArMTI4NSw3IEBAIHZv
aWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgbV9wZW5kaW5nSW5pdGlhbGl6YXRpb25TZWdtZW50
Rm9yQ2hhbmdlVHlwZSA9IGZhbHNlOwogCiAgICAgLy8gNi4gSWYgdGhlIEhUTUxNZWRpYUVsZW1l
bnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgSEFWRV9OT1RISU5HLCB0aGVuIHJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzOgotICAgIGlmIChtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVBs
YXllcjo6SGF2ZU5vdGhpbmcpIHsKKyAgICBpZiAobV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPT0g
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKSB7CiAgICAgICAgIC8vIDYuMSBJ
ZiBvbmUgb3IgbW9yZSBvYmplY3RzIGluIHNvdXJjZUJ1ZmZlcnMgaGF2ZSBmaXJzdCBpbml0aWFs
aXphdGlvbiBzZWdtZW50IGZsYWcgc2V0IHRvIGZhbHNlLCB0aGVuIGFib3J0IHRoZXNlIHN0ZXBz
LgogICAgICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6ICptX3NvdXJjZS0+c291cmNlQnVm
ZmVycygpKSB7CiAgICAgICAgICAgICBpZiAoIXNvdXJjZUJ1ZmZlci0+bV9yZWNlaXZlZEZpcnN0
SW5pdGlhbGl6YXRpb25TZWdtZW50KQpAQCAtMTI5NCwxNCArMTI5NCwxNCBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoY29uc3QgSW5pdAogCiAgICAgICAgIC8vIDYuMiBTZXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQu
cmVhZHlTdGF0ZSBhdHRyaWJ1dGUgdG8gSEFWRV9NRVRBREFUQS4KICAgICAgICAgLy8gNi4zIFF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGxvYWRlZG1ldGFkYXRhIGF0
IHRoZSBtZWRpYSBlbGVtZW50LgotICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoTWVk
aWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSk7CisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0
ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKTsKICAgICB9CiAKICAgICAv
LyA3LiBJZiB0aGUgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUgYW5kIHRoZSBIVE1MTWVk
aWFFbGVtZW50LnJlYWR5U3RhdGUKICAgICAvLyBhdHRyaWJ1dGUgaXMgZ3JlYXRlciB0aGFuIEhB
VkVfQ1VSUkVOVF9EQVRBLCB0aGVuIHNldCB0aGUgSFRNTE1lZGlhRWxlbWVudC5yZWFkeVN0YXRl
CiAgICAgLy8gYXR0cmlidXRlIHRvIEhBVkVfTUVUQURBVEEuCi0gICAgaWYgKGFjdGl2ZVRyYWNr
RmxhZyAmJiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA+IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVu
dERhdGEpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2
ZU1ldGFkYXRhKTsKKyAgICBpZiAoYWN0aXZlVHJhY2tGbGFnICYmIG1fcHJpdmF0ZS0+cmVhZHlT
dGF0ZSgpID4gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAgICAg
ICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZl
TWV0YWRhdGEpOwogfQogCiBib29sIFNvdXJjZUJ1ZmZlcjo6dmFsaWRhdGVJbml0aWFsaXphdGlv
blNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JiBzZWdtZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5kZXggMTQ2NmVhYWUyZTE2MmQyZWY4N2E5
N2FkMTdmZmFmYjEyNzQ4NjA5Yy4uN2E4YWY4MmMyZjA5MjEwYTBmOWFkZGI2MTFhMmM3M2ZiNDA4
MmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1l
bnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUKICAgICBNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5
cGUgeyB0eXBlIH07CiAgICAgcGFyYW1ldGVycy51cmwgPSB1cmw7Ci0gICAgaWYgKE1lZGlhUGxh
eWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykpCisgICAgaWYgKE1lZGlhUGxheWVyOjpzdXBw
b3J0c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQpCiAgICAgICAgIHJldHVybiBNZWRpYURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVy
bCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggYzQ4M2UxYzk0Y2EzZGIzYzI0NWI0NTIxYzQwOTZjOWNmOGE0ZmQ5ZC4uNjUyNDMxMjhjZDQx
MTVjY2JkMTVkZmNmMGNmNmVhNDc1YWZkNGEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC04MTYsMTMgKzgxNiwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbgogICAgICAgICB1cGRhdGVTbGVlcERpc2FibGluZygpOwogICAgIGVsc2UgaWYgKG5hbWUg
PT0gcHJlbG9hZEF0dHIpIHsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHZhbHVlLCAibm9uZSIpKQotICAgICAgICAgICAgbV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6
Ok5vbmU7CisgICAgICAgICAgICBtX3ByZWxvYWQgPSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6Tm9u
ZTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUs
ICJtZXRhZGF0YSIpKQotICAgICAgICAgICAgbV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6Ok1ldGFE
YXRhOworICAgICAgICAgICAgbV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6OlByZWxvYWQ6Ok1ldGFE
YXRhOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoZSBzcGVjIGRvZXMgbm90IGRl
ZmluZSBhbiAiaW52YWxpZCB2YWx1ZSBkZWZhdWx0IiBidXQgImF1dG8iIGlzIHN1Z2dlc3RlZCBh
cyB0aGUKICAgICAgICAgICAgIC8vICJtaXNzaW5nIHZhbHVlIGRlZmF1bHQiLCBzbyB1c2UgaXQg
Zm9yIGV2ZXJ5dGhpbmcgZXhjZXB0ICJub25lIiBhbmQgIm1ldGFkYXRhIgotICAgICAgICAgICAg
bV9wcmVsb2FkID0gTWVkaWFQbGF5ZXI6OkF1dG87CisgICAgICAgICAgICBtX3ByZWxvYWQgPSBN
ZWRpYVBsYXllcjo6UHJlbG9hZDo6QXV0bzsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBh
dHRyaWJ1dGUgbXVzdCBiZSBpZ25vcmVkIGlmIHRoZSBhdXRvcGxheSBhdHRyaWJ1dGUgaXMgcHJl
c2VudApAQCAtMTE1NSwxMyArMTE1NSwxMyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6Y2Fu
UGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKICAgICAvLyA0LjguMTAuMwog
ICAgIHN3aXRjaCAoc3VwcG9ydCkKICAgICB7Ci0gICAgICAgIGNhc2UgTWVkaWFQbGF5ZXI6Oklz
Tm90U3VwcG9ydGVkOgorICAgICAgICBjYXNlIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Oklz
Tm90U3VwcG9ydGVkOgogICAgICAgICAgICAgY2FuUGxheSA9IGVtcHR5U3RyaW5nKCk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ6
CisgICAgICAgIGNhc2UgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQ6
CiAgICAgICAgICAgICBjYW5QbGF5ID0gIm1heWJlIl9zOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOgorICAgICAgICBjYXNlIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkOgogICAgICAgICAgICAgY2FuUGxheSA9
ICJwcm9iYWJseSJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE0NDYsMTMgKzE0
NDYsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKCkKICAg
ICAgICAgICAgIC8vICAgIGF0dHJpYnV0ZSB3YXMgbGFzdCBjaGFuZ2VkLgogICAgICAgICAgICAg
VVJMIGFic29sdXRlVVJMID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAg
ICAgICAgICBpZiAoYWJzb2x1dGVVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgbWVk
aWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgICAgICAg
ICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVy
cm9yKTsKICAgICAgICAgICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAiZW1w
dHkgJ3NyYyciKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmICghaXNTYWZlVG9Mb2FkVVJMKGFic29sdXRlVVJMLCBDb21wbGFpbikgfHwg
IWRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGFic29sdXRlVVJMLnN0cmluZygpKSkgewotICAgICAg
ICAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOwor
ICAgICAgICAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0
YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCkBAIC0xNTA4LDI2ICsxNTA4LDI2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJl
c291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAKICAg
ICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpIHsKLSAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJv
cik7CisgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
OjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBQYWdlKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpIHsKLSAgICAgICAgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgIG1lZGlhTG9hZGluZ0Zh
aWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBVUkwgdXJsID0gaW5pdGlhbFVSTDsKICAgICBpZiAoIXVybC5p
c0VtcHR5KCkgJiYgIWZyYW1lLT5sb2FkZXIoKS53aWxsTG9hZE1lZGlhRWxlbWVudFVSTCh1cmws
ICp0aGlzKSkgewotICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkZvcm1h
dEVycm9yKTsKKyAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGU6OkZvcm1hdEVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKGF1dG8gZG9jdW1lbnRMb2FkZXIgPSBtYWtl
UmVmUHRyKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkgewogICAgICAgICBpZiAo
cGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9h
ZCh1cmwsIENvbnRlbnRFeHRlbnNpb25zOjpSZXNvdXJjZVR5cGU6Ok1lZGlhLCAqZG9jdW1lbnRM
b2FkZXIpLnN1bW1hcnkuYmxvY2tlZExvYWQpIHsKLSAgICAgICAgICAgIG1lZGlhTG9hZGluZ0Zh
aWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOworICAgICAgICAgICAgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTE1NDIsNyArMTU0Miw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29u
dGVudFR5cGUmIGNvbnRlbnRUCiAgICAgICAgIC8vIFJlc291cmNlcyB0aGF0IGFyZSBub3QgcHJl
c2VudCBpbiB0aGUgbWFuaWZlc3Qgd2lsbCBhbHdheXMgZmFpbCB0byBsb2FkIChhdCBsZWFzdCwg
YWZ0ZXIgdGhlCiAgICAgICAgIC8vIGNhY2hlIGhhcyBiZWVuIHByaW1lZCB0aGUgZmlyc3QgdGlt
ZSksIG1ha2luZyB0aGUgdGVzdGluZyBvZiBvZmZsaW5lIGFwcGxpY2F0aW9ucyBzaW1wbGVyLgog
ICAgICAgICBpZiAoIXJlc291cmNlIHx8IHJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcik7
CisgICAgICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZTo6TmV0d29ya0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
QEAgLTE1OTYsNyArMTU5Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNl
KGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAgICAgICAgICAg
ICAvLyBGb3JnZXQgb3VyIHJlZmVyZW5jZSB0byB0aGUgTWVkaWFTb3VyY2UsIHNvIHdlIGxlYXZl
IGl0IGFsb25lCiAgICAgICAgICAgICAvLyB3aGlsZSBwcm9jZXNzaW5nIHJlbWFpbmRlciBvZiBs
b2FkIGZhaWx1cmUuCiAgICAgICAgICAgICBtX21lZGlhU291cmNlID0gbnVsbHB0cjsKLSAgICAg
ICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOworICAg
ICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZv
cm1hdEVycm9yKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMTYwNSw3ICsxNjA1LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgVVJMJiBpbml0aWFs
VVJMLCBDb250ZW50VHlwZSYgY29udGVudFQKICAgICAgICAgbG9hZEF0dGVtcHRlZCA9IHRydWU7
CiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImxvYWRpbmcgbWVkaWEgc3RyZWFt
IGJsb2IiKTsKICAgICAgICAgaWYgKCFtX3BsYXllci0+bG9hZChtX21lZGlhU3RyZWFtU3JjT2Jq
ZWN0LT5wcml2YXRlU3RyZWFtKCkpKQotICAgICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1l
ZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQo
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3IpOwogICAgIH0KICNlbmRpZgog
CkBAIC0xNjEzLDExICsxNjEzLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291
cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAgICAgICAg
IGxvYWRBdHRlbXB0ZWQgPSB0cnVlOwogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJsb2FkaW5nIGdlbmVyaWMgYmxvYiIpOwogICAgICAgICBpZiAoIW1fcGxheWVyLT5sb2FkKG1f
YmxvYi0+dXJsKCksIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pKQotICAgICAgICAgICAgbWVkaWFM
b2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgICAgICBtZWRp
YUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3IpOwog
ICAgIH0KIAogICAgIGlmICghbG9hZEF0dGVtcHRlZCAmJiAhbV9wbGF5ZXItPmxvYWQodXJsLCBj
b250ZW50VHlwZSwga2V5U3lzdGVtKSkKLSAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlh
UGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAKICAgICAvLyBJZiB0aGVyZSBpcyBu
byBwb3N0ZXIgdG8gZGlzcGxheSwgYWxsb3cgdGhlIG1lZGlhIGVuZ2luZSB0byByZW5kZXIgdmlk
ZW8gZnJhbWVzIGFzIHNvb24gYXMKICAgICAvLyB0aGV5IGFyZSBhdmFpbGFibGUuCkBAIC0yMjEz
LDkgKzIyMTMsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZh
dGFsbHkoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcgogCiAgICAgLy8gMiAtIFNldCB0
aGUgZXJyb3IgYXR0cmlidXRlIHRvIGEgbmV3IE1lZGlhRXJyb3Igb2JqZWN0IHdob3NlIGNvZGUg
YXR0cmlidXRlIGlzCiAgICAgLy8gc2V0IHRvIE1FRElBX0VSUl9ORVRXT1JLL01FRElBX0VSUl9E
RUNPREUuCi0gICAgaWYgKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrRXJyb3IpCisgICAg
aWYgKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvcikKICAg
ICAgICAgbV9lcnJvciA9IE1lZGlhRXJyb3I6OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJf
TkVUV09SSyk7Ci0gICAgZWxzZSBpZiAoZXJyb3IgPT0gTWVkaWFQbGF5ZXI6OkRlY29kZUVycm9y
KQorICAgIGVsc2UgaWYgKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkRlY29k
ZUVycm9yKQogICAgICAgICBtX2Vycm9yID0gTWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlhRXJyb3I6
Ok1FRElBX0VSUl9ERUNPREUpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0yMjg0LDIwICsyMjg0LDYgQEAgc3RhdGljIHZvaWQgbG9nTWVkaWFMb2FkUmVxdWVz
dChQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lZGlhRW5naW5lLCBjb25zdCBTdHIKICAgICBw
YWdlLT5zYXdNZWRpYUVuZ2luZShtZWRpYUVuZ2luZSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgc3Ry
aW5nRm9yTmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgc3RhdGUpCi17Ci0g
ICAgc3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2UgTWVkaWFQbGF5ZXI6OkVtcHR5OiByZXR1cm4g
IkVtcHR5Il9zOwotICAgIGNhc2UgTWVkaWFQbGF5ZXI6OklkbGU6IHJldHVybiAiSWRsZSJfczsK
LSAgICBjYXNlIE1lZGlhUGxheWVyOjpMb2FkaW5nOiByZXR1cm4gIkxvYWRpbmciX3M7Ci0gICAg
Y2FzZSBNZWRpYVBsYXllcjo6TG9hZGVkOiByZXR1cm4gIkxvYWRlZCJfczsKLSAgICBjYXNlIE1l
ZGlhUGxheWVyOjpGb3JtYXRFcnJvcjogcmV0dXJuICJGb3JtYXRFcnJvciJfczsKLSAgICBjYXNl
IE1lZGlhUGxheWVyOjpOZXR3b3JrRXJyb3I6IHJldHVybiAiTmV0d29ya0Vycm9yIl9zOwotICAg
IGNhc2UgTWVkaWFQbGF5ZXI6OkRlY29kZUVycm9yOiByZXR1cm4gIkRlY29kZUVycm9yIl9zOwot
ICAgIGRlZmF1bHQ6IHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLX0KLQogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZSBlcnJvcikKIHsKICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKQEAgLTIzMjksOSArMjMxNSw5
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGUgZXJyb3IpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
KGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrRXJyb3IgJiYgbV9yZWFkeVN0YXRlID49IEhB
VkVfTUVUQURBVEEpIHx8IGVycm9yID09IE1lZGlhUGxheWVyOjpEZWNvZGVFcnJvcikKKyAgICBp
ZiAoKGVycm9yID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvciAmJiBt
X3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSkgfHwgZXJyb3IgPT0gTWVkaWFQbGF5ZXI6Ok5l
dHdvcmtTdGF0ZTo6RGVjb2RlRXJyb3IpCiAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFs
bHkoZXJyb3IpOwotICAgIGVsc2UgaWYgKChlcnJvciA9PSBNZWRpYVBsYXllcjo6Rm9ybWF0RXJy
b3IgfHwgZXJyb3IgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcikgJiYgbV9sb2FkU3RhdGUg
PT0gTG9hZGluZ0Zyb21TcmNBdHRyKQorICAgIGVsc2UgaWYgKChlcnJvciA9PSBNZWRpYVBsYXll
cjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvciB8fCBlcnJvciA9PSBNZWRpYVBsYXllcjo6TmV0
d29ya1N0YXRlOjpOZXR3b3JrRXJyb3IpICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU3Jj
QXR0cikKICAgICAgICAgbm9uZVN1cHBvcnRlZCgpOwogCiAgICAgdXBkYXRlRGlzcGxheVN0YXRl
KCk7CkBAIC0yMzQyLDcgKzIzMjgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9h
ZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yKQogCiAgICAgRVJST1Jf
TE9HKExPR0lERU5USUZJRVIsICJlcnJvciA9ICIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IpKTsK
IAotICAgIGxvZ01lZGlhTG9hZFJlcXVlc3QoZG9jdW1lbnQoKS5wYWdlKCksIFN0cmluZygpLCBz
dHJpbmdGb3JOZXR3b3JrU3RhdGUoZXJyb3IpLCBmYWxzZSk7CisgICAgbG9nTWVkaWFMb2FkUmVx
dWVzdChkb2N1bWVudCgpLnBhZ2UoKSwgU3RyaW5nKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKGVycm9yKSwgZmFsc2UpOwogCiAgICAgbV9tZWRpYVNlc3Npb24tPmNsaWVudENoYXJhY3Rl
cmlzdGljc0NoYW5nZWQoKTsKIH0KQEAgLTIzNTIsMTggKzIzMzgsMTggQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBzdGF0
ZSkKICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihzdGF0ZSkgIT0gc3RhdGljX2Nhc3Q8aW50Piht
X25ldHdvcmtTdGF0ZSkpCiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIm5ldyBz
dGF0ZSA9ICIsIHN0YXRlLCAiLCBjdXJyZW50IHN0YXRlID0gIiwgbV9uZXR3b3JrU3RhdGUpOwog
Ci0gICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpFbXB0eSkgeworICAgIGlmIChzdGF0ZSA9
PSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSkgewogICAgICAgICAvLyBKdXN0IHVw
ZGF0ZSB0aGUgY2FjaGVkIHN0YXRlIGFuZCBsZWF2ZSwgd2UgY2FuJ3QgZG8gYW55dGhpbmcuCiAg
ICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19FTVBUWTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IgfHwgc3Rh
dGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvciB8fCBzdGF0ZSA9PSBNZWRpYVBsYXllcjo6
RGVjb2RlRXJyb3IpIHsKKyAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZTo6Rm9ybWF0RXJyb3IgfHwgc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0
d29ya0Vycm9yIHx8IHN0YXRlID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkRlY29kZUVy
cm9yKSB7CiAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChzdGF0ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OklkbGUpIHsKKyAgICBp
ZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6SWRsZSkgewogICAgICAgICBp
ZiAobV9uZXR3b3JrU3RhdGUgPiBORVRXT1JLX0lETEUpIHsKICAgICAgICAgICAgIGNoYW5nZU5l
dHdvcmtTdGF0ZUZyb21Mb2FkaW5nVG9JZGxlKCk7CiAgICAgICAgICAgICBzZXRTaG91bGREZWxh
eUxvYWRFdmVudChmYWxzZSk7CkBAIC0yMzcyLDEzICsyMzU4LDEzIEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgc3RhdGUp
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkxvYWRp
bmcpIHsKKyAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGlu
ZykgewogICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPCBORVRXT1JLX0xPQURJTkcgfHwgbV9u
ZXR3b3JrU3RhdGUgPT0gTkVUV09SS19OT19TT1VSQ0UpCiAgICAgICAgICAgICBzdGFydFByb2dy
ZXNzRXZlbnRUaW1lcigpOwogICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfTE9BRElO
RzsKICAgICB9CiAKLSAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkxvYWRlZCkgeworICAg
IGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQpIHsKICAgICAg
ICAgaWYgKG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktfSURMRSkKICAgICAgICAgICAgIGNoYW5n
ZU5ldHdvcmtTdGF0ZUZyb21Mb2FkaW5nVG9JZGxlKCk7CiAgICAgICAgIG1fY29tcGxldGVseUxv
YWRlZCA9IHRydWU7CkBAIC0zMDI1LDcgKzMwMTEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25zdCBNZWRpYVRp
bQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB0aGUgbWVkaWEgZW5naW5lIGhhcyBiZWVu
IHRvbGQgdG8gcG9zdHBvbmUgbG9hZGluZyBkYXRhLCBsZXQgaXQgZ28gYWhlYWQgbm93LgotICAg
IGlmIChtX3ByZWxvYWQgPCBNZWRpYVBsYXllcjo6QXV0byAmJiBtX3JlYWR5U3RhdGUgPCBIQVZF
X0ZVVFVSRV9EQVRBKQorICAgIGlmIChtX3ByZWxvYWQgPCBNZWRpYVBsYXllcjo6UHJlbG9hZDo6
QXV0byAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0ZVVFVSRV9EQVRBKQogICAgICAgICBwcmVwYXJl
VG9QbGF5KCk7CiAKICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZSBiZWZvcmUgc2V0dGluZyBt
X3NlZWtpbmcsIG1fbGFzdFNlZWtUaW1lIGlzIHJldHVybmVkIG9uY2UgaXQgaXMgc2V0LgpAQCAt
MzE5Nyw3ICszMTgzLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6UmVhZHlTdGF0ZSBIVE1MTWVkaWFF
bGVtZW50OjpyZWFkeVN0YXRlKCkgY29uc3QKIAogTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUg
SFRNTE1lZGlhRWxlbWVudDo6bW92aWVMb2FkVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cGxheWVyID8gbV9wbGF5ZXItPm1vdmllTG9hZFR5cGUoKSA6IE1lZGlhUGxheWVyOjpVbmtub3du
OworICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5tb3ZpZUxvYWRUeXBlKCkgOiBNZWRp
YVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjpoYXNBdWRpbygpIGNvbnN0CkBAIC0zNDkzLDExICszNDc5LDExIEBAIFN0cmluZyBIVE1M
TWVkaWFFbGVtZW50OjpwcmVsb2FkKCkgY29uc3QKICNlbmRpZgogCiAgICAgc3dpdGNoIChtX3By
ZWxvYWQpIHsKLSAgICBjYXNlIE1lZGlhUGxheWVyOjpOb25lOgorICAgIGNhc2UgTWVkaWFQbGF5
ZXI6OlByZWxvYWQ6Ok5vbmU6CiAgICAgICAgIHJldHVybiAibm9uZSJfczsKLSAgICBjYXNlIE1l
ZGlhUGxheWVyOjpNZXRhRGF0YToKKyAgICBjYXNlIE1lZGlhUGxheWVyOjpQcmVsb2FkOjpNZXRh
RGF0YToKICAgICAgICAgcmV0dXJuICJtZXRhZGF0YSJfczsKLSAgICBjYXNlIE1lZGlhUGxheWVy
OjpBdXRvOgorICAgIGNhc2UgTWVkaWFQbGF5ZXI6OlByZWxvYWQ6OkF1dG86CiAgICAgICAgIHJl
dHVybiAiYXV0byJfczsKICAgICB9CiAKQEAgLTQ3MzIsNyArNDcxOCw3IEBAIFVSTCBIVE1MTWVk
aWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqIGNvbnRlbnRUeXBl
LCBTdHJpbmcqIGtlCiAgICAgICAgICAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5hbGxv
d01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjaygpIHx8
IFRyYXZlcnNhbDxIVE1MU291cmNlRWxlbWVudD46Om5leHRTa2lwcGluZ0NoaWxkcmVuKHNvdXJj
ZSkpCiAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5jb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnQgPSBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgp
OwogCi0gICAgICAgICAgICBpZiAoIU1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVy
cykpCisgICAgICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAg
ICAgICAgICBnb3RvIENoZWNrQWdhaW47CiAgICAgICAgIH0KIApAQCAtNTA2OSw3ICs1MDU1LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVk
KCkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIC8vIFRoZSBNZWRpYVBsYXll
ciBjYW1lIGFjcm9zcyBjb250ZW50IHdoaWNoIG5vIGluc3RhbGxlZCBlbmdpbmUgc3VwcG9ydHMu
Ci0gICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAg
bWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9y
KTsKIH0KIAogLy8gTWVkaWFQbGF5ZXJQcmVzZW50YXRpb24gbWV0aG9kcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBjMGJkNmIyMjNmNTNjNGQ1OGU5ZDhiZWZlMjY0
MTM4YWMyZjJiZDRkLi5kOTM0OWQ2Nzk5MjQzYWQzMmM1ZDg2ZDI2NGM5MTg0ZmEyMmNiZmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTg3LDggKzE4Nyw4IEBA
IHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCk7IH0KICNlbmRpZgogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOwotICAgIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkp
OwotICAgIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSB2aWRlb0Z1bGxzY3JlZW5HcmF2
aXR5KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OyB9CisgICAgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpOwor
ICAgIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkgdmlkZW9GdWxsc2NyZWVuR3Jhdml0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eTsgfQogI2VuZGlmCiAKICAgICB2
b2lkIHNjaGVkdWxlQ2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGFiaWxpdHkoKTsKQEAgLTIwMSw3
ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZU5vdGlmeUFib3V0UGxheWluZygp
OwogICAgIHZvaWQgbm90aWZ5QWJvdXRQbGF5aW5nKFBsYXlQcm9taXNlVmVjdG9yJiYpOwogICAg
IAotICAgIE1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNv
bnN0OworICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25z
dDsKICAgICAKICAgICBib29sIGluQWN0aXZlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lu
QWN0aXZlRG9jdW1lbnQ7IH0KIApAQCAtNDk1LDggKzQ5NSw4IEBAIHB1YmxpYzoKIAogICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBmaWxlU2l6ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBtZWRpYUxvYWRp
bmdGYWlsZWQoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlKTsKLSAgICB2b2lkIG1lZGlh
TG9hZGluZ0ZhaWxlZEZhdGFsbHkoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlKTsKKyAg
ICB2b2lkIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKKyAg
ICB2b2lkIG1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZSk7CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBXRUJDT1JFX0VYUE9SVCBkb3Vi
bGUgcGxheWVyVm9sdW1lKCkgY29uc3Q7CkBAIC01MTUsNyArNTE1LDcgQEAgcHVibGljOgogCiAg
ICAgUmVmUHRyPFZpZGVvUGxheWJhY2tRdWFsaXR5PiBnZXRWaWRlb1BsYXliYWNrUXVhbGl0eSgp
OwogCi0gICAgTWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ByZWxvYWQ7IH0KKyAgICBNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3ByZWxvYWQ7IH0KICAgICBNZWRpYUVsZW1lbnRTZXNzaW9u
JiBtZWRpYVNlc3Npb24oKSBjb25zdCB7IHJldHVybiAqbV9tZWRpYVNlc3Npb247IH0KIAogI2lm
IEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCkBAIC02NTAsOCArNjUwLDggQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKSB7IH0KICAgICAKLSAg
ICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSk7Ci0gICAg
dm9pZCBzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlKTsKKyAg
ICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpOworICAgIHZvaWQg
c2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogCiAgICAgZG91Ymxl
IGVmZmVjdGl2ZVBsYXliYWNrUmF0ZSgpIGNvbnN0OwogICAgIGRvdWJsZSByZXF1ZXN0ZWRQbGF5
YmFja1JhdGUoKSBjb25zdDsKQEAgLTg2NSw3ICs4NjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNCbG9ja2VkKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigp
IGNvbnN0OwogICAgIGJvb2wgaGFzQ3VycmVudFNyYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICFtX2N1cnJlbnRTcmMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6
TGl2ZVN0cmVhbTsgfQorICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbW92aWVMb2FkVHlwZSgpID09IE1vdmllTG9hZFR5cGU6OkxpdmVTdHJlYW07IH0KIAog
ICAgIHZvaWQgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsKICAgICBlbnVtIGNsYXNzIFNsZWVwVHlw
ZSB7IE5vbmUsIERpc3BsYXksIFN5c3RlbSB9OwpAQCAtMTAzNywxMiArMTAzNywxMiBAQCBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+
IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GdWxsc2NyZWVu
RnJhbWU7Ci0gICAgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IG1fdmlkZW9GdWxsc2Ny
ZWVuR3Jhdml0eSB7IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgfTsKKyAg
ICBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eSB7IE1l
ZGlhUGxheWVyOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZUFzcGVjdCB9OwogI2VuZGlmCiAKICAgICBS
ZWZQdHI8TWVkaWFQbGF5ZXI+IG1fcGxheWVyOwogCi0gICAgTWVkaWFQbGF5ZXJFbnVtczo6UHJl
bG9hZCBtX3ByZWxvYWQgeyBNZWRpYVBsYXllcjo6QXV0byB9OworICAgIE1lZGlhUGxheWVyOjpQ
cmVsb2FkIG1fcHJlbG9hZCB7IFByZWxvYWQ6OkF1dG8gfTsKIAogICAgIERpc3BsYXlNb2RlIG1f
ZGlzcGxheU1vZGUgeyBVbmtub3duIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwCmluZGV4IDRjMTcyNjgwN2IyMWY5MDBmOWQ4NGIyNjZiYjA3YzU0MjA2
MmY3Y2QuLmRlNWZmMzc2OGIzZDVmNjBkYjkyZmRhMTdmNDVjMzIwNDA1ZDQxM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtNzAzLDggKzcwMyw4
IEBAIE1lZGlhUGxheWVyOjpQcmVsb2FkIE1lZGlhRWxlbWVudFNlc3Npb246OmVmZmVjdGl2ZVBy
ZWxvYWRGb3JFbGVtZW50KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHByZWxvYWQ7CiAKICAgICBp
ZiAobV9yZXN0cmljdGlvbnMgJiBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCkgewotICAgICAg
ICBpZiAocHJlbG9hZCA+IE1lZGlhUGxheWVyOjpNZXRhRGF0YSkKLSAgICAgICAgICAgIHJldHVy
biBNZWRpYVBsYXllcjo6TWV0YURhdGE7CisgICAgICAgIGlmIChwcmVsb2FkID4gTWVkaWFQbGF5
ZXI6OlByZWxvYWQ6Ok1ldGFEYXRhKQorICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpQ
cmVsb2FkOjpNZXRhRGF0YTsKICAgICB9CiAKICAgICByZXR1cm4gcHJlbG9hZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggN2I1MDRjMzlkNmIxZTYzYjhjMWJmODcwMTgx
Njk1M2I3YTVmYmYyMi4uZWI3ZjI2NzdkMGI1ZWZiNDQxZjY5YzY5YmI5MzY4ZDE4MGM0NDIzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTE0OCw3ICsxNDgsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudQogICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBtX3ZpZGVv
RWxlbWVudC0+ZnVsbHNjcmVlbk1vZGUoKSAhPSBtb2RlKQogICAgICAgICBtX3ZpZGVvRWxlbWVu
dC0+c2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7CiAKLSAgICBpZiAobV92aWRlb0VsZW1lbnQgJiYg
ZmluaXNoZWRXaXRoTWVkaWEgJiYgbW9kZSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSkgeworICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBmaW5pc2hlZFdpdGhN
ZWRpYSAmJiBtb2RlID09IE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkgewog
ICAgICAgICBpZiAobV92aWRlb0VsZW1lbnQtPmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkp
IHsKICAgICAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBtX3ZpZGVvRWxlbWVudC0+ZG9jdW1l
bnQoKS5kb21XaW5kb3coKSkKICAgICAgICAgICAgICAgICB3aW5kb3ctPmhpc3RvcnkoKS5iYWNr
KCk7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6c2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCByZWN0KQogICAgICAgICBtX3ZpZGVv
RWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUocmVjdCk7CiB9CiAKLXZvaWQgVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlhUGxh
eWVyRW51bXM6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQordm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6c2V0VmlkZW9MYXllckdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jh
dml0eSBncmF2aXR5KQogewogICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5H
cmF2aXR5KGdyYXZpdHkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDdkNWJjY2Q5MGIxNzk0YzcxNmVmM2ViMWQxOTk2ZDYz
YTc3NTUwODAuLmNlMjNhYjc4NGJjNmMyYTE1ZmI4OTFkODE1Nzk1OWYxYzE2NGI1NGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAg
LTE0Myw4ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zp
c2libGUoYm9vbCkgZmluYWwgeyB9OwogCi0gICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBu
ZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6RW1wdHk7IH0K
LSAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOyB9CisgICAgTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlOjpFbXB0eTsgfQorICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5
U3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2
ZU5vdGhpbmc7IH0KIAogICAgIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIDA7IH0KICAgICBkb3VibGUgbWluVGltZVNlZWthYmxlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gMDsgfQpAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNvbnN0IE1lZGlhCiAg
ICAgfQogCiAgICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBmb3VuZEVuZ2luZSA9IG51bGxw
dHI7Ci0gICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0ZWQgPSBNZWRpYVBsYXll
cjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0
ZWQgPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICAgICBmb3Ig
KGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIGlmIChj
dXJyZW50KSB7CiAgICAgICAgICAgICBpZiAoY3VycmVudCA9PSAmZW5naW5lKQpAQCAtOTE2LDEx
ICs5MTYsMTEgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9y
dHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmEKICAgICAvLyB1c2VyIGFnZW50IGtu
b3dzIGl0IGNhbm5vdCByZW5kZXIgb3IgaXMgdGhlIHR5cGUgImFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbSIKICAgICBBdG9tU3RyaW5nIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5cGUuY29u
dGFpbmVyVHlwZSgpOwogICAgIGlmIChjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRT
dHJlYW0oKSkKLSAgICAgICAgcmV0dXJuIElzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4g
U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIGNvbnN0IE1lZGlhUGxheWVyRmFj
dG9yeSogZW5naW5lID0gYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1l
dGVycyk7CiAgICAgaWYgKCFlbmdpbmUpCi0gICAgICAgIHJldHVybiBJc05vdFN1cHBvcnRlZDsK
KyAgICAgICAgcmV0dXJuIFN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICByZXR1
cm4gZW5naW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycyk7CiB9CkBAIC0xMTcw
LDcgKzExNzAsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKIHsK
ICAgICAvLyBJZiBtb3JlIHRoYW4gb25lIG1lZGlhIGVuZ2luZSBpcyBpbnN0YWxsZWQgYW5kIHRo
aXMgb25lIGZhaWxlZCBiZWZvcmUgZmluZGluZyBtZXRhZGF0YSwKICAgICAvLyBsZXQgdGhlIG5l
eHQgZW5naW5lIHRyeS4KLSAgICBpZiAobV9wcml2YXRlLT5uZXR3b3JrU3RhdGUoKSA+PSBGb3Jt
YXRFcnJvciAmJiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA8IEhhdmVNZXRhZGF0YSkgeworICAg
IGlmIChtX3ByaXZhdGUtPm5ldHdvcmtTdGF0ZSgpID49IE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkZvcm1hdEVycm9yICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSkgewogICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXll
ckVuZ2luZUZhaWxlZFRvTG9hZCgpOwogICAgICAgICBpZiAoaW5zdGFsbGVkTWVkaWFFbmdpbmVz
KCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlwZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRp
YUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkpKSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRp
bWVyLnN0YXJ0T25lU2hvdCgwX3MpOwpAQCAtMTU2Niw3ICsxNTY2LDcgQEAgY29uc3QgTG9nZ2Vy
JiBNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dnZXIoKQogfQogI2VuZGlmCiAKLVN0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlIGVu
dW1lcmF0aW9uVmFsdWUpCitTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUgZW51bWVyYXRpb25WYWx1ZSkKIHsKICAgICBzdGF0aWMgY29uc3Qg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAgICAgICAgTUFLRV9TVEFUSUNf
U1RSSU5HX0lNUEwoIkhhdmVOb3RoaW5nIiksCkBAIC0xNTc1LDE2ICsxNTc1LDE2IEBAIFN0cmlu
ZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRl
IGVudW1lcmF0aW9uVmFsdWUpCiAgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJIYXZl
RnV0dXJlRGF0YSIpLAogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiSGF2ZUVub3Vn
aERhdGEiKSwKICAgICB9OwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihN
ZWRpYVBsYXllckVudW1zOjpIYXZlTm90aGluZykgPT0gMCwgIk1lZGlhUGxheWVyRW51bXM6Okhh
dmVOb3RoaW5nIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6OkhhdmVNZXRhZGF0YSkgPT0gMSwgIk1l
ZGlhUGxheWVyRW51bXM6OkhhdmVNZXRhZGF0YSBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwotICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpIYXZl
Q3VycmVudERhdGEpID09IDIsICJNZWRpYVBsYXllckVudW1zOjpIYXZlQ3VycmVudERhdGEgaXMg
bm90IDIgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVf
dD4oTWVkaWFQbGF5ZXJFbnVtczo6SGF2ZUZ1dHVyZURhdGEpID09IDMsICJNZWRpYVBsYXllckVu
dW1zOjpIYXZlRnV0dXJlRGF0YSBpcyBub3QgMyBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpIYXZlRW5vdWdoRGF0
YSkgPT0gNCwgIk1lZGlhUGxheWVyRW51bXM6OkhhdmVFbm91Z2hEYXRhIGlzIG5vdCA0IGFzIGV4
cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZykgPT0gMCwgIk1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlOjpIYXZlTm90aGluZyBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFk
YXRhKSA9PSAxLCAiTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSBpcyBub3Qg
MSBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhKSA9PSAyLCAiTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSBpcyBub3QgMiBhcyBleHBlY3RlZCIpOwor
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZTo6SGF2ZUZ1dHVyZURhdGEpID09IDMsICJNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2
ZUZ1dHVyZURhdGEgaXMgbm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVFbm91Z2hEYXRh
KSA9PSA0LCAiTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVFbm91Z2hEYXRhIGlzIG5vdCA0
IGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRp
b25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAgIHJldHVybiB2YWx1ZXNb
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07CiB9CiAKLVN0cmluZyBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGUgZW51
bWVyYXRpb25WYWx1ZSkKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlIGVudW1lcmF0aW9uVmFsdWUpCiB7CiAgICAgc3RhdGljIGNvbnN0
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmFsdWVzW10gPSB7CiAgICAgICAgIE1BS0VfU1RBVElD
X1NUUklOR19JTVBMKCJFbXB0eSIpLApAQCAtMTU5NSw0NiArMTU5NSw0NiBAQCBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlIGVu
dW1lcmF0aW9uVmFsdQogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiTmV0d29ya0Vy
cm9yIiksCiAgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJEZWNvZGVFcnJvciIpLAog
ICAgIH07Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVy
RW51bXM6OkVtcHR5KSA9PSAwLCAiTWVkaWFQbGF5ZXJFbnVtczo6RW1wdHkgaXMgbm90IDAgYXMg
ZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQ
bGF5ZXJFbnVtczo6SWRsZSkgPT0gMSwgIk1lZGlhUGxheWVyRW51bXM6OklkbGUgaXMgbm90IDEg
YXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVk
aWFQbGF5ZXJFbnVtczo6TG9hZGluZykgPT0gMiwgIk1lZGlhUGxheWVyRW51bXM6OkxvYWRpbmcg
aXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNp
emVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6TG9hZGVkKSA9PSAzLCAiTWVkaWFQbGF5ZXJFbnVtczo6
TG9hZGVkIGlzIG5vdCAzIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
Y2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6OkZvcm1hdEVycm9yKSA9PSA0LCAiTWVkaWFQ
bGF5ZXJFbnVtczo6Rm9ybWF0RXJyb3IgaXMgbm90IDQgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya0Vy
cm9yKSA9PSA1LCAiTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya0Vycm9yIGlzIG5vdCA1IGFzIGV4
cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxh
eWVyRW51bXM6OkRlY29kZUVycm9yKSA9PSA2LCAiTWVkaWFQbGF5ZXJFbnVtczo6RGVjb2RlRXJy
b3IgaXMgbm90IDYgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0
PHNpemVfdD4oTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHkpID09IDAsICJNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0
YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
OjpJZGxlKSA9PSAxLCAiTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6SWRsZSBpcyBub3QgMSBh
cyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkaW5nKSA9PSAyLCAiTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6TG9hZGluZyBpcyBub3QgMiBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQp
ID09IDMsICJNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQgaXMgbm90IDMgYXMgZXhw
ZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5
ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3IpID09IDQsICJNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpGb3JtYXRFcnJvciBpcyBub3QgNCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpOZXR3
b3JrRXJyb3IpID09IDUsICJNZWRpYVBsYXllcjo6TmV0d29ya0Vycm9yIGlzIG5vdCA1IGFzIGV4
cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGU6OkRlY29kZUVycm9yKSA9PSA2LCAiTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6RGVjb2RlRXJyb3IgaXMgbm90IDYgYXMgZXhwZWN0ZWQiKTsKICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgo
dmFsdWVzKSk7CiAgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0
aW9uVmFsdWUpXTsKIH0KIAotU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlh
UGxheWVyRW51bXM6OlByZWxvYWQgZW51bWVyYXRpb25WYWx1ZSkKK1N0cmluZyBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllcjo6UHJlbG9hZCBlbnVtZXJhdGlvblZhbHVlKQog
ewogICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVlc1tdID0gewog
ICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiTm9uZSIpLAogICAgICAgICBNQUtFX1NU
QVRJQ19TVFJJTkdfSU1QTCgiTWV0YURhdGEiKSwKICAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5H
X0lNUEwoIkF1dG8iKSwKICAgICB9OwotICAgIHN0YXRpY19hc3NlcnQoIXN0YXRpY19jYXN0PHNp
emVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6Tm9uZSksICJNZWRpYVBsYXllckVudW1zOjpOb25lIGlz
IG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXpl
X3Q+KE1lZGlhUGxheWVyRW51bXM6Ok1ldGFEYXRhKSA9PSAxLCAiTWVkaWFQbGF5ZXJFbnVtczo6
TWV0YURhdGEgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6QXV0bykgPT0gMiwgIk1lZGlhUGxheWVy
RW51bXM6OkF1dG8gaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFz
dGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyOjpQcmVsb2FkOjpOb25lKSwgIk1lZGlhUGxh
eWVyOjpQcmVsb2FkOjpOb25lIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyOjpQcmVsb2FkOjpNZXRhRGF0YSkg
PT0gMSwgIk1lZGlhUGxheWVyOjpQcmVsb2FkOjpNZXRhRGF0YSBpcyBub3QgMSBhcyBleHBlY3Rl
ZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6
UHJlbG9hZDo6QXV0bykgPT0gMiwgIk1lZGlhUGxheWVyOjpQcmVsb2FkOjpBdXRvIGlzIG5vdCAy
IGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRp
b25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAgIHJldHVybiB2YWx1ZXNb
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07CiB9CiAKLVN0cmluZyBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgZW51
bWVyYXRpb25WYWx1ZSkKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIGVudW1lcmF0aW9uVmFsdWUpCiB7CiAgICAgc3RhdGljIGNvbnN0
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmFsdWVzW10gPSB7CiAgICAgICAgIE1BS0VfU1RBVElD
X1NUUklOR19JTVBMKCJJc05vdFN1cHBvcnRlZCIpLAogICAgICAgICBNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgiSXNTdXBwb3J0ZWQiKSwKICAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwo
Ik1heUJlU3VwcG9ydGVkIiksCiAgICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGF0aWNfY2Fz
dDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6OklzTm90U3VwcG9ydGVkKSwgIk1lZGlhUGxheWVy
RW51bXM6OklzTm90U3VwcG9ydGVkIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyRW51bXM6OklzU3VwcG9ydGVk
KSA9PSAxLCAiTWVkaWFQbGF5ZXJFbnVtczo6SXNTdXBwb3J0ZWQgaXMgbm90IDEgYXMgZXhwZWN0
ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJF
bnVtczo6TWF5QmVTdXBwb3J0ZWQpID09IDIsICJNZWRpYVBsYXllckVudW1zOjpNYXlCZVN1cHBv
cnRlZCBpcyBub3QgMiBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoIXN0YXRpY19j
YXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpLCAi
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQgaXMgbm90IDAgYXMgZXhw
ZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQpID09IDEsICJNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlOjpJc1N1cHBvcnRlZCBpcyBub3QgMSBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlC
ZVN1cHBvcnRlZCkgPT0gMiwgIk1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9y
dGVkIGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVf
dD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAgIHJl
dHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07CiB9CiAK
LVN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpCdWZm
ZXJpbmdQb2xpY3kgZW51bWVyYXRpb25WYWx1ZSkKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyhNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5IGVudW1lcmF0aW9uVmFsdWUpCiB7
CiAgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmFsdWVzW10gPSB7CiAg
ICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJEZWZhdWx0IiksCkBAIC0xNjQyLDEwICsx
NjQyLDEwIEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVu
dW1zOjpCdWZmZXJpbmdQb2xpY3kgZW51bWVyYXRpb25WCiAgICAgICAgIE1BS0VfU1RBVElDX1NU
UklOR19JTVBMKCJNYWtlUmVzb3VyY2VzUHVyZ2VhYmxlIiksCiAgICAgICAgIE1BS0VfU1RBVElD
X1NUUklOR19JTVBMKCJQdXJnZVJlc291cmNlcyIpLAogICAgIH07Ci0gICAgc3RhdGljX2Fzc2Vy
dCghc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k6
OkRlZmF1bHQpLCAiTWVkaWFQbGF5ZXJFbnVtczo6RGVmYXVsdCBpcyBub3QgMCBhcyBleHBlY3Rl
ZCIpOwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVu
dW1zOjpCdWZmZXJpbmdQb2xpY3k6OkxpbWl0UmVhZEFoZWFkKSA9PSAxLCAiTWVkaWFQbGF5ZXJF
bnVtczo6TGltaXRSZWFkQWhlYWQgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9s
aWN5OjpNYWtlUmVzb3VyY2VzUHVyZ2VhYmxlKSA9PSAyLCAiTWVkaWFQbGF5ZXJFbnVtczo6TWFr
ZVJlc291cmNlc1B1cmdlYWJsZSBpcyBub3QgMiBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xp
Y3k6OlB1cmdlUmVzb3VyY2VzKSA9PSAzLCAiTWVkaWFQbGF5ZXJFbnVtczo6UHVyZ2VSZXNvdXJj
ZXMgaXMgbm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGF0aWNfY2Fz
dDxzaXplX3Q+KE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6OkRlZmF1bHQpLCAiTWVkaWFQ
bGF5ZXI6OkRlZmF1bHQgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeTo6TGltaXRS
ZWFkQWhlYWQpID09IDEsICJNZWRpYVBsYXllcjo6TGltaXRSZWFkQWhlYWQgaXMgbm90IDEgYXMg
ZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFQ
bGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeTo6TWFrZVJlc291cmNlc1B1cmdlYWJsZSkgPT0gMiwgIk1l
ZGlhUGxheWVyOjpNYWtlUmVzb3VyY2VzUHVyZ2VhYmxlIGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7
CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhUGxheWVyOjpCdWZm
ZXJpbmdQb2xpY3k6OlB1cmdlUmVzb3VyY2VzKSA9PSAzLCAiTWVkaWFQbGF5ZXI6OlB1cmdlUmVz
b3VyY2VzIGlzIG5vdCAzIGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNp
emVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAg
IHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRl
eCBmYjllYmEwZTRhYmUzMWM3NTI3MDBjYjdjZTY4OTBkYjk4OWMyMjJiLi44YTdiMWU5YmZkNzg3
ZjUxMzA1MmI1Njg4MzQ1OTQ0MGRmOWQxYjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTI1Myw3ICsyNTMsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICAvLyBNZWRpYSBlbmdpbmUgc3VwcG9ydC4KLSAg
ICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU7CiAgICAgc3RhdGljIFN1cHBv
cnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYp
OwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsK
QEAgLTYxMSw3ICs2MTAsNyBAQCBwcml2YXRlOgogICAgIENvbnRlbnRUeXBlIG1fY29udGVudFR5
cGU7CiAgICAgU3RyaW5nIG1fa2V5U3lzdGVtOwogICAgIEludFNpemUgbV9zaXplOwotICAgIFBy
ZWxvYWQgbV9wcmVsb2FkIHsgQXV0byB9OworICAgIFByZWxvYWQgbV9wcmVsb2FkIHsgUHJlbG9h
ZDo6QXV0byB9OwogICAgIGRvdWJsZSBtX3ZvbHVtZSB7IDEgfTsKICAgICBib29sIG1fdmlzaWJs
ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAppbmRleCAwMTk1
YzY5NzZkNGVjNGE0OTgzYzQyYTQ3NmUxZDQ1ZGQ3YTYxOThiLi40YjEwZjA0ODMwODdlMmU2NmUz
YWFkODFlZTQ0MmU2ZDI0OGRlOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCkBAIC0zMSwxMiArMzEsNDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXllckVudW1zIHsKIHB1YmxpYzoKLSAgICBl
bnVtIE5ldHdvcmtTdGF0ZSB7IEVtcHR5LCBJZGxlLCBMb2FkaW5nLCBMb2FkZWQsIEZvcm1hdEVy
cm9yLCBOZXR3b3JrRXJyb3IsIERlY29kZUVycm9yIH07Ci0gICAgZW51bSBSZWFkeVN0YXRlICB7
IEhhdmVOb3RoaW5nLCBIYXZlTWV0YWRhdGEsIEhhdmVDdXJyZW50RGF0YSwgSGF2ZUZ1dHVyZURh
dGEsIEhhdmVFbm91Z2hEYXRhIH07Ci0gICAgZW51bSBNb3ZpZUxvYWRUeXBlIHsgVW5rbm93biwg
RG93bmxvYWQsIFN0b3JlZFN0cmVhbSwgTGl2ZVN0cmVhbSB9OwotICAgIGVudW0gUHJlbG9hZCB7
IE5vbmUsIE1ldGFEYXRhLCBBdXRvIH07Ci0gICAgZW51bSBWaWRlb0dyYXZpdHkgeyBWaWRlb0dy
YXZpdHlSZXNpemUsIFZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgVmlkZW9HcmF2aXR5UmVzaXpl
QXNwZWN0RmlsbCB9OwotICAgIGVudW0gU3VwcG9ydHNUeXBlIHsgSXNOb3RTdXBwb3J0ZWQsIElz
U3VwcG9ydGVkLCBNYXlCZVN1cHBvcnRlZCB9OworICAgIGVudW0gY2xhc3MgTmV0d29ya1N0YXRl
IDogdWludDhfdCB7CisgICAgICAgIEVtcHR5LAorICAgICAgICBJZGxlLAorICAgICAgICBMb2Fk
aW5nLAorICAgICAgICBMb2FkZWQsCisgICAgICAgIEZvcm1hdEVycm9yLAorICAgICAgICBOZXR3
b3JrRXJyb3IsCisgICAgICAgIERlY29kZUVycm9yCisgICAgfTsKKworICAgIGVudW0gY2xhc3Mg
UmVhZHlTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBIYXZlTm90aGluZywKKyAgICAgICAgSGF2
ZU1ldGFkYXRhLAorICAgICAgICBIYXZlQ3VycmVudERhdGEsCisgICAgICAgIEhhdmVGdXR1cmVE
YXRhLAorICAgICAgICBIYXZlRW5vdWdoRGF0YQorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIE1v
dmllTG9hZFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5rbm93biwKKyAgICAgICAgRG93bmxv
YWQsCisgICAgICAgIFN0b3JlZFN0cmVhbSwKKyAgICAgICAgTGl2ZVN0cmVhbQorICAgIH07CisK
KyAgICBlbnVtIGNsYXNzIFByZWxvYWQgOiB1aW50OF90IHsKKyAgICAgICAgTm9uZSwKKyAgICAg
ICAgTWV0YURhdGEsCisgICAgICAgIEF1dG8KKyAgICB9OworCisgICAgZW51bSBjbGFzcyBWaWRl
b0dyYXZpdHkgOiB1aW50OF90IHsKKyAgICAgICAgUmVzaXplLAorICAgICAgICBSZXNpemVBc3Bl
Y3QsCisgICAgICAgIFJlc2l6ZUFzcGVjdEZpbGwKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBT
dXBwb3J0c1R5cGUgOiB1aW50OF90IHsKKyAgICAgICAgSXNOb3RTdXBwb3J0ZWQsCisgICAgICAg
IElzU3VwcG9ydGVkLAorICAgICAgICBNYXlCZVN1cHBvcnRlZAorICAgIH07CisKICAgICBlbnVt
IHsKICAgICAgICAgVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgPSAwLAogICAgICAgICBWaWRlb0Z1
bGxzY3JlZW5Nb2RlU3RhbmRhcmQgPSAxIDw8IDAsCkBAIC00NCw3ICs4MSw3IEBAIHB1YmxpYzoK
ICAgICB9OwogICAgIHR5cGVkZWYgdWludDMyX3QgVmlkZW9GdWxsc2NyZWVuTW9kZTsKIAotICAg
IGVudW0gY2xhc3MgQnVmZmVyaW5nUG9saWN5IHsKKyAgICBlbnVtIGNsYXNzIEJ1ZmZlcmluZ1Bv
bGljeSA6IHVpbnQ4X3QgewogICAgICAgICBEZWZhdWx0LAogICAgICAgICBMaW1pdFJlYWRBaGVh
ZCwKICAgICAgICAgTWFrZVJlc291cmNlc1B1cmdlYWJsZSwKQEAgLTkwLDQgKzEyNyw3NiBAQCBz
dHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9s
aWN5PiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3Rh
dGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTo6RW1w
dHksCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTo6SWRs
ZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlOjpMb2Fk
aW5nLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU6Okxv
YWRlZCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlOjpG
b3JtYXRFcnJvciwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0
YXRlOjpOZXR3b3JrRXJyb3IsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5l
dHdvcmtTdGF0ZTo6RGVjb2RlRXJyb3IKKyAgICA+OworfTsKKworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpSZWFkeVN0YXRlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpS
ZWFkeVN0YXRlOjpIYXZlTm90aGluZywKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpSZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGEsCisgICAgICAgIFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU6OkhhdmVGdXR1cmVEYXRhLAorICAgICAgICBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YQorICAgID47
Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6Ok1vdmllTG9hZFR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBlLAorICAgICAg
ICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duLAorICAg
ICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBlOjpEb3dubG9hZCwK
KyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZTo6U3RvcmVk
U3RyZWFtLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBl
OjpMaXZlU3RyZWFtCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZD4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQs
CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQ6Ok5vbmUsCisgICAg
ICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQ6Ok1ldGFEYXRhLAorICAgICAg
ICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkOjpBdXRvCisgICAgPjsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
VmlkZW9HcmF2aXR5PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5LAorICAgICAgICBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZSwKKyAgICAgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5OjpSZXNpemVBc3BlY3QsCisgICAgICAg
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eTo6UmVzaXplQXNwZWN0Rmls
bAorICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSwK
KyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1
cHBvcnRlZCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBl
OjpJc1N1cHBvcnRlZCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9y
dHNUeXBlOjpNYXlCZVN1cHBvcnRlZAorICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeT4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k6OkxpbWl0UmVhZEFoZWFkLAorICAgICAgICBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k6Ok1ha2VSZXNvdXJjZXNQdXJn
ZWFibGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGlj
eTo6UHVyZ2VSZXNvdXJjZXMKKyAgICA+OworfTsKKwogfTsgLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaAppbmRleCAxZDJmYzAwOTIwNGE4YzAyNTU0MWIyYTJkN2M1ZjBkMGJlNWM5OWNkLi5kYmNj
MDVmY2U4MjI4NTEwYWQxMjcxOGE2NjBkYThiMDk5NDljYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTUx
LDcgKzE1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVsb2FkKE1lZGlh
UGxheWVyOjpQcmVsb2FkKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYXNBdmFpbGFibGVWaWRl
b0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gcmVhZHlTdGF0ZSgpID49IE1lZGlhUGxheWVyOjpIYXZl
Q3VycmVudERhdGE7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIHJlYWR5U3RhdGUoKSA+PSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6
SGF2ZUN1cnJlbnREYXRhOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFBvc3RlcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFBvc3Rlcihjb25zdCBT
dHJpbmcmKSB7IH0KQEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biYpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQogCi0gICAgdmlydHVhbCBNZWRpYVBs
YXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFQ
bGF5ZXI6OlVua25vd247IH0KKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBl
IG1vdmllTG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlw
ZTo6VW5rbm93bjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmcoKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQppbmRleCAwY2QwMTI5YTNjZDllYWY4NjNhZDQ3ODk4Mzg1MDMxZDhiNzZlZjZkLi5lOGQx
MjYwNDkxYWU5ZTJmZjAyNGExNjE1ZDdkNDM2NDAxNTAzYzUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTE0LDcgKzExNCw3
IEBAIGJvb2wgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1B
bmRNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtlCiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNl
ID0gdHJ1ZTsKICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZSk7CiAK
LSAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0
c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgIHJl
dHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShw
YXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsK
IH0KIAogYm9vbCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBDRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNlID0gdHJ1ZTsKICAgICBwYXJhbWV0
ZXJzLnR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZSk7CiAKLSAgICByZXR1cm4gTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgIT0g
TWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgIHJldHVybiBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PExlZ2FjeUNETVNlc3Npb24+IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNl
c3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCBhN2QwNDcw
YTNmMDQwOWM4MDM4OWIyMzJjOTdmYzk3YzQwMjgxNzFlLi5hN2RmNDNmNGY0MmMxODE5ZjQ1Nzg4
ZTI2ZTZjMTZmZmQxZWZmZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtNTgsOSArNTgsOSBAQCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbihNZWRp
YVBsYXllciogcGxheQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV9xdWV1ZWROb3Rp
ZmljYXRpb25zKCkKICAgICAsIG1fcXVldWVNdXRleCgpCi0gICAgLCBtX25ldHdvcmtTdGF0ZShN
ZWRpYVBsYXllcjo6RW1wdHkpCi0gICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVO
b3RoaW5nKQotICAgICwgbV9wcmVsb2FkKE1lZGlhUGxheWVyOjpBdXRvKQorICAgICwgbV9uZXR3
b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHkpCisgICAgLCBtX3JlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKQorICAgICwgbV9wcmVs
b2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkOjpBdXRvKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQogICAgICwgbV9s
b2dJZGVudGlmaWVyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkpCkBAIC0xNjgs
OCArMTY4LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmxvYWQoY29u
c3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAg
IHNldE5ldHdvcmtTdGF0ZShtX3ByZWxvYWQgPT0gTWVkaWFQbGF5ZXI6Ok5vbmUgPyBNZWRpYVBs
YXllcjo6SWRsZSA6IE1lZGlhUGxheWVyOjpMb2FkaW5nKTsKLSAgICBzZXRSZWFkeVN0YXRlKE1l
ZGlhUGxheWVyOjpIYXZlTm90aGluZyk7CisgICAgc2V0TmV0d29ya1N0YXRlKG1fcHJlbG9hZCA9
PSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6Tm9uZSA/IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6
OklkbGUgOiBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkaW5nKTsKKyAgICBzZXRSZWFk
eVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZyk7CiAKICAgICBtX2Fz
c2V0VVJMID0gVVJMKHsgfSwgdXJsKTsKICAgICBtX3JlcXVlc3RlZE9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUobV9hc3NldFVSTCk7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Ojpsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCopCiB7Ci0gICAg
c2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgc2V0TmV0d29y
a1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yKTsKIH0KICNlbmRp
ZgogCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OnBsYXlhYmlsaXR5S25vd24oKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OnByZXBhcmVUb1BsYXkoKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0g
ICAgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6QXV0byk7CisgICAgc2V0UHJlbG9hZChNZWRpYVBs
YXllcjo6UHJlbG9hZDo6QXV0byk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpwbGF5KCkKQEAgLTQ0MCw3ICs0NDAsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbjo6aXNSZWFkeUZvclZpZGVvU2V0dXAoKSBjb25zdAogICAgIC8vIEFWRm91
bmRhdGlvbiB3aWxsIG5vdCByZXR1cm4gdHJ1ZSBmb3IgZmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxl
IHVudGlsCiAgICAgLy8gYW4gQVZQbGF5ZXJMYXllciBoYXMgYmVlbiBhZGRlZCB0byB0aGUgQVZQ
bGF5ZXJJdGVtLCBzbyBhbGxvdyB2aWRlbyBzZXR1cAogICAgIC8vIGhlcmUgaWYgYSB2aWRlbyB0
cmFjayB0byB0cmlnZ2VyIGFsbG9jYXRpb24gb2YgYSBBVlBsYXllckxheWVyLgotICAgIHJldHVy
biAobV9pc0FsbG93ZWRUb1JlbmRlciB8fCBtX2NhY2hlZEhhc1ZpZGVvKSAmJiBtX3JlYWR5U3Rh
dGUgPj0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSAmJiBtX3BsYXllci0+dmlzaWJsZSgpOwor
ICAgIHJldHVybiAobV9pc0FsbG93ZWRUb1JlbmRlciB8fCBtX2NhY2hlZEhhc1ZpZGVvKSAmJiBt
X3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSAmJiBt
X3BsYXllci0+dmlzaWJsZSgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjo6cHJlcGFyZUZvclJlbmRlcmluZygpCkBAIC00OTEsMzAgKzQ5MSwzMCBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6dXBkYXRlU3RhdGVzKCkKICAgICBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSBuZXdSZWFkeVN0YXRlID0gbV9yZWFkeVN0YXRlOwogCiAgICAgaWYg
KG1fbG9hZGluZ01ldGFkYXRhKQotICAgICAgICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXll
cjo6TG9hZGluZzsKKyAgICAgICAgbmV3TmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6TG9hZGluZzsKICAgICBlbHNlIHsKICAgICAgICAgLy8gLWxvYWRWYWx1ZXNBc3lu
Y2hyb25vdXNseUZvcktleXM6Y29tcGxldGlvbkhhbmRsZXI6IGhhcyBpbnZva2VkIGl0cyBoYW5k
bGVyOyB0ZXN0IHN0YXR1cyBvZiBrZXlzIGFuZCBkZXRlcm1pbmUgc3RhdGUuCiAgICAgICAgIEFz
c2V0U3RhdHVzIGFzc2V0U3RhdHVzID0gdGhpcy0+YXNzZXRTdGF0dXMoKTsKICAgICAgICAgSXRl
bVN0YXR1cyBpdGVtU3RhdHVzID0gcGxheWVySXRlbVN0YXR1cygpOwogICAgICAgICAKICAgICAg
ICAgbV9hc3NldElzUGxheWFibGUgPSAoYXNzZXRTdGF0dXMgPT0gTWVkaWFQbGF5ZXJBVkFzc2V0
U3RhdHVzUGxheWFibGUpOwotICAgICAgICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6
OkhhdmVNZXRhZGF0YSAmJiBhc3NldFN0YXR1cyA+IE1lZGlhUGxheWVyQVZBc3NldFN0YXR1c0xv
YWRpbmcpIHsKKyAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlOjpIYXZlTWV0YWRhdGEgJiYgYXNzZXRTdGF0dXMgPiBNZWRpYVBsYXllckFWQXNzZXRTdGF0
dXNMb2FkaW5nKSB7CiAgICAgICAgICAgICBpZiAobV9hc3NldElzUGxheWFibGUpIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXNzZXRTdGF0dXMgPj0gTWVkaWFQbGF5ZXJBVkFzc2V0U3RhdHVzTG9h
ZGVkKQotICAgICAgICAgICAgICAgICAgICBuZXdSZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6Okhh
dmVNZXRhZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGE7CiAgICAgICAgICAgICAgICAgaWYgKGl0ZW1T
dGF0dXMgPD0gTWVkaWFQbGF5ZXJBVlBsYXllckl0ZW1TdGF0dXNVbmtub3duKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChhc3NldFN0YXR1cyA9PSBNZWRpYVBsYXllckFWQXNzZXRTdGF0dXNG
YWlsZWQgfHwgbV9wcmVsb2FkID4gTWVkaWFQbGF5ZXI6Ok1ldGFEYXRhIHx8IGlzTGl2ZVN0cmVh
bSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhc3NldFN0YXR1cyA9PSBNZWRpYVBsYXll
ckFWQXNzZXRTdGF0dXNGYWlsZWQgfHwgbV9wcmVsb2FkID4gTWVkaWFQbGF5ZXI6OlByZWxvYWQ6
Ok1ldGFEYXRhIHx8IGlzTGl2ZVN0cmVhbSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBUaGUgYXNzZXQgaXMgcGxheWFibGUgYnV0IGRvZXNuJ3Qgc3VwcG9ydCBpbnNwZWN0aW9uIHBy
aW9yIHRvIHBsYXliYWNrIChlZy4gc3RyZWFtaW5nIGZpbGVzKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIG9yIHdlIGFyZSBzdXBwb3NlZCB0byBwcmVwYXJlIGZvciBwbGF5YmFjayBpbW1l
ZGlhdGVseSwgc28gY3JlYXRlIHRoZSBwbGF5ZXIgaXRlbSBub3cuCi0gICAgICAgICAgICAgICAg
ICAgICAgICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld05ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkxvYWRpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QbGF5KCk7CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgbmV3TmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OklkbGU7CisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdOZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpJZGxlOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gRklY
IE1FOiBmZXRjaCB0aGUgZXJyb3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBAInBsYXlhYmxlIiBrZXkg
dG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBmb3JtYXQgCiAgICAgICAgICAgICAgICAgLy8gYW5kIG5l
dHdvcmsgZXJyb3JzLgotICAgICAgICAgICAgICAgIG5ld05ldHdvcmtTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpGb3JtYXRFcnJvcjsKKyAgICAgICAgICAgICAgICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICAKQEAgLTUzMCwyNSArNTMwLDI1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgICAgIC8vIElmIHRo
ZSBzdGF0dXMgYmVjb21lcyBQbGF5YmFja0J1ZmZlckZ1bGwsIGxvYWRpbmcgc3RvcHMgYW5kIHRo
ZSBzdGF0dXMgd2lsbCBub3QKICAgICAgICAgICAgICAgICAvLyBwcm9ncmVzcyB0byBMaWtlbHlU
b0tlZXBVcC4gU2V0IHRoZSByZWFkeVN0YXRlIHRvICBIQVZFX0VOT1VHSF9EQVRBLCBvbiB0aGUK
ICAgICAgICAgICAgICAgICAvLyBwcmVzdW1wdGlvbiB0aGF0IGlmIHRoZSBwbGF5YmFjayBidWZm
ZXIgaXMgZnVsbCwgcGxheWJhY2sgd2lsbCBwcm9iYWJseSBub3Qgc3RhbGwuCi0gICAgICAgICAg
ICAgICAgbmV3UmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKKyAgICAg
ICAgICAgICAgICBuZXdSZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVF
bm91Z2hEYXRhOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIE1l
ZGlhUGxheWVyQVZQbGF5ZXJJdGVtU3RhdHVzUmVhZHlUb1BsYXk6Ci0gICAgICAgICAgICAgICAg
aWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGEgJiYgbWF4VGlt
ZUxvYWRlZCgpID4gY3VycmVudE1lZGlhVGltZSgpKQotICAgICAgICAgICAgICAgICAgICBuZXdS
ZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVGdXR1cmVEYXRhOworICAgICAgICAgICAgICAg
IGlmIChtX3JlYWR5U3RhdGUgIT0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVFbm91Z2hE
YXRhICYmIG1heFRpbWVMb2FkZWQoKSA+IGN1cnJlbnRNZWRpYVRpbWUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRnV0
dXJlRGF0YTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBNZWRp
YVBsYXllckFWUGxheWVySXRlbVN0YXR1c1BsYXliYWNrQnVmZmVyRW1wdHk6Ci0gICAgICAgICAg
ICAgICAgbmV3UmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGE7CisgICAg
ICAgICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZl
Q3VycmVudERhdGE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChpdGVtU3RhdHVzID09IE1lZGlhUGxheWVyQVZQbGF5ZXJJdGVtU3RhdHVz
UGxheWJhY2tCdWZmZXJGdWxsKQotICAgICAgICAgICAgICAgIG5ld05ldHdvcmtTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpJZGxlOworICAgICAgICAgICAgICAgIG5ld05ldHdvcmtTdGF0ZSA9IE1lZGlh
UGxheWVyOjpOZXR3b3JrU3RhdGU6OklkbGU7CiAgICAgICAgICAgICBlbHNlIGlmIChpdGVtU3Rh
dHVzID09IE1lZGlhUGxheWVyQVZQbGF5ZXJJdGVtU3RhdHVzRmFpbGVkKQotICAgICAgICAgICAg
ICAgIG5ld05ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpEZWNvZGVFcnJvcjsKKyAgICAgICAg
ICAgICAgICBuZXdOZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpEZWNv
ZGVFcnJvcjsKICAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW1TdGF0dXMgIT0gTWVkaWFQbGF5ZXJB
VlBsYXllckl0ZW1TdGF0dXNQbGF5YmFja0J1ZmZlckZ1bGwgJiYgaXRlbVN0YXR1cyA+PSBNZWRp
YVBsYXllckFWUGxheWVySXRlbVN0YXR1c1JlYWR5VG9QbGF5KQotICAgICAgICAgICAgICAgIG5l
d05ldHdvcmtTdGF0ZSA9IChtYXhUaW1lTG9hZGVkKCkgPT0gZHVyYXRpb25NZWRpYVRpbWUoKSkg
PyBNZWRpYVBsYXllcjo6TG9hZGVkIDogTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisgICAgICAgICAg
ICAgICAgbmV3TmV0d29ya1N0YXRlID0gKG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbk1lZGlh
VGltZSgpKSA/IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRlZCA6IE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGU6OkxvYWRpbmc7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU1Niw4ICs1
NTYsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6dXBkYXRlU3RhdGVz
KCkKICAgICAgICAgc2V0VXBWaWRlb1JlbmRlcmluZygpOwogCiAgICAgaWYgKCFtX2hhdmVSZXBv
cnRlZEZpcnN0VmlkZW9GcmFtZSAmJiBtX2NhY2hlZEhhc1ZpZGVvICYmIGhhc0F2YWlsYWJsZVZp
ZGVvRnJhbWUoKSkgewotICAgICAgICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6Okhh
dmVDdXJyZW50RGF0YSkKLSAgICAgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6
SGF2ZUN1cnJlbnREYXRhOworICAgICAgICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAgICAgICAgICAgIG5ld1JlYWR5U3RhdGUg
PSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhOwogICAgICAgICBtX2hh
dmVSZXBvcnRlZEZpcnN0VmlkZW9GcmFtZSA9IHRydWU7CiAgICAgICAgIG1fcGxheWVyLT5maXJz
dFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKICAgICB9IGVsc2UgaWYgKCFoYXNBdmFpbGFibGVWaWRl
b0ZyYW1lKCkpCkBAIC02OTMsMTIgKzY5MywxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbjo6cmVwYWludCgpCiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246Om1vdmllTG9hZFR5cGUoKSBjb25zdAogewogICAgIGlm
ICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBhc3NldFN0YXR1cygpID09IE1lZGlhUGxheWVyQVZB
c3NldFN0YXR1c1Vua25vd24pCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6VW5rbm93bjsK
KyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duOwogCiAg
ICAgaWYgKGlzTGl2ZVN0cmVhbSgpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkxpdmVT
dHJlYW07CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6TGl2ZVN0
cmVhbTsKIAotICAgIHJldHVybiBNZWRpYVBsYXllcjo6RG93bmxvYWQ7CisgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpEb3dubG9hZDsKIH0KIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJl
bG9hZCkKQEAgLTcxMCwxNCArNzEwLDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQpCiAKICAgICBz
ZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKIAotICAgIGlmIChtX3ByZWxvYWQgPj0gTWVkaWFQbGF5
ZXI6Ok1ldGFEYXRhICYmIGFzc2V0U3RhdHVzKCkgPT0gTWVkaWFQbGF5ZXJBVkFzc2V0U3RhdHVz
RG9lc05vdEV4aXN0KSB7CisgICAgaWYgKG1fcHJlbG9hZCA+PSBNZWRpYVBsYXllcjo6UHJlbG9h
ZDo6TWV0YURhdGEgJiYgYXNzZXRTdGF0dXMoKSA9PSBNZWRpYVBsYXllckFWQXNzZXRTdGF0dXNE
b2VzTm90RXhpc3QpIHsKICAgICAgICAgY3JlYXRlQVZBc3NldEZvclVSTChtX2Fzc2V0VVJMKTsK
ICAgICAgICAgY2hlY2tQbGF5YWJpbGl0eSgpOwogICAgIH0KIAogICAgIC8vIERvbid0IGZvcmNl
IGNyZWF0aW9uIG9mIHRoZSBwbGF5ZXIgYW5kIHBsYXllciBpdGVtIHVubGVzcyB3ZSBhbHJlYWR5
IGtub3cgdGhhdCB0aGUgYXNzZXQgaXMgcGxheWFibGUuIElmIHdlIGFyZW4ndAogICAgIC8vIHRo
ZXJlIHlldCwgb3IgaWYgd2UgYWxyZWFkeSBrbm93IGl0IGlzIG5vdCBwbGF5YWJsZSwgY3JlYXRp
bmcgdGhlbSBub3cgd29uJ3QgaGVscC4KLSAgICBpZiAobV9wcmVsb2FkID09IE1lZGlhUGxheWVy
OjpBdXRvICYmIG1fYXNzZXRJc1BsYXlhYmxlKSB7CisgICAgaWYgKG1fcHJlbG9hZCA9PSBNZWRp
YVBsYXllcjo6UHJlbG9hZDo6QXV0byAmJiBtX2Fzc2V0SXNQbGF5YWJsZSkgewogICAgICAgICBj
cmVhdGVBVlBsYXllckl0ZW0oKTsKICAgICAgICAgY3JlYXRlQVZQbGF5ZXIoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgK
aW5kZXggMDQ1MzI0NDMyZjdhZDI5NjY2YmNjNGM4OWQ5YThiM2Q5NTQyZGRmNC4uNmEyMGEyZmYw
ZDQwYzA3ZWUxNTZmMTk3ZjFhMGY0YzhhNGJmMzJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaApAQCAtMTY2LDcgKzE2Niw3IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
ICAgIHZvaWQgbG9hZChNZWRpYVN0cmVhbVByaXZhdGUmKSBvdmVycmlkZSB7IHNldE5ldHdvcmtT
dGF0ZShNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOyB9CisgICAgdm9pZCBsb2FkKE1lZGlhU3Ry
ZWFtUHJpdmF0ZSYpIG92ZXJyaWRlIHsgc2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGU6OkZvcm1hdEVycm9yKTsgfQogI2VuZGlmCiAgICAgdm9pZCBjYW5jZWxMb2FkKCkg
b3ZlcnJpZGUgPSAwOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlh
UmVuZGVyaW5nTW9kZSBjdXJyZW50UmVuZGVyaW5nTW9kZSgpIGNvbnN0OwogICAgIE1lZGlhUmVu
ZGVyaW5nTW9kZSBwcmVmZXJyZWRSZW5kZXJpbmdNb2RlKCkgY29uc3Q7CiAKLSAgICBib29sIG1l
dGFEYXRhQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlID49IE1lZGlhUGxh
eWVyOjpIYXZlTWV0YWRhdGE7IH0KKyAgICBib29sIG1ldGFEYXRhQXZhaWxhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWFkeVN0YXRlID49IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0
YWRhdGE7IH0KICAgICBkb3VibGUgcmVxdWVzdGVkUmF0ZSgpIGNvbnN0OwogICAgIE1lZGlhVGlt
ZSBtYXhUaW1lTG9hZGVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc1JlYWR5Rm9yVmlkZW9TZXR1cCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggMGNlOGNlYjQ4YmQ3ODhjZWIxOWFhOWRkODk3
ZjkyOTlkZWFiZGQwZC4uODU2MmU4NDVkMWZjYTBjMzllNmNjZmUxYTcxM2M1ZGFiNTgxNTcyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC05MDcsMjQgKzkwNywyNCBAQCBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzdXBwb3J0c1R5cGUo
Y29uc3QgTQogewogICAgIGF1dG8gY29udGFpbmVyVHlwZSA9IHBhcmFtZXRlcnMudHlwZS5jb250
YWluZXJUeXBlKCk7CiAgICAgaWYgKGlzVW5zdXBwb3J0ZWRNSU1FVHlwZShjb250YWluZXJUeXBl
KSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogCiAgICAg
aWYgKCFzdGF0aWNNSU1FVHlwZUxpc3QoKS5jb250YWlucyhjb250YWluZXJUeXBlKSAmJiAhYXZm
TUlNRVR5cGVzKCkuY29udGFpbnMoY29udGFpbmVyVHlwZSkpCi0gICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIGF1dG8gY29kZWNzID0gcGFyYW1ldGVy
cy50eXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOwogI2lmIEhB
VkUoQVZDRlVSTF9QTEFZQUJMRV9NSU1FVFlQRSkKICAgICAvLyBUaGUgc3BlYyBzYXlzOgogICAg
IC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNz
IHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0
ZWQgb3Igbm90LiIKICAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOwogCiAgICAgU3RyaW5nIHR5cGVTdHJpbmcgPSBj
b250YWluZXJUeXBlICsgIjsgY29kZWNzPVwiIiArIGNvZGVjcyArICJcIiI7Ci0gICAgcmV0dXJu
IEFWQ0ZVUkxBc3NldElzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBlKHR5cGVTdHJpbmcuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSkgPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXll
cjo6TWF5QmVTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIEFWQ0ZVUkxBc3NldElzUGxheWFibGVFeHRl
bmRlZE1JTUVUeXBlKHR5cGVTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkgPyBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGU6Ok1heUJlU3VwcG9ydGVkOwogI2Vsc2UKICAgICBpZiAoYXZmTUlNRVR5cGVzKCkuY29udGFp
bnMoY29udGFpbmVyVHlwZSkpCi0gICAgICAgIHJldHVybiBjb2RlY3MuaXNFbXB0eSgpID8gTWVk
aWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOwotICAg
IHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBjb2Rl
Y3MuaXNFbXB0eSgpID8gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQg
OiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKKyAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCmluZGV4IGU5OGQ4ZWE5MDAwNDcxOGNmYzkwNDRhMDk4MzZhZjBiOTBl
MGZlMDEuLmNhZGEyMzExYmI2YzY4MjI4OWIwZmE2NmJiNmQ4ZDUxMjU5M2Y2MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5Q
bGF5RmFzdFJldmVyc2VEaWRDaGFuZ2UoYm9vbCk7CiAgICAgdm9pZCBjYW5QbGF5RmFzdEZvcndh
cmREaWRDaGFuZ2UoYm9vbCk7CiAKLSAgICB2b2lkIHNldEJ1ZmZlcmluZ1BvbGljeShNZWRpYVBs
YXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3kpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QnVmZmVy
aW5nUG9saWN5KE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kpIG92ZXJyaWRlOwogCiAjaWYg
SEFWRShBVkZPVU5EQVRJT05fVklERU9fT1VUUFVUKQogICAgIHZvaWQgb3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZShBVlBsYXllckl0ZW1WaWRlb091dHB1dCopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KaW5kZXggNTQxMDM5MTM0MTllZTVkNDhlOWVjMWFjYjY4OTJmOThkZGU5ZjNiZC4uNzE4OTI5
YzYyMTIyMzExZjY5YTNkOGRhZTAyODIzZDMxNjE1MmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYKIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbihwbGF5ZXIpCiAgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihtYWtl
VW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCi0gICAgLCBtX3ZpZGVv
RnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCkK
KyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5
OjpSZXNpemVBc3BlY3QpCiAgICAgLCBtX29iamNPYnNlcnZlcihhZG9wdE5TKFtbV2ViQ29yZUFW
Rk1vdmllT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoUGxheWVyOm1ha2VXZWFrUHRyKCp0aGlzKV0p
KQogICAgICwgbV92aWRlb0ZyYW1lSGFzRHJhd24oZmFsc2UpCiAgICAgLCBtX2hhdmVDaGVja2Vk
UGxheWFiaWxpdHkoZmFsc2UpCkBAIC0xMDkxLDExICsxMDkxLDExIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRp
YVBsYXllcjo6CiAgICAgICAgIHJldHVybjsKIAogICAgIE5TU3RyaW5nICp2aWRlb0dyYXZpdHkg
PSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OwotICAgIGlmIChncmF2aXR5ID09IE1l
ZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemUpCisgICAgaWYgKGdyYXZpdHkgPT0gTWVkaWFQ
bGF5ZXI6OlZpZGVvR3Jhdml0eTo6UmVzaXplKQogICAgICAgICB2aWRlb0dyYXZpdHkgPSBBVkxh
eWVyVmlkZW9HcmF2aXR5UmVzaXplOwotICAgIGVsc2UgaWYgKGdyYXZpdHkgPT0gTWVkaWFQbGF5
ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCkKKyAgICBlbHNlIGlmIChncmF2aXR5ID09IE1l
ZGlhUGxheWVyOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZUFzcGVjdCkKICAgICAgICAgdmlkZW9HcmF2
aXR5ID0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBlbHNlIGlmIChncmF2
aXR5ID09IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKQorICAgIGVs
c2UgaWYgKGdyYXZpdHkgPT0gTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eTo6UmVzaXplQXNwZWN0
RmlsbCkKICAgICAgICAgdmlkZW9HcmF2aXR5ID0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFz
cGVjdEZpbGw7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE1
OTIsMzAgKzE1OTIsMzAgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QKIHsKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQogICAgIGlmIChwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCi0gICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICNlbmRpZgogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAgICAgaWYgKHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSkKLSAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogI2VuZGlmCiAKICAgICBh
dXRvIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpOwogICAg
IGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUoY29udGFpbmVyVHlwZSkpCi0gICAgICAgIHJldHVy
biBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIGlmICghc3RhdGljTUlNRVR5
cGVMaXN0KCkuY29udGFpbnMoY29udGFpbmVyVHlwZSkgJiYgIUFWQXNzZXRNSU1FVHlwZUNhY2hl
OjpzaW5nbGV0b24oKS5jYW5EZWNvZGVUeXBlKGNvbnRhaW5lclR5cGUpKQotICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICAvLyBUaGUgc3BlYyBzYXlz
OgogICAgIC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIg
dW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBz
dXBwb3J0ZWQgb3Igbm90LiIKICAgICBpZiAocGFyYW1ldGVycy50eXBlLmNvZGVjcygpLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOwogCiAg
ICAgaWYgKCFjb250ZW50VHlwZU1lZXRzSGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHMocGFyYW1l
dGVycy50eXBlLCBwYXJhbWV0ZXJzLmNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9y
dCkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAogICAg
IE5TU3RyaW5nICp0eXBlU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDsg
Y29kZWNzPVwiJUBcIiIsIChOU1N0cmluZyAqKWNvbnRhaW5lclR5cGUsIChOU1N0cmluZyAqKXBh
cmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKV07
Ci0gICAgcmV0dXJuIFtQQUw6OmdldEFWVVJMQXNzZXRDbGFzcygpIGlzUGxheWFibGVFeHRlbmRl
ZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQ
bGF5ZXI6Ok1heUJlU3VwcG9ydGVkOworICAgIHJldHVybiBbUEFMOjpnZXRBVlVSTEFzc2V0Q2xh
c3MoKSBpc1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlwZTp0eXBlU3RyaW5nXSA/IE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6
TWF5QmVTdXBwb3J0ZWQ7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCkBAIC0xNjI0LDcgKzE2MjQsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5
U3lzdAogICAgIGlmICgha2V5U3lzdGVtLmlzRW1wdHkoKSkgewogICAgICAgICAvLyAiQ2xlYXIg
S2V5IiBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIEhMUzoKICAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLnczYy5jbGVhcmtleSIpICYmICFtaW1lVHlwZS5p
c0VtcHR5KCkgJiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlv
bi94LW1wZWd1cmwiKSkKLSAgICAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBw
b3J0ZWQ7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaWYgKCFrZXlTeXN0
ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDcxNTI4Yzk5YzBjYzYwN2QzOGYyZWYzZTA3Mjg4
Y2Y2ZDMzNTFmZDYuLmRmZjNlMjQ1MmJmNWFlMjVhYzQ2MzA1YjEwMzlmZTI4NzNjOThiNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTEzMSw4ICsxMzEsOCBAQCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQyhNZWRpYQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV9zeW5jaHJvbml6
ZXIoYWRvcHROUyhbUEFMOjphbGxvY0FWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVySW5z
dGFuY2UoKSBpbml0XSkpCiAgICAgLCBtX3NlZWtUaW1lcigqdGhpcywgJk1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla0ludGVybmFsKQotICAgICwgbV9uZXR3b3JrU3Rh
dGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQotICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpI
YXZlTm90aGluZykKKyAgICAsIG1fbmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkVtcHR5KQorICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlTm90aGluZykKICAgICAsIG1fcmF0ZSgxKQogICAgICwgbV9wbGF5aW5nKDApCiAgICAgLCBt
X3NlZWtpbmcoZmFsc2UpCkBAIC0yMzMsNDEgKzIzMyw0MSBAQCBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBl
KGNvbgogewogICAgIC8vIFRoaXMgZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgbm9uLW1lZGlhLXNv
dXJjZSBzb3VyY2VzLgogICAgIGlmICghcGFyYW1ldGVycy5pc01lZGlhU291cmNlKQotICAgICAg
ICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKICAgICBpZiAocGFyYW1ldGVycy5pc01lZGlhU3RyZWFtKQotICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAjZW5kaWYKIAogICAgIGlmIChwYXJh
bWV0ZXJzLnR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90
U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNO
b3RTdXBwb3J0ZWQ7CiAKICAgICBpZiAoQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6
c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSkgewogICAgICAgICBpZiAoIUFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLnN1cHBvcnRzQ29udGVudFR5cGUocGFyYW1l
dGVycy50eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0
ZWQ7CisgICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQ7CiAgICAgfSBlbHNlIGlmIChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9u
KCkuaXNBdmFpbGFibGUoKSkgewogICAgICAgICBpZiAoIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpz
aW5nbGV0b24oKS5zdXBwb3J0c0NvbnRlbnRUeXBlKHBhcmFtZXRlcnMudHlwZSkpCi0gICAgICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogICAgIH0gZWxz
ZQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICAv
LyBUaGUgc3BlYyBzYXlzOgogICAgIC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8g
cmV0dXJuICJtYXliZSIgdW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxp
c2hlZCBhcyBiZWluZyBzdXBwb3J0ZWQgb3Igbm90LiIKICAgICBhdXRvIGNvZGVjcyA9IHBhcmFt
ZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKICAg
ICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNYXlC
ZVN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1h
eUJlU3VwcG9ydGVkOwogCiAgICAgU3RyaW5nIG91dHB1dENvZGVjcyA9IGNvZGVjczsKICAgICBp
ZiAoW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1l
dGVyOildKQogICAgICAgICBvdXRwdXRDb2RlY3MgPSBbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJz
ZXJDbGFzcygpIG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1l
dGVyOm91dHB1dENvZGVjc107CiAKICAgICBpZiAoIWNvbnRlbnRUeXBlTWVldHNIYXJkd2FyZURl
Y29kZVJlcXVpcmVtZW50cyhwYXJhbWV0ZXJzLnR5cGUsIHBhcmFtZXRlcnMuY29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJ
c05vdFN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6
OklzTm90U3VwcG9ydGVkOwogCiAgICAgU3RyaW5nIHR5cGUgPSBtYWtlU3RyaW5nKHBhcmFtZXRl
cnMudHlwZS5jb250YWluZXJUeXBlKCksICI7IGNvZGVjcz1cIiIsIG91dHB1dENvZGVjcywgIlwi
Iik7CiAgICAgaWYgKEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigp
LmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJldHVybiBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlw
ZUNhY2hlOjpzaW5nbGV0b24oKS5jYW5EZWNvZGVUeXBlKHR5cGUpID8gTWVkaWFQbGF5ZXI6Oklz
U3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwotICAgIHJldHVybiBBVkFz
c2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuY2FuRGVjb2RlVHlwZSh0eXBlKSA/IE1lZGlh
UGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKyAgICAg
ICAgcmV0dXJuIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNh
bkRlY29kZVR5cGUodHlwZSkgPyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRl
ZCA6IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOworICAgIHJldHVy
biBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuY2FuRGVjb2RlVHlwZSh0eXBlKSA/
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQ7CiB9CiAKICNwcmFnbWEgbWFyayAtCkBAIC0yNzYs
NyArMjc2LDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShjb24KIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpsb2FkKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gVGhp
cyBtZWRpYSBlbmdpbmUgb25seSBzdXBwb3J0cyBNZWRpYVNvdXJjZSBVUkxzLgotICAgIG1fbmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yOworICAgIG1fbmV0d29ya1N0YXRl
ID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7CiAgICAgbV9wbGF5ZXIt
Pm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIH0KIApAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpsb2FkKGNvbnN0IFN0cmluZyYsIE1l
ZGlhU291cmNlUHJpdmF0CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYpCiB7
Ci0gICAgc2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgc2V0
TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yKTsKIH0K
ICNlbmRpZgogCkBAIC02ODIsNyArNjgyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6Om5vdGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkKIAogTWVk
aWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjptb3ZpZUxvYWRUeXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN0
b3JlZFN0cmVhbTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OlN0b3Jl
ZFN0cmVhbTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnByZXBhcmVGb3JSZW5kZXJpbmcoKQpAQCAtNzU0LDcgKzc1NCw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjplbnN1cmVMYXllcigpCiAgICAgQVNTRVJUKG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKTsKICAgICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyKSB7CiAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGNy
ZWF0ZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciIpOwotICAgICAgICBzZXROZXR3b3JrU3Rh
dGUoTWVkaWFQbGF5ZXI6OkRlY29kZUVycm9yKTsKKyAgICAgICAgc2V0TmV0d29ya1N0YXRlKE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkRlY29kZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtODE1LDcgKzgxNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpkZXN0cm95RGVjb21wcmVzc2lvblNlc3Npb24oKQogCiBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2hvdWxkQmVQbGF5aW5nKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9wbGF5aW5nICYmICFzZWVraW5nKCkgJiYgYWxsUmVuZGVyZXJzSGF2
ZUF2YWlsYWJsZVNhbXBsZXMoKSAmJiBtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkhhdmVG
dXR1cmVEYXRhOworICAgIHJldHVybiBtX3BsYXlpbmcgJiYgIXNlZWtpbmcoKSAmJiBhbGxSZW5k
ZXJlcnNIYXZlQXZhaWxhYmxlU2FtcGxlcygpICYmIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGE7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRIYXNBdmFpbGFibGVWaWRlb0ZyYW1lKGJvb2wgZmxh
ZykKQEAgLTEwOTgsNyArMTA5OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlCiAgICAgZWxz
ZQogICAgICAgICBbbV9zeW5jaHJvbml6ZXIgc2V0UmF0ZTowXTsKIAotICAgIGlmIChtX3JlYWR5
U3RhdGUgPj0gTWVkaWFQbGF5ZXJFbnVtczo6SGF2ZUN1cnJlbnREYXRhICYmIGhhc1ZpZGVvKCkg
JiYgIW1faGFzQXZhaWxhYmxlVmlkZW9GcmFtZSkgeworICAgIGlmIChtX3JlYWR5U3RhdGUgPj0g
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSAmJiBoYXNWaWRlbygpICYm
ICFtX2hhc0F2YWlsYWJsZVZpZGVvRnJhbWUpIHsKICAgICAgICAgbV9yZWFkeVN0YXRlSXNXYWl0
aW5nRm9yQXZhaWxhYmxlRnJhbWUgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCA3NDBlOTZjYTQ4MGEwOTNlMTA4MjZjYTdiMDBiMTIz
YjljNzk5ZDI2Li5mZTY5ZmFjM2EzZTcwOTc2ZWQ1NmRhNGNkODUwYWM4NzYxOTY3YWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMTU4LDE0ICsxNTgsMTQgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICBib29sIG1ldGFEYXRhQXZhaWxhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0cmVhbVByaXZhdGUgJiYgbV9yZWFkeVN0YXRlID49
IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7IH0KKyAgICBib29sIG1ldGFEYXRhQXZhaWxhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0cmVhbVByaXZhdGUgJiYgbV9yZWFkeVN0YXRlID49
IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGE7IH0KIAogICAgIHZvaWQgYWNj
ZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBv
cnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0gICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2Fk
VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtOyB9
CisgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpMaXZlU3RyZWFtOyB9
CiAKICAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIApAQCAt
MjU1LDggKzI1NSw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV92aWRlb1RyYWNrTWFwOwogICAgIFBlbmRpbmdT
YW1wbGVRdWV1ZSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlOwogCi0gICAgTWVkaWFQbGF5ZXI6
Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZSB7IE1lZGlhUGxheWVyOjpFbXB0eSB9OwotICAg
IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZSB7IE1lZGlhUGxheWVyOjpIYXZl
Tm90aGluZyB9OworICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGUg
eyBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSB9OworICAgIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZSB7IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90
aGluZyB9OwogICAgIEZsb2F0U2l6ZSBtX2ludHJpbnNpY1NpemU7CiAgICAgZmxvYXQgbV92b2x1
bWUgeyAxIH07CiAgICAgRGlzcGxheU1vZGUgbV9kaXNwbGF5TW9kZSB7IE5vbmUgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCA2MzE0ODE0YmM4OGZjOWNmN2ViYmNlOTRmYzhlNzE5
MWRmM2Y0NTRmLi4yNTE5YzExNGY0MDg5NjlhM2M0MGJlYjM4NTQzNTkwOGYwYjI1YjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8
U3RyaW5nLCBBU0MKIAogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBwYXJhbWV0ZXJzLmlzTWVk
aWFTdHJlYW0gPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNOb3RT
dXBwb3J0ZWQ7CisgICAgcmV0dXJuIHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSA/IE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKICNwcmFnbWEgbWFyayAtCkBAIC01MjYsNyArNTI2LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmxvYWQoY29uc3Qg
U3RyaW5nJikKIHsKICAgICAvLyBUaGlzIG1lZGlhIGVuZ2luZSBvbmx5IHN1cHBvcnRzIE1lZGlh
U3RyZWFtIFVSTHMuCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKLSAgICAgICAg
c2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgICAgIHNldE5l
dHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAgICAg
fSk7CiB9CiAKQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6bG9hZChjb25zdCBTdHJpbmcmLCBNZWRpYVNvdXJjZVByaXZhdAogewog
ICAgIC8vIFRoaXMgbWVkaWEgZW5naW5lIG9ubHkgc3VwcG9ydHMgTWVkaWFTdHJlYW0gVVJMcy4K
ICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewotICAgICAgICBzZXROZXR3b3JrU3Rh
dGUoTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yKTsKKyAgICAgICAgc2V0TmV0d29ya1N0YXRlKE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yKTsKICAgICB9KTsKIH0KICNlbmRp
ZgpAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQogCiAgICAgc2NoZWR1bGVE
ZWZlcnJlZFRhc2soW3RoaXNdIHsKICAgICAgICAgdXBkYXRlVHJhY2tzKCk7Ci0gICAgICAgIHNl
dE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6SWRsZSk7CisgICAgICAgIHNldE5ldHdvcmtTdGF0
ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpJZGxlKTsKICAgICAgICAgdXBkYXRlUmVhZHlT
dGF0ZSgpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggNGRhMDlkMmIxNzhjMjJlNjNkMWVlZTViZjNi
MWI5ZmE3ZWNiMjhlNi4uMGU3YWUwNTNkOWRjZjMyYWM4ZTFiN2I5ZmZkZTUxOTA1NmQyNzI2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDLm1tCkBAIC04Miw3ICs4Miw3IEBAIE1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIE1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDCiAgICAgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuaXNN
ZWRpYVNvdXJjZSA9IHRydWU7CiAgICAgcGFyYW1ldGVycy50eXBlID0gY29udGVudFR5cGU7Ci0g
ICAgaWYgKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZCkKKyAgICBpZiAoTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVy
cykgPT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpCiAgICAgICAg
IHJldHVybiBOb3RTdXBwb3J0ZWQ7CiAKICAgICBhdXRvIG5ld1NvdXJjZUJ1ZmZlciA9IFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUodGhpcyk7CkBAIC0xMzEsNyArMTMxLDcgQEAg
dm9pZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpkdXJhdGlvbkNoYW5nZWQoKQogdm9pZCBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjptYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0
dXMgc3RhdHVzKQogewogICAgIGlmIChzdGF0dXMgPT0gRW9zTm9FcnJvcikKLSAgICAgICAgbV9w
bGF5ZXItPnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TG9hZGVkKTsKKyAgICAgICAgbV9w
bGF5ZXItPnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQp
OwogICAgIG1faXNFbmRlZCA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggMzExZGJmNDdhOTJlMjBi
ZGQyZDA2N2I0MzkzNDFjM2UzNWRkMTE3Yy4uNWE1NjFjMzhhOThjNzE1YWE2NTE4YjJlMGIyNDk2
MDI4MGFmZGUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpyZW1vdmVkRnJvbU1lZGlhU291cmNlKCkKIAogTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlYWR5U3RhdGUoKSBjb25z
dAogewotICAgIHJldHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNvdXJjZS0+cGxheWVyKCkt
PnJlYWR5U3RhdGUoKSA6IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKyAgICByZXR1cm4gbV9t
ZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5yZWFkeVN0YXRlKCkgOiBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVh
ZHlTdGF0ZSkKQEAgLTEyODksNyArMTI4OSw3IEBAIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmNhblN3aXRjaFRvVHlwZShjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCiAg
ICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRl
cnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CiAgICAgcGFyYW1ldGVycy50eXBlID0gY29udGVudFR5
cGU7Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3Vw
cG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAg
ICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5
cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0
ZWQ7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldFZpZGVvTGF5ZXIo
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFj
dG9yeUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKaW5kZXggMmVlMzgyNzA4NDk0
YzViN2EzMTY3NTlmZGRhZGI4NGYwMzJhYjlmYy4uOThhNTNjNDJmMzA1YjkyODRlY2VhNzhiNWUz
NmE0NzBkNzUwZGRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5Q29jb2EuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgY3JlYXRlTWVkaWFQ
bGF5ZXJEZWNvZGluZ0NvbmZpZ3VyYXRpb25Db2NvYShNZWRpYURlY29kaW5nQ29uZmlndXJhdGlv
biYmIGNvCiAgICAgICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVycyB7
IH07CiAgICAgICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKHZpZGVvQ29uZmlndXJh
dGlvbi5jb250ZW50VHlwZSk7CiAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IGNv
bmZpZ3VyYXRpb24udHlwZSA9PSBNZWRpYURlY29kaW5nVHlwZTo6TWVkaWFTb3VyY2U7Ci0gICAg
ICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxh
eWVyOjpJc1N1cHBvcnRlZCkgeworICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlw
ZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkg
ewogICAgICAgICAgICAgY2FsbGJhY2soe3sgfSwgV1RGTW92ZShjb25maWd1cmF0aW9uKX0pOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBj
cmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkNvY29hKE1lZGlhRGVjb2RpbmdD
b25maWd1cmF0aW9uJiYgY28KICAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBw
YXJhbWV0ZXJzIHsgfTsKICAgICAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5cGUoY29u
ZmlndXJhdGlvbi5hdWRpby52YWx1ZSgpLmNvbnRlbnRUeXBlKTsKICAgICAgICAgcGFyYW1ldGVy
cy5pc01lZGlhU291cmNlID0gY29uZmlndXJhdGlvbi50eXBlID09IE1lZGlhRGVjb2RpbmdUeXBl
OjpNZWRpYVNvdXJjZTsKLSAgICAgICAgaWYgKE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFy
YW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkKSB7CisgICAgICAgIGlmIChNZWRp
YVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGU6OklzU3VwcG9ydGVkKSB7CiAgICAgICAgICAgICBjYWxsYmFjayh7eyB9LCBXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDEyN2M1
N2QxYWI4NTFmM2MyNDc2OGUwYTU1NzFhOGZmM2ZhZTZlZS4uZDQ4ODU0MjI2N2EzN2EyYjM4ZDU5
YjNkMzhiZjQyOTE5YTRhMTc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTQ3NywxMyArNDc3LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFy
IHJlZ2lzCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZEZ1bGwoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGlwZWxpbmVOYW1lKQogewogICAgIGlm
IChtX3BsYXllci0+Y29udGVudE1JTUVUeXBlKCkgPT0gImltYWdlL2dpZiIpIHsKLSAgICAgICAg
bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IsIE1lZGlhUGxheWVyOjpIYXZl
Tm90aGluZywgdHJ1ZSk7CisgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6Rm9ybWF0RXJyb3IsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGlu
ZywgdHJ1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBVUkwgdXJsKFVSTCgpLCB1
cmxTdHJpbmcpOwogICAgIGlmICh1cmwucHJvdG9jb2xJc0Fib3V0KCkpIHsKLSAgICAgICAgbG9h
ZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IsIE1lZGlhUGxheWVyOjpIYXZlTm90
aGluZywgdHJ1ZSk7CisgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZTo6Rm9ybWF0RXJyb3IsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZywg
dHJ1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ5OCwxNiArNDk4LDE2IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkRnVsbChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgc2V0UGxheWJpblVSTCh1cmwpOwogCiAgICAgR1NU
X0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAicHJlbG9hZDogJXMiLCBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhtX3ByZWxvYWQpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGlmIChtX3ByZWxvYWQg
PT0gTWVkaWFQbGF5ZXI6Ok5vbmUpIHsKKyAgICBpZiAobV9wcmVsb2FkID09IE1lZGlhUGxheWVy
OjpQcmVsb2FkOjpOb25lKSB7CiAgICAgICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAi
RGVsYXlpbmcgbG9hZC4iKTsKICAgICAgICAgbV9pc0RlbGF5aW5nTG9hZCA9IHRydWU7CiAgICAg
fQogCiAgICAgLy8gUmVzZXQgbmV0d29yayBhbmQgcmVhZHkgc3RhdGVzLiBUaG9zZSB3aWxsIGJl
IHNldCBwcm9wZXJseSBvbmNlCiAgICAgLy8gdGhlIHBpcGVsaW5lIHByZS1yb2xsZWQuCi0gICAg
bV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKKyAgICBtX25ldHdvcmtTdGF0
ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRpbmc7CiAgICAgbV9wbGF5ZXItPm5l
dHdvcmtTdGF0ZUNoYW5nZWQoKTsKLSAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmc7CisgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6Okhh
dmVOb3RoaW5nOwogICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogICAgIG1fYXJl
Vm9sdW1lQW5kTXV0ZUluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgbV9oYXNUYWludGVkT3JpZ2lu
ID0gV1RGOjpudWxsb3B0OwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50KikKIHsKICAgICAvLyBQcm9wZXJseSBmYWlsIHNvIHRoZSBnbG9iYWwgTWVkaWFQ
bGF5ZXIgdHJpZXMgdG8gZmFsbGJhY2sgdG8gdGhlIG5leHQgTWVkaWFQbGF5ZXJQcml2YXRlLgot
ICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yOworICAgIG1fbmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7CiAgICAg
bV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIH0KICNlbmRpZgpAQCAtNTQ2LDcgKzU0
Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkKE1lZGlhU3RyZWFt
UHJpdmF0ZSYgc3RyZWFtKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2Fu
Y2VsTG9hZCgpCiB7Ci0gICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRp
bmcgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkxvYWRlZCkKKyAgICBpZiAobV9u
ZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkaW5nIHx8IG1fbmV0
d29ya1N0YXRlID09IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRlZCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1fcGlwZWxpbmUpCkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhbmNlbExvYWQoKQogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnByZXBhcmVUb1BsYXkoKQogewogICAgIEdTVF9ERUJVR19PQkpF
Q1QocGlwZWxpbmUoKSwgIlByZXBhcmUgdG8gcGxheSIpOwotICAgIG1fcHJlbG9hZCA9IE1lZGlh
UGxheWVyOjpBdXRvOworICAgIG1fcHJlbG9hZCA9IE1lZGlhUGxheWVyOjpQcmVsb2FkOjpBdXRv
OwogICAgIGlmIChtX2lzRGVsYXlpbmdMb2FkKSB7CiAgICAgICAgIG1faXNEZWxheWluZ0xvYWQg
PSBmYWxzZTsKICAgICAgICAgY29tbWl0TG9hZCgpOwpAQCAtNTczLDExICs1NzMsMTEgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXkoKQogICAgIGlmIChjaGFuZ2VQaXBl
bGluZVN0YXRlKEdTVF9TVEFURV9QTEFZSU5HKSkgewogICAgICAgICBtX2lzRW5kUmVhY2hlZCA9
IGZhbHNlOwogICAgICAgICBtX2lzRGVsYXlpbmdMb2FkID0gZmFsc2U7Ci0gICAgICAgIG1fcHJl
bG9hZCA9IE1lZGlhUGxheWVyOjpBdXRvOworICAgICAgICBtX3ByZWxvYWQgPSBNZWRpYVBsYXll
cjo6UHJlbG9hZDo6QXV0bzsKICAgICAgICAgdXBkYXRlRG93bmxvYWRCdWZmZXJpbmdGbGFnKCk7
CiAgICAgICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiUGxheSIpOwogICAgIH0gZWxz
ZQotICAgICAgICBsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpFbXB0eSk7CisgICAgICAgIGxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHkpOwogfQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2UoKQpAQCAtNTkxLDcgKzU5MSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZSgpCiAgICAgaWYgKGNoYW5n
ZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNFRCkpCiAgICAgICAgIEdTVF9JTkZPX09CSkVD
VChwaXBlbGluZSgpLCAiUGF1c2UiKTsKICAgICBlbHNlCi0gICAgICAgIGxvYWRpbmdGYWlsZWQo
TWVkaWFQbGF5ZXI6OkVtcHR5KTsKKyAgICAgICAgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlOjpFbXB0eSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpwYXVzZWQoKSBjb25zdApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpzZWVrKGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lKQogICAgICAg
ICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiW1NlZWtdIHJlc2V0IHBpcGVsaW5l
Iik7CiAgICAgICAgICAgICBtX3Nob3VsZFJlc2V0UGlwZWxpbmUgPSB0cnVlOwogICAgICAgICAg
ICAgaWYgKCFjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QQVVTRUQpKQotICAgICAgICAg
ICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkVtcHR5KTsKKyAgICAgICAgICAgICAg
ICBsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5KTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGNhbiBzZWVrIG5vdy4KQEAgLTgwOCwx
MyArODA4LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRQcmVzZXJ2
ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9hZCkKIHsKICAgICBH
U1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJTZXR0aW5nIHByZWxvYWQgdG8gJXMiLCBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhwcmVsb2FkKS51dGY4KCkuZGF0YSgpKTsKLSAgICBpZiAo
cHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6QXV0byAmJiBtX2lzTGl2ZVN0cmVhbSkKKyAgICBpZiAo
cHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6QXV0byAmJiBtX2lzTGl2ZVN0cmVhbSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wcmVsb2FkID0gcHJlbG9hZDsKICAgICB1cGRhdGVE
b3dubG9hZEJ1ZmZlcmluZ0ZsYWcoKTsKIAotICAgIGlmIChtX2lzRGVsYXlpbmdMb2FkICYmIG1f
cHJlbG9hZCAhPSBNZWRpYVBsYXllcjo6Tm9uZSkgeworICAgIGlmIChtX2lzRGVsYXlpbmdMb2Fk
ICYmIG1fcHJlbG9hZCAhPSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6Tm9uZSkgewogICAgICAgICBt
X2lzRGVsYXlpbmdMb2FkID0gZmFsc2U7CiAgICAgICAgIGNvbW1pdExvYWQoKTsKICAgICB9CkBA
IC0xOTgyLDIzICsxOTgyLDIzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpo
YW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAKICAgICAgICAgR1NUX0RFQlVHX0JJ
Tl9UT19ET1RfRklMRV9XSVRIX1RTKEdTVF9CSU4obV9waXBlbGluZS5nZXQoKSksIEdTVF9ERUJV
R19HUkFQSF9TSE9XX0FMTCwgIndlYmtpdC12aWRlby5lcnJvciIpOwogCi0gICAgICAgIGVycm9y
ID0gTWVkaWFQbGF5ZXI6OkVtcHR5OworICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGU6OkVtcHR5OwogICAgICAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVyci5nZXQoKSwg
R1NUX1NUUkVBTV9FUlJPUiwgR1NUX1NUUkVBTV9FUlJPUl9DT0RFQ19OT1RfRk9VTkQpCiAgICAg
ICAgICAgICB8fCBnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1RfU1RSRUFNX0VSUk9SLCBH
U1RfU1RSRUFNX0VSUk9SX1dST05HX1RZUEUpCiAgICAgICAgICAgICB8fCBnX2Vycm9yX21hdGNo
ZXMoZXJyLmdldCgpLCBHU1RfU1RSRUFNX0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX0ZBSUxFRCkK
ICAgICAgICAgICAgIHx8IGdfZXJyb3JfbWF0Y2hlcyhlcnIuZ2V0KCksIEdTVF9DT1JFX0VSUk9S
LCBHU1RfQ09SRV9FUlJPUl9NSVNTSU5HX1BMVUdJTikKICAgICAgICAgICAgIHx8IGdfZXJyb3Jf
bWF0Y2hlcyhlcnIuZ2V0KCksIEdTVF9SRVNPVVJDRV9FUlJPUiwgR1NUX1JFU09VUkNFX0VSUk9S
X05PVF9GT1VORCkpCi0gICAgICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpGb3JtYXRFcnJv
cjsKKyAgICAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0
RXJyb3I7CiAgICAgICAgIGVsc2UgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnIuZ2V0KCksIEdTVF9T
VFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfVFlQRV9OT1RfRk9VTkQpKSB7CiAgICAgICAg
ICAgICAvLyBMZXQgdGhlIG1lZGlhUGxheWVyQ2xpZW50IGhhbmRsZSB0aGUgc3RyZWFtIGVycm9y
LCBpbiB0aGlzIGNhc2UgdGhlIEhUTUxNZWRpYUVsZW1lbnQgd2lsbCBlbWl0IGEgc3RhbGxlZCBl
dmVudC4KICAgICAgICAgICAgIEdTVF9FUlJPUigiRGVjb2RlIGVycm9yLCBsZXQgdGhlIE1lZGlh
IGVsZW1lbnQgZW1pdCBhIHN0YWxsZWQgZXZlbnQuIik7CiAgICAgICAgICAgICBtX2xvYWRpbmdT
dGFsbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9IGVsc2UgaWYgKGVy
ci0+ZG9tYWluID09IEdTVF9TVFJFQU1fRVJST1IpIHsKLSAgICAgICAgICAgIGVycm9yID0gTWVk
aWFQbGF5ZXI6OkRlY29kZUVycm9yOworICAgICAgICAgICAgZXJyb3IgPSBNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlOjpEZWNvZGVFcnJvcjsKICAgICAgICAgICAgIGF0dGVtcHROZXh0TG9jYXRp
b24gPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKGVyci0+ZG9tYWluID09IEdTVF9SRVNPVVJD
RV9FUlJPUikKLSAgICAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcjsK
KyAgICAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0d29ya0Vy
cm9yOwogCiAgICAgICAgIGlmIChhdHRlbXB0TmV4dExvY2F0aW9uKQogICAgICAgICAgICAgaXNz
dWVFcnJvciA9ICFsb2FkTmV4dExvY2F0aW9uKCk7CkBAIC0yMDQ4LDcgKzIwNDgsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBt
ZXNzYWdlKQogICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHJlcXVl
c3RlZFN0YXRlKSk7CiAgICAgICAgICAgICBtX3JlcXVlc3RlZFN0YXRlID0gcmVxdWVzdGVkU3Rh
dGU7CiAgICAgICAgICAgICBpZiAoIWNoYW5nZVBpcGVsaW5lU3RhdGUocmVxdWVzdGVkU3RhdGUp
KQotICAgICAgICAgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkVtcHR5KTsKKyAg
ICAgICAgICAgICAgICBsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVt
cHR5KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9NRVNTQUdFX0NM
T0NLX0xPU1Q6CkBAIC0yNTMxLDEyICsyNTMxLDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAvLyBVcGRhdGUgcmVhZHkgYW5kIG5l
dHdvcmsgc3RhdGVzLgogICAgICAgICBzd2l0Y2ggKG1fY3VycmVudFN0YXRlKSB7CiAgICAgICAg
IGNhc2UgR1NUX1NUQVRFX05VTEw6Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBs
YXllcjo6SGF2ZU5vdGhpbmc7Ci0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpFbXB0eTsKKyAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFk
eVN0YXRlOjpIYXZlTm90aGluZzsKKyAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQ
bGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBHU1RfU1RBVEVfUkVBRFk6Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBs
YXllcjo6SGF2ZU1ldGFkYXRhOwotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBs
YXllcjo6RW1wdHk7CisgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhOworICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEdTVF9TVEFURV9QQVVTRUQ6CiAgICAgICAgIGNhc2UgR1NUX1NUQVRFX1BMQVlJTkc6
CkBAIC0yNTQ0LDE4ICsyNTQ0LDE4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgICAgIGlmIChtX2J1ZmZlcmluZ1BlcmNlbnRh
Z2UgPT0gMTAwKSB7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxp
bmUoKSwgIltCdWZmZXJpbmddIENvbXBsZXRlLiIpOwogICAgICAgICAgICAgICAgICAgICBtX2lz
QnVmZmVyaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKLSAgICAgICAgICAgICAgICAgICAgbV9uZXR3b3Jr
U3RhdGUgPSBtX2RpZERvd25sb2FkRmluaXNoID8gTWVkaWFQbGF5ZXI6OklkbGUgOiBNZWRpYVBs
YXllcjo6TG9hZGluZzsKKyAgICAgICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVFbm91Z2hEYXRhOworICAgICAgICAgICAgICAgICAgICBt
X25ldHdvcmtTdGF0ZSA9IG1fZGlkRG93bmxvYWRGaW5pc2ggPyBNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpJZGxlIDogTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGluZzsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBN
ZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhOwotICAgICAgICAgICAgICAgICAgICBtX25ldHdv
cmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOworICAgICAgICAgICAgICAgICAgICBtX3Jl
YWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhOworICAg
ICAgICAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkxvYWRpbmc7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIGlmICht
X2RpZERvd25sb2FkRmluaXNoKSB7Ci0gICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVk
aWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOwotICAgICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRl
ID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKKyAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUVub3VnaERhdGE7CisgICAgICAgICAgICAgICAg
bV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQ7CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpIYXZlRnV0dXJlRGF0YTsKLSAgICAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpMb2FkaW5nOworICAgICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRnV0dXJlRGF0YTsKKyAgICAgICAgICAgICAgICBtX25l
dHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkxvYWRpbmc7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjYxOSw5ICsyNjE5LDkgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIHVwZGF0
ZURvd25sb2FkQnVmZmVyaW5nRmxhZygpOwogCiAgICAgICAgIGlmIChtX2N1cnJlbnRTdGF0ZSA9
PSBHU1RfU1RBVEVfUkVBRFkpCi0gICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXll
cjo6SGF2ZU5vdGhpbmc7CisgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiAgICAgICAgIGVsc2UgaWYgKG1fY3VycmVudFN0YXRl
ID09IEdTVF9TVEFURV9QQVVTRUQpIHsKLSAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlh
UGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKKyAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YTsKICAgICAgICAgICAgIG1faXNQYXVz
ZWQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKG1fY3VycmVudFN0YXRlID09IEdTVF9TVEFU
RV9QTEFZSU5HKQogICAgICAgICAgICAgbV9pc1BhdXNlZCA9IGZhbHNlOwpAQCAtMjYyOSw3ICsy
NjI5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygp
CiAgICAgICAgIGlmICghbV9pc1BhdXNlZCAmJiBtX3BsYXliYWNrUmF0ZSkKICAgICAgICAgICAg
IGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BMQVlJTkcpOwogCi0gICAgICAgIG1fbmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisgICAgICAgIG1fbmV0d29ya1N0YXRl
ID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGluZzsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiRWxzZSA6
ICVkIiwgZ2V0U3RhdGVSZXN1bHQpOwpAQCAtMjc0MSw5ICsyNzQxLDkgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24oKQogICAgICAgICAgICAgR1NU
X0lORk9fT0JKRUNUKHBpcGVsaW5lKCksICJOZXcgbWVkaWEgdXJsOiAlcyIsIG5ld1VybC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgLy8gUmVzZXQgcGxheWVyIHN0YXRl
cy4KLSAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7Cisg
ICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Okxv
YWRpbmc7CiAgICAgICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwotICAg
ICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOworICAgICAg
ICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5n
OwogICAgICAgICAgICAgbV9wbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAKICAgICAgICAg
ICAgIC8vIFJlc2V0IHBpcGVsaW5lIHN0YXRlLgpAQCAtMjc5Niw3ICsyNzk2LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnMKIAogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
cmVzdWx0ID0gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgcmVzdWx0ID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBw
b3J0ZWQ7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICAvLyBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UgaXMgaW4gY2hhcmdlIG9mIG1lZGlhc291cmNlIHBsYXliYWNrLCBub3Qg
dXMuCiAgICAgaWYgKHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSkKQEAgLTI4MTcsNyArMjgxNyw3
IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAgICAgaWYgKGdzdFJlZ2lzdHJ5U2Nhbm5lci5p
c0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoY29udGFpbmVyVHlwZSkpIHsKICAgICAgICAgLy8gU3Bl
YyBzYXlzIHdlIHNob3VsZCBub3QgcmV0dXJuICJwcm9iYWJseSIgaWYgdGhlIGNvZGVjcyBzdHJp
bmcgaXMgZW1wdHkuCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNvZGVjcyA9IHBhcmFtZXRlcnMu
dHlwZS5jb2RlY3MoKTsKLSAgICAgICAgcmVzdWx0ID0gY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlh
UGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IChnc3RSZWdpc3RyeVNjYW5uZXIuYXJlQWxsQ29kZWNz
U3VwcG9ydGVkKGNvZGVjcykgPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXll
cjo6SXNOb3RTdXBwb3J0ZWQpOworICAgICAgICByZXN1bHQgPSBjb2RlY3MuaXNFbXB0eSgpID8g
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQgOiAoZ3N0UmVnaXN0cnlT
Y2FubmVyLmFyZUFsbENvZGVjc1N1cHBvcnRlZChjb2RlY3MpID8gTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1
cHBvcnRlZCk7CiAgICAgfQogCiAgICAgYXV0byBmaW5hbFJlc3VsdCA9IGV4dGVuZGVkU3VwcG9y
dHNUeXBlKHBhcmFtZXRlcnMsIHJlc3VsdCk7CkBAIC0yODM2LDEyICsyODM2LDEyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVEb3dubG9hZEJ1ZmZlcmluZ0ZsYWco
KQogICAgIHVuc2lnbmVkIGZsYWdEb3dubG9hZCA9IGdldEdzdFBsYXlGbGFnKCJkb3dubG9hZCIp
OwogCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzdG9wIGRvd25sb2FkaW5nIGlmIHdlIGFscmVh
ZHkgc3RhcnRlZCBpdC4KLSAgICBpZiAoZmxhZ3MgJiBmbGFnRG93bmxvYWQgJiYgbV9yZWFkeVN0
YXRlID4gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nICYmICFtX3Nob3VsZFJlc2V0UGlwZWxpbmUp
IHsKKyAgICBpZiAoZmxhZ3MgJiBmbGFnRG93bmxvYWQgJiYgbV9yZWFkeVN0YXRlID4gTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nICYmICFtX3Nob3VsZFJlc2V0UGlwZWxpbmUp
IHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiRG93bmxvYWQgYWxyZWFk
eSBzdGFydGVkLCBub3Qgc3RhcnRpbmcgYWdhaW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGJvb2wgc2hvdWxkRG93bmxvYWQgPSAhbV9pc0xpdmVTdHJlYW0gJiYgbV9wcmVsb2Fk
ID09IE1lZGlhUGxheWVyOjpBdXRvOworICAgIGJvb2wgc2hvdWxkRG93bmxvYWQgPSAhbV9pc0xp
dmVTdHJlYW0gJiYgbV9wcmVsb2FkID09IE1lZGlhUGxheWVyOjpQcmVsb2FkOjpBdXRvOwogICAg
IGlmIChzaG91bGREb3dubG9hZCkgewogICAgICAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUo
KSwgIkVuYWJsaW5nIG9uLWRpc2sgYnVmZmVyaW5nIik7CiAgICAgICAgIGdfb2JqZWN0X3NldCht
X3BpcGVsaW5lLmdldCgpLCAiZmxhZ3MiLCBmbGFncyB8IGZsYWdEb3dubG9hZCwgbnVsbHB0cik7
CkBAIC0zMzczLDEzICszMzczLDEzIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAogCiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlw
ZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1vdmllTG9hZFR5cGUoKSBjb25zdAogewot
ICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQotICAgICAg
ICByZXR1cm4gTWVkaWFQbGF5ZXI6OlVua25vd247CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcpCisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKIAogICAgIGlmIChtX2lzTGl2ZVN0cmVh
bSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtOworICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OkxpdmVTdHJlYW07CiAKLSAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OkRvd25sb2FkOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2Fk
VHlwZTo6RG93bmxvYWQ7CiB9CiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDE1MmMwOTM1ZGI3MjhiNjFj
YWJmMDNhZjFiZDg5MTU2NjA0MWIxMTMuLmY5YzQ3YTFmNjAxMjRiOThiZmNjYmFlMWM3M2E0YTA0
NTE4NTM4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmgKQEAgLTMwOSw3ICszMDksNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAgIHZvaWQgdGlt
ZUNoYW5nZWQoKTsKLSAgICB2b2lkIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZSwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcs
IGJvb2wgZm9yY2VOb3RpZmljYXRpb25zID0gZmFsc2UpOworICAgIHZvaWQgbG9hZGluZ0ZhaWxl
ZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlLCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZywgYm9vbCBmb3JjZU5vdGlmaWNhdGlv
bnMgPSBmYWxzZSk7CiAgICAgdm9pZCBsb2FkU3RhdGVDaGFuZ2VkKCk7CiAKICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCkBAIC0zNDcsOCArMzQ3LDggQEAgcHJvdGVjdGVkOgogICAgIEdSZWZQ
dHI8R3N0RWxlbWVudD4gbV9waXBlbGluZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKIAotICAgIE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZSB7IE1lZGlhUGxheWVyOjpIYXZlTm90
aGluZyB9OwotICAgIG11dGFibGUgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtT
dGF0ZSB7IE1lZGlhUGxheWVyOjpFbXB0eSB9OworICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IG1fcmVhZHlTdGF0ZSB7IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZyB9Owor
ICAgIG11dGFibGUgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZSB7IE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5IH07CiAKICAgICBtdXRhYmxlIExvY2sgbV9z
YW1wbGVNdXRleDsKICAgICBHUmVmUHRyPEdzdFNhbXBsZT4gbV9zYW1wbGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5k
ZXggZGMyNDViNDdkZTNkZTcyZmFjMjM2NzJlNWY2ZWZkNGIzNzYyOWI0Yi4uODIwMTU1ZTU0ZDg4
N2U1MTY3YTM0MGFkZDNjNGIzMWQ0OTZlNTZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtNTgsMTEgKzU4LDEx
IEBACiBzdGF0aWMgY29uc3QgY2hhciogZHVtcFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKIHsKICAgICBzd2l0Y2ggKHJlYWR5U3RhdGUpIHsK
LSAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpIYXZlTm90aGluZzogcmV0dXJuICJIYXZl
Tm90aGluZyI7Ci0gICAgY2FzZSBXZWJDb3JlOjpNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOiBy
ZXR1cm4gIkhhdmVNZXRhZGF0YSI7Ci0gICAgY2FzZSBXZWJDb3JlOjpNZWRpYVBsYXllcjo6SGF2
ZUN1cnJlbnREYXRhOiByZXR1cm4gIkhhdmVDdXJyZW50RGF0YSI7Ci0gICAgY2FzZSBXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6SGF2ZUZ1dHVyZURhdGE6IHJldHVybiAiSGF2ZUZ1dHVyZURhdGEiOwot
ICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOiByZXR1cm4gIkhh
dmVFbm91Z2hEYXRhIjsKKyAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
OjpIYXZlTm90aGluZzogcmV0dXJuICJIYXZlTm90aGluZyI7CisgICAgY2FzZSBXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhOiByZXR1cm4gIkhhdmVNZXRhZGF0
YSI7CisgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJl
bnREYXRhOiByZXR1cm4gIkhhdmVDdXJyZW50RGF0YSI7CisgICAgY2FzZSBXZWJDb3JlOjpNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGE6IHJldHVybiAiSGF2ZUZ1dHVyZURh
dGEiOworICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVFbm91
Z2hEYXRhOiByZXR1cm4gIkhhdmVFbm91Z2hEYXRhIjsKICAgICBkZWZhdWx0OiByZXR1cm4gIih1
bmtub3duKSI7CiAgICAgfQogfQpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewogICAg
IGlmICghdXJsU3RyaW5nLnN0YXJ0c1dpdGgoIm1lZGlhc291cmNlIikpIHsKICAgICAgICAgLy8g
UHJvcGVybHkgZmFpbCBzbyB0aGUgZ2xvYmFsIE1lZGlhUGxheWVyIHRyaWVzIHRvIGZhbGxiYWNr
IHRvIHRoZSBuZXh0IE1lZGlhUGxheWVyUHJpdmF0ZS4KLSAgICAgICAgbV9uZXR3b3JrU3RhdGUg
PSBNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3I7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVk
aWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7CiAgICAgICAgIG1fcGxheWVyLT5u
ZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNzAsNyAr
MjcwLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmRvU2VlaygpCiAg
ICAgICAgICAgICBtX3Nob3VsZFJlc2V0UGlwZWxpbmUgPSB0cnVlOwogICAgICAgICAgICAgbV9p
c1NlZWtpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmICghY2hhbmdlUGlwZWxpbmVTdGF0ZShH
U1RfU1RBVEVfUEFVU0VEKSkKLSAgICAgICAgICAgICAgICBsb2FkaW5nRmFpbGVkKE1lZGlhUGxh
eWVyOjpFbXB0eSk7CisgICAgICAgICAgICAgICAgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlOjpFbXB0eSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
bV9pc1NlZWtpbmcgPSB0cnVlOwogICAgICAgICB9CkBAIC0zMDQsNyArMzA0LDcgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmRvU2VlaygpCiAgICAgICAgICAgICBtX2lz
U2Vla2luZyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0g
ICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7CisgICAgICAg
IG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGE7CiAg
ICAgICAgIG5vdGlmeVNlZWtOZWVkc0RhdGFGb3JUaW1lKHNlZWtUaW1lKTsKICAgICAgICAgQVNT
RVJUKCFtX21zZVNlZWtDb21wbGV0ZWQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQwNSwx
MiArNDA1LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzZXRSZWFk
eVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBHU1RfREVCVUcoIlJlYWR5IFN0YXRlIENoYW5nZWQgbWFudWFsbHkgZnJvbSAl
dSB0byAldSIsIG1fcmVhZHlTdGF0ZSwgcmVhZHlTdGF0ZSk7CisgICAgR1NUX0RFQlVHKCJSZWFk
eSBTdGF0ZSBDaGFuZ2VkIG1hbnVhbGx5IGZyb20gJXUgdG8gJXUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9yZWFkeVN0YXRlKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYWR5U3RhdGUpKTsK
ICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBvbGRSZWFkeVN0YXRlID0gbV9yZWFkeVN0YXRl
OwogICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5U3RhdGU7CiAgICAgR1NUX0RFQlVHKCJtX3JlYWR5
U3RhdGU6ICVzIC0+ICVzIiwgZHVtcFJlYWR5U3RhdGUob2xkUmVhZHlTdGF0ZSksIGR1bXBSZWFk
eVN0YXRlKG1fcmVhZHlTdGF0ZSkpOwogCi0gICAgaWYgKG9sZFJlYWR5U3RhdGUgPCBNZWRpYVBs
YXllcjo6SGF2ZUN1cnJlbnREYXRhICYmIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2
ZUN1cnJlbnREYXRhKSB7CisgICAgaWYgKG9sZFJlYWR5U3RhdGUgPCBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhICYmIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhKSB7CiAgICAgICAgIEdTVF9ERUJVRygiW1NlZWtd
IFJlcG9ydGluZyBsb2FkIHN0YXRlIGNoYW5nZWQgdG8gdHJpZ2dlciBzZWVrIGNvbnRpbnVhdGlv
biIpOwogICAgICAgICBsb2FkU3RhdGVDaGFuZ2VkKCk7CiAgICAgfQpAQCAtNDIwLDcgKzQyMCw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzZXRSZWFkeVN0YXRlKE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5CiAgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ2V0
U3RhdGVSZXN1bHQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgJnBp
cGVsaW5lU3RhdGUsIG51bGxwdHIsIDI1MCAqIEdTVF9OU0VDT05EKTsKICAgICBib29sIGlzUGxh
eWluZyA9IChnZXRTdGF0ZVJlc3VsdCA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MgJiYgcGlw
ZWxpbmVTdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlORyk7CiAKLSAgICBpZiAobV9yZWFkeVN0YXRl
ID09IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEgJiYgb2xkUmVhZHlTdGF0ZSA+IE1lZGlhUGxh
eWVyOjpIYXZlTWV0YWRhdGEgJiYgaXNQbGF5aW5nKSB7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9
PSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhICYmIG9sZFJlYWR5U3RhdGUg
PiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhICYmIGlzUGxheWluZykgewog
ICAgICAgICBHU1RfVFJBQ0UoIkNoYW5naW5nIHBpcGVsaW5lIHRvIFBBVVNFRC4uLiIpOwogICAg
ICAgICBib29sIG9rID0gY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKTsKICAg
ICAgICAgR1NUX1RSQUNFKCJDaGFuZ2VkIHBpcGVsaW5lIHRvIFBBVVNFRDogJXMiLCBvayA/ICJT
dWNjZXNzIiA6ICJFcnJvciIpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFOjpzZWVrQ29tcGxldGVkKCkKIAogICAgIGRvU2VlaygpOwogCi0g
ICAgaWYgKCFzZWVraW5nKCkgJiYgbV9yZWFkeVN0YXRlID49IE1lZGlhUGxheWVyOjpIYXZlRnV0
dXJlRGF0YSkKKyAgICBpZiAoIXNlZWtpbmcoKSAmJiBtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGU6OkhhdmVGdXR1cmVEYXRhKQogICAgICAgICBjaGFuZ2VQaXBlbGluZVN0
YXRlKEdTVF9TVEFURV9QTEFZSU5HKTsKIAogICAgIGlmICghc2Vla2luZygpKQpAQCAtNTA2LDI2
ICs1MDYsMjYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnVwZGF0ZVN0
YXRlcygpCiAgICAgICAgIC8vIFVwZGF0ZSByZWFkeSBhbmQgbmV0d29yayBzdGF0ZXMuCiAgICAg
ICAgIHN3aXRjaCAoc3RhdGUpIHsKICAgICAgICAgY2FzZSBHU1RfU1RBVEVfTlVMTDoKLSAgICAg
ICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKyAgICAgICAg
ICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsK
ICAgICAgICAgICAgIEdTVF9ERUJVRygibV9yZWFkeVN0YXRlPSVzIiwgZHVtcFJlYWR5U3RhdGUo
bV9yZWFkeVN0YXRlKSk7Ci0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVy
OjpFbXB0eTsKKyAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6RW1wdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHU1RfU1RB
VEVfUkVBRFk6Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU1l
dGFkYXRhOworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGU6OkhhdmVNZXRhZGF0YTsKICAgICAgICAgICAgIEdTVF9ERUJVRygibV9yZWFkeVN0YXRlPSVz
IiwgZHVtcFJlYWR5U3RhdGUobV9yZWFkeVN0YXRlKSk7Ci0gICAgICAgICAgICBtX25ldHdvcmtT
dGF0ZSA9IE1lZGlhUGxheWVyOjpFbXB0eTsKKyAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0g
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBHU1RfU1RBVEVfUEFVU0VEOgogICAgICAgICBjYXNlIEdTVF9TVEFURV9QTEFZ
SU5HOgogICAgICAgICAgICAgaWYgKHNlZWtpbmcoKSkgewotICAgICAgICAgICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7CisgICAgICAgICAgICAgICAgbV9y
ZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YTsKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIG1hbmFnZSBOZXR3b3JrU3RhdGUgdG9vPwog
ICAgICAgICAgICAgICAgIEdTVF9ERUJVRygibV9yZWFkeVN0YXRlPSVzIiwgZHVtcFJlYWR5U3Rh
dGUobV9yZWFkeVN0YXRlKSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGlmIChtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXllcjo6SGF2ZUZ1dHVyZURhdGEpCi0gICAgICAg
ICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRnV0dXJlRGF0YTsK
KyAgICAgICAgICAgICAgICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGU6OkhhdmVGdXR1cmVEYXRhKQorICAgICAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUZ1dHVyZURhdGE7CiAgICAgICAgICAgICAgICAg
R1NUX0RFQlVHKCJtX3JlYWR5U3RhdGU9JXMiLCBkdW1wUmVhZHlTdGF0ZShtX3JlYWR5U3RhdGUp
KTsKLSAgICAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5n
OworICAgICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZTo6TG9hZGluZzsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1fZW9zTWFy
a2VkICYmIHN0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HKQpAQCAtNTgxLDEwICs1ODEsMTAgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnVwZGF0ZVN0YXRlcygpCiAgICAg
ICAgIG1faXNMaXZlU3RyZWFtID0gdHJ1ZTsKIAogICAgICAgICBpZiAoc3RhdGUgPT0gR1NUX1NU
QVRFX1JFQURZKSB7Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmc7CisgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZTo6SGF2ZU5vdGhpbmc7CiAgICAgICAgICAgICBHU1RfREVCVUcoIm1fcmVhZHlTdGF0ZT0l
cyIsIGR1bXBSZWFkeVN0YXRlKG1fcmVhZHlTdGF0ZSkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0
YXRlID09IEdTVF9TVEFURV9QQVVTRUQpIHsKLSAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKKyAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YTsKICAgICAgICAgICAgIEdTVF9E
RUJVRygibV9yZWFkeVN0YXRlPSVzIiwgZHVtcFJlYWR5U3RhdGUobV9yZWFkeVN0YXRlKSk7CiAg
ICAgICAgICAgICBtX2lzUGF1c2VkID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9
PSBHU1RfU1RBVEVfUExBWUlORykKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRTo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgaWYgKCFtX2lzUGF1
c2VkICYmIG1fcGxheWJhY2tSYXRlKQogICAgICAgICAgICAgY2hhbmdlUGlwZWxpbmVTdGF0ZShH
U1RfU1RBVEVfUExBWUlORyk7CiAKLSAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXll
cjo6TG9hZGluZzsKKyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpMb2FkaW5nOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBH
U1RfREVCVUcoIkVsc2UgOiAlZCIsIGdldFN0YXRlUmVzdWx0KTsKQEAgLTYwNiwxMSArNjA2LDEx
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjp1cGRhdGVTdGF0ZXMoKQog
ICAgICAgICBtX3BsYXllci0+cGxheWJhY2tTdGF0ZUNoYW5nZWQoKTsKIAogICAgIGlmIChtX25l
dHdvcmtTdGF0ZSAhPSBvbGROZXR3b3JrU3RhdGUpIHsKLSAgICAgICAgR1NUX0RFQlVHKCJOZXR3
b3JrIFN0YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIsIG9sZE5ldHdvcmtTdGF0ZSwgbV9uZXR3
b3JrU3RhdGUpOworICAgICAgICBHU1RfREVCVUcoIk5ldHdvcmsgU3RhdGUgQ2hhbmdlZCBmcm9t
ICV1IHRvICV1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9sZE5ldHdvcmtTdGF0ZSksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX25ldHdvcmtTdGF0ZSkpOwogICAgICAgICBtX3BsYXllci0+bmV0
d29ya1N0YXRlQ2hhbmdlZCgpOwogICAgIH0KICAgICBpZiAobV9yZWFkeVN0YXRlICE9IG9sZFJl
YWR5U3RhdGUpIHsKLSAgICAgICAgR1NUX0RFQlVHKCJSZWFkeSBTdGF0ZSBDaGFuZ2VkIGZyb20g
JXUgdG8gJXUiLCBvbGRSZWFkeVN0YXRlLCBtX3JlYWR5U3RhdGUpOworICAgICAgICBHU1RfREVC
VUcoIlJlYWR5IFN0YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihvbGRSZWFkeVN0YXRlKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcmVhZHlTdGF0ZSkp
OwogICAgICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB9CiAKQEAgLTcx
OSw3ICs3MTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6Z2V0U3Vw
cG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZQogCiBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9ydHNUeXBlKGNv
bnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSByZXN1bHQgPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0
ZWQ7CisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSByZXN1bHQgPSBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICAgICBpZiAoIXBhcmFtZXRlcnMuaXNNZWRp
YVNvdXJjZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtNzI3LDcgKzcyNyw3IEBAIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpz
dXBwb3J0c1R5cGUoY29uc3QgTWVkCiAKICAgICAvLyBZb3VUdWJlIFRWIHByb3ZpZGVzIGVtcHR5
IHR5cGVzIGZvciBzb21lIHZpZGVvcyBhbmQgd2Ugd2FudCB0byBiZSBzZWxlY3RlZCBhcyBiZXN0
IG1lZGlhIGVuZ2luZSBmb3IgdGhlbS4KICAgICBpZiAoY29udGFpbmVyVHlwZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgcmVzdWx0ID0gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOworICAgICAg
ICByZXN1bHQgPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKICAg
ICAgICAgR1NUX0RFQlVHKCJtaW1lLXR5cGUgXCIlc1wiIHN1cHBvcnRlZDogJXMiLCBwYXJhbWV0
ZXJzLnR5cGUucmF3KCkudXRmOCgpLmRhdGEoKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
cmVzdWx0KS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBA
IC03MzcsNyArNzM3LDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzVHlwZShjb25zdCBNZWQKICAgICAvLyBTcGVjIHNh
eXMgd2Ugc2hvdWxkIG5vdCByZXR1cm4gInByb2JhYmx5IiBpZiB0aGUgY29kZWNzIHN0cmluZyBp
cyBlbXB0eS4KICAgICBpZiAoZ3N0UmVnaXN0cnlTY2FubmVyLmlzQ29udGFpbmVyVHlwZVN1cHBv
cnRlZChjb250YWluZXJUeXBlKSkgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjb2RlY3MgPSBw
YXJhbWV0ZXJzLnR5cGUuY29kZWNzKCk7Ci0gICAgICAgIHJlc3VsdCA9IGNvZGVjcy5pc0VtcHR5
KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiAoZ3N0UmVnaXN0cnlTY2FubmVyLmFy
ZUFsbENvZGVjc1N1cHBvcnRlZChjb2RlY3MpID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDog
TWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkKTsKKyAgICAgICAgcmVzdWx0ID0gY29kZWNzLmlz
RW1wdHkoKSA/IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkIDogKGdz
dFJlZ2lzdHJ5U2Nhbm5lci5hcmVBbGxDb2RlY3NTdXBwb3J0ZWQoY29kZWNzKSA/IE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZTo6SXNOb3RTdXBwb3J0ZWQpOwogICAgIH0KIAogICAgIGF1dG8gZmluYWxSZXN1bHQgPSBleHRl
bmRlZFN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzLCByZXN1bHQpOwpAQCAtNzYwLDggKzc2MCw4IEBA
IE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmN1cnJlbnRNZWRpYVRp
bWUoKSBjb25zdAogICAgIE1lZGlhVGltZSBwb3NpdGlvbiA9IE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y3VycmVudE1lZGlhVGltZSgpOwogCiAgICAgaWYgKG1fZW9zUGVuZGluZyAmJiBw
b3NpdGlvbiA+PSBkdXJhdGlvbk1lZGlhVGltZSgpKSB7Ci0gICAgICAgIGlmIChtX25ldHdvcmtT
dGF0ZSAhPSBNZWRpYVBsYXllcjo6TG9hZGVkKSB7Ci0gICAgICAgICAgICBtX25ldHdvcmtTdGF0
ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWQ7CisgICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQpIHsKKyAgICAgICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGVkOwogICAgICAgICAgICAg
bV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQ
cml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hv
bGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCmluZGV4IDBmMDhjMTlkYmRi
ZTY5YjA2ZjdiNzU1M2Y4YWI0OTdkNDdlMzc3YTkuLmI4YzRlMDFmYWRmNDEzYWRkYzcxNTRlMWVh
ZjFmNWJiMDU1MzZhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2guY3BwCkBAIC0xMzEsMTIgKzEzMSwxMiBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlh
RQogICAgIC8vIFNwZWMgc2F5cyB3ZSBzaG91bGQgbm90IHJldHVybiAicHJvYmFibHkiIGlmIHRo
ZSBjb2RlY3Mgc3RyaW5nIGlzIGVtcHR5LgogICAgIGlmICghY29udGFpbmVyVHlwZS5pc0VtcHR5
KCkgJiYgbWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKSB7CiAgICAgICAg
IGlmIChwYXJhbWV0ZXJzLnR5cGUuY29kZWNzKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKyAgICAgICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKIAotICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CiAgICAgfQogCi0gICAgcmV0dXJuIE1lZGlhUGxheWVy
OjpJc05vdFN1cHBvcnRlZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6
SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaAppbmRleCA4YmY3MjEzMTg4
MTljNDAyNjdiNzIxZmE5YjgyYWMxY2Q5MjZmOWQyLi45YTEwODdkMzJiMjViM2MzMGRjZGRiZWI0
MDA4Y2EwNTAwOTU3ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaC5oCkBAIC03Niw4ICs3Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcGF1c2VkKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CiAKLSAgICBNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpF
bXB0eTsgfTsKLSAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsgfTsKKyAgICBNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5OyB9OworICAgIE1lZGlhUGxheWVyOjpSZWFk
eVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhOyB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCA2ZDY0YWU5YTZlM2E0MTdmYjE0ZjEyMTY2ZjY4ZDNj
OWE1NTI2NmRlLi5iYmJiNDMyMmVkM2E3NWJmODFkMGJmNDc3NjJmMDUwODJjMzk0YmIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtNjcs
OCArNjcsOCBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbihNZWRpYVBsYXllcgogICAgICwgbV9oYXNWaWRlbyhmYWxz
ZSkKICAgICAsIG1fcHJlcGFyaW5nVG9QbGF5KGZhbHNlKQogICAgICwgbV92b2x1bWUoMS4wKQot
ICAgICwgbV9uZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQotICAgICwgbV9yZWFkeVN0
YXRlKE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykKKyAgICAsIG1fbmV0d29ya1N0YXRlKE1lZGlh
UGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5KQorICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZykKIHsKICAgICBjcmVhdGVTZXNzaW9uKCk7CiB9
CkBAIC0xMjYsMTIgKzEyNiwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbjo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQwogTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN1cHBv
cnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ewogICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICBpZiAobWltZVR5cGVDYWNoZSgpLmNv
bnRhaW5zKHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCkpKQotICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CiAKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90
U3VwcG9ydGVkOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1
cHBvcnRlZDsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Omxv
YWQoY29uc3QgU3RyaW5nJiB1cmwpCkBAIC0xNDMsOSArMTQzLDkgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiAKICAgICBz
dGFydENyZWF0ZU1lZGlhU291cmNlKHVybCk7CiAKLSAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlh
UGxheWVyOjpMb2FkaW5nOworICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6TG9hZGluZzsKICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwot
ICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKyAgICBtX3JlYWR5
U3RhdGUgPSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiAgICAgbV9wbGF5
ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiB9CiAKQEAgLTczMSwxNSArNzMxLDE1IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjp1cGRhdGVSZWFkeVN0YXRlKCkKIAog
ICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG9sZFJlYWR5U3RhdGUgPSBtX3JlYWR5U3RhdGU7
CiAgICAgaWYgKHBlcmNlbnRhZ2VPZlBsYXliYWNrQnVmZmVyRmlsbGVkID49IDEwMCkgewotICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CisgICAgICAg
IG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YTsK
ICAgICAgICAgaWYgKG1fcHJlcGFyaW5nVG9QbGF5KSB7CiAgICAgICAgICAgICBwYXVzZSgpOwog
ICAgICAgICAgICAgbV9wcmVwYXJpbmdUb1BsYXkgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0g
ZWxzZSBpZiAocGVyY2VudGFnZU9mUGxheWJhY2tCdWZmZXJGaWxsZWQgPiAwKQotICAgICAgICBt
X3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUZ1dHVyZURhdGE7CisgICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRnV0dXJlRGF0YTsKICAgICBl
bHNlCi0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGE7
CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlQ3Vy
cmVudERhdGE7CiAKICAgICBpZiAobV9yZWFkeVN0YXRlICE9IG9sZFJlYWR5U3RhdGUpCiAgICAg
ICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwpAQCAtNzk5LDcgKzc5OSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpvblNlc3Npb25TdGFydGVkKCkK
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om9uU2Vzc2lvbkVuZGVk
KCkKIHsKLSAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWQ7CisgICAgbV9u
ZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpMb2FkZWQ7CiAgICAgbV9w
bGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIAogICAgIG1fcGF1c2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCA2MDBlNmIzZjhiMDI2ZGYxMDIwZDAwOWVjMzVjZjVj
YzU4ZmI3NTBmLi40OTRiM2VlZDI0NTM5ODk2MWI3ZjI3M2I4YTYzNjA2NmJjOGRiYzFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC0zMzQsMTMgKzMzNCwxMyBAQCBzdGF0aWMgVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4
aXRGdWxsU2NyZQogICAgIGlmICghW19hdlBsYXllckNvbnRyb2xsZXIgZGVsZWdhdGVdKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZp
dHkgZ3Jhdml0eSA9IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdDsKKyAgICBNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSA9IE1l
ZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eTo6UmVzaXplQXNwZWN0OwogICAgIGlmICh2aWRl
b0dyYXZpdHkgPT0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSkKLSAgICAgICAgZ3Jhdml0eSA9
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eVJlc2l6ZTsKKyAgICAgICAg
Z3Jhdml0eSA9IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eTo6UmVzaXplOwogICAgIGlm
ICh2aWRlb0dyYXZpdHkgPT0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCkKLSAgICAg
ICAgZ3Jhdml0eSA9IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdDsKKyAgICAgICAgZ3Jhdml0eSA9IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0
eTo6UmVzaXplQXNwZWN0OwogICAgIGVsc2UgaWYgKHZpZGVvR3Jhdml0eSA9PSBBVkxheWVyVmlk
ZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCkKLSAgICAgICAgZ3Jhdml0eSA9IFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGw7CisgICAgICAgIGdy
YXZpdHkgPSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHk6OlJlc2l6ZUFzcGVjdEZpbGw7
CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLm1tCmluZGV4IDE1NTcxY2RjMzkyMmFiZDE5NWZlZjNlODE1YjRjYTNiZDIzMmM4NjIu
Ljg1YzcwYjJiYmI1MDQ3ZWY4ZWRkYTc0Mjk0NjY1OWE0YjI3ZTE3Y2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5tbQpAQCAtMTk1LDcgKzE5NSw3IEBAIGVudW0gY2xhc3MgUElQU3RhdGUgewogICAgIFtf
cGlwVmlld0NvbnRyb2xsZXIgc2V0UGxheWluZzpfcGxheWluZ107CiAgICAgW3NlbGYgc2V0Vmlk
ZW9EaW1lbnNpb25zOk5TRXF1YWxTaXplcyhfdmlkZW9EaW1lbnNpb25zLCBOU1plcm9TaXplKSA/
IGZyYW1lLnNpemUgOiBfdmlkZW9EaW1lbnNpb25zXTsKICAgICBpZiAoX3ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYyAmJiBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxz
Y3JlZW5Nb2RlbCgpKQotICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRl
b0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZXRWaWRlb0xheWVyR3Jhdml0eShNZWRpYVBsYXllckVudW1z
OjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKTsKKyAgICAgICAgX3ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2V0VmlkZW9MYXllckdyYXZp
dHkoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5OjpSZXNpemVBc3BlY3RGaWxsKTsKIAog
ICAgIF92aWRlb1ZpZXdDb250YWluZXIgPSBhZG9wdE5TKFtbV2ViVmlkZW9WaWV3Q29udGFpbmVy
IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lXSk7CiAgICAgW192aWRlb1ZpZXdDb250YWluZXIg
c2V0VmlkZW9WaWV3Q29udGFpbmVyRGVsZWdhdGU6c2VsZl07CkBAIC0zMDIsNyArMzAyLDcgQEAg
ZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiAgICAgICAgICAgICBjb250ZXh0LmFsbG93c0ltcGxpY2l0
QW5pbWF0aW9uID0gTk87CiAgICAgICAgICAgICBbX3ZpZGVvVmlld0NvbnRhaW5lciBzZXRGcmFt
ZTpfcmV0dXJuaW5nUmVjdF07CiAgICAgICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZXRWaWRlb0xheWVyRnJhbWUoW192aWRlb1Zp
ZXdDb250YWluZXIgYm91bmRzXSk7Ci0gICAgICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZXRWaWRlb0xheWVyR3Jhdml0eShNZWRp
YVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QpOworICAgICAgICAgICAgX3Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2V0Vmlk
ZW9MYXllckdyYXZpdHkoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5OjpSZXNpemVBc3Bl
Y3QpOwogCiAgICAgICAgICAgICBbW19yZXR1cm5pbmdXaW5kb3cgY29udGVudFZpZXddIGFkZFN1
YnZpZXc6X3ZpZGVvVmlld0NvbnRhaW5lci5nZXQoKSBwb3NpdGlvbmVkOk5TV2luZG93QWJvdmUg
cmVsYXRpdmVUbzpuaWxdOwogICAgICAgICB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CkBAIC0z
MTEsNyArMzExLDcgQEAgZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiAgICAgaWYgKCFzZWxmLmlzRXhp
dGluZ1RvU3RhbmRhcmRGdWxsc2NyZWVuKSB7CiAgICAgICAgIGlmIChWaWRlb0Z1bGxzY3JlZW5N
b2RlbCogdmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
LT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpKSB7CiAgICAgICAgICAgICB2aWRlb0Z1bGxzY3JlZW5N
b2RlbC0+ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKLSAgICAgICAgICAgIHZpZGVvRnVsbHNj
cmVlbk1vZGVsLT5zZXRWaWRlb0xheWVyR3Jhdml0eShNZWRpYVBsYXllckVudW1zOjpWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3QpOworICAgICAgICAgICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnNl
dFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eTo6UmVzaXpl
QXNwZWN0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlLmNwcAppbmRleCAzODdhMjFkYWY0NTUyMzk2OGFlZTRmNzk0MTlkM2Q4Yjg4
NjkwZDdjLi4wMWE2YTAwMzBmNGY0NjFkNDY3MjdiYjY5NjAxNjVhYjliY2ZhMWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtNjIsMjcgKzYyLDI3
IEBAIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmdldFN1cHBvcnRlZFR5cGVzKEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlCiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBpZiAoIXBhcmFtZXRlcnMuaXNN
ZWRpYVNvdXJjZSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsK
KyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVk
OwogCiAgICAgYXV0byBjb250YWluZXJUeXBlID0gcGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5
cGUoKTsKICAgICBpZiAoY29udGFpbmVyVHlwZS5pc0VtcHR5KCkgfHwgIW1pbWVUeXBlQ2FjaGUo
KS5jb250YWlucyhjb250YWluZXJUeXBlKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJ
c05vdFN1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6
OklzTm90U3VwcG9ydGVkOwogCiAgICAgYXV0byBjb2RlY3MgPSBwYXJhbWV0ZXJzLnR5cGUucGFy
YW1ldGVyKENvbnRlbnRUeXBlOjpjb2RlY3NQYXJhbWV0ZXIoKSk7CiAgICAgaWYgKGNvZGVjcy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7Cisg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsK
IAogICAgIGlmIChjb2RlY3MgPT0gIm1vY2siIHx8IGNvZGVjcyA9PSAia2NvbSIpCi0gICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKIAotICAgIHJldHVybiBNZWRpYVBsYXll
cjo6TWF5QmVTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6
Ok1heUJlU3VwcG9ydGVkOwogfQogCiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6TW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2UoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVy
KHBsYXllcikKICAgICAsIG1fY3VycmVudFRpbWUoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQotICAg
ICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykKLSAgICAsIG1fbmV0d29y
a1N0YXRlKE1lZGlhUGxheWVyOjpFbXB0eSkKKyAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcpCisgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSkKICAgICAsIG1fcGxheWluZyhmYWxzZSkKICAgICAs
IG1fc2Vla0NvbXBsZXRlZCh0cnVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0
ZS5jcHAKaW5kZXggN2RjYzk2NDkzNTAyODY0OTMxNWU1YjM4MWZiOWVhZjgxYjNhYTk1YS4uNmUy
MWI1ZGQyYjg5N2U4N2FhZmEwMGU3NWJjOGZmOGZmMWVlZTBmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tN
ZWRpYVNvdXJjZVByaXZhdGUuY3BwCkBAIC02Miw3ICs2Miw3IEBAIE1lZGlhU291cmNlUHJpdmF0
ZTo6QWRkU3RhdHVzIE1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmFkZFNvdXJjZUJ1ZmZlcihjb25z
dCBDb250CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAg
IHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CiAgICAgcGFyYW1ldGVycy50eXBlID0g
Y29udGVudFR5cGU7Ci0gICAgaWYgKE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzdXBwb3J0
c1R5cGUocGFyYW1ldGVycykgPT0gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkKQorICAgIGlm
IChNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKQogICAgICAgICByZXR1
cm4gTm90U3VwcG9ydGVkOwogCiAgICAgbV9zb3VyY2VCdWZmZXJzLmFwcGVuZChNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZTo6Y3JlYXRlKHRoaXMpKTsKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBNb2Nr
TWVkaWFTb3VyY2VQcml2YXRlOjpkdXJhdGlvbkNoYW5nZWQoKQogdm9pZCBNb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlOjptYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMgc3RhdHVzKQogewog
ICAgIGlmIChzdGF0dXMgPT0gRW9zTm9FcnJvcikKLSAgICAgICAgbV9wbGF5ZXIuc2V0TmV0d29y
a1N0YXRlKE1lZGlhUGxheWVyOjpMb2FkZWQpOworICAgICAgICBtX3BsYXllci5zZXROZXR3b3Jr
U3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TG9hZGVkKTsKICAgICBtX2lzRW5kZWQg
PSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4
IDZiMTM3M2U0NDczYjkzNzg1MjY3MDVlYzBmYmEwYTQwMWIwMDg1M2EuLjMyODY5MTVhNmFlMDhi
YmFlYmMwYTdjMTY2YTE2ZDQ1ZDhiYTMwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpCiAKIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWFkeVN0YXRlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLnJlYWR5U3RhdGUoKSA6
IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1f
bWVkaWFTb3VyY2UtPnBsYXllcigpLnJlYWR5U3RhdGUoKSA6IE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlOjpIYXZlTm90aGluZzsKIH0KIAogdm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0
UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQpAQCAtMjcwLDcg
KzI3MCw3IEBAIGJvb2wgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNhblN3aXRjaFRvVHlwZShj
b25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7
CiAgICAgcGFyYW1ldGVycy50eXBlID0gY29udGVudFR5cGU7Ci0gICAgcmV0dXJuIE1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5
ZXI6OklzTm90U3VwcG9ydGVkOworICAgIHJldHVybiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZTo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6
OklzTm90U3VwcG9ydGVkOwogfQogCiB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjplbnF1
ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEF0b21TdHJpbmcmKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>