<?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>237983</bug_id>
          
          <creation_ts>2022-03-16 14:48:47 -0700</creation_ts>
          <short_desc>Remove push subscriptions when associated service worker registrations are removed</short_desc>
          <delta_ts>2022-03-18 12:20:49 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>238068</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Nham">nham</reporter>
          <assigned_to name="Ben Nham">nham</assigned_to>
          <cc>beidson</cc>
    
    <cc>nham</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1852000</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-16 14:48:47 -0700</bug_when>
    <thetext>Remove push subscriptions when associated service worker registrations are removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852010</commentid>
    <comment_count>1</comment_count>
      <attachid>454899</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-16 15:01:35 -0700</bug_when>
    <thetext>Created attachment 454899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852011</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-16 15:02:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/90394173&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852645</commentid>
    <comment_count>3</comment_count>
      <attachid>454899</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-18 01:16:17 -0700</bug_when>
    <thetext>Comment on attachment 454899
Patch

LGTM.
I am wondering whether there is a chance that things get dysinchronized, say the SQL service worker is damaged so now we loose all registrations but keep some push subscriptions. Maybe there should be something ensuring everything is fine.
For instance, if we push a message and there is no corresponding service worker registration, we should probably remove the corresponding push subscription.

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2335
&gt; +        session-&gt;notificationManager().getPushSubscription(WTFMove(scopeURL), [callback = WTFMove(callback)](auto &amp;&amp;result) mutable {

Preexisting but I would not expect getPushSubscription to require a URL&amp;&amp;.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2341
&gt; +            callback(true);

Could be written as callback(result &amp;&amp; !!result.value()) ?

&gt; Source/WebKit/webpushd/PushService.mm:394
&gt; +                    RELEASE_LOG(Push, &quot;PushSubscription.unsubscribe(bundleID: %{public}s, scope: %{sensitive}s) failed with domain: %{public}s code: %lld)&quot;, m_bundleIdentifier.utf8().data(), m_scope.utf8().data(), error.domain.UTF8String ?: &quot;none&quot;, static_cast&lt;int64_t&gt;(error.code));

RELEASE_LOG_IF which will not require the RELEASE_LOG_DISABLED around the if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852752</commentid>
    <comment_count>4</comment_count>
      <attachid>455104</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-18 10:00:09 -0700</bug_when>
    <thetext>Created attachment 455104
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852800</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-18 12:20:46 -0700</bug_when>
    <thetext>Committed r291492 (248604@main): &lt;https://commits.webkit.org/248604@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455104.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454899</attachid>
            <date>2022-03-16 15:01:35 -0700</date>
            <delta_ts>2022-03-18 10:00:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237983-20220316150134.patch</filename>
            <type>text/plain</type>
            <size>44978</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM0Yjg2MjBjMDk5YjEyMDZk
MDZmYTEwNTA4MzBhMTc2MTk5ODU0NjUuLmM1NzQ1ZTA3ZjZkYTZmYmUzZGFkMzY3NGRhMGIyNjJm
NjEzYjMxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjItMDMtMTYgIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3
aGVuIGFzc29jaWF0ZWQgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9ucyBhcmUgcmVtb3ZlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gaXMgcmVtb3ZlZCwgd2UgYWxzbyBuZWVkIHRvIHJlbW92
ZSBpdHMgYXNzb2NpYXRlZAorICAgICAgICBQdXNoU3Vic2NyaXB0aW9uLiBUaGlzIGNhbiBvY2N1
ciB3aGVuOgorCisgICAgICAgICAgMS4gVGhlIGFwcGxpY2F0aW9uIGNhbGxzIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24udW5yZWdpc3Rlci4gVGhpcyBpcyBpbXBsZW1lbnRlZCBieQorICAgICAg
ICAgICAgIGhhdmluZyByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2JJbkNsaWVudCBjYWxsIHVuc3Vi
c2NyaWJlRnJvbVB1c2hTZXJ2aWNlIGluIHdlYnB1c2hkLgorICAgICAgICAgICAgIFRoZSBpZGVu
dGlmaWVyIHBhc3NlZCB0byB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZSBpcyBub3cgb3B0aW9u
YWw7IGlmIHRoZSBpZGVudGlmaWVyCisgICAgICAgICAgICAgaXMgbm90IHByZXNlbnQsIHRoZW4g
d2UgZGVsZXRlIHdoYXRldmVyIFB1c2hTdWJzY3JpcHRpb24gaXMgYXNzb2NpYXRlZCB3aXRoIHRo
ZSBnaXZlbgorICAgICAgICAgICAgIHNjb3BlIFVSTC4KKworICAgICAgICAgIDIuIFRoZSB1c2Vy
IGNsZWFycyB3ZWJzaXRlIGRhdGEgZm9yIGEgcGFydGljdWxhciBvcmlnaW4uIFRoaXMgaXMgaW1w
bGVtZW50ZWQgYnkgaGF2aW5nCisgICAgICAgICAgICAgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zIGludm9rZSByZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdpbiBpbiB3ZWJwdXNoZC4K
KworICAgICAgICAgIDMuIFRoZSB1c2VyIGNsZWFycyBhbGwgd2Vic2l0ZSBkYXRhLiBUaGlzIGlz
IGltcGxlbWVudGVkIGJ5IGhhdmluZyBkZWxldGVXZWJzaXRlRGF0YQorICAgICAgICAgICAgIGlu
dm9rZSByZW1vdmVBbGxQdXNoU3Vic2NyaXB0aW9ucyBpbiB3ZWJwdXNoZC4KKworICAgICAgICBD
b3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVX
ZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJz
aXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNQdXNoU3Vic2NyaXB0aW9uRm9yVGVzdGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnVuc3Vic2NyaWJl
RnJvbVB1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXI6OnJlbW92ZUFsbFB1c2hTdWJzY3JpcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnJlbW92ZVB1c2hTdWJzY3JpcHRpb25zRm9yT3JpZ2lu
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50KToKKyAgICAgICAgKiBT
aGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNo
RDo6bWVzc2FnZVR5cGVTZW5kc1JlcGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y29wZVVSTDpoYXNQdXNoU3Vic2NyaXB0aW9uRm9yVGVzdGluZzpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzUHVzaFN1YnNjcmlwdGlvbkZvclRlc3RpbmcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiB3ZWJwdXNoZC9QdXNoU2VydmljZS5oOgorICAgICAgICAqIHdlYnB1c2hkL1B1c2hTZXJ2
aWNlLm1tOgorICAgICAgICAoV2ViUHVzaEQ6OlVuc3Vic2NyaWJlUmVxdWVzdDo6VW5zdWJzY3Jp
YmVSZXF1ZXN0KToKKyAgICAgICAgKFdlYlB1c2hEOjpVbnN1YnNjcmliZVJlcXVlc3Q6OnN0YXJ0
SW50ZXJuYWwpOgorICAgICAgICAoV2ViUHVzaEQ6OlB1c2hTZXJ2aWNlOjp1bnN1YnNjcmliZSk6
CisgICAgICAgIChXZWJQdXNoRDo6UHVzaFNlcnZpY2U6OmluY3JlbWVudFNpbGVudFB1c2hDb3Vu
dCk6CisgICAgICAgIChXZWJQdXNoRDo6UHVzaFNlcnZpY2U6OnJlbW92ZVJlY29yZHNGb3JCdW5k
bGVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYlB1c2hEOjpQdXNoU2VydmljZTo6cmVtb3ZlUmVj
b3Jkc0ZvckJ1bmRsZUlkZW50aWZpZXJBbmRPcmlnaW4pOgorICAgICAgICAoV2ViUHVzaEQ6OlB1
c2hTZXJ2aWNlOjpyZW1vdmVSZWNvcmRzSW1wbCk6CisgICAgICAgICogd2VicHVzaGQvV2ViUHVz
aERhZW1vbi5oOgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAg
IChXZWJQdXNoRDo6TWVzc2FnZUluZm86OnJlbW92ZUFsbFB1c2hTdWJzY3JpcHRpb25zOjplbmNv
ZGVSZXBseSk6CisgICAgICAgIChXZWJQdXNoRDo6TWVzc2FnZUluZm86OnJlbW92ZVB1c2hTdWJz
Y3JpcHRpb25zRm9yT3JpZ2luOjplbmNvZGVSZXBseSk6CisgICAgICAgIChXZWJQdXNoRDo6RGFl
bW9uOjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246
OnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246
OnJlbW92ZUFsbFB1c2hTdWJzY3JpcHRpb25zKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246
OnJlbW92ZVB1c2hTdWJzY3JpcHRpb25zRm9yT3JpZ2luKToKKwogMjAyMi0wMy0xMiAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyOTEyMDkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IGNjOTI5MGI2NjI4OWJmNjc5ODFmYjdlNzAwYTRmZjFhY2Qy
YmFjZmEuLjMxMzAzYWI1YzhjZmQ3ZjYzMDgzNmFkMTE1ZTg3ZGQ5ZjY2OWRlZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNTA5
LDggKzE1MDksMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7
Ci0gICAgaWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
ICYmIHNlc3Npb24pCisgICAgaWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpICYmIHNlc3Npb24pIHsKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2
ZXIoKS5jbGVhckFsbChbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisKKyNpZiBFTkFCTEUoQlVJ
TFRfSU5fTk9USUZJQ0FUSU9OUykKKyAgICAgICAgc2Vzc2lvbi0+bm90aWZpY2F0aW9uTWFuYWdl
cigpLnJlbW92ZUFsbFB1c2hTdWJzY3JpcHRpb25zKFtjbGVhclRhc2tzSGFuZGxlcl0oYXV0byYm
KSB7IH0pOworI2VuZGlmCisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRf
VFJBQ0tJTkdfUFJFVkVOVElPTikKQEAgLTE2MDMsOCArMTYwOCwxMyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBPcHRpbwogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKTsK
ICAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkg
JiYgc2Vzc2lvbikgewogICAgICAgICBhdXRvJiBzZXJ2ZXIgPSBzZXNzaW9uLT5lbnN1cmVTV1Nl
cnZlcigpOwotICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKKyAg
ICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpIHsKICAgICAgICAgICAg
IHNlcnZlci5jbGVhcihvcmlnaW5EYXRhLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisKKyNp
ZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKyAgICAgICAgICAgIHNlc3Npb24tPm5v
dGlmaWNhdGlvbk1hbmFnZXIoKS5yZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdpbihTZWN1
cml0eU9yaWdpbkRhdGEgeyBvcmlnaW5EYXRhIH0sIFtjbGVhclRhc2tzSGFuZGxlcl0oYXV0byYm
KSB7IH0pOworI2VuZGlmCisgICAgICAgIH0KICAgICB9CiAjZW5kaWYKIApAQCAtMTc5Niw4ICsx
ODA2LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURh
dGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgICAgICAgICAgICAgaWYgKCFk
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvci5jb250YWlucyhSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCkp
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKTsKLSAgICAgICAgICAgICAgICBpZiAo
c2Vzc2lvbikKKyAgICAgICAgICAgICAgICBpZiAoc2Vzc2lvbikgewogICAgICAgICAgICAgICAg
ICAgICBzZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpLmNsZWFyKHNlY3VyaXR5T3JpZ2luLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworCisjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElP
TlMpCisgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPm5vdGlmaWNhdGlvbk1hbmFnZXIoKS5y
ZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEgeyBzZWN1
cml0eU9yaWdpbiB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYpIHsgfSk7CisjZW5kaWYK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0KQEAg
LTIzMTMsNiArMjMyOCwyNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRPcmlnaW5zV2l0aFB1
c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRAogICAgIGNhbGxiYWNr
KHsgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc1B1c2hTdWJzY3JpcHRpb25Gb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMJiYgc2NvcGVVUkwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisjaWYgRU5BQkxFKEJVSUxUX0lO
X05PVElGSUNBVElPTlMpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CisgICAgICAgIHNlc3Npb24tPm5vdGlmaWNhdGlvbk1hbmFnZXIoKS5nZXRQ
dXNoU3Vic2NyaXB0aW9uKFdURk1vdmUoc2NvcGVVUkwpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYXV0byAmJnJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXJlc3Vs
dCB8fCAhcmVzdWx0LnZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBj
YWxsYmFjayh0cnVlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKworICAgIGNhbGxiYWNrKGZhbHNlKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVx
dWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2
NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4pPiYmIGNhbGxiYWNrKQogewogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVxdWVz
dFN0b3JhZ2VTcGFjZSB7IHNlc3Npb25JRCwgb3JpZ2luLCBxdW90YSwgY3VycmVudFNpemUsIHNw
YWNlUmVxdWlyZWQgfSwgV1RGTW92ZShjYWxsYmFjayksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDJmNThjZDA3ODU0OThiMDVlMDk5
MGQ1ODViOTA3Y2VjZTdhZGVjOGIuLmY0MjgzNGM0YzE4NDQwM2U4NmExOGI2MzI3ZWYxZmMwNTZh
OTM0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTM3Nyw2ICszNzcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRlbGV0ZVB1c2hBbmRO
b3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lv
bnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CisgICAgdm9pZCBoYXNQdXNoU3Vic2Ny
aXB0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgVVJMJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDFjZjMyZWFkNjBiYjM0ZmEyMmVmNGRkMzllOTg1NjA4ZjdlNjZi
MjQuLjY3ODhkNjVjYzZhOGNjZDNmMTFmOTBiMmQ2Nzc5ZTIxYWJkMWNkYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtMjE1LDQgKzIxNSw1IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICNlbmRpZgogICAgIERlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3Ry
YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIG9yaWdpbikgLT4gKFN0cmluZyBlcnJvck1lc3NhZ2UpCiAgICAgR2V0T3JpZ2lu
c1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykKKyAg
ICBIYXNQdXNoU3Vic2NyaXB0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFVSTCBzY29wZVVSTCkgLT4gKGJvb2wgaGFzU3Vic2NyaXB0aW9uKQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggOGU3ZTAxZTFlM2NmMTlm
MTBmYWJiNmUyNGE1NDhkNjcxNzRmY2YyMy4uYzEzM2MxMGVmNDM5Mzg3Y2E4ZGE4MTE1YjA1YTg4
N2NiNzQxZjNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
cjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZShVUkwmJiBzY29wZVVSTCwgVmVjdG9yPHUKICAgICBz
ZW5kTWVzc2FnZVdpdGhSZXBseTxXZWJQdXNoRDo6TWVzc2FnZVR5cGU6OlN1YnNjcmliZVRvUHVz
aFNlcnZpY2U+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKHNjb3BlVVJMKSwg
V1RGTW92ZShhcHBsaWNhdGlvblNlcnZlcktleSkpOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShVUkwmJiBzY29wZVVSTCwg
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIgcHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShVUkwmJiBzY29wZVVSTCwgc3RkOjpvcHRp
b25hbDxQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcj4gcHVzaFN1YnNjcmlwdGlvbklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rp
b24pIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9u
RGF0YSB7IEFib3J0RXJyb3IsICJObyBjb25uZWN0aW9uIHRvIHB1c2ggZGFlbW9uIl9zIH0pKTsK
QEAgLTE4NSw2ICsxODUsMjYgQEAgdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6aW5j
cmVtZW50U2lsZW50UHVzaENvdW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2kKICAgICBzZW5kTWVz
c2FnZVdpdGhSZXBseTxXZWJQdXNoRDo6TWVzc2FnZVR5cGU6OkluY3JlbWVudFNpbGVudFB1c2hD
b3VudD4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUob3JpZ2luKSk7CiB9CiAK
K3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnJlbW92ZUFsbFB1c2hTdWJzY3JpcHRp
b25zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGlmICghbV9jb25uZWN0aW9uKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8
V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpSZW1vdmVBbGxQdXNoU3Vic2NyaXB0aW9ucz4oV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyOjpyZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZE1l
c3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpSZW1vdmVQdXNoU3Vic2NyaXB0
aW9uc0Zvck9yaWdpbj4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUob3JpZ2lu
KSk7Cit9CisKIHRlbXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlw
ZW5hbWUuLi4gQXJncz4KIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNlbmRNZXNz
YWdlKEFyZ3MmJi4uLiBhcmdzKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXIuaAppbmRleCA0YjI0N2NmNDZkN2ViODVjNzEwYWJiMmQ1OGVmZDhhMTNh
M2NhMDExLi4yMzcyZTJkOGIwZTk1MTM2OGNmNjQ5NTUxNWFmMTZhMTEyZmUxOTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtNTgsMTAgKzU4LDEy
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFBlbmRpbmdQdXNoTWVzc2FnZXMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYpOwogCiAgICAgdm9p
ZCBzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFVSTCYmIHNjb3BlVVJMLCBWZWN0b3I8dWludDhfdD4m
JiBhcHBsaWNhdGlvblNlcnZlcktleSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxX
ZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+
JiYpOwotICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoVVJMJiYgc2NvcGVVUkws
IFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2
b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFVSTCYmIHNjb3BlVVJMLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAg
ICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFVSTCYmIHNjb3BlVVJMLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlv
bkRhdGE+LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAgICAgdm9pZCBnZXRQdXNo
UGVybWlzc2lvblN0YXRlKFVSTCYmIHNjb3BlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKICAgICB2b2lk
IGluY3JlbWVudFNpbGVudFB1c2hDb3VudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYpOworICAgIHZvaWQgcmVtb3ZlQWxs
UHVzaFN1YnNjcmlwdGlvbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYpOwor
ICAgIHZvaWQgcmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYmKTsKIAog
cHJpdmF0ZToKICAgICBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYs
IGNvbnN0IFN0cmluZyYgd2ViUHVzaE1hY2hTZXJ2aWNlTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGI4Y2NhNzJhNDI2MjYyYjllOTdhMDQ4NTZlNWZk
NDdhZjA2NzE4NTUuLjY3Y2VlZjU0NDg0ZDc1MDY4ODAwMTE1MGFlNjU4NGZiOTNhZjNlMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xMTEsOCArMTExLDIy
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpyZXNvbHZlUmVnaXN0cmF0aW9uSm9iSW5D
bGllbnQoU2VydmljZVdvcmtlckpvYklkZW50CiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoU2VydmljZVdvcmtlckpvYklkZW50aWZp
ZXIgam9iSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVn
aXN0cmF0aW9uS2V5LCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQogewogICAgIEFTU0VSVCht
X3VucmVnaXN0ZXJKb2JzLmNvbnRhaW5zKGpvYklkZW50aWZpZXIpKTsKLSAgICBpZiAoYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IG1fdW5yZWdpc3RlckpvYnMudGFrZShqb2JJZGVudGlmaWVyKSkK
KyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1fdW5yZWdpc3RlckpvYnMudGFrZShq
b2JJZGVudGlmaWVyKSkgeworI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorICAg
ICAgICBpZiAoIXNlc3Npb24oKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodW5y
ZWdpc3RyYXRpb25SZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBhdXRvIHNjb3BlVVJMID0gcmVnaXN0cmF0aW9uS2V5LnNjb3BlKCk7Cisg
ICAgICAgIHNlc3Npb24oKS0+bm90aWZpY2F0aW9uTWFuYWdlcigpLnVuc3Vic2NyaWJlRnJvbVB1
c2hTZXJ2aWNlKFdURk1vdmUoc2NvcGVVUkwpLCBzdGQ6Om51bGxvcHQsIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB1bnJlZ2lzdHJhdGlvblJlc3VsdF0o
YXV0byYmKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHVucmVnaXN0
cmF0aW9uUmVzdWx0KTsKKyAgICAgICAgfSk7CisgICAgICAgIAorI2Vsc2UKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIodW5yZWdpc3RyYXRpb25SZXN1bHQpOworI2VuZGlmCisgICAgfQogfQog
CiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KFNl
cnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyIGpvYklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgRmV0Y2hPcHRpb25zOjpDYWNoZSBj
YWNoZVBvbGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVt
b25Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFu
dHMuaAppbmRleCA0MGQ3N2IyMDljOTc3ZTI4ODEwMTY1ZjJhNmZkY2Y4NzJlZjJlZGQ2Li5lOTBl
ZWVkMDE0MDc4NjU3YTExOGVhNmEzZjRjMjkwMjdmNmQ0YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCkBAIC01Myw2ICs1Myw4IEBAIGVudW0g
Y2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBHZXRQdXNoU3Vic2NyaXB0aW9uLAog
ICAgIEdldFB1c2hQZXJtaXNzaW9uU3RhdGUsCiAgICAgSW5jcmVtZW50U2lsZW50UHVzaENvdW50
LAorICAgIFJlbW92ZUFsbFB1c2hTdWJzY3JpcHRpb25zLAorICAgIFJlbW92ZVB1c2hTdWJzY3Jp
cHRpb25zRm9yT3JpZ2luLAogfTsKIAogaW5saW5lIGJvb2wgbWVzc2FnZVR5cGVTZW5kc1JlcGx5
KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlKQpAQCAtNzAsNiArNzIsOCBAQCBpbmxpbmUgYm9vbCBt
ZXNzYWdlVHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCiAgICAgY2FzZSBN
ZXNzYWdlVHlwZTo6R2V0UHVzaFN1YnNjcmlwdGlvbjoKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpH
ZXRQdXNoUGVybWlzc2lvblN0YXRlOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OkluY3JlbWVudFNp
bGVudFB1c2hDb3VudDoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpSZW1vdmVBbGxQdXNoU3Vic2Ny
aXB0aW9uczoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpSZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zv
ck9yaWdpbjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0
RGVidWdNb2RlSXNFbmFibGVkOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlVwZGF0ZUNvbm5lY3Rp
b25Db25maWd1cmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggOGVlZWQyYzgyNWJjMmQ3YmVhODMx
MjM0NzJiNzAyMmU5YmE1MTJjMC4uYjdjZjA2NWJhYmNhMWM0OTFhYTNlYTM4NDFkMjQ2ODYzMWFh
ZWRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC04MzUsNCArODM1LDEzIEBAIC0odm9pZClfZ2V0T3Jp
Z2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM6KHZvaWQoXikoTlNTZXQ8V0tT
ZWN1cml0eU9yCiAgICAgfSk7CiB9CiAKKy0odm9pZClfc2NvcGVVUkw6KE5TVVJMICopc2NvcGVV
UkwgaGFzUHVzaFN1YnNjcmlwdGlvbkZvclRlc3Rpbmc6KHZvaWQoXikoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXIKK3sKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdvcmtQcm9j
ZXNzKCkKKyAgICAgICAgLmhhc1B1c2hTdWJzY3JpcHRpb25Gb3JUZXN0aW5nKF93ZWJzaXRlRGF0
YVN0b3JlLT5zZXNzaW9uSUQoKSwgc2NvcGVVUkwsIFtjb21wbGV0aW9uSGFuZGxlckNvcHldKGJv
b2wgcmVzdWx0KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkocmVzdWx0KTsK
KyAgICAgICAgfSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGMz
NmUxMTMxZjA5YTFiNzViNWJiODdlMDQwZDViMzQ4YWMzOGEwNzEuLjBlOTczNmIxMzI0M2Y4ODk1
MzdlYTc2Zjg2ZDZiMDI1NzI0ZjJjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAt
MTE1LDYgKzExNSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRl
RGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAtKHZvaWQpX3Byb2Nlc3NQdXNoTWVzc2FnZTooTlNE
aWN0aW9uYXJ5ICopcHVzaE1lc3NhZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoYm9vbCkp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIC0odm9pZClfZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJh
dGlvbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0odm9pZClfZ2V0T3JpZ2luc1dp
dGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM6KHZvaWQoXikoTlNTZXQ8V0tTZWN1cml0
eU9yaWdpbiAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSh2b2lkKV9zY29wZVVSTDooTlNVUkwgKilz
Y29wZVVSTCBoYXNQdXNoU3Vic2NyaXB0aW9uRm9yVGVzdGluZzoodm9pZCheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGUxOWI4YjI0ZWY5Y2IyYWJlMWZhODcwNmVlN2NlYTEyNTFlYzMwMDYuLjM4ODVlNGRmNmFi
MDhjMmQ5ZjRhN2M5YzUzZTgwZjI4YWE0YTE5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTc5MSw2
ICsxNzkxLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0T3JpZ2luc1dpdGhQdXNo
QW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzCiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMgeyBzZXNzaW9uSUQgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQog
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc1B1c2hTdWJzY3JpcHRpb25Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBzY29wZVVSTCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpIYXNQdXNoU3Vic2NyaXB0aW9uRm9yVGVzdGlu
ZyB7IHNlc3Npb25JRCwgc2NvcGVVUkwgfSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4sIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQog
ewogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpUZXJtaW5hdGVSZW1vdGVXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZSh3b3JrZXJUeXBlLCBzZXNzaW9uSUQsIHJl
Z2lzdHJhYmxlRG9tYWluLCBwcm9jZXNzSWRlbnRpZmllciksIDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAx
MDVkNjYxMjlkZDJjY2Y2YTU1MWZkZmJiYzUyZDYyOGE0ZDBhZTIyLi5lMGFlZTJmN2IzNmFiZGNl
NjM0ODU3NzVjMTU0MmJjNzU0YmQyNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjkxLDYgKzI5MSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlv
bihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBnZXRPcmln
aW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYpPiYmKTsKKyAgICB2b2lkIGhhc1B1c2hTdWJzY3JpcHRpb25Gb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
IAogICAgIHZvaWQgZGF0YVRhc2tSZWNlaXZlZENoYWxsZW5nZShEYXRhVGFza0lkZW50aWZpZXIs
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgV2ViQ29yZTo6Q3JlZGVudGlh
bCYmKT4mJik7CiAgICAgdm9pZCBkYXRhVGFza1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKERh
dGFUYXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLmggYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLmgKaW5kZXggODJmY2IxYzRlZTllN2Y0ZjgzNWQwNzA3
MWFiNjIzODkyZmViYmJiNi4uZTQ0NTAxOWVjOWUyYzdjYjFkZWY2MmQ0MWMwYTFiMTE5N2JhNTQ5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UuaApAQCAtNTksNyArNTksMTAgQEAg
cHVibGljOgogCiAgICAgdm9pZCBnZXRTdWJzY3JpcHRpb24oY29uc3QgU3RyaW5nJiBidW5kbGVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE+
LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpPiYmKTsKICAgICB2b2lkIHN1YnNjcmliZShjb25z
dCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NvcGUsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgdmFwaWRQdWJsaWNLZXksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgRXhwZWN0ZWQ8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGEsIFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGE+Jik+JiYpOwotICAgIHZvaWQgdW5zdWJzY3JpYmUoY29uc3QgU3RyaW5nJiBidW5k
bGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjb3BlLCBXZWJDb3JlOjpQdXNoU3Vic2NyaXB0
aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDxib29s
LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpPiYmKTsKKyAgICB2b2lkIHVuc3Vic2NyaWJlKGNv
bnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY29wZSwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4m
KT4mJik7CisKKyAgICB2b2lkIHJlbW92ZVJlY29yZHNGb3JCdW5kbGVJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25l
ZCk+JiYpOworICAgIHZvaWQgcmVtb3ZlUmVjb3Jkc0ZvckJ1bmRsZUlkZW50aWZpZXJBbmRPcmln
aW4oY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5
T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJik7CiAKICAgICB2b2lk
IGluY3JlbWVudFNpbGVudFB1c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5z
aWduZWQpPiYmKTsKIApAQCAtNzUsNiArNzgsOCBAQCBwcml2YXRlOgogICAgIHVzaW5nIFB1c2hT
ZXJ2aWNlUmVxdWVzdE1hcCA9IEhhc2hNYXA8c3RkOjp0dXBsZTxTdHJpbmcsIFN0cmluZz4sIERl
cXVlPHN0ZDo6dW5pcXVlX3B0cjxQdXNoU2VydmljZVJlcXVlc3Q+Pj47CiAgICAgdm9pZCBlbnF1
ZXVlUHVzaFNlcnZpY2VSZXF1ZXN0KFB1c2hTZXJ2aWNlUmVxdWVzdE1hcCYsIHN0ZDo6dW5pcXVl
X3B0cjxQdXNoU2VydmljZVJlcXVlc3Q+JiYpOwogICAgIHZvaWQgZmluaXNoZWRQdXNoU2Vydmlj
ZVJlcXVlc3QoUHVzaFNlcnZpY2VSZXF1ZXN0TWFwJiwgUHVzaFNlcnZpY2VSZXF1ZXN0Jik7Cisg
ICAgCisgICAgdm9pZCByZW1vdmVSZWNvcmRzSW1wbChjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50
aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgc2VjdXJpdHlPcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYmKTsKIAogICAgIFVuaXF1ZVJlZjxQdXNoU2Vy
dmljZUNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBVbmlxdWVSZWY8V2ViQ29yZTo6UHVz
aERhdGFiYXNlPiBtX2RhdGFiYXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UubW0K
aW5kZXggYWVlOTE5YThhMGY5NGY3YTU2NWVhYzA2MWIyMjZiZDFjY2UzODA0ZC4uYWYxZTQ3NTMw
NWI0ZWViODhhOTgwNTg0ZjExOGU1MWRlZTBjYTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9QdXNoU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1
c2hTZXJ2aWNlLm1tCkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBTdWJzY3JpYmVSZXF1ZXN0Ojph
dHRlbXB0VG9SZWNvdmVyRnJvbVRvcGljQWxyZWFkeUluRmlsdGVyRXJyb3IoU3RyaW5nJiYgdG8K
IAogY2xhc3MgVW5zdWJzY3JpYmVSZXF1ZXN0IDogcHVibGljIFB1c2hTZXJ2aWNlUmVxdWVzdElt
cGw8Ym9vbD4gewogcHVibGljOgotICAgIFVuc3Vic2NyaWJlUmVxdWVzdChQdXNoU2VydmljZSYs
IGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY29wZSwgUHVz
aFN1YnNjcmlwdGlvbklkZW50aWZpZXIsIFJlc3VsdEhhbmRsZXImJik7CisgICAgVW5zdWJzY3Jp
YmVSZXF1ZXN0KFB1c2hTZXJ2aWNlJiwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNjb3BlLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25JZGVudGlm
aWVyPiwgUmVzdWx0SGFuZGxlciYmKTsKICAgICB2aXJ0dWFsIH5VbnN1YnNjcmliZVJlcXVlc3Qo
KSA9IGRlZmF1bHQ7CiAKIHByb3RlY3RlZDoKQEAgLTM1OCwxMCArMzU4LDEwIEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGZpbmlzaCgpIGZpbmFsIHsgbV9zZXJ2aWNlLmRpZENvbXBsZXRlVW5zdWJz
Y3JpYmVSZXF1ZXN0KCp0aGlzKTsgfQogCiBwcml2YXRlOgotICAgIFB1c2hTdWJzY3JpcHRpb25J
ZGVudGlmaWVyIG1fc3Vic2NyaXB0aW9uSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFB1
c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyPiBtX3N1YnNjcmlwdGlvbklkZW50aWZpZXI7CiB9Owog
Ci1VbnN1YnNjcmliZVJlcXVlc3Q6OlVuc3Vic2NyaWJlUmVxdWVzdChQdXNoU2VydmljZSYgc2Vy
dmljZSwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjb3Bl
LCBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciBzdWJzY3JpcHRpb25JZGVudGlmaWVyLCBSZXN1
bHRIYW5kbGVyJiYgcmVzdWx0SGFuZGxlcikKK1Vuc3Vic2NyaWJlUmVxdWVzdDo6VW5zdWJzY3Jp
YmVSZXF1ZXN0KFB1c2hTZXJ2aWNlJiBzZXJ2aWNlLCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NvcGUsIHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlv
bklkZW50aWZpZXI+IHN1YnNjcmlwdGlvbklkZW50aWZpZXIsIFJlc3VsdEhhbmRsZXImJiByZXN1
bHRIYW5kbGVyKQogICAgIDogUHVzaFNlcnZpY2VSZXF1ZXN0SW1wbChzZXJ2aWNlLCBidW5kbGVJ
ZGVudGlmaWVyLCBzY29wZSwgV1RGTW92ZShyZXN1bHRIYW5kbGVyKSkKICAgICAsIG1fc3Vic2Ny
aXB0aW9uSWRlbnRpZmllcihzdWJzY3JpcHRpb25JZGVudGlmaWVyKQogewpAQCAtMzcxLDMyICsz
NzEsMzEgQEAgVW5zdWJzY3JpYmVSZXF1ZXN0OjpVbnN1YnNjcmliZVJlcXVlc3QoUHVzaFNlcnZp
Y2UmIHNlcnZpY2UsIGNvbnN0IFN0cmluZyYgYnVuZGwKIHZvaWQgVW5zdWJzY3JpYmVSZXF1ZXN0
OjpzdGFydEludGVybmFsKCkKIHsKICAgICBtX2RhdGFiYXNlLmdldFJlY29yZEJ5QnVuZGxlSWRl
bnRpZmllckFuZFNjb3BlKG1fYnVuZGxlSWRlbnRpZmllciwgbV9zY29wZSwgW3RoaXNdKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAoIXJlc3VsdCB8fCBtX3N1YnNjcmlwdGlv
bklkZW50aWZpZXIgIT0gcmVzdWx0LT5pZGVudGlmaWVyKSB7CisgICAgICAgIGlmICghcmVzdWx0
IHx8IChtX3N1YnNjcmlwdGlvbklkZW50aWZpZXIgJiYgKm1fc3Vic2NyaXB0aW9uSWRlbnRpZmll
ciAhPSByZXN1bHQtPmlkZW50aWZpZXIpKSB7CiAgICAgICAgICAgICBmdWxmaWxsKGZhbHNlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9kYXRh
YmFzZS5yZW1vdmVSZWNvcmRCeUlkZW50aWZpZXIocmVzdWx0LT5pZGVudGlmaWVyLCBbdGhpcywg
c2VydmVyVkFQSURQdWJsaWNLZXkgPSByZXN1bHQtPnNlcnZlclZBUElEUHVibGljS2V5XShib29s
IHJlbW92ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFyZW1vdmVkKSB7CisgICAgICAg
ICAgICAgICAgZnVsZmlsbChmYWxzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQogCi0gICAgICAgIGF1dG8gdG9waWMgPSBtYWtlUHVzaFRvcGljKG1fYnVuZGxlSWRl
bnRpZmllciwgbV9zY29wZSk7Ci0gICAgICAgIG1fY29ubmVjdGlvbi51bnN1YnNjcmliZSh0b3Bp
YywgcmVzdWx0LT5zZXJ2ZXJWQVBJRFB1YmxpY0tleSwgW3RoaXNdKGJvb2wgdW5zdWJzY3JpYmVk
LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICAvLyBGSVhNRTogc3VwcG9y
dCBwYXJ0aWFsIHRvcGljIGxpc3QgdXBkYXRlcy4KKyAgICAgICAgICAgIHVwZGF0ZVRvcGljTGlz
dHMobV9jb25uZWN0aW9uLCBtX2RhdGFiYXNlLCBbdGhpc10oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBmdWxmaWxsKHRydWUpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGF1
dG8gdG9waWMgPSBtYWtlUHVzaFRvcGljKG1fYnVuZGxlSWRlbnRpZmllciwgbV9zY29wZSk7Cisg
ICAgICAgICAgICBtX2Nvbm5lY3Rpb24udW5zdWJzY3JpYmUodG9waWMsIHNlcnZlclZBUElEUHVi
bGljS2V5LCBbdGhpc10oYm9vbCB1bnN1YnNjcmliZWQsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxl
IHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAgICAgICAgIC8vIElmIHdlIGZhaWwg
dG8gdW5zdWJzY3JpYmUgZnJvbSBhcHNkLCBqdXN0IGRyb3AgYSBsb2cuIFdlIHN0aWxsIHdhbnQg
dG8gY29udGludWUgYW5kIHJlbW92ZSB0aGUgcmVjb3JkIGZyb20gb3VyIGRhdGFiYXNlIGluIGNh
c2UgdGhlcmUncyBhIHN0YXRlIG1pc21hdGNoIGJldHdlZW4gb3VyIGRhdGFiYXNlIGFuZCBhcHNk
J3MgZGF0YWJhc2UuCi0gICAgICAgICAgICBpZiAoIXVuc3Vic2NyaWJlZCkKLSAgICAgICAgICAg
ICAgICBSRUxFQVNFX0xPRyhQdXNoLCAiUHVzaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZShidW5k
bGVJRDogJXtwdWJsaWN9cywgc2NvcGU6ICV7c2Vuc2l0aXZlfXMpIGZhaWxlZCB3aXRoIGRvbWFp
bjogJXtwdWJsaWN9cyBjb2RlOiAlbGxkKSIsIG1fYnVuZGxlSWRlbnRpZmllci51dGY4KCkuZGF0
YSgpLCBtX3Njb3BlLnV0ZjgoKS5kYXRhKCksIGVycm9yLmRvbWFpbi5VVEY4U3RyaW5nID86ICJu
b25lIiwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXJyb3IuY29kZSkpOworICAgICAgICAgICAgICAg
IGlmICghdW5zdWJzY3JpYmVkKQorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPRyhQdXNo
LCAiUHVzaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZShidW5kbGVJRDogJXtwdWJsaWN9cywgc2Nv
cGU6ICV7c2Vuc2l0aXZlfXMpIGZhaWxlZCB3aXRoIGRvbWFpbjogJXtwdWJsaWN9cyBjb2RlOiAl
bGxkKSIsIG1fYnVuZGxlSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCBtX3Njb3BlLnV0ZjgoKS5k
YXRhKCksIGVycm9yLmRvbWFpbi5VVEY4U3RyaW5nID86ICJub25lIiwgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oZXJyb3IuY29kZSkpOwogI2Vsc2UKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh1bnN1
YnNjcmliZWQpOwotICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICAgICAgICAg
ICAgICBVTlVTRURfUEFSQU0odW5zdWJzY3JpYmVkKTsKKyAgICAgICAgICAgICAgICBVTlVTRURf
UEFSQU0oZXJyb3IpOwogI2VuZGlmCi0KLSAgICAgICAgICAgIG1fZGF0YWJhc2UucmVtb3ZlUmVj
b3JkQnlJZGVudGlmaWVyKG1fc3Vic2NyaXB0aW9uSWRlbnRpZmllciwgW3RoaXNdKGJvb2wgcmVt
b3ZlZCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZW1vdmVkKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGZ1bGZpbGwoZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IHN1cHBvcnQg
cGFydGlhbCB0b3BpYyBsaXN0IHVwZGF0ZXMuCi0gICAgICAgICAgICAgICAgdXBkYXRlVG9waWNM
aXN0cyhtX2Nvbm5lY3Rpb24sIG1fZGF0YWJhc2UsIFt0aGlzXSgpIG11dGFibGUgewotICAgICAg
ICAgICAgICAgICAgICBmdWxmaWxsKHRydWUpOwotICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtNDYzLDcgKzQ2Miw3IEBAIHZvaWQg
UHVzaFNlcnZpY2U6OmRpZENvbXBsZXRlU3Vic2NyaWJlUmVxdWVzdChTdWJzY3JpYmVSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIGZpbmlzaGVkUHVzaFNlcnZpY2VSZXF1ZXN0KG1fc3Vic2NyaWJlUmVx
dWVzdHMsIHJlcXVlc3QpOwogfQogCi12b2lkIFB1c2hTZXJ2aWNlOjp1bnN1YnNjcmliZShjb25z
dCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NvcGUsIFB1c2hTdWJz
Y3JpcHRpb25JZGVudGlmaWVyIHN1YnNjcmlwdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUHVzaFNlcnZpY2U6OnVuc3Vic2NyaWJlKGNvbnN0
IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY29wZSwgc3RkOjpvcHRp
b25hbDxQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcj4gc3Vic2NyaXB0aW9uSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGVucXVldWVQdXNoU2Vy
dmljZVJlcXVlc3QobV91bnN1YnNjcmliZVJlcXVlc3RzLCBtYWtlVW5pcXVlPFVuc3Vic2NyaWJl
UmVxdWVzdD4oKnRoaXMsIGJ1bmRsZUlkZW50aWZpZXIsIHNjb3BlLCBzdWJzY3JpcHRpb25JZGVu
dGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogfQpAQCAtNDgzLDE5ICs0ODIs
NDEgQEAgdm9pZCBQdXNoU2VydmljZTo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KGNvbnN0IFN0
cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QKIAogICAgICAgICBSRUxFQVNFX0xPRyhQdXNo
LCAiUmVtb3ZpbmcgYWxsIHN1YnNjcmlwdGlvbnMgYXNzb2NpYXRlZCB3aXRoICV7cHVibGljfXMg
JXtzZW5zaXRpdmV9cyBzaW5jZSBpdCBwcm9jZXNzZWQgJXUgc2lsZW50IHB1c2hlcyIsIGJ1bmRs
ZUlkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgc2VjdXJpdHlPcmlnaW4udXRmOCgpLmRhdGEoKSwg
c2lsZW50UHVzaENvdW50KTsKIAotICAgICAgICBtX2RhdGFiYXNlLT5yZW1vdmVSZWNvcmRzQnlC
dW5kbGVJZGVudGlmaWVyQW5kU2VjdXJpdHlPcmlnaW4oYnVuZGxlSWRlbnRpZmllciwgc2VjdXJp
dHlPcmlnaW4sIFt0aGlzLCBidW5kbGVJZGVudGlmaWVyLCBzZWN1cml0eU9yaWdpbiwgc2lsZW50
UHVzaENvdW50LCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0oYXV0byYmIHJlbW92ZWRSZWNv
cmRzKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVtb3ZlZFJl
Y29yZHMpIHsKLSAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnVuc3Vic2NyaWJlKHJlY29y
ZC50b3BpYywgcmVjb3JkLnNlcnZlclZBUElEUHVibGljS2V5LCBbdG9waWMgPSByZWNvcmQudG9w
aWNdKGJvb2wgdW5zdWJzY3JpYmVkLCBOU0Vycm9yKiBlcnJvcikgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoIXVuc3Vic2NyaWJlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFB1c2gsICJJbmNyZW1lbnRTaWxlbnRQdXNoUmVxdWVzdCBjb3VsZG4ndCByZW1v
dmUgc3Vic2NyaXB0aW9uIGZvciB0b3BpYyAle3NlbnNpdGl2ZX1zOiAle3B1YmxpY31zIGNvZGU6
ICVsbGQpIiwgdG9waWMudXRmOCgpLmRhdGEoKSwgZXJyb3IuZG9tYWluLlVURjhTdHJpbmcgPzog
Im5vbmUiLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihlcnJvci5jb2RlKSk7Ci0gICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIHJlbW92ZVJlY29yZHNJbXBsKGJ1bmRsZUlk
ZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIHNp
bGVudFB1c2hDb3VudF0oYXV0byYmKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGhhbmRsZXIoc2ls
ZW50UHVzaENvdW50KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUHVzaFNlcnZp
Y2U6OnJlbW92ZVJlY29yZHNGb3JCdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgYnVuZGxl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYgaGFuZGxlcikK
K3sKKyAgICByZW1vdmVSZWNvcmRzSW1wbChidW5kbGVJZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQs
IFdURk1vdmUoaGFuZGxlcikpOworfQorCit2b2lkIFB1c2hTZXJ2aWNlOjpyZW1vdmVSZWNvcmRz
Rm9yQnVuZGxlSWRlbnRpZmllckFuZE9yaWdpbihjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dW5zaWduZWQpPiYmIGhhbmRsZXIpCit7CisgICAgcmVtb3ZlUmVjb3Jkc0ltcGwoYnVuZGxlSWRl
bnRpZmllciwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUoaGFuZGxlcikpOworfQogCi0gICAgICAg
ICAgICB1cGRhdGVUb3BpY0xpc3RzKG1fY29ubmVjdGlvbiwgbV9kYXRhYmFzZSwgW3NpbGVudFB1
c2hDb3VudCwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICAgICAgaGFuZGxlcihzaWxlbnRQdXNoQ291bnQpOwordm9pZCBQdXNoU2VydmljZTo6cmVt
b3ZlUmVjb3Jkc0ltcGwoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4mIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVuc2lnbmVkKT4mJiBoYW5kbGVyKQoreworICAgIGF1dG8gcmVtb3ZlZFJlY29yZHNIYW5kbGVy
ID0gW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBoYW5kbGVyID0gV1RG
TW92ZShoYW5kbGVyKV0oVmVjdG9yPFJlbW92ZWRQdXNoUmVjb3JkPiYmIHJlbW92ZWRSZWNvcmRz
KSBtdXRhYmxlIHsKKyAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiByZW1vdmVkUmVjb3Jkcykg
eworICAgICAgICAgICAgbV9jb25uZWN0aW9uLT51bnN1YnNjcmliZShyZWNvcmQudG9waWMsIHJl
Y29yZC5zZXJ2ZXJWQVBJRFB1YmxpY0tleSwgW3RvcGljID0gcmVjb3JkLnRvcGljXShib29sIHVu
c3Vic2NyaWJlZCwgTlNFcnJvciogZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXVuc3Vi
c2NyaWJlZCkKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHVzaCwgInJl
bW92ZVJlY29yZHNJbXBsIGNvdWxkbid0IHJlbW92ZSBzdWJzY3JpcHRpb24gZm9yIHRvcGljICV7
c2Vuc2l0aXZlfXM6ICV7cHVibGljfXMgY29kZTogJWxsZCkiLCB0b3BpYy51dGY4KCkuZGF0YSgp
LCBlcnJvci5kb21haW4uVVRGOFN0cmluZyA/OiAibm9uZSIsIHN0YXRpY19jYXN0PGludDY0X3Q+
KGVycm9yLmNvZGUpKTsKICAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgdXBk
YXRlVG9waWNMaXN0cyhtX2Nvbm5lY3Rpb24sIG1fZGF0YWJhc2UsIFtjb3VudCA9IHJlbW92ZWRS
ZWNvcmRzLnNpemUoKSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBoYW5kbGVyKGNvdW50KTsKICAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgfTsK
KworICAgIGlmIChzZWN1cml0eU9yaWdpbikKKyAgICAgICAgbV9kYXRhYmFzZS0+cmVtb3ZlUmVj
b3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKGJ1bmRsZUlkZW50aWZpZXIs
ICpzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShyZW1vdmVkUmVjb3Jkc0hhbmRsZXIpKTsKKyAgICBl
bHNlCisgICAgICAgIG1fZGF0YWJhc2UtPnJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXIo
YnVuZGxlSWRlbnRpZmllciwgV1RGTW92ZShyZW1vdmVkUmVjb3Jkc0hhbmRsZXIpKTsKIH0KIAog
ZW51bSBjbGFzcyBDb250ZW50RW5jb2RpbmcgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hE
YWVtb24uaAppbmRleCBiNDBkYTE2NjMxNGE0ZTFiZGM0NmRkZDI2NDM4YzJhZjUzODA4OGIyLi45
NzgyMzhmNTE3YjBkM2ZiOTZkOTQwNjMxMTMzZmM4ZTQwYWE0NDk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtODEsMTAgKzgxLDEyIEBAIHB1YmxpYzoKICAgICB2
b2lkIGluamVjdEVuY3J5cHRlZFB1c2hNZXNzYWdlRm9yVGVzdGluZyhDbGllbnRDb25uZWN0aW9u
KiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKENsaWVudENvbm5lY3Rpb24qLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlB1c2hNZXNzYWdlPiYpPiYmIHJl
cGx5U2VuZGVyKTsKICAgICB2b2lkIHN1YnNjcmliZVRvUHVzaFNlcnZpY2UoQ2xpZW50Q29ubmVj
dGlvbiosIGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXBwbGlj
YXRpb25TZXJ2ZXJLZXksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRXhwZWN0ZWQ8V2Vi
Q29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYg
cmVwbHlTZW5kZXIpOwotICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoQ2xpZW50
Q29ubmVjdGlvbiosIGNvbnN0IFVSTCYgc2NvcGVVUkwsIFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRp
b25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPGJvb2ws
IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgcmVwbHlTZW5kZXIpOworICAgIHZvaWQgdW5z
dWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFVSTCYgc2Nv
cGVVUkwsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXI+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGE+Jik+JiYgcmVwbHlTZW5kZXIpOwogICAgIHZvaWQgZ2V0UHVzaFN1YnNjcmlw
dGlvbihDbGllbnRDb25uZWN0aW9uKiwgY29uc3QgVVJMJiBzY29wZVVSTCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1c2hTdWJz
Y3JpcHRpb25EYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4mJiByZXBseVNlbmRlcik7
CiAgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKENsaWVudENvbm5lY3Rpb24qLCBjb25z
dCBVUkwmIHNjb3BlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPHVp
bnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgcmVwbHlTZW5kZXIpOwogICAgIHZv
aWQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50KENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVk
KT4mJik7CisgICAgdm9pZCByZW1vdmVBbGxQdXNoU3Vic2NyaXB0aW9ucyhDbGllbnRDb25uZWN0
aW9uKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYpOworICAgIHZvaWQgcmVt
b3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4oQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWdu
ZWQpPiYmKTsKIAogICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgYnJvYWRjYXN0QWxsQ29ubmVjdGlvbklkZW50aXRpZXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQppbmRleCA4ZWRmN2JkZDQ1MGUxN2JlNzk2NDkz
M2UzMzk5NGU5YjVhZjU5MzJjLi5jYmQxMjcwM2I1OWVjZjVmMjUwN2M4MGRhYTAwM2JmZTJjOTcz
NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC0xMDUsNyAr
MTA1LDcgQEAgUkVQTFkoY29uc3QgRXhwZWN0ZWQ8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRh
dGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JikKIEVORAogCiBGVU5DVElPTih1bnN1YnNjcmli
ZUZyb21QdXNoU2VydmljZSkKLUFSR1VNRU5UUyhVUkwsIFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRp
b25JZGVudGlmaWVyKQorQVJHVU1FTlRTKFVSTCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQdXNo
U3Vic2NyaXB0aW9uSWRlbnRpZmllcj4pCiBSRVBMWShjb25zdCBFeHBlY3RlZDxib29sLCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhPiYpCiBFTkQKIApAQCAtMTI0LDYgKzEyNCwxNiBAQCBBUkdVTUVO
VFMoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhKQogUkVQTFkodW5zaWduZWQpCiBFTkQKIAor
RlVOQ1RJT04ocmVtb3ZlQWxsUHVzaFN1YnNjcmlwdGlvbnMpCitBUkdVTUVOVFMoKQorUkVQTFko
dW5zaWduZWQpCitFTkQKKworRlVOQ1RJT04ocmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmln
aW4pCitBUkdVTUVOVFMoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhKQorUkVQTFkodW5zaWdu
ZWQpCitFTkQKKwogI3VuZGVmIEZVTkNUSU9OCiAjdW5kZWYgQVJHVU1FTlRTCiAjdW5kZWYgUkVQ
TFkKQEAgLTIxMyw2ICsyMjMsMjAgQEAgV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGluY3JlbWVu
dFNpbGVudFB1c2hDb3VudDo6ZW5jb2RlUmVwbHkodW5zaWduZWQgcmVwbHkpCiAgICAgcmV0dXJu
IGVuY29kZXIudGFrZUJ1ZmZlcigpOwogfQogCitXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UgcmVt
b3ZlQWxsUHVzaFN1YnNjcmlwdGlvbnM6OmVuY29kZVJlcGx5KHVuc2lnbmVkIHJlcGx5KQorewor
ICAgIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCByZXBs
eTsKKyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVyKCk7Cit9CisKK1dlYlB1c2hEOjpFbmNv
ZGVkTWVzc2FnZSByZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdpbjo6ZW5jb2RlUmVwbHko
dW5zaWduZWQgcmVwbHkpCit7CisgICAgV2ViS2l0OjpEYWVtb246OkVuY29kZXIgZW5jb2RlcjsK
KyAgICBlbmNvZGVyIDw8IHJlcGx5OworICAgIHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgTWVzc2FnZUluZm8KIAogdGVtcGxhdGU8dHlwZW5hbWUgSW5m
bz4KQEAgLTQxNSw2ICs0MzksMTIgQEAgdm9pZCBEYWVtb246OmRlY29kZUFuZEhhbmRsZU1lc3Nh
Z2UoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCBNZXNzYWdlVHlwZSBtZXMKICAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpJbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQ6CiAgICAgICAgIGhhbmRsZVdl
YlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6aW5jcmVtZW50U2lsZW50UHVzaENv
dW50PihjbGllbnRDb25uZWN0aW9uLCBlbmNvZGVkTWVzc2FnZSwgV1RGTW92ZShyZXBseVNlbmRl
cikpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpSZW1vdmVBbGxQdXNo
U3Vic2NyaXB0aW9uczoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1l
c3NhZ2VJbmZvOjpyZW1vdmVBbGxQdXNoU3Vic2NyaXB0aW9ucz4oY2xpZW50Q29ubmVjdGlvbiwg
ZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBNZXNzYWdlVHlwZTo6UmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW46Cisg
ICAgICAgIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6cmVtb3Zl
UHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4+KGNsaWVudENvbm5lY3Rpb24sIGVuY29kZWRNZXNz
YWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApA
QCAtNjA5LDcgKzYzOSw3IEBAIHZvaWQgRGFlbW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKENs
aWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgc2NvCiAgICAgfSk7CiB9CiAK
LXZvaWQgRGFlbW9uOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShDbGllbnRDb25uZWN0aW9u
KiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBXZWJDb3JlOjpQdXNoU3Vic2NyaXB0
aW9uSWRlbnRpZmllciBzdWJzY3JpcHRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgcmVw
bHlTZW5kZXIpCit2b2lkIERhZW1vbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoQ2xpZW50
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgVVJMJiBzY29wZVVSTCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcj4gc3Vic2NyaXB0aW9uSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDxib29sLCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhPiYpPiYmIHJlcGx5U2VuZGVyKQogewogICAgIHJ1bkFmdGVyU3RhcnRp
bmdQdXNoU2VydmljZShbdGhpcywgYnVuZGxlSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPmhvc3RB
cHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKSwgc2NvcGUgPSBzY29wZVVSTC5zdHJpbmcoKSwgc3Vi
c2NyaXB0aW9uSWRlbnRpZmllciwgcmVwbHlTZW5kZXIgPSBXVEZNb3ZlKHJlcGx5U2VuZGVyKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX3B1c2hTZXJ2aWNlKSB7CkBAIC02NTMsNiArNjgz
LDMwIEBAIHZvaWQgRGFlbW9uOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoQ2xpZW50Q29ubmVj
dGlvbiogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yCiAgICAgfSk7CiB9CiAKK3ZvaWQgRGFlbW9u
OjpyZW1vdmVBbGxQdXNoU3Vic2NyaXB0aW9ucyhDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9u
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJiByZXBseVNlbmRlcikKK3sKKyAg
ICBydW5BZnRlclN0YXJ0aW5nUHVzaFNlcnZpY2UoW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIgPSBj
b25uZWN0aW9uLT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCksIHJlcGx5U2VuZGVyID0g
V1RGTW92ZShyZXBseVNlbmRlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbV9wdXNoU2Vy
dmljZSkgeworICAgICAgICAgICAgcmVwbHlTZW5kZXIoMCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBtX3B1c2hTZXJ2aWNlLT5yZW1vdmVSZWNvcmRzRm9yQnVu
ZGxlSWRlbnRpZmllcihidW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgRGFlbW9uOjpyZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdp
bihDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVk
KT4mJiByZXBseVNlbmRlcikKK3sKKyAgICBydW5BZnRlclN0YXJ0aW5nUHVzaFNlcnZpY2UoW3Ro
aXMsIGJ1bmRsZUlkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVu
dGlmaWVyKCksIHNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4udG9TdHJpbmcoKSwgcmVw
bHlTZW5kZXIgPSBXVEZNb3ZlKHJlcGx5U2VuZGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCFtX3B1c2hTZXJ2aWNlKSB7CisgICAgICAgICAgICByZXBseVNlbmRlcigwKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fcHVzaFNlcnZpY2UtPnJlbW92ZVJl
Y29yZHNGb3JCdW5kbGVJZGVudGlmaWVyQW5kT3JpZ2luKGJ1bmRsZUlkZW50aWZpZXIsIHNlY3Vy
aXR5T3JpZ2luLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgfSk7Cit9CisKIENsaWVudENv
bm5lY3Rpb24qIERhZW1vbjo6dG9DbGllbnRDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QgY29u
bmVjdGlvbikKIHsKICAgICBhdXRvIGNsaWVudENvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAu
Z2V0KGNvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGVhODFmZmIyYjg2OTNiMDkzMDkwMGIyYmU5NWIzNDkxYWRiNmE0NTIuLjBl
NDQyNGFlYjVkNGE3ZmIxZTAyZWJiODg1NGNjZDlhMTNlYzFmZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0w
My0xNiAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgcHVzaCBz
dWJzY3JpcHRpb25zIHdoZW4gYXNzb2NpYXRlZCBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb25z
IGFyZSByZW1vdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzc5ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgbmV3IHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRlbGV0ZSBwdXNoIHN1YnNj
cmlwdGlvbnMgd2hlbiB1bnJlZ2lzdGVyaW5nIGEgc2VydmljZQorICAgICAgICB3b3JrZXIgb3Ig
ZGVsZXRpbmcgd2Vic2l0ZSBkYXRhLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIyLTAzLTEyICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IEZBTExCQUNLX1BMQVRG
T1JNX05BTUUgaW4gcGxhY2Ugb2YgRkFMTEJBQ0tfUExBVEZPUk0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQppbmRleCBk
MTRjOTcwNTdkN2ZhNjAzYjU3Yzc1NTM5NmFlZDE5NDNmMTc0NDBhLi5hNDUwYzgwZjljMzgxN2Mw
NjBiZGU2ODRjNDdiMjRiOTExMjY4MTQ4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVBy
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJp
bWVudGFsRmVhdHVyZS5oPgpAQCAtNDUxLDYgKzQ1MiwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IFttX3dlYlZpZXcgbG9hZFJlcXVlc3Q6bV9zZXJ2ZXItPnJlcXVlc3QoKV07CiAgICAgfQogCisg
ICAgYm9vbCBoYXNQdXNoU3Vic2NyaXB0aW9uKCkKKyAgICB7CisgICAgICAgIF9fYmxvY2sgYm9v
bCBkb25lID0gZmFsc2U7CisgICAgICAgIF9fYmxvY2sgYm9vbCByZXN1bHQgPSBmYWxzZTsKKwor
ICAgICAgICBbbV9kYXRhU3RvcmUgX3Njb3BlVVJMOm1fc2VydmVyLT5yZXF1ZXN0KCkuVVJMIGhh
c1B1c2hTdWJzY3JpcHRpb25Gb3JUZXN0aW5nOl4oQk9PTCBmZXRjaGVkUmVzdWx0KSB7CisgICAg
ICAgICAgICByZXN1bHQgPSBmZXRjaGVkUmVzdWx0OworICAgICAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgICAgIH1dOworCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgfldlYlB1c2hEVGVzdCgpCiAg
ICAgewogICAgICAgICBjbGVhblVwVGVzdFdlYlB1c2hEKG1fdGVtcERpcmVjdG9yeS5nZXQoKSk7
CkBAIC02NDYsNiArNjYxLDggQEAgVEVTVF9GKFdlYlB1c2hEVGVzdCwgU3Vic2NyaWJlVGVzdCkK
IAogICAgIC8vIENsaWVudCBwdWJsaWMga2V5IHNob3VsZCBiZSA2NSBieXRlcyAoODcgYnl0ZXMg
aW4gdW5wYWRkZWQgYmFzZTY0dXJsKS4KICAgICBBU1NFUlRfRVEoW3N1YnNjcmlwdGlvbltAImtl
eXMiXVtAInAyNTZkaCJdIGxlbmd0aF0sIDg3dSk7CisKKyAgICBBU1NFUlRfVFJVRShoYXNQdXNo
U3Vic2NyaXB0aW9uKCkpOwogfQogCiBURVNUX0YoV2ViUHVzaERUZXN0LCBTdWJzY3JpYmVGYWls
dXJlVGVzdCkKQEAgLTY4Myw2ICs3MDAsOCBAQCBURVNUX0YoV2ViUHVzaERUZXN0LCBTdWJzY3Jp
YmVGYWlsdXJlVGVzdCkKICAgICAvLyBTcGVjIHNheXMgdGhhdCBhbiBlcnJvciBpbiB0aGUgcHVz
aCBzZXJ2aWNlIHNob3VsZCBiZSBhbiBBYm9ydEVycm9yLgogICAgIEFTU0VSVF9UUlVFKFtvYmog
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CiAgICAgQVNTRVJUX1RSVUUoW29iaiBo
YXNQcmVmaXg6QCJFcnJvcjogQWJvcnRFcnJvciJdKTsKKworICAgIEFTU0VSVF9GQUxTRShoYXNQ
dXNoU3Vic2NyaXB0aW9uKCkpOwogfQogCiBURVNUX0YoV2ViUHVzaERUZXN0LCBVbnN1YnNjcmli
ZVRlc3QpCkBAIC03MjIsNiArNzQxLDE0OSBAQCBURVNUX0YoV2ViUHVzaERUZXN0LCBVbnN1YnNj
cmliZVRlc3QpCiAgICAgLy8gRmlyc3QgdW5zdWJzY3JpYmUgc2hvdWxkIHN1Y2NlZWQuIFNlY29u
ZCBvbmUgc2hvdWxkIGZhaWwgc2luY2UgdGhlIGZpcnN0IG9uZSByZW1vdmVkIHRoZSByZWNvcmQg
ZnJvbSB0aGUgZGF0YWJhc2UuCiAgICAgaWQgZXhwZWN0ZWQgPSBAW0AoMSksIEAoMCldOwogICAg
IEFTU0VSVF9UUlVFKFtvYmogaXNFcXVhbDpleHBlY3RlZF0pOworCisgICAgQVNTRVJUX0ZBTFNF
KGhhc1B1c2hTdWJzY3JpcHRpb24oKSk7Cit9CisKK1RFU1RfRihXZWJQdXNoRFRlc3QsIFVuc3Vi
c2NyaWJlc09uU2VydmljZVdvcmtlclVucmVnaXN0ZXJUZXN0KQoreworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBzb3VyY2UgPSBSIkhUTUwoCisgICAgPHNjcmlwdCBzcmM9Ii9jb25zdGFudHMuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIoJy9zdy5qcycpLnRoZW4oYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCByZWdpc3Ry
YXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeTsKKyAgICAgICAgbGV0
IHJlc3VsdCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsZXQgc3Vic2NyaXB0
aW9uID0gYXdhaXQgcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyLnN1YnNjcmliZSh7CisgICAgICAg
ICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0cnVlLAorICAgICAgICAgICAgICAgIGFwcGxpY2F0
aW9uU2VydmVyS2V5OiBWQUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGF3YWl0IHJlZ2lzdHJhdGlvbi51bnJlZ2lzdGVyKCk7CisgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9ICJFcnJvcjogIiArIGU7CisgICAgICAg
IH0KKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubm90ZS5wb3N0TWVzc2Fn
ZShyZXN1bHQpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorICAgIClIVE1MIjsKKworICAgIF9f
YmxvY2sgUmV0YWluUHRyPGlkPiB1bnJlZ2lzdGVyU3VjY2VlZGVkID0gbmlsOworICAgIF9fYmxv
Y2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW21fbm90aWZpY2F0aW9uTWVzc2FnZUhhbmRsZXIg
c2V0TWVzc2FnZUhhbmRsZXI6XihpZCBtZXNzYWdlKSB7CisgICAgICAgIHVucmVnaXN0ZXJTdWNj
ZWVkZWQgPSBtZXNzYWdlOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIGxv
YWRSZXF1ZXN0KHNvdXJjZSwgIiIpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisKKyAgICBBU1NFUlRfVFJVRShbdW5yZWdpc3RlclN1Y2NlZWRlZCBpc0VxdWFsOkBZRVNd
KTsKKyAgICBBU1NFUlRfRkFMU0UoaGFzUHVzaFN1YnNjcmlwdGlvbigpKTsKK30KKworVEVTVF9G
KFdlYlB1c2hEVGVzdCwgVW5zdWJzY3JpYmVzT25DbGVhcmluZ0FsbFdlYnNpdGVEYXRhKQorewor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzb3VyY2UgPSBSIkhUTUwoCisgICAgPHNjcmlwdCBzcmM9
Ii9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgbmF2aWdhdG9yLnNl
cnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oYXN5bmMgKCkgPT4geworICAgICAg
ICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFk
eTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBsZXQgc3Vic2NyaXB0aW9uID0gYXdhaXQgcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyLnN1YnNj
cmliZSh7CisgICAgICAgICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0cnVlLAorICAgICAgICAg
ICAgICAgIGFwcGxpY2F0aW9uU2VydmVyS2V5OiBWQUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIHJlc3VsdCA9ICJTdWJzY3JpYmVkIjsKKyAgICAgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICAgICAgcmVzdWx0ID0gIkVycm9yOiAiICsgZTsKKyAgICAgICAgfQor
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3RlLnBvc3RNZXNzYWdlKHJl
c3VsdCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+CisgICAgKUhUTUwiOworCisgICAgX19ibG9j
ayBSZXRhaW5QdHI8aWQ+IHJlc3VsdCA9IG5pbDsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZh
bHNlOworICAgIFttX25vdGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVyIHNldE1lc3NhZ2VIYW5kbGVy
Ol4oaWQgbWVzc2FnZSkgeworICAgICAgICByZXN1bHQgPSBtZXNzYWdlOworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIGxvYWRSZXF1ZXN0KHNvdXJjZSwgIiIpOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBBU1NFUlRfVFJVRShbcmVzdWx0
IGlzRXF1YWxUb1N0cmluZzpAIlN1YnNjcmliZWQiXSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgcmVt
b3ZlZERhdGEgPSBmYWxzZTsKKyAgICBbbV9kYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W05T
U2V0IHNldFdpdGhPYmplY3Q6V0tXZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxl
cjpeKHZvaWQpIHsKKyAgICAgICAgcmVtb3ZlZERhdGEgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVtb3ZlZERhdGEpOworCisgICAgQVNTRVJUX0ZBTFNF
KGhhc1B1c2hTdWJzY3JpcHRpb24oKSk7Cit9CisKK1RFU1RfRihXZWJQdXNoRFRlc3QsIFVuc3Vi
c2NyaWJlc09uQ2xlYXJpbmdXZWJzaXRlRGF0YUZvck9yaWdpbikKK3sKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogc291cmNlID0gUiJIVE1MKAorICAgIDxzY3JpcHQgc3JjPSIvY29uc3RhbnRzLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJl
Z2lzdGVyKCcvc3cuanMnKS50aGVuKGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgcmVnaXN0
cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVhZHk7CisgICAgICAgIGxl
dCByZXN1bHQgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbGV0IHN1YnNjcmlw
dGlvbiA9IGF3YWl0IHJlZ2lzdHJhdGlvbi5wdXNoTWFuYWdlci5zdWJzY3JpYmUoeworICAgICAg
ICAgICAgICAgIHVzZXJWaXNpYmxlT25seTogdHJ1ZSwKKyAgICAgICAgICAgICAgICBhcHBsaWNh
dGlvblNlcnZlcktleTogVkFMSURfU0VSVkVSX0tFWQorICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICByZXN1bHQgPSAiU3Vic2NyaWJlZCI7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgIHJlc3VsdCA9ICJFcnJvcjogIiArIGU7CisgICAgICAgIH0KKyAgICAgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubm90ZS5wb3N0TWVzc2FnZShyZXN1bHQpOworICAgIH0p
OworICAgIDwvc2NyaXB0PgorICAgIClIVE1MIjsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPGlk
PiByZXN1bHQgPSBuaWw7CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbbV9u
b3RpZmljYXRpb25NZXNzYWdlSGFuZGxlciBzZXRNZXNzYWdlSGFuZGxlcjpeKGlkIG1lc3NhZ2Up
IHsKKyAgICAgICAgcmVzdWx0ID0gbWVzc2FnZTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
fV07CisKKyAgICBsb2FkUmVxdWVzdChzb3VyY2UsICIiKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworCisgICAgQVNTRVJUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJp
bmc6QCJTdWJzY3JpYmVkIl0pOworCisgICAgX19ibG9jayBib29sIGZldGNoZWRSZWNvcmRzID0g
ZmFsc2U7CisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3Jk
ICo+PiByZWNvcmRzOworICAgIFttX2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczpb
TlNTZXQgc2V0V2l0aE9iamVjdDpXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25zXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAq
PiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAgcmVjb3JkcyA9IGRhdGFSZWNvcmRzOworICAgICAg
ICBmZXRjaGVkUmVjb3JkcyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZmZXRjaGVkUmVjb3Jkcyk7CisKKyAgICBXS1dlYnNpdGVEYXRhUmVjb3JkICpmaWx0
ZXJlZFJlY29yZCA9IG5pbDsKKyAgICBmb3IgKFdLV2Vic2l0ZURhdGFSZWNvcmQgKnJlY29yZCBp
biByZWNvcmRzLmdldCgpKSB7CisgICAgICAgIGZvciAoTlNTdHJpbmcgKm9yaWdpblN0cmluZyBp
biByZWNvcmQuX29yaWdpbnNTdHJpbmdzKSB7CisgICAgICAgICAgICBpZiAoW29yaWdpblN0cmlu
ZyBpc0VxdWFsVG9TdHJpbmc6bV9zZXJ2ZXItPm9yaWdpbigpXSkgeworICAgICAgICAgICAgICAg
IGZpbHRlcmVkUmVjb3JkID0gcmVjb3JkOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVF9UUlVFKGZpbHRlcmVkUmVjb3Jk
KTsKKworICAgIF9fYmxvY2sgYm9vbCByZW1vdmVkRGF0YSA9IGZhbHNlOworICAgIFttX2RhdGFT
dG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpXS1dlYnNpdGVEYXRh
VHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXSBmb3JEYXRhUmVjb3JkczpbTlNBcnJheSBh
cnJheVdpdGhPYmplY3Q6ZmlsdGVyZWRSZWNvcmRdIGNvbXBsZXRpb25IYW5kbGVyOl4odm9pZCkg
eworICAgICAgICByZW1vdmVkRGF0YSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZW1vdmVkRGF0YSk7CisKKyAgICBBU1NFUlRfRkFMU0UoaGFzUHVzaFN1
YnNjcmlwdGlvbigpKTsKIH0KIAogI2lmIEVOQUJMRShJTlNUQUxMX0NPT1JESU5BVElPTl9CVU5E
TEVTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455104</attachid>
            <date>2022-03-18 10:00:09 -0700</date>
            <delta_ts>2022-03-18 12:20:48 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-237983-20220318100008.patch</filename>
            <type>text/plain</type>
            <size>44795</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmNDRhNzY4MjZhYWI5NzBl
ZTFmZDIwMWE5NDQwNGE5NzA4NjAxYTEuLjVjMDQzZTRiYzU3YzYwNTMxZWIzNGEwZTIwZjI4Nzg2
NmUxY2E3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjItMDMtMTggIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3
aGVuIGFzc29jaWF0ZWQgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9ucyBhcmUgcmVtb3ZlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBXaGVuIGEgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpcyByZW1vdmVkLCB3ZSBhbHNvIG5lZWQgdG8gcmVtb3Zl
IGl0cyBhc3NvY2lhdGVkCisgICAgICAgIFB1c2hTdWJzY3JpcHRpb24uIFRoaXMgY2FuIG9jY3Vy
IHdoZW46CisKKyAgICAgICAgICAxLiBUaGUgYXBwbGljYXRpb24gY2FsbHMgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi51bnJlZ2lzdGVyLiBUaGlzIGlzIGltcGxlbWVudGVkIGJ5CisgICAgICAg
ICAgICAgaGF2aW5nIHJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50IGNhbGwgdW5zdWJz
Y3JpYmVGcm9tUHVzaFNlcnZpY2UgaW4gd2VicHVzaGQuCisgICAgICAgICAgICAgVGhlIGlkZW50
aWZpZXIgcGFzc2VkIHRvIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlIGlzIG5vdyBvcHRpb25h
bDsgaWYgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgICAgICBpcyBub3QgcHJlc2VudCwgdGhlbiB3
ZSBkZWxldGUgd2hhdGV2ZXIgUHVzaFN1YnNjcmlwdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGggdGhl
IGdpdmVuCisgICAgICAgICAgICAgc2NvcGUgVVJMLgorCisgICAgICAgICAgMi4gVGhlIHVzZXIg
Y2xlYXJzIHdlYnNpdGUgZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIG9yaWdpbi4gVGhpcyBpcyBpbXBs
ZW1lbnRlZCBieSBoYXZpbmcKKyAgICAgICAgICAgICBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnMgaW52b2tlIHJlbW92ZVB1c2hTdWJzY3JpcHRpb25zRm9yT3JpZ2luIGluIHdlYnB1c2hkLgor
CisgICAgICAgICAgMy4gVGhlIHVzZXIgY2xlYXJzIGFsbCB3ZWJzaXRlIGRhdGEuIFRoaXMgaXMg
aW1wbGVtZW50ZWQgYnkgaGF2aW5nIGRlbGV0ZVdlYnNpdGVEYXRhCisgICAgICAgICAgICAgaW52
b2tlIHJlbW92ZUFsbFB1c2hTdWJzY3JpcHRpb25zIGluIHdlYnB1c2hkLgorCisgICAgICAgIENv
dmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc1B1c2hTdWJzY3JpcHRpb25Gb3JUZXN0aW5nKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6dW5zdWJzY3JpYmVG
cm9tUHVzaFNlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlcjo6cmVtb3ZlQWxsUHVzaFN1YnNjcmlwdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6cmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNh
dGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQpOgorICAgICAgICAqIFNo
YXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hE
OjptZXNzYWdlVHlwZVNlbmRzUmVwbHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Nj
b3BlVVJMOmhhc1B1c2hTdWJzY3JpcHRpb25Gb3JUZXN0aW5nOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNQdXNoU3Vic2NyaXB0aW9uRm9yVGVzdGluZyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIHdlYnB1c2hkL1B1c2hTZXJ2aWNlLmg6CisgICAgICAgICogd2VicHVzaGQvUHVzaFNlcnZp
Y2UubW06CisgICAgICAgIChXZWJQdXNoRDo6VW5zdWJzY3JpYmVSZXF1ZXN0OjpVbnN1YnNjcmli
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViUHVzaEQ6OlVuc3Vic2NyaWJlUmVxdWVzdDo6c3RhcnRJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJQdXNoRDo6UHVzaFNlcnZpY2U6OnVuc3Vic2NyaWJlKToK
KyAgICAgICAgKFdlYlB1c2hEOjpQdXNoU2VydmljZTo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50
KToKKyAgICAgICAgKFdlYlB1c2hEOjpQdXNoU2VydmljZTo6cmVtb3ZlUmVjb3Jkc0ZvckJ1bmRs
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViUHVzaEQ6OlB1c2hTZXJ2aWNlOjpyZW1vdmVSZWNv
cmRzRm9yQnVuZGxlSWRlbnRpZmllckFuZE9yaWdpbik6CisgICAgICAgIChXZWJQdXNoRDo6UHVz
aFNlcnZpY2U6OnJlbW92ZVJlY29yZHNJbXBsKToKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNo
RGFlbW9uLmg6CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAg
KFdlYlB1c2hEOjpNZXNzYWdlSW5mbzo6cmVtb3ZlQWxsUHVzaFN1YnNjcmlwdGlvbnM6OmVuY29k
ZVJlcGx5KToKKyAgICAgICAgKFdlYlB1c2hEOjpNZXNzYWdlSW5mbzo6cmVtb3ZlUHVzaFN1YnNj
cmlwdGlvbnNGb3JPcmlnaW46OmVuY29kZVJlcGx5KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVt
b246OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6
dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6
cmVtb3ZlQWxsUHVzaFN1YnNjcmlwdGlvbnMpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6
cmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4pOgorCiAyMDIyLTAzLTE4ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVjeWNsaW5nIGEgd2Vi
Z2wgY29udGV4dCB3aGVuIGl0IGhhcyBiZWVuIGxvc3QgYW5kIHJlc3RvcmVkIGNhdXNlcyBhIGNy
YXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IGM3NDQwNmE1NThhZjRlNjg0ZmE0MDQ3YzYwODM0ODVhMWU1NjEyNjguLmViMmY1YmJi
ZGZhNmUzMWE1OTAwY2FjN2YyYTMwYjU3NmU1NTBjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNTExLDggKzE1MTEsMTMgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2kKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7Ci0gICAgaWYgKGNsZWFy
U2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCisg
ICAgaWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYm
IHNlc3Npb24pIHsKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5jbGVhckFsbChb
Y2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FU
SU9OUykKKyAgICAgICAgc2Vzc2lvbi0+bm90aWZpY2F0aW9uTWFuYWdlcigpLnJlbW92ZUFsbFB1
c2hTdWJzY3JpcHRpb25zKFtjbGVhclRhc2tzSGFuZGxlcl0oYXV0byYmKSB7IH0pOworI2VuZGlm
CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVO
VElPTikKQEAgLTE2MDUsOCArMTYxMCwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVX
ZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAg
IGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKTsKICAgICBpZiAoY2xlYXJT
ZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikgewog
ICAgICAgICBhdXRvJiBzZXJ2ZXIgPSBzZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpOwotICAgICAg
ICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKKyAgICAgICAgZm9yIChhdXRv
JiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpIHsKICAgICAgICAgICAgIHNlcnZlci5jbGVhcihv
cmlnaW5EYXRhLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisKKyNpZiBFTkFCTEUoQlVJTFRf
SU5fTk9USUZJQ0FUSU9OUykKKyAgICAgICAgICAgIHNlc3Npb24tPm5vdGlmaWNhdGlvbk1hbmFn
ZXIoKS5yZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEg
eyBvcmlnaW5EYXRhIH0sIFtjbGVhclRhc2tzSGFuZGxlcl0oYXV0byYmKSB7IH0pOworI2VuZGlm
CisgICAgICAgIH0KICAgICB9CiAjZW5kaWYKIApAQCAtMTc5OCw4ICsxODA4LDEzIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgICAgICAgICAgICAgaWYgKCFkb21haW5zVG9EZWxldGVB
bGxOb25Db29raWVXZWJzaXRlRGF0YUZvci5jb250YWlucyhSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbUhvc3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCkpKQogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1f
ZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNl
Y3VyaXR5T3JpZ2luLmhvc3QpKTsKLSAgICAgICAgICAgICAgICBpZiAoc2Vzc2lvbikKKyAgICAg
ICAgICAgICAgICBpZiAoc2Vzc2lvbikgewogICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5l
bnN1cmVTV1NlcnZlcigpLmNsZWFyKHNlY3VyaXR5T3JpZ2luLCBbY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7IH0pOworCisjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCisgICAgICAgICAg
ICAgICAgICAgIHNlc3Npb24tPm5vdGlmaWNhdGlvbk1hbmFnZXIoKS5yZW1vdmVQdXNoU3Vic2Ny
aXB0aW9uc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEgeyBzZWN1cml0eU9yaWdpbiB9LCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYpIHsgfSk7CisjZW5kaWYKKyAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTIzMTQsNiArMjMyOSwy
MCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRp
b25QZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRAogICAgIGNhbGxiYWNrKHsgfSk7CiB9CiAKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6Omhhc1B1c2hTdWJzY3JpcHRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMJiYgc2NvcGVVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY2FsbGJhY2spCit7CisjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMp
CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Cisg
ICAgICAgIHNlc3Npb24tPm5vdGlmaWNhdGlvbk1hbmFnZXIoKS5nZXRQdXNoU3Vic2NyaXB0aW9u
KFdURk1vdmUoc2NvcGVVUkwpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byAm
JnJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQgJiYgcmVzdWx0
LT5oYXNfdmFsdWUoKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKKyAgICBjYWxsYmFjayhmYWxzZSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
cXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRP
cmlnaW4mIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50
NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+KT4mJiBjYWxsYmFjaykKIHsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlcXVl
c3RTdG9yYWdlU3BhY2UgeyBzZXNzaW9uSUQsIG9yaWdpbiwgcXVvdGEsIGN1cnJlbnRTaXplLCBz
cGFjZVJlcXVpcmVkIH0sIFdURk1vdmUoY2FsbGJhY2spLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAwNjM5NjVhMTZhOTQxNGNjODQ3
NTcyYTIxZGIyNDE4YjQ3YmVhMThmLi5mNzcwNDVlNWFmOGU0MzcyMTYyYTUxNjdjYWZjMDA4NGQz
MDllODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0zNzYsNiArMzc2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkZWxldGVQdXNoQW5k
Tm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKTsKICAgICB2b2lkIGdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jik+JiYpOworICAgIHZvaWQgaGFzUHVzaFN1YnNj
cmlwdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCAxY2YzMmVhZDYwYmIzNGZhMjJlZjRkZDM5ZTk4NTYwOGY3ZTY2
YjI0Li42Nzg4ZDY1Y2M2YThjY2QzZjExZjkwYjJkNjc3OWUyMWFiZDFjZGM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTIxNSw0ICsyMTUsNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAjZW5kaWYKICAgICBEZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0
cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBvcmlnaW4pIC0+IChTdHJpbmcgZXJyb3JNZXNzYWdlKQogICAgIEdldE9yaWdp
bnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpCisg
ICAgSGFzUHVzaFN1YnNjcmlwdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBVUkwgc2NvcGVVUkwpIC0+IChib29sIGhhc1N1YnNjcmlwdGlvbikKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNh
dGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDhlN2UwMWUxZTNjZjE5
ZjEwZmFiYjZlMjRhNTQ4ZDY3MTc0ZmNmMjMuLmMxMzNjMTBlZjQzOTM4N2NhOGRhODExNWIwNWE4
ODdjYjc0MWYzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXI6OnN1YnNjcmliZVRvUHVzaFNlcnZpY2UoVVJMJiYgc2NvcGVVUkwsIFZlY3Rvcjx1CiAgICAg
c2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpTdWJzY3JpYmVUb1B1
c2hTZXJ2aWNlPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShzY29wZVVSTCks
IFdURk1vdmUoYXBwbGljYXRpb25TZXJ2ZXJLZXkpKTsKIH0KIAotdm9pZCBOZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlcjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoVVJMJiYgc2NvcGVVUkws
IFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyIHB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlcjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoVVJMJiYgc2NvcGVVUkwsIHN0ZDo6b3B0
aW9uYWw8UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXI+IHB1c2hTdWJzY3JpcHRpb25JZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0
aW9uKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlv
bkRhdGEgeyBBYm9ydEVycm9yLCAiTm8gY29ubmVjdGlvbiB0byBwdXNoIGRhZW1vbiJfcyB9KSk7
CkBAIC0xODUsNiArMTg1LDI2IEBAIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6Omlu
Y3JlbWVudFNpbGVudFB1c2hDb3VudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpCiAgICAgc2VuZE1l
c3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpJbmNyZW1lbnRTaWxlbnRQdXNo
Q291bnQ+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKG9yaWdpbikpOwogfQog
Cit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpyZW1vdmVBbGxQdXNoU3Vic2NyaXB0
aW9ucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5
PFdlYlB1c2hEOjpNZXNzYWdlVHlwZTo6UmVtb3ZlQWxsUHVzaFN1YnNjcmlwdGlvbnM+KFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlcjo6cmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmRN
ZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpNZXNzYWdlVHlwZTo6UmVtb3ZlUHVzaFN1YnNjcmlw
dGlvbnNGb3JPcmlnaW4+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKG9yaWdp
bikpOworfQorCiB0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CiB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVz
c2FnZShBcmdzJiYuLi4gYXJncykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3Rp
ZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggNGIyNDdjZjQ2ZDdlYjg1YzcxMGFiYjJkNThlZmQ4YTEz
YTNjYTAxMS4uMjM3MmUyZDhiMGU5NTEzNjhjZjY0OTU1MTVhZjE2YTExMmZlMTk2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTU4LDEwICs1OCwx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYmKTsKIAogICAgIHZv
aWQgc3Vic2NyaWJlVG9QdXNoU2VydmljZShVUkwmJiBzY29wZVVSTCwgVmVjdG9yPHVpbnQ4X3Q+
JiYgYXBwbGljYXRpb25TZXJ2ZXJLZXksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYp
PiYmKTsKLSAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFVSTCYmIHNjb3BlVVJM
LCBXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CisgICAg
dm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShVUkwmJiBzY29wZVVSTCwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOwog
ICAgIHZvaWQgZ2V0UHVzaFN1YnNjcmlwdGlvbihVUkwmJiBzY29wZVVSTCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRp
b25EYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIHZvaWQgZ2V0UHVz
aFBlcm1pc3Npb25TdGF0ZShVUkwmJiBzY29wZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDx1aW50OF90LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAgICAgdm9p
ZCBpbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYmKTsKKyAgICB2b2lkIHJlbW92ZUFs
bFB1c2hTdWJzY3JpcHRpb25zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYmKTsK
KyAgICB2b2lkIHJlbW92ZVB1c2hTdWJzY3JpcHRpb25zRm9yT3JpZ2luKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJik7CiAK
IHByaXZhdGU6CiAgICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24m
LCBjb25zdCBTdHJpbmcmIHdlYlB1c2hNYWNoU2VydmljZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBiOGNjYTcyYTQyNjI2MmI5ZTk3YTA0ODU2ZTVm
ZDQ3YWYwNjcxODU1Li42N2NlZWY1NDQ4NGQ3NTA2ODgwMDExNTBhZTY1ODRmYjkzYWYzZTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTExLDggKzExMSwy
MiBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYklu
Q2xpZW50KFNlcnZpY2VXb3JrZXJKb2JJZGVudAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246
OnJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50KFNlcnZpY2VXb3JrZXJKb2JJZGVudGlm
aWVyIGpvYklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJl
Z2lzdHJhdGlvbktleSwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKIHsKICAgICBBU1NFUlQo
bV91bnJlZ2lzdGVySm9icy5jb250YWlucyhqb2JJZGVudGlmaWVyKSk7Ci0gICAgaWYgKGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBtX3VucmVnaXN0ZXJKb2JzLnRha2Uoam9iSWRlbnRpZmllcikp
CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtX3VucmVnaXN0ZXJKb2JzLnRha2Uo
am9iSWRlbnRpZmllcikpIHsKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKyAg
ICAgICAgaWYgKCFzZXNzaW9uKCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHVu
cmVnaXN0cmF0aW9uUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgYXV0byBzY29wZVVSTCA9IHJlZ2lzdHJhdGlvbktleS5zY29wZSgpOwor
ICAgICAgICBzZXNzaW9uKCktPm5vdGlmaWNhdGlvbk1hbmFnZXIoKS51bnN1YnNjcmliZUZyb21Q
dXNoU2VydmljZShXVEZNb3ZlKHNjb3BlVVJMKSwgc3RkOjpudWxsb3B0LCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdW5yZWdpc3RyYXRpb25SZXN1bHRd
KGF1dG8mJikgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih1bnJlZ2lz
dHJhdGlvblJlc3VsdCk7CisgICAgICAgIH0pOworICAgICAgICAKKyNlbHNlCiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKKyNlbmRpZgorICAgIH0KIH0K
IAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudChT
ZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIEZldGNoT3B0aW9uczo6Q2FjaGUg
Y2FjaGVQb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFl
bW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3Rh
bnRzLmgKaW5kZXggNDBkNzdiMjA5Yzk3N2UyODgxMDE2NWYyYTZmZGNmODcyZWYyZWRkNi4uZTkw
ZWVlZDAxNDA3ODY1N2ExMThlYTZhM2Y0YzI5MDI3ZjZkNGJkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaApAQCAtNTMsNiArNTMsOCBAQCBlbnVt
IGNsYXNzIE1lc3NhZ2VUeXBlIDogdWludDhfdCB7CiAgICAgR2V0UHVzaFN1YnNjcmlwdGlvbiwK
ICAgICBHZXRQdXNoUGVybWlzc2lvblN0YXRlLAogICAgIEluY3JlbWVudFNpbGVudFB1c2hDb3Vu
dCwKKyAgICBSZW1vdmVBbGxQdXNoU3Vic2NyaXB0aW9ucywKKyAgICBSZW1vdmVQdXNoU3Vic2Ny
aXB0aW9uc0Zvck9yaWdpbiwKIH07CiAKIGlubGluZSBib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBs
eShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSkKQEAgLTcwLDYgKzcyLDggQEAgaW5saW5lIGJvb2wg
bWVzc2FnZVR5cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlKQogICAgIGNhc2Ug
TWVzc2FnZVR5cGU6OkdldFB1c2hTdWJzY3JpcHRpb246CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6
R2V0UHVzaFBlcm1pc3Npb25TdGF0ZToKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpJbmNyZW1lbnRT
aWxlbnRQdXNoQ291bnQ6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6UmVtb3ZlQWxsUHVzaFN1YnNj
cmlwdGlvbnM6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6UmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNG
b3JPcmlnaW46CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNl
dERlYnVnTW9kZUlzRW5hYmxlZDoKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpVcGRhdGVDb25uZWN0
aW9uQ29uZmlndXJhdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDhlZWVkMmM4MjViYzJkN2JlYTgz
MTIzNDcyYjcwMjJlOWJhNTEyYzAuLmI3Y2YwNjViYWJjYTFjNDkxYWEzZWEzODQxZDI0Njg2MzFh
YWVkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtODM1LDQgKzgzNSwxMyBAQCBzdGF0aWMgVmVjdG9y
PFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkg
KmRhdGFSZWNvcgogICAgIH0pOwogfQogCistKHZvaWQpX3Njb3BlVVJMOihOU1VSTCAqKXNjb3Bl
VVJMIGhhc1B1c2hTdWJzY3JpcHRpb25Gb3JUZXN0aW5nOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3b3JrUHJv
Y2VzcygpCisgICAgICAgIC5oYXNQdXNoU3Vic2NyaXB0aW9uRm9yVGVzdGluZyhfd2Vic2l0ZURh
dGFTdG9yZS0+c2Vzc2lvbklEKCksIHNjb3BlVVJMLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5XShi
b29sIHJlc3VsdCkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KHJlc3VsdCk7
CisgICAgICAgIH0pOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCBj
MzZlMTEzMWYwOWExYjc1YjViYjg3ZTA0MGQ1YjM0OGFjMzhhMDcxLi4wZTk3MzZiMTMyNDNmODg5
NTM3ZWE3NmY4NmQ2YjAyNTcyNGYyY2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAg
LTExNSw2ICsxMTUsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0
ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogLSh2b2lkKV9wcm9jZXNzUHVzaE1lc3NhZ2U6KE5T
RGljdGlvbmFyeSAqKXB1c2hNZXNzYWdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKGJvb2wp
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CiAtKHZvaWQpX2RlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3Ry
YXRpb246KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdpbiBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtKHZvaWQpX2dldE9yaWdpbnNX
aXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zOih2b2lkKF4pKE5TU2V0PFdLU2VjdXJp
dHlPcmlnaW4gKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0odm9pZClfc2NvcGVVUkw6KE5TVVJMICop
c2NvcGVVUkwgaGFzUHVzaFN1YnNjcmlwdGlvbkZvclRlc3Rpbmc6KHZvaWQoXikoQk9PTCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCBlMTliOGIyNGVmOWNiMmFiZTFmYTg3MDZlZTdjZWExMjUxZWMzMDA2Li4zODg1ZTRkZjZh
YjA4YzJkOWY0YTdjOWM1M2U4MGYyOGFhNGExOTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE3OTEs
NiArMTc5MSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE9yaWdpbnNXaXRoUHVz
aEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFBBTDo6U2VzcwogICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlm
aWNhdGlvblBlcm1pc3Npb25zIHsgc2Vzc2lvbklEIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKIH0K
IAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNQdXNoU3Vic2NyaXB0aW9uRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgc2NvcGVVUkwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6SGFzUHVzaFN1YnNjcmlwdGlvbkZvclRlc3Rp
bmcgeyBzZXNzaW9uSUQsIHNjb3BlVVJMIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJh
YmxlRG9tYWluLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikK
IHsKICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6VGVybWluYXRlUmVtb3RlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUod29ya2VyVHlwZSwgc2Vzc2lvbklELCBy
ZWdpc3RyYWJsZURvbWFpbiwgcHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXgg
MTA1ZDY2MTI5ZGQyY2NmNmE1NTFmZGZiYmM1MmQ2MjhhNGQwYWUyMi4uZTBhZWUyZjdiMzZhYmRj
ZTYzNDg1Nzc1YzE1NDJiYzc1NGJkMjUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI5MSw2ICsyOTEsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRp
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgZ2V0T3Jp
Z2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mKT4mJik7CisgICAgdm9pZCBoYXNQdXNoU3Vic2NyaXB0aW9uRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAKICAgICB2b2lkIGRhdGFUYXNrUmVjZWl2ZWRDaGFsbGVuZ2UoRGF0YVRhc2tJZGVudGlmaWVy
LCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRp
YWwmJik+JiYpOwogICAgIHZvaWQgZGF0YVRhc2tXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihE
YXRhVGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5oIGIvU291cmNlL1dl
YktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5oCmluZGV4IDgyZmNiMWM0ZWU5ZTdmNGY4MzVkMDcw
NzFhYjYyMzg5MmZlYmJiYjYuLmU0NDUwMTllYzllMmM3Y2IxZGVmNjJkNDFjMGExYjExOTdiYTU0
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLmgKQEAgLTU5LDcgKzU5LDEwIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0U3Vic2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgYnVuZGxl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRh
PiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4mJik7CiAgICAgdm9pZCBzdWJzY3JpYmUoY29u
c3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjb3BlLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHZhcGlkUHVibGljS2V5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEV4cGVjdGVkPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhLCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYpPiYmKTsKLSAgICB2b2lkIHVuc3Vic2NyaWJlKGNvbnN0IFN0cmluZyYgYnVu
ZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY29wZSwgV2ViQ29yZTo6UHVzaFN1YnNjcmlw
dGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRXhwZWN0ZWQ8Ym9v
bCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4mJik7CisgICAgdm9pZCB1bnN1YnNjcmliZShj
b25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NvcGUsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+
Jik+JiYpOworCisgICAgdm9pZCByZW1vdmVSZWNvcmRzRm9yQnVuZGxlSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWdu
ZWQpPiYmKTsKKyAgICB2b2lkIHJlbW92ZVJlY29yZHNGb3JCdW5kbGVJZGVudGlmaWVyQW5kT3Jp
Z2luKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzZWN1cml0
eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYpOwogCiAgICAgdm9p
ZCBpbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVu
c2lnbmVkKT4mJik7CiAKQEAgLTc1LDYgKzc4LDggQEAgcHJpdmF0ZToKICAgICB1c2luZyBQdXNo
U2VydmljZVJlcXVlc3RNYXAgPSBIYXNoTWFwPHN0ZDo6dHVwbGU8U3RyaW5nLCBTdHJpbmc+LCBE
ZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8UHVzaFNlcnZpY2VSZXF1ZXN0Pj4+OwogICAgIHZvaWQgZW5x
dWV1ZVB1c2hTZXJ2aWNlUmVxdWVzdChQdXNoU2VydmljZVJlcXVlc3RNYXAmLCBzdGQ6OnVuaXF1
ZV9wdHI8UHVzaFNlcnZpY2VSZXF1ZXN0PiYmKTsKICAgICB2b2lkIGZpbmlzaGVkUHVzaFNlcnZp
Y2VSZXF1ZXN0KFB1c2hTZXJ2aWNlUmVxdWVzdE1hcCYsIFB1c2hTZXJ2aWNlUmVxdWVzdCYpOwor
ICAgIAorICAgIHZvaWQgcmVtb3ZlUmVjb3Jkc0ltcGwoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVu
dGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIHNlY3VyaXR5T3JpZ2luLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJik7CiAKICAgICBVbmlxdWVSZWY8UHVzaFNl
cnZpY2VDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlB1
c2hEYXRhYmFzZT4gbV9kYXRhYmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvUHVzaFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLm1t
CmluZGV4IGFlZTkxOWE4YTBmOTRmN2E1NjVlYWMwNjFiMjI2YmQxY2NlMzgwNGQuLjRhMjdiNDM2
N2RkZWUyNjU3Yzg1NWE2ZTNhYzI1Mjc5YjJkYjhlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Q
dXNoU2VydmljZS5tbQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgU3Vic2NyaWJlUmVxdWVzdDo6
YXR0ZW1wdFRvUmVjb3ZlckZyb21Ub3BpY0FscmVhZHlJbkZpbHRlckVycm9yKFN0cmluZyYmIHRv
CiAKIGNsYXNzIFVuc3Vic2NyaWJlUmVxdWVzdCA6IHB1YmxpYyBQdXNoU2VydmljZVJlcXVlc3RJ
bXBsPGJvb2w+IHsKIHB1YmxpYzoKLSAgICBVbnN1YnNjcmliZVJlcXVlc3QoUHVzaFNlcnZpY2Um
LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NvcGUsIFB1
c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyLCBSZXN1bHRIYW5kbGVyJiYpOworICAgIFVuc3Vic2Ny
aWJlUmVxdWVzdChQdXNoU2VydmljZSYsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzY29wZSwgc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uSWRlbnRp
Zmllcj4sIFJlc3VsdEhhbmRsZXImJik7CiAgICAgdmlydHVhbCB+VW5zdWJzY3JpYmVSZXF1ZXN0
KCkgPSBkZWZhdWx0OwogCiBwcm90ZWN0ZWQ6CkBAIC0zNTgsMTAgKzM1OCwxMCBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBmaW5pc2goKSBmaW5hbCB7IG1fc2VydmljZS5kaWRDb21wbGV0ZVVuc3Vi
c2NyaWJlUmVxdWVzdCgqdGhpcyk7IH0KIAogcHJpdmF0ZToKLSAgICBQdXNoU3Vic2NyaXB0aW9u
SWRlbnRpZmllciBtX3N1YnNjcmlwdGlvbklkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxQ
dXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcj4gbV9zdWJzY3JpcHRpb25JZGVudGlmaWVyOwogfTsK
IAotVW5zdWJzY3JpYmVSZXF1ZXN0OjpVbnN1YnNjcmliZVJlcXVlc3QoUHVzaFNlcnZpY2UmIHNl
cnZpY2UsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY29w
ZSwgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIgc3Vic2NyaXB0aW9uSWRlbnRpZmllciwgUmVz
dWx0SGFuZGxlciYmIHJlc3VsdEhhbmRsZXIpCitVbnN1YnNjcmliZVJlcXVlc3Q6OlVuc3Vic2Ny
aWJlUmVxdWVzdChQdXNoU2VydmljZSYgc2VydmljZSwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjb3BlLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRp
b25JZGVudGlmaWVyPiBzdWJzY3JpcHRpb25JZGVudGlmaWVyLCBSZXN1bHRIYW5kbGVyJiYgcmVz
dWx0SGFuZGxlcikKICAgICA6IFB1c2hTZXJ2aWNlUmVxdWVzdEltcGwoc2VydmljZSwgYnVuZGxl
SWRlbnRpZmllciwgc2NvcGUsIFdURk1vdmUocmVzdWx0SGFuZGxlcikpCiAgICAgLCBtX3N1YnNj
cmlwdGlvbklkZW50aWZpZXIoc3Vic2NyaXB0aW9uSWRlbnRpZmllcikKIHsKQEAgLTM3MSwzMiAr
MzcxLDI1IEBAIFVuc3Vic2NyaWJlUmVxdWVzdDo6VW5zdWJzY3JpYmVSZXF1ZXN0KFB1c2hTZXJ2
aWNlJiBzZXJ2aWNlLCBjb25zdCBTdHJpbmcmIGJ1bmRsCiB2b2lkIFVuc3Vic2NyaWJlUmVxdWVz
dDo6c3RhcnRJbnRlcm5hbCgpCiB7CiAgICAgbV9kYXRhYmFzZS5nZXRSZWNvcmRCeUJ1bmRsZUlk
ZW50aWZpZXJBbmRTY29wZShtX2J1bmRsZUlkZW50aWZpZXIsIG1fc2NvcGUsIFt0aGlzXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZXN1bHQgfHwgbV9zdWJzY3JpcHRp
b25JZGVudGlmaWVyICE9IHJlc3VsdC0+aWRlbnRpZmllcikgeworICAgICAgICBpZiAoIXJlc3Vs
dCB8fCAobV9zdWJzY3JpcHRpb25JZGVudGlmaWVyICYmICptX3N1YnNjcmlwdGlvbklkZW50aWZp
ZXIgIT0gcmVzdWx0LT5pZGVudGlmaWVyKSkgewogICAgICAgICAgICAgZnVsZmlsbChmYWxzZSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fZGF0
YWJhc2UucmVtb3ZlUmVjb3JkQnlJZGVudGlmaWVyKHJlc3VsdC0+aWRlbnRpZmllciwgW3RoaXMs
IHNlcnZlclZBUElEUHVibGljS2V5ID0gcmVzdWx0LT5zZXJ2ZXJWQVBJRFB1YmxpY0tleV0oYm9v
bCByZW1vdmVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcmVtb3ZlZCkgeworICAgICAg
ICAgICAgICAgIGZ1bGZpbGwoZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KIAotICAgICAgICBhdXRvIHRvcGljID0gbWFrZVB1c2hUb3BpYyhtX2J1bmRsZUlk
ZW50aWZpZXIsIG1fc2NvcGUpOwotICAgICAgICBtX2Nvbm5lY3Rpb24udW5zdWJzY3JpYmUodG9w
aWMsIHJlc3VsdC0+c2VydmVyVkFQSURQdWJsaWNLZXksIFt0aGlzXShib29sIHVuc3Vic2NyaWJl
ZCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAot
ICAgICAgICAgICAgLy8gSWYgd2UgZmFpbCB0byB1bnN1YnNjcmliZSBmcm9tIGFwc2QsIGp1c3Qg
ZHJvcCBhIGxvZy4gV2Ugc3RpbGwgd2FudCB0byBjb250aW51ZSBhbmQgcmVtb3ZlIHRoZSByZWNv
cmQgZnJvbSBvdXIgZGF0YWJhc2UgaW4gY2FzZSB0aGVyZSdzIGEgc3RhdGUgbWlzbWF0Y2ggYmV0
d2VlbiBvdXIgZGF0YWJhc2UgYW5kIGFwc2QncyBkYXRhYmFzZS4KLSAgICAgICAgICAgIGlmICgh
dW5zdWJzY3JpYmVkKQotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFB1c2gsICJQdXNoU3Vi
c2NyaXB0aW9uLnVuc3Vic2NyaWJlKGJ1bmRsZUlEOiAle3B1YmxpY31zLCBzY29wZTogJXtzZW5z
aXRpdmV9cykgZmFpbGVkIHdpdGggZG9tYWluOiAle3B1YmxpY31zIGNvZGU6ICVsbGQpIiwgbV9i
dW5kbGVJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksIG1fc2NvcGUudXRmOCgpLmRhdGEoKSwgZXJy
b3IuZG9tYWluLlVURjhTdHJpbmcgPzogIm5vbmUiLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihlcnJv
ci5jb2RlKSk7Ci0jZWxzZQotICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHVuc3Vic2NyaWJlZCk7
Ci0gICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotI2VuZGlmCi0KLSAgICAgICAgICAg
IG1fZGF0YWJhc2UucmVtb3ZlUmVjb3JkQnlJZGVudGlmaWVyKG1fc3Vic2NyaXB0aW9uSWRlbnRp
ZmllciwgW3RoaXNdKGJvb2wgcmVtb3ZlZCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFyZW1vdmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZ1bGZpbGwoZmFsc2UpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8g
RklYTUU6IHN1cHBvcnQgcGFydGlhbCB0b3BpYyBsaXN0IHVwZGF0ZXMuCisgICAgICAgICAgICB1
cGRhdGVUb3BpY0xpc3RzKG1fY29ubmVjdGlvbiwgbV9kYXRhYmFzZSwgW3RoaXNdKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICAgICAgZnVsZmlsbCh0cnVlKTsKKyAgICAgICAgICAgIH0pOwogCi0g
ICAgICAgICAgICAgICAgLy8gRklYTUU6IHN1cHBvcnQgcGFydGlhbCB0b3BpYyBsaXN0IHVwZGF0
ZXMuCi0gICAgICAgICAgICAgICAgdXBkYXRlVG9waWNMaXN0cyhtX2Nvbm5lY3Rpb24sIG1fZGF0
YWJhc2UsIFt0aGlzXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBmdWxmaWxsKHRy
dWUpOwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXV0byB0b3BpYyA9IG1ha2VQ
dXNoVG9waWMobV9idW5kbGVJZGVudGlmaWVyLCBtX3Njb3BlKTsKKyAgICAgICAgICAgIG1fY29u
bmVjdGlvbi51bnN1YnNjcmliZSh0b3BpYywgc2VydmVyVkFQSURQdWJsaWNLZXksIFt0aGlzXShi
b29sIHVuc3Vic2NyaWJlZCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKCF1bnN1YnNjcmliZWQsIFB1c2gsICJQdXNoU3Vic2Ny
aXB0aW9uLnVuc3Vic2NyaWJlKGJ1bmRsZUlEOiAle3B1YmxpY31zLCBzY29wZTogJXtzZW5zaXRp
dmV9cykgZmFpbGVkIHdpdGggZG9tYWluOiAle3B1YmxpY31zIGNvZGU6ICVsbGQpIiwgbV9idW5k
bGVJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksIG1fc2NvcGUudXRmOCgpLmRhdGEoKSwgZXJyb3Iu
ZG9tYWluLlVURjhTdHJpbmcgPzogIm5vbmUiLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihlcnJvci5j
b2RlKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC00NjMsNyAr
NDU2LDcgQEAgdm9pZCBQdXNoU2VydmljZTo6ZGlkQ29tcGxldGVTdWJzY3JpYmVSZXF1ZXN0KFN1
YnNjcmliZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgZmluaXNoZWRQdXNoU2VydmljZVJlcXVlc3Qo
bV9zdWJzY3JpYmVSZXF1ZXN0cywgcmVxdWVzdCk7CiB9CiAKLXZvaWQgUHVzaFNlcnZpY2U6OnVu
c3Vic2NyaWJlKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
Y29wZSwgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIgc3Vic2NyaXB0aW9uSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQdXNoU2VydmljZTo6dW5z
dWJzY3JpYmUoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNj
b3BlLCBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyPiBzdWJzY3JpcHRp
b25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPGJvb2ws
IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
ZW5xdWV1ZVB1c2hTZXJ2aWNlUmVxdWVzdChtX3Vuc3Vic2NyaWJlUmVxdWVzdHMsIG1ha2VVbmlx
dWU8VW5zdWJzY3JpYmVSZXF1ZXN0PigqdGhpcywgYnVuZGxlSWRlbnRpZmllciwgc2NvcGUsIHN1
YnNjcmlwdGlvbklkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CkBA
IC00ODMsMTkgKzQ3Niw0MCBAQCB2b2lkIFB1c2hTZXJ2aWNlOjppbmNyZW1lbnRTaWxlbnRQdXNo
Q291bnQoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdAogCiAgICAgICAgIFJF
TEVBU0VfTE9HKFB1c2gsICJSZW1vdmluZyBhbGwgc3Vic2NyaXB0aW9ucyBhc3NvY2lhdGVkIHdp
dGggJXtwdWJsaWN9cyAle3NlbnNpdGl2ZX1zIHNpbmNlIGl0IHByb2Nlc3NlZCAldSBzaWxlbnQg
cHVzaGVzIiwgYnVuZGxlSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCBzZWN1cml0eU9yaWdpbi51
dGY4KCkuZGF0YSgpLCBzaWxlbnRQdXNoQ291bnQpOwogCi0gICAgICAgIG1fZGF0YWJhc2UtPnJl
bW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihidW5kbGVJZGVu
dGlmaWVyLCBzZWN1cml0eU9yaWdpbiwgW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5
T3JpZ2luLCBzaWxlbnRQdXNoQ291bnQsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShhdXRv
JiYgcmVtb3ZlZFJlY29yZHMpIG11dGFibGUgewotICAgICAgICAgICAgZm9yIChhdXRvJiByZWNv
cmQgOiByZW1vdmVkUmVjb3JkcykgewotICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+dW5z
dWJzY3JpYmUocmVjb3JkLnRvcGljLCByZWNvcmQuc2VydmVyVkFQSURQdWJsaWNLZXksIFt0b3Bp
YyA9IHJlY29yZC50b3BpY10oYm9vbCB1bnN1YnNjcmliZWQsIE5TRXJyb3IqIGVycm9yKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghdW5zdWJzY3JpYmVkKQotICAgICAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHVzaCwgIkluY3JlbWVudFNpbGVudFB1c2hSZXF1ZXN0
IGNvdWxkbid0IHJlbW92ZSBzdWJzY3JpcHRpb24gZm9yIHRvcGljICV7c2Vuc2l0aXZlfXM6ICV7
cHVibGljfXMgY29kZTogJWxsZCkiLCB0b3BpYy51dGY4KCkuZGF0YSgpLCBlcnJvci5kb21haW4u
VVRGOFN0cmluZyA/OiAibm9uZSIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGVycm9yLmNvZGUpKTsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlUmVjb3Jk
c0ltcGwoYnVuZGxlSWRlbnRpZmllciwgc2VjdXJpdHlPcmlnaW4sIFtoYW5kbGVyID0gV1RGTW92
ZShoYW5kbGVyKSwgc2lsZW50UHVzaENvdW50XShhdXRvJiYpIG11dGFibGUgeworICAgICAgICAg
ICAgaGFuZGxlcihzaWxlbnRQdXNoQ291bnQpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwor
dm9pZCBQdXNoU2VydmljZTo6cmVtb3ZlUmVjb3Jkc0ZvckJ1bmRsZUlkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVk
KT4mJiBoYW5kbGVyKQoreworICAgIHJlbW92ZVJlY29yZHNJbXBsKGJ1bmRsZUlkZW50aWZpZXIs
IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKK3ZvaWQgUHVzaFNlcnZpY2U6
OnJlbW92ZVJlY29yZHNGb3JCdW5kbGVJZGVudGlmaWVyQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYg
YnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYgaGFuZGxlcikKK3sKKyAgICByZW1vdmVSZWNvcmRz
SW1wbChidW5kbGVJZGVudGlmaWVyLCBzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShoYW5kbGVyKSk7
Cit9CiAKLSAgICAgICAgICAgIHVwZGF0ZVRvcGljTGlzdHMobV9jb25uZWN0aW9uLCBtX2RhdGFi
YXNlLCBbc2lsZW50UHVzaENvdW50LCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgICAgICBoYW5kbGVyKHNpbGVudFB1c2hDb3VudCk7Cit2b2lkIFB1
c2hTZXJ2aWNlOjpyZW1vdmVSZWNvcmRzSW1wbChjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZp
ZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYmIGhhbmRsZXIpCit7CisgICAgYXV0byByZW1vdmVk
UmVjb3Jkc0hhbmRsZXIgPSBbdGhpcywgYnVuZGxlSWRlbnRpZmllciwgc2VjdXJpdHlPcmlnaW4s
IGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShWZWN0b3I8UmVtb3ZlZFB1c2hSZWNvcmQ+JiYg
cmVtb3ZlZFJlY29yZHMpIG11dGFibGUgeworICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJl
bW92ZWRSZWNvcmRzKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnVuc3Vic2NyaWJlKHJl
Y29yZC50b3BpYywgcmVjb3JkLnNlcnZlclZBUElEUHVibGljS2V5LCBbdG9waWMgPSByZWNvcmQu
dG9waWNdKGJvb2wgdW5zdWJzY3JpYmVkLCBOU0Vycm9yKiBlcnJvcikgeworICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKCF1bnN1YnNjcmliZWQsIFB1c2gsICJyZW1vdmVSZWNv
cmRzSW1wbCBjb3VsZG4ndCByZW1vdmUgc3Vic2NyaXB0aW9uIGZvciB0b3BpYyAle3NlbnNpdGl2
ZX1zOiAle3B1YmxpY31zIGNvZGU6ICVsbGQpIiwgdG9waWMudXRmOCgpLmRhdGEoKSwgZXJyb3Iu
ZG9tYWluLlVURjhTdHJpbmcgPzogIm5vbmUiLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihlcnJvci5j
b2RlKSk7CiAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHVwZGF0ZVRvcGlj
TGlzdHMobV9jb25uZWN0aW9uLCBtX2RhdGFiYXNlLCBbY291bnQgPSByZW1vdmVkUmVjb3Jkcy5z
aXplKCksIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgaGFuZGxlcihjb3VudCk7CiAgICAgICAgIH0pOwotICAgIH0pOworICAgIH07CisKKyAgICBp
ZiAoc2VjdXJpdHlPcmlnaW4pCisgICAgICAgIG1fZGF0YWJhc2UtPnJlbW92ZVJlY29yZHNCeUJ1
bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihidW5kbGVJZGVudGlmaWVyLCAqc2VjdXJp
dHlPcmlnaW4sIFdURk1vdmUocmVtb3ZlZFJlY29yZHNIYW5kbGVyKSk7CisgICAgZWxzZQorICAg
ICAgICBtX2RhdGFiYXNlLT5yZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlmaWVyKGJ1bmRsZUlk
ZW50aWZpZXIsIFdURk1vdmUocmVtb3ZlZFJlY29yZHNIYW5kbGVyKSk7CiB9CiAKIGVudW0gY2xh
c3MgQ29udGVudEVuY29kaW5nIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
V2ViUHVzaERhZW1vbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgK
aW5kZXggYjQwZGExNjYzMTRhNGUxYmRjNDZkZGQyNjQzOGMyYWY1MzgwODhiMi4uOTc4MjM4ZjUx
N2IwZDNmYjk2ZDk0MDYzMTEzM2ZjOGU0MGFhNDQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9X
ZWJQdXNoRGFlbW9uLmgKQEAgLTgxLDEwICs4MSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmpl
Y3RFbmNyeXB0ZWRQdXNoTWVzc2FnZUZvclRlc3RpbmcoQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgZ2V0
UGVuZGluZ1B1c2hNZXNzYWdlcyhDbGllbnRDb25uZWN0aW9uKiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQdXNoTWVzc2FnZT4mKT4mJiByZXBseVNlbmRl
cik7CiAgICAgdm9pZCBzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKENsaWVudENvbm5lY3Rpb24qLCBj
b25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2Vy
dmVyS2V5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPFdlYkNvcmU6OlB1
c2hTdWJzY3JpcHRpb25EYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpPiYmIHJlcGx5U2Vu
ZGVyKTsKLSAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKENsaWVudENvbm5lY3Rp
b24qLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDxib29sLCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhPiYpPiYmIHJlcGx5U2VuZGVyKTsKKyAgICB2b2lkIHVuc3Vic2NyaWJl
RnJvbVB1c2hTZXJ2aWNlKENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiYpPiYmIHJlcGx5U2VuZGVyKTsKICAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oQ2xp
ZW50Q29ubmVjdGlvbiosIGNvbnN0IFVSTCYgc2NvcGVVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9u
RGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgcmVwbHlTZW5kZXIpOwogICAgIHZv
aWQgZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZShDbGllbnRDb25uZWN0aW9uKiwgY29uc3QgVVJMJiBz
Y29wZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDx1aW50OF90LCBX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpPiYmIHJlcGx5U2VuZGVyKTsKICAgICB2b2lkIGluY3Jl
bWVudFNpbGVudFB1c2hDb3VudChDbGllbnRDb25uZWN0aW9uKiwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYpOwor
ICAgIHZvaWQgcmVtb3ZlQWxsUHVzaFN1YnNjcmlwdGlvbnMoQ2xpZW50Q29ubmVjdGlvbiosIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYmKTsKKyAgICB2b2lkIHJlbW92ZVB1c2hT
dWJzY3JpcHRpb25zRm9yT3JpZ2luKENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJik7
CiAKICAgICB2b2lkIGJyb2FkY2FzdERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIGJyb2FkY2FzdEFsbENvbm5lY3Rpb25JZGVudGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggOGVkZjdiZGQ0NTBlMTdiZTc5NjQ5MzNlMzM5OTRl
OWI1YWY1OTMyYy4uY2JkMTI3MDNiNTllY2Y1ZjI1MDdjODBkYWEwMDNiZmUyYzk3MzRlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQpAQCAtMTA1LDcgKzEwNSw3IEBA
IFJFUExZKGNvbnN0IEV4cGVjdGVkPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhLCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhPiYpCiBFTkQKIAogRlVOQ1RJT04odW5zdWJzY3JpYmVGcm9tUHVz
aFNlcnZpY2UpCi1BUkdVTUVOVFMoVVJMLCBXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uSWRlbnRp
ZmllcikKK0FSR1VNRU5UUyhVUkwsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHVzaFN1YnNjcmlw
dGlvbklkZW50aWZpZXI+KQogUkVQTFkoY29uc3QgRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YT4mKQogRU5ECiAKQEAgLTEyNCw2ICsxMjQsMTYgQEAgQVJHVU1FTlRTKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSkKIFJFUExZKHVuc2lnbmVkKQogRU5ECiAKK0ZVTkNUSU9O
KHJlbW92ZUFsbFB1c2hTdWJzY3JpcHRpb25zKQorQVJHVU1FTlRTKCkKK1JFUExZKHVuc2lnbmVk
KQorRU5ECisKK0ZVTkNUSU9OKHJlbW92ZVB1c2hTdWJzY3JpcHRpb25zRm9yT3JpZ2luKQorQVJH
VU1FTlRTKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSkKK1JFUExZKHVuc2lnbmVkKQorRU5E
CisKICN1bmRlZiBGVU5DVElPTgogI3VuZGVmIEFSR1VNRU5UUwogI3VuZGVmIFJFUExZCkBAIC0y
MTMsNiArMjIzLDIwIEBAIFdlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSBpbmNyZW1lbnRTaWxlbnRQ
dXNoQ291bnQ6OmVuY29kZVJlcGx5KHVuc2lnbmVkIHJlcGx5KQogICAgIHJldHVybiBlbmNvZGVy
LnRha2VCdWZmZXIoKTsKIH0KIAorV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIHJlbW92ZUFsbFB1
c2hTdWJzY3JpcHRpb25zOjplbmNvZGVSZXBseSh1bnNpZ25lZCByZXBseSkKK3sKKyAgICBXZWJL
aXQ6OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgcmVwbHk7CisgICAg
cmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigpOworfQorCitXZWJQdXNoRDo6RW5jb2RlZE1lc3Nh
Z2UgcmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW46OmVuY29kZVJlcGx5KHVuc2lnbmVk
IHJlcGx5KQoreworICAgIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5j
b2RlciA8PCByZXBseTsKKyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVyKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIE1lc3NhZ2VJbmZvCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEluZm8+CkBAIC00
MTUsNiArNDM5LDEyIEBAIHZvaWQgRGFlbW9uOjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdlKHhwY19j
b25uZWN0aW9uX3QgY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUgbWVzCiAgICAgY2FzZSBNZXNzYWdl
VHlwZTo6SW5jcmVtZW50U2lsZW50UHVzaENvdW50OgogICAgICAgICBoYW5kbGVXZWJQdXNoRE1l
c3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmluY3JlbWVudFNpbGVudFB1c2hDb3VudD4oY2xp
ZW50Q29ubmVjdGlvbiwgZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6UmVtb3ZlQWxsUHVzaFN1YnNjcmlw
dGlvbnM6CisgICAgICAgIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5m
bzo6cmVtb3ZlQWxsUHVzaFN1YnNjcmlwdGlvbnM+KGNsaWVudENvbm5lY3Rpb24sIGVuY29kZWRN
ZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
TWVzc2FnZVR5cGU6OlJlbW92ZVB1c2hTdWJzY3JpcHRpb25zRm9yT3JpZ2luOgorICAgICAgICBo
YW5kbGVXZWJQdXNoRE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OnJlbW92ZVB1c2hTdWJz
Y3JpcHRpb25zRm9yT3JpZ2luPihjbGllbnRDb25uZWN0aW9uLCBlbmNvZGVkTWVzc2FnZSwgV1RG
TW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAgLTYwOSw3
ICs2MzksNyBAQCB2b2lkIERhZW1vbjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZShDbGllbnRDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHNjbwogICAgIH0pOwogfQogCi12b2lkIERh
ZW1vbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoQ2xpZW50Q29ubmVjdGlvbiogY29ubmVj
dGlvbiwgY29uc3QgVVJMJiBzY29wZVVSTCwgV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbklkZW50
aWZpZXIgc3Vic2NyaXB0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBFeHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpPiYmIHJlcGx5U2VuZGVy
KQordm9pZCBEYWVtb246OnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKENsaWVudENvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgc2NvcGVVUkwsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXI+IHN1YnNjcmlwdGlvbklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YT4mKT4mJiByZXBseVNlbmRlcikKIHsKICAgICBydW5BZnRlclN0YXJ0aW5nUHVzaFNl
cnZpY2UoW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5ob3N0QXBwQ29kZVNp
Z25pbmdJZGVudGlmaWVyKCksIHNjb3BlID0gc2NvcGVVUkwuc3RyaW5nKCksIHN1YnNjcmlwdGlv
bklkZW50aWZpZXIsIHJlcGx5U2VuZGVyID0gV1RGTW92ZShyZXBseVNlbmRlcildKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghbV9wdXNoU2VydmljZSkgewpAQCAtNjUzLDYgKzY4MywzMCBAQCB2
b2lkIERhZW1vbjo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KENsaWVudENvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIGNvbnN0IFdlYkNvcgogICAgIH0pOwogfQogCit2b2lkIERhZW1vbjo6cmVtb3Zl
QWxsUHVzaFN1YnNjcmlwdGlvbnMoQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYgcmVwbHlTZW5kZXIpCit7CisgICAgcnVuQWZ0
ZXJTdGFydGluZ1B1c2hTZXJ2aWNlKFt0aGlzLCBidW5kbGVJZGVudGlmaWVyID0gY29ubmVjdGlv
bi0+aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpLCByZXBseVNlbmRlciA9IFdURk1vdmUo
cmVwbHlTZW5kZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIW1fcHVzaFNlcnZpY2UpIHsK
KyAgICAgICAgICAgIHJlcGx5U2VuZGVyKDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgbV9wdXNoU2VydmljZS0+cmVtb3ZlUmVjb3Jkc0ZvckJ1bmRsZUlkZW50
aWZpZXIoYnVuZGxlSWRlbnRpZmllciwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgIH0pOwor
fQorCit2b2lkIERhZW1vbjo6cmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4oQ2xpZW50
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYgcmVw
bHlTZW5kZXIpCit7CisgICAgcnVuQWZ0ZXJTdGFydGluZ1B1c2hTZXJ2aWNlKFt0aGlzLCBidW5k
bGVJZGVudGlmaWVyID0gY29ubmVjdGlvbi0+aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigp
LCBzZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCksIHJlcGx5U2VuZGVy
ID0gV1RGTW92ZShyZXBseVNlbmRlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbV9wdXNo
U2VydmljZSkgeworICAgICAgICAgICAgcmVwbHlTZW5kZXIoMCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBtX3B1c2hTZXJ2aWNlLT5yZW1vdmVSZWNvcmRzRm9y
QnVuZGxlSWRlbnRpZmllckFuZE9yaWdpbihidW5kbGVJZGVudGlmaWVyLCBzZWN1cml0eU9yaWdp
biwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgIH0pOworfQorCiBDbGllbnRDb25uZWN0aW9u
KiBEYWVtb246OnRvQ2xpZW50Q29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24p
CiB7CiAgICAgYXV0byBjbGllbnRDb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChjb25u
ZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBkNjc2YWY2OWIyY2JiNjJmNzQwMDNkYTU3ZmJmNDhmZTJiMGQ4MWU2Li4yMmFiOTYwNmYz
MmNlNWQ1YzMxMGZhMzRhOTRlZmZlMTdlMjBiN2ZjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDMtMTggIEJl
biBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0
aW9ucyB3aGVuIGFzc29jaWF0ZWQgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9ucyBhcmUgcmVt
b3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
OTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBBZGQg
bmV3IHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRlbGV0ZSBwdXNoIHN1YnNjcmlwdGlvbnMg
d2hlbiB1bnJlZ2lzdGVyaW5nIGEgc2VydmljZQorICAgICAgICB3b3JrZXIgb3IgZGVsZXRpbmcg
d2Vic2l0ZSBkYXRhLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIyLTAzLTE4ICBQYXRyaWNrIEdyaWZmaXMgIDxwZ3Jp
ZmZpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtGbGF0cGFrXSBQYXNzIGV4dHJhIHdlYmtpdC1m
bGF0cGFrIGFyZ3MgdG8gc3ViLWNvbW1hbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQppbmRleCAxNmU4ZWIwMmEwYjll
MDQyZGMyMzI0ODVmNjViOTE3OGVlYzRkZmVlLi45N2E1YmRhNzY5Y2VlZTBkZDNjNTYyOGU3MzQy
MDllMDgwMTIyNGQ5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0IDxX
ZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KKyNp
bXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJQdXNo
RGFlbW9uQ29uc3RhbnRzLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVy
ZS5oPgpAQCAtNDM0LDYgKzQzNSwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFttX3dlYlZpZXcg
bG9hZFJlcXVlc3Q6bV9zZXJ2ZXItPnJlcXVlc3QoKV07CiAgICAgfQogCisgICAgYm9vbCBoYXNQ
dXNoU3Vic2NyaXB0aW9uKCkKKyAgICB7CisgICAgICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFs
c2U7CisgICAgICAgIF9fYmxvY2sgYm9vbCByZXN1bHQgPSBmYWxzZTsKKworICAgICAgICBbbV9k
YXRhU3RvcmUgX3Njb3BlVVJMOm1fc2VydmVyLT5yZXF1ZXN0KCkuVVJMIGhhc1B1c2hTdWJzY3Jp
cHRpb25Gb3JUZXN0aW5nOl4oQk9PTCBmZXRjaGVkUmVzdWx0KSB7CisgICAgICAgICAgICByZXN1
bHQgPSBmZXRjaGVkUmVzdWx0OworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1d
OworCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgfldlYlB1c2hEVGVzdCgpCiAgICAgewogICAgICAg
ICBjbGVhblVwVGVzdFdlYlB1c2hEKG1fdGVtcERpcmVjdG9yeS5nZXQoKSk7CkBAIC02MjksNiAr
NjQ0LDggQEAgVEVTVF9GKFdlYlB1c2hEVGVzdCwgU3Vic2NyaWJlVGVzdCkKIAogICAgIC8vIENs
aWVudCBwdWJsaWMga2V5IHNob3VsZCBiZSA2NSBieXRlcyAoODcgYnl0ZXMgaW4gdW5wYWRkZWQg
YmFzZTY0dXJsKS4KICAgICBBU1NFUlRfRVEoW3N1YnNjcmlwdGlvbltAImtleXMiXVtAInAyNTZk
aCJdIGxlbmd0aF0sIDg3dSk7CisKKyAgICBBU1NFUlRfVFJVRShoYXNQdXNoU3Vic2NyaXB0aW9u
KCkpOwogfQogCiBURVNUX0YoV2ViUHVzaERUZXN0LCBTdWJzY3JpYmVGYWlsdXJlVGVzdCkKQEAg
LTY2Niw2ICs2ODMsOCBAQCBURVNUX0YoV2ViUHVzaERUZXN0LCBTdWJzY3JpYmVGYWlsdXJlVGVz
dCkKICAgICAvLyBTcGVjIHNheXMgdGhhdCBhbiBlcnJvciBpbiB0aGUgcHVzaCBzZXJ2aWNlIHNo
b3VsZCBiZSBhbiBBYm9ydEVycm9yLgogICAgIEFTU0VSVF9UUlVFKFtvYmogaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSk7CiAgICAgQVNTRVJUX1RSVUUoW29iaiBoYXNQcmVmaXg6QCJF
cnJvcjogQWJvcnRFcnJvciJdKTsKKworICAgIEFTU0VSVF9GQUxTRShoYXNQdXNoU3Vic2NyaXB0
aW9uKCkpOwogfQogCiBURVNUX0YoV2ViUHVzaERUZXN0LCBVbnN1YnNjcmliZVRlc3QpCkBAIC03
MDUsNiArNzI0LDE0OSBAQCBURVNUX0YoV2ViUHVzaERUZXN0LCBVbnN1YnNjcmliZVRlc3QpCiAg
ICAgLy8gRmlyc3QgdW5zdWJzY3JpYmUgc2hvdWxkIHN1Y2NlZWQuIFNlY29uZCBvbmUgc2hvdWxk
IGZhaWwgc2luY2UgdGhlIGZpcnN0IG9uZSByZW1vdmVkIHRoZSByZWNvcmQgZnJvbSB0aGUgZGF0
YWJhc2UuCiAgICAgaWQgZXhwZWN0ZWQgPSBAW0AoMSksIEAoMCldOwogICAgIEFTU0VSVF9UUlVF
KFtvYmogaXNFcXVhbDpleHBlY3RlZF0pOworCisgICAgQVNTRVJUX0ZBTFNFKGhhc1B1c2hTdWJz
Y3JpcHRpb24oKSk7Cit9CisKK1RFU1RfRihXZWJQdXNoRFRlc3QsIFVuc3Vic2NyaWJlc09uU2Vy
dmljZVdvcmtlclVucmVnaXN0ZXJUZXN0KQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzb3Vy
Y2UgPSBSIkhUTUwoCisgICAgPHNjcmlwdCBzcmM9Ii9jb25zdGFudHMuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQ+CisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5q
cycpLnRoZW4oYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG51
bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsZXQgc3Vic2NyaXB0aW9uID0gYXdhaXQg
cmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyLnN1YnNjcmliZSh7CisgICAgICAgICAgICAgICAgdXNl
clZpc2libGVPbmx5OiB0cnVlLAorICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uU2VydmVyS2V5
OiBWQUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IGF3YWl0IHJlZ2lzdHJhdGlvbi51bnJlZ2lzdGVyKCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIHJlc3VsdCA9ICJFcnJvcjogIiArIGU7CisgICAgICAgIH0KKyAgICAgICAg
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubm90ZS5wb3N0TWVzc2FnZShyZXN1bHQpOwor
ICAgIH0pOworICAgIDwvc2NyaXB0PgorICAgIClIVE1MIjsKKworICAgIF9fYmxvY2sgUmV0YWlu
UHRyPGlkPiB1bnJlZ2lzdGVyU3VjY2VlZGVkID0gbmlsOworICAgIF9fYmxvY2sgYm9vbCBkb25l
ID0gZmFsc2U7CisgICAgW21fbm90aWZpY2F0aW9uTWVzc2FnZUhhbmRsZXIgc2V0TWVzc2FnZUhh
bmRsZXI6XihpZCBtZXNzYWdlKSB7CisgICAgICAgIHVucmVnaXN0ZXJTdWNjZWVkZWQgPSBtZXNz
YWdlOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIGxvYWRSZXF1ZXN0KHNv
dXJjZSwgIiIpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBB
U1NFUlRfVFJVRShbdW5yZWdpc3RlclN1Y2NlZWRlZCBpc0VxdWFsOkBZRVNdKTsKKyAgICBBU1NF
UlRfRkFMU0UoaGFzUHVzaFN1YnNjcmlwdGlvbigpKTsKK30KKworVEVTVF9GKFdlYlB1c2hEVGVz
dCwgVW5zdWJzY3JpYmVzT25DbGVhcmluZ0FsbFdlYnNpdGVEYXRhKQoreworICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBzb3VyY2UgPSBSIkhUTUwoCisgICAgPHNjcmlwdCBzcmM9Ii9jb25zdGFudHMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
cmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCByZWdp
c3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeTsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsZXQgc3Vic2Ny
aXB0aW9uID0gYXdhaXQgcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyLnN1YnNjcmliZSh7CisgICAg
ICAgICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0cnVlLAorICAgICAgICAgICAgICAgIGFwcGxp
Y2F0aW9uU2VydmVyS2V5OiBWQUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9ICJTdWJzY3JpYmVkIjsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICAgICAgcmVzdWx0ID0gIkVycm9yOiAiICsgZTsKKyAgICAgICAgfQorICAgICAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3RlLnBvc3RNZXNzYWdlKHJlc3VsdCk7CisgICAg
fSk7CisgICAgPC9zY3JpcHQ+CisgICAgKUhUTUwiOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8
aWQ+IHJlc3VsdCA9IG5pbDsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFtt
X25vdGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVyIHNldE1lc3NhZ2VIYW5kbGVyOl4oaWQgbWVzc2Fn
ZSkgeworICAgICAgICByZXN1bHQgPSBtZXNzYWdlOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKworICAgIGxvYWRSZXF1ZXN0KHNvdXJjZSwgIiIpOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBBU1NFUlRfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0
cmluZzpAIlN1YnNjcmliZWQiXSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgcmVtb3ZlZERhdGEgPSBm
YWxzZTsKKyAgICBbbV9kYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W05TU2V0IHNldFdpdGhP
YmplY3Q6V0tXZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc10gbW9kaWZp
ZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKHZvaWQpIHsK
KyAgICAgICAgcmVtb3ZlZERhdGEgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVtb3ZlZERhdGEpOworCisgICAgQVNTRVJUX0ZBTFNFKGhhc1B1c2hTdWJz
Y3JpcHRpb24oKSk7Cit9CisKK1RFU1RfRihXZWJQdXNoRFRlc3QsIFVuc3Vic2NyaWJlc09uQ2xl
YXJpbmdXZWJzaXRlRGF0YUZvck9yaWdpbikKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc291
cmNlID0gUiJIVE1MKAorICAgIDxzY3JpcHQgc3JjPSIvY29uc3RhbnRzLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0PgorICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cu
anMnKS50aGVuKGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdh
aXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVhZHk7CisgICAgICAgIGxldCByZXN1bHQgPSBu
dWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IGF3YWl0
IHJlZ2lzdHJhdGlvbi5wdXNoTWFuYWdlci5zdWJzY3JpYmUoeworICAgICAgICAgICAgICAgIHVz
ZXJWaXNpYmxlT25seTogdHJ1ZSwKKyAgICAgICAgICAgICAgICBhcHBsaWNhdGlvblNlcnZlcktl
eTogVkFMSURfU0VSVkVSX0tFWQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXN1bHQg
PSAiU3Vic2NyaWJlZCI7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHJlc3Vs
dCA9ICJFcnJvcjogIiArIGU7CisgICAgICAgIH0KKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMubm90ZS5wb3N0TWVzc2FnZShyZXN1bHQpOworICAgIH0pOworICAgIDwvc2Ny
aXB0PgorICAgIClIVE1MIjsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPGlkPiByZXN1bHQgPSBu
aWw7CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbbV9ub3RpZmljYXRpb25N
ZXNzYWdlSGFuZGxlciBzZXRNZXNzYWdlSGFuZGxlcjpeKGlkIG1lc3NhZ2UpIHsKKyAgICAgICAg
cmVzdWx0ID0gbWVzc2FnZTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBs
b2FkUmVxdWVzdChzb3VyY2UsICIiKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworCisgICAgQVNTRVJUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJTdWJzY3Jp
YmVkIl0pOworCisgICAgX19ibG9jayBib29sIGZldGNoZWRSZWNvcmRzID0gZmFsc2U7CisgICAg
X19ibG9jayBSZXRhaW5QdHI8TlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+PiByZWNvcmRz
OworICAgIFttX2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0
aE9iamVjdDpXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXSBjb21w
bGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29y
ZHMpIHsKKyAgICAgICAgcmVjb3JkcyA9IGRhdGFSZWNvcmRzOworICAgICAgICBmZXRjaGVkUmVj
b3JkcyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmZXRj
aGVkUmVjb3Jkcyk7CisKKyAgICBXS1dlYnNpdGVEYXRhUmVjb3JkICpmaWx0ZXJlZFJlY29yZCA9
IG5pbDsKKyAgICBmb3IgKFdLV2Vic2l0ZURhdGFSZWNvcmQgKnJlY29yZCBpbiByZWNvcmRzLmdl
dCgpKSB7CisgICAgICAgIGZvciAoTlNTdHJpbmcgKm9yaWdpblN0cmluZyBpbiByZWNvcmQuX29y
aWdpbnNTdHJpbmdzKSB7CisgICAgICAgICAgICBpZiAoW29yaWdpblN0cmluZyBpc0VxdWFsVG9T
dHJpbmc6bV9zZXJ2ZXItPm9yaWdpbigpXSkgeworICAgICAgICAgICAgICAgIGZpbHRlcmVkUmVj
b3JkID0gcmVjb3JkOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIEFTU0VSVF9UUlVFKGZpbHRlcmVkUmVjb3JkKTsKKworICAgIF9f
YmxvY2sgYm9vbCByZW1vdmVkRGF0YSA9IGZhbHNlOworICAgIFttX2RhdGFTdG9yZSByZW1vdmVE
YXRhT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zXSBmb3JEYXRhUmVjb3JkczpbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3Q6ZmlsdGVyZWRSZWNvcmRdIGNvbXBsZXRpb25IYW5kbGVyOl4odm9pZCkgeworICAgICAgICBy
ZW1vdmVkRGF0YSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZW1vdmVkRGF0YSk7CisKKyAgICBBU1NFUlRfRkFMU0UoaGFzUHVzaFN1YnNjcmlwdGlvbigp
KTsKIH0KIAogI2lmIEVOQUJMRShJTlNUQUxMX0NPT1JESU5BVElPTl9CVU5ETEVTKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>