<?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>176148</bug_id>
          
          <creation_ts>2017-08-30 21:29:51 -0700</creation_ts>
          <short_desc>Add support for Request body stream cloning</short_desc>
          <delta_ts>2017-09-27 12:50:42 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343860</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-30 21:29:51 -0700</bug_when>
    <thetext>Add support for Request body stream cloning</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343877</commentid>
    <comment_count>1</comment_count>
      <attachid>319452</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-30 22:14:51 -0700</bug_when>
    <thetext>Created attachment 319452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343997</commentid>
    <comment_count>2</comment_count>
      <attachid>319452</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-31 10:57:32 -0700</bug_when>
    <thetext>Comment on attachment 319452
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchBodySource.cpp:2
&gt; + * Copyright (C) 2016 Canon Inc.

Did you write this last year?

&gt; Source/WebCore/Modules/fetch/FetchBodySource.cpp:13
&gt; + * 3.  Neither the name of Canon Inc. nor the names of

I think the copyright should only have two terms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343998</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-31 11:03:15 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to Alex Christensen from comment #2)
&gt; Comment on attachment 319452 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=319452&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchBodySource.cpp:2
&gt; &gt; + * Copyright (C) 2016 Canon Inc.
&gt; 
&gt; Did you write this last year?

Yes.
Maybe I should also add Apple Copyright.

&gt; &gt; Source/WebCore/Modules/fetch/FetchBodySource.cpp:13
&gt; &gt; + * 3.  Neither the name of Canon Inc. nor the names of
&gt; 
&gt; I think the copyright should only have two terms.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344065</commentid>
    <comment_count>4</comment_count>
      <attachid>319499</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-31 12:33:13 -0700</bug_when>
    <thetext>Created attachment 319499
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344090</commentid>
    <comment_count>5</comment_count>
      <attachid>319499</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-31 13:03:46 -0700</bug_when>
    <thetext>Comment on attachment 319499
Patch for landing

Clearing flags on attachment: 319499

Committed r221437: &lt;http://trac.webkit.org/changeset/221437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344091</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-31 13:03:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353678</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:50:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694127&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319452</attachid>
            <date>2017-08-30 22:14:51 -0700</date>
            <delta_ts>2017-08-31 12:33:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176148-20170830221450.patch</filename>
            <type>text/plain</type>
            <size>53849</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM1NDJkNzk2OGFmOWQx
ZjM1MjNjNjM2YTUwNTI3OGQwNmUzMDg3YS4uZjMzNTA4OWI5ZDU5YTNkOWEyYTAxYmY4MjIwYmU0
OGNhMWQ2Zjg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE3LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
UmVxdWVzdCBib2R5IHN0cmVhbSBjbG9uaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jbG9uZS5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFt
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L2ZldGNoL3JlcXVlc3Qtc3RyZWFtLWRpc3R1
cmJlZC0xLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L2ZldGNoL3JlcXVlc3Qtc3RyZWFt
LWRpc3R1cmJlZC0yLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L2ZldGNoL3JlcXVlc3Qt
c3RyZWFtLWRpc3R1cmJlZC0zLmh0bWwKKworICAgICAgICBBZGRpbmcgc3VwcG9ydCBmb3IgUmVh
ZGFibGVTdHJlYW0gdGVlaW5nIGZvciBjbG9uaW5nIGZldGNoIGJvZGllcy4KKyAgICAgICAgQWRk
aW5nIHN1cHBvcnQgZm9yIHB1c2hpbmcgcmVxdWVzdCBib2R5IGRhdGEgdG8gaXRzIFJlYWRhYmxl
U3RyZWFtLgorICAgICAgICBSZW5hbWVkIEZldGNoUmVzcG9uc2VTb3VyY2UgdG8gRmV0Y2hCb2R5
U291cmNlIGZvciB0aGF0IHB1cnBvc2UuCisKKyAgICAgICAgVGVzdHMgZXh0cmFjdGluZyBib2R5
IGZyb20gYSBSZWFkYWJsZVN0cmVhbSB0aHJvdWdoIEpTIEFQSSBwYXNzLgorICAgICAgICBUZXN0
cyBleHRyYWN0aW5nIGRhdGEgc3RvcmVkIGluIGEgUmVhZGFibGVTdHJlYW0gdG8gcmVzb2x2ZSBm
ZXRjaCBib2R5IHByb21pc2VzIGFyZSBmYWlsaW5nLgorICAgICAgICBUaGVyZSBpcyBubyBzdXBw
b3J0IHlldCwgdGhpcyB3aWxsIGJlIGFkZGVkIGFzIGEgZm9sbG93LXVwLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keTo6Y29uc3VtZUFzU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eTo6Y2xvbmUpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3du
ZXI6OmNsb25lQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6bG9hZEJs
b2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OnJlYWRhYmxlU3RyZWFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpjb25zdW1lQm9keUFzU3RyZWFtKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlPd25lcjo6ZmVlZFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHlPd25lcjo6Y2FuY2VsKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNv
dXJjZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2VTb3VyY2UuY3BwLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291
cmNlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2VTb3VyY2UuaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlBc1N0cmVhbSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjcmVhdGVSZWFkYWJsZVN0cmVhbSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuanM6CisgICAgICAgIChnZXR0ZXIuYm9keSk6CisgICAgICAgIChjbG9uZSk6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRh
YmxlU3RyZWFtOjp0ZWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorCiAyMDE3LTA4
LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50
IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVudHJpZXMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBmMTEyYzg1ZGY5ZjA4MDY3NjhiMWQwNjc3NjdiM2IzZDg4NTlkNmRkLi5jMjBmOTA2
YzRlMGNmOWIzOTE1NGNjMDA1MjBlNDc3YmIxMWZjM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtOTM2LDExICs5MzYsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CiAgICAgTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKyAgICBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keVNvdXJjZS5jcHAKICAgICBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAK
ICAgICBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXF1ZXN0LmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKLSAgICBN
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2VTb3VyY2UuY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9X
b3JrZXJHbG9iYWxTY29wZUZldGNoLmNwcAogCiAgICAgTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29y
ZGluYXRlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApp
bmRleCA4ZmI2M2EyMDNjZjk4MWY5NGVlZmNmNTY4YjRjMmZiMDE3OWY0YjE5Li5hYjJiYzYyOGQ4
MDVlOWUyM2I5YTM1OTJjYzA3ZWZkZjFkNTRjNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZldGNoQm9keU93bmVyLmgiCisjaW5jbHVkZSAiRmV0Y2hCb2R5
U291cmNlLmgiCiAjaW5jbHVkZSAiRmV0Y2hIZWFkZXJzLmgiCi0jaW5jbHVkZSAiRmV0Y2hSZXNw
b25zZVNvdXJjZS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJWYWx1ZXMuaCIKICNpbmNsdWRlICJI
VFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtU291cmNlLmgiCkBAIC0xMzcs
MTEgKzEzNywxMiBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZShGZXRjaEJvZHlPd25lciYgb3du
ZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBtX2NvbnN1bWVyLnJlc29sdmUo
V1RGTW92ZShwcm9taXNlKSk7CiB9CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi12b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUFzU3RyZWFtKEZldGNoQm9keU93bmVyJiBvd25lciwgRmV0Y2hSZXNw
b25zZVNvdXJjZSYgc291cmNlKQordm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBc1N0cmVhbShGZXRj
aEJvZHlPd25lciYgb3duZXIsIEZldGNoQm9keVNvdXJjZSYgc291cmNlKQogewogICAgIGJvb2wg
Y2xvc2VTdHJlYW0gPSBmYWxzZTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKSB7CkBAIC0yNzQs
NyArMjc1LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotRmV0Y2hCb2R5IEZldGNoQm9keTo6Y2xvbmUoKSBjb25zdAor
RmV0Y2hCb2R5IEZldGNoQm9keTo6Y2xvbmUoKQogewogICAgIEFTU0VSVCghbV9jb25zdW1lUHJv
bWlzZSk7CiAgICAgRmV0Y2hCb2R5IGNsb25lKG1fY29uc3VtZXIpOwpAQCAtMjkxLDYgKzI5Miwx
MiBAQCBGZXRjaEJvZHkgRmV0Y2hCb2R5OjpjbG9uZSgpIGNvbnN0CiAgICAgICAgIGNsb25lLm1f
ZGF0YSA9IHRleHRCb2R5KCk7CiAgICAgZWxzZSBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKICAg
ICAgICAgY2xvbmUubV9kYXRhID0gdXJsU2VhcmNoUGFyYW1zQm9keSgpOworCisgICAgaWYgKG1f
cmVhZGFibGVTdHJlYW0pIHsKKyAgICAgICAgYXV0byBjbG9uZXMgPSBtX3JlYWRhYmxlU3RyZWFt
LT50ZWUoKTsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbSA9IFdURk1vdmUoY2xvbmVzLmZpcnN0
KTsKKyAgICAgICAgY2xvbmUubV9yZWFkYWJsZVN0cmVhbSA9IFdURk1vdmUoY2xvbmVzLnNlY29u
ZCk7CisgICAgfQogICAgIHJldHVybiBjbG9uZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggZTdmNDZiZThiNDc5YTk1YWQ1NTQ1ZmU5Y2E0OTY2MWJi
OWY0YTBlNi4uNmRmZTYxNGUyNDNlYjRmNDJhYjkyMjJlYjBhMGQzNzJkMmIwNDUwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC0zOSw3ICszOSw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZldGNoQm9keU93bmVyOwotY2xhc3MgRmV0Y2hS
ZXNwb25zZVNvdXJjZTsKK2NsYXNzIEZldGNoQm9keVNvdXJjZTsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAKIGNsYXNzIEZldGNoQm9keSB7CkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGZvcm1EYXRhKEZldGNoQm9keU93bmVyJiwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlKSB7IHByb21pc2UuZ2V0KCkucmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yKTsg
fQogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotICAgIHZvaWQgY29uc3VtZUFzU3RyZWFtKEZl
dGNoQm9keU93bmVyJiwgRmV0Y2hSZXNwb25zZVNvdXJjZSYpOworICAgIHZvaWQgY29uc3VtZUFz
U3RyZWFtKEZldGNoQm9keU93bmVyJiwgRmV0Y2hCb2R5U291cmNlJik7CiAjZW5kaWYKIAogICAg
IGJvb2wgaXNCbG9iKCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
Y29uc3QgQmxvYj4+KG1fZGF0YSk7IH0KQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgY29uc3VtZU9uY2VMb2FkaW5nRmluaXNoZWQoRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGUsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xlYW5Db25z
dW1lUHJvbWlzZSgpIHsgbV9jb25zdW1lUHJvbWlzZSA9IG51bGxwdHI7IH0KIAotICAgIEZldGNo
Qm9keSBjbG9uZSgpIGNvbnN0OworICAgIEZldGNoQm9keSBjbG9uZSgpOwogICAgIFJlYWRhYmxl
U3RyZWFtKiByZWFkYWJsZVN0cmVhbSgpIHsgcmV0dXJuIG1fcmVhZGFibGVTdHJlYW0uZ2V0KCk7
IH0KICAgICB2b2lkIHNldFJlYWRhYmxlU3RyZWFtKFJlZjxSZWFkYWJsZVN0cmVhbT4mJiBzdHJl
YW0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmNwcAppbmRleCA2NTAzNTQ1NzUwMDI0Mjc2NTE5Y2E1NTRmODE0MTJiYmNiODllZTE4Li5j
NDkxMTRkNDJjNThlOWVkMTIwZWZiNDM3YTI4YjRjODM2YjAyYWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAtMTAwLDcgKzEwMCw3
IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2IoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQogICAgIG1fYm9keS0+YmxvYigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgbV9jb250ZW50
VHlwZSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5T3duZXI6OmNsb25lQm9keShjb25zdCBGZXRjaEJv
ZHlPd25lciYgb3duZXIpCit2b2lkIEZldGNoQm9keU93bmVyOjpjbG9uZUJvZHkoRmV0Y2hCb2R5
T3duZXImIG93bmVyKQogewogICAgIG1fY29udGVudFR5cGUgPSBvd25lci5tX2NvbnRlbnRUeXBl
OwogICAgIGlmIChvd25lci5pc0JvZHlOdWxsKCkpCkBAIC0yMDAsNyArMjAwLDYgQEAgdm9pZCBG
ZXRjaEJvZHlPd25lcjo6dGV4dChSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB2b2lk
IEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihjb25zdCBCbG9iJiBibG9iLCBGZXRjaEJvZHlDb25z
dW1lciogY29uc3VtZXIpCiB7CiAgICAgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UgZm9yIGEg
Ym9keSBpbnN0YW5jZS4KLSAgICBBU1NFUlQoaXNEaXN0dXJiZWQoKSk7CiAgICAgQVNTRVJUKCFt
X2Jsb2JMb2FkZXIpOwogICAgIEFTU0VSVCghaXNCb2R5TnVsbCgpKTsKIApAQCAtMjkzLDEwICsy
OTIsMjEgQEAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBGZXRjaEJvZHlPd25lcjo6cmVhZGFibGVT
dHJlYW0oSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKCFtX2JvZHktPmhhc1JlYWRhYmxlU3RyZWFt
KCkpCisgICAgaWYgKCFtX2JvZHktPmhhc1JlYWRhYmxlU3RyZWFtKCkpIHsKKyAgICAgICAgQVNT
RVJUKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNv
dXJjZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hCb2R5U291cmNlKCp0aGlzKSk7CiAgICAgICAgIG1f
Ym9keS0+c2V0UmVhZGFibGVTdHJlYW0oUmVhZGFibGVTdHJlYW06OmNyZWF0ZShzdGF0ZSwgbV9y
ZWFkYWJsZVN0cmVhbVNvdXJjZSkpOwotCisgICAgfQogICAgIHJldHVybiBtX2JvZHktPnJlYWRh
YmxlU3RyZWFtKCk7CiB9CiAKK3ZvaWQgRmV0Y2hCb2R5T3duZXI6OmNvbnN1bWVCb2R5QXNTdHJl
YW0oKQoreworICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKKworICAgIGJvZHko
KS5jb25zdW1lQXNTdHJlYW0oKnRoaXMsICptX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKKyAgICBp
ZiAoIW1fcmVhZGFibGVTdHJlYW1Tb3VyY2UtPmlzUHVsbGluZygpKQorICAgICAgICBtX3JlYWRh
YmxlU3RyZWFtU291cmNlID0gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IGVh
YzIyMzI5N2IyMGZlOTU1NTAyMjBmMjExN2Q5YmRmZWVmMTkzZDIuLjk4OTVjNjdhNzI1NWNjNDVi
YmUwNWQwOTJjY2ExNGM2MmQzNDkwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTMwLDEwICszMCwxMCBAQAogCiAjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRmV0Y2hCb2R5LmgiCisjaW5jbHVkZSAiRmV0Y2hC
b2R5U291cmNlLmgiCiAjaW5jbHVkZSAiRmV0Y2hIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRmV0Y2hM
b2FkZXIuaCIKICNpbmNsdWRlICJGZXRjaExvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIkZldGNo
UmVzcG9uc2VTb3VyY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MSw4ICs0MSw2
IEBAIGNsYXNzIEZldGNoQm9keU93bmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hCb2R5T3du
ZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiBwdWJsaWM6CiAgICAgRmV0Y2hCb2R5T3duZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBSZWY8
RmV0Y2hIZWFkZXJzPiYmKTsKIAotICAgIC8vIEV4cG9zZWQgQm9keSBBUEkKLSAgICAvLyBGSVhN
RTogTWlzc2luZyBib2R5IGF0dHJpYnV0ZSByZXR1cm5pbmcgYSBSZWFkYWJsZVN0cmVhbS4KICAg
ICBib29sIGJvZHlVc2VkKCkgY29uc3QgeyByZXR1cm4gaXNEaXN0dXJiZWQoKTsgfQogICAgIHZv
aWQgYXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCBibG9iKFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYpOwpAQCAtNjAsMTEgKzU4LDE3IEBAIHB1YmxpYzoKICAgICBS
ZWZQdHI8UmVhZGFibGVTdHJlYW0+IHJlYWRhYmxlU3RyZWFtKEpTQzo6RXhlY1N0YXRlJik7CiAg
ICAgdmlydHVhbCBib29sIGhhc1JlYWRhYmxlU3RyZWFtQm9keSgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym9keSAmJiBtX2JvZHktPmhhc1JlYWRhYmxlU3RyZWFtKCk7IH0KIAorI2lmIEVOQUJMRShTVFJF
QU1TX0FQSSkKKyAgICB2aXJ0dWFsIHZvaWQgY29uc3VtZUJvZHlBc1N0cmVhbSgpOworICAgIHZp
cnR1YWwgdm9pZCBmZWVkU3RyZWFtKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpIHsg
fQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBjb25zdCBGZXRjaEJvZHkmIGJvZHkoKSBjb25z
dCB7IHJldHVybiAqbV9ib2R5OyB9CiAgICAgRmV0Y2hCb2R5JiBib2R5KCkgeyByZXR1cm4gKm1f
Ym9keTsgfQogICAgIGJvb2wgaXNCb2R5TnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2JvZHk7IH0K
LSAgICB2b2lkIGNsb25lQm9keShjb25zdCBGZXRjaEJvZHlPd25lciYpOworICAgIHZvaWQgY2xv
bmVCb2R5KEZldGNoQm9keU93bmVyJik7CiAKICAgICB2b2lkIGV4dHJhY3RCb2R5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBGZXRjaEJvZHk6OkluaXQmJik7CiAgICAgdm9pZCB1cGRhdGVDb250
ZW50VHlwZSgpOwpAQCAtMTAzLDcgKzEwNyw3IEBAIHByb3RlY3RlZDoKICAgICBTdHJpbmcgbV9j
b250ZW50VHlwZTsKICAgICBib29sIG1faXNEaXN0dXJiZWQgeyBmYWxzZSB9OwogI2lmIEVOQUJM
RShTVFJFQU1TX0FQSSkKLSAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZVNvdXJjZT4gbV9yZWFkYWJs
ZVN0cmVhbVNvdXJjZTsKKyAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3JlYWRhYmxlU3Ry
ZWFtU291cmNlOwogI2VuZGlmCiAgICAgUmVmPEZldGNoSGVhZGVycz4gbV9oZWFkZXJzOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWU0YmRhOWZlMTRkMDM0NjJhNzliYTIyOWUxOGFmMmZhMjA4ZTZmZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNl
LmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uIElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBi
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENB
Tk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZldGNoQm9keVNvdXJjZS5o
IgorCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCisjaW5jbHVkZSAiRmV0Y2hSZXNwb25zZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZldGNoQm9keVNvdXJjZTo6RmV0Y2hCb2R5U291
cmNlKEZldGNoQm9keU93bmVyJiBib2R5T3duZXIpCisgICAgOiBtX2JvZHlPd25lcihib2R5T3du
ZXIpCit7Cit9CisKK2Jvb2wgRmV0Y2hCb2R5U291cmNlOjppc1JlYWRhYmxlU3RyZWFtTG9ja2Vk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29udHJvbGxlcigpLmlzQ29udHJvbGxlZFJlYWRhYmxl
U3RyZWFtTG9ja2VkKCk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5U291cmNlOjpzZXRBY3RpdmUoKQor
eworICAgIG1fYm9keU93bmVyLnNldFBlbmRpbmdBY3Rpdml0eSgmbV9ib2R5T3duZXIpOworfQor
Cit2b2lkIEZldGNoQm9keVNvdXJjZTo6c2V0SW5hY3RpdmUoKQoreworICAgIG1fYm9keU93bmVy
LnVuc2V0UGVuZGluZ0FjdGl2aXR5KCZtX2JvZHlPd25lcik7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5
U291cmNlOjpkb1N0YXJ0KCkKK3sKKyAgICBtX2JvZHlPd25lci5jb25zdW1lQm9keUFzU3RyZWFt
KCk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5U291cmNlOjpkb1B1bGwoKQoreworICAgIG1fYm9keU93
bmVyLmZlZWRTdHJlYW0oKTsKK30KKwordm9pZCBGZXRjaEJvZHlTb3VyY2U6OmRvQ2FuY2VsKCkK
K3sKKyAgICBtX2lzQ2FuY2VsbGluZyA9IHRydWU7CisgICAgbV9ib2R5T3duZXIuY2FuY2VsKCk7
Cit9CisKK3ZvaWQgRmV0Y2hCb2R5U291cmNlOjpjbG9zZSgpCit7CisgICAgY29udHJvbGxlcigp
LmNsb3NlKCk7CisgICAgY2xlYW4oKTsKK30KK3ZvaWQgRmV0Y2hCb2R5U291cmNlOjplcnJvcihj
b25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGNvbnRyb2xsZXIoKS5lcnJvcih2YWx1ZSk7Cisg
ICAgY2xlYW4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFNUUkVBTVNfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5U291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU5NjU5Y2UwODNjYTY3YmQwYjdlYTQ4MTkwNzA0MjEw
ZjExYzg3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5U291cmNlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBDYW5vbiBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
cmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNUUkVBTVNf
QVBJKQorCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCIKKworbmFtZXNwYWNlIEpT
QyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK307CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRmV0Y2hCb2R5T3duZXI7CisKK2NsYXNzIEZldGNoQm9keVNvdXJjZSBmaW5hbCA6IHB1Ymxp
YyBSZWFkYWJsZVN0cmVhbVNvdXJjZSB7CitwdWJsaWM6CisgICAgRmV0Y2hCb2R5U291cmNlKEZl
dGNoQm9keU93bmVyJik7CisKKyAgICBib29sIGVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+JiYgY2h1bmspIHsgcmV0dXJuIGNvbnRyb2xsZXIoKS5lbnF1ZXVlKFdURk1vdmUoY2h1bmsp
KTsgfQorICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGVycm9yKGNvbnN0IFN0cmluZyYpOwor
CisgICAgYm9vbCBpc0NhbmNlbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzQ2FuY2VsbGluZzsg
fQorICAgIGJvb2wgaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCgpIGNvbnN0OworCisgICAgdm9pZCBy
ZXNvbHZlUHVsbFByb21pc2UoKSB7IHB1bGxGaW5pc2hlZCgpOyB9CisKK3ByaXZhdGU6CisgICAg
dm9pZCBkb1N0YXJ0KCkgZmluYWw7CisgICAgdm9pZCBkb1B1bGwoKSBmaW5hbDsKKyAgICB2b2lk
IGRvQ2FuY2VsKCkgZmluYWw7CisgICAgdm9pZCBzZXRBY3RpdmUoKSBmaW5hbDsKKyAgICB2b2lk
IHNldEluYWN0aXZlKCkgZmluYWw7CisKKyAgICBGZXRjaEJvZHlPd25lciYgbV9ib2R5T3duZXI7
CisgICAgYm9vbCBtX2lzQ2FuY2VsbGluZyB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA3OWE5OTdmNmYwNThk
ZTVhNzI5NGFjMGNmZTUzYTNmYjFhNzJhMDkwLi5jMTkzY2UzZTE3NmQ3MWE2Y2EyMTdkNWQ1MDJh
ODkzNjI3MWQxMjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAKQEAgLTMyNCwxNCArMzI0LDEyIEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Y29u
c3VtZUJvZHlBc1N0cmVhbSgpCiB7CiAgICAgQVNTRVJUKG1fc2hvdWxkRXhwb3NlQm9keSk7CiAg
ICAgQVNTRVJUKG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpOwotICAgIG1faXNEaXN0dXJiZWQgPSB0
cnVlOwogICAgIGlmICghaXNMb2FkaW5nKCkpIHsKLSAgICAgICAgYm9keSgpLmNvbnN1bWVBc1N0
cmVhbSgqdGhpcywgKm1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpOwotICAgICAgICBpZiAoIW1fcmVh
ZGFibGVTdHJlYW1Tb3VyY2UtPmlzUHVsbGluZygpKQotICAgICAgICAgICAgbV9yZWFkYWJsZVN0
cmVhbVNvdXJjZSA9IG51bGxwdHI7CisgICAgICAgIEZldGNoQm9keU93bmVyOjpjb25zdW1lQm9k
eUFzU3RyZWFtKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBtX2lzRGlzdHVyYmVk
ID0gdHJ1ZTsKICAgICBBU1NFUlQobV9ib2R5TG9hZGVyKTsKIAogICAgIHNldEJvZHlBc1JlYWRh
YmxlU3RyZWFtKCk7CkBAIC0zNzMsMTYgKzM3MSwxMiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZl
ZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJlYWRhYmxlU3RyZWFtU291cmNl
KiBGZXRjaFJlc3BvbnNlOjpjcmVhdGVSZWFkYWJsZVN0cmVhbVNvdXJjZSgpCitSZWZQdHI8UmVh
ZGFibGVTdHJlYW0+IEZldGNoUmVzcG9uc2U6OmNyZWF0ZVJlYWRhYmxlU3RyZWFtKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBBU1NFUlQoIW1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpOwot
ICAgIEFTU0VSVCghbV9pc0Rpc3R1cmJlZCk7Ci0KLSAgICBpZiAoaXNCb2R5TnVsbCgpIHx8ICFt
X3Nob3VsZEV4cG9zZUJvZHkpCisgICAgaWYgKCFtX3Nob3VsZEV4cG9zZUJvZHkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IGFkb3B0UmVm
KCpuZXcgRmV0Y2hSZXNwb25zZVNvdXJjZSgqdGhpcykpOwotICAgIHJldHVybiBtX3JlYWRhYmxl
U3RyZWFtU291cmNlLmdldCgpOworICAgIHJldHVybiBGZXRjaEJvZHlPd25lcjo6cmVhZGFibGVT
dHJlYW0oc3RhdGUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpC
b2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDFiN2YxNmNmYTM3ODdmNTU0MDZkMTNiMTBmZTI3NWQ4
NjEyM2EzNzEuLmRjOWYxMWVkODQ3NjEzMjRiNzE4YjBjZWYwMjdjZTQwNDFkYWZmOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC04NSwxMCAr
ODUsMTAgQEAgcHVibGljOgogICAgIFJlZjxGZXRjaFJlc3BvbnNlPiBjbG9uZUZvckpTKCk7CiAK
ICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0gICAgUmVhZGFibGVTdHJlYW1Tb3VyY2UqIGNyZWF0
ZVJlYWRhYmxlU3RyZWFtU291cmNlKCk7Ci0gICAgdm9pZCBjb25zdW1lQm9keUFzU3RyZWFtKCk7
Ci0gICAgdm9pZCBmZWVkU3RyZWFtKCk7Ci0gICAgdm9pZCBjYW5jZWwoKTsKKyAgICBSZWZQdHI8
UmVhZGFibGVTdHJlYW0+IGNyZWF0ZVJlYWRhYmxlU3RyZWFtKEpTQzo6RXhlY1N0YXRlJik7Cisg
ICAgdm9pZCBjb25zdW1lQm9keUFzU3RyZWFtKCkgZmluYWw7CisgICAgdm9pZCBmZWVkU3RyZWFt
KCkgZmluYWw7CisgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKICNlbmRpZgogCiAgICAgdXNpbmcg
UmVzcG9uc2VEYXRhID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVm
PFNoYXJlZEJ1ZmZlcj4+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5pZGwKaW5kZXggZWExNzg0NDkyNDA4ZTY3NGEwNWZiNGRkMTZjOWZkZWMzNDlhMjgy
Yi4uOTUxMDYwMjIxOGRjMDdlNWRkYjkxYTc0NWRhZjYzNTk1OTY0MTcwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCkBAIC04Myw3ICs4Myw3
IEBAIGRpY3Rpb25hcnkgRmV0Y2hSZXNwb25zZUluaXQgewogICAgIFtQcml2YXRlSWRlbnRpZmll
cl0gYm9vbGVhbiBpc0xvYWRpbmcoKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb24sIFByaXZhdGVJ
ZGVudGlmaWVyXSB2b2lkIHNldFN0YXR1cyh1bnNpZ25lZCBzaG9ydCBzdGF0dXMsIERPTVN0cmlu
ZyBzdGF0dXNUZXh0KTsKICAgICBbUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgaW5pdGlhbGl6ZVdp
dGgoQm9keUluaXQgYm9keSk7Ci0gICAgW05ld09iamVjdCwgUHJpdmF0ZUlkZW50aWZpZXJdIFJl
YWRhYmxlU3RyZWFtU291cmNlIGNyZWF0ZVJlYWRhYmxlU3RyZWFtU291cmNlKCk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdFN0YXRlLCBOZXdPYmplY3QsIFByaXZhdGVJZGVudGlmaWVyXSBSZWFkYWJs
ZVN0cmVhbT8gY3JlYXRlUmVhZGFibGVTdHJlYW0oKTsKICAgICBbUHJpdmF0ZUlkZW50aWZpZXJd
IGJvb2xlYW4gaXNEaXN0dXJiZWQoKTsKICAgICBbUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgc2V0
Qm9keUFzUmVhZGFibGVTdHJlYW0oKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuanMKaW5kZXggZjY3MTFlZGM1N2E2M2EyZGQ3MmQ4MjdkODVhMDY1
MzcyNDdlM2Q5MC4uZTg4MTc0YjA0OWYxNmVlY2FjNmM0N2JkZTE3ODM4YTBhMmQ2MTZkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcwpAQCAtNzUs
MTUgKzc1LDEzIEBAIGZ1bmN0aW9uIGJvZHkoKQogICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBA
UmVzcG9uc2UpKQogICAgICAgICB0aHJvdyBAbWFrZUdldHRlclR5cGVFcnJvcigiUmVzcG9uc2Ui
LCAiYm9keSIpOwogCi0gICAgaWYgKCF0aGlzLkBib2R5KSB7CisgICAgaWYgKHRoaXMuQGJvZHkg
PT09IEB1bmRlZmluZWQpIHsKICAgICAgICAgaWYgKEBSZXNwb25zZS5wcm90b3R5cGUuQGlzRGlz
dHVyYmVkLkBjYWxsKHRoaXMpKSB7CiAgICAgICAgICAgICB0aGlzLkBib2R5ID0gbmV3IEBSZWFk
YWJsZVN0cmVhbSgpOwogICAgICAgICAgICAgLy8gR2V0IHJlYWRlciB0byBsb2NrIGl0LgogICAg
ICAgICAgICAgbmV3IEBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIodGhpcy5AYm9keSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2YXIgc291cmNlID0gQFJlc3BvbnNlLnByb3Rv
dHlwZS5AY3JlYXRlUmVhZGFibGVTdHJlYW1Tb3VyY2UuQGNhbGwodGhpcyk7Ci0gICAgICAgICAg
ICB0aGlzLkBib2R5ID0gc291cmNlID8gbmV3IEBSZWFkYWJsZVN0cmVhbShzb3VyY2UpIDogbnVs
bDsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuQGJvZHkgPSBA
UmVzcG9uc2UucHJvdG90eXBlLkBjcmVhdGVSZWFkYWJsZVN0cmVhbS5AY2FsbCh0aGlzKTsKICAg
ICB9CiAgICAgcmV0dXJuIHRoaXMuQGJvZHk7CiB9CkBAIC05OSwxMSArOTcsOCBAQCBmdW5jdGlv
biBjbG9uZSgpCiAgICAgdmFyIGNsb25lZCA9IEBSZXNwb25zZS5wcm90b3R5cGUuQGNsb25lRm9y
SlMuQGNhbGwodGhpcyk7CiAKICAgICAvLyBMZXQncyBjcmVhdGUgQGJvZHkgaWYgcmVzcG9uc2Ug
Ym9keSBpcyBsb2FkaW5nIHRvIHByb3ZpZGUgZGF0YSB0byBib3RoIGNsb25lcy4KLSAgICBpZiAo
QFJlc3BvbnNlLnByb3RvdHlwZS5AaXNMb2FkaW5nLkBjYWxsKHRoaXMpICYmICF0aGlzLkBib2R5
KSB7Ci0gICAgICAgIHZhciBzb3VyY2UgPSBAUmVzcG9uc2UucHJvdG90eXBlLkBjcmVhdGVSZWFk
YWJsZVN0cmVhbVNvdXJjZS5AY2FsbCh0aGlzKTsKLSAgICAgICAgQGFzc2VydCghIXNvdXJjZSk7
Ci0gICAgICAgIHRoaXMuQGJvZHkgPSBuZXcgQFJlYWRhYmxlU3RyZWFtKHNvdXJjZSk7Ci0gICAg
fQorICAgIGlmIChAUmVzcG9uc2UucHJvdG90eXBlLkBpc0xvYWRpbmcuQGNhbGwodGhpcykgJiYg
dGhpcy5AYm9keSA9PT0gQHVuZGVmaW5lZCkKKyAgICAgICAgdGhpcy5AYm9keSA9IEBSZXNwb25z
ZS5wcm90b3R5cGUuQGNyZWF0ZVJlYWRhYmxlU3RyZWFtLkBjYWxsKHRoaXMpOwogCiAgICAgaWYg
KHRoaXMuQGJvZHkpIHsKICAgICAgICAgdmFyIHRlZWRSZWFkYWJsZVN0cmVhbXMgPSBAcmVhZGFi
bGVTdHJlYW1UZWUodGhpcy5AYm9keSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlU291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOTc1MmYyZDQyZGFiODU3NjNjNTI3ZTE0MDQ1YWY4Y2EwNDVmOTdlMy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2VTb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBDYW5vbiBJbmMuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
Q2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGZXRjaFJlc3BvbnNlU291cmNlLmgiCi0K
LSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLSNpbmNsdWRlICJGZXRjaFJlc3BvbnNlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRmV0Y2hSZXNwb25zZVNvdXJjZTo6RmV0Y2hSZXNwb25z
ZVNvdXJjZShGZXRjaFJlc3BvbnNlJiByZXNwb25zZSkKLSAgICA6IG1fcmVzcG9uc2UocmVzcG9u
c2UpCi17Ci19Ci0KLWJvb2wgRmV0Y2hSZXNwb25zZVNvdXJjZTo6aXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXIoKS5pc0NvbnRyb2xsZWRSZWFk
YWJsZVN0cmVhbUxvY2tlZCgpOwotfQotCi12b2lkIEZldGNoUmVzcG9uc2VTb3VyY2U6OnNldEFj
dGl2ZSgpCi17Ci0gICAgbV9yZXNwb25zZS5zZXRQZW5kaW5nQWN0aXZpdHkoJm1fcmVzcG9uc2Up
OwotfQotCi12b2lkIEZldGNoUmVzcG9uc2VTb3VyY2U6OnNldEluYWN0aXZlKCkKLXsKLSAgICBt
X3Jlc3BvbnNlLnVuc2V0UGVuZGluZ0FjdGl2aXR5KCZtX3Jlc3BvbnNlKTsKLX0KLQotdm9pZCBG
ZXRjaFJlc3BvbnNlU291cmNlOjpkb1N0YXJ0KCkKLXsKLSAgICBtX3Jlc3BvbnNlLmNvbnN1bWVC
b2R5QXNTdHJlYW0oKTsKLX0KLQotdm9pZCBGZXRjaFJlc3BvbnNlU291cmNlOjpkb1B1bGwoKQot
ewotICAgIG1fcmVzcG9uc2UuZmVlZFN0cmVhbSgpOwotfQotCi12b2lkIEZldGNoUmVzcG9uc2VT
b3VyY2U6OmRvQ2FuY2VsKCkKLXsKLSAgICBtX2lzQ2FuY2VsbGluZyA9IHRydWU7Ci0gICAgbV9y
ZXNwb25zZS5jYW5jZWwoKTsKLX0KLQotdm9pZCBGZXRjaFJlc3BvbnNlU291cmNlOjpjbG9zZSgp
Ci17Ci0gICAgY29udHJvbGxlcigpLmNsb3NlKCk7Ci0gICAgY2xlYW4oKTsKLX0KLXZvaWQgRmV0
Y2hSZXNwb25zZVNvdXJjZTo6ZXJyb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBjb250
cm9sbGVyKCkuZXJyb3IodmFsdWUpOwotICAgIGNsZWFuKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlU291cmNlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDkyMTMxNmI2ODk2YjdkZjkzM2U1OTM2MDI5ZmJjMTA1YzJmODNj
ZTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlU291cmNlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uIEluYy4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9O
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLSNpbmNsdWRl
ICJSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEFycmF5
QnVmZmVyOwotfTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGZXRjaFJlc3BvbnNl
OwotCi1jbGFzcyBGZXRjaFJlc3BvbnNlU291cmNlIGZpbmFsIDogcHVibGljIFJlYWRhYmxlU3Ry
ZWFtU291cmNlIHsKLXB1YmxpYzoKLSAgICBGZXRjaFJlc3BvbnNlU291cmNlKEZldGNoUmVzcG9u
c2UmKTsKLQotICAgIGJvb2wgZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mJiBjaHVu
aykgeyByZXR1cm4gY29udHJvbGxlcigpLmVucXVldWUoV1RGTW92ZShjaHVuaykpOyB9Ci0gICAg
dm9pZCBjbG9zZSgpOwotICAgIHZvaWQgZXJyb3IoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBib29s
IGlzQ2FuY2VsbGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNDYW5jZWxsaW5nOyB9Ci0gICAgYm9v
bCBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHJlc29sdmVQdWxs
UHJvbWlzZSgpIHsgcHVsbEZpbmlzaGVkKCk7IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIGRvU3Rh
cnQoKSBmaW5hbDsKLSAgICB2b2lkIGRvUHVsbCgpIGZpbmFsOwotICAgIHZvaWQgZG9DYW5jZWwo
KSBmaW5hbDsKLSAgICB2b2lkIHNldEFjdGl2ZSgpIGZpbmFsOwotICAgIHZvaWQgc2V0SW5hY3Rp
dmUoKSBmaW5hbDsKLQotICAgIEZldGNoUmVzcG9uc2UmIG1fcmVzcG9uc2U7Ci0gICAgYm9vbCBt
X2lzQ2FuY2VsbGluZyB7IGZhbHNlIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGUzMDQ1OGNiYjEzYzc5ZDM3ZDUx
NzBmYTIzNWExOTQ2NTg1MWIwNS4uZWYyZTM1NGI1YzM0YTY5OWMzZmEyZjc3MzJkZGViOTYwYjgx
ODcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTY3Niw3ICsxNjc2LDcgQEAKIAkJNDEyOURGODUxQkI1QjgwNzAwMzIyQTE2
IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjlERjgzMUJCNUI3RjcwMDMyMkEx
NiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAgKi87IH07CiAJCTQx
MjlERjg2MUJCNUI4MEMwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVj
dG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEy
OURGODQxQkI1QjdGNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0
b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDEzMDE1RDkxQzdCNTcxNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDE1RDUxQzdCNTcwNDAwMDkx
QzZFIC8qIEZldGNoUmVzcG9uc2UuY3BwICovOyB9OwotCQk0MTMwMTVEOTFDN0I1NzE0MDAwOTFD
NkYgLyogRmV0Y2hSZXNwb25zZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwMTVENTFDN0I1NzA0MDAwOTFDNkYgLyogRmV0Y2hSZXNw
b25zZVNvdXJjZS5jcHAgKi87IH07CisJCTQxMzAxNUQ5MUM3QjU3MTQwMDA5MUM2RiAvKiBGZXRj
aEJvZHlTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzMDE1RDUxQzdCNTcwNDAwMDkxQzZGIC8qIEZldGNoQm9keVNvdXJjZS5jcHAgKi87
IH07CiAJCTQxMzgwQzI2MUYzNDM2QTYwMDE1NUZEQSAvKiBDYWNoZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4MEMyMDFGMzQzNjhBMDAxNTVG
REEgLyogQ2FjaGUuY3BwICovOyB9OwogCQk0MTM4MEMyNzFGMzQzNkFDMDAxNTVGREEgLyogQ2Fj
aGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzgw
QzI1MUYzNDM2OUEwMDE1NUZEQSAvKiBDYWNoZS5oICovOyB9OwogCQk0MTM4MEMyODFGMzQzNkFD
MDAxNTVGREEgLyogQ2FjaGVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzgwQzIxMUYzNDM2OEQwMDE1NUZEQSAvKiBDYWNoZVN0b3Jh
Z2UuY3BwICovOyB9OwpAQCAtOTM4Miw5ICs5MzgyLDkgQEAKIAkJNDEyOURGODMxQkI1QjdGNzAw
MzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29u
c3RydWN0b3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyOURGODQxQkI1
QjdGNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29u
c3RydWN0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzAxNUQ1MUM3QjU3
MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZldGNoUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0MTMwMTVENTFDN0I1NzA0MDAwOTFDNkYgLyogRmV0Y2hSZXNwb25zZVNvdXJjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGZXRjaFJlc3BvbnNlU291cmNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzMDE1RDUxQzdCNTcwNDAwMDkx
QzZGIC8qIEZldGNoQm9keVNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGZXRjaEJvZHlTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTMwMTVENjFDN0I1NzA0MDAwOTFDNkUgLyogRmV0Y2hSZXNwb25zZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaFJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQxMzAxNUQ2MUM3QjU3MDQwMDA5MUM2RiAvKiBGZXRjaFJlc3BvbnNlU291
cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoUmVzcG9uc2VTb3Vy
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzMDE1RDYxQzdCNTcwNDAwMDkx
QzZGIC8qIEZldGNoQm9keVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGZXRjaEJvZHlTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDE1
RDcxQzdCNTcwNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9uc2UuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEZldGNoUmVzcG9uc2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTMwMTVEODFDN0I1NzA0MDAwOTFDNkUgLyogRmV0Y2hSZXNwb25zZS5qcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEZldGNoUmVzcG9uc2UuanM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMzgwQzIwMUYzNDM2OEEwMDE1NUZEQSAvKiBDYWNoZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBDYWNoZS5jcHA7IHBhdGggPSBNb2R1bGVzL2NhY2hlL0NhY2hl
LmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtMTgwMzEsNiArMTgwMzEsOCBA
QAogCQkJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5oICov
LAogCQkJCTQxNDdFMkIzMUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaEJvZHlPd25lci5jcHAgKi8s
CiAJCQkJNDE0N0UyQjIxQzg4MzM3RjAwQTdFNzE1IC8qIEZldGNoQm9keU93bmVyLmggKi8sCisJ
CQkJNDEzMDE1RDUxQzdCNTcwNDAwMDkxQzZGIC8qIEZldGNoQm9keVNvdXJjZS5jcHAgKi8sCisJ
CQkJNDEzMDE1RDYxQzdCNTcwNDAwMDkxQzZGIC8qIEZldGNoQm9keVNvdXJjZS5oICovLAogCQkJ
CTQxRjU0RjgyMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuY3BwICovLAogCQkJCTQx
RjU0RjgzMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuaCAqLywKIAkJCQk0MUY1NEY4
NDFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmlkbCAqLywKQEAgLTE4MDU3LDggKzE4
MDU5LDYgQEAKIAkJCQk0MTMwMTVENjFDN0I1NzA0MDAwOTFDNkUgLyogRmV0Y2hSZXNwb25zZS5o
ICovLAogCQkJCTQxMzAxNUQ3MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmlkbCAq
LywKIAkJCQk0MTMwMTVEODFDN0I1NzA0MDAwOTFDNkUgLyogRmV0Y2hSZXNwb25zZS5qcyAqLywK
LQkJCQk0MTMwMTVENTFDN0I1NzA0MDAwOTFDNkYgLyogRmV0Y2hSZXNwb25zZVNvdXJjZS5jcHAg
Ki8sCi0JCQkJNDEzMDE1RDYxQzdCNTcwNDAwMDkxQzZGIC8qIEZldGNoUmVzcG9uc2VTb3VyY2Uu
aCAqLywKIAkJCQk0MThDMzk1NzFDOERENjk2MDA1MUM4QTMgLyogV29ya2VyR2xvYmFsU2NvcGVG
ZXRjaC5jcHAgKi8sCiAJCQkJNDE4QzM5NTgxQzhERDY5NjAwNTFDOEEzIC8qIFdvcmtlckdsb2Jh
bFNjb3BlRmV0Y2guaCAqLywKIAkJCQk0MThDMzk1OTFDOERENjk2MDA1MUM4QTMgLyogV29ya2Vy
R2xvYmFsU2NvcGVGZXRjaC5pZGwgKi8sCkBAIC0zMTU5MCwxMSArMzE1OTAsMTEgQEAKIAkJCQk0
MUY1NEY4QjFDNTBDNTAzMDAzMzg0ODggLyogRmV0Y2hCb2R5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxQ0Y4QkU3MUQ0NjIyNjcwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MTQ3RTJCODFDODk5MTJGMDBBN0U3MTUgLyogRmV0Y2hCb2R5T3du
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzMDE1RDkxQzdCNTcxNDAwMDkxQzZGIC8qIEZl
dGNoQm9keVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUY1NEY4RDFDNTBDNTA4MDAz
Mzg0ODggLyogRmV0Y2hIZWFkZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNDdFMkI3MUM4
OTkxMkMwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUY1
NEY4RTFDNTBDNTBDMDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxMzAxNUQ5MUM3QjU3MTQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTQxMzAxNUQ5MUM3QjU3MTQwMDA5MUM2RiAvKiBGZXRjaFJlc3BvbnNlU291
cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzMwRDhBMTI0OEYwQjMwMEQzQTlDOSAvKiBG
RVRpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3MzBEOEMxMjQ4RjBCMzAwRDNBOUM5IC8q
IEZFVHVyYnVsZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA5NDEyQjAyNkY3MDBD
MUEzNTkgLyogRkZUQ29udm9sdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCmluZGV4IGRmNDE0MWU5MGIwOTUxNzAx
ZDRiODk3OWViMDA0ZGVjYjIzNWY1NDcuLjcyMjc0MGY3ZmE0YWIwMjFkOWRmMTEzMTMyMjVlYmU3
MDM2ZDQzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVh
bS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJS
ZWFkYWJsZVN0cmVhbS5oIgogCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCiAj
aW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKIApAQCAtNTMsNCArNTQsMjcgQEAgUmVmPFJlYWRhYmxlU3RyZWFtPiBSZWFk
YWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxSZWEK
ICAgICByZXR1cm4gY3JlYXRlKGdsb2JhbE9iamVjdCwgKm5ld1JlYWRhYmxlU3RyZWFtKTsKIH0K
IAorc3RkOjpwYWlyPFJlZjxSZWFkYWJsZVN0cmVhbT4sIFJlZjxSZWFkYWJsZVN0cmVhbT4+IFJl
YWRhYmxlU3RyZWFtOjp0ZWUoKQoreworICAgIGF1dG8mIHN0YXRlID0gKm1fZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCk7CisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHN0YXRlLnZtKCkuY2xpZW50RGF0YSk7CisgICAgY29uc3Qg
SWRlbnRpZmllciYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
cmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLnJlYWRhYmxlU3RyZWFtVGVlUHJpdmF0
ZU5hbWUoKTsKKworICAgIGF1dG8gcmVhZGFibGVTdHJlYW1UZWUgPSBtX2dsb2JhbE9iamVjdC0+
Z2V0KCZzdGF0ZSwgcHJpdmF0ZU5hbWUpOworICAgIEFTU0VSVChyZWFkYWJsZVN0cmVhbVRlZS5p
c0Z1bmN0aW9uKCkpOworCisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShyZWFkYWJsZVN0cmVhbVRlZSwgY2FsbERhdGEpOworICAgIEFT
U0VSVChjYWxsVHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpOb25lKTsKKyAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChyZWFkYWJsZVN0cmVhbSgp
KTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKEpTQzo6anNCb29sZWFuKHRydWUpKTsKKyAgICBKU1Zh
bHVlIHJldHVybmVkVmFsdWUgPSBKU0M6OmNhbGwoJnN0YXRlLCByZWFkYWJsZVN0cmVhbVRlZSwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBKU0M6OmpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7CisKKyAg
ICBhdXRvIHJlc3VsdHMgPSBEZXRhaWw6OlNlcXVlbmNlQ29udmVydGVyPElETEludGVyZmFjZTxS
ZWFkYWJsZVN0cmVhbT4+Ojpjb252ZXJ0KHN0YXRlLCByZXR1cm5lZFZhbHVlKTsKKworICAgIEFT
U0VSVChyZXN1bHRzLnNpemUoKSA9PSAyKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIocmVz
dWx0c1swXS5yZWxlYXNlTm9uTnVsbCgpLCByZXN1bHRzWzFdLnJlbGVhc2VOb25OdWxsKCkpOwor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0
cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uaAppbmRl
eCBiMWMzMjc5YWFjNWVkZDcyMWIzNjQxYTcyMzI0NGRlNmFlM2ZhYjAwLi5hMGMyNmE0MzU3Njhi
MmQxMGFmNDEwNmU2MTdmNTdjYjMwYTMwYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlU3RyZWFtLmgKQEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFJlZjxSZWFkYWJsZVN0cmVhbT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRyPFJl
YWRhYmxlU3RyZWFtU291cmNlPiYmKTsKIAorICAgIHN0ZDo6cGFpcjxSZWY8UmVhZGFibGVTdHJl
YW0+LCBSZWY8UmVhZGFibGVTdHJlYW0+PiB0ZWUoKTsKKwogICAgIEpTUmVhZGFibGVTdHJlYW0q
IHJlYWRhYmxlU3RyZWFtKCkgeyByZXR1cm4gZ3VhcmRlZCgpOyB9CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRl
eCAwOWZlODFiYTQ3Y2E1M2M4Nzc1Y2I2NjI3YTc2ZDNiM2UyNjI3OWViLi5kNzJkMTY2YjE2ZmM2
YjNjNmM2MTViNzM1Yzk1ZmRkNDNkODk2YWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBtYWNybyhjb25zdW1lQ2h1bmspIFwKICAgICBtYWNybyhjb250cm9s
bGVkUmVhZGFibGVTdHJlYW0pIFwKICAgICBtYWNybyhjb250cm9sbGVyKSBcCi0gICAgbWFjcm8o
Y3JlYXRlUmVhZGFibGVTdHJlYW1Tb3VyY2UpIFwKKyAgICBtYWNybyhjcmVhdGVSZWFkYWJsZVN0
cmVhbSkgXAogICAgIG1hY3JvKGRpc3R1cmJlZCkgXAogICAgIG1hY3JvKGZhaWx1cmVLaW5kKSBc
CiAgICAgbWFjcm8oZmV0Y2hSZXF1ZXN0KSBcCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmM5Zjc1ZGFiOTRkMmU4YzMyZGI3
YmNlM2I4ZWI3NGIyNmQ4ODBjZi4uNDIyYmM4Zjk1YzdhYTdkNWRhNTMxMTI1MjNjMGE1ZTg1NTYz
NWEzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE3LTA4LTMwICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgUmVxdWVzdCBib2R5
IHN0cmVhbSBjbG9uaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzYxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGh0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY2xvbmUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNsb25lLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3Ry
ZWFtLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2ZldGNoL3JlcXVlc3Qtc3RyZWFt
LWRpc3R1cmJlZC0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvZmV0
Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTEuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3dwdC9mZXRjaC9yZXF1ZXN0LXN0cmVhbS1kaXN0dXJiZWQtMi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9mZXRjaC9yZXF1ZXN0LXN0cmVhbS1kaXN0
dXJiZWQtMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2ZldGNoL3Jl
cXVlc3Qtc3RyZWFtLWRpc3R1cmJlZC0zLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA4LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVudHJpZXMoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jbG9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNsb25lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZmRl
YjMwZWUwNDE4Zjk2YTg4Mjg0NzAwMjc1M2ZhNmZiNTAzNTU3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jbG9uZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNSBAQAorCitQQVNTIENoZWNrIG9yZ2luYWwgcmVxdWVzdCdzIGJvZHkgYWZ0ZXIg
Y2xvbmluZyAKK1BBU1MgQ2hlY2sgY2xvbmVkIHJlcXVlc3QncyBib2R5IAorUEFTUyBDaGVjayBy
ZXF1ZXN0IGNsb25lIHVzZSBzdHJ1Y3R1cmVDbG9uZSBmb3IgdGVlZCBSZWFkYWJsZVN0cmVhbXMg
KEludDhBcnJheWNodW5rKSAKK1BBU1MgQ2hlY2sgcmVxdWVzdCBjbG9uZSB1c2Ugc3RydWN0dXJl
Q2xvbmUgZm9yIHRlZWQgUmVhZGFibGVTdHJlYW1zIChJbnQxNkFycmF5Y2h1bmspIAorUEFTUyBD
aGVjayByZXF1ZXN0IGNsb25lIHVzZSBzdHJ1Y3R1cmVDbG9uZSBmb3IgdGVlZCBSZWFkYWJsZVN0
cmVhbXMgKEludDMyQXJyYXljaHVuaykgCitQQVNTIENoZWNrIHJlcXVlc3QgY2xvbmUgdXNlIHN0
cnVjdHVyZUNsb25lIGZvciB0ZWVkIFJlYWRhYmxlU3RyZWFtcyAoQXJyYXlCdWZmZXJjaHVuaykg
CitQQVNTIENoZWNrIHJlcXVlc3QgY2xvbmUgdXNlIHN0cnVjdHVyZUNsb25lIGZvciB0ZWVkIFJl
YWRhYmxlU3RyZWFtcyAoVWludDhBcnJheWNodW5rKSAKK1BBU1MgQ2hlY2sgcmVxdWVzdCBjbG9u
ZSB1c2Ugc3RydWN0dXJlQ2xvbmUgZm9yIHRlZWQgUmVhZGFibGVTdHJlYW1zIChVaW50OENsYW1w
ZWRBcnJheWNodW5rKSAKK1BBU1MgQ2hlY2sgcmVxdWVzdCBjbG9uZSB1c2Ugc3RydWN0dXJlQ2xv
bmUgZm9yIHRlZWQgUmVhZGFibGVTdHJlYW1zIChVaW50MTZBcnJheWNodW5rKSAKK1BBU1MgQ2hl
Y2sgcmVxdWVzdCBjbG9uZSB1c2Ugc3RydWN0dXJlQ2xvbmUgZm9yIHRlZWQgUmVhZGFibGVTdHJl
YW1zIChVaW50MzJBcnJheWNodW5rKSAKK1BBU1MgQ2hlY2sgcmVxdWVzdCBjbG9uZSB1c2Ugc3Ry
dWN0dXJlQ2xvbmUgZm9yIHRlZWQgUmVhZGFibGVTdHJlYW1zIChGbG9hdDMyQXJyYXljaHVuaykg
CitQQVNTIENoZWNrIHJlcXVlc3QgY2xvbmUgdXNlIHN0cnVjdHVyZUNsb25lIGZvciB0ZWVkIFJl
YWRhYmxlU3RyZWFtcyAoRmxvYXQ2NEFycmF5Y2h1bmspIAorUEFTUyBDaGVjayByZXF1ZXN0IGNs
b25lIHVzZSBzdHJ1Y3R1cmVDbG9uZSBmb3IgdGVlZCBSZWFkYWJsZVN0cmVhbXMgKERhdGFWaWV3
Y2h1bmspIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0
LWNsb25lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNsb25lLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWIzODAwOTZmNDAyOTY5YzA2NzYwYWMzNTgxZGJmZjc5OTg1ZGUzZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY2xv
bmUuaHRtbApAQCAtMCwwICsxLDcwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICA8aGVh
ZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlJlcXVlc3QgY2xvbmU8
L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZmV0Y2guc3BlYy53
aGF0d2cub3JnLyNyZXF1ZXN0Ij4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxzY3JpcHQg
c3JjPSIvZmV0Y2gvYXBpL3Jlc291cmNlcy91dGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD4KK3ZhciBib2R5ID0gIlRoaXMgaXMgcmVxdWVzdCBib2R5IjsKK3ZhciBoZWFkZXJzSW5pdCA9
IHsgIm5hbWUiIDogInZhbHVlIiB9OwordmFyIHJlcXVlc3RJbml0ICA9IHsgImJvZHkiIDogYm9k
eSwKKyAgICAgICAgICAgICAgICAgICAgICJtZXRob2QiIDogIlBPU1QiLAorICAgICAgICAgICAg
ICAgICAgICAgImhlYWRlcnMiIDogaGVhZGVyc0luaXQKK307Cit2YXIgcmVxdWVzdCA9IG5ldyBS
ZXF1ZXN0KCIiLCByZXF1ZXN0SW5pdCk7Cit2YXIgY2xvbmVkUmVxdWVzdCA9IHJlcXVlc3QuY2xv
bmUoKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICByZXR1cm4gdmFsaWRh
dGVTdHJlYW1Gcm9tU3RyaW5nKHJlcXVlc3QuYm9keS5nZXRSZWFkZXIoKSwgYm9keSk7Cit9LCAi
Q2hlY2sgb3JnaW5hbCByZXF1ZXN0J3MgYm9keSBhZnRlciBjbG9uaW5nIik7CisKK3Byb21pc2Vf
dGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgcmV0dXJuIHZhbGlkYXRlU3RyZWFtRnJvbVN0cmlu
ZyhjbG9uZWRSZXF1ZXN0LmJvZHkuZ2V0UmVhZGVyKCksIGJvZHkpOworfSwgIkNoZWNrIGNsb25l
ZCByZXF1ZXN0J3MgYm9keSIpOworCitmdW5jdGlvbiB0ZXN0UmVhZGFibGVTdHJlYW1DbG9uZShp
bml0aWFsQnVmZmVyLCBidWZmZXJUeXBlKQoreworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0
ZXN0KSB7CisgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoIiIsIHsibWV0aG9kIiA6
ICJQT1NUIiwgImJvZHkiIDogbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydCA6IGZ1bmN0aW9uKGNv
bnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShpbml0aWFsQnVmZmVy
KTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICAgICAgfX0pfSk7CisKKyAg
ICAgICAgdmFyIGNsb25lID0gcmVxdWVzdC5jbG9uZSgpOworICAgICAgICB2YXIgc3RyZWFtMSA9
IHJlcXVlc3QuYm9keTsKKyAgICAgICAgdmFyIHN0cmVhbTIgPSBjbG9uZS5ib2R5OworCisgICAg
ICAgIHZhciBidWZmZXI7CisgICAgICAgIHJldHVybiBzdHJlYW0xLmdldFJlYWRlcigpLnJlYWQo
KS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkYXRhLmRv
bmUpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGF0YS52YWx1ZSA9PT0gaW5pdGlhbEJ1ZmZl
ciwgIkJ1ZmZlciBvZiBiZWluZy1jbG9uZWQgcmVzcG9uc2Ugc3RyZWFtIGlzIHRoZSBzYW1lIGFz
IHRoZSBvcmlnaW5hbCBidWZmZXIiKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJlYW0yLmdldFJl
YWRlcigpLnJlYWQoKTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbihkYXRhKSB7CisgICAgICAg
ICAgICBhc3NlcnRfZmFsc2UoZGF0YS5kb25lKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoZGF0YS52YWx1ZSwgaW5pdGlhbEJ1ZmZlciwgIkNsb25lZCBidWZmZXIgY2h1bmtzIGhh
dmUgdGhlIHNhbWUgY29udGVudCIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3Qu
Z2V0UHJvdG90eXBlT2YoZGF0YS52YWx1ZSksIE9iamVjdC5nZXRQcm90b3R5cGVPZihpbml0aWFs
QnVmZmVyKSwgIkNsb25lZCBidWZmZXJzIGhhdmUgdGhlIHNhbWUgdHlwZSIpOworICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoZGF0YS52YWx1ZSAhPT0gaW5pdGlhbEJ1ZmZlciwgIkJ1ZmZlciBvZiBj
bG9uZWQgcmVzcG9uc2Ugc3RyZWFtIGlzIGEgY2xvbmUgb2YgdGhlIG9yaWdpbmFsIGJ1ZmZlciIp
OworICAgICAgICB9KTsKKyAgICB9LCAiQ2hlY2sgcmVxdWVzdCBjbG9uZSB1c2Ugc3RydWN0dXJl
Q2xvbmUgZm9yIHRlZWQgUmVhZGFibGVTdHJlYW1zICgiICsgYnVmZmVyVHlwZSAgKyAiY2h1bmsp
Iik7Cit9CisKK3ZhciBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigxNik7Cit0ZXN0UmVh
ZGFibGVTdHJlYW1DbG9uZShuZXcgSW50OEFycmF5KGFycmF5QnVmZmVyLCAxKSwgIkludDhBcnJh
eSIpOwordGVzdFJlYWRhYmxlU3RyZWFtQ2xvbmUobmV3IEludDE2QXJyYXkoYXJyYXlCdWZmZXIs
IDIsIDIpLCAiSW50MTZBcnJheSIpOwordGVzdFJlYWRhYmxlU3RyZWFtQ2xvbmUobmV3IEludDMy
QXJyYXkoYXJyYXlCdWZmZXIpLCAiSW50MzJBcnJheSIpOwordGVzdFJlYWRhYmxlU3RyZWFtQ2xv
bmUoYXJyYXlCdWZmZXIsICJBcnJheUJ1ZmZlciIpOwordGVzdFJlYWRhYmxlU3RyZWFtQ2xvbmUo
bmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpLCAiVWludDhBcnJheSIpOwordGVzdFJlYWRhYmxl
U3RyZWFtQ2xvbmUobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGFycmF5QnVmZmVyKSwgIlVpbnQ4Q2xh
bXBlZEFycmF5Iik7Cit0ZXN0UmVhZGFibGVTdHJlYW1DbG9uZShuZXcgVWludDE2QXJyYXkoYXJy
YXlCdWZmZXIsIDIpLCAiVWludDE2QXJyYXkiKTsKK3Rlc3RSZWFkYWJsZVN0cmVhbUNsb25lKG5l
dyBVaW50MzJBcnJheShhcnJheUJ1ZmZlciksICJVaW50MzJBcnJheSIpOwordGVzdFJlYWRhYmxl
U3RyZWFtQ2xvbmUobmV3IEZsb2F0MzJBcnJheShhcnJheUJ1ZmZlciksICJGbG9hdDMyQXJyYXki
KTsKK3Rlc3RSZWFkYWJsZVN0cmVhbUNsb25lKG5ldyBGbG9hdDY0QXJyYXkoYXJyYXlCdWZmZXIp
LCAiRmxvYXQ2NEFycmF5Iik7Cit0ZXN0UmVhZGFibGVTdHJlYW1DbG9uZShuZXcgRGF0YVZpZXco
YXJyYXlCdWZmZXIsIDIsIDgpLCAiRGF0YVZpZXciKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVz
dC1jb25zdW1lLXN0cmVhbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRj
aC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFtLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2MwNjQ4
NmRkMDI5MGE0M2IzOWY1OTMxZWM3NTg3MjcyNzJkOTA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw5IEBACisKK0ZBSUwgUmVhZCBlbXB0eSB0ZXh0IHJlcXVlc3QncyBib2R5
IGFzIHJlYWRhYmxlU3RyZWFtIGFzc2VydF9hcnJheV9lcXVhbHM6IFJldHJpZXZlIGFuZCB2ZXJp
Znkgc3RyZWFtIGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAwIGdvdCAxNgorRkFJTCBSZWFkIGVt
cHR5IGJsb2IgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0X2FycmF5X2Vx
dWFsczogUmV0cmlldmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVk
IDAgZ290IDE2CitGQUlMIFJlYWQgYmxvYiByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVh
bSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhz
IGRpZmZlciwgZXhwZWN0ZWQgMjQgZ290IDE2CitGQUlMIFJlYWQgdGV4dCByZXF1ZXN0J3MgYm9k
eSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVy
aWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgMjQgZ290IDE2CitGQUlMIFJlYWQg
VVJMU2VhcmNoUGFyYW1zIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIGFzc2VydF9h
cnJheV9lcXVhbHM6IFJldHJpZXZlIGFuZCB2ZXJpZnkgc3RyZWFtIGxlbmd0aHMgZGlmZmVyLCBl
eHBlY3RlZCAxMCBnb3QgMTYKK0ZBSUwgUmVhZCBhcnJheSBidWZmZXIgcmVxdWVzdCdzIGJvZHkg
YXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0X2FycmF5X2VxdWFsczogUmV0cmlldmUgYW5kIHZlcmlm
eSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIDI0IGdvdCAxNgorRkFJTCBSZWFkIGZv
cm0gZGF0YSByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1
YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQg
MTAgZ290IDE2CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVl
c3QtY29uc3VtZS1zdHJlYW0uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVl
c3QtY29uc3VtZS1zdHJlYW0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNThhNDcyMDA0M2NiOTQxMTcxYjcz
NjFlMDllYjhmMTQ5ZTJiYWI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwh
ZG9jdHlwZSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKyAgICA8dGl0bGU+UmVxdWVzdCBjb25zdW1lPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJo
ZWxwIiBocmVmPSJodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jcmVxdWVzdCI+CisgICAg
PG1ldGEgbmFtZT0iaGVscCIgaHJlZj0iaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2Jv
ZHktbWl4aW4iPgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9mZXRjaC9hcGkvcmVzb3VyY2VzL3V0aWxz
LmpzIj48L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8c2NyaXB0PgorZnVuY3Rp
b24gY3JlYXRlUmVxdWVzdFdpdGhCb2R5KGJvZHkpCit7CisgICAgcmV0dXJuIG5ldyBSZXF1ZXN0
KCIiLCB7Ym9keTogIntcImtleVwiOiBcInZhbHVlXCJ9IiwgbWV0aG9kOiAiUE9TVCJ9KTsKK30K
KworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICB2YXIgYm9keSA9ICIiOworICAg
IHZhciByZXF1ZXN0ID0gY3JlYXRlUmVxdWVzdFdpdGhCb2R5KCIiKTsKKyAgICByZXR1cm4gdmFs
aWRhdGVTdHJlYW1Gcm9tU3RyaW5nKHJlcXVlc3QuYm9keS5nZXRSZWFkZXIoKSwgIiIpOworfSwg
IlJlYWQgZW1wdHkgdGV4dCByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSIpOworCitw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgIHZhciByZXF1ZXN0ID0gY3JlYXRlUmVx
dWVzdFdpdGhCb2R5KG5ldyBCbG9iKFtdLCB7ICJ0eXBlIiA6ICJ0ZXh0L3BsYWluIiB9KSk7Cisg
ICAgcmV0dXJuIHZhbGlkYXRlU3RyZWFtRnJvbVN0cmluZyhyZXF1ZXN0LmJvZHkuZ2V0UmVhZGVy
KCksICIiKTsKK30sICJSZWFkIGVtcHR5IGJsb2IgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVT
dHJlYW0iKTsKKwordmFyIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7Citmb3JtRGF0YS5hcHBl
bmQoIm5hbWUiLCAidmFsdWUiKTsKK3ZhciB0ZXh0RGF0YSA9IEpTT04uc3RyaW5naWZ5KCJUaGlz
IGlzIHJlcXVlc3QncyBib2R5Iik7Cit2YXIgYmxvYiA9IG5ldyBCbG9iKFt0ZXh0RGF0YV0sIHsg
InR5cGUiIDogInRleHQvcGxhaW4iIH0pOwordmFyIHVybFNlYXJjaFBhcmFtc0RhdGEgPSAibmFt
ZT12YWx1ZSI7Cit2YXIgdXJsU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh1cmxT
ZWFyY2hQYXJhbXNEYXRhKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICB2
YXIgcmVxdWVzdCA9IGNyZWF0ZVJlcXVlc3RXaXRoQm9keShibG9iKTsKKyAgICByZXR1cm4gdmFs
aWRhdGVTdHJlYW1Gcm9tU3RyaW5nKHJlcXVlc3QuYm9keS5nZXRSZWFkZXIoKSwgdGV4dERhdGEp
OworfSwgIlJlYWQgYmxvYiByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSIpOworCitw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgIHZhciByZXF1ZXN0ID0gY3JlYXRlUmVx
dWVzdFdpdGhCb2R5KHRleHREYXRhKTsKKyAgICByZXR1cm4gdmFsaWRhdGVTdHJlYW1Gcm9tU3Ry
aW5nKHJlcXVlc3QuYm9keS5nZXRSZWFkZXIoKSwgdGV4dERhdGEpOworfSwgIlJlYWQgdGV4dCBy
ZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSIpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odGVzdCkgeworICAgIHZhciByZXF1ZXN0ID0gY3JlYXRlUmVxdWVzdFdpdGhCb2R5KHVybFNl
YXJjaFBhcmFtcyk7CisgICAgcmV0dXJuIHZhbGlkYXRlU3RyZWFtRnJvbVN0cmluZyhyZXF1ZXN0
LmJvZHkuZ2V0UmVhZGVyKCksIHVybFNlYXJjaFBhcmFtc0RhdGEpOworfSwgIlJlYWQgVVJMU2Vh
cmNoUGFyYW1zIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIik7CisKK3Byb21pc2Vf
dGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVm
ZmVyKHRleHREYXRhLmxlbmd0aCk7CisgICAgdmFyIGludDhBcnJheSA9IG5ldyBJbnQ4QXJyYXko
YXJyYXlCdWZmZXIpOworICAgIGZvciAodmFyIGNwdHIgPSAwOyBjcHRyIDwgdGV4dERhdGEubGVu
Z3RoOyBjcHRyKyspCisgICAgICAgIGludDhBcnJheVtjcHRyXSA9IHRleHREYXRhLmNoYXJDb2Rl
QXQoY3B0cik7CisKKyAgICByZXR1cm4gdmFsaWRhdGVTdHJlYW1Gcm9tU3RyaW5nKGNyZWF0ZVJl
cXVlc3RXaXRoQm9keShhcnJheUJ1ZmZlcikuYm9keS5nZXRSZWFkZXIoKSwgdGV4dERhdGEpOwor
fSwgIlJlYWQgYXJyYXkgYnVmZmVyIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIik7
CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgdmFyIHJlcXVlc3QgPSBjcmVh
dGVSZXF1ZXN0V2l0aEJvZHkoZm9ybURhdGEpOworICAgIHJldHVybiB2YWxpZGF0ZVN0cmVhbUZy
b21TdHJpbmcocmVxdWVzdC5ib2R5LmdldFJlYWRlcigpLCAibmFtZT12YWx1ZSIpOworfSwgIlJl
YWQgZm9ybSBkYXRhIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIik7CisgICAgPC9z
Y3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L2ZldGNoL3JlcXVlc3Qtc3RyZWFtLWRpc3R1cmJlZC0xLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3Qtc3RyZWFtLWRpc3R1cmJlZC0xLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iODU0NmJlYTFkNzgwYWIyMjQzMWFjYzhiZjJlOGUzNzJmMmIyMzZj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1z
dHJlYW0tZGlzdHVyYmVkLTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIEdl
dHRpbmcgYmxvYiBhZnRlciBnZXR0aW5nIHRoZSBSZXF1ZXN0IGJvZHkgLSBub3QgZGlzdHVyYmVk
LCBub3QgbG9ja2VkIAorRkFJTCBHZXR0aW5nIHRleHQgYWZ0ZXIgZ2V0dGluZyB0aGUgUmVxdWVz
dCBib2R5IC0gbm90IGRpc3R1cmJlZCwgbm90IGxvY2tlZCBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQg
dHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgR2V0dGluZyBqc29uIGFmdGVyIGdldHRpbmcgdGhlIFJlcXVl
c3QgYm9keSAtIG5vdCBkaXN0dXJiZWQsIG5vdCBsb2NrZWQgcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiU3ludGF4RXJyb3I6IFRoZSBzdHJpbmcg
ZGlkIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgcGF0dGVybi4iCitGQUlMIEdldHRpbmcgYXJyYXlC
dWZmZXIgYWZ0ZXIgZ2V0dGluZyB0aGUgUmVxdWVzdCBib2R5IC0gbm90IGRpc3R1cmJlZCwgbm90
IGxvY2tlZCBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTEu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3Qtc3RyZWFtLWRpc3R1cmJl
ZC0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRmZTc5NDg2NjRiYTg2MTk2YjQ0YTk3NzIwMWJmZTllZDNi
NGVhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVl
c3Qtc3RyZWFtLWRpc3R1cmJlZC0xLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFkb2N0eXBlIGh0
bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDx0
aXRsZT5Db25zdW1pbmcgUmVxdWVzdCBib2R5IGFmdGVyIGdldHRpbmcgYSBSZWFkYWJsZVN0cmVh
bTwvdGl0bGU+CisgICAgPG1ldGEgbmFtZT0iaGVscCIgaHJlZj0iaHR0cHM6Ly9mZXRjaC5zcGVj
LndoYXR3Zy5vcmcvI2JvZHktbWl4aW4iPgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNj
cmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZVJlcXVlc3RXaXRoUmVhZGFibGVTdHJlYW0oY2FsbGJhY2sp
IHsKKyAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KCIiLCB7Ym9keTogIntcImtleVwiOiBc
InZhbHVlXCJ9IiwgbWV0aG9kOiAiUE9TVCJ9KTsKKyAgICB2YXIgcmVhZGVyID0gcmVxdWVzdC5i
b2R5LmdldFJlYWRlcigpOworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICAgIHJldHVybiBj
YWxsYmFjayhyZXF1ZXN0KTsKK30KKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgeworICAgIHJl
dHVybiBjcmVhdGVSZXF1ZXN0V2l0aFJlYWRhYmxlU3RyZWFtKGZ1bmN0aW9uKHJlcXVlc3QpIHsK
KyAgICAgICAgcmV0dXJuIHJlcXVlc3QuYmxvYigpLnRoZW4oZnVuY3Rpb24oYmxvYikgeworICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoYmxvYiBpbnN0YW5jZW9mIEJsb2IpOworICAgICAgICB9KTsK
KyAgICB9KTsKK30sICJHZXR0aW5nIGJsb2IgYWZ0ZXIgZ2V0dGluZyB0aGUgUmVxdWVzdCBib2R5
IC0gbm90IGRpc3R1cmJlZCwgbm90IGxvY2tlZCIpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RXaXRoUmVhZGFibGVTdHJlYW0oZnVuY3Rpb24o
cmVxdWVzdCkgeworICAgICAgICByZXR1cm4gcmVxdWVzdC50ZXh0KCkudGhlbihmdW5jdGlvbih0
ZXh0KSB7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0ZXh0Lmxlbmd0aCA+IDApOworICAgICAg
ICB9KTsKKyAgICB9KTsKK30sICJHZXR0aW5nIHRleHQgYWZ0ZXIgZ2V0dGluZyB0aGUgUmVxdWVz
dCBib2R5IC0gbm90IGRpc3R1cmJlZCwgbm90IGxvY2tlZCIpOworCitwcm9taXNlX3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RXaXRoUmVhZGFibGVTdHJlYW0oZnVu
Y3Rpb24ocmVxdWVzdCkgeworICAgICAgICByZXR1cm4gcmVxdWVzdC5qc29uKCkudGhlbihmdW5j
dGlvbihqc29uKSB7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0eXBlb2YganNvbiA9PT0gIm9i
amVjdCIpOworICAgICAgICB9KTsKKyAgICB9KTsKK30sICJHZXR0aW5nIGpzb24gYWZ0ZXIgZ2V0
dGluZyB0aGUgUmVxdWVzdCBib2R5IC0gbm90IGRpc3R1cmJlZCwgbm90IGxvY2tlZCIpOworCitw
cm9taXNlX3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RXaXRoUmVh
ZGFibGVTdHJlYW0oZnVuY3Rpb24ocmVxdWVzdCkgeworICAgICAgICByZXR1cm4gcmVxdWVzdC5h
cnJheUJ1ZmZlcigpLnRoZW4oZnVuY3Rpb24oYXJyYXlCdWZmZXIpIHsKKyAgICAgICAgICAgIGFz
c2VydF90cnVlKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGggPiAwKTsKKyAgICAgICAgfSk7CisgICAg
fSk7Cit9LCAiR2V0dGluZyBhcnJheUJ1ZmZlciBhZnRlciBnZXR0aW5nIHRoZSBSZXF1ZXN0IGJv
ZHkgLSBub3QgZGlzdHVyYmVkLCBub3QgbG9ja2VkIik7CisKKyAgICA8L3NjcmlwdD4KKyAgPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVx
dWVzdC1zdHJlYW0tZGlzdHVyYmVkLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYyYjliMmU1ZmNlOTM1NmQxNTM2MmIyYTFlYWE2NTEwOGIwNjYzNjcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0LXN0cmVhbS1kaXN0dXJi
ZWQtMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK0ZBSUwgR2V0dGluZyBibG9iIGFm
dGVyIGdldHRpbmcgYSBsb2NrZWQgUmVxdWVzdCBib2R5IGFzc2VydF91bnJlYWNoZWQ6IFNob3Vs
ZCBoYXZlIHJlamVjdGVkOiB1bmRlZmluZWQgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlM
IEdldHRpbmcgdGV4dCBhZnRlciBnZXR0aW5nIGEgbG9ja2VkIFJlcXVlc3QgYm9keSBhc3NlcnRf
dW5yZWFjaGVkOiBTaG91bGQgaGF2ZSByZWplY3RlZDogdW5kZWZpbmVkIFJlYWNoZWQgdW5yZWFj
aGFibGUgY29kZQorRkFJTCBHZXR0aW5nIGpzb24gYWZ0ZXIgZ2V0dGluZyBhIGxvY2tlZCBSZXF1
ZXN0IGJvZHkgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9
IiB0aHJldyBvYmplY3QgIlN5bnRheEVycm9yOiBUaGUgc3RyaW5nIGRpZCBub3QgbWF0Y2ggdGhl
IGV4cGVjdGVkIHBhdHRlcm4uIiAoIlN5bnRheEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBl
RXJyb3IiICgiVHlwZUVycm9yIikKK0ZBSUwgR2V0dGluZyBhcnJheUJ1ZmZlciBhZnRlciBnZXR0
aW5nIGEgbG9ja2VkIFJlcXVlc3QgYm9keSBhc3NlcnRfdW5yZWFjaGVkOiBTaG91bGQgaGF2ZSBy
ZWplY3RlZDogdW5kZWZpbmVkIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0LXN0cmVhbS1kaXN0dXJiZWQtMi5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVk
LTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wZWQwM2JhOWI0ZWRjN2E3NzM0YjA5YTEwMWYxNzFhZjUxNzE2
ODhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVz
dC1zdHJlYW0tZGlzdHVyYmVkLTIuaHRtbApAQCAtMCwwICsxLDQzIEBACis8IWRvY3R5cGUgaHRt
bD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRp
dGxlPkNvbnN1bWluZyBSZXF1ZXN0IGJvZHkgYWZ0ZXIgZ2V0dGluZyBhIFJlYWRhYmxlU3RyZWFt
PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxzY3JpcHQ+CitmdW5jdGlvbiBj
cmVhdGVSZXF1ZXN0V2l0aExvY2tlZFJlYWRhYmxlU3RyZWFtKGNhbGxiYWNrKSB7CisgICAgdmFy
IHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgiIiwge2JvZHk6ICJ7XCJrZXlcIjogXCJ2YWx1ZVwifSIs
IG1ldGhvZDogIlBPU1QifSk7CisgICAgdmFyIHJlYWRlciA9IHJlcXVlc3QuYm9keS5nZXRSZWFk
ZXIoKTsKKyAgICByZXR1cm4gY2FsbGJhY2socmVxdWVzdCk7Cit9CisKK3Byb21pc2VfdGVzdChm
dW5jdGlvbih0ZXN0KSB7CisgICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RXaXRoTG9ja2VkUmVhZGFi
bGVTdHJlYW0oZnVuY3Rpb24ocmVxdWVzdCkgeworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IoKSwgcmVxdWVzdC5ibG9iKCkpOworICAgIH0pOworfSwg
IkdldHRpbmcgYmxvYiBhZnRlciBnZXR0aW5nIGEgbG9ja2VkIFJlcXVlc3QgYm9keSIpOworCitw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgIHJldHVybiBjcmVhdGVSZXF1ZXN0V2l0
aExvY2tlZFJlYWRhYmxlU3RyZWFtKGZ1bmN0aW9uKHJlcXVlc3QpIHsKKyAgICAgICAgcmV0dXJu
IHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVycm9yKCksIHJlcXVlc3QudGV4dCgpKTsK
KyAgICB9KTsKK30sICJHZXR0aW5nIHRleHQgYWZ0ZXIgZ2V0dGluZyBhIGxvY2tlZCBSZXF1ZXN0
IGJvZHkiKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICByZXR1cm4gY3Jl
YXRlUmVxdWVzdFdpdGhMb2NrZWRSZWFkYWJsZVN0cmVhbShmdW5jdGlvbihyZXF1ZXN0KSB7Cisg
ICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCByZXF1
ZXN0Lmpzb24oKSk7CisgICAgfSk7Cit9LCAiR2V0dGluZyBqc29uIGFmdGVyIGdldHRpbmcgYSBs
b2NrZWQgUmVxdWVzdCBib2R5Iik7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7Cisg
ICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RXaXRoTG9ja2VkUmVhZGFibGVTdHJlYW0oZnVuY3Rpb24o
cmVxdWVzdCkgeworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG5ldyBUeXBl
RXJyb3IoKSwgcmVxdWVzdC5hcnJheUJ1ZmZlcigpKTsKKyAgICB9KTsKK30sICJHZXR0aW5nIGFy
cmF5QnVmZmVyIGFmdGVyIGdldHRpbmcgYSBsb2NrZWQgUmVxdWVzdCBib2R5Iik7CisKKyAgICA8
L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI5M2UzYTZmZWFkMTNhOGZhYmNiNDcxN2Y0NDhlNDcwZjNlOWRm
OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0
LXN0cmVhbS1kaXN0dXJiZWQtMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK0ZBSUwg
R2V0dGluZyBibG9iIGFmdGVyIHJlYWRpbmcgdGhlIFJlcXVlc3QgYm9keSBhc3NlcnRfdW5yZWFj
aGVkOiBTaG91bGQgaGF2ZSByZWplY3RlZDogdW5kZWZpbmVkIFJlYWNoZWQgdW5yZWFjaGFibGUg
Y29kZQorRkFJTCBHZXR0aW5nIHRleHQgYWZ0ZXIgcmVhZGluZyB0aGUgUmVxdWVzdCBib2R5IGFz
c2VydF91bnJlYWNoZWQ6IFNob3VsZCBoYXZlIHJlamVjdGVkOiB1bmRlZmluZWQgUmVhY2hlZCB1
bnJlYWNoYWJsZSBjb2RlCitGQUlMIEdldHRpbmcganNvbiBhZnRlciByZWFkaW5nIHRoZSBSZXF1
ZXN0IGJvZHkgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9
IiB0aHJldyBvYmplY3QgIlN5bnRheEVycm9yOiBUaGUgc3RyaW5nIGRpZCBub3QgbWF0Y2ggdGhl
IGV4cGVjdGVkIHBhdHRlcm4uIiAoIlN5bnRheEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBl
RXJyb3IiICgiVHlwZUVycm9yIikKK0ZBSUwgR2V0dGluZyBhcnJheUJ1ZmZlciBhZnRlciByZWFk
aW5nIHRoZSBSZXF1ZXN0IGJvZHkgYXNzZXJ0X3VucmVhY2hlZDogU2hvdWxkIGhhdmUgcmVqZWN0
ZWQ6IHVuZGVmaW5lZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3Qtc3RyZWFtLWRpc3R1cmJlZC0zLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzAzNTc2NGRmNDAxZWI4OTBkNGRkMjRhMDU5Mzg5NDc2YjA4NzZiNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3Qtc3Ry
ZWFtLWRpc3R1cmJlZC0zLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8
aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5D
b25zdW1pbmcgUmVxdWVzdCBib2R5IGFmdGVyIGdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbTwvdGl0
bGU+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8c2NyaXB0PgorCitmdW5jdGlvbiBjcmVh
dGVSZXF1ZXN0V2l0aERpc3R1cmJlZFJlYWRhYmxlU3RyZWFtKGNhbGxiYWNrKSB7CisgICAgdmFy
IHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgiIiwge2JvZHk6ICJ7XCJrZXlcIjogXCJ2YWx1ZVwifSIs
IG1ldGhvZDogIlBPU1QifSk7CisgICAgdmFyIHJlYWRlciA9IHJlcXVlc3QuYm9keS5nZXRSZWFk
ZXIoKTsKKyAgICByZWFkZXIucmVhZCgpOworICAgIHJldHVybiBjYWxsYmFjayhyZXF1ZXN0KTsK
K30KKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICByZXR1cm4gY3JlYXRlUmVx
dWVzdFdpdGhEaXN0dXJiZWRSZWFkYWJsZVN0cmVhbShmdW5jdGlvbihyZXF1ZXN0KSB7CisgICAg
ICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCByZXF1ZXN0
LmJsb2IoKSk7CisgICAgfSk7Cit9LCAiR2V0dGluZyBibG9iIGFmdGVyIHJlYWRpbmcgdGhlIFJl
cXVlc3QgYm9keSIpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgIHJldHVy
biBjcmVhdGVSZXF1ZXN0V2l0aERpc3R1cmJlZFJlYWRhYmxlU3RyZWFtKGZ1bmN0aW9uKHJlcXVl
c3QpIHsKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVycm9y
KCksIHJlcXVlc3QudGV4dCgpKTsKKyAgICB9KTsKK30sICJHZXR0aW5nIHRleHQgYWZ0ZXIgcmVh
ZGluZyB0aGUgUmVxdWVzdCBib2R5Iik7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7
CisgICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RXaXRoRGlzdHVyYmVkUmVhZGFibGVTdHJlYW0oZnVu
Y3Rpb24ocmVxdWVzdCkgeworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG5l
dyBUeXBlRXJyb3IoKSwgcmVxdWVzdC5qc29uKCkpOworICAgIH0pOworfSwgIkdldHRpbmcganNv
biBhZnRlciByZWFkaW5nIHRoZSBSZXF1ZXN0IGJvZHkiKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKHRlc3QpIHsKKyAgICByZXR1cm4gY3JlYXRlUmVxdWVzdFdpdGhEaXN0dXJiZWRSZWFkYWJs
ZVN0cmVhbShmdW5jdGlvbihyZXF1ZXN0KSB7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVj
dHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCByZXF1ZXN0LmFycmF5QnVmZmVyKCkpOworICAgIH0p
OworfSwgIkdldHRpbmcgYXJyYXlCdWZmZXIgYWZ0ZXIgcmVhZGluZyB0aGUgUmVxdWVzdCBib2R5
Iik7CisKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319499</attachid>
            <date>2017-08-31 12:33:13 -0700</date>
            <delta_ts>2017-08-31 13:03:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-176148-20170831123313.patch</filename>
            <type>text/plain</type>
            <size>54545</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc0MTYxYzlhNzk4ZDQy
M2RkNGNlYjA0NDA1ODk3Nzc5NDIxZWM5Ny4uNWQ3NjFkY2FlYWQyOWQwODE2YjhiODcwYjFhYWJi
NzM5MTQ3NThlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE3LTA4LTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
UmVxdWVzdCBib2R5IHN0cmVhbSBjbG9uaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENo
cmlzdGVuc2VuLgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNsb25l
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJl
YW0uaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlz
dHVyYmVkLTEuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJl
YW0tZGlzdHVyYmVkLTIuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvZmV0Y2gvcmVxdWVz
dC1zdHJlYW0tZGlzdHVyYmVkLTMuaHRtbAorCisgICAgICAgIEFkZGluZyBzdXBwb3J0IGZvciBS
ZWFkYWJsZVN0cmVhbSB0ZWVpbmcgZm9yIGNsb25pbmcgZmV0Y2ggYm9kaWVzLgorICAgICAgICBB
ZGRpbmcgc3VwcG9ydCBmb3IgcHVzaGluZyByZXF1ZXN0IGJvZHkgZGF0YSB0byBpdHMgUmVhZGFi
bGVTdHJlYW0uCisgICAgICAgIFJlbmFtZWQgRmV0Y2hSZXNwb25zZVNvdXJjZSB0byBGZXRjaEJv
ZHlTb3VyY2UgZm9yIHRoYXQgcHVycG9zZS4KKworICAgICAgICBUZXN0cyBleHRyYWN0aW5nIGJv
ZHkgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIHRocm91Z2ggSlMgQVBJIHBhc3MuCisgICAgICAgIFRl
c3RzIGV4dHJhY3RpbmcgZGF0YSBzdG9yZWQgaW4gYSBSZWFkYWJsZVN0cmVhbSB0byByZXNvbHZl
IGZldGNoIGJvZHkgcHJvbWlzZXMgYXJlIGZhaWxpbmcuCisgICAgICAgIFRoZXJlIGlzIG5vIHN1
cHBvcnQgeWV0LCB0aGlzIHdpbGwgYmUgYWRkZWQgYXMgYSBmb2xsb3ctdXAuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXNTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5OjpjbG9uZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlP
d25lcjo6Y2xvbmVCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2Fk
QmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6cmVhZGFibGVTdHJlYW0p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmNvbnN1bWVCb2R5QXNTdHJlYW0p
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpmZWVkU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keU93bmVyOjpjYW5jZWwpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
U291cmNlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZVNvdXJjZS5jcHAuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlT
b3VyY2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZVNvdXJjZS5oLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNyZWF0ZVJlYWRhYmxlU3RyZWFt
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5qczoKKyAgICAgICAgKGdldHRlci5ib2R5KToKKyAgICAgICAgKGNsb25l
KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVh
ZGFibGVTdHJlYW06OnRlZSk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0u
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6CisKIDIwMTct
MDgtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgV1RG
Ojpjcm9zc1RocmVhZENvcHkoKSBpbiBtb3JlIHBsYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBmMTEyYzg1ZGY5ZjA4MDY3NjhiMWQwNjc3NjdiM2IzZDg4NTlkNmRkLi5jMjBmOTA2YzRlMGNm
OWIzOTE1NGNjMDA1MjBlNDc3YmIxMWZjM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTM2
LDExICs5MzYsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCiAgICAg
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKyAgICBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keVNvdXJjZS5jcHAKICAgICBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKICAgICBN
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1
ZXN0LmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKLSAgICBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2VTb3VyY2UuY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9Xb3JrZXJH
bG9iYWxTY29wZUZldGNoLmNwcAogCiAgICAgTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRl
cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAx
YWMxYTVmMWFmNWQyMGRiNmUxNGZmMWMxMzYwZTYxYzMyYmJlZmI5Li40MzNlOTRiNWU3ZmIzNjg1
OWE3ZTMyYWViOTA5NWY1ZGY2MTBkMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkZldGNoQm9keU93bmVyLmgiCisjaW5jbHVkZSAiRmV0Y2hCb2R5U291cmNl
LmgiCiAjaW5jbHVkZSAiRmV0Y2hIZWFkZXJzLmgiCi0jaW5jbHVkZSAiRmV0Y2hSZXNwb25zZVNv
dXJjZS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJWYWx1ZXMuaCIKICNpbmNsdWRlICJIVFRQUGFy
c2Vycy5oIgogI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtU291cmNlLmgiCkBAIC0xMzcsMTEgKzEz
NywxMiBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBtX2NvbnN1bWVyLnJlc29sdmUoV1RGTW92
ZShwcm9taXNlKSk7CiB9CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi12b2lkIEZldGNoQm9k
eTo6Y29uc3VtZUFzU3RyZWFtKEZldGNoQm9keU93bmVyJiBvd25lciwgRmV0Y2hSZXNwb25zZVNv
dXJjZSYgc291cmNlKQordm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBc1N0cmVhbShGZXRjaEJvZHlP
d25lciYgb3duZXIsIEZldGNoQm9keVNvdXJjZSYgc291cmNlKQogewogICAgIGJvb2wgY2xvc2VT
dHJlYW0gPSBmYWxzZTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKSB7CkBAIC0yNzAsNyArMjcx
LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotRmV0Y2hCb2R5IEZldGNoQm9keTo6Y2xvbmUoKSBjb25zdAorRmV0Y2hC
b2R5IEZldGNoQm9keTo6Y2xvbmUoKQogewogICAgIEZldGNoQm9keSBjbG9uZShtX2NvbnN1bWVy
KTsKIApAQCAtMjg2LDYgKzI4NywxMiBAQCBGZXRjaEJvZHkgRmV0Y2hCb2R5OjpjbG9uZSgpIGNv
bnN0CiAgICAgICAgIGNsb25lLm1fZGF0YSA9IHRleHRCb2R5KCk7CiAgICAgZWxzZSBpZiAoaXNV
UkxTZWFyY2hQYXJhbXMoKSkKICAgICAgICAgY2xvbmUubV9kYXRhID0gdXJsU2VhcmNoUGFyYW1z
Qm9keSgpOworCisgICAgaWYgKG1fcmVhZGFibGVTdHJlYW0pIHsKKyAgICAgICAgYXV0byBjbG9u
ZXMgPSBtX3JlYWRhYmxlU3RyZWFtLT50ZWUoKTsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbSA9
IFdURk1vdmUoY2xvbmVzLmZpcnN0KTsKKyAgICAgICAgY2xvbmUubV9yZWFkYWJsZVN0cmVhbSA9
IFdURk1vdmUoY2xvbmVzLnNlY29uZCk7CisgICAgfQogICAgIHJldHVybiBjbG9uZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggZWY5ZjZlZDA2NzY0
N2VkZWFkZDQ0NWNkODg4MjY3MmY2OWViNTYyNC4uMjdhY2M2OTgyMTUwZjNhYWZhZmQxMDE5Mjgw
YzlmN2YyZTVmMjNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZldGNoQm9k
eU93bmVyOwotY2xhc3MgRmV0Y2hSZXNwb25zZVNvdXJjZTsKK2NsYXNzIEZldGNoQm9keVNvdXJj
ZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIEZldGNoQm9keSB7CkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcm1EYXRhKEZldGNoQm9keU93bmVy
JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKSB7IHByb21pc2UuZ2V0KCkucmVqZWN0
KE5vdFN1cHBvcnRlZEVycm9yKTsgfQogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotICAgIHZv
aWQgY29uc3VtZUFzU3RyZWFtKEZldGNoQm9keU93bmVyJiwgRmV0Y2hSZXNwb25zZVNvdXJjZSYp
OworICAgIHZvaWQgY29uc3VtZUFzU3RyZWFtKEZldGNoQm9keU93bmVyJiwgRmV0Y2hCb2R5U291
cmNlJik7CiAjZW5kaWYKIAogICAgIGJvb2wgaXNCbG9iKCkgY29uc3QgeyByZXR1cm4gV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8Y29uc3QgQmxvYj4+KG1fZGF0YSk7IH0KQEAgLTgwLDcgKzgw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29uc3VtZU9uY2VMb2FkaW5nRmluaXNoZWQoRmV0Y2hC
b2R5Q29uc3VtZXI6OlR5cGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgY2xlYW5Db25zdW1lcigpIHsgbV9jb25zdW1lci5jbGVhbigpOyB9CiAKLSAg
ICBGZXRjaEJvZHkgY2xvbmUoKSBjb25zdDsKKyAgICBGZXRjaEJvZHkgY2xvbmUoKTsKICAgICBS
ZWFkYWJsZVN0cmVhbSogcmVhZGFibGVTdHJlYW0oKSB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFt
LmdldCgpOyB9CiAgICAgdm9pZCBzZXRSZWFkYWJsZVN0cmVhbShSZWY8UmVhZGFibGVTdHJlYW0+
JiYgc3RyZWFtKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5jcHAKaW5kZXggN2ViNDQwMTY0OTQyNzYwM2U1ZDk3ZWZlYWYyODhkODAxNWUx
MWFhMC4uMGZiMmRmM2NmODFlYjNiYTg1OTkwODZkODZjMWM1ZmZiMGE3YWY1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTEwMCw3
ICsxMDAsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKICAgICBtX2JvZHktPmJsb2IoKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIG1f
Y29udGVudFR5cGUpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpjbG9uZUJvZHkoY29uc3Qg
RmV0Y2hCb2R5T3duZXImIG93bmVyKQordm9pZCBGZXRjaEJvZHlPd25lcjo6Y2xvbmVCb2R5KEZl
dGNoQm9keU93bmVyJiBvd25lcikKIHsKICAgICBtX2NvbnRlbnRUeXBlID0gb3duZXIubV9jb250
ZW50VHlwZTsKICAgICBpZiAob3duZXIuaXNCb2R5TnVsbCgpKQpAQCAtMjAwLDcgKzIwMCw2IEBA
IHZvaWQgRmV0Y2hCb2R5T3duZXI6OnRleHQoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
KQogdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxvYiYgYmxvYiwgRmV0Y2hC
b2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogewogICAgIC8vIENhbiBvbmx5IGJlIGNhbGxlZCBvbmNl
IGZvciBhIGJvZHkgaW5zdGFuY2UuCi0gICAgQVNTRVJUKGlzRGlzdHVyYmVkKCkpOwogICAgIEFT
U0VSVCghbV9ibG9iTG9hZGVyKTsKICAgICBBU1NFUlQoIWlzQm9keU51bGwoKSk7CiAKQEAgLTI5
MywxMCArMjkyLDIxIEBAIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gRmV0Y2hCb2R5T3duZXI6OnJl
YWRhYmxlU3RyZWFtKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKICAgICBpZiAoaXNCb2R5TnVsbCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICghbV9ib2R5LT5oYXNSZWFkYWJs
ZVN0cmVhbSgpKQorICAgIGlmICghbV9ib2R5LT5oYXNSZWFkYWJsZVN0cmVhbSgpKSB7CisgICAg
ICAgIEFTU0VSVCghbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7CisgICAgICAgIG1fcmVhZGFibGVT
dHJlYW1Tb3VyY2UgPSBhZG9wdFJlZigqbmV3IEZldGNoQm9keVNvdXJjZSgqdGhpcykpOwogICAg
ICAgICBtX2JvZHktPnNldFJlYWRhYmxlU3RyZWFtKFJlYWRhYmxlU3RyZWFtOjpjcmVhdGUoc3Rh
dGUsIG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpKTsKLQorICAgIH0KICAgICByZXR1cm4gbV9ib2R5
LT5yZWFkYWJsZVN0cmVhbSgpOwogfQogCit2b2lkIEZldGNoQm9keU93bmVyOjpjb25zdW1lQm9k
eUFzU3RyZWFtKCkKK3sKKyAgICBBU1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7CisKKyAg
ICBib2R5KCkuY29uc3VtZUFzU3RyZWFtKCp0aGlzLCAqbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7
CisgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5pc1B1bGxpbmcoKSkKKyAgICAgICAg
bV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApp
bmRleCBlYWMyMjMyOTdiMjBmZTk1NTUwMjIwZjIxMTdkOWJkZmVlZjE5M2QyLi45ODk1YzY3YTcy
NTVjYzQ1YmJlMDVkMDkyY2NhMTRjNjJkMzQ5MDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCkBAIC0zMCwxMCArMzAsMTAgQEAKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkZldGNoQm9keS5oIgorI2luY2x1ZGUg
IkZldGNoQm9keVNvdXJjZS5oIgogI2luY2x1ZGUgIkZldGNoSGVhZGVycy5oIgogI2luY2x1ZGUg
IkZldGNoTG9hZGVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRl
ICJGZXRjaFJlc3BvbnNlU291cmNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDEs
OCArNDEsNiBAQCBjbGFzcyBGZXRjaEJvZHlPd25lciA6IHB1YmxpYyBSZWZDb3VudGVkPEZldGNo
Qm9keU93bmVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdAogcHVibGljOgogICAgIEZldGNoQm9k
eU93bmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4m
JiwgUmVmPEZldGNoSGVhZGVycz4mJik7CiAKLSAgICAvLyBFeHBvc2VkIEJvZHkgQVBJCi0gICAg
Ly8gRklYTUU6IE1pc3NpbmcgYm9keSBhdHRyaWJ1dGUgcmV0dXJuaW5nIGEgUmVhZGFibGVTdHJl
YW0uCiAgICAgYm9vbCBib2R5VXNlZCgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzdHVyYmVkKCk7IH0K
ICAgICB2b2lkIGFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQg
YmxvYihSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKQEAgLTYwLDExICs1OCwxNyBAQCBwdWJsaWM6
CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiByZWFkYWJsZVN0cmVhbShKU0M6OkV4ZWNTdGF0
ZSYpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNSZWFkYWJsZVN0cmVhbUJvZHkoKSBjb25zdCB7IHJl
dHVybiBtX2JvZHkgJiYgbV9ib2R5LT5oYXNSZWFkYWJsZVN0cmVhbSgpOyB9CiAKKyNpZiBFTkFC
TEUoU1RSRUFNU19BUEkpCisgICAgdmlydHVhbCB2b2lkIGNvbnN1bWVCb2R5QXNTdHJlYW0oKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmVlZFN0cmVhbSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWwoKSB7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgRmV0Y2hCb2R5JiBib2R5
KCkgY29uc3QgeyByZXR1cm4gKm1fYm9keTsgfQogICAgIEZldGNoQm9keSYgYm9keSgpIHsgcmV0
dXJuICptX2JvZHk7IH0KICAgICBib29sIGlzQm9keU51bGwoKSBjb25zdCB7IHJldHVybiAhbV9i
b2R5OyB9Ci0gICAgdm9pZCBjbG9uZUJvZHkoY29uc3QgRmV0Y2hCb2R5T3duZXImKTsKKyAgICB2
b2lkIGNsb25lQm9keShGZXRjaEJvZHlPd25lciYpOwogCiAgICAgdm9pZCBleHRyYWN0Qm9keShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmV0Y2hCb2R5OjpJbml0JiYpOwogICAgIHZvaWQgdXBk
YXRlQ29udGVudFR5cGUoKTsKQEAgLTEwMyw3ICsxMDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU3Ry
aW5nIG1fY29udGVudFR5cGU7CiAgICAgYm9vbCBtX2lzRGlzdHVyYmVkIHsgZmFsc2UgfTsKICNp
ZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0gICAgUmVmUHRyPEZldGNoUmVzcG9uc2VTb3VyY2U+IG1f
cmVhZGFibGVTdHJlYW1Tb3VyY2U7CisgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9yZWFk
YWJsZVN0cmVhbVNvdXJjZTsKICNlbmRpZgogICAgIFJlZjxGZXRjaEhlYWRlcnM+IG1faGVhZGVy
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2Uu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJhYTdjYmEwZWMzOGJlMjUxYTJhMDJhZDNiNzkyMDBmYTJjZDNiMTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eVNvdXJjZS5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBD
YW5vbiBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAq
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGZXRjaEJv
ZHlTb3VyY2UuaCIKKworI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKworI2luY2x1ZGUgIkZldGNo
UmVzcG9uc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGZXRjaEJvZHlTb3VyY2U6OkZl
dGNoQm9keVNvdXJjZShGZXRjaEJvZHlPd25lciYgYm9keU93bmVyKQorICAgIDogbV9ib2R5T3du
ZXIoYm9keU93bmVyKQoreworfQorCitib29sIEZldGNoQm9keVNvdXJjZTo6aXNSZWFkYWJsZVN0
cmVhbUxvY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIoKS5pc0NvbnRyb2xs
ZWRSZWFkYWJsZVN0cmVhbUxvY2tlZCgpOworfQorCit2b2lkIEZldGNoQm9keVNvdXJjZTo6c2V0
QWN0aXZlKCkKK3sKKyAgICBtX2JvZHlPd25lci5zZXRQZW5kaW5nQWN0aXZpdHkoJm1fYm9keU93
bmVyKTsKK30KKwordm9pZCBGZXRjaEJvZHlTb3VyY2U6OnNldEluYWN0aXZlKCkKK3sKKyAgICBt
X2JvZHlPd25lci51bnNldFBlbmRpbmdBY3Rpdml0eSgmbV9ib2R5T3duZXIpOworfQorCit2b2lk
IEZldGNoQm9keVNvdXJjZTo6ZG9TdGFydCgpCit7CisgICAgbV9ib2R5T3duZXIuY29uc3VtZUJv
ZHlBc1N0cmVhbSgpOworfQorCit2b2lkIEZldGNoQm9keVNvdXJjZTo6ZG9QdWxsKCkKK3sKKyAg
ICBtX2JvZHlPd25lci5mZWVkU3RyZWFtKCk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5U291cmNlOjpk
b0NhbmNlbCgpCit7CisgICAgbV9pc0NhbmNlbGxpbmcgPSB0cnVlOworICAgIG1fYm9keU93bmVy
LmNhbmNlbCgpOworfQorCit2b2lkIEZldGNoQm9keVNvdXJjZTo6Y2xvc2UoKQoreworICAgIGNv
bnRyb2xsZXIoKS5jbG9zZSgpOworICAgIGNsZWFuKCk7Cit9Cit2b2lkIEZldGNoQm9keVNvdXJj
ZTo6ZXJyb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBjb250cm9sbGVyKCkuZXJyb3Io
dmFsdWUpOworICAgIGNsZWFuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keVNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3NmM0OTgxYWQ2NzFlNTQyZDY0MmEz
OWU5NzA2NWU0ZTZkNGRiNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQ2Fub24gSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBi
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKKworI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtU291cmNlLmgiCisK
K25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7Cit9OworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEZldGNoQm9keU93bmVyOworCitjbGFzcyBGZXRjaEJvZHlTb3VyY2Ug
ZmluYWwgOiBwdWJsaWMgUmVhZGFibGVTdHJlYW1Tb3VyY2UgeworcHVibGljOgorICAgIEZldGNo
Qm9keVNvdXJjZShGZXRjaEJvZHlPd25lciYpOworCisgICAgYm9vbCBlbnF1ZXVlKFJlZlB0cjxK
U0M6OkFycmF5QnVmZmVyPiYmIGNodW5rKSB7IHJldHVybiBjb250cm9sbGVyKCkuZW5xdWV1ZShX
VEZNb3ZlKGNodW5rKSk7IH0KKyAgICB2b2lkIGNsb3NlKCk7CisgICAgdm9pZCBlcnJvcihjb25z
dCBTdHJpbmcmKTsKKworICAgIGJvb2wgaXNDYW5jZWxsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9p
c0NhbmNlbGxpbmc7IH0KKyAgICBib29sIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoKSBjb25zdDsK
KworICAgIHZvaWQgcmVzb2x2ZVB1bGxQcm9taXNlKCkgeyBwdWxsRmluaXNoZWQoKTsgfQorCitw
cml2YXRlOgorICAgIHZvaWQgZG9TdGFydCgpIGZpbmFsOworICAgIHZvaWQgZG9QdWxsKCkgZmlu
YWw7CisgICAgdm9pZCBkb0NhbmNlbCgpIGZpbmFsOworICAgIHZvaWQgc2V0QWN0aXZlKCkgZmlu
YWw7CisgICAgdm9pZCBzZXRJbmFjdGl2ZSgpIGZpbmFsOworCisgICAgRmV0Y2hCb2R5T3duZXIm
IG1fYm9keU93bmVyOworICAgIGJvb2wgbV9pc0NhbmNlbGxpbmcgeyBmYWxzZSB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXgg
NzlhOTk3ZjZmMDU4ZGU1YTcyOTRhYzBjZmU1M2EzZmIxYTcyYTA5MC4uYzE5M2NlM2UxNzZkNzFh
NmNhMjE3ZDVkNTAyYTg5MzYyNzFkMTI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0zMjQsMTQgKzMyNCwxMiBAQCB2b2lkIEZldGNo
UmVzcG9uc2U6OmNvbnN1bWVCb2R5QXNTdHJlYW0oKQogewogICAgIEFTU0VSVChtX3Nob3VsZEV4
cG9zZUJvZHkpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKLSAgICBtX2lz
RGlzdHVyYmVkID0gdHJ1ZTsKICAgICBpZiAoIWlzTG9hZGluZygpKSB7Ci0gICAgICAgIGJvZHko
KS5jb25zdW1lQXNTdHJlYW0oKnRoaXMsICptX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKLSAgICAg
ICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5pc1B1bGxpbmcoKSkKLSAgICAgICAgICAg
IG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBudWxscHRyOworICAgICAgICBGZXRjaEJvZHlPd25l
cjo6Y29uc3VtZUJvZHlBc1N0cmVhbSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAg
bV9pc0Rpc3R1cmJlZCA9IHRydWU7CiAgICAgQVNTRVJUKG1fYm9keUxvYWRlcik7CiAKICAgICBz
ZXRCb2R5QXNSZWFkYWJsZVN0cmVhbSgpOwpAQCAtMzczLDE2ICszNzEsMTIgQEAgdm9pZCBGZXRj
aFJlc3BvbnNlOjpmZWVkU3RyZWFtKCkKICAgICBjbG9zZVN0cmVhbSgpOwogfQogCi1SZWFkYWJs
ZVN0cmVhbVNvdXJjZSogRmV0Y2hSZXNwb25zZTo6Y3JlYXRlUmVhZGFibGVTdHJlYW1Tb3VyY2Uo
KQorUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBGZXRjaFJlc3BvbnNlOjpjcmVhdGVSZWFkYWJsZVN0
cmVhbShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgQVNTRVJUKCFtX3JlYWRhYmxlU3Ry
ZWFtU291cmNlKTsKLSAgICBBU1NFUlQoIW1faXNEaXN0dXJiZWQpOwotCi0gICAgaWYgKGlzQm9k
eU51bGwoKSB8fCAhbV9zaG91bGRFeHBvc2VCb2R5KQorICAgIGlmICghbV9zaG91bGRFeHBvc2VC
b2R5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fcmVhZGFibGVTdHJlYW1Tb3Vy
Y2UgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2VTb3VyY2UoKnRoaXMpKTsKLSAgICByZXR1
cm4gbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS5nZXQoKTsKKyAgICByZXR1cm4gRmV0Y2hCb2R5T3du
ZXI6OnJlYWRhYmxlU3RyZWFtKHN0YXRlKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAxYjdmMTZjZmEzNzg3ZjU1NDA2
ZDEzYjEwZmUyNzVkODYxMjNhMzcxLi5kYzlmMTFlZDg0NzYxMzI0YjcxOGIwY2VmMDI3Y2U0MDQx
ZGFmZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aApAQCAtODUsMTAgKzg1LDEwIEBAIHB1YmxpYzoKICAgICBSZWY8RmV0Y2hSZXNwb25zZT4gY2xv
bmVGb3JKUygpOwogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotICAgIFJlYWRhYmxlU3RyZWFt
U291cmNlKiBjcmVhdGVSZWFkYWJsZVN0cmVhbVNvdXJjZSgpOwotICAgIHZvaWQgY29uc3VtZUJv
ZHlBc1N0cmVhbSgpOwotICAgIHZvaWQgZmVlZFN0cmVhbSgpOwotICAgIHZvaWQgY2FuY2VsKCk7
CisgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBjcmVhdGVSZWFkYWJsZVN0cmVhbShKU0M6OkV4
ZWNTdGF0ZSYpOworICAgIHZvaWQgY29uc3VtZUJvZHlBc1N0cmVhbSgpIGZpbmFsOworICAgIHZv
aWQgZmVlZFN0cmVhbSgpIGZpbmFsOworICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAjZW5kaWYK
IAogICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxG
b3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCmluZGV4IGVhMTc4NDQ5MjQwOGU2NzRhMDVmYjRkZDE2
YzlmZGVjMzQ5YTI4MmIuLjk1MTA2MDIyMThkYzA3ZTVkZGI5MWE3NDVkYWY2MzU5NTk2NDE3MGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbApA
QCAtODMsNyArODMsNyBAQCBkaWN0aW9uYXJ5IEZldGNoUmVzcG9uc2VJbml0IHsKICAgICBbUHJp
dmF0ZUlkZW50aWZpZXJdIGJvb2xlYW4gaXNMb2FkaW5nKCk7CiAgICAgW01heVRocm93RXhjZXB0
aW9uLCBQcml2YXRlSWRlbnRpZmllcl0gdm9pZCBzZXRTdGF0dXModW5zaWduZWQgc2hvcnQgc3Rh
dHVzLCBET01TdHJpbmcgc3RhdHVzVGV4dCk7CiAgICAgW1ByaXZhdGVJZGVudGlmaWVyXSB2b2lk
IGluaXRpYWxpemVXaXRoKEJvZHlJbml0IGJvZHkpOwotICAgIFtOZXdPYmplY3QsIFByaXZhdGVJ
ZGVudGlmaWVyXSBSZWFkYWJsZVN0cmVhbVNvdXJjZSBjcmVhdGVSZWFkYWJsZVN0cmVhbVNvdXJj
ZSgpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTmV3T2JqZWN0LCBQcml2YXRlSWRlbnRp
Zmllcl0gUmVhZGFibGVTdHJlYW0/IGNyZWF0ZVJlYWRhYmxlU3RyZWFtKCk7CiAgICAgW1ByaXZh
dGVJZGVudGlmaWVyXSBib29sZWFuIGlzRGlzdHVyYmVkKCk7CiAgICAgW1ByaXZhdGVJZGVudGlm
aWVyXSB2b2lkIHNldEJvZHlBc1JlYWRhYmxlU3RyZWFtKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCmluZGV4IDIzNDFmMGUyOWY5MmIwZDFj
NTc3MmY3YmE1ZTJhNzNhNmNhYWQzNzkuLjc4ZmVhMGY1MDUxM2VhYjQ0ZjExNWZhMjYzZGQ1Zjc1
ZmM2M2NjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuanMKQEAgLTc3LDE1ICs3NywxMyBAQCBmdW5jdGlvbiBib2R5KCkKICAgICBpZiAoISh0aGlz
IGluc3RhbmNlb2YgQFJlc3BvbnNlKSkKICAgICAgICAgdGhyb3cgQG1ha2VHZXR0ZXJUeXBlRXJy
b3IoIlJlc3BvbnNlIiwgImJvZHkiKTsKIAotICAgIGlmICghdGhpcy5AYm9keSkgeworICAgIGlm
ICh0aGlzLkBib2R5ID09PSBAdW5kZWZpbmVkKSB7CiAgICAgICAgIGlmIChAUmVzcG9uc2UucHJv
dG90eXBlLkBpc0Rpc3R1cmJlZC5AY2FsbCh0aGlzKSkgewogICAgICAgICAgICAgdGhpcy5AYm9k
eSA9IG5ldyBAUmVhZGFibGVTdHJlYW0oKTsKICAgICAgICAgICAgIC8vIEdldCByZWFkZXIgdG8g
bG9jayBpdC4KICAgICAgICAgICAgIG5ldyBAUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHRo
aXMuQGJvZHkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIHNvdXJjZSA9IEBS
ZXNwb25zZS5wcm90b3R5cGUuQGNyZWF0ZVJlYWRhYmxlU3RyZWFtU291cmNlLkBjYWxsKHRoaXMp
OwotICAgICAgICAgICAgdGhpcy5AYm9keSA9IHNvdXJjZSA/IG5ldyBAUmVhZGFibGVTdHJlYW0o
c291cmNlKSA6IG51bGw7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0
aGlzLkBib2R5ID0gQFJlc3BvbnNlLnByb3RvdHlwZS5AY3JlYXRlUmVhZGFibGVTdHJlYW0uQGNh
bGwodGhpcyk7CiAgICAgfQogICAgIHJldHVybiB0aGlzLkBib2R5OwogfQpAQCAtMTAxLDExICs5
OSw4IEBAIGZ1bmN0aW9uIGNsb25lKCkKICAgICB2YXIgY2xvbmVkID0gQFJlc3BvbnNlLnByb3Rv
dHlwZS5AY2xvbmVGb3JKUy5AY2FsbCh0aGlzKTsKIAogICAgIC8vIExldCdzIGNyZWF0ZSBAYm9k
eSBpZiByZXNwb25zZSBib2R5IGlzIGxvYWRpbmcgdG8gcHJvdmlkZSBkYXRhIHRvIGJvdGggY2xv
bmVzLgotICAgIGlmIChAUmVzcG9uc2UucHJvdG90eXBlLkBpc0xvYWRpbmcuQGNhbGwodGhpcykg
JiYgIXRoaXMuQGJvZHkpIHsKLSAgICAgICAgdmFyIHNvdXJjZSA9IEBSZXNwb25zZS5wcm90b3R5
cGUuQGNyZWF0ZVJlYWRhYmxlU3RyZWFtU291cmNlLkBjYWxsKHRoaXMpOwotICAgICAgICBAYXNz
ZXJ0KCEhc291cmNlKTsKLSAgICAgICAgdGhpcy5AYm9keSA9IG5ldyBAUmVhZGFibGVTdHJlYW0o
c291cmNlKTsKLSAgICB9CisgICAgaWYgKEBSZXNwb25zZS5wcm90b3R5cGUuQGlzTG9hZGluZy5A
Y2FsbCh0aGlzKSAmJiB0aGlzLkBib2R5ID09PSBAdW5kZWZpbmVkKQorICAgICAgICB0aGlzLkBi
b2R5ID0gQFJlc3BvbnNlLnByb3RvdHlwZS5AY3JlYXRlUmVhZGFibGVTdHJlYW0uQGNhbGwodGhp
cyk7CiAKICAgICBpZiAodGhpcy5AYm9keSkgewogICAgICAgICB2YXIgdGVlZFJlYWRhYmxlU3Ry
ZWFtcyA9IEByZWFkYWJsZVN0cmVhbVRlZSh0aGlzLkBib2R5LCB0cnVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2VTb3VyY2UuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzUyZjJkNDJkYWI4NTc2M2M1MjdlMTQwNDVhZjhj
YTA0NWY5N2UzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZVNvdXJjZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IENh
bm9uIEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJl
ZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FO
T04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0g
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZldGNoUmVzcG9u
c2VTb3VyY2UuaCIKLQotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIkZldGNo
UmVzcG9uc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GZXRjaFJlc3BvbnNlU291cmNl
OjpGZXRjaFJlc3BvbnNlU291cmNlKEZldGNoUmVzcG9uc2UmIHJlc3BvbnNlKQotICAgIDogbV9y
ZXNwb25zZShyZXNwb25zZSkKLXsKLX0KLQotYm9vbCBGZXRjaFJlc3BvbnNlU291cmNlOjppc1Jl
YWRhYmxlU3RyZWFtTG9ja2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY29udHJvbGxlcigpLmlz
Q29udHJvbGxlZFJlYWRhYmxlU3RyZWFtTG9ja2VkKCk7Ci19Ci0KLXZvaWQgRmV0Y2hSZXNwb25z
ZVNvdXJjZTo6c2V0QWN0aXZlKCkKLXsKLSAgICBtX3Jlc3BvbnNlLnNldFBlbmRpbmdBY3Rpdml0
eSgmbV9yZXNwb25zZSk7Ci19Ci0KLXZvaWQgRmV0Y2hSZXNwb25zZVNvdXJjZTo6c2V0SW5hY3Rp
dmUoKQotewotICAgIG1fcmVzcG9uc2UudW5zZXRQZW5kaW5nQWN0aXZpdHkoJm1fcmVzcG9uc2Up
OwotfQotCi12b2lkIEZldGNoUmVzcG9uc2VTb3VyY2U6OmRvU3RhcnQoKQotewotICAgIG1fcmVz
cG9uc2UuY29uc3VtZUJvZHlBc1N0cmVhbSgpOwotfQotCi12b2lkIEZldGNoUmVzcG9uc2VTb3Vy
Y2U6OmRvUHVsbCgpCi17Ci0gICAgbV9yZXNwb25zZS5mZWVkU3RyZWFtKCk7Ci19Ci0KLXZvaWQg
RmV0Y2hSZXNwb25zZVNvdXJjZTo6ZG9DYW5jZWwoKQotewotICAgIG1faXNDYW5jZWxsaW5nID0g
dHJ1ZTsKLSAgICBtX3Jlc3BvbnNlLmNhbmNlbCgpOwotfQotCi12b2lkIEZldGNoUmVzcG9uc2VT
b3VyY2U6OmNsb3NlKCkKLXsKLSAgICBjb250cm9sbGVyKCkuY2xvc2UoKTsKLSAgICBjbGVhbigp
OwotfQotdm9pZCBGZXRjaFJlc3BvbnNlU291cmNlOjplcnJvcihjb25zdCBTdHJpbmcmIHZhbHVl
KQotewotICAgIGNvbnRyb2xsZXIoKS5lcnJvcih2YWx1ZSk7Ci0gICAgY2xlYW4oKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2VTb3VyY2Uu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIxMzE2YjY4OTZiN2RmOTMzZTU5MzYw
MjlmYmMxMDVjMmY4M2NlOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2VTb3VyY2Uu
aAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2Fub24gSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJl
cXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0g
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShTVFJFQU1TX0FQ
SSkKLQotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtU291cmNlLmgiCi0KLW5hbWVzcGFjZSBKU0Mg
ewotY2xhc3MgQXJyYXlCdWZmZXI7Ci19OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEZldGNoUmVzcG9uc2U7Ci0KLWNsYXNzIEZldGNoUmVzcG9uc2VTb3VyY2UgZmluYWwgOiBwdWJs
aWMgUmVhZGFibGVTdHJlYW1Tb3VyY2UgewotcHVibGljOgotICAgIEZldGNoUmVzcG9uc2VTb3Vy
Y2UoRmV0Y2hSZXNwb25zZSYpOwotCi0gICAgYm9vbCBlbnF1ZXVlKFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyPiYmIGNodW5rKSB7IHJldHVybiBjb250cm9sbGVyKCkuZW5xdWV1ZShXVEZNb3ZlKGNo
dW5rKSk7IH0KLSAgICB2b2lkIGNsb3NlKCk7Ci0gICAgdm9pZCBlcnJvcihjb25zdCBTdHJpbmcm
KTsKLQotICAgIGJvb2wgaXNDYW5jZWxsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0NhbmNlbGxp
bmc7IH0KLSAgICBib29sIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoKSBjb25zdDsKLQotICAgIHZv
aWQgcmVzb2x2ZVB1bGxQcm9taXNlKCkgeyBwdWxsRmluaXNoZWQoKTsgfQotCi1wcml2YXRlOgot
ICAgIHZvaWQgZG9TdGFydCgpIGZpbmFsOwotICAgIHZvaWQgZG9QdWxsKCkgZmluYWw7Ci0gICAg
dm9pZCBkb0NhbmNlbCgpIGZpbmFsOwotICAgIHZvaWQgc2V0QWN0aXZlKCkgZmluYWw7Ci0gICAg
dm9pZCBzZXRJbmFjdGl2ZSgpIGZpbmFsOwotCi0gICAgRmV0Y2hSZXNwb25zZSYgbV9yZXNwb25z
ZTsKLSAgICBib29sIG1faXNDYW5jZWxsaW5nIHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZTMwNDU4
Y2JiMTNjNzlkMzdkNTE3MGZhMjM1YTE5NDY1ODUxYjA1Li5iMTk4ZThmMjQ0NmQ1NzI1NzZjMWJj
MTU4ZjVmYmRjMWI0NjYwZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjc2LDcgKzE2NzYsNyBAQAogCQk0MTI5REY4NTFC
QjVCODA3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOURGODMx
QkI1QjdGNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNw
cCAqLzsgfTsKIAkJNDEyOURGODYxQkI1QjgwQzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Q
cml2YXRlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTI5REY4NDFCQjVCN0Y3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVBy
aXZhdGVDb25zdHJ1Y3RvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MTMwMTVEOTFDN0I1NzE0MDAwOTFDNkUgLyogRmV0Y2hSZXNwb25zZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwMTVE
NTFDN0I1NzA0MDAwOTFDNkUgLyogRmV0Y2hSZXNwb25zZS5jcHAgKi87IH07Ci0JCTQxMzAxNUQ5
MUM3QjU3MTQwMDA5MUM2RiAvKiBGZXRjaFJlc3BvbnNlU291cmNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzAxNUQ1MUM3QjU3MDQwMDA5MUM2
RiAvKiBGZXRjaFJlc3BvbnNlU291cmNlLmNwcCAqLzsgfTsKKwkJNDEzMDE1RDkxQzdCNTcxNDAw
MDkxQzZGIC8qIEZldGNoQm9keVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwMTVENTFDN0I1NzA0MDAwOTFDNkYgLyogRmV0Y2hCb2R5
U291cmNlLmNwcCAqLzsgfTsKIAkJNDEzODBDMjYxRjM0MzZBNjAwMTU1RkRBIC8qIENhY2hlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzgwQzIw
MUYzNDM2OEEwMDE1NUZEQSAvKiBDYWNoZS5jcHAgKi87IH07CiAJCTQxMzgwQzI3MUYzNDM2QUMw
MDE1NUZEQSAvKiBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEzODBDMjUxRjM0MzY5QTAwMTU1RkRBIC8qIENhY2hlLmggKi87IH07CiAJCTQx
MzgwQzI4MUYzNDM2QUMwMDE1NUZEQSAvKiBDYWNoZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzODBDMjExRjM0MzY4RDAwMTU1RkRB
IC8qIENhY2hlU3RvcmFnZS5jcHAgKi87IH07CkBAIC05MzgyLDkgKzkzODIsOSBAQAogCQk0MTI5
REY4MzFCQjVCN0Y3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3Rv
cnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTI5REY4NDFCQjVCN0Y3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25z
dHJ1Y3RvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEzMDE1RDUxQzdCNTcwNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9uc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQxMzAxNUQ1MUM3QjU3MDQwMDA5MUM2RiAvKiBGZXRjaFJlc3Bv
bnNlU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNo
UmVzcG9uc2VTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTMwMTVE
NTFDN0I1NzA0MDAwOTFDNkYgLyogRmV0Y2hCb2R5U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNoQm9keVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMzAxNUQ2MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoUmVzcG9uc2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEzMDE1RDYxQzdCNTcwNDAwMDkxQzZGIC8qIEZl
dGNoUmVzcG9uc2VTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0
Y2hSZXNwb25zZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTMwMTVE
NjFDN0I1NzA0MDAwOTFDNkYgLyogRmV0Y2hCb2R5U291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZldGNoQm9keVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTMwMTVENzFDN0I1NzA0MDAwOTFDNkUgLyogRmV0Y2hSZXNwb25zZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmV0Y2hSZXNwb25zZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxMzAxNUQ4MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gRmV0Y2hSZXNwb25zZS5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzODBDMjAxRjM0MzY4QTAwMTU1RkRB
IC8qIENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENhY2hlLmNwcDsgcGF0aCA9IE1vZHVs
ZXMvY2FjaGUvQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CkBAIC0xODAz
MSw2ICsxODAzMSw4IEBACiAJCQkJNDFDRjhCRTUxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9k
eUNvbnN1bWVyLmggKi8sCiAJCQkJNDE0N0UyQjMxQzg5OTEyNjAwQTdFNzE1IC8qIEZldGNoQm9k
eU93bmVyLmNwcCAqLywKIAkJCQk0MTQ3RTJCMjFDODgzMzdGMDBBN0U3MTUgLyogRmV0Y2hCb2R5
T3duZXIuaCAqLywKKwkJCQk0MTMwMTVENTFDN0I1NzA0MDAwOTFDNkYgLyogRmV0Y2hCb2R5U291
cmNlLmNwcCAqLywKKwkJCQk0MTMwMTVENjFDN0I1NzA0MDAwOTFDNkYgLyogRmV0Y2hCb2R5U291
cmNlLmggKi8sCiAJCQkJNDFGNTRGODIxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5j
cHAgKi8sCiAJCQkJNDFGNTRGODMxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5oICov
LAogCQkJCTQxRjU0Rjg0MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuaWRsICovLApA
QCAtMTgwNTcsOCArMTgwNTksNiBAQAogCQkJCTQxMzAxNUQ2MUM3QjU3MDQwMDA5MUM2RSAvKiBG
ZXRjaFJlc3BvbnNlLmggKi8sCiAJCQkJNDEzMDE1RDcxQzdCNTcwNDAwMDkxQzZFIC8qIEZldGNo
UmVzcG9uc2UuaWRsICovLAogCQkJCTQxMzAxNUQ4MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJl
c3BvbnNlLmpzICovLAotCQkJCTQxMzAxNUQ1MUM3QjU3MDQwMDA5MUM2RiAvKiBGZXRjaFJlc3Bv
bnNlU291cmNlLmNwcCAqLywKLQkJCQk0MTMwMTVENjFDN0I1NzA0MDAwOTFDNkYgLyogRmV0Y2hS
ZXNwb25zZVNvdXJjZS5oICovLAogCQkJCTQxOEMzOTU3MUM4REQ2OTYwMDUxQzhBMyAvKiBXb3Jr
ZXJHbG9iYWxTY29wZUZldGNoLmNwcCAqLywKIAkJCQk0MThDMzk1ODFDOERENjk2MDA1MUM4QTMg
LyogV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5oICovLAogCQkJCTQxOEMzOTU5MUM4REQ2OTYwMDUx
QzhBMyAvKiBXb3JrZXJHbG9iYWxTY29wZUZldGNoLmlkbCAqLywKQEAgLTMxNTkwLDExICszMTU5
MCwxMSBAQAogCQkJCTQxRjU0RjhCMUM1MEM1MDMwMDMzODQ4OCAvKiBGZXRjaEJvZHkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDFDRjhCRTcxRDQ2MjI2NzAwNzA3REM5IC8qIEZldGNoQm9keUNv
bnN1bWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNDdFMkI4MUM4OTkxMkYwMEE3RTcxNSAv
KiBGZXRjaEJvZHlPd25lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTMwMTVEOTFDN0I1NzE0
MDAwOTFDNkYgLyogRmV0Y2hCb2R5U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRjU0
RjhEMUM1MEM1MDgwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE0N0UyQjcxQzg5OTEyQzAwQTdFNzE1IC8qIEZldGNoTG9hZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxRjU0RjhFMUM1MEM1MEMwMDMzODQ4OCAvKiBGZXRjaFJlcXVlc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDEzMDE1RDkxQzdCNTcxNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9u
c2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzMDE1RDkxQzdCNTcxNDAwMDkxQzZGIC8qIEZl
dGNoUmVzcG9uc2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3MzBEOEExMjQ4RjBC
MzAwRDNBOUM5IC8qIEZFVGlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDczMEQ4QzEyNDhG
MEIzMDBEM0E5QzkgLyogRkVUdXJidWxlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2
MDk0MTJCMDI2RjcwMEMxQTM1OSAvKiBGRlRDb252b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMTgzNyw3ICszMTgzNyw2IEBACiAJCQkJQTg3MURFMjUwQTE1MkFDODAwQjEyQTY4IC8qIEhU
TUxIZWFkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBN0NBRTBBMTkyQjlDMDBB
OEVGNUYgLyogSFRNTEhlYWRpbmdFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RUE3
Q0IzMEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MSFJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUU0MUZBOUI5MUY1NzU4RkYwMDMzODU4QSAvKiBSZW5kZXJUcmVlVXBkYXRlck11bHRpQ29s
dW1uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFERTI2MEExNTJBQzgwMEIxMkE2OCAvKiBI
VE1MSHRtbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURFMjQwQTE1MkFDODAw
QjEyQTY4IC8qIEhUTUxJRnJhbWVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RUE3
RDMxMEExOTM4NTUwMEE4RUY1RiAvKiBIVE1MSW1hZ2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzM0NDQsNiArMzM0NDMsNyBAQAogCQkJCUU0ODI4NDA4MUY0NDU5NEMwMDg2M0FDMyAv
KiBSZW5kZXJUcmVlVXBkYXRlckZpcnN0TGV0dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0
OEUzMzMxMUY0NzQzNzAwMEJBQjBFRiAvKiBSZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ4RTMzMkQxRjQ3MDM4MDAwQkFCMEVGIC8qIFJl
bmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTQxRkE5Qjkx
RjU3NThGRjAwMzM4NThBIC8qIFJlbmRlclRyZWVVcGRhdGVyTXVsdGlDb2x1bW4uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTQ0NjE0NTEwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODY3MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJW
aWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFMjA1MDdEMThBNDU4QkYwMDgwNjQ3RSAvKiBS
ZW5kZXJWVFRDdWUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggZGY0MTQxZTkwYjA5NTE3MDFkNGI4OTc5ZWIw
MDRkZWNiMjM1ZjU0Ny4uNzIyNzQwZjdmYTRhYjAyMWQ5ZGYxMTMxMzIyNWViZTcwMzZkNDNlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlYWRhYmxlU3Ry
ZWFtLmgiCiAKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKICNpbmNsdWRlICJK
U1JlYWRhYmxlU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgogCkBAIC01Myw0ICs1NCwyNyBAQCBSZWY8UmVhZGFibGVTdHJlYW0+IFJlYWRhYmxlU3RyZWFt
OjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPFJlYQogICAgIHJldHVy
biBjcmVhdGUoZ2xvYmFsT2JqZWN0LCAqbmV3UmVhZGFibGVTdHJlYW0pOwogfQogCitzdGQ6OnBh
aXI8UmVmPFJlYWRhYmxlU3RyZWFtPiwgUmVmPFJlYWRhYmxlU3RyZWFtPj4gUmVhZGFibGVTdHJl
YW06OnRlZSgpCit7CisgICAgYXV0byYgc3RhdGUgPSAqbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKTsKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4oc3RhdGUudm0oKS5jbGllbnREYXRhKTsKKyAgICBjb25zdCBJZGVudGlmaWVy
JiBwcml2YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5yZWFkYWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zKCkucmVhZGFibGVTdHJlYW1UZWVQcml2YXRlTmFtZSgpOwor
CisgICAgYXV0byByZWFkYWJsZVN0cmVhbVRlZSA9IG1fZ2xvYmFsT2JqZWN0LT5nZXQoJnN0YXRl
LCBwcml2YXRlTmFtZSk7CisgICAgQVNTRVJUKHJlYWRhYmxlU3RyZWFtVGVlLmlzRnVuY3Rpb24o
KSk7CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdl
dENhbGxEYXRhKHJlYWRhYmxlU3RyZWFtVGVlLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxU
eXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHJlYWRhYmxlU3RyZWFtKCkpOworICAgIGFy
Z3VtZW50cy5hcHBlbmQoSlNDOjpqc0Jvb2xlYW4odHJ1ZSkpOworICAgIEpTVmFsdWUgcmV0dXJu
ZWRWYWx1ZSA9IEpTQzo6Y2FsbCgmc3RhdGUsIHJlYWRhYmxlU3RyZWFtVGVlLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIEpTQzo6anNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKKworICAgIGF1dG8gcmVz
dWx0cyA9IERldGFpbDo6U2VxdWVuY2VDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFJlYWRhYmxlU3Ry
ZWFtPj46OmNvbnZlcnQoc3RhdGUsIHJldHVybmVkVmFsdWUpOworCisgICAgQVNTRVJUKHJlc3Vs
dHMuc2l6ZSgpID09IDIpOworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihyZXN1bHRzWzBdLnJl
bGVhc2VOb25OdWxsKCksIHJlc3VsdHNbMV0ucmVsZWFzZU5vbk51bGwoKSk7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5oCmluZGV4IGIxYzMyNzlh
YWM1ZWRkNzIxYjM2NDFhNzIzMjQ0ZGU2YWUzZmFiMDAuLmEwYzI2YTQzNTc2OGIyZDEwYWY0MTA2
ZTYxN2Y1N2NiMzBhMzBjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1JlYWRhYmxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFi
bGVTdHJlYW0uaApAQCAtNDAsNiArNDAsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFJl
YWRhYmxlU3RyZWFtPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBSZWZQdHI8UmVhZGFibGVTdHJl
YW1Tb3VyY2U+JiYpOwogCisgICAgc3RkOjpwYWlyPFJlZjxSZWFkYWJsZVN0cmVhbT4sIFJlZjxS
ZWFkYWJsZVN0cmVhbT4+IHRlZSgpOworCiAgICAgSlNSZWFkYWJsZVN0cmVhbSogcmVhZGFibGVT
dHJlYW0oKSB7IHJldHVybiBndWFyZGVkKCk7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDA5ZmU4MWJh
NDdjYTUzYzg3NzVjYjY2MjdhNzZkM2IzZTI2Mjc5ZWIuLmQ3MmQxNjZiMTZmYzZiM2M2YzYxNWI3
MzVjOTVmZGQ0M2Q4OTZhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIG1hY3JvKGNvbnN1bWVDaHVuaykgXAogICAgIG1hY3JvKGNvbnRyb2xsZWRSZWFkYWJs
ZVN0cmVhbSkgXAogICAgIG1hY3JvKGNvbnRyb2xsZXIpIFwKLSAgICBtYWNybyhjcmVhdGVSZWFk
YWJsZVN0cmVhbVNvdXJjZSkgXAorICAgIG1hY3JvKGNyZWF0ZVJlYWRhYmxlU3RyZWFtKSBcCiAg
ICAgbWFjcm8oZGlzdHVyYmVkKSBcCiAgICAgbWFjcm8oZmFpbHVyZUtpbmQpIFwKICAgICBtYWNy
byhmZXRjaFJlcXVlc3QpIFwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NTRhODAwYzFmN2UxOTA3YTI2YjQwZTY4ZTk1ZjQy
ODNiYTYxN2NhLi43MGNiN2VkM2VkZWE2YzhmYmJkYTk1ZDRmZmRkNDc0YmZkOTYzNWJiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMTctMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSZXF1ZXN0IGJvZHkgc3RyZWFtIGNs
b25pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NjE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAg
KiBodHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNsb25lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jbG9uZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFtLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9mZXRjaC9yZXF1ZXN0LXN0cmVhbS1kaXN0dXJi
ZWQtMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2ZldGNoL3JlcXVl
c3Qtc3RyZWFtLWRpc3R1cmJlZC0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2Zl
dGNoL3JlcXVlc3Qtc3RyZWFtLWRpc3R1cmJlZC0yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9mZXRjaC9yZXF1ZXN0LXN0
cmVhbS1kaXN0dXJiZWQtMy5odG1sOiBBZGRlZC4KKwogMjAxNy0wOC0zMSAgQ2FybG9zIEFsYmVy
dG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVd
IE1hcmsgdGVzdCBtZWRpYS9ldmVudC1xdWV1ZS1jcmFzaCBhcyBmbGFreQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jbG9uZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNsb25lLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZmRlYjMwZWUwNDE4Zjk2YTg4Mjg0NzAwMjc1M2ZhNmZiNTAzNTU3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jbG9uZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorCitQQVNTIENoZWNrIG9yZ2luYWwgcmVxdWVzdCdz
IGJvZHkgYWZ0ZXIgY2xvbmluZyAKK1BBU1MgQ2hlY2sgY2xvbmVkIHJlcXVlc3QncyBib2R5IAor
UEFTUyBDaGVjayByZXF1ZXN0IGNsb25lIHVzZSBzdHJ1Y3R1cmVDbG9uZSBmb3IgdGVlZCBSZWFk
YWJsZVN0cmVhbXMgKEludDhBcnJheWNodW5rKSAKK1BBU1MgQ2hlY2sgcmVxdWVzdCBjbG9uZSB1
c2Ugc3RydWN0dXJlQ2xvbmUgZm9yIHRlZWQgUmVhZGFibGVTdHJlYW1zIChJbnQxNkFycmF5Y2h1
bmspIAorUEFTUyBDaGVjayByZXF1ZXN0IGNsb25lIHVzZSBzdHJ1Y3R1cmVDbG9uZSBmb3IgdGVl
ZCBSZWFkYWJsZVN0cmVhbXMgKEludDMyQXJyYXljaHVuaykgCitQQVNTIENoZWNrIHJlcXVlc3Qg
Y2xvbmUgdXNlIHN0cnVjdHVyZUNsb25lIGZvciB0ZWVkIFJlYWRhYmxlU3RyZWFtcyAoQXJyYXlC
dWZmZXJjaHVuaykgCitQQVNTIENoZWNrIHJlcXVlc3QgY2xvbmUgdXNlIHN0cnVjdHVyZUNsb25l
IGZvciB0ZWVkIFJlYWRhYmxlU3RyZWFtcyAoVWludDhBcnJheWNodW5rKSAKK1BBU1MgQ2hlY2sg
cmVxdWVzdCBjbG9uZSB1c2Ugc3RydWN0dXJlQ2xvbmUgZm9yIHRlZWQgUmVhZGFibGVTdHJlYW1z
IChVaW50OENsYW1wZWRBcnJheWNodW5rKSAKK1BBU1MgQ2hlY2sgcmVxdWVzdCBjbG9uZSB1c2Ug
c3RydWN0dXJlQ2xvbmUgZm9yIHRlZWQgUmVhZGFibGVTdHJlYW1zIChVaW50MTZBcnJheWNodW5r
KSAKK1BBU1MgQ2hlY2sgcmVxdWVzdCBjbG9uZSB1c2Ugc3RydWN0dXJlQ2xvbmUgZm9yIHRlZWQg
UmVhZGFibGVTdHJlYW1zIChVaW50MzJBcnJheWNodW5rKSAKK1BBU1MgQ2hlY2sgcmVxdWVzdCBj
bG9uZSB1c2Ugc3RydWN0dXJlQ2xvbmUgZm9yIHRlZWQgUmVhZGFibGVTdHJlYW1zIChGbG9hdDMy
QXJyYXljaHVuaykgCitQQVNTIENoZWNrIHJlcXVlc3QgY2xvbmUgdXNlIHN0cnVjdHVyZUNsb25l
IGZvciB0ZWVkIFJlYWRhYmxlU3RyZWFtcyAoRmxvYXQ2NEFycmF5Y2h1bmspIAorUEFTUyBDaGVj
ayByZXF1ZXN0IGNsb25lIHVzZSBzdHJ1Y3R1cmVDbG9uZSBmb3IgdGVlZCBSZWFkYWJsZVN0cmVh
bXMgKERhdGFWaWV3Y2h1bmspIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9m
ZXRjaC9yZXF1ZXN0LWNsb25lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1
ZXN0LWNsb25lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIzODAwOTZmNDAyOTY5YzA2NzYwYWMzNTgxZGJm
Zjc5OTg1ZGUzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNo
L3JlcXVlc3QtY2xvbmUuaHRtbApAQCAtMCwwICsxLDcwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlJl
cXVlc3QgY2xvbmU8L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9ImhlbHAiIGhyZWY9Imh0dHBzOi8v
ZmV0Y2guc3BlYy53aGF0d2cub3JnLyNyZXF1ZXN0Ij4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5Pgor
ICAgIDxzY3JpcHQgc3JjPSIvZmV0Y2gvYXBpL3Jlc291cmNlcy91dGlscy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdD4KK3ZhciBib2R5ID0gIlRoaXMgaXMgcmVxdWVzdCBib2R5IjsKK3ZhciBo
ZWFkZXJzSW5pdCA9IHsgIm5hbWUiIDogInZhbHVlIiB9OwordmFyIHJlcXVlc3RJbml0ICA9IHsg
ImJvZHkiIDogYm9keSwKKyAgICAgICAgICAgICAgICAgICAgICJtZXRob2QiIDogIlBPU1QiLAor
ICAgICAgICAgICAgICAgICAgICAgImhlYWRlcnMiIDogaGVhZGVyc0luaXQKK307Cit2YXIgcmVx
dWVzdCA9IG5ldyBSZXF1ZXN0KCIiLCByZXF1ZXN0SW5pdCk7Cit2YXIgY2xvbmVkUmVxdWVzdCA9
IHJlcXVlc3QuY2xvbmUoKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICBy
ZXR1cm4gdmFsaWRhdGVTdHJlYW1Gcm9tU3RyaW5nKHJlcXVlc3QuYm9keS5nZXRSZWFkZXIoKSwg
Ym9keSk7Cit9LCAiQ2hlY2sgb3JnaW5hbCByZXF1ZXN0J3MgYm9keSBhZnRlciBjbG9uaW5nIik7
CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgcmV0dXJuIHZhbGlkYXRlU3Ry
ZWFtRnJvbVN0cmluZyhjbG9uZWRSZXF1ZXN0LmJvZHkuZ2V0UmVhZGVyKCksIGJvZHkpOworfSwg
IkNoZWNrIGNsb25lZCByZXF1ZXN0J3MgYm9keSIpOworCitmdW5jdGlvbiB0ZXN0UmVhZGFibGVT
dHJlYW1DbG9uZShpbml0aWFsQnVmZmVyLCBidWZmZXJUeXBlKQoreworICAgIHByb21pc2VfdGVz
dChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoIiIs
IHsibWV0aG9kIiA6ICJQT1NUIiwgImJvZHkiIDogbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydCA6
IGZ1bmN0aW9uKGNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShp
bml0aWFsQnVmZmVyKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICAgICAg
fX0pfSk7CisKKyAgICAgICAgdmFyIGNsb25lID0gcmVxdWVzdC5jbG9uZSgpOworICAgICAgICB2
YXIgc3RyZWFtMSA9IHJlcXVlc3QuYm9keTsKKyAgICAgICAgdmFyIHN0cmVhbTIgPSBjbG9uZS5i
b2R5OworCisgICAgICAgIHZhciBidWZmZXI7CisgICAgICAgIHJldHVybiBzdHJlYW0xLmdldFJl
YWRlcigpLnJlYWQoKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgIGFzc2VydF9m
YWxzZShkYXRhLmRvbmUpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGF0YS52YWx1ZSA9PT0g
aW5pdGlhbEJ1ZmZlciwgIkJ1ZmZlciBvZiBiZWluZy1jbG9uZWQgcmVzcG9uc2Ugc3RyZWFtIGlz
IHRoZSBzYW1lIGFzIHRoZSBvcmlnaW5hbCBidWZmZXIiKTsKKyAgICAgICAgICAgIHJldHVybiBz
dHJlYW0yLmdldFJlYWRlcigpLnJlYWQoKTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbihkYXRh
KSB7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGF0YS5kb25lKTsKKyAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoZGF0YS52YWx1ZSwgaW5pdGlhbEJ1ZmZlciwgIkNsb25lZCBidWZm
ZXIgY2h1bmtzIGhhdmUgdGhlIHNhbWUgY29udGVudCIpOworICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoZGF0YS52YWx1ZSksIE9iamVjdC5nZXRQcm90b3R5
cGVPZihpbml0aWFsQnVmZmVyKSwgIkNsb25lZCBidWZmZXJzIGhhdmUgdGhlIHNhbWUgdHlwZSIp
OworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGF0YS52YWx1ZSAhPT0gaW5pdGlhbEJ1ZmZlciwg
IkJ1ZmZlciBvZiBjbG9uZWQgcmVzcG9uc2Ugc3RyZWFtIGlzIGEgY2xvbmUgb2YgdGhlIG9yaWdp
bmFsIGJ1ZmZlciIpOworICAgICAgICB9KTsKKyAgICB9LCAiQ2hlY2sgcmVxdWVzdCBjbG9uZSB1
c2Ugc3RydWN0dXJlQ2xvbmUgZm9yIHRlZWQgUmVhZGFibGVTdHJlYW1zICgiICsgYnVmZmVyVHlw
ZSAgKyAiY2h1bmspIik7Cit9CisKK3ZhciBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigx
Nik7Cit0ZXN0UmVhZGFibGVTdHJlYW1DbG9uZShuZXcgSW50OEFycmF5KGFycmF5QnVmZmVyLCAx
KSwgIkludDhBcnJheSIpOwordGVzdFJlYWRhYmxlU3RyZWFtQ2xvbmUobmV3IEludDE2QXJyYXko
YXJyYXlCdWZmZXIsIDIsIDIpLCAiSW50MTZBcnJheSIpOwordGVzdFJlYWRhYmxlU3RyZWFtQ2xv
bmUobmV3IEludDMyQXJyYXkoYXJyYXlCdWZmZXIpLCAiSW50MzJBcnJheSIpOwordGVzdFJlYWRh
YmxlU3RyZWFtQ2xvbmUoYXJyYXlCdWZmZXIsICJBcnJheUJ1ZmZlciIpOwordGVzdFJlYWRhYmxl
U3RyZWFtQ2xvbmUobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpLCAiVWludDhBcnJheSIpOwor
dGVzdFJlYWRhYmxlU3RyZWFtQ2xvbmUobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGFycmF5QnVmZmVy
KSwgIlVpbnQ4Q2xhbXBlZEFycmF5Iik7Cit0ZXN0UmVhZGFibGVTdHJlYW1DbG9uZShuZXcgVWlu
dDE2QXJyYXkoYXJyYXlCdWZmZXIsIDIpLCAiVWludDE2QXJyYXkiKTsKK3Rlc3RSZWFkYWJsZVN0
cmVhbUNsb25lKG5ldyBVaW50MzJBcnJheShhcnJheUJ1ZmZlciksICJVaW50MzJBcnJheSIpOwor
dGVzdFJlYWRhYmxlU3RyZWFtQ2xvbmUobmV3IEZsb2F0MzJBcnJheShhcnJheUJ1ZmZlciksICJG
bG9hdDMyQXJyYXkiKTsKK3Rlc3RSZWFkYWJsZVN0cmVhbUNsb25lKG5ldyBGbG9hdDY0QXJyYXko
YXJyYXlCdWZmZXIpLCAiRmxvYXQ2NEFycmF5Iik7Cit0ZXN0UmVhZGFibGVTdHJlYW1DbG9uZShu
ZXcgRGF0YVZpZXcoYXJyYXlCdWZmZXIsIDIsIDgpLCAiRGF0YVZpZXciKTsKKyAgICA8L3Njcmlw
dD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
ZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFtLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42Y2MwNjQ4NmRkMDI5MGE0M2IzOWY1OTMxZWM3NTg3MjcyNzJkOTA4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVh
bS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK0ZBSUwgUmVhZCBlbXB0eSB0ZXh0IHJl
cXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIGFzc2VydF9hcnJheV9lcXVhbHM6IFJldHJp
ZXZlIGFuZCB2ZXJpZnkgc3RyZWFtIGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAwIGdvdCAxNgor
RkFJTCBSZWFkIGVtcHR5IGJsb2IgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gYXNz
ZXJ0X2FycmF5X2VxdWFsczogUmV0cmlldmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3RocyBkaWZm
ZXIsIGV4cGVjdGVkIDAgZ290IDE2CitGQUlMIFJlYWQgYmxvYiByZXF1ZXN0J3MgYm9keSBhcyBy
ZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0
cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgMjQgZ290IDE2CitGQUlMIFJlYWQgdGV4dCBy
ZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZXRy
aWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgMjQgZ290IDE2
CitGQUlMIFJlYWQgVVJMU2VhcmNoUGFyYW1zIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3Ry
ZWFtIGFzc2VydF9hcnJheV9lcXVhbHM6IFJldHJpZXZlIGFuZCB2ZXJpZnkgc3RyZWFtIGxlbmd0
aHMgZGlmZmVyLCBleHBlY3RlZCAxMCBnb3QgMTYKK0ZBSUwgUmVhZCBhcnJheSBidWZmZXIgcmVx
dWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0X2FycmF5X2VxdWFsczogUmV0cmll
dmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIDI0IGdvdCAxNgor
RkFJTCBSZWFkIGZvcm0gZGF0YSByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZl
ciwgZXhwZWN0ZWQgMTAgZ290IDE2CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNThhNDcyMDA0
M2NiOTQxMTcxYjczNjFlMDllYjhmMTQ5ZTJiYWI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS5odG1sCkBAIC0wLDAg
KzEsNjcgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+UmVxdWVzdCBjb25zdW1lPC90aXRsZT4KKyAgICA8
bWV0YSBuYW1lPSJoZWxwIiBocmVmPSJodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jcmVx
dWVzdCI+CisgICAgPG1ldGEgbmFtZT0iaGVscCIgaHJlZj0iaHR0cHM6Ly9mZXRjaC5zcGVjLndo
YXR3Zy5vcmcvI2JvZHktbWl4aW4iPgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9mZXRjaC9hcGkvcmVz
b3VyY2VzL3V0aWxzLmpzIj48L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8c2Ny
aXB0PgorZnVuY3Rpb24gY3JlYXRlUmVxdWVzdFdpdGhCb2R5KGJvZHkpCit7CisgICAgcmV0dXJu
IG5ldyBSZXF1ZXN0KCIiLCB7Ym9keTogIntcImtleVwiOiBcInZhbHVlXCJ9IiwgbWV0aG9kOiAi
UE9TVCJ9KTsKK30KKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICB2YXIgYm9k
eSA9ICIiOworICAgIHZhciByZXF1ZXN0ID0gY3JlYXRlUmVxdWVzdFdpdGhCb2R5KCIiKTsKKyAg
ICByZXR1cm4gdmFsaWRhdGVTdHJlYW1Gcm9tU3RyaW5nKHJlcXVlc3QuYm9keS5nZXRSZWFkZXIo
KSwgIiIpOworfSwgIlJlYWQgZW1wdHkgdGV4dCByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0
cmVhbSIpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgIHZhciByZXF1ZXN0
ID0gY3JlYXRlUmVxdWVzdFdpdGhCb2R5KG5ldyBCbG9iKFtdLCB7ICJ0eXBlIiA6ICJ0ZXh0L3Bs
YWluIiB9KSk7CisgICAgcmV0dXJuIHZhbGlkYXRlU3RyZWFtRnJvbVN0cmluZyhyZXF1ZXN0LmJv
ZHkuZ2V0UmVhZGVyKCksICIiKTsKK30sICJSZWFkIGVtcHR5IGJsb2IgcmVxdWVzdCdzIGJvZHkg
YXMgcmVhZGFibGVTdHJlYW0iKTsKKwordmFyIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7Citm
b3JtRGF0YS5hcHBlbmQoIm5hbWUiLCAidmFsdWUiKTsKK3ZhciB0ZXh0RGF0YSA9IEpTT04uc3Ry
aW5naWZ5KCJUaGlzIGlzIHJlcXVlc3QncyBib2R5Iik7Cit2YXIgYmxvYiA9IG5ldyBCbG9iKFt0
ZXh0RGF0YV0sIHsgInR5cGUiIDogInRleHQvcGxhaW4iIH0pOwordmFyIHVybFNlYXJjaFBhcmFt
c0RhdGEgPSAibmFtZT12YWx1ZSI7Cit2YXIgdXJsU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJj
aFBhcmFtcyh1cmxTZWFyY2hQYXJhbXNEYXRhKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRl
c3QpIHsKKyAgICB2YXIgcmVxdWVzdCA9IGNyZWF0ZVJlcXVlc3RXaXRoQm9keShibG9iKTsKKyAg
ICByZXR1cm4gdmFsaWRhdGVTdHJlYW1Gcm9tU3RyaW5nKHJlcXVlc3QuYm9keS5nZXRSZWFkZXIo
KSwgdGV4dERhdGEpOworfSwgIlJlYWQgYmxvYiByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0
cmVhbSIpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgIHZhciByZXF1ZXN0
ID0gY3JlYXRlUmVxdWVzdFdpdGhCb2R5KHRleHREYXRhKTsKKyAgICByZXR1cm4gdmFsaWRhdGVT
dHJlYW1Gcm9tU3RyaW5nKHJlcXVlc3QuYm9keS5nZXRSZWFkZXIoKSwgdGV4dERhdGEpOworfSwg
IlJlYWQgdGV4dCByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSIpOworCitwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgIHZhciByZXF1ZXN0ID0gY3JlYXRlUmVxdWVzdFdp
dGhCb2R5KHVybFNlYXJjaFBhcmFtcyk7CisgICAgcmV0dXJuIHZhbGlkYXRlU3RyZWFtRnJvbVN0
cmluZyhyZXF1ZXN0LmJvZHkuZ2V0UmVhZGVyKCksIHVybFNlYXJjaFBhcmFtc0RhdGEpOworfSwg
IlJlYWQgVVJMU2VhcmNoUGFyYW1zIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIik7
CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgdmFyIGFycmF5QnVmZmVyID0g
bmV3IEFycmF5QnVmZmVyKHRleHREYXRhLmxlbmd0aCk7CisgICAgdmFyIGludDhBcnJheSA9IG5l
dyBJbnQ4QXJyYXkoYXJyYXlCdWZmZXIpOworICAgIGZvciAodmFyIGNwdHIgPSAwOyBjcHRyIDwg
dGV4dERhdGEubGVuZ3RoOyBjcHRyKyspCisgICAgICAgIGludDhBcnJheVtjcHRyXSA9IHRleHRE
YXRhLmNoYXJDb2RlQXQoY3B0cik7CisKKyAgICByZXR1cm4gdmFsaWRhdGVTdHJlYW1Gcm9tU3Ry
aW5nKGNyZWF0ZVJlcXVlc3RXaXRoQm9keShhcnJheUJ1ZmZlcikuYm9keS5nZXRSZWFkZXIoKSwg
dGV4dERhdGEpOworfSwgIlJlYWQgYXJyYXkgYnVmZmVyIHJlcXVlc3QncyBib2R5IGFzIHJlYWRh
YmxlU3RyZWFtIik7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgdmFyIHJl
cXVlc3QgPSBjcmVhdGVSZXF1ZXN0V2l0aEJvZHkoZm9ybURhdGEpOworICAgIHJldHVybiB2YWxp
ZGF0ZVN0cmVhbUZyb21TdHJpbmcocmVxdWVzdC5ib2R5LmdldFJlYWRlcigpLCAibmFtZT12YWx1
ZSIpOworfSwgIlJlYWQgZm9ybSBkYXRhIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFt
Iik7CisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3Qtc3RyZWFtLWRpc3R1cmJlZC0xLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3Qtc3RyZWFtLWRpc3R1cmJl
ZC0xLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODU0NmJlYTFkNzgwYWIyMjQzMWFjYzhiZjJl
OGUzNzJmMmIyMzZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0
Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBA
QAorCitQQVNTIEdldHRpbmcgYmxvYiBhZnRlciBnZXR0aW5nIHRoZSBSZXF1ZXN0IGJvZHkgLSBu
b3QgZGlzdHVyYmVkLCBub3QgbG9ja2VkIAorRkFJTCBHZXR0aW5nIHRleHQgYWZ0ZXIgZ2V0dGlu
ZyB0aGUgUmVxdWVzdCBib2R5IC0gbm90IGRpc3R1cmJlZCwgbm90IGxvY2tlZCBhc3NlcnRfdHJ1
ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgR2V0dGluZyBqc29uIGFmdGVyIGdldHRp
bmcgdGhlIFJlcXVlc3QgYm9keSAtIG5vdCBkaXN0dXJiZWQsIG5vdCBsb2NrZWQgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiU3ludGF4RXJyb3I6
IFRoZSBzdHJpbmcgZGlkIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgcGF0dGVybi4iCitGQUlMIEdl
dHRpbmcgYXJyYXlCdWZmZXIgYWZ0ZXIgZ2V0dGluZyB0aGUgUmVxdWVzdCBib2R5IC0gbm90IGRp
c3R1cmJlZCwgbm90IGxvY2tlZCBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0t
ZGlzdHVyYmVkLTEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3Qtc3Ry
ZWFtLWRpc3R1cmJlZC0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRmZTc5NDg2NjRiYTg2MTk2YjQ0YTk3
NzIwMWJmZTllZDNiNGVhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L2ZldGNoL3JlcXVlc3Qtc3RyZWFtLWRpc3R1cmJlZC0xLmh0bWwKQEAgLTAsMCArMSw1MyBAQAor
PCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorICAgIDx0aXRsZT5Db25zdW1pbmcgUmVxdWVzdCBib2R5IGFmdGVyIGdldHRpbmcgYSBS
ZWFkYWJsZVN0cmVhbTwvdGl0bGU+CisgICAgPG1ldGEgbmFtZT0iaGVscCIgaHJlZj0iaHR0cHM6
Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2JvZHktbWl4aW4iPgorICAgIDxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJv
ZHk+CisgICAgPHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZVJlcXVlc3RXaXRoUmVhZGFibGVTdHJl
YW0oY2FsbGJhY2spIHsKKyAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KCIiLCB7Ym9keTog
IntcImtleVwiOiBcInZhbHVlXCJ9IiwgbWV0aG9kOiAiUE9TVCJ9KTsKKyAgICB2YXIgcmVhZGVy
ID0gcmVxdWVzdC5ib2R5LmdldFJlYWRlcigpOworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwor
ICAgIHJldHVybiBjYWxsYmFjayhyZXF1ZXN0KTsKK30KKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiBjcmVhdGVSZXF1ZXN0V2l0aFJlYWRhYmxlU3RyZWFtKGZ1bmN0aW9u
KHJlcXVlc3QpIHsKKyAgICAgICAgcmV0dXJuIHJlcXVlc3QuYmxvYigpLnRoZW4oZnVuY3Rpb24o
YmxvYikgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUoYmxvYiBpbnN0YW5jZW9mIEJsb2IpOwor
ICAgICAgICB9KTsKKyAgICB9KTsKK30sICJHZXR0aW5nIGJsb2IgYWZ0ZXIgZ2V0dGluZyB0aGUg
UmVxdWVzdCBib2R5IC0gbm90IGRpc3R1cmJlZCwgbm90IGxvY2tlZCIpOworCitwcm9taXNlX3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RXaXRoUmVhZGFibGVTdHJl
YW0oZnVuY3Rpb24ocmVxdWVzdCkgeworICAgICAgICByZXR1cm4gcmVxdWVzdC50ZXh0KCkudGhl
bihmdW5jdGlvbih0ZXh0KSB7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0ZXh0Lmxlbmd0aCA+
IDApOworICAgICAgICB9KTsKKyAgICB9KTsKK30sICJHZXR0aW5nIHRleHQgYWZ0ZXIgZ2V0dGlu
ZyB0aGUgUmVxdWVzdCBib2R5IC0gbm90IGRpc3R1cmJlZCwgbm90IGxvY2tlZCIpOworCitwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RXaXRoUmVhZGFi
bGVTdHJlYW0oZnVuY3Rpb24ocmVxdWVzdCkgeworICAgICAgICByZXR1cm4gcmVxdWVzdC5qc29u
KCkudGhlbihmdW5jdGlvbihqc29uKSB7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0eXBlb2Yg
anNvbiA9PT0gIm9iamVjdCIpOworICAgICAgICB9KTsKKyAgICB9KTsKK30sICJHZXR0aW5nIGpz
b24gYWZ0ZXIgZ2V0dGluZyB0aGUgUmVxdWVzdCBib2R5IC0gbm90IGRpc3R1cmJlZCwgbm90IGxv
Y2tlZCIpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIGNyZWF0ZVJl
cXVlc3RXaXRoUmVhZGFibGVTdHJlYW0oZnVuY3Rpb24ocmVxdWVzdCkgeworICAgICAgICByZXR1
cm4gcmVxdWVzdC5hcnJheUJ1ZmZlcigpLnRoZW4oZnVuY3Rpb24oYXJyYXlCdWZmZXIpIHsKKyAg
ICAgICAgICAgIGFzc2VydF90cnVlKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGggPiAwKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7Cit9LCAiR2V0dGluZyBhcnJheUJ1ZmZlciBhZnRlciBnZXR0aW5nIHRo
ZSBSZXF1ZXN0IGJvZHkgLSBub3QgZGlzdHVyYmVkLCBub3QgbG9ja2VkIik7CisKKyAgICA8L3Nj
cmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYyYjliMmU1ZmNlOTM1NmQxNTM2MmIyYTFlYWE2NTEwOGIwNjYzNjcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0LXN0
cmVhbS1kaXN0dXJiZWQtMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK0ZBSUwgR2V0
dGluZyBibG9iIGFmdGVyIGdldHRpbmcgYSBsb2NrZWQgUmVxdWVzdCBib2R5IGFzc2VydF91bnJl
YWNoZWQ6IFNob3VsZCBoYXZlIHJlamVjdGVkOiB1bmRlZmluZWQgUmVhY2hlZCB1bnJlYWNoYWJs
ZSBjb2RlCitGQUlMIEdldHRpbmcgdGV4dCBhZnRlciBnZXR0aW5nIGEgbG9ja2VkIFJlcXVlc3Qg
Ym9keSBhc3NlcnRfdW5yZWFjaGVkOiBTaG91bGQgaGF2ZSByZWplY3RlZDogdW5kZWZpbmVkIFJl
YWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBHZXR0aW5nIGpzb24gYWZ0ZXIgZ2V0dGluZyBh
IGxvY2tlZCBSZXF1ZXN0IGJvZHkgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gImZ1bmN0aW9uICgp
IHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIlN5bnRheEVycm9yOiBUaGUgc3RyaW5nIGRpZCBu
b3QgbWF0Y2ggdGhlIGV4cGVjdGVkIHBhdHRlcm4uIiAoIlN5bnRheEVycm9yIikgZXhwZWN0ZWQg
b2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKK0ZBSUwgR2V0dGluZyBhcnJheUJ1ZmZl
ciBhZnRlciBnZXR0aW5nIGEgbG9ja2VkIFJlcXVlc3QgYm9keSBhc3NlcnRfdW5yZWFjaGVkOiBT
aG91bGQgaGF2ZSByZWplY3RlZDogdW5kZWZpbmVkIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0LXN0cmVhbS1k
aXN0dXJiZWQtMi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJl
YW0tZGlzdHVyYmVkLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWQwM2JhOWI0ZWRjN2E3NzM0YjA5YTEw
MWYxNzFhZjUxNzE2ODhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
ZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTIuaHRtbApAQCAtMCwwICsxLDQzIEBACis8
IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+CisgICAgPHRpdGxlPkNvbnN1bWluZyBSZXF1ZXN0IGJvZHkgYWZ0ZXIgZ2V0dGluZyBhIFJl
YWRhYmxlU3RyZWFtPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxzY3JpcHQ+
CitmdW5jdGlvbiBjcmVhdGVSZXF1ZXN0V2l0aExvY2tlZFJlYWRhYmxlU3RyZWFtKGNhbGxiYWNr
KSB7CisgICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgiIiwge2JvZHk6ICJ7XCJrZXlcIjog
XCJ2YWx1ZVwifSIsIG1ldGhvZDogIlBPU1QifSk7CisgICAgdmFyIHJlYWRlciA9IHJlcXVlc3Qu
Ym9keS5nZXRSZWFkZXIoKTsKKyAgICByZXR1cm4gY2FsbGJhY2socmVxdWVzdCk7Cit9CisKK3By
b21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RXaXRo
TG9ja2VkUmVhZGFibGVTdHJlYW0oZnVuY3Rpb24ocmVxdWVzdCkgeworICAgICAgICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IoKSwgcmVxdWVzdC5ibG9iKCkpOwor
ICAgIH0pOworfSwgIkdldHRpbmcgYmxvYiBhZnRlciBnZXR0aW5nIGEgbG9ja2VkIFJlcXVlc3Qg
Ym9keSIpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgIHJldHVybiBjcmVh
dGVSZXF1ZXN0V2l0aExvY2tlZFJlYWRhYmxlU3RyZWFtKGZ1bmN0aW9uKHJlcXVlc3QpIHsKKyAg
ICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVycm9yKCksIHJlcXVl
c3QudGV4dCgpKTsKKyAgICB9KTsKK30sICJHZXR0aW5nIHRleHQgYWZ0ZXIgZ2V0dGluZyBhIGxv
Y2tlZCBSZXF1ZXN0IGJvZHkiKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAg
ICByZXR1cm4gY3JlYXRlUmVxdWVzdFdpdGhMb2NrZWRSZWFkYWJsZVN0cmVhbShmdW5jdGlvbihy
ZXF1ZXN0KSB7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVF
cnJvcigpLCByZXF1ZXN0Lmpzb24oKSk7CisgICAgfSk7Cit9LCAiR2V0dGluZyBqc29uIGFmdGVy
IGdldHRpbmcgYSBsb2NrZWQgUmVxdWVzdCBib2R5Iik7CisKK3Byb21pc2VfdGVzdChmdW5jdGlv
bih0ZXN0KSB7CisgICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RXaXRoTG9ja2VkUmVhZGFibGVTdHJl
YW0oZnVuY3Rpb24ocmVxdWVzdCkgeworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRl
c3QsIG5ldyBUeXBlRXJyb3IoKSwgcmVxdWVzdC5hcnJheUJ1ZmZlcigpKTsKKyAgICB9KTsKK30s
ICJHZXR0aW5nIGFycmF5QnVmZmVyIGFmdGVyIGdldHRpbmcgYSBsb2NrZWQgUmVxdWVzdCBib2R5
Iik7CisKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVyYmVkLTMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVy
YmVkLTMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5M2UzYTZmZWFkMTNhOGZhYmNiNDcxN2Y0
NDhlNDcwZjNlOWRmOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9m
ZXRjaC9yZXF1ZXN0LXN0cmVhbS1kaXN0dXJiZWQtMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2
IEBACisKK0ZBSUwgR2V0dGluZyBibG9iIGFmdGVyIHJlYWRpbmcgdGhlIFJlcXVlc3QgYm9keSBh
c3NlcnRfdW5yZWFjaGVkOiBTaG91bGQgaGF2ZSByZWplY3RlZDogdW5kZWZpbmVkIFJlYWNoZWQg
dW5yZWFjaGFibGUgY29kZQorRkFJTCBHZXR0aW5nIHRleHQgYWZ0ZXIgcmVhZGluZyB0aGUgUmVx
dWVzdCBib2R5IGFzc2VydF91bnJlYWNoZWQ6IFNob3VsZCBoYXZlIHJlamVjdGVkOiB1bmRlZmlu
ZWQgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIEdldHRpbmcganNvbiBhZnRlciByZWFk
aW5nIHRoZSBSZXF1ZXN0IGJvZHkgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gImZ1bmN0aW9uICgp
IHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIlN5bnRheEVycm9yOiBUaGUgc3RyaW5nIGRpZCBu
b3QgbWF0Y2ggdGhlIGV4cGVjdGVkIHBhdHRlcm4uIiAoIlN5bnRheEVycm9yIikgZXhwZWN0ZWQg
b2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKK0ZBSUwgR2V0dGluZyBhcnJheUJ1ZmZl
ciBhZnRlciByZWFkaW5nIHRoZSBSZXF1ZXN0IGJvZHkgYXNzZXJ0X3VucmVhY2hlZDogU2hvdWxk
IGhhdmUgcmVqZWN0ZWQ6IHVuZGVmaW5lZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1zdHJlYW0tZGlzdHVy
YmVkLTMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3Qtc3RyZWFtLWRp
c3R1cmJlZC0zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAzNTc2NGRmNDAxZWI4OTBkNGRkMjRhMDU5Mzg5
NDc2YjA4NzZiNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNo
L3JlcXVlc3Qtc3RyZWFtLWRpc3R1cmJlZC0zLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFkb2N0
eXBlIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
ICAgIDx0aXRsZT5Db25zdW1pbmcgUmVxdWVzdCBib2R5IGFmdGVyIGdldHRpbmcgYSBSZWFkYWJs
ZVN0cmVhbTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8c2NyaXB0PgorCitm
dW5jdGlvbiBjcmVhdGVSZXF1ZXN0V2l0aERpc3R1cmJlZFJlYWRhYmxlU3RyZWFtKGNhbGxiYWNr
KSB7CisgICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgiIiwge2JvZHk6ICJ7XCJrZXlcIjog
XCJ2YWx1ZVwifSIsIG1ldGhvZDogIlBPU1QifSk7CisgICAgdmFyIHJlYWRlciA9IHJlcXVlc3Qu
Ym9keS5nZXRSZWFkZXIoKTsKKyAgICByZWFkZXIucmVhZCgpOworICAgIHJldHVybiBjYWxsYmFj
ayhyZXF1ZXN0KTsKK30KKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICByZXR1
cm4gY3JlYXRlUmVxdWVzdFdpdGhEaXN0dXJiZWRSZWFkYWJsZVN0cmVhbShmdW5jdGlvbihyZXF1
ZXN0KSB7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVFcnJv
cigpLCByZXF1ZXN0LmJsb2IoKSk7CisgICAgfSk7Cit9LCAiR2V0dGluZyBibG9iIGFmdGVyIHJl
YWRpbmcgdGhlIFJlcXVlc3QgYm9keSIpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkg
eworICAgIHJldHVybiBjcmVhdGVSZXF1ZXN0V2l0aERpc3R1cmJlZFJlYWRhYmxlU3RyZWFtKGZ1
bmN0aW9uKHJlcXVlc3QpIHsKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBu
ZXcgVHlwZUVycm9yKCksIHJlcXVlc3QudGV4dCgpKTsKKyAgICB9KTsKK30sICJHZXR0aW5nIHRl
eHQgYWZ0ZXIgcmVhZGluZyB0aGUgUmVxdWVzdCBib2R5Iik7CisKK3Byb21pc2VfdGVzdChmdW5j
dGlvbih0ZXN0KSB7CisgICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RXaXRoRGlzdHVyYmVkUmVhZGFi
bGVTdHJlYW0oZnVuY3Rpb24ocmVxdWVzdCkgeworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IoKSwgcmVxdWVzdC5qc29uKCkpOworICAgIH0pOworfSwg
IkdldHRpbmcganNvbiBhZnRlciByZWFkaW5nIHRoZSBSZXF1ZXN0IGJvZHkiKTsKKworcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICByZXR1cm4gY3JlYXRlUmVxdWVzdFdpdGhEaXN0
dXJiZWRSZWFkYWJsZVN0cmVhbShmdW5jdGlvbihyZXF1ZXN0KSB7CisgICAgICAgIHJldHVybiBw
cm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCByZXF1ZXN0LmFycmF5QnVmZmVy
KCkpOworICAgIH0pOworfSwgIkdldHRpbmcgYXJyYXlCdWZmZXIgYWZ0ZXIgcmVhZGluZyB0aGUg
UmVxdWVzdCBib2R5Iik7CisKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>