<?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>239430</bug_id>
          
          <creation_ts>2022-04-16 23:14:24 -0700</creation_ts>
          <short_desc>Optimize nodeHasRole()</short_desc>
          <delta_ts>2022-04-18 11:57:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=239406</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>pangle</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1862114</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-16 23:14:24 -0700</bug_when>
    <thetext>Optimize nodeHasRole() and move to Element class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862115</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-16 23:14:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/91857547&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862116</commentid>
    <comment_count>2</comment_count>
      <attachid>457765</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-16 23:33:38 -0700</bug_when>
    <thetext>Created attachment 457765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862173</commentid>
    <comment_count>3</comment_count>
      <attachid>457779</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-17 15:06:24 -0700</bug_when>
    <thetext>Created attachment 457779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862279</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-18 11:57:55 -0700</bug_when>
    <thetext>Committed r292963 (249728@main): &lt;https://commits.webkit.org/249728@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457779.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457765</attachid>
            <date>2022-04-16 23:33:38 -0700</date>
            <delta_ts>2022-04-17 15:06:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239430-20220416233337.patch</filename>
            <type>text/plain</type>
            <size>49853</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJmNGYxYWVhNTg2YTZl
OWVhMDc2OGZlN2JjMjdiNzFmNjliNGI0ZS4uZjc4Mjg0ZmM5MDJjNmU1MTUwNzYwZThhOTNiNDk5
MmUxMmYyMTI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIyLTA0LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgbm9kZUhhc1Jv
bGUoKSBhbmQgbW92ZSB0byBFbGVtZW50IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkx
ODU3NTQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE9wdGltaXplIG5vZGVIYXNSb2xlKCkgYnkgY2FsbGluZyBzcGFjZVNwbGl0U3RyaW5nQ29udGFp
bnNWYWx1ZSgpIGluc3RlYWQgb2YgY29uc3RydWN0aW5nIGEKKyAgICAgICAgU3BhY2VTcGxpdFN0
cmluZyAod2hpY2ggaXMgZXhwZW5zaXZlIHNpbXBseSBmb3IgbG9va2luZyBmb3IgYSBzaW5nbGUg
dmFsdWUpLiBBbHNvIHRha2UgYQorICAgICAgICBTdHJpbmdWaWV3IGluIHBhcmFtZXRlciB0byBh
dm9pZCBjb25zdHJ1Y3RpbmcgYSBTdHJpbmcgdW5uZWNlc3NhcmlseSAobW9zdCBjYWxsIHNpdGVz
IHBhc3MKKyAgICAgICAgYW4gQVNDSUlMaXRlcmFsKS4KKworICAgICAgICBBbHNvIG1vdmUgdGhl
IGZ1bmN0aW9uIHRvIHRoZSBFbGVtZW50IGNsYXNzIGFuZCByZW5hbWUgdG8gaGFzUm9sZSgpLCBz
aW5jZSB0aGUgZnVuY3Rpb24gcmVsaWVzCisgICAgICAgIG9uIHRoZSByb2xlIGF0dHJpYnV0ZSBv
ZiBhbiBFbGVtZW50LgorCisgICAgICAgIEZpbmFsbHksIHVzZSB0aWdodGVyIHR5cGluZyBhbmQg
cmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXIgd2hlbiBwb3NzaWJsZS4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2Rl
QW5kUmVuZGVyZXJBcmVWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpp
c01vZGFsRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcm9tUmVuZGVy
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlTWVudU9wZW5lZCk6CisgICAgICAg
IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVNZW51SXRlbVNlbGVjdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnNlbGVjdGVkU3RhdGVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmRlZmVyQXR0cmlidXRlQ2hhbmdlSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c2hvdWxkUHJvY2Vzc0F0dHJp
YnV0ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRy
aWJ1dGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlTW9k
YWxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVy
cmVkQ2FjaGVVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZGVmZXJT
ZWxlY3RlZENoaWxkcmVuQ2hhbmdlZElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Om5vZGVI
YXNSb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnNldEVuaGFuY2VkVXNlckludGVy
ZmFjZUFjY2Vzc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFu
ZGxlQXR0cmlidXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnNo
b3VsZFByb2Nlc3NBdHRyaWJ1dGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6bm9kZUhhc1Jv
bGUpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbGVtZW50SGFzUHJlc2VudGF0aW9uUm9sZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c1ByZXNzQWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRz
RnJvbUF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjphcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6bm9kZUhhc1ByZXNlbnRhdGlvblJvbGUpOiBEZWxldGVkLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3ZWJB
cmVhSXNQcmVzZW50YXRpb25hbCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpyZW5kZXJPYmplY3RJc09ic2VydmFibGUgY29uc3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBj
b25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VHJlZTo6ZWxlbWVudEhhc1RyZWVJdGVtQ2hp
bGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRyZWU6OmlzVHJlZVZh
bGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUcmVlOjpub2RlSGFz
VHJlZUl0ZW1DaGlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VHJlZS5oOgorICAgICAgICAqIGRvbS9DbGFzc0NvbGxlY3Rpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsYXNzQ29sbGVjdGlvbjo6Q2xhc3NDb2xsZWN0aW9uKToKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpwYXJ0QXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNSb2xlIGNvbnN0KToKKyAgICAgICAgKiBk
b20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmc6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpT
cGFjZVNwbGl0U3RyaW5nOjpzcGFjZVNwbGl0U3RyaW5nQ29udGFpbnNWYWx1ZSk6CisgICAgICAg
ICogZG9tL1NwYWNlU3BsaXRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRT
dHJpbmc6OlNwYWNlU3BsaXRTdHJpbmcpOgorICAgICAgICAqIGh0bWwvQXV0b2ZpbGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZvcm1Db250cm9s
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNlbmRQaW5ncyk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJvcGVy
dGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBY2Nl
c3NpYmlsaXR5UHJvcGVydGllcyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZmluZERyb3Bab25lKToKKwogMjAyMi0wNC0xNiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3RyaW5nOjp0cnVuY2F0ZSgp
IGFuZCB1c2UgU3RyaW5nOjpsZWZ0KCkgaW5zdGVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggZmExZTk0M2I1MjBlOWYyMTU1NDcxMWYw
OTc3Mjg4MWI0YzVjODJhYi4uNTk2MTIxODM3YjEyYzM5NWQ2OTE3MTA2YjM3ODNmNjIzNjI1ZDY1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CkBAIC0xMzUsMTQgKzEzNSwxNiBAQCBzdGF0aWMgYm9vbCByZW5kZXJlck5lZWRzRGVmZXJyZWRV
cGRhdGUoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKICAgICByZXR1cm4gcmVuZGVyZXIu
bmVlZHNMYXlvdXQoKSB8fCBkb2N1bWVudC5uZWVkc1N0eWxlUmVjYWxjKCkgfHwgZG9jdW1lbnQu
aW5SZW5kZXJUcmVlVXBkYXRlKCkgfHwgKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3
KCktPmxheW91dENvbnRleHQoKS5pc0luUmVuZGVyVHJlZUxheW91dCgpKTsKIH0KIAotc3RhdGlj
IGJvb2wgbm9kZUFuZFJlbmRlcmVyQXJlVmFsaWQoTm9kZSogbm9kZSkKK3N0YXRpYyBib29sIG5v
ZGVBbmRSZW5kZXJlckFyZVZhbGlkKE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKCFub2RlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgYXV0byogcmVuZGVyZXIgPSBub2RlLT5yZW5k
ZXJlcigpOworICAgIGF1dG8qIHJlbmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOwogICAgIHJldHVy
biByZW5kZXJlciAmJiAhcmVuZGVyZXItPmJlaW5nRGVzdHJveWVkKCk7CiB9CisKK3N0YXRpYyBi
b29sIG5vZGVBbmRSZW5kZXJlckFyZVZhbGlkKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5v
ZGUgJiYgbm9kZUFuZFJlbmRlcmVyQXJlVmFsaWQoKm5vZGUpOworfQogICAgIAogQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbiBBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU6OmdldEln
bm9yZWQoQVhJRCBpZCkgY29uc3QKIHsKQEAgLTI1MCw3ICsyNTIsNyBAQCBBWE9iamVjdENhY2hl
Ojp+QVhPYmplY3RDYWNoZSgpCiAKIGJvb2wgQVhPYmplY3RDYWNoZTo6aXNNb2RhbEVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCkgY29uc3QKIHsKLSAgICBib29sIGhhc0RpYWxvZ1JvbGUgPSBub2Rl
SGFzUm9sZSgmZWxlbWVudCwgImRpYWxvZyJfcykgfHwgbm9kZUhhc1JvbGUoJmVsZW1lbnQsICJh
bGVydGRpYWxvZyJfcyk7CisgICAgYm9vbCBoYXNEaWFsb2dSb2xlID0gZWxlbWVudC5oYXNSb2xl
KCJkaWFsb2ciX3MpIHx8IGVsZW1lbnQuaGFzUm9sZSgiYWxlcnRkaWFsb2ciX3MpOwogICAgIGJv
b2wgaXNBcmlhTW9kYWwgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbGVtZW50LmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9tb2RhbEF0dHIpLCAidHJ1ZSIpOwog
CiAgICAgcmV0dXJuIChoYXNEaWFsb2dSb2xlICYmIGlzQXJpYU1vZGFsKSB8fCAoaXM8SFRNTERp
YWxvZ0VsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxEaWFsb2dFbGVtZW50PihlbGVt
ZW50KS5pc01vZGFsKCkpOwpAQCAtNTExLDIyICs1MTMsNiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBWE9iamVjdENhY2hlOjpnZXQoTm9kZSogbm9kZSkKICAgICByZXR1cm4gbV9vYmplY3RzLmdl
dChub2RlSUQpOwogfQogCi0vLyBGSVhNRTogVGhpcyBwcm9iYWJseSBiZWxvbmdzIG9uIE5vZGUu
Ci0vLyBGSVhNRTogVGhpcyBzaG91bGQgdGFrZSBhIGNvbnN0IGNoYXIqLCBidXQgb25lIGNhbGxl
ciBwYXNzZXMgbnVsbEF0b20oKS4KLWJvb2wgbm9kZUhhc1JvbGUoTm9kZSogbm9kZSwgY29uc3Qg
U3RyaW5nJiByb2xlKQotewotICAgIGlmICghbm9kZSB8fCAhaXM8RWxlbWVudD4obm9kZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHJvbGVWYWx1ZSA9IGRvd25jYXN0PEVs
ZW1lbnQ+KCpub2RlKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJvbGVBdHRyKTsK
LSAgICBpZiAocm9sZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHJvbGVWYWx1ZS5pc0VtcHR5
KCk7Ci0gICAgaWYgKHJvbGVWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiBTcGFjZVNwbGl0U3RyaW5nKHJvbGVWYWx1ZSwgdHJ1ZSkuY29udGFpbnMo
cm9sZSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzU2ltcGxlSW1hZ2UoY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlcikKIHsKICAgICBpZiAoIWlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpCkBAIC01
NTEsNTkgKzUzNyw1OCBAQCBzdGF0aWMgYm9vbCBpc1NpbXBsZUltYWdlKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBSZWY8QWNjZXNz
aWJpbGl0eU9iamVjdD4gY3JlYXRlRnJvbVJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIp
CitzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGNyZWF0ZUZyb21SZW5kZXJlcihSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyKQogewogICAgIC8vIEZJWE1FOiBIb3cgY291bGQgcmVuZGVyZXIt
Pm5vZGUoKSBldmVyIG5vdCBiZSBhbiBFbGVtZW50PwotICAgIE5vZGUqIG5vZGUgPSByZW5kZXJl
ci0+bm9kZSgpOworICAgIGF1dG8qIGVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8RWxlbWVudD4o
cmVuZGVyZXIubm9kZSgpKTsKIAogICAgIC8vIElmIHRoZSBub2RlIGlzIGFyaWEgcm9sZT0ibGlz
dCIgb3IgdGhlIGFyaWEgcm9sZSBpcyBlbXB0eSBhbmQgaXRzIGEKICAgICAvLyB1bC9vbC9kbCB0
eXBlIChpdCBzaG91bGRuJ3QgYmUgYSBsaXN0IGlmIGFyaWEgc2F5cyBvdGhlcndpc2UpLgotICAg
IGlmIChub2RlICYmICgobm9kZUhhc1JvbGUobm9kZSwgImxpc3QiX3MpIHx8IG5vZGVIYXNSb2xl
KG5vZGUsICJkaXJlY3RvcnkiX3MpKQotICAgICAgICAgICAgICAgICAgICAgIHx8IChub2RlSGFz
Um9sZShub2RlLCBudWxsQXRvbSgpKSAmJiAobm9kZS0+aGFzVGFnTmFtZSh1bFRhZykgfHwgbm9k
ZS0+aGFzVGFnTmFtZShvbFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShkbFRhZykpKSkpCi0gICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TGlzdDo6Y3JlYXRlKHJlbmRlcmVyKTsKKyAgICBpZiAo
ZWxlbWVudCAmJiAoKGVsZW1lbnQtPmhhc1JvbGUoImxpc3QiX3MpIHx8IGVsZW1lbnQtPmhhc1Jv
bGUoImRpcmVjdG9yeSJfcykpIHx8IChlbGVtZW50LT5oYXNSb2xlKG51bGxBdG9tKCkpICYmIChl
bGVtZW50LT5oYXNUYWdOYW1lKHVsVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9sVGFnKSB8
fCBlbGVtZW50LT5oYXNUYWdOYW1lKGRsVGFnKSkpKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlMaXN0OjpjcmVhdGUoJnJlbmRlcmVyKTsKIAogICAgIC8vIGFyaWEgdGFibGVzCi0gICAg
aWYgKG5vZGVIYXNSb2xlKG5vZGUsICJncmlkIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAidHJl
ZWdyaWQiX3MpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJ0YWJsZSJfcykpCi0gICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmNyZWF0ZShyZW5kZXJlcik7Ci0gICAgaWYgKG5vZGVI
YXNSb2xlKG5vZGUsICJyb3ciX3MpKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFH
cmlkUm93OjpjcmVhdGUocmVuZGVyZXIpOwotICAgIGlmIChub2RlSGFzUm9sZShub2RlLCAiZ3Jp
ZGNlbGwiX3MpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJjZWxsIl9zKSB8fCBub2RlSGFzUm9sZShu
b2RlLCAiY29sdW1uaGVhZGVyIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAicm93aGVhZGVyIl9z
KSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNyZWF0ZShyZW5k
ZXJlcik7CisgICAgaWYgKGVsZW1lbnQgJiYgKGVsZW1lbnQtPmhhc1JvbGUoImdyaWQiX3MpIHx8
IGVsZW1lbnQtPmhhc1JvbGUoInRyZWVncmlkIl9zKSB8fCBlbGVtZW50LT5oYXNSb2xlKCJ0YWJs
ZSJfcykpKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjcmVhdGUoJnJl
bmRlcmVyKTsKKyAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5oYXNSb2xlKCJyb3ciX3MpKQor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpjcmVhdGUoJnJlbmRlcmVy
KTsKKyAgICBpZiAoZWxlbWVudCAmJiAoZWxlbWVudC0+aGFzUm9sZSgiZ3JpZGNlbGwiX3MpIHx8
IGVsZW1lbnQtPmhhc1JvbGUoImNlbGwiX3MpIHx8IGVsZW1lbnQtPmhhc1JvbGUoImNvbHVtbmhl
YWRlciJfcykgfHwgZWxlbWVudC0+aGFzUm9sZSgicm93aGVhZGVyIl9zKSkpCisgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjcmVhdGUoJnJlbmRlcmVyKTsKIAogICAg
IC8vIGFyaWEgdHJlZQotICAgIGlmIChub2RlSGFzUm9sZShub2RlLCAidHJlZSJfcykpCi0gICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VHJlZTo6Y3JlYXRlKHJlbmRlcmVyKTsKLSAgICBpZiAo
bm9kZUhhc1JvbGUobm9kZSwgInRyZWVpdGVtIl9zKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUcmVlSXRlbTo6Y3JlYXRlKHJlbmRlcmVyKTsKKyAgICBpZiAoZWxlbWVudCAmJiBlbGVt
ZW50LT5oYXNSb2xlKCJ0cmVlIl9zKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUcmVl
OjpjcmVhdGUoJnJlbmRlcmVyKTsKKyAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5oYXNSb2xl
KCJ0cmVlaXRlbSJfcykpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW06OmNy
ZWF0ZSgmcmVuZGVyZXIpOwogCi0gICAgaWYgKG5vZGUgJiYgaXM8SFRNTExhYmVsRWxlbWVudD4o
bm9kZSkgJiYgbm9kZUhhc1JvbGUobm9kZSwgbnVsbEF0b20oKSkpCi0gICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5TGFiZWw6OmNyZWF0ZShyZW5kZXJlcik7CisgICAgaWYgKGlzPEhUTUxMYWJl
bEVsZW1lbnQ+KGVsZW1lbnQpICYmIGVsZW1lbnQtPmhhc1JvbGUobnVsbEF0b20oKSkpCisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TGFiZWw6OmNyZWF0ZSgmcmVuZGVyZXIpOwogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoaXM8SFRNTE1lZGlhRWxlbWVudD4obm9kZSkg
JiYgbm9kZUhhc1JvbGUobm9kZSwgbnVsbEF0b20oKSkpCi0gICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5TWVkaWFPYmplY3Q6OmNyZWF0ZShyZW5kZXJlcik7CisgICAgaWYgKGlzPEhUTUxNZWRp
YUVsZW1lbnQ+KGVsZW1lbnQpICYmIGVsZW1lbnQtPmhhc1JvbGUobnVsbEF0b20oKSkpCisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3Q6OmNyZWF0ZSgmcmVuZGVyZXIpOwog
I2VuZGlmCiAKLSAgICBpZiAocmVuZGVyZXItPmlzU1ZHUm9vdE9yTGVnYWN5U1ZHUm9vdCgpKQot
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OmNyZWF0ZShyZW5kZXJlcik7Cisg
ICAgaWYgKHJlbmRlcmVyLmlzU1ZHUm9vdE9yTGVnYWN5U1ZHUm9vdCgpKQorICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OmNyZWF0ZSgmcmVuZGVyZXIpOwogICAgIAotICAgIGlm
IChpczxTVkdFbGVtZW50Pihub2RlKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlTVkdF
bGVtZW50OjpjcmVhdGUocmVuZGVyZXIpOworICAgIGlmIChpczxTVkdFbGVtZW50PihlbGVtZW50
KSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50OjpjcmVhdGUoJnJlbmRl
cmVyKTsKIAotICAgIGlmIChpc1NpbXBsZUltYWdlKCpyZW5kZXJlcikpCi0gICAgICAgIHJldHVy
biBBWEltYWdlOjpjcmVhdGUoZG93bmNhc3Q8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSk7CisgICAg
aWYgKGlzU2ltcGxlSW1hZ2UocmVuZGVyZXIpKQorICAgICAgICByZXR1cm4gQVhJbWFnZTo6Y3Jl
YXRlKGRvd25jYXN0PFJlbmRlckltYWdlPigmcmVuZGVyZXIpKTsKIAogI2lmIEVOQUJMRShNQVRI
TUwpCiAgICAgLy8gVGhlIG1mZW5jZWQgZWxlbWVudCBjcmVhdGVzIGFub255bW91cyBSZW5kZXJN
YXRoTUxPcGVyYXRvcnMgd2hpY2ggc2hvdWxkIGJlIHRyZWF0ZWQKICAgICAvLyBhcyBNYXRoTUwg
ZWxlbWVudHMgYW5kIGFzc2lnbmVkIHRoZSBNYXRoRWxlbWVudFJvbGUgc28gdGhhdCBwbGF0Zm9y
bSBsb2dpYyByZWdhcmRpbmcKICAgICAvLyBpbmNsdXNpb24gYW5kIHJvbGUgbWFwcGluZyBpcyBu
b3QgYnlwYXNzZWQuCi0gICAgYm9vbCBpc0Fub255bW91c09wZXJhdG9yID0gcmVuZGVyZXItPmlz
QW5vbnltb3VzKCkgJiYgaXM8UmVuZGVyTWF0aE1MT3BlcmF0b3I+KCpyZW5kZXJlcik7Ci0gICAg
aWYgKGlzQW5vbnltb3VzT3BlcmF0b3IgfHwgaXM8TWF0aE1MRWxlbWVudD4obm9kZSkpCi0gICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6Y3JlYXRlKHJlbmRlcmVyLCBp
c0Fub255bW91c09wZXJhdG9yKTsKKyAgICBib29sIGlzQW5vbnltb3VzT3BlcmF0b3IgPSByZW5k
ZXJlci5pc0Fub255bW91cygpICYmIGlzPFJlbmRlck1hdGhNTE9wZXJhdG9yPihyZW5kZXJlcik7
CisgICAgaWYgKGlzQW5vbnltb3VzT3BlcmF0b3IgfHwgaXM8TWF0aE1MRWxlbWVudD4oZWxlbWVu
dCkpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6Y3JlYXRlKCZy
ZW5kZXJlciwgaXNBbm9ueW1vdXNPcGVyYXRvcik7CiAjZW5kaWYKIAotICAgIGlmIChpczxSZW5k
ZXJCb3hNb2RlbE9iamVjdD4oKnJlbmRlcmVyKSkgewotICAgICAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCYgY3NzQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcik7
CisgICAgaWYgKGlzPFJlbmRlckJveE1vZGVsT2JqZWN0PihyZW5kZXJlcikpIHsKKyAgICAgICAg
UmVuZGVyQm94TW9kZWxPYmplY3QmIGNzc0JveCA9IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2Jq
ZWN0PihyZW5kZXJlcik7CiAgICAgICAgIGlmIChpczxSZW5kZXJMaXN0Qm94Pihjc3NCb3gpKQog
ICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjpjcmVhdGUoJmRvd25jYXN0
PFJlbmRlckxpc3RCb3g+KGNzc0JveCkpOwogICAgICAgICBpZiAoaXM8UmVuZGVyTWVudUxpc3Q+
KGNzc0JveCkpCkBAIC02MzQsNyArNjE5LDcgQEAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0PiBjcmVhdGVGcm9tUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICAgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpjcmVhdGUoJmRvd25jYXN0PFJlbmRlclNs
aWRlcj4oY3NzQm94KSk7CiAgICAgfQogCi0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmNyZWF0ZShyZW5kZXJlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmNyZWF0ZSgmcmVuZGVyZXIpOwogfQogCiBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IGNyZWF0ZUZyb21Ob2RlKE5vZGUqIG5vZGUpCkBAIC03NTcsNyArNzQyLDcgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKICAgICAvLyBEb24ndCBjcmVhdGUgYW4gb2JqZWN0IGZvciB0aGlzIHJlbmRl
cmVyIGlmIGl0J3MgYmVpbmcgZGVzdHJveWVkLgogICAgIGlmIChyZW5kZXJlci0+YmVpbmdEZXN0
cm95ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IG5ld09iaiA9IGNyZWF0ZUZyb21SZW5kZXJlcihyZW5kZXJlcik7CisgICAgUmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG5ld09iaiA9IGNyZWF0ZUZyb21SZW5kZXJlcigqcmVu
ZGVyZXIpOwogCiAgICAgLy8gV2lsbCBjcmFzaCBsYXRlciBpZiB3ZSBoYXZlIHR3byBvYmplY3Rz
IGZvciB0aGUgc2FtZSByZW5kZXJlci4KICAgICBBU1NFUlQoIWdldChyZW5kZXJlcikpOwpAQCAt
MTA4MiwxMiArMTA2NywxMyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUNoaWxkcmVuQ2hh
bmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCiAgICAgcG9zdFBsYXRmb3JtTm90aWZp
Y2F0aW9uKCZvYmplY3QsIEFYQ2hpbGRyZW5DaGFuZ2VkKTsKIH0KIAotdm9pZCBBWE9iamVjdENh
Y2hlOjpoYW5kbGVNZW51T3BlbmVkKE5vZGUqIG5vZGUpCit2b2lkIEFYT2JqZWN0Q2FjaGU6Omhh
bmRsZU1lbnVPcGVuZWQoTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPnJl
bmRlcmVyKCkgfHwgIW5vZGVIYXNSb2xlKG5vZGUsICJtZW51Il9zKSkKKyAgICBhdXRvKiBlbGVt
ZW50ID0gZHluYW1pY0Rvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOworICAgIGlmICghZWxlbWVudCB8
fCAhZWxlbWVudC0+aGFzUm9sZSgibWVudSJfcykpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBwb3N0Tm90aWZpY2F0aW9uKGdldE9yQ3JlYXRlKG5vZGUpLCAmZG9jdW1lbnQoKSwgQVhNZW51
T3BlbmVkKTsKKyAgICBwb3N0Tm90aWZpY2F0aW9uKGdldE9yQ3JlYXRlKGVsZW1lbnQpLCAmZG9j
dW1lbnQoKSwgQVhNZW51T3BlbmVkKTsKIH0KICAgICAKIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFu
ZGxlTGl2ZVJlZ2lvbkNyZWF0ZWQoTm9kZSogbm9kZSkKQEAgLTEyNzIsMTYgKzEyNTgsMTcgQEAg
dm9pZCBBWE9iamVjdENhY2hlOjpjaGVja2VkU3RhdGVDaGFuZ2VkKE5vZGUqIG5vZGUpCiAKIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlTWVudUl0ZW1TZWxlY3RlZChOb2RlKiBub2RlKQogewot
ICAgIGlmICghbm9kZSkKKyAgICBhdXRvKiBlbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEVsZW1l
bnQ+KG5vZGUpOworICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IGlmICghbm9kZUhhc1JvbGUobm9kZSwgIm1lbnVpdGVtIl9zKSAmJiAhbm9kZUhhc1JvbGUobm9k
ZSwgIm1lbnVpdGVtcmFkaW8iX3MpICYmICFub2RlSGFzUm9sZShub2RlLCAibWVudWl0ZW1jaGVj
a2JveCJfcykpCisgICAgaWYgKCFlbGVtZW50LT5oYXNSb2xlKCJtZW51aXRlbSJfcykgJiYgIWVs
ZW1lbnQtPmhhc1JvbGUoIm1lbnVpdGVtcmFkaW8iX3MpICYmICFlbGVtZW50LT5oYXNSb2xlKCJt
ZW51aXRlbWNoZWNrYm94Il9zKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmICghZG93
bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmZvY3VzZWQoKSAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oYXJpYV9zZWxlY3RlZEF0dHIpLCAidHJ1ZSIpKQorICAgIGlmICghZWxlbWVudC0+
Zm9jdXNlZCgpICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbGVtZW50LT5hdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfc2VsZWN0ZWRBdHRyKSwgInRydWUiKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHBvc3ROb3RpZmljYXRpb24oZ2V0T3JDcmVhdGUo
bm9kZSksICZkb2N1bWVudCgpLCBBWE1lbnVMaXN0SXRlbVNlbGVjdGVkKTsKKyAgICBwb3N0Tm90
aWZpY2F0aW9uKGdldE9yQ3JlYXRlKGVsZW1lbnQpLCAmZG9jdW1lbnQoKSwgQVhNZW51TGlzdEl0
ZW1TZWxlY3RlZCk7CiB9CiAgICAgCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyRm9jdXNlZFVJ
RWxlbWVudENoYW5nZUlmTmVlZGVkKE5vZGUqIG9sZE5vZGUsIE5vZGUqIG5ld05vZGUpCkBAIC0x
MzI2LDEzICsxMzEzLDEzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxl
bWVudENoYW5nZWQoTm9kZSogb2xkTm9kZSwgTm9kZSogbmV3Tm9kZSkKICAgICBwbGF0Zm9ybUhh
bmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKG9sZE5vZGUsIG5ld05vZGUpOwogfQogICAgIAot
dm9pZCBBWE9iamVjdENhY2hlOjpzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChOb2RlKiBub2RlKQor
dm9pZCBBWE9iamVjdENhY2hlOjpzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChFbGVtZW50JiBlbGVt
ZW50KQogewotICAgIGhhbmRsZU1lbnVJdGVtU2VsZWN0ZWQobm9kZSk7CisgICAgaGFuZGxlTWVu
dUl0ZW1TZWxlY3RlZCgmZWxlbWVudCk7CiAgICAgCiAgICAgLy8gcG9zdFRhcmdldCBpcyBPYnNl
cnZhYmxlUGFyZW50IHNvIHRoYXQgeW91IGNhbiBwYXNzIGluIGFueSBjaGlsZCBvZiBhbiBlbGVt
ZW50IGFuZCBpdCB3aWxsIGdvIHVwIHRoZSBwYXJlbnQgdHJlZQogICAgIC8vIHRvIGZpbmQgdGhl
IGNvbnRhaW5lciB3aGljaCBzaG91bGQgc2VuZCBvdXQgdGhlIG5vdGlmaWNhdGlvbi4KLSAgICBw
b3N0Tm90aWZpY2F0aW9uKG5vZGUsIEFYU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQsIFBvc3RUYXJn
ZXQ6Ok9ic2VydmFibGVQYXJlbnQpOworICAgIHBvc3ROb3RpZmljYXRpb24oJmVsZW1lbnQsIEFY
U2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQsIFBvc3RUYXJnZXQ6Ok9ic2VydmFibGVQYXJlbnQpOwog
fQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9i
amVjdCogcmVuZGVyZXIpCkBAIC0xMzQ1LDE1ICsxMzMyLDE0IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6c2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICBw
b3N0Tm90aWZpY2F0aW9uKHJlbmRlcmVyLCBBWFNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkLCBQb3N0
VGFyZ2V0OjpPYnNlcnZhYmxlUGFyZW50KTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpzZWxl
Y3RlZFN0YXRlQ2hhbmdlZChOb2RlKiBub2RlKQordm9pZCBBWE9iamVjdENhY2hlOjpzZWxlY3Rl
ZFN0YXRlQ2hhbmdlZChFbGVtZW50JiBlbGVtZW50KQogewogICAgIC8vIEZvciBhIHRhYmxlIGNl
bGwsIHBvc3QgQVhTZWxlY3RlZFN0YXRlQ2hhbmdlZCBvbiB0aGUgY2VsbCBpdHNlbGYuCiAgICAg
Ly8gRm9yIGFueSBvdGhlciBlbGVtZW50LCBwb3N0IEFYU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQg
b24gdGhlIHBhcmVudC4KLSAgICBpZiAobm9kZUhhc1JvbGUobm9kZSwgImdyaWRjZWxsIl9zKSB8
fCBub2RlSGFzUm9sZShub2RlLCAiY2VsbCJfcykKLSAgICAgICAgfHwgbm9kZUhhc1JvbGUobm9k
ZSwgImNvbHVtbmhlYWRlciJfcykgfHwgbm9kZUhhc1JvbGUobm9kZSwgInJvd2hlYWRlciJfcykp
Ci0gICAgICAgIHBvc3ROb3RpZmljYXRpb24obm9kZSwgQVhTZWxlY3RlZFN0YXRlQ2hhbmdlZCk7
CisgICAgaWYgKGVsZW1lbnQuaGFzUm9sZSgiZ3JpZGNlbGwiX3MpIHx8IGVsZW1lbnQuaGFzUm9s
ZSgiY2VsbCJfcykgfHwgZWxlbWVudC5oYXNSb2xlKCJjb2x1bW5oZWFkZXIiX3MpIHx8IGVsZW1l
bnQuaGFzUm9sZSgicm93aGVhZGVyIl9zKSkKKyAgICAgICAgcG9zdE5vdGlmaWNhdGlvbigmZWxl
bWVudCwgQVhTZWxlY3RlZFN0YXRlQ2hhbmdlZCk7CiAgICAgZWxzZQotICAgICAgICBzZWxlY3Rl
ZENoaWxkcmVuQ2hhbmdlZChub2RlKTsKKyAgICAgICAgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQo
ZWxlbWVudCk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xODA3LDEwICsxNzkzLDEwIEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlUm9sZUNoYW5nZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBh
eE9iamVjdCkKICNlbmRpZgogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyQXR0cmlidXRl
Q2hhbmdlSWZOZWVkZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIEVsZW1lbnQqIGVs
ZW1lbnQpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyQXR0cmlidXRlQ2hhbmdlSWZOZWVkZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAg
aWYgKG5vZGVBbmRSZW5kZXJlckFyZVZhbGlkKGVsZW1lbnQpICYmIHJlbmRlcmVyTmVlZHNEZWZl
cnJlZFVwZGF0ZSgqZWxlbWVudC0+cmVuZGVyZXIoKSkpIHsKLSAgICAgICAgbV9kZWZlcnJlZEF0
dHJpYnV0ZUNoYW5nZS5hZGQoZWxlbWVudCwgYXR0ck5hbWUpOworICAgIGlmIChub2RlQW5kUmVu
ZGVyZXJBcmVWYWxpZChlbGVtZW50KSAmJiByZW5kZXJlck5lZWRzRGVmZXJyZWRVcGRhdGUoKmVs
ZW1lbnQucmVuZGVyZXIoKSkpIHsKKyAgICAgICAgbV9kZWZlcnJlZEF0dHJpYnV0ZUNoYW5nZS5h
ZGQoJmVsZW1lbnQsIGF0dHJOYW1lKTsKICAgICAgICAgaWYgKCFtX3BlcmZvcm1DYWNoZVVwZGF0
ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBtX3BlcmZvcm1DYWNoZVVwZGF0ZVRpbWVy
LnN0YXJ0T25lU2hvdCgwX3MpOwogICAgIH0KQEAgLTE4MTgsMTEgKzE4MDQsOCBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmRlZmVyQXR0cmlidXRlQ2hhbmdlSWZOZWVkZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUsCiAgICAgICAgIGhhbmRsZUF0dHJpYnV0ZUNoYW5nZShhdHRyTmFtZSwg
ZWxlbWVudCk7CiB9CiAgICAgCi1ib29sIEFYT2JqZWN0Q2FjaGU6OnNob3VsZFByb2Nlc3NBdHRy
aWJ1dGVDaGFuZ2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIEVsZW1lbnQqIGVsZW1l
bnQpCitib29sIEFYT2JqZWN0Q2FjaGU6OnNob3VsZFByb2Nlc3NBdHRyaWJ1dGVDaGFuZ2UoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgaWYg
KCFlbGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAgICAgLy8gYXJpYS1tb2Rh
bCBlbmRzIHVwIGFmZmVjdGluZyBzdWItdHJlZXMgdGhhdCBhcmUgYmVpbmcgc2hvd24vaGlkZGVu
IHNvIGl0J3MgbGlrZWx5IHRoYXQKICAgICAvLyBhbiBBVCB3b3VsZCBub3QgaGF2ZSBhY2Nlc3Nl
ZCB0aGlzIG5vZGUgeWV0LgogICAgIGlmIChhdHRyTmFtZSA9PSBhcmlhX21vZGFsQXR0cikKQEAg
LTE4MzAsNTkgKzE4MTMsNTkgQEAgYm9vbCBBWE9iamVjdENhY2hlOjpzaG91bGRQcm9jZXNzQXR0
cmlidXRlQ2hhbmdlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLAogICAgIAogICAgIC8v
IElmIGFuIEFYT2JqZWN0IGhhcyB5ZXQgdG8gYmUgY3JlYXRlZCwgdGhlbiB0aGVyZSdzIG5vIG5l
ZWQgdG8gcHJvY2VzcyBhdHRyaWJ1dGUgY2hhbmdlcy4KICAgICAvLyBTb21lIG9mIHRoZXNlIG5v
dGlmaWNhdGlvbnMgYXJlIHByb2Nlc3NlZCBvbiB0aGUgcGFyZW50LCBzbyBhbGxvdyB0aGF0IHRv
IHByb2NlZWQgYXMgd2VsbAotICAgIGlmIChnZXQoZWxlbWVudCkgfHwgZ2V0KGVsZW1lbnQtPnBh
cmVudE5vZGUoKSkpCisgICAgaWYgKGdldCgmZWxlbWVudCkgfHwgZ2V0KGVsZW1lbnQucGFyZW50
Tm9kZSgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAg
ICAgCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSwgRWxlbWVudCogZWxlbWVudCkKK3ZvaWQgQVhPYmplY3RDYWNo
ZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBF
bGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghc2hvdWxkUHJvY2Vzc0F0dHJpYnV0ZUNoYW5n
ZShhdHRyTmFtZSwgZWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdHRyTmFt
ZSA9PSByb2xlQXR0cikgewotICAgICAgICBpZiAoYXV0byogYXhPYmplY3QgPSBnZXQoZWxlbWVu
dCkpCisgICAgICAgIGlmIChhdXRvKiBheE9iamVjdCA9IGdldCgmZWxlbWVudCkpCiAgICAgICAg
ICAgICBheE9iamVjdC0+dXBkYXRlUm9sZSgpOwogICAgIH0KICAgICBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBhbHRBdHRyIHx8IGF0dHJOYW1lID09IHRpdGxlQXR0cikKLSAgICAgICAgdGV4dENoYW5n
ZWQoZWxlbWVudCk7CisgICAgICAgIHRleHRDaGFuZ2VkKCZlbGVtZW50KTsKICAgICBlbHNlIGlm
IChhdHRyTmFtZSA9PSBkaXNhYmxlZEF0dHIpCi0gICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxl
bWVudCwgQVhPYmplY3RDYWNoZTo6QVhEaXNhYmxlZFN0YXRlQ2hhbmdlZCk7Ci0gICAgZWxzZSBp
ZiAoYXR0ck5hbWUgPT0gZm9yQXR0ciAmJiBpczxIVE1MTGFiZWxFbGVtZW50PigqZWxlbWVudCkp
Ci0gICAgICAgIGxhYmVsQ2hhbmdlZChlbGVtZW50KTsKKyAgICAgICAgcG9zdE5vdGlmaWNhdGlv
bigmZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhEaXNhYmxlZFN0YXRlQ2hhbmdlZCk7CisgICAg
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gZm9yQXR0ciAmJiBpczxIVE1MTGFiZWxFbGVtZW50PihlbGVt
ZW50KSkKKyAgICAgICAgbGFiZWxDaGFuZ2VkKCZlbGVtZW50KTsKICAgICBlbHNlIGlmIChhdHRy
TmFtZSA9PSB0YWJpbmRleEF0dHIpCi0gICAgICAgIGNoaWxkcmVuQ2hhbmdlZChlbGVtZW50LT5w
YXJlbnROb2RlKCksIGVsZW1lbnQpOworICAgICAgICBjaGlsZHJlbkNoYW5nZWQoZWxlbWVudC5w
YXJlbnROb2RlKCksICZlbGVtZW50KTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRF
RF9UUkVFKQogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGxhbmdBdHRyKQotICAgICAgICB1cGRh
dGVJc29sYXRlZFRyZWUoZ2V0KGVsZW1lbnQpLCBBWE9iamVjdENhY2hlOjpBWExhbmd1YWdlQ2hh
bmdlZCk7CisgICAgICAgIHVwZGF0ZUlzb2xhdGVkVHJlZShnZXQoJmVsZW1lbnQpLCBBWE9iamVj
dENhY2hlOjpBWExhbmd1YWdlQ2hhbmdlZCk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gaWRB
dHRyKQotICAgICAgICB1cGRhdGVJc29sYXRlZFRyZWUoZ2V0KGVsZW1lbnQpLCBBWE9iamVjdENh
Y2hlOjpBWElkQXR0cmlidXRlQ2hhbmdlZCk7CisgICAgICAgIHVwZGF0ZUlzb2xhdGVkVHJlZShn
ZXQoJmVsZW1lbnQpLCBBWE9iamVjdENhY2hlOjpBWElkQXR0cmlidXRlQ2hhbmdlZCk7CiAjZW5k
aWYKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvcGVuQXR0ciAmJiBpczxIVE1MRGlhbG9nRWxl
bWVudD4oKmVsZW1lbnQpKSB7Ci0gICAgICAgIGRlZmVyTW9kYWxDaGFuZ2UoZWxlbWVudCk7Ci0g
ICAgICAgIHJlY29tcHV0ZUlzSWdub3JlZChlbGVtZW50LT5wYXJlbnROb2RlKCkpOworICAgIGVs
c2UgaWYgKGF0dHJOYW1lID09IG9wZW5BdHRyICYmIGlzPEhUTUxEaWFsb2dFbGVtZW50PihlbGVt
ZW50KSkgeworICAgICAgICBkZWZlck1vZGFsQ2hhbmdlKCZlbGVtZW50KTsKKyAgICAgICAgcmVj
b21wdXRlSXNJZ25vcmVkKGVsZW1lbnQucGFyZW50Tm9kZSgpKTsKICAgICB9CiAKICAgICBpZiAo
IWF0dHJOYW1lLmxvY2FsTmFtZSgpLnN0cmluZygpLnN0YXJ0c1dpdGgoImFyaWEtIikpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBhcmlhX2FjdGl2ZWRlc2NlbmRhbnRB
dHRyKQotICAgICAgICBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZChlbGVtZW50KTsKKyAg
ICAgICAgaGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQoJmVsZW1lbnQpOwogICAgIGVsc2Ug
aWYgKGF0dHJOYW1lID09IGFyaWFfYnVzeUF0dHIpCi0gICAgICAgIHBvc3ROb3RpZmljYXRpb24o
ZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhFbGVtZW50QnVzeUNoYW5nZWQpOworICAgICAgICBw
b3N0Tm90aWZpY2F0aW9uKCZlbGVtZW50LCBBWE9iamVjdENhY2hlOjpBWEVsZW1lbnRCdXN5Q2hh
bmdlZCk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV92YWx1ZW5vd0F0dHIgfHwgYXR0
ck5hbWUgPT0gYXJpYV92YWx1ZXRleHRBdHRyKQotICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVs
ZW1lbnQsIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkKTsKKyAgICAgICAgcG9zdE5vdGlm
aWNhdGlvbigmZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQpOwogICAgIGVs
c2UgaWYgKGF0dHJOYW1lID09IGFyaWFfbGFiZWxBdHRyIHx8IGF0dHJOYW1lID09IGFyaWFfbGFi
ZWxlZGJ5QXR0ciB8fCBhdHRyTmFtZSA9PSBhcmlhX2xhYmVsbGVkYnlBdHRyKQotICAgICAgICB0
ZXh0Q2hhbmdlZChlbGVtZW50KTsKKyAgICAgICAgdGV4dENoYW5nZWQoJmVsZW1lbnQpOwogICAg
IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfY2hlY2tlZEF0dHIpCi0gICAgICAgIGNoZWNrZWRT
dGF0ZUNoYW5nZWQoZWxlbWVudCk7CisgICAgICAgIGNoZWNrZWRTdGF0ZUNoYW5nZWQoJmVsZW1l
bnQpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfc2VsZWN0ZWRBdHRyKQogICAgICAg
ICBzZWxlY3RlZFN0YXRlQ2hhbmdlZChlbGVtZW50KTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9
PSBhcmlhX2V4cGFuZGVkQXR0cikKLSAgICAgICAgaGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlKGVs
ZW1lbnQpOworICAgICAgICBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2UoJmVsZW1lbnQpOwogICAg
IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfaGlkZGVuQXR0cikgewotICAgICAgICBpZiAoYXV0
byogcGFyZW50ID0gZ2V0KGVsZW1lbnQtPnBhcmVudE5vZGUoKSkpCisgICAgICAgIGlmIChhdXRv
KiBwYXJlbnQgPSBnZXQoZWxlbWVudC5wYXJlbnROb2RlKCkpKQogICAgICAgICAgICAgaGFuZGxl
Q2hpbGRyZW5DaGFuZ2VkKCpwYXJlbnQpOwogCiAgICAgICAgIGlmIChtX2N1cnJlbnRNb2RhbEVs
ZW1lbnQgJiYgbV9jdXJyZW50TW9kYWxFbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihlbGVtZW50KSkg
ewpAQCAtMTg5MSwyNiArMTg3NCwyNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJp
YnV0ZUNoYW5nZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgRWxlbWVudAogICAgICAg
ICB9CiAgICAgfQogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfaW52YWxpZEF0dHIpCi0g
ICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhJbnZhbGlk
U3RhdHVzQ2hhbmdlZCk7CisgICAgICAgIHBvc3ROb3RpZmljYXRpb24oJmVsZW1lbnQsIEFYT2Jq
ZWN0Q2FjaGU6OkFYSW52YWxpZFN0YXR1c0NoYW5nZWQpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IGFyaWFfbW9kYWxBdHRyKQotICAgICAgICBkZWZlck1vZGFsQ2hhbmdlKGVsZW1lbnQpOwor
ICAgICAgICBkZWZlck1vZGFsQ2hhbmdlKCZlbGVtZW50KTsKICAgICBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBhcmlhX2N1cnJlbnRBdHRyKQotICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQs
IEFYT2JqZWN0Q2FjaGU6OkFYQ3VycmVudFN0YXRlQ2hhbmdlZCk7CisgICAgICAgIHBvc3ROb3Rp
ZmljYXRpb24oJmVsZW1lbnQsIEFYT2JqZWN0Q2FjaGU6OkFYQ3VycmVudFN0YXRlQ2hhbmdlZCk7
CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9kaXNhYmxlZEF0dHIpCi0gICAgICAgIHBv
c3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhEaXNhYmxlZFN0YXRlQ2hh
bmdlZCk7CisgICAgICAgIHBvc3ROb3RpZmljYXRpb24oJmVsZW1lbnQsIEFYT2JqZWN0Q2FjaGU6
OkFYRGlzYWJsZWRTdGF0ZUNoYW5nZWQpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFf
cHJlc3NlZEF0dHIpCi0gICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhPYmplY3RD
YWNoZTo6QVhQcmVzc2VkU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgcG9zdE5vdGlmaWNhdGlvbigm
ZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhQcmVzc2VkU3RhdGVDaGFuZ2VkKTsKICAgICBlbHNl
IGlmIChhdHRyTmFtZSA9PSBhcmlhX3JlYWRvbmx5QXR0cikKLSAgICAgICAgcG9zdE5vdGlmaWNh
dGlvbihlbGVtZW50LCBBWE9iamVjdENhY2hlOjpBWFJlYWRPbmx5U3RhdHVzQ2hhbmdlZCk7Cisg
ICAgICAgIHBvc3ROb3RpZmljYXRpb24oJmVsZW1lbnQsIEFYT2JqZWN0Q2FjaGU6OkFYUmVhZE9u
bHlTdGF0dXNDaGFuZ2VkKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3JlcXVpcmVk
QXR0cikKLSAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWE9iamVjdENhY2hlOjpB
WFJlcXVpcmVkU3RhdHVzQ2hhbmdlZCk7CisgICAgICAgIHBvc3ROb3RpZmljYXRpb24oJmVsZW1l
bnQsIEFYT2JqZWN0Q2FjaGU6OkFYUmVxdWlyZWRTdGF0dXNDaGFuZ2VkKTsKICAgICBlbHNlIGlm
IChhdHRyTmFtZSA9PSBhcmlhX3NvcnRBdHRyKQotICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVs
ZW1lbnQsIEFYT2JqZWN0Q2FjaGU6OkFYU29ydERpcmVjdGlvbkNoYW5nZWQpOworICAgICAgICBw
b3N0Tm90aWZpY2F0aW9uKCZlbGVtZW50LCBBWE9iamVjdENhY2hlOjpBWFNvcnREaXJlY3Rpb25D
aGFuZ2VkKTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVNb2RhbENoYW5nZShFbGVt
ZW50JiBlbGVtZW50KQogewotICAgIGlmICghaXM8SFRNTERpYWxvZ0VsZW1lbnQ+KGVsZW1lbnQp
ICYmICFub2RlSGFzUm9sZSgmZWxlbWVudCwgImRpYWxvZyJfcykgJiYgIW5vZGVIYXNSb2xlKCZl
bGVtZW50LCAiYWxlcnRkaWFsb2ciX3MpKQorICAgIGlmICghaXM8SFRNTERpYWxvZ0VsZW1lbnQ+
KGVsZW1lbnQpICYmICFlbGVtZW50Lmhhc1JvbGUoImRpYWxvZyJfcykgJiYgIWVsZW1lbnQuaGFz
Um9sZSgiYWxlcnRkaWFsb2ciX3MpKQogICAgICAgICByZXR1cm47CiAKICAgICBzdG9wQ2FjaGlu
Z0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlcygpOwpAQCAtMzI4MSw3ICszMjY0LDcgQEAgdm9pZCBB
WE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiAgICAgU2V0Rm9yU2Nv
cGUgcGVyZm9ybWluZ0RlZmVycmVkQ2FjaGVVcGRhdGUobV9wZXJmb3JtaW5nRGVmZXJyZWRDYWNo
ZVVwZGF0ZSwgdHJ1ZSk7CiAKICAgICBmb3IgKGF1dG8qIG5vZGVDaGlsZCA6IG1fZGVmZXJyZWRD
aGlsZHJlbkNoYW5nZWROb2RlTGlzdCkgewotICAgICAgICBoYW5kbGVNZW51T3BlbmVkKG5vZGVD
aGlsZCk7CisgICAgICAgIGhhbmRsZU1lbnVPcGVuZWQoKm5vZGVDaGlsZCk7CiAgICAgICAgIGhh
bmRsZUxpdmVSZWdpb25DcmVhdGVkKG5vZGVDaGlsZCk7CiAgICAgfQogICAgIG1fZGVmZXJyZWRD
aGlsZHJlbkNoYW5nZWROb2RlTGlzdC5jbGVhcigpOwpAQCAtMzI5OSw3ICszMjgyLDcgQEAgdm9p
ZCBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiAgICAgbV9kZWZl
cnJlZFJlY29tcHV0ZUlzSWdub3JlZExpc3QuY2xlYXIoKTsKIAogICAgIG1fZGVmZXJyZWRTZWxl
Y3RlZENoaWxkcmVkQ2hhbmdlZExpc3QuZm9yRWFjaChbdGhpc10gKGF1dG8mIHNlbGVjdEVsZW1l
bnQpIHsKLSAgICAgICAgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoJnNlbGVjdEVsZW1lbnQpOwor
ICAgICAgICBzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChzZWxlY3RFbGVtZW50KTsKICAgICB9KTsK
ICAgICBtX2RlZmVycmVkU2VsZWN0ZWRDaGlsZHJlZENoYW5nZWRMaXN0LmNsZWFyKCk7CiAKQEAg
LTMzMTAsNyArMzI5Myw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVycmVkQ2Fj
aGVVcGRhdGUoKQogICAgIG1fZGVmZXJyZWRUZXh0Rm9ybUNvbnRyb2xWYWx1ZS5jbGVhcigpOwog
CiAgICAgZm9yIChhdXRvJiBkZWZlcnJlZEF0dHJpYnV0ZUNoYW5nZUNvbnRleHQgOiBtX2RlZmVy
cmVkQXR0cmlidXRlQ2hhbmdlKQotICAgICAgICBoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoZGVmZXJy
ZWRBdHRyaWJ1dGVDaGFuZ2VDb250ZXh0LnZhbHVlLCBkZWZlcnJlZEF0dHJpYnV0ZUNoYW5nZUNv
bnRleHQua2V5KTsKKyAgICAgICAgaGFuZGxlQXR0cmlidXRlQ2hhbmdlKGRlZmVycmVkQXR0cmli
dXRlQ2hhbmdlQ29udGV4dC52YWx1ZSwgKmRlZmVycmVkQXR0cmlidXRlQ2hhbmdlQ29udGV4dC5r
ZXkpOwogICAgIG1fZGVmZXJyZWRBdHRyaWJ1dGVDaGFuZ2UuY2xlYXIoKTsKICAgICAKICAgICBm
b3IgKGF1dG8mIGRlZmVycmVkRm9jdXNlZENoYW5nZUNvbnRleHQgOiBtX2RlZmVycmVkRm9jdXNl
ZE5vZGVDaGFuZ2UpIHsKQEAgLTM0ODksNyArMzQ3Miw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
ZGVmZXJUZXh0Q2hhbmdlZElmTmVlZGVkKE5vZGUqIG5vZGUpCiAKIHZvaWQgQVhPYmplY3RDYWNo
ZTo6ZGVmZXJTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZElmTmVlZGVkKEVsZW1lbnQmIHNlbGVjdEVs
ZW1lbnQpCiB7Ci0gICAgaWYgKCFub2RlQW5kUmVuZGVyZXJBcmVWYWxpZCgmc2VsZWN0RWxlbWVu
dCkpCisgICAgaWYgKCFub2RlQW5kUmVuZGVyZXJBcmVWYWxpZChzZWxlY3RFbGVtZW50KSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHJlbmRlcmVyTmVlZHNEZWZlcnJlZFVwZGF0ZSgqc2Vs
ZWN0RWxlbWVudC5yZW5kZXJlcigpKSkgewpAQCAtMzQ5OCw3ICszNDgxLDcgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpkZWZlclNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkSWZOZWVkZWQoRWxlbWVudCYg
c2VsZWN0RWxlbWVudCkKICAgICAgICAgICAgIG1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIuc3Rh
cnRPbmVTaG90KDBfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2VsZWN0ZWRDaGls
ZHJlbkNoYW5nZWQoJnNlbGVjdEVsZW1lbnQpOworICAgIHNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2Vk
KHNlbGVjdEVsZW1lbnQpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyVGV4dFJlcGxh
Y2VtZW50Tm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQmIGZvcm1Db250cm9sRWxlbWVudCwgY29uc3QgU3RyaW5nJiBwcmV2aW91c1ZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBkMGM2NWJj
MjhmZmRjOGVjOWQ1NWIyOWViNWI5ZWQ0YTFjNWI3NTc5Li5iNzAyYWQ4NDM2YWY5ZGFjZjljZmQ5
MTlmOWMwOGJmNTdlY2QxMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuaApAQCAtMjAxLDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBOb2Rl
KiBtb2RhbE5vZGUoKTsKIAotICAgIHZvaWQgZGVmZXJBdHRyaWJ1dGVDaGFuZ2VJZk5lZWRlZChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRWxlbWVudCopOworICAgIHZvaWQgZGVmZXJBdHRyaWJ1dGVD
aGFuZ2VJZk5lZWRlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgRWxlbWVudCYpOwogICAgIHZvaWQg
cmVjb21wdXRlSXNJZ25vcmVkKFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgcmVjb21wdXRlSXNJ
Z25vcmVkKE5vZGUqKTsKIApAQCAtNDU3LDE0ICs0NTcsMTQgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcHJvY2Vzc0RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTGlzdCgpOwogICAgIHZvaWQgaGFuZGxl
Q2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QmKTsKLSAgICB2b2lkIGhhbmRsZU1l
bnVPcGVuZWQoTm9kZSopOworICAgIHZvaWQgaGFuZGxlTWVudU9wZW5lZChOb2RlJik7CiAgICAg
dm9pZCBoYW5kbGVMaXZlUmVnaW9uQ3JlYXRlZChOb2RlKik7CiAgICAgdm9pZCBoYW5kbGVNZW51
SXRlbVNlbGVjdGVkKE5vZGUqKTsKLSAgICB2b2lkIGhhbmRsZUF0dHJpYnV0ZUNoYW5nZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRWxlbWVudCopOwotICAgIGJvb2wgc2hvdWxkUHJvY2Vzc0F0dHJp
YnV0ZUNoYW5nZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRWxlbWVudCopOwotICAgIHZvaWQgc2Vs
ZWN0ZWRDaGlsZHJlbkNoYW5nZWQoTm9kZSopOworICAgIHZvaWQgaGFuZGxlQXR0cmlidXRlQ2hh
bmdlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBFbGVtZW50Jik7CisgICAgYm9vbCBzaG91bGRQcm9j
ZXNzQXR0cmlidXRlQ2hhbmdlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBFbGVtZW50Jik7CisgICAg
dm9pZCBzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChFbGVtZW50Jik7CiAgICAgdm9pZCBzZWxlY3Rl
ZENoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqKTsKLSAgICB2b2lkIHNlbGVjdGVkU3RhdGVD
aGFuZ2VkKE5vZGUqKTsKKyAgICB2b2lkIHNlbGVjdGVkU3RhdGVDaGFuZ2VkKEVsZW1lbnQmKTsK
ICAgICAvLyBDYWxsZWQgYnkgYSBub2RlIHdoZW4gdGV4dCBvciBhIHRleHQgZXF1aXZhbGVudCAo
ZS5nLiBhbHQpIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLgogICAgIHZvaWQgdGV4dENoYW5nZWQoTm9k
ZSopOwogICAgIHZvaWQgaGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQoTm9kZSopOwpAQCAt
NTUwLDcgKzU1MCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLWJvb2wgbm9kZUhhc1JvbGUo
Tm9kZSosIGNvbnN0IFN0cmluZyYgcm9sZSk7CiAvLyBUaGlzIHdpbGwgbGV0IHlvdSBrbm93IGlm
IGFyaWEtaGlkZGVuIHdhcyBleHBsaWNpdGx5IHNldCB0byBmYWxzZS4KIGJvb2wgaXNOb2RlQXJp
YVZpc2libGUoTm9kZSopOwogICAgIApAQCAtNTc0LDcgKzU3Myw2IEBAIGlubGluZSBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1c2VkT2JqZWN0Rm9yUGFnZShjb25zdCBQ
YWdlKikgeyByCiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5
KCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkaXNhYmxlQWNjZXNzaWJpbGl0eSgp
IHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c2V0RW5oYW5jZWRVc2VySW50ZXJmYWNl
QWNjZXNzaWJpbGl0eShib29sKSB7IH0KLWlubGluZSBib29sIG5vZGVIYXNSb2xlKE5vZGUqLCBj
b25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNo
ZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcygp
IHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c3RvcENhY2hpbmdDb21wdXRlZE9iamVj
dEF0dHJpYnV0ZXMoKSB7IH0KIGlubGluZSBib29sIGlzTm9kZUFyaWFWaXNpYmxlKE5vZGUqKSB7
IHJldHVybiB0cnVlOyB9CkBAIC02MDQsOCArNjAyLDggQEAgaW5saW5lIHZvaWQgQVhPYmplY3RD
YWNoZTo6aGFuZGxlTW9kYWxDaGFuZ2UoRWxlbWVudCYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6ZGVmZXJNb2RhbENoYW5nZShFbGVtZW50KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9i
amVjdENhY2hlOjpoYW5kbGVSb2xlQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlu
bGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyQXR0cmlidXRlQ2hhbmdlSWZOZWVkZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIEVsZW1lbnQqKSB7IH0KLWlubGluZSB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRWxlbWVudCop
IHsgfQotaW5saW5lIGJvb2wgQVhPYmplY3RDYWNoZTo6c2hvdWxkUHJvY2Vzc0F0dHJpYnV0ZUNo
YW5nZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRWxlbWVudCopIHsgcmV0dXJuIGZhbHNlOyB9Citp
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIEVsZW1lbnQmKSB7IH0KK2lubGluZSBib29sIEFYT2JqZWN0Q2FjaGU6OnNo
b3VsZFByb2Nlc3NBdHRyaWJ1dGVDaGFuZ2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIEVsZW1lbnQm
KSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlRm9j
dXNlZFVJRWxlbWVudENoYW5nZWQoTm9kZSosIE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmhhbmRsZVNjcm9sbGJhclVwZGF0ZShTY3JvbGxWaWV3KikgeyB9CiBpbmxpbmUg
dm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVTY3JvbGxlZFRvQW5jaG9yKGNvbnN0IE5vZGUqKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCmluZGV4IDcyM2MwNzdkMGFjZmViNjU3NDY5NTIwZjcwZjlmZDllN2FjNDNmZjcu
LjFjNjFhYjhhNWFiMjk0MWY5ZTJiOThiZDM3N2U3Yjc3NTk1NDkzNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAt
MjcyMSw5ICsyNzIxLDkgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJvbGVEZXNjcmlw
dGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHJvbGVEZXNjcmlwdGlvbjsKIH0KIAotYm9vbCBub2Rl
SGFzUHJlc2VudGF0aW9uUm9sZShOb2RlKiBub2RlKQorYm9vbCBlbGVtZW50SGFzUHJlc2VudGF0
aW9uUm9sZShFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBub2RlSGFzUm9sZShub2Rl
LCAicHJlc2VudGF0aW9uIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAibm9uZSJfcyk7CisgICAg
cmV0dXJuIGVsZW1lbnQuaGFzUm9sZSgicHJlc2VudGF0aW9uIl9zKSB8fCBlbGVtZW50Lmhhc1Jv
bGUoIm5vbmUiX3MpOwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0
c1ByZXNzQWN0aW9uKCkgY29uc3QKQEAgLTI3NTMsNyArMjc1Myw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6c3VwcG9ydHNQcmVzc0FjdGlvbigpIGNvbnN0CiAgICAgfQogICAgIAogICAg
IC8vIFtCdWc6IDEzMzYxM10gSGV1cmlzdGljOiBJZiB0aGUgYWN0aW9uIGVsZW1lbnQgaXMgcHJl
c2VudGF0aW9uYWwsIHdlIHNob3VsZG4ndCBleHBvc2UgcHJlc3MgYXMgYSBzdXBwb3J0ZWQgYWN0
aW9uLgotICAgIHJldHVybiAhbm9kZUhhc1ByZXNlbnRhdGlvblJvbGUoYWN0aW9uRWxlbWVudCk7
CisgICAgcmV0dXJuICFlbGVtZW50SGFzUHJlc2VudGF0aW9uUm9sZSgqYWN0aW9uRWxlbWVudCk7
CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNEYXRldGltZUF0dHJpYnV0
ZSgpIGNvbnN0CkBAIC0zNzU0LDcgKzM3NTQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cywgY29ucwog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiB0cmVlU2NvcGUgPSBub2RlLT50cmVlU2NvcGUo
KTsKLSAgICBhdXRvIHNwYWNlU3BsaXRTdHJpbmcgPSBTcGFjZVNwbGl0U3RyaW5nKGlkc1N0cmlu
ZywgZmFsc2UpOworICAgIGF1dG8gc3BhY2VTcGxpdFN0cmluZyA9IFNwYWNlU3BsaXRTdHJpbmco
aWRzU3RyaW5nLCBTcGFjZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xkQ2FzZTo6Tm8pOwogICAgIHNp
emVfdCBsZW5ndGggPSBzcGFjZVNwbGl0U3RyaW5nLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50ID0gdHJl
ZVNjb3BlLmdldEVsZW1lbnRCeUlkKHNwYWNlU3BsaXRTdHJpbmdbaV0pKQpAQCAtMzkyOCw3ICsz
OTI4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNSZWZlcmVuY2Vk
QnlBdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmUKIAogICAgIGZvciAoYXV0byYgZWxlbWVu
dCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KG5vZGUoKS0+dHJlZVNjb3BlKCkucm9vdE5v
ZGUoKSkpIHsKICAgICAgICAgYXV0byYgaWRMaXN0ID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGF0dHJpYnV0ZSk7Ci0gICAgICAgIGlmICghU3BhY2VTcGxpdFN0cmlu
Zzo6c3BhY2VTcGxpdFN0cmluZ0NvbnRhaW5zVmFsdWUoaWRMaXN0LCBpZCkpCisgICAgICAgIGlm
ICghU3BhY2VTcGxpdFN0cmluZzo6c3BhY2VTcGxpdFN0cmluZ0NvbnRhaW5zVmFsdWUoaWRMaXN0
LCBpZCwgU3BhY2VTcGxpdFN0cmluZzo6U2hvdWxkRm9sZENhc2U6Ok5vKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChhdXRvKiBheE9iamVjdCA9IGNhY2hlLT5nZXRPckNy
ZWF0ZSgmZWxlbWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDNmMjk5NmQ5M2E5YWY3NTFiMGM1MjcyZjM1MjY0MzZm
ZjljYjdiOWMuLjU2MzdmMTc0ODdlZGU4YmI1NmUyMjljNTU4NDFjYjIzZjk4MGIxNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CkBAIC03MSw3ICs3MSw3IEBAIHN0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dCB7CiAgICAgeyB9CiB9
OwogCi1ib29sIG5vZGVIYXNQcmVzZW50YXRpb25Sb2xlKE5vZGUqKTsKK2Jvb2wgZWxlbWVudEhh
c1ByZXNlbnRhdGlvblJvbGUoRWxlbWVudCYpOwogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0
IDogcHVibGljIEFYQ29yZU9iamVjdCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRl
eCAwMDUwZGUxNmMwY2JkN2YwNjU3NjliYzU4MjY0YjYxMTY4ZWRjZDk0Li5mZTQ0ZGY2OWM3YWRh
MTc0MTRmN2NlMTkyOGEzOWZlZmM4YzdkY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTEy
ODEsNyArMTI4MSw3IEBAIHN0YXRpYyBib29sIHdlYkFyZWFJc1ByZXNlbnRhdGlvbmFsKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBpZiAo
YXV0byBvd25lckVsZW1lbnQgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIG5vZGVIYXNQcmVzZW50YXRpb25Sb2xlKG93bmVyRWxlbWVudCk7Cisg
ICAgICAgIHJldHVybiBlbGVtZW50SGFzUHJlc2VudGF0aW9uUm9sZSgqb3duZXJFbGVtZW50KTsK
ICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yNzgzLDE1ICsyNzgzLDE2IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVuZGVyT2JqZWN0SXNPYnNlcnZhYmxlKFJlbmRl
ck9iamVjdCYgcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIC8vIEFY
IGNsaWVudHMgd2lsbCBsaXN0ZW4gZm9yIEFYU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQgb24gbGlz
dGJveGVzLgotICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci5ub2RlKCk7CisgICAgYXV0byogbm9k
ZSA9IHJlbmRlcmVyLm5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBhdXRvKiBlbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsK
ICAgICAKLSAgICBpZiAobm9kZUhhc1JvbGUobm9kZSwgImxpc3Rib3giX3MpIHx8IChpczxSZW5k
ZXJCb3hNb2RlbE9iamVjdD4ocmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2Jq
ZWN0PihyZW5kZXJlcikuaXNMaXN0Qm94KCkpKQorICAgIGlmICgoZWxlbWVudCAmJiBlbGVtZW50
LT5oYXNSb2xlKCJsaXN0Ym94Il9zKSkgfHwgKGlzPFJlbmRlckJveE1vZGVsT2JqZWN0PihyZW5k
ZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyKS5pc0xpc3RC
b3goKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVGV4dGJveGVzIHNob3VsZCBz
ZW5kIG91dCBub3RpZmljYXRpb25zLgotICAgIGlmIChub2RlSGFzUm9sZShub2RlLCAidGV4dGJv
eCJfcykgfHwgKGlzPEVsZW1lbnQ+KCpub2RlKSAmJiBjb250ZW50RWRpdGFibGVBdHRyaWJ1dGVJ
c0VuYWJsZWQoZG93bmNhc3Q8RWxlbWVudD4obm9kZSkpKSkKKyAgICBpZiAoZWxlbWVudCAmJiAo
ZWxlbWVudC0+aGFzUm9sZSgidGV4dGJveCJfcykgfHwgY29udGVudEVkaXRhYmxlQXR0cmlidXRl
SXNFbmFibGVkKGVsZW1lbnQpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKaW5kZXggMzRhN2JhN2NjZGI0ZTUzYWE1NTQ2MTk4MGYx
NTRkMzg4YzJhZjQzZS4uZWJjNTQwMzAzOWRlY2QzYzA1ZmRjODY5NjVhYjE5ZWEyNTExNGIzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUNlbGwuY3BwCkBAIC02MiwxMyArNjIsMTQgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1
c2lvbjo6SWdub3JlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIW5vZGUo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gSWdub3JlIGFub255bW91cyB0
YWJsZSBjZWxscyBhcyBsb25nIGFzIHRoZXkncmUgbm90IGluIGEgdGFibGUgKGllLiB3aGVuIGRp
c3BsYXk6dGFibGUgaXMgdXNlZCkuCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJUYWJsZSA9IGlz
PFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIoKSkgPyBkb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+
KCptX3JlbmRlcmVyKS50YWJsZSgpIDogbnVsbHB0cjsKLSAgICBib29sIGluVGFibGUgPSByZW5k
ZXJUYWJsZSAmJiByZW5kZXJUYWJsZS0+bm9kZSgpICYmIChyZW5kZXJUYWJsZS0+bm9kZSgpLT5o
YXNUYWdOYW1lKHRhYmxlVGFnKSB8fCBub2RlSGFzUm9sZShyZW5kZXJUYWJsZS0+bm9kZSgpLCAi
Z3JpZCJfcykpOwotICAgIGlmICghbm9kZSgpICYmICFpblRhYmxlKQorICAgIGF1dG8qIHJlbmRl
clRhYmxlID0gaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSA/IGRvd25jYXN0PFJlbmRl
clRhYmxlQ2VsbD4oKm1fcmVuZGVyZXIpLnRhYmxlKCkgOiBudWxscHRyOworICAgIGJvb2wgaW5U
YWJsZSA9IHJlbmRlclRhYmxlICYmIHJlbmRlclRhYmxlLT5lbGVtZW50KCkgJiYgKHJlbmRlclRh
YmxlLT5lbGVtZW50KCktPmhhc1RhZ05hbWUodGFibGVUYWcpIHx8IHJlbmRlclRhYmxlLT5lbGVt
ZW50KCktPmhhc1JvbGUoImdyaWQiX3MpKTsKKyAgICBpZiAoIWluVGFibGUpCiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAKICAgICBpZiAoIWlzVGFibGVDZWxsKCkpCiAgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUcmVlLmNwcAppbmRleCAxYzAwYmM5NTQyM2UyOTZhZDUxMjYzNzdlNDgxYzdjZTc5
ZGZiZDAzLi4zMTg1YzA1ZDNjNzc3Y2YxNTkwOWI2OThmNzE1MmQ2ODQ1ODZmNDRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAi
RWxlbWVudENoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKIAogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtNjUsMTAgKzY2LDEwIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFj
Y2Vzc2liaWxpdHlUcmVlOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAgcmV0dXJu
IGlzVHJlZVZhbGlkKCkgPyBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZSA6IEFjY2Vzc2liaWxpdHlS
b2xlOjpHcm91cDsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5VHJlZTo6bm9kZUhhc1RyZWVJdGVt
Q2hpbGQoTm9kZSYgbm9kZSkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eVRyZWU6OmVsZW1lbnRI
YXNUcmVlSXRlbUNoaWxkKEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRv
KiBjaGlsZCA9IG5vZGUuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkgewotICAgICAgICBpZiAobm9kZUhhc1JvbGUoY2hpbGQsICJ0cmVlaXRlbSJfcykp
CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KGVsZW1lbnQp
KSB7CisgICAgICAgIGlmIChjaGlsZC5oYXNSb2xlKCJ0cmVlaXRlbSJfcykpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzksMzEgKzgwLDI4
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRyZWU6OmlzVHJlZVZhbGlkKCkgY29uc3QKICAgICAvLyBB
IHZhbGlkIHRyZWUgY2FuIG9ubHkgaGF2ZSB0cmVlaXRlbSBvciBncm91cCBvZiB0cmVlaXRlbXMg
YXMgYSBjaGlsZAogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jdHJlZQog
Ci0gICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBhdXRvKiBub2RlID0gZHluYW1p
Y0Rvd25jYXN0PENvbnRhaW5lck5vZGU+KHRoaXMtPm5vZGUoKSk7CiAgICAgaWYgKCFub2RlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgRGVxdWU8Tm9kZSo+IHF1ZXVlOwotICAg
IGZvciAoYXV0byogY2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBxdWV1ZS5hcHBlbmQoY2hpbGQpOworICAgIERl
cXVlPEVsZW1lbnQqPiBxdWV1ZTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5
cGU8RWxlbWVudD4oKm5vZGUpKQorICAgICAgICBxdWV1ZS5hcHBlbmQoJmNoaWxkKTsKIAogICAg
IHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gY2hpbGQgPSBxdWV1ZS50
YWtlRmlyc3QoKTsKLQotICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpjaGlsZCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKG5vZGVIYXNSb2xlKGNoaWxkLCAidHJlZWl0ZW0i
X3MpKQorICAgICAgICBpZiAoY2hpbGQtPmhhc1JvbGUoInRyZWVpdGVtIl9zKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAobm9kZUhhc1JvbGUoY2hpbGQsICJwcmVzZW50YXRp
b24iX3MpKSB7Ci0gICAgICAgICAgICBpZiAoIW5vZGVIYXNUcmVlSXRlbUNoaWxkKCpjaGlsZCkp
CisgICAgICAgIGlmIChjaGlsZC0+aGFzUm9sZSgicHJlc2VudGF0aW9uIl9zKSkgeworICAgICAg
ICAgICAgaWYgKCFlbGVtZW50SGFzVHJlZUl0ZW1DaGlsZCgqY2hpbGQpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAg
ICAgIGlmICghbm9kZUhhc1JvbGUoY2hpbGQsICJncm91cCJfcykpCisgICAgICAgIGlmICghY2hp
bGQtPmhhc1JvbGUoImdyb3VwIl9zKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICBmb3IgKGF1dG8qIGdyb3VwQ2hpbGQgPSBjaGlsZC0+Zmlyc3RDaGlsZCgpOyBncm91cENo
aWxkOyBncm91cENoaWxkID0gZ3JvdXBDaGlsZC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAg
IHF1ZXVlLmFwcGVuZChncm91cENoaWxkKTsKKyAgICAgICAgZm9yIChhdXRvJiBncm91cENoaWxk
IDogY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKmNoaWxkKSkKKyAgICAgICAgICAgIHF1ZXVlLmFw
cGVuZCgmZ3JvdXBDaGlsZCk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5oCmluZGV4IDM1Yzdm
MTRmN2NjYjQ1ZGYzZTMwNmE0NWY2M2U0OTliZmU1ZTNlM2EuLjk0NzNkMDk2ZWEwMTJhOGE4Njll
NGJmZmNlZjEzZDdmNmQ1OWZkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUcmVlLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
QWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZTsK
ICAgICBib29sIGlzVHJlZVZhbGlkKCkgY29uc3Q7Ci0gICAgYm9vbCBub2RlSGFzVHJlZUl0ZW1D
aGlsZChOb2RlJikgY29uc3Q7CisgICAgYm9vbCBlbGVtZW50SGFzVHJlZUl0ZW1DaGlsZChFbGVt
ZW50JikgY29uc3Q7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NsYXNzQ29sbGVjdGlvbi5oCmluZGV4IGE2NzVkMzA2YmRmNzVmMzhhZjlmZmU4OWE2YjRi
ZTg5MjNmZDRjNDEuLmM5M2JiODk3YjdiODkxMTMzYTJmZDgxZjgxYzQzNTJkMTgzODY4NzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc0NvbGxlY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2xhc3NDb2xsZWN0aW9uLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0
ZToKIAogaW5saW5lIENsYXNzQ29sbGVjdGlvbjo6Q2xhc3NDb2xsZWN0aW9uKENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlLCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBjbGFz
c05hbWVzKQogICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb24ocm9vdE5vZGUsIHR5cGUpCi0gICAg
LCBtX2NsYXNzTmFtZXMoY2xhc3NOYW1lcywgcm9vdE5vZGUuZG9jdW1lbnQoKS5pblF1aXJrc01v
ZGUoKSkKKyAgICAsIG1fY2xhc3NOYW1lcyhjbGFzc05hbWVzLCByb290Tm9kZS5kb2N1bWVudCgp
LmluUXVpcmtzTW9kZSgpID8gU3BhY2VTcGxpdFN0cmluZzo6U2hvdWxkRm9sZENhc2U6OlllcyA6
IFNwYWNlU3BsaXRTdHJpbmc6OlNob3VsZEZvbGRDYXNlOjpObykKICAgICAsIG1fb3JpZ2luYWxD
bGFzc05hbWVzKGNsYXNzTmFtZXMpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMDI5
NjJkZTI4MDZlNjAyOWQxNDRmYWZjMmM3ODJlNmQ2NzZlMDdhYy4uZmU4ZjE5MjQ0OWI0NWRkMjUx
MTE3NmQ0ZTFiYmY2MzU1YzEwNWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTk2MSw3
ICsxOTYxLDcgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFYKICAgICBpbnZhbGlkYXRlTm9kZUxp
c3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUobmFtZSk7CiAKICAg
ICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RD
YWNoZSgpKQotICAgICAgICBjYWNoZS0+ZGVmZXJBdHRyaWJ1dGVDaGFuZ2VJZk5lZWRlZChuYW1l
LCB0aGlzKTsKKyAgICAgICAgY2FjaGUtPmRlZmVyQXR0cmlidXRlQ2hhbmdlSWZOZWVkZWQobmFt
ZSwgKnRoaXMpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KQEAgLTE5
OTcsNyArMTk5Nyw3IEBAIHZvaWQgRWxlbWVudDo6Y2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IEF0b21TdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogICAgIGlmICghZWxlbWVudERhdGEoKSkKICAg
ICAgICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKTsKIAotICAgIGJvb2wgc2hvdWxkRm9sZENh
c2UgPSBkb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpOworICAgIGF1dG8gc2hvdWxkRm9sZENhc2Ug
PSBkb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpID8gU3BhY2VTcGxpdFN0cmluZzo6U2hvdWxkRm9s
ZENhc2U6OlllcyA6IFNwYWNlU3BsaXRTdHJpbmc6OlNob3VsZEZvbGRDYXNlOjpObzsKICAgICBi
b29sIG5ld1N0cmluZ0hhc0NsYXNzZXMgPSBpc05vbkVtcHR5VG9rZW5MaXN0KG5ld0NsYXNzU3Ry
aW5nKTsKIAogICAgIGF1dG8gb2xkQ2xhc3NOYW1lcyA9IGVsZW1lbnREYXRhKCktPmNsYXNzTmFt
ZXMoKTsKQEAgLTIwMTcsNyArMjAxNyw3IEBAIHZvaWQgRWxlbWVudDo6cGFydEF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgYm9vbCBoYXNQYXJ0cyA9
IGlzTm9uRW1wdHlUb2tlbkxpc3QobmV3VmFsdWUpOwogICAgIGlmIChoYXNQYXJ0cyB8fCAhcGFy
dE5hbWVzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gbmV3UGFydHMgPSBoYXNQYXJ0cyA/
IFNwYWNlU3BsaXRTdHJpbmcobmV3VmFsdWUsIGZhbHNlKSA6IFNwYWNlU3BsaXRTdHJpbmcoKTsK
KyAgICAgICAgYXV0byBuZXdQYXJ0cyA9IGhhc1BhcnRzID8gU3BhY2VTcGxpdFN0cmluZyhuZXdW
YWx1ZSwgU3BhY2VTcGxpdFN0cmluZzo6U2hvdWxkRm9sZENhc2U6Ok5vKSA6IFNwYWNlU3BsaXRT
dHJpbmcoKTsKICAgICAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0UGFydE5hbWVzKFdU
Rk1vdmUobmV3UGFydHMpKTsKICAgICB9CiAKQEAgLTQ3NTUsNiArNDc1NSwyMCBAQCBFbGVtZW50
SWRlbnRpZmllciBFbGVtZW50OjpjcmVhdGVFbGVtZW50SWRlbnRpZmllcigpCiAgICAgcmV0dXJu
IEVsZW1lbnRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogfQogCitib29sIEVsZW1lbnQ6Omhhc1Jv
bGUoU3RyaW5nVmlldyByb2xlKSBjb25zdAoreworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKQor
ICAgIGF1dG8mIHJvbGVWYWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9s
ZUF0dHIpOworICAgIGlmIChyb2xlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gcm9sZVZhbHVl
LmlzRW1wdHkoKTsKKyAgICBpZiAocm9sZVZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBTcGFjZVNwbGl0U3RyaW5nOjpzcGFjZVNwbGl0U3RyaW5nQ29u
dGFpbnNWYWx1ZShyb2xlVmFsdWUsIHJvbGUsIFNwYWNlU3BsaXRTdHJpbmc6OlNob3VsZEZvbGRD
YXNlOjpZZXMpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2UKKyNlbmRpZgorfQorCiAjaWYgRU5B
QkxFKENTU19UWVBFRF9PTSkKIAogU3R5bGVQcm9wZXJ0eU1hcCogRWxlbWVudDo6YXR0cmlidXRl
U3R5bGVNYXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggZjI1MDk4Yzc2OWU3OTBlMWUxZTE2OTE2
YmIxNDZlMDA0NTY2NDAwOC4uNGNjODI4YmE2ZjlkMWFkYjc2MjYxNTY2ZTJjNDEwYjEyYjAyZjUz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC02NDAsNiArNjQwLDggQEAgcHVibGljOgogICAgIGJv
b2wgaGFzRGlzcGxheUNvbnRlbnRzKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9yZURpc3BsYXlDb250
ZW50c1N0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwogCisgICAgYm9vbCBoYXNS
b2xlKFN0cmluZ1ZpZXcgcm9sZSkgY29uc3Q7CisKICAgICB1c2luZyBDb250YWluZXJOb2RlOjpz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyOwogICAgIHZvaWQgc2V0QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NwYWNlU3BsaXRTdHJpbmcuY3BwCmluZGV4IDljMTU3ODIzNDBmZDYzMGVjZTE3Y2RiMjlmMjUw
YTg0ZjViMjM4OGMuLmY3ZGI4ZWNhY2UwMGRkNzRiZmIwMWViNzdmMjg3OTg2MjdhMWE3NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKQEAgLTkxLDEzICs5MSwxMyBA
QCBzdGF0aWMgU3BhY2VTcGxpdFN0cmluZ1RhYmxlJiBzcGFjZVNwbGl0U3RyaW5nVGFibGUoKQog
ICAgIHJldHVybiB0YWJsZTsKIH0KIAotdm9pZCBTcGFjZVNwbGl0U3RyaW5nOjpzZXQoY29uc3Qg
QXRvbVN0cmluZyYgaW5wdXRTdHJpbmcsIGJvb2wgc2hvdWxkRm9sZENhc2UpCit2b2lkIFNwYWNl
U3BsaXRTdHJpbmc6OnNldChjb25zdCBBdG9tU3RyaW5nJiBpbnB1dFN0cmluZywgU2hvdWxkRm9s
ZENhc2Ugc2hvdWxkRm9sZENhc2UpCiB7CiAgICAgaWYgKGlucHV0U3RyaW5nLmlzTnVsbCgpKSB7
CiAgICAgICAgIGNsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9kYXRhID0g
U3BhY2VTcGxpdFN0cmluZ0RhdGE6OmNyZWF0ZShzaG91bGRGb2xkQ2FzZSA/IGlucHV0U3RyaW5n
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgOiBpbnB1dFN0cmluZyk7CisgICAgbV9kYXRhID0g
U3BhY2VTcGxpdFN0cmluZ0RhdGE6OmNyZWF0ZShzaG91bGRGb2xkQ2FzZSA9PSBTaG91bGRGb2xk
Q2FzZTo6WWVzID8gaW5wdXRTdHJpbmcuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSA6IGlucHV0
U3RyaW5nKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmVmZXJlbmNlQ2hhcmFjdGVyVHlwZT4K
QEAgLTEzNSwxNCArMTM1LDE0IEBAIHN0YXRpYyBib29sIHNwYWNlU3BsaXRTdHJpbmdDb250YWlu
c1ZhbHVlSW50ZXJuYWwoU3RyaW5nVmlldyBzcGFjZVNwbGl0U3RyaW5nLCBTCiAgICAgcmV0dXJu
IHRva2VuUHJvY2Vzc29yLnJlZmVyZW5jZVN0cmluZ1dhc0ZvdW5kKCk7CiB9CiAKLWJvb2wgU3Bh
Y2VTcGxpdFN0cmluZzo6c3BhY2VTcGxpdFN0cmluZ0NvbnRhaW5zVmFsdWUoU3RyaW5nVmlldyBz
cGFjZVNwbGl0U3RyaW5nLCBTdHJpbmdWaWV3IHZhbHVlKQorYm9vbCBTcGFjZVNwbGl0U3RyaW5n
OjpzcGFjZVNwbGl0U3RyaW5nQ29udGFpbnNWYWx1ZShTdHJpbmdWaWV3IHNwYWNlU3BsaXRTdHJp
bmcsIFN0cmluZ1ZpZXcgdmFsdWUsIFNob3VsZEZvbGRDYXNlIHNob3VsZEZvbGRDYXNlKQogewog
ICAgIGlmIChzcGFjZVNwbGl0U3RyaW5nLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAodmFsdWUuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBzcGFjZVNwbGl0U3Ry
aW5nQ29udGFpbnNWYWx1ZUludGVybmFsPExDaGFyPihzcGFjZVNwbGl0U3RyaW5nLCB2YWx1ZSk7
Ci0gICAgcmV0dXJuIHNwYWNlU3BsaXRTdHJpbmdDb250YWluc1ZhbHVlSW50ZXJuYWw8VUNoYXI+
KHNwYWNlU3BsaXRTdHJpbmcsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHNwYWNlU3BsaXRTdHJp
bmdDb250YWluc1ZhbHVlSW50ZXJuYWw8TENoYXI+KHNob3VsZEZvbGRDYXNlID09IFNob3VsZEZv
bGRDYXNlOjpZZXMgPyBTdHJpbmdWaWV3IHsgc3BhY2VTcGxpdFN0cmluZy5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpIH0gOiBzcGFjZVNwbGl0U3RyaW5nLCB2YWx1ZSk7CisgICAgcmV0dXJuIHNw
YWNlU3BsaXRTdHJpbmdDb250YWluc1ZhbHVlSW50ZXJuYWw8VUNoYXI+KHNob3VsZEZvbGRDYXNl
ID09IFNob3VsZEZvbGRDYXNlOjpZZXMgPyBTdHJpbmdWaWV3IHsgc3BhY2VTcGxpdFN0cmluZy5j
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH0gOiBzcGFjZVNwbGl0U3RyaW5nLCB2YWx1ZSk7CiB9
CiAKIGNsYXNzIFRva2VuQ291bnRlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U3BhY2VTcGxpdFN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcu
aAppbmRleCBkMTgxNTcxOWNlNDViOTU0YWM5YTBjYjI4ZDMwYTY4Mzg3ZjNiODlkLi40OWM5YmNm
MzdkZjBjODU5NWQxNjA5ODI2MmI0YmM0NjJlYTc4OGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFj
ZVNwbGl0U3RyaW5nLmgKQEAgLTk5LDExICs5OSwxMyBAQCBwcml2YXRlOgogY2xhc3MgU3BhY2VT
cGxpdFN0cmluZyB7CiBwdWJsaWM6CiAgICAgU3BhY2VTcGxpdFN0cmluZygpID0gZGVmYXVsdDsK
LSAgICBTcGFjZVNwbGl0U3RyaW5nKGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZywgYm9vbCBzaG91
bGRGb2xkQ2FzZSkgeyBzZXQoc3RyaW5nLCBzaG91bGRGb2xkQ2FzZSk7IH0KKworICAgIGVudW0g
Y2xhc3MgU2hvdWxkRm9sZENhc2UgOiBib29sIHsgTm8sIFllcyB9OworICAgIFNwYWNlU3BsaXRT
dHJpbmcoY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nLCBTaG91bGRGb2xkQ2FzZSBzaG91bGRGb2xk
Q2FzZSkgeyBzZXQoc3RyaW5nLCBzaG91bGRGb2xkQ2FzZSk7IH0KIAogICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9kYXRh
ICE9IG90aGVyLm1fZGF0YTsgfQogCi0gICAgdm9pZCBzZXQoY29uc3QgQXRvbVN0cmluZyYsIGJv
b2wgc2hvdWxkRm9sZENhc2UpOworICAgIHZvaWQgc2V0KGNvbnN0IEF0b21TdHJpbmcmLCBTaG91
bGRGb2xkQ2FzZSk7CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhID0gbnVsbHB0cjsgfQogCiAg
ICAgYm9vbCBjb250YWlucyhjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YSAmJiBtX2RhdGEtPmNvbnRhaW5zKHN0cmluZyk7IH0KQEAgLTExNyw3ICsxMTksNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAoKm1fZGF0YSlbaV07CiAgICAgfQogCi0gICAgc3Rh
dGljIGJvb2wgc3BhY2VTcGxpdFN0cmluZ0NvbnRhaW5zVmFsdWUoU3RyaW5nVmlldyBzcGFjZVNw
bGl0U3RyaW5nLCBTdHJpbmdWaWV3IHZhbHVlKTsKKyAgICBzdGF0aWMgYm9vbCBzcGFjZVNwbGl0
U3RyaW5nQ29udGFpbnNWYWx1ZShTdHJpbmdWaWV3IHNwYWNlU3BsaXRTdHJpbmcsIFN0cmluZ1Zp
ZXcgdmFsdWUsIFNob3VsZEZvbGRDYXNlKTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U3BhY2VT
cGxpdFN0cmluZ0RhdGE+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
QXV0b2ZpbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKaW5kZXggZDgy
ZmM0ZThlMjZmODdiNGVkYjUyY2ZmZTc4NzY1YjEzYTc1NDIwYy4uZGU1MTg1ZTE3YjM3ZTg0ZGIz
NzE0ODhiNDY4YmZkYzMyNTg3ZDQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9B
dXRvZmlsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKQEAgLTE2
Miw3ICsxNjIsNyBAQCBBdXRvZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZv
cm1Db250cm9sRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRybwogICAgICAgICByZXR1cm4gZGVm
YXVsdExhYmVsKCk7CiAKICAgICAvLyAyLiBMZXQgdG9rZW5zIGJlIHRoZSByZXN1bHQgb2Ygc3Bs
aXR0aW5nIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBvbiBzcGFjZXMuCi0gICAgU3BhY2VTcGxpdFN0
cmluZyB0b2tlbnMoYXR0cmlidXRlVmFsdWUsIHRydWUpOworICAgIFNwYWNlU3BsaXRTdHJpbmcg
dG9rZW5zKGF0dHJpYnV0ZVZhbHVlLCBTcGFjZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xkQ2FzZTo6
WWVzKTsKIAogICAgIC8vIDMuIElmIHRva2VucyBpcyBlbXB0eSwgdGhlbiBqdW1wIHRvIHRoZSBz
dGVwIGxhYmVsZWQgZGVmYXVsdC4KICAgICBpZiAodG9rZW5zLmlzRW1wdHkoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggYmQ0MGFlYWM5Mjg4Yzg3ZTIx
YTlmMmVhM2E5YzE0ZWEwODllNzM3ZC4uNzRmZTZhYWQ3NjBjZjNhYzk1ODEzNWEzODBjNDJjZWVi
ZTg3OWJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAg
LTI1OSw4ICsyNTksNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogICAgICAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5vUmVmZXJyZXIoIm5v
cmVmZXJyZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbm9PcGVuZXIo
Im5vb3BlbmVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9wZW5lcigi
b3BlbmVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAgICBjb25z
dCBib29sIHNob3VsZEZvbGRDYXNlID0gdHJ1ZTsKLSAgICAgICAgU3BhY2VTcGxpdFN0cmluZyBy
ZWxWYWx1ZSh2YWx1ZSwgc2hvdWxkRm9sZENhc2UpOworICAgICAgICBTcGFjZVNwbGl0U3RyaW5n
IHJlbFZhbHVlKHZhbHVlLCBTcGFjZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xkQ2FzZTo6WWVzKTsK
ICAgICAgICAgaWYgKHJlbFZhbHVlLmNvbnRhaW5zKG5vUmVmZXJyZXIpKQogICAgICAgICAgICAg
bV9saW5rUmVsYXRpb25zLmFkZChSZWxhdGlvbjo6Tm9SZWZlcnJlcik7CiAgICAgICAgIGlmIChy
ZWxWYWx1ZS5jb250YWlucyhub09wZW5lcikpCkBAIC0zNzAsNyArMzY5LDcgQEAgdm9pZCBIVE1M
QW5jaG9yRWxlbWVudDo6c2VuZFBpbmdzKGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpCiAgICAg
aWYgKCFoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHBpbmdBdHRyKSB8fCAhZG9j
dW1lbnQoKS5zZXR0aW5ncygpLmh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTcGFjZVNwbGl0U3RyaW5nIHBpbmdVUkxzKGF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24ocGluZ0F0dHIpLCBmYWxzZSk7CisgICAgU3BhY2VTcGxpdFN0cmluZyBw
aW5nVVJMcyhhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHBpbmdBdHRyKSwgU3BhY2VT
cGxpdFN0cmluZzo6U2hvdWxkRm9sZENhc2U6Ok5vKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcGluZ1VSTHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIFBpbmdMb2FkZXI6OnNlbmRQaW5n
KCpkb2N1bWVudCgpLmZyYW1lKCksIGRvY3VtZW50KCkuY29tcGxldGVVUkwocGluZ1VSTHNbaV0p
LCBkZXN0aW5hdGlvblVSTCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGZh
MTg0NGE2ZmYxZmU1YWE1MjhhYjI1NWNjODFjYzQyNmVlYjliNWEuLjRlZDRkZDcxYjFjY2QxYmEw
OTg1ZjU3ZjgwNzFhMjM5NTZlNjc1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBA
IC0yMDMsNyArMjAzLDcgQEAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3Q6OkNvbXB1dGVkUHJvcGVydGllcz4KICAgICAgICAgICAgICAg
ICBTdHJpbmcgYXJpYVJlbGV2YW50UmVtb3ZhbHMgPSAicmVtb3ZhbHMiX3M7CiAgICAgICAgICAg
ICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFRleHQgPSAidGV4dCJfczsKIAotICAgICAgICAgICAg
ICAgIGNvbnN0IGF1dG8mIHZhbHVlcyA9IFNwYWNlU3BsaXRTdHJpbmcoYXJpYVJlbGV2YW50QXR0
clZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZXMgPSBTcGFj
ZVNwbGl0U3RyaW5nKGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgU3BhY2VTcGxpdFN0cmluZzo6U2hv
dWxkRm9sZENhc2U6Olllcyk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5jb250YWlucygi
YWxsIl9zKSkgewogICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZhbnQuYXBwZW5k
KGFyaWFSZWxldmFudEFkZGl0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25S
ZWxldmFudC5hcHBlbmQoYXJpYVJlbGV2YW50UmVtb3ZhbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAxNTVi
YzdjMTY2ZjQ4YWVhZDJiZGIxNTNmNGIyOTFlOTFjMDBhZjZkLi4xYmMyZTRmZjI2MDk2M2RhYjEy
NzJmYmQzY2M4ZGJmNjA0NDU4M2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjE5MCw3ICsyMTkwLDcgQEAg
UmVmPFByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JBY2MKICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFS
ZWxldmFudFJlbW92YWxzID0gUHJvdG9jb2w6OkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVl
KFByb3RvY29sOjpET006OkxpdmVSZWdpb25SZWxldmFudDo6UmVtb3ZhbHMpOwogICAgICAgICAg
ICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50VGV4dCA9IFByb3RvY29sOjpIZWxwZXJzOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6RE9NOjpMaXZlUmVnaW9uUmVsZXZhbnQ6OlRl
eHQpOwogICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZhbnQgPSBKU09OOjpBcnJh
eU9mPFN0cmluZz46OmNyZWF0ZSgpOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBTcGFjZVNw
bGl0U3RyaW5nJiB2YWx1ZXMgPSBTcGFjZVNwbGl0U3RyaW5nKGFyaWFSZWxldmFudEF0dHJWYWx1
ZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcgdmFsdWVzKGFy
aWFSZWxldmFudEF0dHJWYWx1ZSwgU3BhY2VTcGxpdFN0cmluZzo6U2hvdWxkRm9sZENhc2U6Olll
cyk7CiAgICAgICAgICAgICAgICAgICAgIC8vIEBhcmlhLXJlbGV2YW50PSJhbGwiIGlzIGV4cG9z
ZWQgYXMgWyJhZGRpdGlvbnMiLCJyZW1vdmFscyIsInRleHQiXSwgaW4gb3JkZXIuCiAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoaXMgb3JkZXIgaXMgY29udHJvbGxlZCBpbiBXZWJDb3JlIGFuZCBl
eHBlY3RlZCBpbiBXZWJJbnNwZWN0b3JVSS4KICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVl
cy5jb250YWlucygiYWxsIl9zKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmlu
ZGV4IDZhYTU0OTEyZWUyODE3YjI2MzdjYmVmYzFkMjg3NWI1MDJmY2Q3YmUuLjY4ZWViMTI0M2I2
Mzk2N2MzOTM5Y2Q0ZDUyZDNhMDk3ZmQyZTllYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKQEAgLTIzNDUsNyArMjM0NSw3IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShO
b2RlJiB0YXJnZXQsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQogewogICAgIFJlZlB0cjxF
bGVtZW50PiBlbGVtZW50ID0gaXM8RWxlbWVudD4odGFyZ2V0KSA/ICZkb3duY2FzdDxFbGVtZW50
Pih0YXJnZXQpIDogdGFyZ2V0LnBhcmVudEVsZW1lbnQoKTsKICAgICBmb3IgKDsgZWxlbWVudDsg
ZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICBTcGFjZVNwbGl0
U3RyaW5nIGtleXdvcmRzKGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
d2Via2l0ZHJvcHpvbmVBdHRyKSwgdHJ1ZSk7CisgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcga2V5
d29yZHMoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRkcm9w
em9uZUF0dHIpLCBTcGFjZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xkQ2FzZTo6WWVzKTsKICAgICAg
ICAgYm9vbCBtYXRjaGVkID0gZmFsc2U7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJh
dGlvbj4gZHJhZ09wZXJhdGlvbjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9
IGtleXdvcmRzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457779</attachid>
            <date>2022-04-17 15:06:24 -0700</date>
            <delta_ts>2022-04-18 11:57:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239430-20220417150623.patch</filename>
            <type>text/plain</type>
            <size>16558</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJmNGYxYWVhNTg2YTZl
OWVhMDc2OGZlN2JjMjdiNzFmNjliNGI0ZS4uYjQyMTFhOTQ3YzQ0NmMzY2I5Y2M3MGY4YzRlY2Rh
YmI5NjBiMjk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTA0LTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgbm9kZUhhc1Jv
bGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
NDMwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MTg1NzU0Nz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpbWl6ZSBub2RlSGFzUm9sZSgpIGJ5
IGNhbGxpbmcgc3BhY2VTcGxpdFN0cmluZ0NvbnRhaW5zVmFsdWUoKSBpbnN0ZWFkIG9mIGNvbnN0
cnVjdGluZyBhCisgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcgKHdoaWNoIGlzIGV4cGVuc2l2ZSBz
aW1wbHkgZm9yIGxvb2tpbmcgZm9yIGEgc2luZ2xlIHZhbHVlKS4gQWxzbyB0YWtlIGEKKyAgICAg
ICAgU3RyaW5nVmlldyBpbiBwYXJhbWV0ZXIgdG8gYXZvaWQgY29uc3RydWN0aW5nIGEgU3RyaW5n
IHVubmVjZXNzYXJpbHkgKG1vc3QgY2FsbCBzaXRlcyBwYXNzCisgICAgICAgIGFuIEFTQ0lJTGl0
ZXJhbCkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bm9kZUhhc1JvbGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6bm9kZUhhc1JvbGUpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50c0Zyb21BdHRyaWJ1dGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRzUmVmZXJlbmNl
ZEJ5QXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKiBkb20vQ2xhc3NDb2xsZWN0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGFzc0NvbGxlY3Rpb246OkNsYXNzQ29sbGVjdGlvbik6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xhc3NB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnBhcnRBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKiBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTcGFjZVNwbGl0U3RyaW5nOjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3Bh
Y2VTcGxpdFN0cmluZzo6c3BhY2VTcGxpdFN0cmluZ0NvbnRhaW5zVmFsdWUpOgorICAgICAgICAq
IGRvbS9TcGFjZVNwbGl0U3RyaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNwbGl0U3Ry
aW5nOjpTcGFjZVNwbGl0U3RyaW5nKToKKyAgICAgICAgKiBodG1sL0F1dG9maWxsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZW5kUGluZ3MpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRDb21wdXRlZFByb3BlcnRp
ZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQWNjZXNz
aWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbmREcm9wWm9uZSk6CisKIDIwMjItMDQtMTYgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFN0cmluZzo6dHJ1bmNhdGUoKSBh
bmQgdXNlIFN0cmluZzo6bGVmdCgpIGluc3RlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGZhMWU5NDNiNTIwZTlmMjE1NTQ3MTFmMDk3
NzI4ODFiNGM1YzgyYWIuLjI0YWJkNTk5ZmY0Y2JmNGNlN2JhMTA2MTIxN2Y1Y2IzMTM5MTkzYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApA
QCAtNTEyLDggKzUxMiw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omdl
dChOb2RlKiBub2RlKQogfQogCiAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBiZWxvbmdzIG9uIE5v
ZGUuCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgdGFrZSBhIGNvbnN0IGNoYXIqLCBidXQgb25lIGNh
bGxlciBwYXNzZXMgbnVsbEF0b20oKS4KLWJvb2wgbm9kZUhhc1JvbGUoTm9kZSogbm9kZSwgY29u
c3QgU3RyaW5nJiByb2xlKQorYm9vbCBub2RlSGFzUm9sZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3
IHJvbGUpCiB7CiAgICAgaWYgKCFub2RlIHx8ICFpczxFbGVtZW50Pihub2RlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNTI0LDcgKzUyMyw3IEBAIGJvb2wgbm9kZUhhc1JvbGUoTm9kZSog
bm9kZSwgY29uc3QgU3RyaW5nJiByb2xlKQogICAgIGlmIChyb2xlVmFsdWUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gU3BhY2VTcGxpdFN0cmluZyhyb2xl
VmFsdWUsIHRydWUpLmNvbnRhaW5zKHJvbGUpOworICAgIHJldHVybiBTcGFjZVNwbGl0U3RyaW5n
OjpzcGFjZVNwbGl0U3RyaW5nQ29udGFpbnNWYWx1ZShyb2xlVmFsdWUsIHJvbGUsIFNwYWNlU3Bs
aXRTdHJpbmc6OlNob3VsZEZvbGRDYXNlOjpZZXMpOwogfQogCiBzdGF0aWMgYm9vbCBpc1NpbXBs
ZUltYWdlKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IGQwYzY1YmMyOGZmZGM4ZWM5ZDU1YjI5
ZWI1YjllZDRhMWM1Yjc1NzkuLmE4NWE1MGYyNjQ5NjZlYmY0MmQyNzc3ZDkwNDVhODVjOWY1MmQ2
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBA
IC01NTAsNyArNTUwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotYm9vbCBub2RlSGFzUm9s
ZShOb2RlKiwgY29uc3QgU3RyaW5nJiByb2xlKTsKK2Jvb2wgbm9kZUhhc1JvbGUoTm9kZSosIFN0
cmluZ1ZpZXcgcm9sZSk7CiAvLyBUaGlzIHdpbGwgbGV0IHlvdSBrbm93IGlmIGFyaWEtaGlkZGVu
IHdhcyBleHBsaWNpdGx5IHNldCB0byBmYWxzZS4KIGJvb2wgaXNOb2RlQXJpYVZpc2libGUoTm9k
ZSopOwogICAgIApAQCAtNTc0LDcgKzU3NCw3IEBAIGlubGluZSBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBWE9iamVjdENhY2hlOjpmb2N1c2VkT2JqZWN0Rm9yUGFnZShjb25zdCBQYWdlKikgeyByCiBp
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCkgeyB9CiBpbmxp
bmUgdm9pZCBBWE9iamVjdENhY2hlOjpkaXNhYmxlQWNjZXNzaWJpbGl0eSgpIHsgfQogaW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6c2V0RW5oYW5jZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0
eShib29sKSB7IH0KLWlubGluZSBib29sIG5vZGVIYXNSb2xlKE5vZGUqLCBjb25zdCBTdHJpbmcm
KSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgbm9kZUhhc1JvbGUoTm9kZSosIFN0cmlu
Z1ZpZXcpIHsgcmV0dXJuIGZhbHNlOyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzdGFy
dENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVzKCkgeyB9CiBp
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzdG9wQ2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmli
dXRlcygpIHsgfQogaW5saW5lIGJvb2wgaXNOb2RlQXJpYVZpc2libGUoTm9kZSopIHsgcmV0dXJu
IHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCmluZGV4IDcyM2MwNzdkMGFjZmViNjU3NDY5NTIwZjcwZjlmZDllN2Fj
NDNmZjcuLjBmMTgyYTRmM2MxNTNjYjI4ZDNjZDcwNDk1NjgwZTFhZmVkMjI2MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cApAQCAtMzc1NCw3ICszNzU0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50
c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMsIGNvbnMKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYXV0byYgdHJlZVNjb3BlID0gbm9kZS0+dHJlZVNjb3BlKCk7Ci0gICAg
YXV0byBzcGFjZVNwbGl0U3RyaW5nID0gU3BhY2VTcGxpdFN0cmluZyhpZHNTdHJpbmcsIGZhbHNl
KTsKKyAgICBTcGFjZVNwbGl0U3RyaW5nIHNwYWNlU3BsaXRTdHJpbmcoaWRzU3RyaW5nLCBTcGFj
ZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xkQ2FzZTo6Tm8pOwogICAgIHNpemVfdCBsZW5ndGggPSBz
cGFjZVNwbGl0U3RyaW5nLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50ID0gdHJlZVNjb3BlLmdldEVsZW1l
bnRCeUlkKHNwYWNlU3BsaXRTdHJpbmdbaV0pKQpAQCAtMzkyOCw3ICszOTI4LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoQWNj
ZXNzaWJpbGl0eUNoaWxkcmUKIAogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRz
T2ZUeXBlPEVsZW1lbnQ+KG5vZGUoKS0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSkpIHsKICAgICAg
ICAgYXV0byYgaWRMaXN0ID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGF0dHJpYnV0ZSk7Ci0gICAgICAgIGlmICghU3BhY2VTcGxpdFN0cmluZzo6c3BhY2VTcGxpdFN0
cmluZ0NvbnRhaW5zVmFsdWUoaWRMaXN0LCBpZCkpCisgICAgICAgIGlmICghU3BhY2VTcGxpdFN0
cmluZzo6c3BhY2VTcGxpdFN0cmluZ0NvbnRhaW5zVmFsdWUoaWRMaXN0LCBpZCwgU3BhY2VTcGxp
dFN0cmluZzo6U2hvdWxkRm9sZENhc2U6Ok5vKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIGlmIChhdXRvKiBheE9iamVjdCA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmZWxlbWVudCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NDb2xsZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2xhc3NDb2xsZWN0aW9uLmgKaW5kZXggYTY3NWQzMDZiZGY3NWYzOGFm
OWZmZTg5YTZiNGJlODkyM2ZkNGM0MS4uYzkzYmI4OTdiN2I4OTExMzNhMmZkODFmODFjNDM1MmQx
ODM4Njg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzQ29sbGVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc0NvbGxlY3Rpb24uaApAQCAtNTMsNyArNTMs
NyBAQCBwcml2YXRlOgogCiBpbmxpbmUgQ2xhc3NDb2xsZWN0aW9uOjpDbGFzc0NvbGxlY3Rpb24o
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21T
dHJpbmcmIGNsYXNzTmFtZXMpCiAgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbihyb290Tm9kZSwg
dHlwZSkKLSAgICAsIG1fY2xhc3NOYW1lcyhjbGFzc05hbWVzLCByb290Tm9kZS5kb2N1bWVudCgp
LmluUXVpcmtzTW9kZSgpKQorICAgICwgbV9jbGFzc05hbWVzKGNsYXNzTmFtZXMsIHJvb3ROb2Rl
LmRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkgPyBTcGFjZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xk
Q2FzZTo6WWVzIDogU3BhY2VTcGxpdFN0cmluZzo6U2hvdWxkRm9sZENhc2U6Ok5vKQogICAgICwg
bV9vcmlnaW5hbENsYXNzTmFtZXMoY2xhc3NOYW1lcykKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCAwMjk2MmRlMjgwNmU2MDI5ZDE0NGZhZmMyYzc4MmU2ZDY3NmUwN2FjLi5lYjc2OTVl
ZGUzYzMzYzU5MWRmZTVlYTI1NzgzZjBjNjYwMTQ5NGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC0xOTk3LDcgKzE5OTcsNyBAQCB2b2lkIEVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBBdG9tU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKICAgICBpZiAoIWVsZW1lbnREYXRh
KCkpCiAgICAgICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCk7CiAKLSAgICBib29sIHNob3Vs
ZEZvbGRDYXNlID0gZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKTsKKyAgICBhdXRvIHNob3VsZEZv
bGRDYXNlID0gZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSA/IFNwYWNlU3BsaXRTdHJpbmc6OlNo
b3VsZEZvbGRDYXNlOjpZZXMgOiBTcGFjZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xkQ2FzZTo6Tm87
CiAgICAgYm9vbCBuZXdTdHJpbmdIYXNDbGFzc2VzID0gaXNOb25FbXB0eVRva2VuTGlzdChuZXdD
bGFzc1N0cmluZyk7CiAKICAgICBhdXRvIG9sZENsYXNzTmFtZXMgPSBlbGVtZW50RGF0YSgpLT5j
bGFzc05hbWVzKCk7CkBAIC0yMDE3LDcgKzIwMTcsNyBAQCB2b2lkIEVsZW1lbnQ6OnBhcnRBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIGJvb2wgaGFz
UGFydHMgPSBpc05vbkVtcHR5VG9rZW5MaXN0KG5ld1ZhbHVlKTsKICAgICBpZiAoaGFzUGFydHMg
fHwgIXBhcnROYW1lcygpLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIG5ld1BhcnRzID0gaGFz
UGFydHMgPyBTcGFjZVNwbGl0U3RyaW5nKG5ld1ZhbHVlLCBmYWxzZSkgOiBTcGFjZVNwbGl0U3Ry
aW5nKCk7CisgICAgICAgIGF1dG8gbmV3UGFydHMgPSBoYXNQYXJ0cyA/IFNwYWNlU3BsaXRTdHJp
bmcobmV3VmFsdWUsIFNwYWNlU3BsaXRTdHJpbmc6OlNob3VsZEZvbGRDYXNlOjpObykgOiBTcGFj
ZVNwbGl0U3RyaW5nKCk7CiAgICAgICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldFBhcnRO
YW1lcyhXVEZNb3ZlKG5ld1BhcnRzKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VT
cGxpdFN0cmluZy5jcHAKaW5kZXggOWMxNTc4MjM0MGZkNjMwZWNlMTdjZGIyOWYyNTBhODRmNWIy
Mzg4Yy4uZjdkYjhlY2FjZTAwZGQ3NGJmYjAxZWI3N2YyODc5ODYyN2ExYTc2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcApAQCAtOTEsMTMgKzkxLDEzIEBAIHN0YXRp
YyBTcGFjZVNwbGl0U3RyaW5nVGFibGUmIHNwYWNlU3BsaXRTdHJpbmdUYWJsZSgpCiAgICAgcmV0
dXJuIHRhYmxlOwogfQogCi12b2lkIFNwYWNlU3BsaXRTdHJpbmc6OnNldChjb25zdCBBdG9tU3Ry
aW5nJiBpbnB1dFN0cmluZywgYm9vbCBzaG91bGRGb2xkQ2FzZSkKK3ZvaWQgU3BhY2VTcGxpdFN0
cmluZzo6c2V0KGNvbnN0IEF0b21TdHJpbmcmIGlucHV0U3RyaW5nLCBTaG91bGRGb2xkQ2FzZSBz
aG91bGRGb2xkQ2FzZSkKIHsKICAgICBpZiAoaW5wdXRTdHJpbmcuaXNOdWxsKCkpIHsKICAgICAg
ICAgY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2RhdGEgPSBTcGFjZVNw
bGl0U3RyaW5nRGF0YTo6Y3JlYXRlKHNob3VsZEZvbGRDYXNlID8gaW5wdXRTdHJpbmcuY29udmVy
dFRvQVNDSUlMb3dlcmNhc2UoKSA6IGlucHV0U3RyaW5nKTsKKyAgICBtX2RhdGEgPSBTcGFjZVNw
bGl0U3RyaW5nRGF0YTo6Y3JlYXRlKHNob3VsZEZvbGRDYXNlID09IFNob3VsZEZvbGRDYXNlOjpZ
ZXMgPyBpbnB1dFN0cmluZy5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIDogaW5wdXRTdHJpbmcp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWZlcmVuY2VDaGFyYWN0ZXJUeXBlPgpAQCAtMTM1
LDE0ICsxMzUsMTQgQEAgc3RhdGljIGJvb2wgc3BhY2VTcGxpdFN0cmluZ0NvbnRhaW5zVmFsdWVJ
bnRlcm5hbChTdHJpbmdWaWV3IHNwYWNlU3BsaXRTdHJpbmcsIFMKICAgICByZXR1cm4gdG9rZW5Q
cm9jZXNzb3IucmVmZXJlbmNlU3RyaW5nV2FzRm91bmQoKTsKIH0KIAotYm9vbCBTcGFjZVNwbGl0
U3RyaW5nOjpzcGFjZVNwbGl0U3RyaW5nQ29udGFpbnNWYWx1ZShTdHJpbmdWaWV3IHNwYWNlU3Bs
aXRTdHJpbmcsIFN0cmluZ1ZpZXcgdmFsdWUpCitib29sIFNwYWNlU3BsaXRTdHJpbmc6OnNwYWNl
U3BsaXRTdHJpbmdDb250YWluc1ZhbHVlKFN0cmluZ1ZpZXcgc3BhY2VTcGxpdFN0cmluZywgU3Ry
aW5nVmlldyB2YWx1ZSwgU2hvdWxkRm9sZENhc2Ugc2hvdWxkRm9sZENhc2UpCiB7CiAgICAgaWYg
KHNwYWNlU3BsaXRTdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmICh2YWx1ZS5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNlU3BsaXRTdHJpbmdDb250
YWluc1ZhbHVlSW50ZXJuYWw8TENoYXI+KHNwYWNlU3BsaXRTdHJpbmcsIHZhbHVlKTsKLSAgICBy
ZXR1cm4gc3BhY2VTcGxpdFN0cmluZ0NvbnRhaW5zVmFsdWVJbnRlcm5hbDxVQ2hhcj4oc3BhY2VT
cGxpdFN0cmluZywgdmFsdWUpOworICAgICAgICByZXR1cm4gc3BhY2VTcGxpdFN0cmluZ0NvbnRh
aW5zVmFsdWVJbnRlcm5hbDxMQ2hhcj4oc2hvdWxkRm9sZENhc2UgPT0gU2hvdWxkRm9sZENhc2U6
OlllcyA/IFN0cmluZ1ZpZXcgeyBzcGFjZVNwbGl0U3RyaW5nLmNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCkgfSA6IHNwYWNlU3BsaXRTdHJpbmcsIHZhbHVlKTsKKyAgICByZXR1cm4gc3BhY2VTcGxp
dFN0cmluZ0NvbnRhaW5zVmFsdWVJbnRlcm5hbDxVQ2hhcj4oc2hvdWxkRm9sZENhc2UgPT0gU2hv
dWxkRm9sZENhc2U6OlllcyA/IFN0cmluZ1ZpZXcgeyBzcGFjZVNwbGl0U3RyaW5nLmNvbnZlcnRU
b0FTQ0lJTG93ZXJjYXNlKCkgfSA6IHNwYWNlU3BsaXRTdHJpbmcsIHZhbHVlKTsKIH0KIAogY2xh
c3MgVG9rZW5Db3VudGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNw
bGl0U3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oCmluZGV4
IGQxODE1NzE5Y2U0NWI5NTRhYzlhMGNiMjhkMzBhNjgzODdmM2I4OWQuLjQ5YzliY2YzN2RmMGM4
NTk1ZDE2MDk4MjYyYjRiYzQ2MmVhNzg4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TcGFjZVNwbGl0U3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRT
dHJpbmcuaApAQCAtOTksMTEgKzk5LDEzIEBAIHByaXZhdGU6CiBjbGFzcyBTcGFjZVNwbGl0U3Ry
aW5nIHsKIHB1YmxpYzoKICAgICBTcGFjZVNwbGl0U3RyaW5nKCkgPSBkZWZhdWx0OwotICAgIFNw
YWNlU3BsaXRTdHJpbmcoY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nLCBib29sIHNob3VsZEZvbGRD
YXNlKSB7IHNldChzdHJpbmcsIHNob3VsZEZvbGRDYXNlKTsgfQorCisgICAgZW51bSBjbGFzcyBT
aG91bGRGb2xkQ2FzZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgU3BhY2VTcGxpdFN0cmluZyhj
b25zdCBBdG9tU3RyaW5nJiBzdHJpbmcsIFNob3VsZEZvbGRDYXNlIHNob3VsZEZvbGRDYXNlKSB7
IHNldChzdHJpbmcsIHNob3VsZEZvbGRDYXNlKTsgfQogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFNwYWNlU3BsaXRTdHJpbmcmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2RhdGEgIT0gb3Ro
ZXIubV9kYXRhOyB9CiAKLSAgICB2b2lkIHNldChjb25zdCBBdG9tU3RyaW5nJiwgYm9vbCBzaG91
bGRGb2xkQ2FzZSk7CisgICAgdm9pZCBzZXQoY29uc3QgQXRvbVN0cmluZyYsIFNob3VsZEZvbGRD
YXNlKTsKICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEgPSBudWxscHRyOyB9CiAKICAgICBib29s
IGNvbnRhaW5zKGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9kYXRh
ICYmIG1fZGF0YS0+Y29udGFpbnMoc3RyaW5nKTsgfQpAQCAtMTE3LDcgKzExOSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuICgqbV9kYXRhKVtpXTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9v
bCBzcGFjZVNwbGl0U3RyaW5nQ29udGFpbnNWYWx1ZShTdHJpbmdWaWV3IHNwYWNlU3BsaXRTdHJp
bmcsIFN0cmluZ1ZpZXcgdmFsdWUpOworICAgIHN0YXRpYyBib29sIHNwYWNlU3BsaXRTdHJpbmdD
b250YWluc1ZhbHVlKFN0cmluZ1ZpZXcgc3BhY2VTcGxpdFN0cmluZywgU3RyaW5nVmlldyB2YWx1
ZSwgU2hvdWxkRm9sZENhc2UpOwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTcGFjZVNwbGl0U3Ry
aW5nRGF0YT4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmls
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAppbmRleCBkODJmYzRlOGUy
NmY4N2I0ZWRiNTJjZmZlNzg3NjViMTNhNzU0MjBjLi5kZTUxODVlMTdiMzdlODRkYjM3MTQ4OGI0
NjhiZmRjMzI1ODdkNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcApAQCAtMTYyLDcgKzE2
Miw3IEBAIEF1dG9maWxsRGF0YSBBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRy
b2xFbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvCiAgICAgICAgIHJldHVybiBkZWZhdWx0TGFi
ZWwoKTsKIAogICAgIC8vIDIuIExldCB0b2tlbnMgYmUgdGhlIHJlc3VsdCBvZiBzcGxpdHRpbmcg
dGhlIGF0dHJpYnV0ZSdzIHZhbHVlIG9uIHNwYWNlcy4KLSAgICBTcGFjZVNwbGl0U3RyaW5nIHRv
a2VucyhhdHRyaWJ1dGVWYWx1ZSwgdHJ1ZSk7CisgICAgU3BhY2VTcGxpdFN0cmluZyB0b2tlbnMo
YXR0cmlidXRlVmFsdWUsIFNwYWNlU3BsaXRTdHJpbmc6OlNob3VsZEZvbGRDYXNlOjpZZXMpOwog
CiAgICAgLy8gMy4gSWYgdG9rZW5zIGlzIGVtcHR5LCB0aGVuIGp1bXAgdG8gdGhlIHN0ZXAgbGFi
ZWxlZCBkZWZhdWx0LgogICAgIGlmICh0b2tlbnMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCBiZDQwYWVhYzkyODhjODdlMjFhOWYyZWEz
YTljMTRlYTA4OWU3MzdkLi43NGZlNmFhZDc2MGNmM2FjOTU4MTM1YTM4MGM0MmNlZWJlODc5YmY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMjU5LDgg
KzI1OSw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpCiAgICAgICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbm9SZWZlcnJlcigibm9yZWZlcnJl
ciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBub09wZW5lcigibm9vcGVu
ZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gb3BlbmVyKCJvcGVuZXIi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIGNvbnN0IGJvb2wg
c2hvdWxkRm9sZENhc2UgPSB0cnVlOwotICAgICAgICBTcGFjZVNwbGl0U3RyaW5nIHJlbFZhbHVl
KHZhbHVlLCBzaG91bGRGb2xkQ2FzZSk7CisgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcgcmVsVmFs
dWUodmFsdWUsIFNwYWNlU3BsaXRTdHJpbmc6OlNob3VsZEZvbGRDYXNlOjpZZXMpOwogICAgICAg
ICBpZiAocmVsVmFsdWUuY29udGFpbnMobm9SZWZlcnJlcikpCiAgICAgICAgICAgICBtX2xpbmtS
ZWxhdGlvbnMuYWRkKFJlbGF0aW9uOjpOb1JlZmVycmVyKTsKICAgICAgICAgaWYgKHJlbFZhbHVl
LmNvbnRhaW5zKG5vT3BlbmVyKSkKQEAgLTM3MCw3ICszNjksNyBAQCB2b2lkIEhUTUxBbmNob3JF
bGVtZW50OjpzZW5kUGluZ3MoY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCkKICAgICBpZiAoIWhh
c0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocGluZ0F0dHIpIHx8ICFkb2N1bWVudCgp
LnNldHRpbmdzKCkuaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFNwYWNlU3BsaXRTdHJpbmcgcGluZ1VSTHMoYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihwaW5nQXR0ciksIGZhbHNlKTsKKyAgICBTcGFjZVNwbGl0U3RyaW5nIHBpbmdVUkxz
KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocGluZ0F0dHIpLCBTcGFjZVNwbGl0U3Ry
aW5nOjpTaG91bGRGb2xkQ2FzZTo6Tm8pOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
aW5nVVJMcy5zaXplKCk7IGkrKykKICAgICAgICAgUGluZ0xvYWRlcjo6c2VuZFBpbmcoKmRvY3Vt
ZW50KCkuZnJhbWUoKSwgZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChwaW5nVVJMc1tpXSksIGRlc3Rp
bmF0aW9uVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZmExODQ0YTZm
ZjFmZTVhYTUyOGFiMjU1Y2M4MWNjNDI2ZWViOWI1YS4uNGVkNGRkNzFiMWNjZDFiYTA5ODVmNTdm
ODA3MWEyMzk1NmU2NzU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTIwMyw3
ICsyMDMsNyBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckF1ZGl0QWNjZXNz
aWJpbGl0eU9iamVjdDo6Q29tcHV0ZWRQcm9wZXJ0aWVzPgogICAgICAgICAgICAgICAgIFN0cmlu
ZyBhcmlhUmVsZXZhbnRSZW1vdmFscyA9ICJyZW1vdmFscyJfczsKICAgICAgICAgICAgICAgICBT
dHJpbmcgYXJpYVJlbGV2YW50VGV4dCA9ICJ0ZXh0Il9zOwogCi0gICAgICAgICAgICAgICAgY29u
c3QgYXV0byYgdmFsdWVzID0gU3BhY2VTcGxpdFN0cmluZyhhcmlhUmVsZXZhbnRBdHRyVmFsdWUs
IHRydWUpOworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHZhbHVlcyA9IFNwYWNlU3BsaXRT
dHJpbmcoYXJpYVJlbGV2YW50QXR0clZhbHVlLCBTcGFjZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xk
Q2FzZTo6WWVzKTsKICAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmNvbnRhaW5zKCJhbGwiX3Mp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudC5hcHBlbmQoYXJpYVJl
bGV2YW50QWRkaXRpb25zKTsKICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50
LmFwcGVuZChhcmlhUmVsZXZhbnRSZW1vdmFscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDE1NWJjN2MxNjZm
NDhhZWFkMmJkYjE1M2Y0YjI5MWU5MWMwMGFmNmQuLjFiYzJlNGZmMjYwOTYzZGFiMTI3MmZiZDNj
YzhkYmY2MDQ0NTgzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yMTkwLDcgKzIxOTAsNyBAQCBSZWY8UHJv
dG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZE9iamVjdEZvckFjYwogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50
UmVtb3ZhbHMgPSBQcm90b2NvbDo6SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9j
b2w6OkRPTTo6TGl2ZVJlZ2lvblJlbGV2YW50OjpSZW1vdmFscyk7CiAgICAgICAgICAgICAgICAg
ICAgIFN0cmluZyBhcmlhUmVsZXZhbnRUZXh0ID0gUHJvdG9jb2w6OkhlbHBlcnM6OmdldEVudW1D
b25zdGFudFZhbHVlKFByb3RvY29sOjpET006OkxpdmVSZWdpb25SZWxldmFudDo6VGV4dCk7CiAg
ICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudCA9IEpTT046OkFycmF5T2Y8U3Ry
aW5nPjo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJp
bmcmIHZhbHVlcyA9IFNwYWNlU3BsaXRTdHJpbmcoYXJpYVJlbGV2YW50QXR0clZhbHVlLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICAgICAgU3BhY2VTcGxpdFN0cmluZyB2YWx1ZXMoYXJpYVJlbGV2
YW50QXR0clZhbHVlLCBTcGFjZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xkQ2FzZTo6WWVzKTsKICAg
ICAgICAgICAgICAgICAgICAgLy8gQGFyaWEtcmVsZXZhbnQ9ImFsbCIgaXMgZXhwb3NlZCBhcyBb
ImFkZGl0aW9ucyIsInJlbW92YWxzIiwidGV4dCJdLCBpbiBvcmRlci4KICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBvcmRlciBpcyBjb250cm9sbGVkIGluIFdlYkNvcmUgYW5kIGV4cGVjdGVk
IGluIFdlYkluc3BlY3RvclVJLgogICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmNvbnRh
aW5zKCJhbGwiX3MpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNmFh
NTQ5MTJlZTI4MTdiMjYzN2NiZWZjMWQyODc1YjUwMmZjZDdiZS4uNjhlZWIxMjQzYjYzOTY3YzM5
MzljZDRkNTJkM2EwOTdmZDJlOWViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cApAQCAtMjM0NSw3ICsyMzQ1LDcgQEAgc3RhdGljIGJvb2wgZmluZERyb3Bab25lKE5vZGUmIHRh
cmdldCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+
IGVsZW1lbnQgPSBpczxFbGVtZW50Pih0YXJnZXQpID8gJmRvd25jYXN0PEVsZW1lbnQ+KHRhcmdl
dCkgOiB0YXJnZXQucGFyZW50RWxlbWVudCgpOwogICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50
ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIFNwYWNlU3BsaXRTdHJpbmcg
a2V5d29yZHMoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRk
cm9wem9uZUF0dHIpLCB0cnVlKTsKKyAgICAgICAgU3BhY2VTcGxpdFN0cmluZyBrZXl3b3Jkcyhl
bGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdlYmtpdGRyb3B6b25lQXR0
ciksIFNwYWNlU3BsaXRTdHJpbmc6OlNob3VsZEZvbGRDYXNlOjpZZXMpOwogICAgICAgICBib29s
IG1hdGNoZWQgPSBmYWxzZTsKICAgICAgICAgc3RkOjpvcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBk
cmFnT3BlcmF0aW9uOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0ga2V5d29y
ZHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>