<?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>200642</bug_id>
          
          <creation_ts>2019-08-12 14:16:19 -0700</creation_ts>
          <short_desc>Resource Load Statistics: Switch NSURLSession on top navigation to prevalent resource with user interaction</short_desc>
          <delta_ts>2019-08-13 15:34:38 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1560549</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-12 14:16:19 -0700</bug_when>
    <thetext>Since prevalent resources with user interaction get to keep their cookies and website data, we should use a different NSURLSessions for when they are first-party websites and have access to that data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560550</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-12 14:16:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/53962073&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560553</commentid>
    <comment_count>2</comment_count>
      <attachid>376094</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-12 14:35:24 -0700</bug_when>
    <thetext>Created attachment 376094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560564</commentid>
    <comment_count>3</comment_count>
      <attachid>376097</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-12 15:02:10 -0700</bug_when>
    <thetext>Created attachment 376097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560565</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-12 15:03:31 -0700</bug_when>
    <thetext>Trying to address the build error. Strangely, I didn&apos;t get that error locally. Must be some flag I&apos;m missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560566</commentid>
    <comment_count>5</comment_count>
      <attachid>376094</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-12 15:06:25 -0700</bug_when>
    <thetext>Comment on attachment 376094
Patch

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

Alex should probably take a look but here are some drive-by comments.

&gt; Source/WebCore/page/RuntimeEnabledFeatures.h:150
&gt; +    void setITPSessionSwitchingEnabled(bool isEnabled) { m_isITPSessionSwitchingEnabled = isEnabled; }

setIsITPSessionSwitchingEnabled()

&gt; Source/WebCore/page/RuntimeEnabledFeatures.h:151
&gt; +    bool itpSessionSwitchingEnabled() const { return m_isITPSessionSwitchingEnabled; }

isITPSessionSwitchingEnabled()

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:101
&gt; +    void updateCookieBlockingForDomains(RegistrableDomainsToBlockCookiesFor&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);

any reason the parameter is no long const?

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:263
&gt; +    void hasIsolatedSession(PAL::SessionID, const WebCore::RegistrableDomain, CompletionHandler&lt;void(bool)&gt;&amp;&amp;) const;

const WebCore::RegistrableDomain&amp; (missing the &amp;)

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h:86
&gt; +    RetainPtr&lt;NSURLSession&gt; session(WebCore::StoredCredentialsPolicy);

Why does this return a RetainPtr and not a NSURLSession* ? Are we transferring ownership?

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h:87
&gt; +    RetainPtr&lt;NSURLSession&gt; isolatedSession(WebCore::StoredCredentialsPolicy, const WebCore::RegistrableDomain);

ditto.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1090
&gt; +    auto entry = m_isolatedSessions.ensure(firstPartyDomain, [this, weakThis = makeWeakPtr(this)] {

No weakThis here, this is HashMap::ensure() is not asynchronous. Just capture this.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1093
&gt; +            newEntry.sessionWithCredentialStorageDelegate = adoptNS([[WKNetworkSessionDelegate alloc] initWithNetworkSession:*this withCredentials:true]);

Can probably be written like so:
return IsolatedSession {
   a,
   b,
   c,
   d
};

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1107
&gt; +        for (WebCore::RegistrableDomain key : m_isolatedSessions.keys()) {

auto&amp; key (to copying refCounting churn).

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1155
&gt; +    for (IsolatedSession session : m_isolatedSessions.values()) {

auto&amp; session ?

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1171
&gt; +    for (SessionEntry entry : m_isolatedSessions.values())

auto&amp; entry?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560577</commentid>
    <comment_count>6</comment_count>
      <attachid>376094</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-12 15:38:00 -0700</bug_when>
    <thetext>Comment on attachment 376094
Patch

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

&gt; LayoutTests/http/tests/resourceLoadStatistics/switch-session-on-navigation-to-prevalent-with-interaction-expected.txt:7
&gt; +PASS Should have and has the persistent cookie.

Are there cases we could test where the cookie should not be there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560579</commentid>
    <comment_count>7</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-12 15:43:08 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 376094 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376094&amp;action=review
&gt; 
&gt; Alex should probably take a look but here are some drive-by comments.
&gt; 
&gt; &gt; Source/WebCore/page/RuntimeEnabledFeatures.h:150
&gt; &gt; +    void setITPSessionSwitchingEnabled(bool isEnabled) { m_isITPSessionSwitchingEnabled = isEnabled; }
&gt; 
&gt; setIsITPSessionSwitchingEnabled()

For consistency or is it a style rule? I&apos;ll make the change.

&gt; &gt; Source/WebCore/page/RuntimeEnabledFeatures.h:151
&gt; &gt; +    bool itpSessionSwitchingEnabled() const { return m_isITPSessionSwitchingEnabled; }
&gt; 
&gt; isITPSessionSwitchingEnabled()

Ditto.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:101
&gt; &gt; +    void updateCookieBlockingForDomains(RegistrableDomainsToBlockCookiesFor&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; 
&gt; any reason the parameter is no long const?

First I was &quot;How can it be a long?&quot; but then I realized what you&apos;re saying. It should be const. Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.h:263
&gt; &gt; +    void hasIsolatedSession(PAL::SessionID, const WebCore::RegistrableDomain, CompletionHandler&lt;void(bool)&gt;&amp;&amp;) const;
&gt; 
&gt; const WebCore::RegistrableDomain&amp; (missing the &amp;)

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h:86
&gt; &gt; +    RetainPtr&lt;NSURLSession&gt; session(WebCore::StoredCredentialsPolicy);
&gt; 
&gt; Why does this return a RetainPtr and not a NSURLSession* ? Are we
&gt; transferring ownership?

You&apos;re probably right. This was to make the call site work as before. I wonder if I&apos;ll have to have two paths there if I make this a regular pointer.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h:87
&gt; &gt; +    RetainPtr&lt;NSURLSession&gt; isolatedSession(WebCore::StoredCredentialsPolicy, const WebCore::RegistrableDomain);
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1090
&gt; &gt; +    auto entry = m_isolatedSessions.ensure(firstPartyDomain, [this, weakThis = makeWeakPtr(this)] {
&gt; 
&gt; No weakThis here, this is HashMap::ensure() is not asynchronous. Just
&gt; capture this.

Got it. Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1093
&gt; &gt; +            newEntry.sessionWithCredentialStorageDelegate = adoptNS([[WKNetworkSessionDelegate alloc] initWithNetworkSession:*this withCredentials:true]);
&gt; 
&gt; Can probably be written like so:
&gt; return IsolatedSession {
&gt;    a,
&gt;    b,
&gt;    c,
&gt;    d
&gt; };

I need at least the delegates as local variables since they are used to create the sessions.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1107
&gt; &gt; +        for (WebCore::RegistrableDomain key : m_isolatedSessions.keys()) {
&gt; 
&gt; auto&amp; key (to copying refCounting churn).

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1155
&gt; &gt; +    for (IsolatedSession session : m_isolatedSessions.values()) {
&gt; 
&gt; auto&amp; session ?

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1171
&gt; &gt; +    for (SessionEntry entry : m_isolatedSessions.values())
&gt; 
&gt; auto&amp; entry?

Will fix.

Thanks, Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560580</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-12 15:44:20 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; Comment on attachment 376094 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376094&amp;action=review
&gt; 
&gt; &gt; LayoutTests/http/tests/resourceLoadStatistics/switch-session-on-navigation-to-prevalent-with-interaction-expected.txt:7
&gt; &gt; +PASS Should have and has the persistent cookie.
&gt; 
&gt; Are there cases we could test where the cookie should not be there?

I don&apos;t think so. I put these checks in here to a) make sure I knew what was affected by the change and b) to make sure this behavior is not changed underneath us at some later point. It would be a subtle regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560603</commentid>
    <comment_count>9</comment_count>
      <attachid>376107</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-12 16:53:26 -0700</bug_when>
    <thetext>Created attachment 376107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560788</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-13 08:39:17 -0700</bug_when>
    <thetext>Hmm … I wonder if the pointers need to be ref counted? Because some task(s) might still be using the session when it’s dropped from the map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560811</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-13 09:19:00 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #10)
&gt; Hmm … I wonder if the pointers need to be ref counted? Because some task(s)
&gt; might still be using the session when it’s dropped from the map.

Discussed with Chris Dumez. We don&apos;t need to ref count it since that&apos;s handled underneath us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560925</commentid>
    <comment_count>12</comment_count>
      <attachid>376107</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-13 13:25:22 -0700</bug_when>
    <thetext>Comment on attachment 376107
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560959</commentid>
    <comment_count>13</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-13 14:14:07 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #12)
&gt; Comment on attachment 376107 [details]
&gt; Patch
&gt; 
&gt; r=me

Thank you, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560985</commentid>
    <comment_count>14</comment_count>
      <attachid>376107</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-13 15:34:36 -0700</bug_when>
    <thetext>Comment on attachment 376107
Patch

Clearing flags on attachment: 376107

Committed r248640: &lt;https://trac.webkit.org/changeset/248640&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560986</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-13 15:34:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376094</attachid>
            <date>2019-08-12 14:35:24 -0700</date>
            <delta_ts>2019-08-12 15:44:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200642-20190812143523.patch</filename>
            <type>text/plain</type>
            <size>84082</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI1ZGZjODg5NjEwMzgz
YmRkN2ZiMzMyNmQzY2QwYThiYWVlYTlmNS4uY2VmNGM4ZDBmZGM0MjQ2NTEwNzJjOWE4ZWVmZDk3
ZWI5OWI1MTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE5LTA4LTEyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogU3dpdGNoIE5TVVJMU2Vzc2lvbiBvbiB0b3AgbmF2aWdhdGlvbiB0byBwcmV2
YWxlbnQgcmVzb3VyY2Ugd2l0aCB1c2VyIGludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzUzOTYyMDczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3
aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rp
b24uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rp
b24uaHRtbAorCisgICAgICAgIFRoaXMgcGF0Y2ggc3BsaXRzIG1fcmVnaXN0cmFibGVEb21haW5z
VG9CbG9ja0Nvb2tpZUZvciBpbiBXZWJDb3JlOk5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBpbnRvOgor
ICAgICAgICAtIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IK
KyAgICAgICAgLSBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcgor
ICAgICAgICAuLi4gdG8gc3VwcG9ydCBkaWZmZXJlbnQgbmV0d29yayBsb2FkIHBvbGljaWVzIGJh
c2VkIG9uIHRoaXMgZGlzdGluY3Rpb24uCisKKyAgICAgICAgKiBwYWdlL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dElUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Oml0cFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkIGNvbnN0KToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
c0J1dEtlZXBGaXJzdFBhcnR5Q29va2llc0ZvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQW5kRGVsZXRl
Q29va2llc0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWxlbnREb21haW5zKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJldmFsZW50RG9tYWlu
c1RvQmxvY2tDb29raWVzRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorCiAyMDE5LTA4LTEyICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dURl1bSlNDXSBNYWtlIEpTQyBhbmQgV1RG
IGFnZ3Jlc3NpdmVseS1mYXN0LW1hbGxvY2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3M2NlZjZjNjMzMDRmNmUx
OWU0NDllYTM1YjExN2E2MDk1MWIwN2MuLmEzNWFiNzE5MzYzYzVmMjZmYWRkNGY4MDI4Mzg0MzVk
NDJkZmQzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTMgQEAKKzIwMTktMDgtMTIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBTd2l0Y2ggTlNVUkxTZXNzaW9uIG9uIHRvcCBuYXZpZ2F0aW9uIHRvIHByZXZhbGVu
dCByZXNvdXJjZSB3aXRoIHVzZXIgaW50ZXJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDY0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTM5NjIwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2luY2UgcHJldmFsZW50IHJlc291cmNlcyB3aXRoIHVzZXIgaW50ZXJhY3Rpb24gZ2V0IHRv
IGtlZXAgdGhlaXIgY29va2llcyBhbmQgd2Vic2l0ZQorICAgICAgICBkYXRhLCB3ZSBzaG91bGQg
dXNlIGEgZGlmZmVyZW50IE5TVVJMU2Vzc2lvbnMgZm9yIHdoZW4gdGhleSBhcmUgZmlyc3QtcGFy
dHkgd2Vic2l0ZXMKKyAgICAgICAgYW5kIGhhdmUgYWNjZXNzIHRvIHRoYXQgZGF0YS4gVGhpcyBw
YXRjaCBhY2hpZXZlcyB0aGF0LgorCisgICAgICAgIFRoZSBXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
a0NvY29hIGNvbnN0cnVjdG9yIG5vdyBjaGVja3Mgd2l0aCB0aGUgbmV0d29yayBzdG9yYWdlIHNl
c3Npb24KKyAgICAgICAgaWYgdGhlIGZpcnN0IHBhcnR5IGZvciB0aGlzIGxvYWQgc2hvdWxkIGJl
IGlzb2xhdGVkLiBUaGUgY2F0ZWdvcnkgZm9yIHdoaWNoIHRoaXMgaXMgdHJ1ZQorICAgICAgICBp
cyBjaGVja2VkIGluIHRoZSBuZXcgZnVuY3Rpb24KKyAgICAgICAgV2ViQ29yZTpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0
eUNvb2tpZXNGb3IoKQorICAgICAgICB3aGljaCBpbiB0dXJuIGlzIGJhY2tlZCBieSBhIG5ldyBz
cGxpdCBvZiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVGb3IgaW50bzoKKyAgICAg
ICAgLSBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yCisgICAg
ICAgIC0gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IKKyAgICAg
ICAgLi4uIGluIFdlYkNvcmU6TmV0d29ya1N0b3JhZ2VTZXNzaW9uLgorCisgICAgICAgIE5vbi1p
c29sYXRlZCBzZXNzaW9ucyBhcmUgbm93IHBpY2tlZCB1cCB0aHJvdWdoIHRoZSBjb252ZW5pZW5j
ZSBmdW5jdGlvbgorICAgICAgICBXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb24o
KSB3aGVyZWFzIGlzb2xhdGVkIHNlc3Npb25zIGFyZSBjcmVhdGVkIGxhemlseSBhbmQKKyAgICAg
ICAgcGlja2VkIHVwIHRocm91Z2ggV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjppc29sYXRl
ZFNlc3Npb24oKS4KKworICAgICAgICBUaGUgbnVtYmVyIG9mIGlzb2xhdGVkIE5TVVJMU2Vzc2lv
bnMgaW4gbWVtb3J5IGlzIGNhcHBlZCB0byAxMC4gV2hlbiB0aGUgY2FwIGlzIGhpdCwKKyAgICAg
ICAgdGhlIHNlc3Npb24gdGhhdCdzIGJlZW4gdW51c2VkIHRoZSBsb25nZXN0IGlzIGFnZWQgb3V0
LgorCisgICAgICAgIFRoZSBDIEFQSSBjaGFuZ2VzIGFyZSB0ZXN0IGluZnJhc3RydWN0dXJlLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNG
b3IgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6ZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29r
aWVCbG9ja2luZyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpkb21haW5zVG9CbG9jayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVD
b29raWVCbG9ja2luZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmRlYnVnTG9nRG9tYWluc0luQmF0Y2hlcyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVk
dWxlQ29va2llQmxvY2tpbmdVcGRhdGVGb3JEb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFyQmxvY2tp
bmdTdGF0ZUZvckRvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICAgICAgRGVhZCBjb2RlLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29r
aWVzRm9yOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc0lzb2xhdGVkU2Vzc2lvbiBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6c2hvdWxkSXNvbGF0ZVNlc3Npb25zRm9yUHJldmFsZW50VG9wRnJhbWVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Omhhc0lzb2xhdGVkU2Vzc2lvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbGVhcklzb2xhdGVkU2Vzc2lvbnMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b25Db2NvYTo6aXNvbGF0ZWRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b25Db2NvYTo6aGFzSXNvbGF0ZWRTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJJc29sYXRlZFNlc3Npb25zKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlhbHMpOgorICAgICAgICAq
IFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpoYXNJc29sYXRlZFNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6Omhhc0xv
Y2FsU3RvcmFnZUZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpoYXNJc29sYXRlZFNlc3Npb25Gb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE5LTA4LTEyICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFyIG1fc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VzIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCA1ZDI4OGQzNTkzNmNlOGRl
MTJjNWJhMzk1NTM0NjI1NTIyYzhjYTYxLi4zZjRkYTY1N2YyODBhYzBmMDZlN2NkYTkzY2MwNWNj
NmY3NDg2YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaApAQCAtMTQ3LDYgKzE0Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzSVRQRGF0YWJh
c2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJVFBEYXRhYmFzZUVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KICAgICBib29sIGlzSVRQRGF0YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0lUUERhdGFiYXNlRW5hYmxlZDsgfQogCisgICAgdm9pZCBzZXRJVFBTZXNzaW9uU3dpdGNo
aW5nRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSVRQU2Vzc2lvblN3aXRjaGluZ0VuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGl0cFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0lUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkOyB9CisKICAgICB2
b2lkIHNldFJlc3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nlc3MoYm9vbCBpc0VuYWJsZWQpIHsgbV9p
c1Jlc3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nlc3MgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIHJl
c3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2lzUmVzdHJpY3Rl
ZEhUVFBSZXNwb25zZUFjY2VzczsgfQogCkBAIC00MTAsNiArNDEzLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fYWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2FyaWFSZWZsZWN0aW9uRW5hYmxlZCB7IHRydWUgfTsKICAgICBib29sIG1faXRwRGVi
dWdNb2RlIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNJVFBTZXNzaW9uU3dpdGNoaW5nRW5hYmxl
ZCB7IHRydWUgfTsKICAgICBib29sIG1faXNSZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNzIHsg
dHJ1ZSB9OwogICAgIGJvb2wgbV9jcm9zc09yaWdpblJlc291cmNlUG9saWN5RW5hYmxlZCB7IHRy
dWUgfTsKICAgICBib29sIG1faXNXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQ1N1cHBvcnRFbmFi
bGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
eWFtbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCA0NTYyNWUxZGZj
Y2E1NDQ4M2NkZTM5Y2IyMTFhNjQ2YjQzMTIwY2E0Li5iNWUwYmY2MDU2MmIyNTY2ZDVmOGJlMWNh
ZjFmNjk0NWRlY2ZiZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LnlhbWwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC04NjEsNiAr
ODYxLDkgQEAgd2ViUlRDRW5jcnlwdGlvbkVuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKICAgaW5z
cGVjdG9yT3ZlcnJpZGU6IHRydWUKIAoraXRwU2Vzc2lvblN3aXRjaGluZ0VuYWJsZWQ6CisgIGlu
aXRpYWw6IHRydWUKKwogIyBEZXByZWNhdGVkCiAKIGljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJs
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggN2EyN2ViNTM0MDZkNjE5MTliNTIwMTAwMzJiNTRh
ZGMxNTQ4MDg0OS4uZTcxOTA3ZDk3N2RmNTkyNzNmNDkxOWM1NjUxYWYxNzM2ZmIxYTY3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcApAQCAtNjMsNyArNjMsMjAgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4KICAgICBpZiAocmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llRm9y
LmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBBU1NFUlQoIShtX3JlZ2lzdHJhYmxl
RG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9t
YWluKSAmJiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5jb250
YWlucyhyZWdpc3RyYWJsZURvbWFpbikpKTsKKworICAgIHJldHVybiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWlu
KQorICAgICAgICB8fCBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zv
ci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7Cit9CisKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQnV0S2VlcEZpcnN0UGFydHlDb29r
aWVzRm9yKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QK
K3sKKyAgICBpZiAocmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBBU1NFUlQoIShtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxl
dGVDb29raWVzRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSAmJiBtX3JlZ2lzdHJhYmxl
RG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bikpKTsKKworICAgIHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29v
a2llc0Zvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkgY29uc3QKQEAgLTEwMywxNiArMTE2LDI0IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhPcHRpb25hbDxTZWNvbmRz
PiBzZWNvCiAgICAgbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llc1Nob3J0ID0gc2Vjb25kcyA/
IFNlY29uZHMgeyBzZWNvbmRzLT5zZWNvbmRzKCkgLyA3LiB9IDogc2Vjb25kczsKIH0KIAotdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2ll
c0Zvcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQordm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29v
a2llc0Zvcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQoreworICAg
IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuY2xlYXIoKTsK
KyAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmFkZChk
b21haW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCkpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcihjb25z
dCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQogewotICAgIG1fcmVnaXN0cmFi
bGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5jbGVhcigpOwotICAgIG1fcmVnaXN0cmFibGVEb21h
aW5zVG9CbG9ja0Nvb2tpZUZvci5hZGQoZG9tYWlucy5iZWdpbigpLCBkb21haW5zLmVuZCgpKTsK
KyAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5jbGVhcigp
OworICAgIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmFkZChk
b21haW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCkpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+JiBkb21haW5zKQogewotICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKLSAg
ICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llRm9yLnJlbW92ZShkb21haW4p
OworICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykgeworICAgICAgICBtX3JlZ2lzdHJh
YmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLnJlbW92ZShkb21haW4pOworICAg
ICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5yZW1vdmUo
ZG9tYWluKTsKKyAgICB9CiB9CiAKIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9y
YWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBl
MmUxMDZhOTFlNmMxN2NjYjMyOWJhNThjYTIyMTI3OGQ0NjczNGRmLi5jOGVmOGY3YmFiNzVmZDk5
NzliMjgyZjVmNWE4NzAyZWY4MGM4OGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTE0Myw3ICsxNDMs
OSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91
bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJM
JiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoY29uc3Qg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0J1dEtlZXBGaXJzdFBhcnR5Q29va2llc0Zvcihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJldmFsZW50RG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVu
dERvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxl
RG9tYWluPiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lk
ZUNvb2tpZXMoT3B0aW9uYWw8U2Vjb25kcz4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21h
aW5zKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
Zmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyKSBjb25zdDsKQEAgLTE4MSw3ICsxODMsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGllbnRTaWRl
Q29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4pIGNvbnN0OwotICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1f
cmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvcjsKKyAgICBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9y
OworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9C
bG9ja0J1dEtlZXBDb29raWVzRm9yOwogICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hN
YXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+Pj4gbV9mcmFt
ZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBIYXNo
TWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+IG1fcGFnZXNHcmFudGVk
U3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2NhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDA0OTIzZWU0MzNmYzEyZjU2YzEyOGY3
MGFjNzgyMzY0ZTM1NmJlYTIuLjY4N2QwYjA0NjFhZmRlN2MwNzI5OGM2YzllZmZkMjYxOTRiZjQ3
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcApAQCAtMTMxNyw4ICsxMzE3LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXAK
IAogICAgIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAKLSAgICBhdXRvIHByaW1hcnlEb21haW5z
VG9CbG9jayA9IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpOwotICAgIHVw
ZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhwcmltYXJ5RG9tYWluc1RvQmxvY2ssIFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAg
IGF1dG8gcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSBlbnN1
cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKTsKKyAgICBSZWdpc3RyYWJsZURvbWFp
bnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IHJlZ2lzdHJhYmxlRG9tYWluc1Rv
QmxvY2tBbmREZWxldGVDb29raWVzRm9yLCB7IH0gfTsKKyAgICB1cGRhdGVDb29raWVCbG9ja2lu
Z0ZvckRvbWFpbnMoZG9tYWluc1RvQmxvY2ssIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Q29va2llVHJlYXRtZW50UmVzdWx0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjb29raWVUcmVhdG1lbnRGb3JPcmlnaW4oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbikgY29uc3QKQEAgLTEzNTMsMTIgKzEzNTQsMjcgQEAgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpo
YXNVc2VyR3JhbnRlZFMKICAgICByZXR1cm4gIXN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCkgPyBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcyA6IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bjo6Tm87CiB9CiAKLVZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbnNUb0Jsb2NrKCkgY29uc3QKK1ZlY3RvcjxSZWdp
c3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFp
bnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisgICAgCisgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiByZXN1
bHRzOworICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBy
ZWdpc3RyYWJsZURvbWFpbiBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSBpc1ByZXZhbGVudCA9
IDEgQU5EIGhhZFVzZXJJbnRlcmFjdGlvbiA9IDAiX3MpOworICAgIGlmIChzdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTElURV9PSykKKyAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgCisgICAg
d2hpbGUgKHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgcmVzdWx0cy5h
cHBlbmQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURv
bWFpblN0cmluZyhzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSkpOworICAgIAorICAgIHJldHVy
biByZXN1bHRzOworfQorCitWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4gcmVzdWx0czsKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50
KG1fZGF0YWJhc2UsICJTRUxFQ1QgcmVnaXN0cmFibGVEb21haW4gRlJPTSBPYnNlcnZlZERvbWFp
bnMgV0hFUkUgaXNQcmV2YWxlbnQgPSAxIl9zKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVt
ZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgcmVnaXN0cmFibGVEb21haW4gRlJPTSBPYnNlcnZlZERv
bWFpbnMgV0hFUkUgaXNQcmV2YWxlbnQgPSAxIEFORCBoYWRVc2VySW50ZXJhY3Rpb24gPSAxIl9z
KTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJl
dHVybiByZXN1bHRzOwogICAgIApAQCAtMTM3MiwxNCArMTM4OCwxNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0
aW9uSGFuZGxlcgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0
byBkb21haW5zVG9CbG9jayA9IHRoaXMtPmRvbWFpbnNUb0Jsb2NrKCk7CisgICAgYXV0byBkb21h
aW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSB0aGlzLT5kb21haW5zVG9CbG9ja0FuZERl
bGV0ZUNvb2tpZXNGb3IoKTsKKyAgICBhdXRvIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNG
b3IgPSB0aGlzLT5kb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKCk7CiAKLSAgICBpZiAo
ZG9tYWluc1RvQmxvY2suaXNFbXB0eSgpKSB7CisgICAgaWYgKGRvbWFpbnNUb0Jsb2NrQW5kRGVs
ZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zv
ci5pc0VtcHR5KCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmIChkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgJiYgIWRvbWFpbnNU
b0Jsb2NrLmlzRW1wdHkoKSkKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0Zv
ciBkb21haW5zVG9CbG9jayB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgZG9t
YWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciB9OworCisgICAgaWYgKGRlYnVnTG9nZ2luZ0Vu
YWJsZWQoKSAmJiAhZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzRW1wdHkoKSAm
JiAhZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc0VtcHR5KCkpCiAgICAgICAgIGRl
YnVnTG9nRG9tYWluc0luQmF0Y2hlcygiYmxvY2siLCBkb21haW5zVG9CbG9jayk7CiAKICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBz
dG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5
KGRvbWFpbnNUb0Jsb2NrKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDExZDczMzMzMGFjMzI2MmQzNTYxYzczY2U2NzQ3
ZGZjYjg4NTY4ZWIuLjNjOGQyYjFmMTY1NDkzYzkzY2E1ZDgyYmMwMjcyZjkxM2I3YTA3ZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
CkBAIC0xMTcsNyArMTE3LDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgdXBkYXRlTGFz
dFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxsVGltZSk7CiAgICAgdm9pZCBzZXRV
c2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgV2FsbFRpbWUpOwotICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlu
c1RvQmxvY2soKSBjb25zdDsKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcigpIGNvbnN0OworICAgIFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4gZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcigpIGNvbnN0OwogCiAgICAg
c3RydWN0IFByZXZhbGVudERvbWFpbkRhdGEgewogICAgICAgICB1bnNpZ25lZCBkb21haW5JRDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAK
aW5kZXggMDc3MGU4ZGViM2RhZGMzM2Q1NGZkZWQ2Mjc5Y2FhMTE3NTBiZWMyMy4uZTIzOWZjYzgw
M2U4ZDc0NDU2MTIxOGQ2NzIxN2Y3MWVkNDFiMTg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTcxMiw4ICs3MTIsOSBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2xlYXIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZQogCiAgICAgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIAot
ICAgIGF1dG8gcHJpbWFyeURvbWFpbnNUb0Jsb2NrID0gZW5zdXJlUHJldmFsZW50UmVzb3VyY2Vz
Rm9yRGVidWdNb2RlKCk7Ci0gICAgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKHByaW1h
cnlEb21haW5zVG9CbG9jaywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5k
RGVsZXRlQ29va2llc0ZvciA9IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgp
OworICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGRvbWFpbnNUb0Jsb2Nr
IHsgcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIHsgfSB9Owor
ICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhkb21haW5zVG9CbG9jaywgW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAK
IGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjp3YXNBY2Nlc3NlZEFzRmly
c3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHVwZGF0ZWQpIGNvbnN0CkBA
IC03NjEsMTggKzc2MiwyNSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZTo6dXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXI8dgogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBk
b21haW5zVG9CbG9jazsKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Js
b2NrQW5kRGVsZXRlQ29va2llc0ZvcjsKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRv
bWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3I7CiAgICAgZm9yIChhdXRvJiByZXNvdXJjZVN0
YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlm
IChyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlKQotICAgICAgICAgICAgZG9t
YWluc1RvQmxvY2suYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKTsK
KyAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UpIHsKKyAg
ICAgICAgICAgIGlmIChoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24ocmVzb3Vy
Y2VTdGF0aXN0aWMsIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSkKKyAgICAgICAgICAgICAg
ICBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmFwcGVuZChyZXNvdXJjZVN0YXRpc3Rp
Yy5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmFwcGVuZChyZXNvdXJjZVN0YXRpc3Rp
Yy5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoZG9tYWlu
c1RvQmxvY2suaXNFbXB0eSgpICYmICFkZWJ1Z01vZGVFbmFibGVkKCkpIHsKKyAgICBpZiAoZG9t
YWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzRW1wdHkoKSAmJiBkb21haW5zVG9CbG9j
a0J1dEtlZXBDb29raWVzRm9yLmlzRW1wdHkoKSAmJiAhZGVidWdNb2RlRW5hYmxlZCgpKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAoZGVidWdMb2dnaW5nRW5hYmxlZCgpICYmICFkb21haW5zVG9CbG9jay5pc0VtcHR5KCkp
CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sg
eyBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIGRvbWFpbnNUb0Jsb2NrQnV0S2Vl
cENvb2tpZXNGb3IgfTsKKworICAgIGlmIChkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgJiYgIWRvbWFp
bnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgIWRvbWFpbnNUb0Jsb2Nr
QnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpKQogICAgICAgICBkZWJ1Z0xvZ0RvbWFpbnNJbkJh
dGNoZXMoImJsb2NrIiwgZG9tYWluc1RvQmxvY2spOwogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgc3RvcmUgPSBtYWtlUmVmKHN0
b3JlKCkpLCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9CbG9jayks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFi
bGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBi
OTNmMDdkYTQxZDU1YzIzYTA3NmQwYjVmZDhmNDNlNGQzOTU0OTAwLi5mYzQxZTBiZTgzMThmMjYw
NDNmNDM4OGE2YjZiZTNjNTIzOTJkYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcApAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZChib29sIHZhbHVlKQogICAg
ICAgICBtX2xhc3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZCA9IE1vbm90b25pY1RpbWU6Om5v
dygpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2ll
QmxvY2tpbmdGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFp
bnNUb0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmdG
b3JEb21haW5zKFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJiBkb21haW5zVG9C
bG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIApAQCAtNTcxLDggKzU3MSwxMSBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlkQ3JlYXRlTmV0d29ya1Byb2Nl
c3MoKQogICAgIHVwZGF0ZUNsaWVudFNpZGVDb29raWVzQWdlQ2FwKCk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWJ1Z0xvZ0RvbWFpbnNJbkJhdGNoZXMoY29uc3Qg
Y2hhciogYWN0aW9uLCBjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQor
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRlYnVnTG9nRG9tYWluc0luQmF0Y2hl
cyhjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29r
aWVzRm9yJiBkb21haW5zVG9CbG9jaykKIHsKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnM7CisgICAgZG9tYWlucy5hcHBlbmRWZWN0b3IoZG9tYWluc1RvQmxvY2suZG9tYWlu
c1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yKTsKKyAgICBkb21haW5zLmFwcGVuZFZlY3Rvcihk
b21haW5zVG9CbG9jay5kb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKTsKICAgICBzdGF0
aWMgY29uc3QgYXV0byBtYXhOdW1iZXJPZkRvbWFpbnNJbk9uZUxvZ1N0YXRlbWVudCA9IDUwOwog
ICAgIGlmIChkb21haW5zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGFkZWMxNGNmOWNjZDk2NGMyOTAxY2Uy
ZDg0ZWEzNTZkZjZkYjBmZjIuLmQ3YjdiNzU1MDU2YjhiYTQyNmQwNDM0Y2E5NzEyODI0NjVhMmEz
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTk4LDcg
Kzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgPSAwOwotICAgIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5z
KGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JE
b21haW5zKFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyQmxvY2tpbmdTdGF0ZUZvckRvbWFpbnMo
Y29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZO
ZWNlc3NhcnkoKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIHVuc2lnbmVkIGNvbXB1dGVJbXBvcnRhbmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3MmKTsKICAgICBzdGF0aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1lcmdl
T3BlcmF0aW5nRGF0ZXMoY29uc3QgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiBleGlzdGluZ0RhdGVz
LCBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mJiBuZXdEYXRlcyk7Ci0gICAgc3RhdGljIHZvaWQgZGVi
dWdMb2dEb21haW5zSW5CYXRjaGVzKGNvbnN0IGNoYXIqIGFjdGlvbiwgY29uc3QgVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucyk7CisgICAgc3RhdGljIHZvaWQgZGVidWdMb2dEb21h
aW5zSW5CYXRjaGVzKGNvbnN0IGNoYXIqIGFjdGlvbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3ImKTsKIAogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRl
TG9jYWxob3N0KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKaW5kZXggZGE4ODY2YjYxYzhiMDU3MmNkZDUwOGViNjlhOWQ4YTk4OWU3NWQy
MS4uMDAxMjA3NDg1NWZjZjA4MTBmZjIyNmVmOTVjMjEyYzM1MDI5Mzc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTg0MCwzOCArODQw
LDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ29va2ll
QmxvY2tpbmdVcGRhdGUoQ29tcGxldGlvbkhhbmQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGVGb3JE
b21haW5zKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNUb0Jsb2NrLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgLy8g
SGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNh
bGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29weShk
b21haW5zVG9CbG9jayksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKLSAg
ICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUt
PnVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhkb21haW5zVG9CbG9jaywgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAg
ICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzY2hlZHVsZUNsZWFyQmxvY2tpbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQotewotICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcg
c3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWlucyA9
IGNyb3NzVGhyZWFkQ29weShkb21haW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NT
dG9yZSkgewotICAgICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX3N0YXRp
c3RpY3NTdG9yZS0+Y2xlYXJCbG9ja2luZ1N0YXRlRm9yRG9tYWlucyhkb21haW5zLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
ICAgICB9KTsKLSAgICB9KTsKLX0KLQogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAg
LTk1NiwxMyArOTI0LDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNh
bGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGNvbnN0IFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zvckhh
bmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3ImIGRvbWFpbnNU
b0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChtX25ldHdvcmtTZXNz
aW9uKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Np
b24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24t
PnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcihkb21haW5zVG9CbG9jayk7Cisg
ICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpKSB7CisgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0UHJl
dmFsZW50RG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yKGRvbWFpbnNUb0Jsb2NrLmRv
bWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvcik7CisgICAgICAgICAgICBzdG9yYWdlU2Vz
c2lvbi0+c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcihkb21haW5z
VG9CbG9jay5kb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMDEyNDJhOWNjYTlkMzY4NTliNTEyMzExZDM5ZTFh
ZWUwZjM4ODA1Zi4uMDIzZGMyNzdjZjUwNTQ3YmY5Njg5ZWNjYTQ4NDRkMGU2NGFiMTMyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNjMsMTEg
KzYzLDE3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGVudW0gY2xhc3MgU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z01vZGUgOiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBFbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nIDogYm9vbCB7IE5vLCBZZXMg
fTsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUb1JlbW92ZSA6IHVpbnQ4X3QgewogICAgIEFsbCwK
ICAgICBBbGxCdXRIdHRwT25seUNvb2tpZXMsCiAgICAgQWxsQnV0Q29va2llcwogfTsKK3N0cnVj
dCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciB7CisgICAgVmVjdG9yPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3I7
CisgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0J1
dEtlZXBDb29raWVzRm9yOworICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9y
IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZG9tYWluc1RvQmxvY2tBbmREZWxldGVD
b29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9y
Lmlzb2xhdGVkQ29weSgpIH07IH0KK307CiAKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKIHB1Ymxp
YzoKQEAgLTE2OCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQo
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJh
bWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjYWxsVXBkYXRlUHJl
dmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNh
bGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8
UmVnaXN0cmFibGVEb21haW4+Jik7CiAgICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZy
YW1lSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
RnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDljYjRhOTI1MjIwOTA1YjRjMjFhNGY3NmFlNzc2YWUxNDUwMjVmODcu
LmFjNmVkNjMyODFkMzE4YjE4YzI1NTdmODlhNDA2MWFmOWZkNmE3ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC02MjksNyArNjI5
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGUKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNUb0Jsb2NrLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0g
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tD
b29raWVzRm9yKGRvbWFpbnNUb0Jsb2NrKTsKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LT5zZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoZG9tYWluc1Rv
QmxvY2spOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKQEAgLTc3Myw2ICs3NzMsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
bmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mg
c2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhcklzb2xh
dGVkU2Vzc2lvbnMoKTsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CiAgICAgICAgICAg
ICBpZiAobW9kaWZpZWRTaW5jZSkKICAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KG1vZGlmaWVkU2luY2UudmFs
dWUoKSwgc2hvdWxkR3JhbmRmYXRoZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAg
LTEyMjgsNiArMTIyOSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENyb3NzU2l0ZUxv
YWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3NpbwogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQorCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgYm9vbCBy
ZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+
aGFzSXNvbGF0ZWRTZXNzaW9uKGRvbWFpbik7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0
KTsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiBib29s
IE5ldHdvcmtQcm9jZXNzOjpzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAppbmRleCBmYjdhNmNkMzZlYTlmMzU5NGE3ZmI5ZGU4NTUzNTMyM2Zh
ODIxNzA4Li5iMmU0OTNiNTY2MDY5ZjljZTBlYWE5ZjcxYjJhZGJjYWY2YTZhOGViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNjAsNiAr
MjYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRh
VHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxXZWJDb3Jl
OjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
IGNvbnN0OwogI2VuZGlmCiAKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
NmMyODI3ZWI5ZGIxMzg4OTkzZDMwYmI5NDNkM2Q2ZWQyZTFlYWEyMi4uMjAwNjgzYjE5Y2VkNDgz
MGUyOGQyMGNhNzdhMWYyNjJmZjFhYjk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzcsNiArMTM3
LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNl
dENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9z
c1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29s
IGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCisgICAgSGFzSXNvbGF0ZWRTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
ZG9tYWluKSAtPiAoYm9vbCBoYXNJc29sYXRlZFNlc3Npb24pIEFzeW5jCiAjZW5kaWYKIAogICAg
IFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMyYmY0M2QyNGUwOTFmZjc2ZDlkYjhiNzBhMTZhZTNmYTE3
YjJkNTAuLjJkNWNkNjZjZTFiY2VlODM4Yjk2YTMwODU2ODM0ZTYyYTA4YWM3OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTkyLDYgKzky
LDkgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5p
c2hlZCh1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgdG90YWxQcmV2
YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzU3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2lucyk7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTG9nVGVzdGluZ0V2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50OyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTG9nVGVzdGluZ0V2ZW50KGJvb2wgbG9nKSB7IG1fZW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0xvZ1Rlc3RpbmdFdmVudCA9IGxvZzsgfQorICAgIGJvb2wgc2hvdWxkSXNvbGF0ZVNl
c3Npb25zRm9yUHJldmFsZW50VG9wRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nID09IEVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmc6OlllczsgfQorICAgIHZpcnR1YWwg
Ym9vbCBoYXNJc29sYXRlZFNlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4p
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFySXNvbGF0ZWRT
ZXNzaW9ucygpIHsgfQogI2VuZGlmCiAgICAgdm9pZCBzdG9yZUFkQ2xpY2tBdHRyaWJ1dGlvbihX
ZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24mJik7CiAgICAgdm9pZCBoYW5kbGVBZENsaWNrQXR0
cmlidXRpb25Db252ZXJzaW9uKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6Q29udmVyc2lv
biYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVkaXJlY3RSZXF1ZXN0KTsKQEAgLTEzMCw2ICsxMzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
U2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNl
TG9hZFN0YXRpc3RpY3MgeyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgfTsKICAgICBFbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZSB7IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6
Ok5vIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CisgICAgRW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZyBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NOU1VSTFNlc3Npb25Td2l0Y2hpbmcgeyBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNV
UkxTZXNzaW9uU3dpdGNoaW5nOjpObyB9OwogICAgIGJvb2wgbV9lbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50OwogI2VuZGlmCiAgICAgVW5pcXVlUmVmPEFkQ2xpY2tB
dHRyaWJ1dGlvbk1hbmFnZXI+IG1fYWRDbGlja0F0dHJpYnV0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAppbmRleCAzNTE0Y2MwZjA4M2M3ZWFjNWQxZDg2MTNhMGVmYTVlNzJl
ODg3NzlkLi5jZjEwMzMxM2QyNmQ4YTQwMTBiYzMzOTY5YWQ3MDc2MTU4NTQ0M2QzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtODQsNiArODQsNyBAQCB2b2lkIE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VM
b2FkU3RhdGlzdGljczsKICAgICBlbmNvZGVyIDw8IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGU7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFs
UHJldmFsZW50UmVzb3VyY2U7CisgICAgZW5jb2RlciA8PCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nOwogCiAgICAgZW5jb2RlciA8PCBsb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkgPDwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAg
IGVuY29kZXIgPDwgbmV0d29ya0NhY2hlRGlyZWN0b3J5IDw8IG5ldHdvcmtDYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKQEAgLTIwOCw2ICsyMDksMTEgQEAgT3B0aW9uYWw8TmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWMKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFsPGJvb2w+
IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmc7CisgICAg
ZGVjb2RlciA+PiBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNo
aW5nOworICAgIGlmICghZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3
aXRjaGluZykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKICAgICBPcHRpb25h
bDxTdHJpbmc+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBkZWNvZGVyID4+IGxvY2FsU3Rv
cmFnZURpcmVjdG9yeTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSkKQEAgLTI2Niw2
ICsyNzIsNyBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgICAgICAsIFdURk1vdmUoKmVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQpCiAgICAgICAgICwgV1RG
TW92ZSgqc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAg
ICAgICAgLCBXVEZNb3ZlKCplbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKQor
ICAgICAgICAsIFdURk1vdmUoKmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Np
b25Td2l0Y2hpbmcpCiAgICAgICAgICwgV1RGTW92ZSgqZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0
aW9uc0VuYWJsZWQpCiAgICAgICAgICwgV1RGTW92ZSgqYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VN
YW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZykKICAgICAgICAgLCBXVEZNb3ZlKCpyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggN2E0NzQxNGI1MTFmY2Q4MDJiZWU1NzI4YjhjN2ViNDkzNzdi
MTFlNi4uMTgzM2U0NjdmZjZjNTJkMjQzOGE2NzAyYmQxNzhlNTdjNTJiNjZhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtODcsNiArODcsNyBAQCBzdHJ1Y3QgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0xvZ1Rlc3RpbmdFdmVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsgdHJ1ZSB9OwogICAgIGJvb2wgZW5h
YmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSB7IGZhbHNlIH07CisgICAgYm9vbCBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nIHsgdHJ1ZSB9
OwogICAgIGJvb2wgZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25z
Rm9yVGVzdGluZyB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCmluZGV4IDVhZDIxMzQ0YTkwYTZiMTE1ZDEyYzMyNWJhM2E5ZjY4NWU3ZDA1YmYu
LjY1Zjg4OTVkOGFmMjZiOTJiYjBiZDdlYjcyYzkwZDMwYTA3YTFiNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVn
aXN0cmFibGVEb21haW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRy
Lmg+CkBAIC0yMDUsOSArMjA2LDE2IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0
YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAjZW5kaWYK
IAogICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gZmFsc2U7CisgICAgYm9vbCBuZWVkc0lz
b2xhdGVkU2Vzc2lvbiA9IGZhbHNlOworICAgIGF1dG8gZmlyc3RQYXJ0eSA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CisKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHNob3VsZEJsb2NrQ29va2llcyA9
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzCi0gICAgICAgIHx8IChzZXNzaW9uLm5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpICYmIHNlc3Npb24ubmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkt
PnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQpKTsKKyAgICBzaG91
bGRCbG9ja0Nvb2tpZXMgPSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzczsKKyAgICBp
ZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc2Vzc2lvbi5uZXR3b3JrU3RvcmFnZVNl
c3Npb24oKSkgeworICAgICAgICBpZiAoIXNob3VsZEJsb2NrQ29va2llcykKKyAgICAgICAgICAg
IHNob3VsZEJsb2NrQ29va2llcyA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2hvdWxkQmxvY2tD
b29raWVzKHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgICAgIG5lZWRzSXNvbGF0ZWRT
ZXNzaW9uID0gc2Vzc2lvbi5zaG91bGRJc29sYXRlU2Vzc2lvbnNGb3JQcmV2YWxlbnRUb3BGcmFt
ZXMoKSAmJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoZmlyc3RQYXJ0eSk7CisgICAgfQogI2VuZGlm
CiAgICAgcmVzdHJpY3RSZXF1ZXN0UmVmZXJyZXJUb09yaWdpbklmTmVlZGVkKHJlcXVlc3QsIHNo
b3VsZEJsb2NrQ29va2llcyk7CiAKQEAgLTIxNSwyMyArMjIzLDIyIEBAIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0
d29ya0RhdGFUCiAgICAgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVy
ZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwgc2hvdWxkQ29udGVudFNuaWZmID09IFdlYkNvcmU6OkNv
bnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwg
c2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYgPT0gV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25p
ZmZpbmdQb2xpY3k6OlNuaWZmKTsKIAogICAgIGF1dG8mIGNvY29hU2Vzc2lvbiA9IHN0YXRpY19j
YXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPigqbV9zZXNzaW9uKTsKKyAgICBpZiAobmVlZHNJc29s
YXRlZFNlc3Npb24pCisgICAgICAgIG1fdGFzayA9IFtjb2NvYVNlc3Npb24uaXNvbGF0ZWRTZXNz
aW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBmaXJzdFBhcnR5KSBkYXRhVGFza1dpdGhSZXF1
ZXN0Om5zUmVxdWVzdF07CisgICAgZWxzZQorICAgICAgICBtX3Rhc2sgPSBbY29jb2FTZXNzaW9u
LnNlc3Npb24oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIGRhdGFUYXNrV2l0aFJlcXVlc3Q6bnNS
ZXF1ZXN0XTsKICAgICBzd2l0Y2ggKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSB7CiAgICAgY2Fz
ZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgotICAgICAgICBtX3Rhc2sg
PSBbY29jb2FTZXNzaW9uLm1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZSBkYXRhVGFza1dp
dGhSZXF1ZXN0Om5zUmVxdWVzdF07CiAgICAgICAgIEFTU0VSVCghY29jb2FTZXNzaW9uLm1fZGF0
YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMuY29udGFpbnMoW21fdGFzayB0YXNrSWRlbnRpZmllcl0p
KTsKICAgICAgICAgY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMuYWRk
KFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCB0aGlzKTsKICAgICAgICAgTE9HKE5ldHdvcmtTZXNz
aW9uLCAiJWxsdSBDcmVhdGluZyBzdGF0ZWZ1bCBOZXR3b3JrRGF0YVRhc2sgd2l0aCBVUkwgJXMi
LCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5V
VEY4U3RyaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U6Ci0gICAgICAgIG1fdGFzayA9IFtjb2NvYVNlc3Npb24u
bV9zdGF0ZWxlc3NTZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0XTsKICAgICAg
ICAgQVNTRVJUKCFjb2NvYVNlc3Npb24ubV9kYXRhVGFza01hcFdpdGhvdXRTdGF0ZS5jb250YWlu
cyhbbV90YXNrIHRhc2tJZGVudGlmaWVyXSkpOwogICAgICAgICBjb2NvYVNlc3Npb24ubV9kYXRh
VGFza01hcFdpdGhvdXRTdGF0ZS5hZGQoW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHRoaXMpOwog
ICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IENyZWF0aW5nIHN0YXRlbGVzcyBOZXR3
b3JrRGF0YVRhc2sgd2l0aCBVUkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1
ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNz
Q29va2llbGVzczoKLSAgICAgICAgaWYgKCFjb2NvYVNlc3Npb24ubV9lcGhlbWVyYWxTdGF0ZWxl
c3NDb29raWVsZXNzU2Vzc2lvbikKLSAgICAgICAgICAgIGNvY29hU2Vzc2lvbi5pbml0aWFsaXpl
RXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24oKTsKLSAgICAgICAgbV90YXNrID0g
W2NvY29hU2Vzc2lvbi5tX2VwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uIGRhdGFU
YXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0XTsKICAgICAgICAgQVNTRVJUKCFjb2NvYVNlc3Npb24u
bV9kYXRhVGFza01hcEVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3MuY29udGFpbnMoW21fdGFz
ayB0YXNrSWRlbnRpZmllcl0pKTsKICAgICAgICAgY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBF
cGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzLmFkZChbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwg
dGhpcyk7CiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgQ3JlYXRpbmcgZXBoZW1l
cmFsLCBzdGF0ZWxlc3MsIGNvb2tpZWxlc3MgTmV0d29ya0RhdGFUYXNrIHdpdGggVVJMICVzIiwg
W21fdGFzayB0YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRG
OFN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCmluZGV4IDRiYWIyM2VhODUzY2U4YWE3MmUzOGRkZmE2
Zjg1OGE1MTViZDkwYjIuLjU5Y2RhMzRiNjhjN2U5OGE5MWM2YzI3ZGM1YzMyMjUwNTg5ZTVhOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5oCkBAIC0zOCw3ICszOCw5IEBAIE9CSkNfQ0xBU1MgV0tOZXR3b3Jr
U2Vzc2lvbldlYlNvY2tldERlbGVnYXRlOwogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAj
aW5jbHVkZSAiV2ViU29ja2V0VGFzay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRN
ZXRyaWNzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKQEAgLTgxLDYgKzgzLDExIEBAIHB1YmxpYzoKICAgICBib29sIGFsbExvYWRz
QmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoKSBjb25zdCB7
IHJldHVybiBtX2FsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0Zv
clRlc3Rpbmc7IH0KICAgICBETUZXZWJzaXRlUG9saWN5TW9uaXRvciAqZGV2aWNlTWFuYWdlbWVu
dFBvbGljeU1vbml0b3IoKTsKIAorICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb24+IHNlc3Npb24o
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAgIFJldGFpblB0cjxOU1VSTFNl
c3Npb24+IGlzb2xhdGVkU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4pOworICAgIGJvb2wgaGFzSXNvbGF0ZWRT
ZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGNsZWFySXNvbGF0ZWRTZXNzaW9ucygpIG92ZXJyaWRlOworCiBwcml2YXRlOgog
ICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJD
cmVkZW50aWFscygpIG92ZXJyaWRlOwpAQCAtMTAxLDYgKzEwOCwxNiBAQCBwcml2YXRlOgogICAg
IEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBXZWJTb2NrZXRU
YXNrKj4gbV93ZWJTb2NrZXREYXRhVGFza01hcDsKICNlbmRpZgogCisgICAgc3RydWN0IElzb2xh
dGVkU2Vzc2lvbiB7CisgICAgICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb24+IHNlc3Npb25XaXRo
Q3JlZGVudGlhbFN0b3JhZ2U7CisgICAgICAgIFJldGFpblB0cjxXS05ldHdvcmtTZXNzaW9uRGVs
ZWdhdGU+IHNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2VEZWxlZ2F0ZTsKKyAgICAgICAgUmV0
YWluUHRyPE5TVVJMU2Vzc2lvbj4gc3RhdGVsZXNzU2Vzc2lvbjsKKyAgICAgICAgUmV0YWluUHRy
PFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZT4gc3RhdGVsZXNzU2Vzc2lvbkRlbGVnYXRlOworICAg
ICAgICBXYWxsVGltZSBsYXN0VXNlZDsKKyAgICB9OworCisgICAgSGFzaE1hcDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiwgSXNvbGF0ZWRTZXNzaW9uPiBtX2lzb2xhdGVkU2Vzc2lvbnM7CisK
ICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uPiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2U7CiAgICAgUmV0YWluUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZT4gbV9zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlRGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbj4g
bV9zdGF0ZWxlc3NTZXNzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDFmOGQ0Y2JmYzdhNTMz
OGNmMGVmNTI0ZTlhNjc1NDMxYjQwMTdmYzkuLjZlYjBlOTdmNjMxZWM3MDNlM2I3YjlkNGY5MDY5
OTQwODY4Nzg0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTY3LDYgKzY3LDggQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIENGU3RyaW5nUmVmIGNvbnN0IFdlYktpdDJIVFRQUHJveHlEZWZh
dWx0c0tleSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihAIldlYktpdDJIVFRQUHJveHkiKTsK
IENGU3RyaW5nUmVmIGNvbnN0IFdlYktpdDJIVFRQU1Byb3h5RGVmYXVsdHNLZXkgPSBzdGF0aWNf
Y2FzdDxDRlN0cmluZ1JlZj4oQCJXZWJLaXQySFRUUFNQcm94eSIpOwogCitjb25zdGV4cHIgdW5z
aWduZWQgbWF4TnVtYmVyT2ZJc29sYXRlZFNlc3Npb25zIHsgMTAgfTsKKwogc3RhdGljIE5TVVJM
U2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24gdG9OU1VSTFNlc3Npb25SZXNwb25zZURpc3Bvc2l0
aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBkaXNwb3NpdGlvbikKIHsKICAgICBzd2l0Y2ggKGRp
c3Bvc2l0aW9uKSB7CkBAIC0xMDM0LDYgKzEwMzYsNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpO
ZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29y
awogICAgIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IHBhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA/IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyA6IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6
Ok5vOwogICAgIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IHBhcmFt
ZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA/IEVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z01vZGU6Ok5vOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFBy
ZXZhbGVudFJlc291cmNlID0gcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFs
UHJldmFsZW50UmVzb3VyY2U7CisgICAgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNV
UkxTZXNzaW9uU3dpdGNoaW5nID0gcGFyYW1ldGVycy5lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nID8gRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05T
VVJMU2Vzc2lvblN3aXRjaGluZzo6WWVzIDogRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05T
VVJMU2Vzc2lvblN3aXRjaGluZzo6Tm87CiAgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQocGFyYW1ldGVycy5lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKTsKICNlbmRpZgog
CkBAIC0xMDY4LDYgKzEwNzEsNzYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFs
aXplRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24oKQogICAgIG1fZXBoZW1lcmFs
U3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNlc3Npb25XaXRoQ29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uIGRlbGVnYXRlOnN0YXRpY19jYXN0PGlkPihtX2VwaGVt
ZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uRGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVl
dWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiB9CiAKK1JldGFpblB0cjxOU1VSTFNl
c3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCit7CisgICAgc3dpdGNoIChzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSkgeworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OlVzZToKKyAgICAgICAgcmV0dXJuIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3Rv
cmFnZTsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVz
ZToKKyAgICAgICAgcmV0dXJuIG1fc3RhdGVsZXNzU2Vzc2lvbjsKKyAgICBjYXNlIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzOgor
ICAgICAgICBpZiAoIW1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24pCisgICAg
ICAgICAgICBpbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24oKTsK
KyAgICAgICAgcmV0dXJuIG1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb247Cisg
ICAgfQorfQorCitSZXRhaW5QdHI8TlNVUkxTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpp
c29sYXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFy
dHlEb21haW4pCit7CisgICAgYXV0byBlbnRyeSA9IG1faXNvbGF0ZWRTZXNzaW9ucy5lbnN1cmUo
Zmlyc3RQYXJ0eURvbWFpbiwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsK
KyAgICAgICAgSXNvbGF0ZWRTZXNzaW9uIG5ld0VudHJ5IHsgfTsKKyAgICAgICAgaWYgKHdlYWtU
aGlzKSB7CisgICAgICAgICAgICBuZXdFbnRyeS5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdl
RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aE5ldHdvcmtTZXNzaW9uOip0aGlzIHdpdGhDcmVkZW50aWFsczp0cnVlXSk7CisgICAgICAg
ICAgICBuZXdFbnRyeS5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlID0gW05TVVJMU2Vzc2lv
biBzZXNzaW9uV2l0aENvbmZpZ3VyYXRpb246bV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdl
LmdldCgpLmNvbmZpZ3VyYXRpb24gZGVsZWdhdGU6c3RhdGljX2Nhc3Q8aWQ+KG5ld0VudHJ5LnNl
c3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2VEZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpb
TlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsKKworICAgICAgICAgICAgbmV3RW50cnkuc3Rh
dGVsZXNzU2Vzc2lvbkRlbGVnYXRlID0gYWRvcHROUyhbW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhOZXR3b3JrU2Vzc2lvbjoqdGhpcyB3aXRoQ3JlZGVudGlhbHM6ZmFs
c2VdKTsKKyAgICAgICAgICAgIG5ld0VudHJ5LnN0YXRlbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNz
aW9uIHNlc3Npb25XaXRoQ29uZmlndXJhdGlvbjptX3N0YXRlbGVzc1Nlc3Npb24uZ2V0KCkuY29u
ZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obmV3RW50cnkuc3RhdGVsZXNzU2Vz
c2lvbkRlbGVnYXRlLmdldCgpKSBkZWxlZ2F0ZVF1ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1haW5R
dWV1ZV1dOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXdFbnRyeTsKKyAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CisKKyAgICBlbnRyeS5sYXN0VXNlZCA9IFdhbGxUaW1lOjpub3coKTsKKwor
ICAgIGlmIChtX2lzb2xhdGVkU2Vzc2lvbnMuc2l6ZSgpID4gbWF4TnVtYmVyT2ZJc29sYXRlZFNl
c3Npb25zKSB7CisgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGtleVRvUmVtb3Zl
OworICAgICAgICBhdXRvIG9sZGVzdFRpbWVzdGFtcCA9IFdhbGxUaW1lOjpub3coKTsKKyAgICAg
ICAgZm9yIChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBrZXkgOiBtX2lzb2xhdGVkU2Vzc2lv
bnMua2V5cygpKSB7CisgICAgICAgICAgICBhdXRvIHRpbWVzdGFtcCA9IG1faXNvbGF0ZWRTZXNz
aW9ucy5nZXQoa2V5KS5sYXN0VXNlZDsKKyAgICAgICAgICAgIGlmICh0aW1lc3RhbXAgPCBvbGRl
c3RUaW1lc3RhbXApIHsKKyAgICAgICAgICAgICAgICBvbGRlc3RUaW1lc3RhbXAgPSB0aW1lc3Rh
bXA7CisgICAgICAgICAgICAgICAga2V5VG9SZW1vdmUgPSBrZXk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiQWJvdXQgdG8gcmVtb3ZlIGlz
b2xhdGVkIE5TVVJMU2Vzc2lvbi4iKTsKKyAgICAgICAgbV9pc29sYXRlZFNlc3Npb25zLnJlbW92
ZShrZXlUb1JlbW92ZSk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlQobV9pc29sYXRlZFNl
c3Npb25zLnNpemUoKSA8PSBtYXhOdW1iZXJPZklzb2xhdGVkU2Vzc2lvbnMpOworCisgICAgc3dp
dGNoIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgeworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OlVzZToKKyAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiVXNp
bmcgaXNvbGF0ZWQgTlNVUkxTZXNzaW9uIHdpdGggY3JlZGVudGlhbCBzdG9yYWdlLiIpOworICAg
ICAgICByZXR1cm4gZW50cnkuc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKKyAgICBjYXNl
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZToKKyAgICAgICAgTE9H
KE5ldHdvcmtTZXNzaW9uLCAiVXNpbmcgaXNvbGF0ZWQgTlNVUkxTZXNzaW9uIHdpdGhvdXQgY3Jl
ZGVudGlhbCBzdG9yYWdlLiIpOworICAgICAgICByZXR1cm4gZW50cnkuc3RhdGVsZXNzU2Vzc2lv
bjsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxT
dGF0ZWxlc3NDb29raWVsZXNzOgorICAgICAgICBpZiAoIW1fZXBoZW1lcmFsU3RhdGVsZXNzQ29v
a2llbGVzc1Nlc3Npb24pCisgICAgICAgICAgICBpbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNz
Q29va2llbGVzc1Nlc3Npb24oKTsKKyAgICAgICAgcmV0dXJuIG1fZXBoZW1lcmFsU3RhdGVsZXNz
Q29va2llbGVzc1Nlc3Npb247CisgICAgfQorfQorCitib29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6
Omhhc0lzb2xhdGVkU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21h
aW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNvbGF0ZWRTZXNzaW9ucy5jb250YWlucyhkb21h
aW4pOworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFySXNvbGF0ZWRTZXNzaW9u
cygpCit7CisgICAgbV9pc29sYXRlZFNlc3Npb25zLmNsZWFyKCk7Cit9CisKIHZvaWQgTmV0d29y
a1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFuZENhbmNlbCgpCiB7CiAgICAgTmV0d29ya1Nlc3Np
b246OmludmFsaWRhdGVBbmRDYW5jZWwoKTsKQEAgLTEwNzgsNiArMTE1MSwxMiBAQCB2b2lkIE5l
dHdvcmtTZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5jZWwoKQogICAgIFttX3Nlc3Npb25X
aXRoQ3JlZGVudGlhbFN0b3JhZ2VEZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOwogICAgIFtt
X3N0YXRlbGVzc1Nlc3Npb25EZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOwogICAgIFttX2Vw
aGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uRGVsZWdhdGUgc2Vzc2lvbkludmFsaWRh
dGVkXTsKKworICAgIGZvciAoSXNvbGF0ZWRTZXNzaW9uIHNlc3Npb24gOiBtX2lzb2xhdGVkU2Vz
c2lvbnMudmFsdWVzKCkpIHsKKyAgICAgICAgW3Nlc3Npb24uc2Vzc2lvbldpdGhDcmVkZW50aWFs
U3RvcmFnZSBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKKyAgICAgICAgW3Nlc3Npb24uc2Vzc2lvbldp
dGhDcmVkZW50aWFsU3RvcmFnZURlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07CisgICAgfQor
ICAgIG1faXNvbGF0ZWRTZXNzaW9ucy5jbGVhcigpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9u
Q29jb2E6OmNsZWFyQ3JlZGVudGlhbHMoKQpAQCAtMTA4OSw2ICsxMTY4LDggQEAgdm9pZCBOZXR3
b3JrU2Vzc2lvbkNvY29hOjpjbGVhckNyZWRlbnRpYWxzKCkKICAgICAvLyBGSVhNRTogVXNlIHJl
c2V0V2l0aENvbXBsZXRpb25IYW5kbGVyIGluc3RlYWQuCiAgICAgbV9zZXNzaW9uV2l0aENyZWRl
bnRpYWxTdG9yYWdlID0gW05TVVJMU2Vzc2lvbiBzZXNzaW9uV2l0aENvbmZpZ3VyYXRpb246bV9z
ZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgpLmNvbmZpZ3VyYXRpb24gZGVsZWdhdGU6
c3RhdGljX2Nhc3Q8aWQ+KG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZURlbGVnYXRlLmdl
dCgpKSBkZWxlZ2F0ZVF1ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV1dOwogICAgIG1f
c3RhdGVsZXNzU2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9u
Om1fc3RhdGVsZXNzU2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uIGRlbGVnYXRlOnN0YXRpY19j
YXN0PGlkPihtX3N0YXRlbGVzc1Nlc3Npb25EZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpb
TlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsKKyAgICBmb3IgKFNlc3Npb25FbnRyeSBlbnRy
eSA6IG1faXNvbGF0ZWRTZXNzaW9ucy52YWx1ZXMoKSkKKyAgICAgICAgZW50cnkuc2Vzc2lvbiA9
IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOmVudHJ5LnNlc3Npb24uZ2V0
KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4oZW50cnkuZGVsZWdhdGUu
Z2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggMmJi
OWFmMWQ0YzU4NjVkYTFmZWYzNmJmMDY5N2E3ZGUzMThiMDhjMy4uYWEzNTQzYzk0ZDNiYTM4NGEx
YmY0OGZmMmI2MGU5ZTU0NzY0ZmVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlcy55YW1sCkBAIC0xNzIzLDYgKzE3MjMsMTQgQEAgTGF6eUltYWdlTG9hZGluZ0VuYWJsZWQ6
CiAgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCiAgIGNhdGVnb3J5OiBl
eHBlcmltZW50YWwKIAorSVRQU2Vzc2lvblN3aXRjaGluZ0VuYWJsZWQ6CisgIHR5cGU6IGJvb2wK
KyAgZGVmYXVsdFZhbHVlOiB0cnVlCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiSVRQIFNlc3Npb24g
U3dpdGNoaW5nIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgc2Vzc2lvbiBz
d2l0Y2hpbmcgZm9yIGRvbWFpbnMgY2xhc3NpZmllZCBieSBJVFAiCisgIHdlYmNvcmVCaW5kaW5n
OiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCisgIGNhdGVnb3J5OiBpbnRlcm5hbAorCiAjIERlcHJl
Y2F0ZWQKIAogSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4
IDNjOTY2MGUyYmU1MjQ2YTNjYTZiYmE0ZWI4ZmEyZWI4MDMxM2E2ZDMuLjk2YjIzMzc0MmMwOWFi
NjMzZGVlZDQzOTQ3OTBmZTFhNDM2YjJkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNDcyLDYgKzQ3
MiwxNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNh
cChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0bwogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbihXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uRnVuY3Rpb24gY2FsbGJh
Y2spCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzSXNvbGF0ZWRTZXNz
aW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNJc29sYXRlZFNlc3Npb24pIHsKKyAgICAgICAg
Y2FsbGJhY2soaGFzSXNvbGF0ZWRTZXNzaW9uLCBjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNlCisg
ICAgY2FsbGJhY2soZmFsc2UsIGNvbnRleHQpOworI2VuZGlmCit9CisKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCBj
NzZlYjJkNGQ3NDk4YmNjYzEyYzNkNWQyYWJjOGI5MThiOGNkMmRmLi5jZGUxNGNhODY3ZTA3YzI3
NDU4YWEyNjUwMTdmNzFhYWM5ZDBmYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTAzLDYgKzEwMyw4IEBA
IHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3Jh
Z2VGdW5jdGlvbikoYm9vbCBoYXNMb2NhCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2VGdW5jdGlvbiBjYWxsYmFjayk7CiB0eXBlZGVmIHZv
aWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlv
bikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24pOwordHlwZWRlZiB2b2lkICgq
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uKShi
b29sIGhhc0lzb2xhdGVkU2Vzc2lvbiwgdm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9S
VCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb24oV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbkZ1
bmN0aW9uIGNhbGxiYWNrKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMGQzZDAz
Y2VlZDgzMTNiY2EyN2IzOTE1YWMzN2NlNmUzZWQ3MzA5OS4uOTRmYWY2YjlkZTI2MjAxZDg0ZDI2
ZmY4MzkzM2Y4MjI5YzA1ZDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC05NzQsNiArOTc0LDE2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0Zv
clJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6CiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
Okhhc0lzb2xhdGVkU2Vzc2lvbihzZXNzaW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVuZElt
bWluZW50bHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAzNWI4MjEzYzI4ZmNiNmI5NDBhMTA5OWJlMTQwOGY5
MDZhM2I5MmJiLi40MzM1NDVjMGUzM2ZhYWVlZDlkZWJiMzRmNmIyMGNmY2FlNWU5NWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtMTUwLDYgKzE1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0Q3Jvc3NT
aXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0
YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CisgICAg
dm9pZCBoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAjZW5kaWYKIAogICAg
IHZvaWQgcHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0KaW5kZXggYTY4MzZkOTI1MTYzMmI4MTg1NTMxNmI2ZGM0ZWE3OGZmODFjYjZiNi4u
ZDE2YTVkMTMxNTVlNzExZTM2NTBhYzhjNzUwNTE2NGM4MTZmYjM1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2VhcmNoUG9wdXBNZW51Q29jb2EuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgpAQCAtNjYsNiArNjcsNyBAQCBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBO
U1VzZXJEZWZhdWx0cyAqZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdOwogICAgIGJvb2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24gPSBmYWxzZTsKICAg
ICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsKKyAg
ICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmcg
PSBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLml0cFNl
c3Npb25Td2l0Y2hpbmdFbmFibGVkKCk7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGUgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpAIklUUERlYnVnTW9kZSJd
OwpAQCAtMTM3LDYgKzEzOSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVE
YXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBmYWxzZSwKICAgICAgICAgc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcywKICAgICAgICAgZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSwKKyAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZywKICAgICAgICAgbV9jb25maWd1cmF0aW9u
LT5kZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCgpLAogICAgICAgICBtX2NvbmZp
Z3VyYXRpb24tPmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0Zv
clRlc3RpbmcoKSwKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFs
UHJldmFsZW50UmVzb3VyY2UpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA5NGM0ZDU5OGI2MDM3YTY5
OTcxMmQxN2I5ZmE3YzVlYjE2NGE2YzU4Li4wMjU4N2IxOWUxOTRlNjFkZjMxZTMxMWM4NjJhZGIx
Y2ZiYzFjYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTY4NCw2ICsxNjg0LDE4IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6aGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhjb25zdCBVUkwmIHVy
bCwgQ29tcGxldGlvbkhhbmRsCiAgICAgfQogICAgIEFTU0VSVCghY29tcGxldGlvbkhhbmRsZXIp
OwogfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3Rp
bmcoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQ
b29sLT5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+aGFz
SXNvbGF0ZWRTZXNzaW9uKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IHVybCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICBBU1NFUlQo
cHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisgICAgQVNTRVJUKCFjb21wbGV0aW9uSGFuZGxlcik7Cit9CiAjZW5kaWYgLy8g
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAppbmRleCBmMmZhNDE2ZDFmYjkyMjRjNmZiODVkYWJjOWZiMTYwNTIxMDJhNDE4Li42NmYzNTZh
YmQ4NmI3Zjk2MDM0MGI4YjY5ZDMzZGE2YzA5YmRmZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xNzks
NiArMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5r
RGVjb3JhdGlvbkZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIGRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIGJvb2wgaW5jbHVkZUh0dHBP
bmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGhhc0xv
Y2FsU3RvcmFnZUZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgY29uc3Q7CisgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb25Gb3JUZXN0aW5nKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OwogI2VuZGlm
CiAgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkwMDc3
MzdmOGE4OTIxYWY2NjlmMjU5MzA3YjJmNmFhNWFlM2FiNzEuLjMxNDkxZDE4NDUzNmI2ZTRmZjFh
OTkxMTI2OGQ5MTBhZjEyOWMzNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOS0wOC0xMiAgSm9obiBXaWxhbmRl
ciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3Rp
Y3M6IFN3aXRjaCBOU1VSTFNlc3Npb24gb24gdG9wIG5hdmlnYXRpb24gdG8gcHJldmFsZW50IHJl
c291cmNlIHdpdGggdXNlciBpbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Mzk2
MjA3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBxdWVyeSB3aGV0aGVyIGFuIG9y
aWdpbiBoYXMgYW4KKyAgICAgICAgaXNvbGF0ZWQgTlNVUkxTZXNzaW9uIG9yIG5vdC4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6aGFzU3RhdGlzdGljc0lzb2xhdGVk
U2Vzc2lvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpoYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNz
aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKToKKwogMjAxOS0wOC0xMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaVBhZE9TXSBXZWIgcGFnZXMgc29tZXRpbWVzIGxvYWQgYXQgaGFs
ZiB3aWR0aCBpbiBTYWZhcmkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDBhZWI5M2Ux
OTEwNzM3ZTcwMDIzZDE5NjljZWQyNzg5ZDI2ZDk4MjUuLmFjZWVkNDBmMmIyNjZiYWYwMGRmNGZi
NWM5NWY5MGVkY2RmMDg2MjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzMzLDYg
KzMzMyw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICBib29sZWFuIGlzU3RhdGlzdGlj
c0hhc0xvY2FsU3RvcmFnZShET01TdHJpbmcgaG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlz
dGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlKG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgYm9v
bGVhbiBoYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKERPTVN0cmluZyBob3N0TmFtZSk7CiAK
ICAgICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCiAgICAgdm9pZCBpbnN0YWxsVGV4
dERpZENoYW5nZUluVGV4dEZpZWxkQ2FsbGJhY2sob2JqZWN0IGNhbGxiYWNrKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmlu
ZGV4IDU5ZjI1YzFiYmFjNmVkODllOTRjZmE4OGE5YWZmYzAzZmI3MjRhMTguLjM3MjllMDVhOWI3
YmM1OTEwYjA5OTgwOWU4NmYwYTcyZmE1Y2ZjOTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjA2Niw2ICsyMDY2
LDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJs
ZSBzZWNvbmRzKQogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9k
eS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK2Jvb2wgVGVzdFJ1bm5lcjo6aGFzU3RhdGlzdGljc0lz
b2xhdGVkU2Vzc2lvbihKU1N0cmluZ1JlZiBob3N0TmFtZSkKK3sKKyAgICBhdXRvIG1lc3NhZ2VO
YW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSGFzU3RhdGlzdGlj
c0lzb2xhdGVkU2Vzc2lvbiIpKTsKKyAgICBhdXRvIG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkpOworICAgIFdLVHlwZVJlZiByZXR1cm5E
YXRhID0gbnVsbHB0cjsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9y
VGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgJnJldHVybkRhdGEpOworICAgIEFTU0VS
VChXS0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAg
cmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVm
PihyZXR1cm5EYXRhKSkuZ2V0KCkpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3ND
YWxsQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsQ2FsbGJhY2soKQogewogICAgIGNhbGxU
ZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZENsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVt
b3ZhbENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA3ZTg1ODhlY2EzMTdiZjg0NjBjZGNhYTc0Njg5NjI0
NWExODkxZWQzLi5jYWZlNzc2Y2E4OWI0NWU5NzRlNGNiNzc4MjhjZDg5ZGZlNjY1NDkwIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aApAQCAtNDMxLDYgKzQzMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsQ2xl
YXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsQ2FsbGJhY2soKTsKICAgICBib29sIGlzU3RhdGlz
dGljc0hhc0xvY2FsU3RvcmFnZShKU1N0cmluZ1JlZiBob3N0TmFtZSk7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpOworICAgIGJvb2wgaGFzU3Rh
dGlzdGljc0lzb2xhdGVkU2Vzc2lvbihKU1N0cmluZ1JlZiBob3N0TmFtZSk7CiAgICAgdm9pZCBz
dGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5k
bGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNh
bGxiYWNrKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggMTY1NDYyOWNhYTZmNmQ4Yzg5NDU0ODM1MWMwYzhmYjBhMzMzMzcyYS4uOGZlZDU5MjU1OGYx
YzYwMjJlZDEzOWUwYzhjODJlZWEyNGRhNTVhYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTM1MTEsNiArMzUxMSwxNSBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpCiAgICAgcnVu
VW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOwogfQogCitib29sIFRlc3RDb250cm9sbGVy
OjpoYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKFdLU3RyaW5nUmVmIGhvc3QpCit7CisgICAg
YXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNv
bnRleHQoKSk7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQo
KnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Np
b24oZGF0YVN0b3JlLCBob3N0LCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzQm9vbGVhblJl
c3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7Cisg
ICAgcmV0dXJuIGNvbnRleHQucmVzdWx0OworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0
aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0g
V0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYzhmZTRlNWE4YjU5YmI0ZWZhYzRj
NWUxYTZhMjk4NzZjYTg5Y2ZmZi4uOGUxMTE5N2I5NzJiYzMzNmFkNmIyMmVjMjYxNzBkMDcwYTMy
ZWFmOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjQ0LDYg
KzI0NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9z
dChXS1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogICAgIGJv
b2wgaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CisgICAg
Ym9vbCBoYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsK
ICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKICAgICB2b2lk
IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCmluZGV4IDEwNzNhYjE1MWEwZTM1NDlhNDEyYTVkMjVmNTRmN2IxYjRl
OWRjYjguLjRkNTllODM2NzdhYTkwMmZjNTgwMzQwM2UxOTJjMGI0MDcxZjljOGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNDYyLDYgKzE0NjIsMTUg
QEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJI
YXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlw
ZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKTsKKyAgICAgICAgCisgICAg
ICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KG1lc3Nh
Z2VCb2R5KTsKKyAgICAgICAgYm9vbCBoYXNJc29sYXRlZFNlc3Npb24gPSBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuaGFzU3RhdGlzdGljc0lzb2xhdGVkU2Vzc2lvbihob3N0TmFtZSk7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaGFzSXNvbGF0ZWRT
ZXNzaW9uKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiUmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzIikpIHsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJl
bW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA2MGRkYTVkYjZhMjAwYWQzMjE5ODhhNTg2NzM4MzEwZGJkMTZmNzFhLi41ZGJmYTBlNzlj
NWEwOTdkM2YyNDU5MWE1ZjYxYzBmYTgwNWFhYTg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTktMDgtMTIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBTd2l0Y2ggTlNVUkxTZXNzaW9uIG9uIHRvcCBuYXZp
Z2F0aW9uIHRvIHByZXZhbGVudCByZXNvdXJjZSB3aXRoIHVzZXIgaW50ZXJhY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDY0MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTM5NjIwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQt
aW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24t
dG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmln
YXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3dpdGNoLXNlc3Np
b24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1pbnRlcmFjdGlvbi5odG1sOiBBZGRl
ZC4KKwogMjAxOS0wOC0xMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGEgdGVzdCB0byBlbnN1cmUgdGhhdCB3ZSBkaXNwYXRjaCBrZXlkb3duIGFuZCBr
ZXl1cCBldmVudHMgd2hlbiBtdWx0aXBsZSBrZXlzIGFyZSBwcmVzc2VkIGF0IHRoZSBzYW1lIHRp
bWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9kby1ub3Qtc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0
aG91dC1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24t
dG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQwNWRjMDliNjk2MzlmMWQ5MGM2YzM3YzIyZWQxYjk2Zjg2MWM0NDkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90
LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJh
Y3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRoYXQgdGhlIHNlc3Np
b24gaXMgbm90IHN3aXRjaGVkIHVwb24gdG9wIGZyYW1lIG5hdmlnYXRpb24gdG8gYSBwcmV2YWxl
bnQgcmVzb3VyY2Ugd2l0aG91dCB1c2VyIGludGVyYWN0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tp
ZS4KK1BBU1MgU2hvdWxkIGhhdmUgYW5kIGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuCitQQVNT
IE9yaWdpbiBoYXMgbm8gaXNvbGF0ZWQgc2Vzc2lvbi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5h
dmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rpb24uaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1ub3Qtc3dpdGNoLXNlc3Np
b24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aG91dC1pbnRlcmFjdGlvbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjliNmZjZTNmNTI4NTUzY2Y2N2Q5MWM0MWIyZDIyYzk3NGIzOTU5ZjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhv
dXQtaW50ZXJhY3Rpb24uaHRtbApAQCAtMCwwICsxLDEwOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAg
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMg
dGhhdCB0aGUgc2Vzc2lvbiBpcyBub3Qgc3dpdGNoZWQgdXBvbiB0b3AgZnJhbWUgbmF2aWdhdGlv
biB0byBhIHByZXZhbGVudCByZXNvdXJjZSB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24uIik7Cisg
ICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBwcmV2YWxlbnRPcmlnaW4gPSAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBub25QcmV2YWxlbnRPcmlnaW4gPSAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCBzZXNzaW9uQ29va2llTmFtZSA9ICJz
ZXNzaW9uQ29va2llIjsKKyAgICBjb25zdCBwZXJzaXN0ZW50Q29va2llTmFtZSA9ICJwZXJzaXN0
ZW50Q29va2llIjsKKyAgICBjb25zdCB0d29NaW51dGVzSW5TZWNvbmRzID0gMTIwOworCisgICAg
ZnVuY3Rpb24gc2V0U2Vzc2lvbkNvb2tpZSgpIHsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0g
c2Vzc2lvbkNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LyI7CisgICAgfQorCisgICAgZnVuY3Rpb24g
c2V0UGVyc2lzdGVudENvb2tpZSgpIHsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gcGVyc2lz
dGVudENvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsgTWF4LUFnZT0iICsgdHdvTWludXRlc0luU2Vj
b25kcyArICI7IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoc2hvdWxkSGF2
ZVNlc3Npb25Db29raWUsIHNob3VsZEhhdmVQZXJzaXN0ZW50Q29va2llKSB7CisgICAgICAgIGxl
dCBoYXNTZXNzaW9uQ29va2llID0gKGRvY3VtZW50LmNvb2tpZSArICIiKS5pbmNsdWRlcyhzZXNz
aW9uQ29va2llTmFtZSksCisgICAgICAgICAgICBoYXNQZXJzaXN0ZW50Q29va2llID0gKGRvY3Vt
ZW50LmNvb2tpZSArICIiKS5pbmNsdWRlcyhwZXJzaXN0ZW50Q29va2llTmFtZSk7CisKKyAgICAg
ICAgaWYgKHNob3VsZEhhdmVTZXNzaW9uQ29va2llICYmIGhhc1Nlc3Npb25Db29raWUpCisgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tp
ZS4iKTsKKyAgICAgICAgZWxzZSBpZiAoc2hvdWxkSGF2ZVNlc3Npb25Db29raWUgJiYgIWhhc1Nl
c3Npb25Db29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNob3VsZCBoYXZlIGJ1dCBk
b2Vzbid0IGhhdmUgdGhlIHNlc3Npb24gY29va2llLiIpOworICAgICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSBlbHNlIGlmICghc2hvdWxk
SGF2ZVNlc3Npb25Db29raWUgJiYgaGFzU2Vzc2lvbkNvb2tpZSkgeworICAgICAgICAgICAgdGVz
dEZhaWxlZCgiU2hvdWxkbid0IGhhdmUgYnV0IGhhcyB0aGUgc2Vzc2lvbiBjb29raWUuIik7Cisg
ICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNob3VsZG4ndCBoYXZlIGFuZCBkb2Vz
bid0IGhhdmUgdGhlIHNlc3Npb24gY29va2llLiIpOworCisKKyAgICAgICAgaWYgKHNob3VsZEhh
dmVQZXJzaXN0ZW50Q29va2llICYmIGhhc1BlcnNpc3RlbnRDb29raWUpCisgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsK
KyAgICAgICAgZWxzZSBpZiAoc2hvdWxkSGF2ZVBlcnNpc3RlbnRDb29raWUgJiYgIWhhc1BlcnNp
c3RlbnRDb29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNob3VsZCBoYXZlIGJ1dCBk
b2Vzbid0IGhhdmUgdGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAgICAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSBlbHNlIGlmICghc2hv
dWxkSGF2ZVBlcnNpc3RlbnRDb29raWUgJiYgaGFzUGVyc2lzdGVudENvb2tpZSkgeworICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkbid0IGhhdmUgYnV0IGhhcyB0aGUgcGVyc2lzdGVudCBj
b29raWUuIik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rl
c3QpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNob3VsZG4ndCBo
YXZlIGFuZCBkb2Vzbid0IGhhdmUgdGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHN3aXRjaCAoZG9jdW1lbnQubG9jYXRp
b24uaGFzaCkgeworICAgICAgICAgICAgY2FzZSAiI3N0ZXAxIjoKKyAgICAgICAgICAgICAgICBz
ZXRTZXNzaW9uQ29va2llKCk7CisgICAgICAgICAgICAgICAgc2V0UGVyc2lzdGVudENvb2tpZSgp
OworICAgICAgICAgICAgICAgIGNoZWNrQ29va2llcyh0cnVlLCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICBpZiAodGVzdFJ1bm5lci5oYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKHByZXZhbGVu
dE9yaWdpbikpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiT3JpZ2luIGhhcyBp
c29sYXRlZCBzZXNzaW9uLiIpOworICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJPcmlnaW4gaGFzIG5vIGlzb2xhdGVkIHNlc3Npb24uIik7
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IG5vblByZXZhbGVudE9y
aWdpbiArICIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1ub3Qtc3dpdGNoLXNlc3Npb24tb24t
bmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aG91dC1pbnRlcmFjdGlvbi5odG1sI3N0ZXAyIjsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMiI6CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMyI7CisgICAgICAgICAg
ICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbiAhPT0gbm9uUHJldmFsZW50T3JpZ2lu
KQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTdGVwIDIgaXMgbm90IG9uICIgKyBu
b25QcmV2YWxlbnRPcmlnaW4gKyAiLiIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHByZXZhbGVudE9yaWdpbiwgdHJ1ZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZShwcmV2YWxlbnRPcmlnaW4pKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKHByZXZhbGVudE9yaWdpbiArICIgZGlkIG5vdCBnZXQgc2V0IGFzIHBy
ZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmco
cnVuVGVzdCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlICIjc3RlcDMiOgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0
aW9uLmhyZWYgPSBwcmV2YWxlbnRPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8t
bm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50
ZXJhY3Rpb24uaHRtbCNzdGVwNCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlICIjc3RlcDQiOgorICAgICAgICAgICAgICAgIGNoZWNrQ29va2llcyh0cnVlLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5oYXNTdGF0aXN0aWNzSXNvbGF0ZWRT
ZXNzaW9uKHByZXZhbGVudE9yaWdpbikpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ik9yaWdpbiBoYXMgaXNvbGF0ZWQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIk9yaWdpbiBoYXMgbm8gaXNvbGF0ZWQgc2Vz
c2lvbi4iKTsKKyAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hK
U1Rlc3QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGhhc2guIik7CisgICAgICAgICAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgeworICAgICAgICBp
ZiAoZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luICE9PSBwcmV2YWxlbnRPcmlnaW4pCisgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJUZXN0IGlzIG5vdCBzdGFydGluZyBvdXQgb24gIiArIHByZXZhbGVu
dE9yaWdpbiArICIuIik7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UocHJldmFsZW50T3JpZ2luKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKHByZXZh
bGVudE9yaWdpbiArICIgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJlZm9y
ZSB0aGUgdGVzdCBzdGFydHMuIik7CisgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNo
ID0gInN0ZXAxIjsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1pbnRl
cmFjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0
aC1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQzOTIyZmQ5M2YxYTU0NDRm
MmNiMDY4ODRlZmMzMjkwYmFlNTFmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0
aW9uLXRvLXByZXZhbGVudC13aXRoLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEyIEBACitUZXN0cyB0aGF0IHRoZSBzZXNzaW9uIGlzIHN3aXRjaGVkIHVwb24gdG9wIGZyYW1l
IG5hdmlnYXRpb24gdG8gYSBwcmV2YWxlbnQgcmVzb3VyY2Ugd2l0aCB1c2VyIGludGVyYWN0aW9u
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTaG91bGQgaGF2ZSBhbmQg
aGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4KK1BBU1MgU2hvdWxkIGhhdmUgYW5kIGhhcyB0aGUgcGVy
c2lzdGVudCBjb29raWUuCitQQVNTIE9yaWdpbiBoYXMgaXNvbGF0ZWQgc2Vzc2lvbi4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3dpdGNoLXNl
c3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1pbnRlcmFjdGlvbi5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNz
aW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rpb24uaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YWJmN2U1ZmI3ZTMzYmZjMzEwMjM5MmIwMjE1Y2FhNWNjYWMzOWJmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rp
b24uaHRtbApAQCAtMCwwICsxLDExMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJl
biI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgc2Vz
c2lvbiBpcyBzd2l0Y2hlZCB1cG9uIHRvcCBmcmFtZSBuYXZpZ2F0aW9uIHRvIGEgcHJldmFsZW50
IHJlc291cmNlIHdpdGggdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgIGNvbnN0IHByZXZhbGVudE9yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiOworICAgIGNvbnN0IG5vblByZXZhbGVudE9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0Ojgw
MDAiOworICAgIGNvbnN0IHNlc3Npb25Db29raWVOYW1lID0gInNlc3Npb25Db29raWUiOworICAg
IGNvbnN0IHBlcnNpc3RlbnRDb29raWVOYW1lID0gInBlcnNpc3RlbnRDb29raWUiOworICAgIGNv
bnN0IHR3b01pbnV0ZXNJblNlY29uZHMgPSAxMjA7CisKKyAgICBmdW5jdGlvbiBzZXRTZXNzaW9u
Q29va2llKCkgeworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBzZXNzaW9uQ29va2llTmFtZSAr
ICI9MTsgcGF0aD0vIjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRQZXJzaXN0ZW50Q29va2ll
KCkgeworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBwZXJzaXN0ZW50Q29va2llTmFtZSArICI9
MTsgcGF0aD0vOyBNYXgtQWdlPSIgKyB0d29NaW51dGVzSW5TZWNvbmRzICsgIjsiOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcyhzaG91bGRIYXZlU2Vzc2lvbkNvb2tpZSwgc2hv
dWxkSGF2ZVBlcnNpc3RlbnRDb29raWUpIHsKKyAgICAgICAgbGV0IGhhc1Nlc3Npb25Db29raWUg
PSAoZG9jdW1lbnQuY29va2llICsgIiIpLmluY2x1ZGVzKHNlc3Npb25Db29raWVOYW1lKSwKKyAg
ICAgICAgICAgIGhhc1BlcnNpc3RlbnRDb29raWUgPSAoZG9jdW1lbnQuY29va2llICsgIiIpLmlu
Y2x1ZGVzKHBlcnNpc3RlbnRDb29raWVOYW1lKTsKKworICAgICAgICBpZiAoc2hvdWxkSGF2ZVNl
c3Npb25Db29raWUgJiYgaGFzU2Vzc2lvbkNvb2tpZSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQo
IlNob3VsZCBoYXZlIGFuZCBoYXMgdGhlIHNlc3Npb24gY29va2llLiIpOworICAgICAgICBlbHNl
IGlmIChzaG91bGRIYXZlU2Vzc2lvbkNvb2tpZSAmJiAhaGFzU2Vzc2lvbkNvb2tpZSkgeworICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGhhdmUgYnV0IGRvZXNuJ3QgaGF2ZSB0aGUgc2Vz
c2lvbiBjb29raWUuIik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5p
c2hKU1Rlc3QpOworICAgICAgICB9IGVsc2UgaWYgKCFzaG91bGRIYXZlU2Vzc2lvbkNvb2tpZSAm
JiBoYXNTZXNzaW9uQ29va2llKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGRuJ3Qg
aGF2ZSBidXQgaGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJs
ZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiU2hvdWxkbid0IGhhdmUgYW5kIGRvZXNuJ3QgaGF2ZSB0aGUgc2Vzc2lv
biBjb29raWUuIik7CisKKworICAgICAgICBpZiAoc2hvdWxkSGF2ZVBlcnNpc3RlbnRDb29raWUg
JiYgaGFzUGVyc2lzdGVudENvb2tpZSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNob3VsZCBo
YXZlIGFuZCBoYXMgdGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAgICAgICBlbHNlIGlmIChz
aG91bGRIYXZlUGVyc2lzdGVudENvb2tpZSAmJiAhaGFzUGVyc2lzdGVudENvb2tpZSkgeworICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGhhdmUgYnV0IGRvZXNuJ3QgaGF2ZSB0aGUgcGVy
c2lzdGVudCBjb29raWUuIik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBm
aW5pc2hKU1Rlc3QpOworICAgICAgICB9IGVsc2UgaWYgKCFzaG91bGRIYXZlUGVyc2lzdGVudENv
b2tpZSAmJiBoYXNQZXJzaXN0ZW50Q29va2llKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJT
aG91bGRuJ3QgaGF2ZSBidXQgaGFzIHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICAgICAg
ICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiU2hvdWxkbid0IGhhdmUgYW5kIGRvZXNuJ3QgaGF2
ZSB0aGUgcGVyc2lzdGVudCBjb29raWUuIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAg
ICAgICBjYXNlICIjc3RlcDEiOgorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihwcmV2YWxlbnRPcmlnaW4sIHRydWUsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgICAgICBzZXRTZXNzaW9uQ29va2llKCk7CisgICAgICAgICAg
ICAgICAgICAgIHNldFBlcnNpc3RlbnRDb29raWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2hl
Y2tDb29raWVzKHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5l
ci5oYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKHByZXZhbGVudE9yaWdpbikpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk9yaWdpbiBoYXMgaXNvbGF0ZWQgc2Vzc2lv
bi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZp
bmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiT3JpZ2luIGhhcyBubyBpc29sYXRlZCBzZXNzaW9uLiIpOwor
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gbm9uUHJldmFsZW50
T3JpZ2luICsgIi9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmln
YXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rpb24uaHRtbCNzdGVwMiI7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIj
c3RlcDIiOgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDMi
OworICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gIT09IG5vblBy
ZXZhbGVudE9yaWdpbikKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3RlcCAyIGlz
IG5vdCBvbiAiICsgbm9uUHJldmFsZW50T3JpZ2luICsgIi4iKTsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShwcmV2YWxlbnRPcmlnaW4s
IHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UocHJldmFsZW50T3JpZ2luKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChwcmV2YWxlbnRPcmlnaW4gKyAiIGRpZCBub3Qg
Z2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNv
b2tpZUJsb2NraW5nKHJ1blRlc3QpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAzIjoKKyAgICAgICAgICAgICAgICBk
b2N1bWVudC5sb2NhdGlvbi5ocmVmID0gcHJldmFsZW50T3JpZ2luICsgIi9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgt
aW50ZXJhY3Rpb24uaHRtbCNzdGVwNCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlICIjc3RlcDQiOgorICAgICAgICAgICAgICAgIGNoZWNrQ29va2llcyh0cnVlLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5oYXNTdGF0aXN0aWNzSXNvbGF0
ZWRTZXNzaW9uKHByZXZhbGVudE9yaWdpbikpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIk9yaWdpbiBoYXMgaXNvbGF0ZWQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk9yaWdpbiBoYXMgbm8gaXNvbGF0ZWQg
c2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5p
c2hKU1Rlc3QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGhhc2guIik7CisgICAgICAgICAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgeworICAgICAg
ICBpZiAoZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luICE9PSBwcmV2YWxlbnRPcmlnaW4pCisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJUZXN0IGlzIG5vdCBzdGFydGluZyBvdXQgb24gIiArIHByZXZh
bGVudE9yaWdpbiArICIuIik7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UocHJldmFsZW50T3JpZ2luKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKHBy
ZXZhbGVudE9yaWdpbiArICIgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJl
Zm9yZSB0aGUgdGVzdCBzdGFydHMuIik7CisgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5o
YXNoID0gInN0ZXAxIjsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376097</attachid>
            <date>2019-08-12 15:02:10 -0700</date>
            <delta_ts>2019-08-12 16:53:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200642-20190812150210.patch</filename>
            <type>text/plain</type>
            <size>84400</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI1ZGZjODg5NjEwMzgz
YmRkN2ZiMzMyNmQzY2QwYThiYWVlYTlmNS4uY2VmNGM4ZDBmZGM0MjQ2NTEwNzJjOWE4ZWVmZDk3
ZWI5OWI1MTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE5LTA4LTEyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogU3dpdGNoIE5TVVJMU2Vzc2lvbiBvbiB0b3AgbmF2aWdhdGlvbiB0byBwcmV2
YWxlbnQgcmVzb3VyY2Ugd2l0aCB1c2VyIGludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzUzOTYyMDczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3
aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rp
b24uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rp
b24uaHRtbAorCisgICAgICAgIFRoaXMgcGF0Y2ggc3BsaXRzIG1fcmVnaXN0cmFibGVEb21haW5z
VG9CbG9ja0Nvb2tpZUZvciBpbiBXZWJDb3JlOk5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBpbnRvOgor
ICAgICAgICAtIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IK
KyAgICAgICAgLSBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcgor
ICAgICAgICAuLi4gdG8gc3VwcG9ydCBkaWZmZXJlbnQgbmV0d29yayBsb2FkIHBvbGljaWVzIGJh
c2VkIG9uIHRoaXMgZGlzdGluY3Rpb24uCisKKyAgICAgICAgKiBwYWdlL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dElUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Oml0cFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkIGNvbnN0KToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
c0J1dEtlZXBGaXJzdFBhcnR5Q29va2llc0ZvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQW5kRGVsZXRl
Q29va2llc0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWxlbnREb21haW5zKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJldmFsZW50RG9tYWlu
c1RvQmxvY2tDb29raWVzRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorCiAyMDE5LTA4LTEyICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dURl1bSlNDXSBNYWtlIEpTQyBhbmQgV1RG
IGFnZ3Jlc3NpdmVseS1mYXN0LW1hbGxvY2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3M2NlZjZjNjMzMDRmNmUx
OWU0NDllYTM1YjExN2E2MDk1MWIwN2MuLmEzNWFiNzE5MzYzYzVmMjZmYWRkNGY4MDI4Mzg0MzVk
NDJkZmQzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTMgQEAKKzIwMTktMDgtMTIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBTd2l0Y2ggTlNVUkxTZXNzaW9uIG9uIHRvcCBuYXZpZ2F0aW9uIHRvIHByZXZhbGVu
dCByZXNvdXJjZSB3aXRoIHVzZXIgaW50ZXJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDY0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTM5NjIwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2luY2UgcHJldmFsZW50IHJlc291cmNlcyB3aXRoIHVzZXIgaW50ZXJhY3Rpb24gZ2V0IHRv
IGtlZXAgdGhlaXIgY29va2llcyBhbmQgd2Vic2l0ZQorICAgICAgICBkYXRhLCB3ZSBzaG91bGQg
dXNlIGEgZGlmZmVyZW50IE5TVVJMU2Vzc2lvbnMgZm9yIHdoZW4gdGhleSBhcmUgZmlyc3QtcGFy
dHkgd2Vic2l0ZXMKKyAgICAgICAgYW5kIGhhdmUgYWNjZXNzIHRvIHRoYXQgZGF0YS4gVGhpcyBw
YXRjaCBhY2hpZXZlcyB0aGF0LgorCisgICAgICAgIFRoZSBXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
a0NvY29hIGNvbnN0cnVjdG9yIG5vdyBjaGVja3Mgd2l0aCB0aGUgbmV0d29yayBzdG9yYWdlIHNl
c3Npb24KKyAgICAgICAgaWYgdGhlIGZpcnN0IHBhcnR5IGZvciB0aGlzIGxvYWQgc2hvdWxkIGJl
IGlzb2xhdGVkLiBUaGUgY2F0ZWdvcnkgZm9yIHdoaWNoIHRoaXMgaXMgdHJ1ZQorICAgICAgICBp
cyBjaGVja2VkIGluIHRoZSBuZXcgZnVuY3Rpb24KKyAgICAgICAgV2ViQ29yZTpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0
eUNvb2tpZXNGb3IoKQorICAgICAgICB3aGljaCBpbiB0dXJuIGlzIGJhY2tlZCBieSBhIG5ldyBz
cGxpdCBvZiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVGb3IgaW50bzoKKyAgICAg
ICAgLSBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yCisgICAg
ICAgIC0gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IKKyAgICAg
ICAgLi4uIGluIFdlYkNvcmU6TmV0d29ya1N0b3JhZ2VTZXNzaW9uLgorCisgICAgICAgIE5vbi1p
c29sYXRlZCBzZXNzaW9ucyBhcmUgbm93IHBpY2tlZCB1cCB0aHJvdWdoIHRoZSBjb252ZW5pZW5j
ZSBmdW5jdGlvbgorICAgICAgICBXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb24o
KSB3aGVyZWFzIGlzb2xhdGVkIHNlc3Npb25zIGFyZSBjcmVhdGVkIGxhemlseSBhbmQKKyAgICAg
ICAgcGlja2VkIHVwIHRocm91Z2ggV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjppc29sYXRl
ZFNlc3Npb24oKS4KKworICAgICAgICBUaGUgbnVtYmVyIG9mIGlzb2xhdGVkIE5TVVJMU2Vzc2lv
bnMgaW4gbWVtb3J5IGlzIGNhcHBlZCB0byAxMC4gV2hlbiB0aGUgY2FwIGlzIGhpdCwKKyAgICAg
ICAgdGhlIHNlc3Npb24gdGhhdCdzIGJlZW4gdW51c2VkIHRoZSBsb25nZXN0IGlzIGFnZWQgb3V0
LgorCisgICAgICAgIFRoZSBDIEFQSSBjaGFuZ2VzIGFyZSB0ZXN0IGluZnJhc3RydWN0dXJlLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNG
b3IgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6ZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29r
aWVCbG9ja2luZyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpkb21haW5zVG9CbG9jayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVD
b29raWVCbG9ja2luZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmRlYnVnTG9nRG9tYWluc0luQmF0Y2hlcyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVk
dWxlQ29va2llQmxvY2tpbmdVcGRhdGVGb3JEb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFyQmxvY2tp
bmdTdGF0ZUZvckRvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICAgICAgRGVhZCBjb2RlLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29r
aWVzRm9yOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc0lzb2xhdGVkU2Vzc2lvbiBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6c2hvdWxkSXNvbGF0ZVNlc3Npb25zRm9yUHJldmFsZW50VG9wRnJhbWVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Omhhc0lzb2xhdGVkU2Vzc2lvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbGVhcklzb2xhdGVkU2Vzc2lvbnMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b25Db2NvYTo6aXNvbGF0ZWRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b25Db2NvYTo6aGFzSXNvbGF0ZWRTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJJc29sYXRlZFNlc3Npb25zKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlhbHMpOgorICAgICAgICAq
IFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpoYXNJc29sYXRlZFNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6Omhhc0xv
Y2FsU3RvcmFnZUZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpoYXNJc29sYXRlZFNlc3Npb25Gb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE5LTA4LTEyICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFyIG1fc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VzIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCA1ZDI4OGQzNTkzNmNlOGRl
MTJjNWJhMzk1NTM0NjI1NTIyYzhjYTYxLi4zZjRkYTY1N2YyODBhYzBmMDZlN2NkYTkzY2MwNWNj
NmY3NDg2YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaApAQCAtMTQ3LDYgKzE0Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzSVRQRGF0YWJh
c2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJVFBEYXRhYmFzZUVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KICAgICBib29sIGlzSVRQRGF0YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0lUUERhdGFiYXNlRW5hYmxlZDsgfQogCisgICAgdm9pZCBzZXRJVFBTZXNzaW9uU3dpdGNo
aW5nRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSVRQU2Vzc2lvblN3aXRjaGluZ0VuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGl0cFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0lUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkOyB9CisKICAgICB2
b2lkIHNldFJlc3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nlc3MoYm9vbCBpc0VuYWJsZWQpIHsgbV9p
c1Jlc3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nlc3MgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIHJl
c3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2lzUmVzdHJpY3Rl
ZEhUVFBSZXNwb25zZUFjY2VzczsgfQogCkBAIC00MTAsNiArNDEzLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fYWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2FyaWFSZWZsZWN0aW9uRW5hYmxlZCB7IHRydWUgfTsKICAgICBib29sIG1faXRwRGVi
dWdNb2RlIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNJVFBTZXNzaW9uU3dpdGNoaW5nRW5hYmxl
ZCB7IHRydWUgfTsKICAgICBib29sIG1faXNSZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNzIHsg
dHJ1ZSB9OwogICAgIGJvb2wgbV9jcm9zc09yaWdpblJlc291cmNlUG9saWN5RW5hYmxlZCB7IHRy
dWUgfTsKICAgICBib29sIG1faXNXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQ1N1cHBvcnRFbmFi
bGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
eWFtbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCA0NTYyNWUxZGZj
Y2E1NDQ4M2NkZTM5Y2IyMTFhNjQ2YjQzMTIwY2E0Li5iNWUwYmY2MDU2MmIyNTY2ZDVmOGJlMWNh
ZjFmNjk0NWRlY2ZiZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LnlhbWwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC04NjEsNiAr
ODYxLDkgQEAgd2ViUlRDRW5jcnlwdGlvbkVuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKICAgaW5z
cGVjdG9yT3ZlcnJpZGU6IHRydWUKIAoraXRwU2Vzc2lvblN3aXRjaGluZ0VuYWJsZWQ6CisgIGlu
aXRpYWw6IHRydWUKKwogIyBEZXByZWNhdGVkCiAKIGljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJs
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggN2EyN2ViNTM0MDZkNjE5MTliNTIwMTAwMzJiNTRh
ZGMxNTQ4MDg0OS4uZTcxOTA3ZDk3N2RmNTkyNzNmNDkxOWM1NjUxYWYxNzM2ZmIxYTY3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcApAQCAtNjMsNyArNjMsMjAgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4KICAgICBpZiAocmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llRm9y
LmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBBU1NFUlQoIShtX3JlZ2lzdHJhYmxl
RG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9t
YWluKSAmJiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5jb250
YWlucyhyZWdpc3RyYWJsZURvbWFpbikpKTsKKworICAgIHJldHVybiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWlu
KQorICAgICAgICB8fCBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zv
ci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7Cit9CisKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQnV0S2VlcEZpcnN0UGFydHlDb29r
aWVzRm9yKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QK
K3sKKyAgICBpZiAocmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBBU1NFUlQoIShtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxl
dGVDb29raWVzRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSAmJiBtX3JlZ2lzdHJhYmxl
RG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bikpKTsKKworICAgIHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29v
a2llc0Zvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkgY29uc3QKQEAgLTEwMywxNiArMTE2LDI0IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhPcHRpb25hbDxTZWNvbmRz
PiBzZWNvCiAgICAgbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llc1Nob3J0ID0gc2Vjb25kcyA/
IFNlY29uZHMgeyBzZWNvbmRzLT5zZWNvbmRzKCkgLyA3LiB9IDogc2Vjb25kczsKIH0KIAotdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2ll
c0Zvcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQordm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29v
a2llc0Zvcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQoreworICAg
IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuY2xlYXIoKTsK
KyAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmFkZChk
b21haW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCkpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcihjb25z
dCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQogewotICAgIG1fcmVnaXN0cmFi
bGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5jbGVhcigpOwotICAgIG1fcmVnaXN0cmFibGVEb21h
aW5zVG9CbG9ja0Nvb2tpZUZvci5hZGQoZG9tYWlucy5iZWdpbigpLCBkb21haW5zLmVuZCgpKTsK
KyAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5jbGVhcigp
OworICAgIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmFkZChk
b21haW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCkpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+JiBkb21haW5zKQogewotICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKLSAg
ICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llRm9yLnJlbW92ZShkb21haW4p
OworICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykgeworICAgICAgICBtX3JlZ2lzdHJh
YmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLnJlbW92ZShkb21haW4pOworICAg
ICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5yZW1vdmUo
ZG9tYWluKTsKKyAgICB9CiB9CiAKIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9y
YWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBl
MmUxMDZhOTFlNmMxN2NjYjMyOWJhNThjYTIyMTI3OGQ0NjczNGRmLi5jOGVmOGY3YmFiNzVmZDk5
NzliMjgyZjVmNWE4NzAyZWY4MGM4OGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTE0Myw3ICsxNDMs
OSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91
bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJM
JiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoY29uc3Qg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0J1dEtlZXBGaXJzdFBhcnR5Q29va2llc0Zvcihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJldmFsZW50RG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVu
dERvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxl
RG9tYWluPiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lk
ZUNvb2tpZXMoT3B0aW9uYWw8U2Vjb25kcz4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21h
aW5zKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
Zmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyKSBjb25zdDsKQEAgLTE4MSw3ICsxODMsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGllbnRTaWRl
Q29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4pIGNvbnN0OwotICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1f
cmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvcjsKKyAgICBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9y
OworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9C
bG9ja0J1dEtlZXBDb29raWVzRm9yOwogICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hN
YXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+Pj4gbV9mcmFt
ZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBIYXNo
TWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+IG1fcGFnZXNHcmFudGVk
U3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2NhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDA0OTIzZWU0MzNmYzEyZjU2YzEyOGY3
MGFjNzgyMzY0ZTM1NmJlYTIuLjY4N2QwYjA0NjFhZmRlN2MwNzI5OGM2YzllZmZkMjYxOTRiZjQ3
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcApAQCAtMTMxNyw4ICsxMzE3LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXAK
IAogICAgIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAKLSAgICBhdXRvIHByaW1hcnlEb21haW5z
VG9CbG9jayA9IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpOwotICAgIHVw
ZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhwcmltYXJ5RG9tYWluc1RvQmxvY2ssIFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAg
IGF1dG8gcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSBlbnN1
cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKTsKKyAgICBSZWdpc3RyYWJsZURvbWFp
bnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IHJlZ2lzdHJhYmxlRG9tYWluc1Rv
QmxvY2tBbmREZWxldGVDb29raWVzRm9yLCB7IH0gfTsKKyAgICB1cGRhdGVDb29raWVCbG9ja2lu
Z0ZvckRvbWFpbnMoZG9tYWluc1RvQmxvY2ssIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Q29va2llVHJlYXRtZW50UmVzdWx0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjb29raWVUcmVhdG1lbnRGb3JPcmlnaW4oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbikgY29uc3QKQEAgLTEzNTMsMTIgKzEzNTQsMjcgQEAgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpo
YXNVc2VyR3JhbnRlZFMKICAgICByZXR1cm4gIXN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCkgPyBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcyA6IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bjo6Tm87CiB9CiAKLVZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbnNUb0Jsb2NrKCkgY29uc3QKK1ZlY3RvcjxSZWdp
c3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFp
bnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisgICAgCisgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiByZXN1
bHRzOworICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBy
ZWdpc3RyYWJsZURvbWFpbiBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSBpc1ByZXZhbGVudCA9
IDEgQU5EIGhhZFVzZXJJbnRlcmFjdGlvbiA9IDAiX3MpOworICAgIGlmIChzdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTElURV9PSykKKyAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgCisgICAg
d2hpbGUgKHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgcmVzdWx0cy5h
cHBlbmQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURv
bWFpblN0cmluZyhzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSkpOworICAgIAorICAgIHJldHVy
biByZXN1bHRzOworfQorCitWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4gcmVzdWx0czsKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50
KG1fZGF0YWJhc2UsICJTRUxFQ1QgcmVnaXN0cmFibGVEb21haW4gRlJPTSBPYnNlcnZlZERvbWFp
bnMgV0hFUkUgaXNQcmV2YWxlbnQgPSAxIl9zKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVt
ZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgcmVnaXN0cmFibGVEb21haW4gRlJPTSBPYnNlcnZlZERv
bWFpbnMgV0hFUkUgaXNQcmV2YWxlbnQgPSAxIEFORCBoYWRVc2VySW50ZXJhY3Rpb24gPSAxIl9z
KTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJl
dHVybiByZXN1bHRzOwogICAgIApAQCAtMTM3MiwxNCArMTM4OCwxNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0
aW9uSGFuZGxlcgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0
byBkb21haW5zVG9CbG9jayA9IHRoaXMtPmRvbWFpbnNUb0Jsb2NrKCk7CisgICAgYXV0byBkb21h
aW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSB0aGlzLT5kb21haW5zVG9CbG9ja0FuZERl
bGV0ZUNvb2tpZXNGb3IoKTsKKyAgICBhdXRvIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNG
b3IgPSB0aGlzLT5kb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKCk7CiAKLSAgICBpZiAo
ZG9tYWluc1RvQmxvY2suaXNFbXB0eSgpKSB7CisgICAgaWYgKGRvbWFpbnNUb0Jsb2NrQW5kRGVs
ZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zv
ci5pc0VtcHR5KCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmIChkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgJiYgIWRvbWFpbnNU
b0Jsb2NrLmlzRW1wdHkoKSkKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0Zv
ciBkb21haW5zVG9CbG9jayB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgZG9t
YWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciB9OworCisgICAgaWYgKGRlYnVnTG9nZ2luZ0Vu
YWJsZWQoKSAmJiAhZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzRW1wdHkoKSAm
JiAhZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc0VtcHR5KCkpCiAgICAgICAgIGRl
YnVnTG9nRG9tYWluc0luQmF0Y2hlcygiYmxvY2siLCBkb21haW5zVG9CbG9jayk7CiAKICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBz
dG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5
KGRvbWFpbnNUb0Jsb2NrKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDExZDczMzMzMGFjMzI2MmQzNTYxYzczY2U2NzQ3
ZGZjYjg4NTY4ZWIuLjNjOGQyYjFmMTY1NDkzYzkzY2E1ZDgyYmMwMjcyZjkxM2I3YTA3ZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
CkBAIC0xMTcsNyArMTE3LDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgdXBkYXRlTGFz
dFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxsVGltZSk7CiAgICAgdm9pZCBzZXRV
c2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgV2FsbFRpbWUpOwotICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlu
c1RvQmxvY2soKSBjb25zdDsKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcigpIGNvbnN0OworICAgIFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4gZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcigpIGNvbnN0OwogCiAgICAg
c3RydWN0IFByZXZhbGVudERvbWFpbkRhdGEgewogICAgICAgICB1bnNpZ25lZCBkb21haW5JRDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAK
aW5kZXggMDc3MGU4ZGViM2RhZGMzM2Q1NGZkZWQ2Mjc5Y2FhMTE3NTBiZWMyMy4uZTIzOWZjYzgw
M2U4ZDc0NDU2MTIxOGQ2NzIxN2Y3MWVkNDFiMTg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTcxMiw4ICs3MTIsOSBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2xlYXIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZQogCiAgICAgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIAot
ICAgIGF1dG8gcHJpbWFyeURvbWFpbnNUb0Jsb2NrID0gZW5zdXJlUHJldmFsZW50UmVzb3VyY2Vz
Rm9yRGVidWdNb2RlKCk7Ci0gICAgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKHByaW1h
cnlEb21haW5zVG9CbG9jaywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5k
RGVsZXRlQ29va2llc0ZvciA9IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgp
OworICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGRvbWFpbnNUb0Jsb2Nr
IHsgcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIHsgfSB9Owor
ICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhkb21haW5zVG9CbG9jaywgW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAK
IGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjp3YXNBY2Nlc3NlZEFzRmly
c3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHVwZGF0ZWQpIGNvbnN0CkBA
IC03NjEsMTggKzc2MiwyNSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZTo6dXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXI8dgogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBk
b21haW5zVG9CbG9jazsKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Js
b2NrQW5kRGVsZXRlQ29va2llc0ZvcjsKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRv
bWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3I7CiAgICAgZm9yIChhdXRvJiByZXNvdXJjZVN0
YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlm
IChyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlKQotICAgICAgICAgICAgZG9t
YWluc1RvQmxvY2suYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKTsK
KyAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UpIHsKKyAg
ICAgICAgICAgIGlmIChoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24ocmVzb3Vy
Y2VTdGF0aXN0aWMsIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSkKKyAgICAgICAgICAgICAg
ICBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmFwcGVuZChyZXNvdXJjZVN0YXRpc3Rp
Yy5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmFwcGVuZChyZXNvdXJjZVN0YXRpc3Rp
Yy5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoZG9tYWlu
c1RvQmxvY2suaXNFbXB0eSgpICYmICFkZWJ1Z01vZGVFbmFibGVkKCkpIHsKKyAgICBpZiAoZG9t
YWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzRW1wdHkoKSAmJiBkb21haW5zVG9CbG9j
a0J1dEtlZXBDb29raWVzRm9yLmlzRW1wdHkoKSAmJiAhZGVidWdNb2RlRW5hYmxlZCgpKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAoZGVidWdMb2dnaW5nRW5hYmxlZCgpICYmICFkb21haW5zVG9CbG9jay5pc0VtcHR5KCkp
CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sg
eyBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIGRvbWFpbnNUb0Jsb2NrQnV0S2Vl
cENvb2tpZXNGb3IgfTsKKworICAgIGlmIChkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgJiYgIWRvbWFp
bnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgIWRvbWFpbnNUb0Jsb2Nr
QnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpKQogICAgICAgICBkZWJ1Z0xvZ0RvbWFpbnNJbkJh
dGNoZXMoImJsb2NrIiwgZG9tYWluc1RvQmxvY2spOwogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgc3RvcmUgPSBtYWtlUmVmKHN0
b3JlKCkpLCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9CbG9jayks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFi
bGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBi
OTNmMDdkYTQxZDU1YzIzYTA3NmQwYjVmZDhmNDNlNGQzOTU0OTAwLi5mYzQxZTBiZTgzMThmMjYw
NDNmNDM4OGE2YjZiZTNjNTIzOTJkYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcApAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZChib29sIHZhbHVlKQogICAg
ICAgICBtX2xhc3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZCA9IE1vbm90b25pY1RpbWU6Om5v
dygpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2ll
QmxvY2tpbmdGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFp
bnNUb0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmdG
b3JEb21haW5zKFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJiBkb21haW5zVG9C
bG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIApAQCAtNTcxLDggKzU3MSwxMSBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlkQ3JlYXRlTmV0d29ya1Byb2Nl
c3MoKQogICAgIHVwZGF0ZUNsaWVudFNpZGVDb29raWVzQWdlQ2FwKCk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWJ1Z0xvZ0RvbWFpbnNJbkJhdGNoZXMoY29uc3Qg
Y2hhciogYWN0aW9uLCBjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQor
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRlYnVnTG9nRG9tYWluc0luQmF0Y2hl
cyhjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29r
aWVzRm9yJiBkb21haW5zVG9CbG9jaykKIHsKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnM7CisgICAgZG9tYWlucy5hcHBlbmRWZWN0b3IoZG9tYWluc1RvQmxvY2suZG9tYWlu
c1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yKTsKKyAgICBkb21haW5zLmFwcGVuZFZlY3Rvcihk
b21haW5zVG9CbG9jay5kb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKTsKICAgICBzdGF0
aWMgY29uc3QgYXV0byBtYXhOdW1iZXJPZkRvbWFpbnNJbk9uZUxvZ1N0YXRlbWVudCA9IDUwOwog
ICAgIGlmIChkb21haW5zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGFkZWMxNGNmOWNjZDk2NGMyOTAxY2Uy
ZDg0ZWEzNTZkZjZkYjBmZjIuLmQ3YjdiNzU1MDU2YjhiYTQyNmQwNDM0Y2E5NzEyODI0NjVhMmEz
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTk4LDcg
Kzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgPSAwOwotICAgIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5z
KGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JE
b21haW5zKFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyQmxvY2tpbmdTdGF0ZUZvckRvbWFpbnMo
Y29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZO
ZWNlc3NhcnkoKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIHVuc2lnbmVkIGNvbXB1dGVJbXBvcnRhbmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3MmKTsKICAgICBzdGF0aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1lcmdl
T3BlcmF0aW5nRGF0ZXMoY29uc3QgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiBleGlzdGluZ0RhdGVz
LCBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mJiBuZXdEYXRlcyk7Ci0gICAgc3RhdGljIHZvaWQgZGVi
dWdMb2dEb21haW5zSW5CYXRjaGVzKGNvbnN0IGNoYXIqIGFjdGlvbiwgY29uc3QgVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucyk7CisgICAgc3RhdGljIHZvaWQgZGVidWdMb2dEb21h
aW5zSW5CYXRjaGVzKGNvbnN0IGNoYXIqIGFjdGlvbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3ImKTsKIAogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRl
TG9jYWxob3N0KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKaW5kZXggZGE4ODY2YjYxYzhiMDU3MmNkZDUwOGViNjlhOWQ4YTk4OWU3NWQy
MS4uMDAxMjA3NDg1NWZjZjA4MTBmZjIyNmVmOTVjMjEyYzM1MDI5Mzc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTg0MCwzOCArODQw
LDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ29va2ll
QmxvY2tpbmdVcGRhdGUoQ29tcGxldGlvbkhhbmQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGVGb3JE
b21haW5zKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNUb0Jsb2NrLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgLy8g
SGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNh
bGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29weShk
b21haW5zVG9CbG9jayksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKLSAg
ICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUt
PnVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhkb21haW5zVG9CbG9jaywgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAg
ICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzY2hlZHVsZUNsZWFyQmxvY2tpbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQotewotICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcg
c3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWlucyA9
IGNyb3NzVGhyZWFkQ29weShkb21haW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NT
dG9yZSkgewotICAgICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX3N0YXRp
c3RpY3NTdG9yZS0+Y2xlYXJCbG9ja2luZ1N0YXRlRm9yRG9tYWlucyhkb21haW5zLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
ICAgICB9KTsKLSAgICB9KTsKLX0KLQogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAg
LTk1NiwxMyArOTI0LDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNh
bGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGNvbnN0IFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zvckhh
bmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3ImIGRvbWFpbnNU
b0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChtX25ldHdvcmtTZXNz
aW9uKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Np
b24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24t
PnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcihkb21haW5zVG9CbG9jayk7Cisg
ICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpKSB7CisgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0UHJl
dmFsZW50RG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yKGRvbWFpbnNUb0Jsb2NrLmRv
bWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvcik7CisgICAgICAgICAgICBzdG9yYWdlU2Vz
c2lvbi0+c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcihkb21haW5z
VG9CbG9jay5kb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMDEyNDJhOWNjYTlkMzY4NTliNTEyMzExZDM5ZTFh
ZWUwZjM4ODA1Zi4uMDIzZGMyNzdjZjUwNTQ3YmY5Njg5ZWNjYTQ4NDRkMGU2NGFiMTMyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNjMsMTEg
KzYzLDE3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGVudW0gY2xhc3MgU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z01vZGUgOiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBFbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nIDogYm9vbCB7IE5vLCBZZXMg
fTsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUb1JlbW92ZSA6IHVpbnQ4X3QgewogICAgIEFsbCwK
ICAgICBBbGxCdXRIdHRwT25seUNvb2tpZXMsCiAgICAgQWxsQnV0Q29va2llcwogfTsKK3N0cnVj
dCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciB7CisgICAgVmVjdG9yPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3I7
CisgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0J1
dEtlZXBDb29raWVzRm9yOworICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9y
IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZG9tYWluc1RvQmxvY2tBbmREZWxldGVD
b29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9y
Lmlzb2xhdGVkQ29weSgpIH07IH0KK307CiAKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKIHB1Ymxp
YzoKQEAgLTE2OCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQo
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJh
bWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjYWxsVXBkYXRlUHJl
dmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNh
bGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8
UmVnaXN0cmFibGVEb21haW4+Jik7CiAgICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZy
YW1lSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
RnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDljYjRhOTI1MjIwOTA1YjRjMjFhNGY3NmFlNzc2YWUxNDUwMjVmODcu
LmFjNmVkNjMyODFkMzE4YjE4YzI1NTdmODlhNDA2MWFmOWZkNmE3ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC02MjksNyArNjI5
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGUKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNUb0Jsb2NrLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0g
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tD
b29raWVzRm9yKGRvbWFpbnNUb0Jsb2NrKTsKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LT5zZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoZG9tYWluc1Rv
QmxvY2spOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKQEAgLTc3Myw2ICs3NzMsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
bmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mg
c2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhcklzb2xh
dGVkU2Vzc2lvbnMoKTsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CiAgICAgICAgICAg
ICBpZiAobW9kaWZpZWRTaW5jZSkKICAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KG1vZGlmaWVkU2luY2UudmFs
dWUoKSwgc2hvdWxkR3JhbmRmYXRoZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAg
LTEyMjgsNiArMTIyOSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENyb3NzU2l0ZUxv
YWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3NpbwogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQorCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgYm9vbCBy
ZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+
aGFzSXNvbGF0ZWRTZXNzaW9uKGRvbWFpbik7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0
KTsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiBib29s
IE5ldHdvcmtQcm9jZXNzOjpzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAppbmRleCBmYjdhNmNkMzZlYTlmMzU5NGE3ZmI5ZGU4NTUzNTMyM2Zh
ODIxNzA4Li5iMmU0OTNiNTY2MDY5ZjljZTBlYWE5ZjcxYjJhZGJjYWY2YTZhOGViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNjAsNiAr
MjYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRh
VHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxXZWJDb3Jl
OjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
IGNvbnN0OwogI2VuZGlmCiAKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
NmMyODI3ZWI5ZGIxMzg4OTkzZDMwYmI5NDNkM2Q2ZWQyZTFlYWEyMi4uMjAwNjgzYjE5Y2VkNDgz
MGUyOGQyMGNhNzdhMWYyNjJmZjFhYjk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzcsNiArMTM3
LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNl
dENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9z
c1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29s
IGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCisgICAgSGFzSXNvbGF0ZWRTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
ZG9tYWluKSAtPiAoYm9vbCBoYXNJc29sYXRlZFNlc3Npb24pIEFzeW5jCiAjZW5kaWYKIAogICAg
IFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMyYmY0M2QyNGUwOTFmZjc2ZDlkYjhiNzBhMTZhZTNmYTE3
YjJkNTAuLjJkNWNkNjZjZTFiY2VlODM4Yjk2YTMwODU2ODM0ZTYyYTA4YWM3OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTkyLDYgKzky
LDkgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5p
c2hlZCh1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgdG90YWxQcmV2
YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzU3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2lucyk7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTG9nVGVzdGluZ0V2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50OyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTG9nVGVzdGluZ0V2ZW50KGJvb2wgbG9nKSB7IG1fZW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0xvZ1Rlc3RpbmdFdmVudCA9IGxvZzsgfQorICAgIGJvb2wgc2hvdWxkSXNvbGF0ZVNl
c3Npb25zRm9yUHJldmFsZW50VG9wRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nID09IEVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmc6OlllczsgfQorICAgIHZpcnR1YWwg
Ym9vbCBoYXNJc29sYXRlZFNlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4p
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFySXNvbGF0ZWRT
ZXNzaW9ucygpIHsgfQogI2VuZGlmCiAgICAgdm9pZCBzdG9yZUFkQ2xpY2tBdHRyaWJ1dGlvbihX
ZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24mJik7CiAgICAgdm9pZCBoYW5kbGVBZENsaWNrQXR0
cmlidXRpb25Db252ZXJzaW9uKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6Q29udmVyc2lv
biYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVkaXJlY3RSZXF1ZXN0KTsKQEAgLTEzMCw2ICsxMzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
U2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNl
TG9hZFN0YXRpc3RpY3MgeyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgfTsKICAgICBFbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZSB7IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6
Ok5vIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CisgICAgRW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZyBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NOU1VSTFNlc3Npb25Td2l0Y2hpbmcgeyBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNV
UkxTZXNzaW9uU3dpdGNoaW5nOjpObyB9OwogICAgIGJvb2wgbV9lbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50OwogI2VuZGlmCiAgICAgVW5pcXVlUmVmPEFkQ2xpY2tB
dHRyaWJ1dGlvbk1hbmFnZXI+IG1fYWRDbGlja0F0dHJpYnV0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAppbmRleCAzNTE0Y2MwZjA4M2M3ZWFjNWQxZDg2MTNhMGVmYTVlNzJl
ODg3NzlkLi40MDNmOTFmYzI2Yzg5ODNhODE0NGFjMjI3MDkxYWNlMWNjNDdhMTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNTAsNyArNTAsNyBAQCBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6
cHJpdmF0ZVNlc3NpbwogI2lmIFVTRShDVVJMKQogICAgICAgICAsIHsgfSwgeyB9CiAjZW5kaWYK
LSAgICAgICAgLCB7IH0sIHsgfSwgZmFsc2UsIGZhbHNlLCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsg
fSwgeyB9LCB7IH0sIHsgfSwgeyB9CisgICAgICAgICwgeyB9LCB7IH0sIGZhbHNlLCBmYWxzZSwg
eyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9CiAgICAgfTsK
IH0KIApAQCAtODQsNiArODQsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwg
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICBlbmNv
ZGVyIDw8IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CiAgICAgZW5jb2Rl
ciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CisgICAg
ZW5jb2RlciA8PCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNo
aW5nOwogCiAgICAgZW5jb2RlciA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPDwgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgbmV0d29ya0NhY2hl
RGlyZWN0b3J5IDw8IG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKQEAgLTIw
OCw2ICsyMDksMTEgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+
IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICBpZiAoIXJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmc7CisgICAgZGVjb2RlciA+PiBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nOworICAgIGlmICghZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZykKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAKICAgICBPcHRpb25hbDxTdHJpbmc+IGxvY2FsU3RvcmFnZURp
cmVjdG9yeTsKICAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBpZiAo
IWxvY2FsU3RvcmFnZURpcmVjdG9yeSkKQEAgLTI2Niw2ICsyNzIsNyBAQCBPcHRpb25hbDxOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnM6OmRlYwogICAgICAgICAsIFdURk1vdmUoKmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NMb2dUZXN0aW5nRXZlbnQpCiAgICAgICAgICwgV1RGTW92ZSgqc2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgLCBXVEZNb3ZlKCplbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKQorICAgICAgICAsIFdURk1vdmUoKmVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmcpCiAgICAgICAgICwg
V1RGTW92ZSgqZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQpCiAgICAgICAgICwg
V1RGTW92ZSgqYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9y
VGVzdGluZykKICAgICAgICAgLCBXVEZNb3ZlKCpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFs
UHJldmFsZW50UmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggN2E0
NzQxNGI1MTFmY2Q4MDJiZWU1NzI4YjhjN2ViNDkzNzdiMTFlNi4uMTgzM2U0NjdmZjZjNTJkMjQz
OGE2NzAyYmQxNzhlNTdjNTJiNjZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtODcsNiArODcsNyBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMg
ewogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCB7
IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIHsgdHJ1ZSB9OwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZSB7IGZhbHNlIH07CisgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nIHsgdHJ1ZSB9OwogICAgIGJvb2wgZGV2aWNlTWFuYWdl
bWVudFJlc3RyaWN0aW9uc0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgYWxsTG9hZHNCbG9j
a2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyB7IGZhbHNlIH07CiAg
ICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVh
bFByZXZhbGVudFJlc291cmNlIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDVhZDIxMzQ0
YTkwYTZiMTE1ZDEyYzMyNWJhM2E5ZjY4NWU3ZDA1YmYuLjY1Zjg4OTVkOGFmMjZiOTJiYjBiZDdl
YjcyYzkwZDMwYTA3YTFiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzgsNiArMzgsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0
d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CkBAIC0yMDUsOSArMjA2LDE2IEBA
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lv
biYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkQmxvY2tD
b29raWVzID0gZmFsc2U7CisgICAgYm9vbCBuZWVkc0lzb2xhdGVkU2Vzc2lvbiA9IGZhbHNlOwor
ICAgIGF1dG8gZmlyc3RQYXJ0eSA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3Qu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CisKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIHNob3VsZEJsb2NrQ29va2llcyA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3ND
b29raWVsZXNzCi0gICAgICAgIHx8IChzZXNzaW9uLm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpICYm
IHNlc3Npb24ubmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1
ZXN0LCBmcmFtZUlELCBwYWdlSUQpKTsKKyAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBo
ZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzczsKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gc2Vzc2lvbi5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkgeworICAgICAgICBpZiAo
IXNob3VsZEJsb2NrQ29va2llcykKKyAgICAgICAgICAgIHNob3VsZEJsb2NrQ29va2llcyA9IG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIGZyYW1lSUQs
IHBhZ2VJRCk7CisgICAgICAgIG5lZWRzSXNvbGF0ZWRTZXNzaW9uID0gc2Vzc2lvbi5zaG91bGRJ
c29sYXRlU2Vzc2lvbnNGb3JQcmV2YWxlbnRUb3BGcmFtZXMoKSAmJiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24tPnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tp
ZXNGb3IoZmlyc3RQYXJ0eSk7CisgICAgfQogI2VuZGlmCiAgICAgcmVzdHJpY3RSZXF1ZXN0UmVm
ZXJyZXJUb09yaWdpbklmTmVlZGVkKHJlcXVlc3QsIHNob3VsZEJsb2NrQ29va2llcyk7CiAKQEAg
LTIxNSwyMyArMjIzLDIyIEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tD
b2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAgICAgYXBwbHlTbmlm
ZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwg
c2hvdWxkQ29udGVudFNuaWZmID09IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25p
ZmZDb250ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25p
ZmYgPT0gV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmKTsKIAog
ICAgIGF1dG8mIGNvY29hU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2Em
PigqbV9zZXNzaW9uKTsKKyAgICBpZiAobmVlZHNJc29sYXRlZFNlc3Npb24pCisgICAgICAgIG1f
dGFzayA9IFtjb2NvYVNlc3Npb24uaXNvbGF0ZWRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBmaXJzdFBhcnR5KSBkYXRhVGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdF07CisgICAgZWxz
ZQorICAgICAgICBtX3Rhc2sgPSBbY29jb2FTZXNzaW9uLnNlc3Npb24oc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpIGRhdGFUYXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0XTsKICAgICBzd2l0Y2ggKHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5KSB7CiAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6VXNlOgotICAgICAgICBtX3Rhc2sgPSBbY29jb2FTZXNzaW9uLm1fc2Vzc2lv
bldpdGhDcmVkZW50aWFsU3RvcmFnZSBkYXRhVGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdF07CiAg
ICAgICAgIEFTU0VSVCghY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMu
Y29udGFpbnMoW21fdGFzayB0YXNrSWRlbnRpZmllcl0pKTsKICAgICAgICAgY29jb2FTZXNzaW9u
Lm1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMuYWRkKFttX3Rhc2sgdGFza0lkZW50aWZpZXJd
LCB0aGlzKTsKICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBDcmVhdGluZyBzdGF0
ZWZ1bCBOZXR3b3JrRGF0YVRhc2sgd2l0aCBVUkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlmaWVy
XSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U6
Ci0gICAgICAgIG1fdGFzayA9IFtjb2NvYVNlc3Npb24ubV9zdGF0ZWxlc3NTZXNzaW9uIGRhdGFU
YXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0XTsKICAgICAgICAgQVNTRVJUKCFjb2NvYVNlc3Npb24u
bV9kYXRhVGFza01hcFdpdGhvdXRTdGF0ZS5jb250YWlucyhbbV90YXNrIHRhc2tJZGVudGlmaWVy
XSkpOwogICAgICAgICBjb2NvYVNlc3Npb24ubV9kYXRhVGFza01hcFdpdGhvdXRTdGF0ZS5hZGQo
W21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHRoaXMpOwogICAgICAgICBMT0coTmV0d29ya1Nlc3Np
b24sICIlbGx1IENyZWF0aW5nIHN0YXRlbGVzcyBOZXR3b3JrRGF0YVRhc2sgd2l0aCBVUkwgJXMi
LCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5V
VEY4U3RyaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzczoKLSAgICAgICAgaWYg
KCFjb2NvYVNlc3Npb24ubV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbikKLSAg
ICAgICAgICAgIGNvY29hU2Vzc2lvbi5pbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzQ29va2ll
bGVzc1Nlc3Npb24oKTsKLSAgICAgICAgbV90YXNrID0gW2NvY29hU2Vzc2lvbi5tX2VwaGVtZXJh
bFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0
XTsKICAgICAgICAgQVNTRVJUKCFjb2NvYVNlc3Npb24ubV9kYXRhVGFza01hcEVwaGVtZXJhbFN0
YXRlbGVzc0Nvb2tpZWxlc3MuY29udGFpbnMoW21fdGFzayB0YXNrSWRlbnRpZmllcl0pKTsKICAg
ICAgICAgY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVs
ZXNzLmFkZChbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgdGhpcyk7CiAgICAgICAgIExPRyhOZXR3
b3JrU2Vzc2lvbiwgIiVsbHUgQ3JlYXRpbmcgZXBoZW1lcmFsLCBzdGF0ZWxlc3MsIGNvb2tpZWxl
c3MgTmV0d29ya0RhdGFUYXNrIHdpdGggVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0s
IG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5o
CmluZGV4IDRiYWIyM2VhODUzY2U4YWE3MmUzOGRkZmE2Zjg1OGE1MTViZDkwYjIuLjU5Y2RhMzRi
NjhjN2U5OGE5MWM2YzI3ZGM1YzMyMjUwNTg5ZTVhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCkBAIC0z
OCw3ICszOCw5IEBAIE9CSkNfQ0xBU1MgV0tOZXR3b3JrU2Vzc2lvbldlYlNvY2tldERlbGVnYXRl
OwogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0VGFzay5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1NlY29uZHMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTgxLDYgKzgz
LDExIEBAIHB1YmxpYzoKICAgICBib29sIGFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVu
dFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX2FsbExvYWRzQmxvY2tl
ZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3Rpbmc7IH0KICAgICBETUZXZWJz
aXRlUG9saWN5TW9uaXRvciAqZGV2aWNlTWFuYWdlbWVudFBvbGljeU1vbml0b3IoKTsKIAorICAg
IFJldGFpblB0cjxOU1VSTFNlc3Npb24+IHNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpOworICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb24+IGlzb2xhdGVkU2Vzc2lvbihX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4pOworICAgIGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFySXNvbGF0ZWRT
ZXNzaW9ucygpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENh
bmNlbCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDcmVkZW50aWFscygpIG92ZXJyaWRlOwpA
QCAtMTAxLDYgKzEwOCwxNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNr
Q29jb2E6OlRhc2tJZGVudGlmaWVyLCBXZWJTb2NrZXRUYXNrKj4gbV93ZWJTb2NrZXREYXRhVGFz
a01hcDsKICNlbmRpZgogCisgICAgc3RydWN0IElzb2xhdGVkU2Vzc2lvbiB7CisgICAgICAgIFJl
dGFpblB0cjxOU1VSTFNlc3Npb24+IHNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2U7CisgICAg
ICAgIFJldGFpblB0cjxXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGU+IHNlc3Npb25XaXRoQ3JlZGVu
dGlhbFN0b3JhZ2VEZWxlZ2F0ZTsKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbj4gc3Rh
dGVsZXNzU2Vzc2lvbjsKKyAgICAgICAgUmV0YWluUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0
ZT4gc3RhdGVsZXNzU2Vzc2lvbkRlbGVnYXRlOworICAgICAgICBXYWxsVGltZSBsYXN0VXNlZDsK
KyAgICB9OworCisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgSXNvbGF0
ZWRTZXNzaW9uPiBtX2lzb2xhdGVkU2Vzc2lvbnM7CisKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNz
aW9uPiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2U7CiAgICAgUmV0YWluUHRyPFdLTmV0
d29ya1Nlc3Npb25EZWxlZ2F0ZT4gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlRGVsZWdh
dGU7CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbj4gbV9zdGF0ZWxlc3NTZXNzaW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCmluZGV4IDFmOGQ0Y2JmYzdhNTMzOGNmMGVmNTI0ZTlhNjc1NDMxYjQwMTdm
YzkuLjZlYjBlOTdmNjMxZWM3MDNlM2I3YjlkNGY5MDY5OTQwODY4Nzg0ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KQEAgLTY3LDYgKzY3LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIENGU3Ry
aW5nUmVmIGNvbnN0IFdlYktpdDJIVFRQUHJveHlEZWZhdWx0c0tleSA9IHN0YXRpY19jYXN0PENG
U3RyaW5nUmVmPihAIldlYktpdDJIVFRQUHJveHkiKTsKIENGU3RyaW5nUmVmIGNvbnN0IFdlYktp
dDJIVFRQU1Byb3h5RGVmYXVsdHNLZXkgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQCJXZWJL
aXQySFRUUFNQcm94eSIpOwogCitjb25zdGV4cHIgdW5zaWduZWQgbWF4TnVtYmVyT2ZJc29sYXRl
ZFNlc3Npb25zIHsgMTAgfTsKKwogc3RhdGljIE5TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRp
b24gdG9OU1VSTFNlc3Npb25SZXNwb25zZURpc3Bvc2l0aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlv
biBkaXNwb3NpdGlvbikKIHsKICAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7CkBAIC0xMDM0LDYg
KzEwMzYsNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgIG1fc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHBhcmFtZXRlcnMuc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA/IFNob3VsZEluY2x1ZGVMb2NhbGhv
c3Q6OlllcyA6IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6Ok5vOwogICAgIG1fZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IHBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGU6OlllcyA6IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vOwogICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlID0gcGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CisgICAg
bV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nID0gcGFy
YW1ldGVycy5lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5n
ID8gRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZzo6WWVz
IDogRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZzo6Tm87
CiAgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5lbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKTsKICNlbmRpZgogCkBAIC0xMDY4LDYgKzEwNzEsNzYgQEAg
dm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzQ29v
a2llbGVzc1Nlc3Npb24oKQogICAgIG1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Np
b24gPSBbTlNVUkxTZXNzaW9uIHNlc3Npb25XaXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
IGRlbGVnYXRlOnN0YXRpY19jYXN0PGlkPihtX2VwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3NT
ZXNzaW9uRGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFp
blF1ZXVlXV07CiB9CiAKK1JldGFpblB0cjxOU1VSTFNlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29j
b2E6OnNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpCit7CisgICAgc3dpdGNoIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgewor
ICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZToKKyAgICAgICAg
cmV0dXJuIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKKyAgICBjYXNlIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZToKKyAgICAgICAgcmV0dXJuIG1fc3Rh
dGVsZXNzU2Vzc2lvbjsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzOgorICAgICAgICBpZiAoIW1fZXBoZW1lcmFs
U3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24pCisgICAgICAgICAgICBpbml0aWFsaXplRXBoZW1l
cmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24oKTsKKyAgICAgICAgcmV0dXJuIG1fZXBoZW1l
cmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb247CisgICAgfQorfQorCitSZXRhaW5QdHI8TlNV
UkxTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjppc29sYXRlZFNlc3Npb24oV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4pCit7CisgICAgYXV0byBl
bnRyeSA9IG1faXNvbGF0ZWRTZXNzaW9ucy5lbnN1cmUoZmlyc3RQYXJ0eURvbWFpbiwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICAgICAgSXNvbGF0ZWRTZXNzaW9u
IG5ld0VudHJ5IHsgfTsKKyAgICAgICAgaWYgKHdlYWtUaGlzKSB7CisgICAgICAgICAgICBuZXdF
bnRyeS5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlRGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tO
ZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aE5ldHdvcmtTZXNzaW9uOip0aGlz
IHdpdGhDcmVkZW50aWFsczp0cnVlXSk7CisgICAgICAgICAgICBuZXdFbnRyeS5zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlID0gW05TVVJMU2Vzc2lvbiBzZXNzaW9uV2l0aENvbmZpZ3VyYXRp
b246bV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgpLmNvbmZpZ3VyYXRpb24gZGVs
ZWdhdGU6c3RhdGljX2Nhc3Q8aWQ+KG5ld0VudHJ5LnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2VEZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVl
dWVdXTsKKworICAgICAgICAgICAgbmV3RW50cnkuc3RhdGVsZXNzU2Vzc2lvbkRlbGVnYXRlID0g
YWRvcHROUyhbW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhOZXR3b3Jr
U2Vzc2lvbjoqdGhpcyB3aXRoQ3JlZGVudGlhbHM6ZmFsc2VdKTsKKyAgICAgICAgICAgIG5ld0Vu
dHJ5LnN0YXRlbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNlc3Npb25XaXRoQ29uZmlndXJh
dGlvbjptX3N0YXRlbGVzc1Nlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0
aWNfY2FzdDxpZD4obmV3RW50cnkuc3RhdGVsZXNzU2Vzc2lvbkRlbGVnYXRlLmdldCgpKSBkZWxl
Z2F0ZVF1ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV1dOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBuZXdFbnRyeTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICBlbnRy
eS5sYXN0VXNlZCA9IFdhbGxUaW1lOjpub3coKTsKKworICAgIGlmIChtX2lzb2xhdGVkU2Vzc2lv
bnMuc2l6ZSgpID4gbWF4TnVtYmVyT2ZJc29sYXRlZFNlc3Npb25zKSB7CisgICAgICAgIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGtleVRvUmVtb3ZlOworICAgICAgICBhdXRvIG9sZGVzdFRp
bWVzdGFtcCA9IFdhbGxUaW1lOjpub3coKTsKKyAgICAgICAgZm9yIChXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBrZXkgOiBtX2lzb2xhdGVkU2Vzc2lvbnMua2V5cygpKSB7CisgICAgICAgICAg
ICBhdXRvIHRpbWVzdGFtcCA9IG1faXNvbGF0ZWRTZXNzaW9ucy5nZXQoa2V5KS5sYXN0VXNlZDsK
KyAgICAgICAgICAgIGlmICh0aW1lc3RhbXAgPCBvbGRlc3RUaW1lc3RhbXApIHsKKyAgICAgICAg
ICAgICAgICBvbGRlc3RUaW1lc3RhbXAgPSB0aW1lc3RhbXA7CisgICAgICAgICAgICAgICAga2V5
VG9SZW1vdmUgPSBrZXk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgTE9HKE5l
dHdvcmtTZXNzaW9uLCAiQWJvdXQgdG8gcmVtb3ZlIGlzb2xhdGVkIE5TVVJMU2Vzc2lvbi4iKTsK
KyAgICAgICAgbV9pc29sYXRlZFNlc3Npb25zLnJlbW92ZShrZXlUb1JlbW92ZSk7CisgICAgfQor
CisgICAgUkVMRUFTRV9BU1NFUlQobV9pc29sYXRlZFNlc3Npb25zLnNpemUoKSA8PSBtYXhOdW1i
ZXJPZklzb2xhdGVkU2Vzc2lvbnMpOworCisgICAgc3dpdGNoIChzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSkgeworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZToK
KyAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiVXNpbmcgaXNvbGF0ZWQgTlNVUkxTZXNzaW9u
IHdpdGggY3JlZGVudGlhbCBzdG9yYWdlLiIpOworICAgICAgICByZXR1cm4gZW50cnkuc2Vzc2lv
bldpdGhDcmVkZW50aWFsU3RvcmFnZTsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpEb05vdFVzZToKKyAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiVXNpbmcg
aXNvbGF0ZWQgTlNVUkxTZXNzaW9uIHdpdGhvdXQgY3JlZGVudGlhbCBzdG9yYWdlLiIpOworICAg
ICAgICByZXR1cm4gZW50cnkuc3RhdGVsZXNzU2Vzc2lvbjsKKyAgICBjYXNlIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzOgorICAg
ICAgICBpZiAoIW1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24pCisgICAgICAg
ICAgICBpbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24oKTsKKyAg
ICAgICAgcmV0dXJuIG1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb247CisgICAg
fQorfQorCitib29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6Omhhc0lzb2xhdGVkU2Vzc2lvbihjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1faXNvbGF0ZWRTZXNzaW9ucy5jb250YWlucyhkb21haW4pOworfQorCit2b2lkIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OmNsZWFySXNvbGF0ZWRTZXNzaW9ucygpCit7CisgICAgbV9pc29sYXRlZFNl
c3Npb25zLmNsZWFyKCk7Cit9CisKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0
ZUFuZENhbmNlbCgpCiB7CiAgICAgTmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwo
KTsKQEAgLTEwNzgsNiArMTE1MSwxMiBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmludmFs
aWRhdGVBbmRDYW5jZWwoKQogICAgIFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2VEZWxl
Z2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOwogICAgIFttX3N0YXRlbGVzc1Nlc3Npb25EZWxlZ2F0
ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOwogICAgIFttX2VwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxl
c3NTZXNzaW9uRGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKKworICAgIGZvciAoSXNvbGF0
ZWRTZXNzaW9uIHNlc3Npb24gOiBtX2lzb2xhdGVkU2Vzc2lvbnMudmFsdWVzKCkpIHsKKyAgICAg
ICAgW3Nlc3Npb24uc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZSBpbnZhbGlkYXRlQW5kQ2Fu
Y2VsXTsKKyAgICAgICAgW3Nlc3Npb24uc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZURlbGVn
YXRlIHNlc3Npb25JbnZhbGlkYXRlZF07CisgICAgfQorICAgIG1faXNvbGF0ZWRTZXNzaW9ucy5j
bGVhcigpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlhbHMo
KQpAQCAtMTA4OSw2ICsxMTY4LDggQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckNy
ZWRlbnRpYWxzKCkKICAgICAvLyBGSVhNRTogVXNlIHJlc2V0V2l0aENvbXBsZXRpb25IYW5kbGVy
IGluc3RlYWQuCiAgICAgbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlID0gW05TVVJMU2Vz
c2lvbiBzZXNzaW9uV2l0aENvbmZpZ3VyYXRpb246bV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9y
YWdlLmdldCgpLmNvbmZpZ3VyYXRpb24gZGVsZWdhdGU6c3RhdGljX2Nhc3Q8aWQ+KG1fc2Vzc2lv
bldpdGhDcmVkZW50aWFsU3RvcmFnZURlbGVnYXRlLmdldCgpKSBkZWxlZ2F0ZVF1ZXVlOltOU09w
ZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV1dOwogICAgIG1fc3RhdGVsZXNzU2Vzc2lvbiA9IFtOU1VS
TFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOm1fc3RhdGVsZXNzU2Vzc2lvbi5nZXQo
KS5jb25maWd1cmF0aW9uIGRlbGVnYXRlOnN0YXRpY19jYXN0PGlkPihtX3N0YXRlbGVzc1Nlc3Np
b25EZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVl
dWVdXTsKKyAgICBmb3IgKFNlc3Npb25FbnRyeSBlbnRyeSA6IG1faXNvbGF0ZWRTZXNzaW9ucy52
YWx1ZXMoKSkKKyAgICAgICAgZW50cnkuc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldp
dGhDb25maWd1cmF0aW9uOmVudHJ5LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0
ZTpzdGF0aWNfY2FzdDxpZD4oZW50cnkuZGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05T
T3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggMmJiOWFmMWQ0YzU4NjVkYTFmZWYzNmJmMDY5
N2E3ZGUzMThiMDhjMy4uYWEzNTQzYzk0ZDNiYTM4NGExYmY0OGZmMmI2MGU5ZTU0NzY0ZmVjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xNzIzLDYgKzE3
MjMsMTQgQEAgTGF6eUltYWdlTG9hZGluZ0VuYWJsZWQ6CiAgIHdlYmNvcmVCaW5kaW5nOiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzCiAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKIAorSVRQU2Vzc2lv
blN3aXRjaGluZ0VuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiB0cnVlCisg
IGh1bWFuUmVhZGFibGVOYW1lOiAiSVRQIFNlc3Npb24gU3dpdGNoaW5nIgorICBodW1hblJlYWRh
YmxlRGVzY3JpcHRpb246ICJFbmFibGUgc2Vzc2lvbiBzd2l0Y2hpbmcgZm9yIGRvbWFpbnMgY2xh
c3NpZmllZCBieSBJVFAiCisgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
CisgIGNhdGVnb3J5OiBpbnRlcm5hbAorCiAjIERlcHJlY2F0ZWQKIAogSUNFQ2FuZGlkYXRlRmls
dGVyaW5nRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDNjOTY2MGUyYmU1MjQ2YTNjYTZiYmE0
ZWI4ZmEyZWI4MDMxM2E2ZDMuLjk2YjIzMzc0MmMwOWFiNjMzZGVlZDQzOTQ3OTBmZTFhNDM2YjJk
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNDcyLDYgKzQ3MiwxNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0bwogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hh
c0lzb2xhdGVkU2Vzc2lvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0
cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
SGFzSXNvbGF0ZWRTZXNzaW9uRnVuY3Rpb24gY2FsbGJhY2spCit7CisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53
ZWJzaXRlRGF0YVN0b3JlKCkuaGFzSXNvbGF0ZWRTZXNzaW9uRm9yVGVzdGluZyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBoYXNJc29sYXRlZFNlc3Npb24pIHsKKyAgICAgICAgY2FsbGJhY2soaGFzSXNvbGF0ZWRTZXNz
aW9uLCBjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNlCisgICAgY2FsbGJhY2soZmFsc2UsIGNvbnRl
eHQpOworI2VuZGlmCit9CisKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCBjNzZlYjJkNGQ3NDk4YmNjYzEyYzNkNWQy
YWJjOGI5MThiOGNkMmRmLi5jZGUxNGNhODY3ZTA3YzI3NDU4YWEyNjUwMTdmNzFhYWM5ZDBmYzVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaApAQCAtMTAzLDYgKzEwMyw4IEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2VGdW5jdGlvbikoYm9vbCBoYXNMb2Nh
CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9y
YWdlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3Jh
Z2VGdW5jdGlvbiBjYWxsYmFjayk7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1h
eEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25k
cywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4
QWdlQ2FwRnVuY3Rpb24pOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc0hhc0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uKShib29sIGhhc0lzb2xhdGVkU2Vzc2lvbiwg
dm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKTsKIHR5cGVk
ZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0
YXRlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5k
bGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMGQzZDAzY2VlZDgzMTNiY2EyN2IzOTE1YWMzN2Nl
NmUzZWQ3MzA5OS4uOTRmYWY2YjlkZTI2MjAxZDg0ZDI2ZmY4MzkzM2Y4MjI5YzA1ZDZiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCkBAIC05NzQsNiArOTc0LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6
CiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzSXNvbGF0ZWRTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc0lzb2xhdGVkU2Vzc2lvbihzZXNz
aW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2VuZGlm
IC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRl
eCAzNWI4MjEzYzI4ZmNiNmI5NDBhMTA5OWJlMTQwOGY5MDZhM2I5MmJiLi40MzM1NDVjMGUzM2Zh
YWVlZDlkZWJiMzRmNmIyMGNmY2FlNWU5NWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTUwLDYgKzE1MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRp
b25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJv
Y2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CisgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb24o
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9TdXNw
ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggYTY4MzZkOTI1
MTYzMmI4MTg1NTMxNmI2ZGM0ZWE3OGZmODFjYjZiNi4uZDE2YTVkMTMxNTVlNzExZTM2NTBhYzhj
NzUwNTE2NGM4MTZmYjM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpA
QCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbXBvcnQgPFdlYkNvcmUv
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Q29jb2EuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvRmlsZVN5
c3RlbS5oPgpAQCAtNjYsNiArNjcsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJz
aXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBOU1VzZXJEZWZhdWx0cyAqZGVmYXVsdHMg
PSBbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOwogICAgIGJvb2wgc2hvdWxk
TG9nQ29va2llSW5mb3JtYXRpb24gPSBmYWxzZTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsKKyAgICBib29sIGVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmcgPSBXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLml0cFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkKCk7
CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBbZGVm
YXVsdHMgYm9vbEZvcktleTpAIklUUERlYnVnTW9kZSJdOwpAQCAtMTM3LDYgKzEzOSw3IEBAIFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQog
ICAgICAgICBmYWxzZSwKICAgICAgICAgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VM
b2FkU3RhdGlzdGljcywKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSwKKyAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3
aXRjaGluZywKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5kZXZpY2VNYW5hZ2VtZW50UmVzdHJp
Y3Rpb25zRW5hYmxlZCgpLAogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPmFsbExvYWRzQmxvY2tl
ZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoKSwKICAgICAgICAgV1RG
TW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAppbmRleCA5NGM0ZDU5OGI2MDM3YTY5OTcxMmQxN2I5ZmE3YzVlYjE2NGE2YzU4
Li4wMjU4N2IxOWUxOTRlNjFkZjMxZTMxMWM4NjJhZGIxY2ZiYzFjYmQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcApAQCAtMTY4NCw2ICsxNjg0LDE4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aGFzTG9j
YWxTdG9yYWdlRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsCiAgICAg
fQogICAgIEFTU0VSVCghY29tcGxldGlvbkhhbmRsZXIpOwogfQorCit2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6Omhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoY29uc3QgVVJMJiB1cmwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7Cisg
ICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlm
IChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7
CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+aGFzSXNvbGF0ZWRTZXNzaW9uKG1fc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgICAgICBBU1NFUlQocHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpID09
IDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKCFj
b21wbGV0aW9uSGFuZGxlcik7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBmMmZhNDE2ZDFmYjkyMjRj
NmZiODVkYWJjOWZiMTYwNTIxMDJhNDE4Li42NmYzNTZhYmQ4NmI3Zjk2MDM0MGI4YjY5ZDMzZGE2
YzA5YmRmZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xNzksNiArMTc5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JUZXN0
aW5nKGNvbnN0IFVSTCYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGhhc0xvY2FsU3RvcmFnZUZvclRlc3RpbmcoY29u
c3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CisgICAgdm9p
ZCBoYXNJc29sYXRlZFNlc3Npb25Gb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OwogI2VuZGlmCiAgICAgdm9pZCBzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkwMDc3MzdmOGE4OTIxYWY2NjlmMjU5MzA3YjJm
NmFhNWFlM2FiNzEuLjMxNDkxZDE4NDUzNmI2ZTRmZjFhOTkxMTI2OGQ5MTBhZjEyOWMzNjQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNCBAQAorMjAxOS0wOC0xMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IFN3aXRjaCBOU1VSTFNlc3Npb24g
b24gdG9wIG5hdmlnYXRpb24gdG8gcHJldmFsZW50IHJlc291cmNlIHdpdGggdXNlciBpbnRlcmFj
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAw
NjQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Mzk2MjA3Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGVzdCBpbmZy
YXN0cnVjdHVyZSB0byBxdWVyeSB3aGV0aGVyIGFuIG9yaWdpbiBoYXMgYW4KKyAgICAgICAgaXNv
bGF0ZWQgTlNVUkxTZXNzaW9uIG9yIG5vdC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6aGFzU3RhdGlzdGljc0lzb2xhdGVkU2Vzc2lvbik6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpoYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNl
aXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOS0wOC0xMiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaVBhZE9T
XSBXZWIgcGFnZXMgc29tZXRpbWVzIGxvYWQgYXQgaGFsZiB3aWR0aCBpbiBTYWZhcmkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDBhZWI5M2UxOTEwNzM3ZTcwMDIzZDE5NjljZWQyNzg5
ZDI2ZDk4MjUuLmFjZWVkNDBmMmIyNjZiYWYwMGRmNGZiNWM5NWY5MGVkY2RmMDg2MjIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzMzLDYgKzMzMyw3IEBAIGludGVyZmFjZSBUZXN0
UnVubmVyIHsKICAgICBib29sZWFuIGlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShET01TdHJp
bmcgaG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJs
ZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKG9i
amVjdCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgYm9vbGVhbiBoYXNTdGF0aXN0aWNzSXNvbGF0
ZWRTZXNzaW9uKERPTVN0cmluZyBob3N0TmFtZSk7CiAKICAgICAvLyBJbmplY3RlZCBidW5kbGUg
Zm9ybSBjbGllbnQuCiAgICAgdm9pZCBpbnN0YWxsVGV4dERpZENoYW5nZUluVGV4dEZpZWxkQ2Fs
bGJhY2sob2JqZWN0IGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDU5ZjI1YzFiYmFjNmVkODllOTRj
ZmE4OGE5YWZmYzAzZmI3MjRhMTguLjM3MjllMDVhOWI3YmM1OTEwYjA5OTgwOWU4NmYwYTcyZmE1
Y2ZjOTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtMjA2Niw2ICsyMDY2LDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKQogICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7CiB9CiAK
K2Jvb2wgVGVzdFJ1bm5lcjo6aGFzU3RhdGlzdGljc0lzb2xhdGVkU2Vzc2lvbihKU1N0cmluZ1Jl
ZiBob3N0TmFtZSkKK3sKKyAgICBhdXRvIG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiSGFzU3RhdGlzdGljc0lzb2xhdGVkU2Vzc2lvbiIpKTsKKyAg
ICBhdXRvIG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyho
b3N0TmFtZSkpOworICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhID0gbnVsbHB0cjsKKyAgICBXS0J1
bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9k
eS5nZXQoKSwgJnJldHVybkRhdGEpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5EYXRh
KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVl
KGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5EYXRhKSkuZ2V0KCkpOwor
fQorCiB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsQ2xlYXJUaHJvdWdoV2Vic2l0ZURh
dGFSZW1vdmFsQ2FsbGJhY2soKQogewogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlz
dGljc0RpZENsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENhbGxiYWNrSUQpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRl
eCA3ZTg1ODhlY2EzMTdiZjg0NjBjZGNhYTc0Njg5NjI0NWExODkxZWQzLi5jYWZlNzc2Y2E4OWI0
NWU5NzRlNGNiNzc4MjhjZDg5ZGZlNjY1NDkwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDMxLDYgKzQzMSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1v
dmFsQ2FsbGJhY2soKTsKICAgICBib29sIGlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShKU1N0
cmluZ1JlZiBob3N0TmFtZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAo
ZG91YmxlIHNlY29uZHMpOworICAgIGJvb2wgaGFzU3RhdGlzdGljc0lzb2xhdGVkU2Vzc2lvbihK
U1N0cmluZ1JlZiBob3N0TmFtZSk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3Rp
Y3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMTY1NDYyOWNhYTZmNmQ4Yzg5NDU0
ODM1MWMwYzhmYjBhMzMzMzcyYS4uOGZlZDU5MjU1OGYxYzYwMjJlZDEzOWUwYzhjODJlZWEyNGRh
NTVhYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTM1
MTEsNiArMzUxMSwxNSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzQ2FjaGVN
YXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpCiAgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1Rp
bWVvdXQpOwogfQogCitib29sIFRlc3RDb250cm9sbGVyOjpoYXNTdGF0aXN0aWNzSXNvbGF0ZWRT
ZXNzaW9uKFdLU3RyaW5nUmVmIGhvc3QpCit7CisgICAgYXV0byogZGF0YVN0b3JlID0gV0tDb250
ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgUmVzb3VyY2VT
dGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb24oZGF0YVN0b3JlLCBob3N0LCAmY29u
dGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzQm9vbGVhblJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5V
bnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CisgICAgcmV0dXJuIGNvbnRleHQucmVzdWx0
OworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZSgpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFT
dG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKaW5kZXggYzhmZTRlNWE4YjU5YmI0ZWZhYzRjNWUxYTZhMjk4NzZjYTg5Y2ZmZi4uOGUx
MTE5N2I5NzJiYzMzNmFkNmIyMmVjMjYxNzBkMDcwYTMyZWFmOSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjQ0LDYgKzI0NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9zdChXS1N0cmluZ1JlZiBob3N0LCBib29s
IGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogICAgIGJvb2wgaXNTdGF0aXN0aWNzSGFzTG9jYWxT
dG9yYWdlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NDYWNo
ZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CisgICAgYm9vbCBoYXNTdGF0aXN0aWNzSXNvbGF0
ZWRTZXNzaW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNl
dFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDEw
NzNhYjE1MWEwZTM1NDlhNDEyYTVkMjVmNTRmN2IxYjRlOWRjYjguLjRkNTllODM2NzdhYTkwMmZj
NTgwMzQwM2UxOTJjMGI0MDcxZjljOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCkBAIC0xNDYyLDYgKzE0NjIsMTUgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVm
PiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJIYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNz
aW9uIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1N0
cmluZ0dldFR5cGVJRCgpKTsKKyAgICAgICAgCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1l
ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgYm9vbCBo
YXNJc29sYXRlZFNlc3Npb24gPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaGFzU3RhdGlz
dGljc0lzb2xhdGVkU2Vzc2lvbihob3N0TmFtZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRXSyhXS0Jvb2xlYW5DcmVhdGUoaGFzSXNvbGF0ZWRTZXNzaW9uKSk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorICAgIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzIikpIHsKICAgICAg
ICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFs
cygpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2MGRkYTVkYjZhMjAwYWQzMjE5
ODhhNTg2NzM4MzEwZGJkMTZmNzFhLi41ZGJmYTBlNzljNWEwOTdkM2YyNDU5MWE1ZjYxYzBmYTgw
NWFhYTg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDgtMTIgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNz
OiBTd2l0Y2ggTlNVUkxTZXNzaW9uIG9uIHRvcCBuYXZpZ2F0aW9uIHRvIHByZXZhbGVudCByZXNv
dXJjZSB3aXRoIHVzZXIgaW50ZXJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDY0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTM5NjIw
NzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9u
LW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8t
bm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50
ZXJhY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgt
aW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3Mvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2
YWxlbnQtd2l0aC1pbnRlcmFjdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxOS0wOC0xMiAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgdGVzdCB0byBlbnN1
cmUgdGhhdCB3ZSBkaXNwYXRjaCBrZXlkb3duIGFuZCBrZXl1cCBldmVudHMgd2hlbiBtdWx0aXBs
ZSBrZXlzIGFyZSBwcmVzc2VkIGF0IHRoZSBzYW1lIHRpbWUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1ub3Qtc3dpdGNoLXNlc3Np
b24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aG91dC1pbnRlcmFjdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8t
bm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50
ZXJhY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNWRjMDliNjk2MzlmMWQ5MGM2YzM3
YzIyZWQxYjk2Zjg2MWM0NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmln
YXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTIgQEAKK1Rlc3RzIHRoYXQgdGhlIHNlc3Npb24gaXMgbm90IHN3aXRjaGVkIHVwb24g
dG9wIGZyYW1lIG5hdmlnYXRpb24gdG8gYSBwcmV2YWxlbnQgcmVzb3VyY2Ugd2l0aG91dCB1c2Vy
IGludGVyYWN0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTaG91
bGQgaGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4KK1BBU1MgU2hvdWxkIGhhdmUgYW5k
IGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuCitQQVNTIE9yaWdpbiBoYXMgbm8gaXNvbGF0ZWQg
c2Vzc2lvbi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdp
dGhvdXQtaW50ZXJhY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9kby1ub3Qtc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2
YWxlbnQtd2l0aG91dC1pbnRlcmFjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNmZjZTNmNTI4NTUz
Y2Y2N2Q5MWM0MWIyZDIyYzk3NGIzOTU5ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3aXRjaC1zZXNzaW9u
LW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rpb24uaHRtbApAQCAt
MCwwICsxLDEwOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4K
KyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgor
PHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgc2Vzc2lvbiBpcyBub3Qg
c3dpdGNoZWQgdXBvbiB0b3AgZnJhbWUgbmF2aWdhdGlvbiB0byBhIHByZXZhbGVudCByZXNvdXJj
ZSB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICBjb25zdCBwcmV2YWxlbnRPcmlnaW4gPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsK
KyAgICBjb25zdCBub25QcmV2YWxlbnRPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsK
KyAgICBjb25zdCBzZXNzaW9uQ29va2llTmFtZSA9ICJzZXNzaW9uQ29va2llIjsKKyAgICBjb25z
dCBwZXJzaXN0ZW50Q29va2llTmFtZSA9ICJwZXJzaXN0ZW50Q29va2llIjsKKyAgICBjb25zdCB0
d29NaW51dGVzSW5TZWNvbmRzID0gMTIwOworCisgICAgZnVuY3Rpb24gc2V0U2Vzc2lvbkNvb2tp
ZSgpIHsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gc2Vzc2lvbkNvb2tpZU5hbWUgKyAiPTE7
IHBhdGg9LyI7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0UGVyc2lzdGVudENvb2tpZSgpIHsK
KyAgICAgICAgZG9jdW1lbnQuY29va2llID0gcGVyc2lzdGVudENvb2tpZU5hbWUgKyAiPTE7IHBh
dGg9LzsgTWF4LUFnZT0iICsgdHdvTWludXRlc0luU2Vjb25kcyArICI7IjsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoc2hvdWxkSGF2ZVNlc3Npb25Db29raWUsIHNob3VsZEhh
dmVQZXJzaXN0ZW50Q29va2llKSB7CisgICAgICAgIGxldCBoYXNTZXNzaW9uQ29va2llID0gKGRv
Y3VtZW50LmNvb2tpZSArICIiKS5pbmNsdWRlcyhzZXNzaW9uQ29va2llTmFtZSksCisgICAgICAg
ICAgICBoYXNQZXJzaXN0ZW50Q29va2llID0gKGRvY3VtZW50LmNvb2tpZSArICIiKS5pbmNsdWRl
cyhwZXJzaXN0ZW50Q29va2llTmFtZSk7CisKKyAgICAgICAgaWYgKHNob3VsZEhhdmVTZXNzaW9u
Q29va2llICYmIGhhc1Nlc3Npb25Db29raWUpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaG91
bGQgaGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4iKTsKKyAgICAgICAgZWxzZSBpZiAo
c2hvdWxkSGF2ZVNlc3Npb25Db29raWUgJiYgIWhhc1Nlc3Npb25Db29raWUpIHsKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIlNob3VsZCBoYXZlIGJ1dCBkb2Vzbid0IGhhdmUgdGhlIHNlc3Npb24g
Y29va2llLiIpOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNU
ZXN0KTsKKyAgICAgICAgfSBlbHNlIGlmICghc2hvdWxkSGF2ZVNlc3Npb25Db29raWUgJiYgaGFz
U2Vzc2lvbkNvb2tpZSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkbid0IGhhdmUg
YnV0IGhhcyB0aGUgc2Vzc2lvbiBjb29raWUuIik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRl
c3RQYXNzZWQoIlNob3VsZG4ndCBoYXZlIGFuZCBkb2Vzbid0IGhhdmUgdGhlIHNlc3Npb24gY29v
a2llLiIpOworCisKKyAgICAgICAgaWYgKHNob3VsZEhhdmVQZXJzaXN0ZW50Q29va2llICYmIGhh
c1BlcnNpc3RlbnRDb29raWUpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGQgaGF2ZSBh
bmQgaGFzIHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICAgICAgZWxzZSBpZiAoc2hvdWxk
SGF2ZVBlcnNpc3RlbnRDb29raWUgJiYgIWhhc1BlcnNpc3RlbnRDb29raWUpIHsKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIlNob3VsZCBoYXZlIGJ1dCBkb2Vzbid0IGhhdmUgdGhlIHBlcnNpc3Rl
bnQgY29va2llLiIpOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNo
SlNUZXN0KTsKKyAgICAgICAgfSBlbHNlIGlmICghc2hvdWxkSGF2ZVBlcnNpc3RlbnRDb29raWUg
JiYgaGFzUGVyc2lzdGVudENvb2tpZSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxk
bid0IGhhdmUgYnV0IGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuIik7CisgICAgICAgICAgICBz
ZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIlNob3VsZG4ndCBoYXZlIGFuZCBkb2Vzbid0IGhhdmUgdGhl
IHBlcnNpc3RlbnQgY29va2llLiIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7
CisgICAgICAgIHN3aXRjaCAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCkgeworICAgICAgICAgICAg
Y2FzZSAiI3N0ZXAxIjoKKyAgICAgICAgICAgICAgICBzZXRTZXNzaW9uQ29va2llKCk7CisgICAg
ICAgICAgICAgICAgc2V0UGVyc2lzdGVudENvb2tpZSgpOworICAgICAgICAgICAgICAgIGNoZWNr
Q29va2llcyh0cnVlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5oYXNT
dGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKHByZXZhbGVudE9yaWdpbikpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiT3JpZ2luIGhhcyBpc29sYXRlZCBzZXNzaW9uLiIpOworICAg
ICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJP
cmlnaW4gaGFzIG5vIGlzb2xhdGVkIHNlc3Npb24uIik7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQubG9jYXRpb24uaHJlZiA9IG5vblByZXZhbGVudE9yaWdpbiArICIvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9kby1ub3Qtc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQt
d2l0aG91dC1pbnRlcmFjdGlvbi5odG1sI3N0ZXAyIjsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgIiNzdGVwMiI6CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9j
YXRpb24uaGFzaCA9ICJzdGVwMyI7CisgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0
aW9uLm9yaWdpbiAhPT0gbm9uUHJldmFsZW50T3JpZ2luKQorICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJTdGVwIDIgaXMgbm90IG9uICIgKyBub25QcmV2YWxlbnRPcmlnaW4gKyAiLiIp
OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlKHByZXZhbGVudE9yaWdpbiwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShwcmV2YWxl
bnRPcmlnaW4pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKHByZXZhbGVu
dE9yaWdpbiArICIgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVz
dCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcocnVuVGVzdCk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDMi
OgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBwcmV2YWxlbnRPcmln
aW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5h
dmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rpb24uaHRtbCNzdGVwNCI7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDQiOgorICAgICAg
ICAgICAgICAgIGNoZWNrQ29va2llcyh0cnVlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAo
dGVzdFJ1bm5lci5oYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKHByZXZhbGVudE9yaWdpbikp
CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk9yaWdpbiBoYXMgaXNvbGF0ZWQgc2Vz
c2lvbi4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIk9yaWdpbiBoYXMgbm8gaXNvbGF0ZWQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAg
ICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJVbmtub3duIGhhc2guIik7CisgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxz
ZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkb2N1bWVudC5s
b2NhdGlvbi5oYXNoID09PSAiIikgeworICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24ub3Jp
Z2luICE9PSBwcmV2YWxlbnRPcmlnaW4pCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJUZXN0IGlz
IG5vdCBzdGFydGluZyBvdXQgb24gIiArIHByZXZhbGVudE9yaWdpbiArICIuIik7CisgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaWYgKHRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UocHJldmFsZW50T3JpZ2luKSkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKHByZXZhbGVudE9yaWdpbiArICIgd2FzIGNsYXNz
aWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuIik7Cisg
ICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKyAgICAgICAgfSk7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3dpdGNoLXNlc3Npb24tb24t
bmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3dpdGNoLXNlc3Np
b24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1pbnRlcmFjdGlvbi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzQzOTIyZmQ5M2YxYTU0NDRmMmNiMDY4ODRlZmMzMjkwYmFlNTFmNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLXByZXZhbGVudC13aXRoLWlu
dGVyYWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0aGF0IHRoZSBz
ZXNzaW9uIGlzIHN3aXRjaGVkIHVwb24gdG9wIGZyYW1lIG5hdmlnYXRpb24gdG8gYSBwcmV2YWxl
bnQgcmVzb3VyY2Ugd2l0aCB1c2VyIGludGVyYWN0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4K
K1BBU1MgU2hvdWxkIGhhdmUgYW5kIGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuCitQQVNTIE9y
aWdpbiBoYXMgaXNvbGF0ZWQgc2Vzc2lvbi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1w
cmV2YWxlbnQtd2l0aC1pbnRlcmFjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJl
dmFsZW50LXdpdGgtaW50ZXJhY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWJmN2U1ZmI3ZTMzYmZj
MzEwMjM5MmIwMjE1Y2FhNWNjYWMzOWJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmln
YXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rpb24uaHRtbApAQCAtMCwwICsxLDExMCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBj
aGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAg
ICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgc2Vzc2lvbiBpcyBzd2l0Y2hlZCB1cG9uIHRv
cCBmcmFtZSBuYXZpZ2F0aW9uIHRvIGEgcHJldmFsZW50IHJlc291cmNlIHdpdGggdXNlciBpbnRl
cmFjdGlvbi4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnN0IHByZXZh
bGVudE9yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IG5vblByZXZh
bGVudE9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHNlc3Npb25D
b29raWVOYW1lID0gInNlc3Npb25Db29raWUiOworICAgIGNvbnN0IHBlcnNpc3RlbnRDb29raWVO
YW1lID0gInBlcnNpc3RlbnRDb29raWUiOworICAgIGNvbnN0IHR3b01pbnV0ZXNJblNlY29uZHMg
PSAxMjA7CisKKyAgICBmdW5jdGlvbiBzZXRTZXNzaW9uQ29va2llKCkgeworICAgICAgICBkb2N1
bWVudC5jb29raWUgPSBzZXNzaW9uQ29va2llTmFtZSArICI9MTsgcGF0aD0vIjsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBzZXRQZXJzaXN0ZW50Q29va2llKCkgeworICAgICAgICBkb2N1bWVudC5j
b29raWUgPSBwZXJzaXN0ZW50Q29va2llTmFtZSArICI9MTsgcGF0aD0vOyBNYXgtQWdlPSIgKyB0
d29NaW51dGVzSW5TZWNvbmRzICsgIjsiOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29v
a2llcyhzaG91bGRIYXZlU2Vzc2lvbkNvb2tpZSwgc2hvdWxkSGF2ZVBlcnNpc3RlbnRDb29raWUp
IHsKKyAgICAgICAgbGV0IGhhc1Nlc3Npb25Db29raWUgPSAoZG9jdW1lbnQuY29va2llICsgIiIp
LmluY2x1ZGVzKHNlc3Npb25Db29raWVOYW1lKSwKKyAgICAgICAgICAgIGhhc1BlcnNpc3RlbnRD
b29raWUgPSAoZG9jdW1lbnQuY29va2llICsgIiIpLmluY2x1ZGVzKHBlcnNpc3RlbnRDb29raWVO
YW1lKTsKKworICAgICAgICBpZiAoc2hvdWxkSGF2ZVNlc3Npb25Db29raWUgJiYgaGFzU2Vzc2lv
bkNvb2tpZSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNob3VsZCBoYXZlIGFuZCBoYXMgdGhl
IHNlc3Npb24gY29va2llLiIpOworICAgICAgICBlbHNlIGlmIChzaG91bGRIYXZlU2Vzc2lvbkNv
b2tpZSAmJiAhaGFzU2Vzc2lvbkNvb2tpZSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2hv
dWxkIGhhdmUgYnV0IGRvZXNuJ3QgaGF2ZSB0aGUgc2Vzc2lvbiBjb29raWUuIik7CisgICAgICAg
ICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9IGVs
c2UgaWYgKCFzaG91bGRIYXZlU2Vzc2lvbkNvb2tpZSAmJiBoYXNTZXNzaW9uQ29va2llKSB7Cisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGRuJ3QgaGF2ZSBidXQgaGFzIHRoZSBzZXNzaW9u
IGNvb2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpT
VGVzdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiU2hvdWxkbid0
IGhhdmUgYW5kIGRvZXNuJ3QgaGF2ZSB0aGUgc2Vzc2lvbiBjb29raWUuIik7CisKKworICAgICAg
ICBpZiAoc2hvdWxkSGF2ZVBlcnNpc3RlbnRDb29raWUgJiYgaGFzUGVyc2lzdGVudENvb2tpZSkK
KyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNob3VsZCBoYXZlIGFuZCBoYXMgdGhlIHBlcnNpc3Rl
bnQgY29va2llLiIpOworICAgICAgICBlbHNlIGlmIChzaG91bGRIYXZlUGVyc2lzdGVudENvb2tp
ZSAmJiAhaGFzUGVyc2lzdGVudENvb2tpZSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2hv
dWxkIGhhdmUgYnV0IGRvZXNuJ3QgaGF2ZSB0aGUgcGVyc2lzdGVudCBjb29raWUuIik7CisgICAg
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9
IGVsc2UgaWYgKCFzaG91bGRIYXZlUGVyc2lzdGVudENvb2tpZSAmJiBoYXNQZXJzaXN0ZW50Q29v
a2llKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGRuJ3QgaGF2ZSBidXQgaGFzIHRo
ZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFs
c2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiU2hvdWxkbid0IGhhdmUgYW5kIGRvZXNuJ3QgaGF2ZSB0aGUgcGVyc2lzdGVudCBjb29raWUu
Iik7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc3dpdGNoIChk
b2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAgICAgICBjYXNlICIjc3RlcDEiOgorICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlv
bihwcmV2YWxlbnRPcmlnaW4sIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg
ICBzZXRTZXNzaW9uQ29va2llKCk7CisgICAgICAgICAgICAgICAgICAgIHNldFBlcnNpc3RlbnRD
b29raWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVzKHRydWUsIHRydWUpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5oYXNTdGF0aXN0aWNzSXNvbGF0ZWRT
ZXNzaW9uKHByZXZhbGVudE9yaWdpbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIk9yaWdpbiBoYXMgaXNvbGF0ZWQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiT3Jp
Z2luIGhhcyBubyBpc29sYXRlZCBzZXNzaW9uLiIpOworICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5sb2NhdGlvbi5ocmVmID0gbm9uUHJldmFsZW50T3JpZ2luICsgIi9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgt
aW50ZXJhY3Rpb24uaHRtbCNzdGVwMiI7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDIiOgorICAgICAgICAgICAgICAg
IGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDMiOworICAgICAgICAgICAgICAgIGlmIChk
b2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gIT09IG5vblByZXZhbGVudE9yaWdpbikKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3RlcCAyIGlzIG5vdCBvbiAiICsgbm9uUHJldmFsZW50
T3JpZ2luICsgIi4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZShwcmV2YWxlbnRPcmlnaW4sIHRydWUsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UocHJldmFsZW50T3JpZ2luKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZChwcmV2YWxlbnRPcmlnaW4gKyAiIGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVz
b3VyY2UuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNl
LCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKHJ1blRlc3QpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAiI3N0ZXAzIjoKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0g
cHJldmFsZW50T3JpZ2luICsgIi9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9u
LW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rpb24uaHRtbCNzdGVwNCI7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDQiOgorICAg
ICAgICAgICAgICAgIGNoZWNrQ29va2llcyh0cnVlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBp
ZiAodGVzdFJ1bm5lci5oYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKHByZXZhbGVudE9yaWdp
bikpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIk9yaWdpbiBoYXMgaXNvbGF0ZWQg
c2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIk9yaWdpbiBoYXMgbm8gaXNvbGF0ZWQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAg
ICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJVbmtub3duIGhhc2guIik7CisgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShm
YWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkb2N1bWVu
dC5sb2NhdGlvbi5oYXNoID09PSAiIikgeworICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24u
b3JpZ2luICE9PSBwcmV2YWxlbnRPcmlnaW4pCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJUZXN0
IGlzIG5vdCBzdGFydGluZyBvdXQgb24gIiArIHByZXZhbGVudE9yaWdpbiArICIuIik7CisgICAg
ICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaWYg
KHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UocHJldmFsZW50T3JpZ2lu
KSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKHByZXZhbGVudE9yaWdpbiArICIgd2FzIGNs
YXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuIik7
CisgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKyAgICAgICAg
fSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376107</attachid>
            <date>2019-08-12 16:53:26 -0700</date>
            <delta_ts>2019-08-13 15:34:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200642-20190812165326.patch</filename>
            <type>text/plain</type>
            <size>84538</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UzM2QzMTg1ZTkyYmE3
Zjk4YTk3MGViYmE5NjI2ZTc2MDQyOWZmNi4uYzgyNTM4OTA3MTY0ZWI1ZjVhZmYyYTg0MTZhNzU3
NmUwODVjNmIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE5LTA4LTEyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogU3dpdGNoIE5TVVJMU2Vzc2lvbiBvbiB0b3AgbmF2aWdhdGlvbiB0byBwcmV2
YWxlbnQgcmVzb3VyY2Ugd2l0aCB1c2VyIGludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzUzOTYyMDczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3
aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rp
b24uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rp
b24uaHRtbAorCisgICAgICAgIFRoaXMgcGF0Y2ggc3BsaXRzIG1fcmVnaXN0cmFibGVEb21haW5z
VG9CbG9ja0Nvb2tpZUZvciBpbiBXZWJDb3JlOk5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBpbnRvOgor
ICAgICAgICAtIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IK
KyAgICAgICAgLSBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcgor
ICAgICAgICAuLi4gdG8gc3VwcG9ydCBkaWZmZXJlbnQgbmV0d29yayBsb2FkIHBvbGljaWVzIGJh
c2VkIG9uIHRoaXMgZGlzdGluY3Rpb24uCisKKyAgICAgICAgKiBwYWdlL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dElUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Oml0cFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkIGNvbnN0KToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
c0J1dEtlZXBGaXJzdFBhcnR5Q29va2llc0ZvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQW5kRGVsZXRl
Q29va2llc0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWxlbnREb21haW5zKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJldmFsZW50RG9tYWlu
c1RvQmxvY2tDb29raWVzRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorCiAyMDE5LTA4LTEyICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIG11bHRpcGFyYW1ldGVyIG92ZXJsb2Fk
cyBvZiBhcHBlbmQoKSBpbiBTdHJpbmdCdWlsZGVyIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmQgc3Rh
bmRhcmRpemluZ2luZyBvbiB0aGUgZmxleGlibGVBcHBlbmQoKSBpbXBsZW1lbnRhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAyODYxYjljOTY3NjkwNTViYTM1MWMzMjU2MTdjNDRjM2M4YjNmYjBhLi4yNTExNmNj
MDY4Mzc0ODY1NjVjZTE0N2MyOTE3MmI0MjlkODVmNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkz
IEBACisyMDE5LTA4LTEyICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogU3dpdGNoIE5TVVJMU2Vzc2lvbiBvbiB0
b3AgbmF2aWdhdGlvbiB0byBwcmV2YWxlbnQgcmVzb3VyY2Ugd2l0aCB1c2VyIGludGVyYWN0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2NDIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzOTYyMDczPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHByZXZhbGVudCByZXNvdXJjZXMgd2l0
aCB1c2VyIGludGVyYWN0aW9uIGdldCB0byBrZWVwIHRoZWlyIGNvb2tpZXMgYW5kIHdlYnNpdGUK
KyAgICAgICAgZGF0YSwgd2Ugc2hvdWxkIHVzZSBhIGRpZmZlcmVudCBOU1VSTFNlc3Npb25zIGZv
ciB3aGVuIHRoZXkgYXJlIGZpcnN0LXBhcnR5IHdlYnNpdGVzCisgICAgICAgIGFuZCBoYXZlIGFj
Y2VzcyB0byB0aGF0IGRhdGEuIFRoaXMgcGF0Y2ggYWNoaWV2ZXMgdGhhdC4KKworICAgICAgICBU
aGUgV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYSBjb25zdHJ1Y3RvciBub3cgY2hlY2tzIHdp
dGggdGhlIG5ldHdvcmsgc3RvcmFnZSBzZXNzaW9uCisgICAgICAgIGlmIHRoZSBmaXJzdCBwYXJ0
eSBmb3IgdGhpcyBsb2FkIHNob3VsZCBiZSBpc29sYXRlZC4gVGhlIGNhdGVnb3J5IGZvciB3aGlj
aCB0aGlzIGlzIHRydWUKKyAgICAgICAgaXMgY2hlY2tlZCBpbiB0aGUgbmV3IGZ1bmN0aW9uCisg
ICAgICAgIFdlYkNvcmU6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzQnV0S2VlcEZpcnN0UGFydHlDb29raWVzRm9yKCkKKyAgICAgICAgd2hpY2ggaW4g
dHVybiBpcyBiYWNrZWQgYnkgYSBuZXcgc3BsaXQgb2YgbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQ29va2llRm9yIGludG86CisgICAgICAgIC0gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2Nr
QW5kRGVsZXRlQ29va2llc0ZvcgorICAgICAgICAtIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9j
a0J1dEtlZXBDb29raWVzRm9yCisgICAgICAgIC4uLiBpbiBXZWJDb3JlOk5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi4KKworICAgICAgICBOb24taXNvbGF0ZWQgc2Vzc2lvbnMgYXJlIG5vdyBwaWNrZWQg
dXAgdGhyb3VnaCB0aGUgY29udmVuaWVuY2UgZnVuY3Rpb24KKyAgICAgICAgV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uKCkgd2hlcmVhcyBpc29sYXRlZCBzZXNzaW9ucyBhcmUg
Y3JlYXRlZCBsYXppbHkgYW5kCisgICAgICAgIHBpY2tlZCB1cCB0aHJvdWdoIFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6aXNvbGF0ZWRTZXNzaW9uKCkuCisKKyAgICAgICAgVGhlIG51bWJl
ciBvZiBpc29sYXRlZCBOU1VSTFNlc3Npb25zIGluIG1lbW9yeSBpcyBjYXBwZWQgdG8gMTAuIFdo
ZW4gdGhlIGNhcCBpcyBoaXQsCisgICAgICAgIHRoZSBzZXNzaW9uIHRoYXQncyBiZWVuIHVudXNl
ZCB0aGUgbG9uZ2VzdCBpcyBhZ2VkIG91dC4KKworICAgICAgICBUaGUgQyBBUEkgY2hhbmdlcyBh
cmUgdGVzdCBpbmZyYXN0cnVjdHVyZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWlu
c1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbnNUb0Jsb2NrQnV0S2VlcENv
b2tpZXNGb3IgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1RvQmxvY2sgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2xlYXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnVwZGF0ZUNv
b2tpZUJsb2NraW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWJ1Z0xvZ0RvbWFpbnNJ
bkJhdGNoZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxVcGRhdGVQcmV2YWxlbnREb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlRm9yRG9tYWlu
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2NoZWR1bGVDbGVhckJsb2NraW5nU3RhdGVGb3JEb21haW5zKTogRGVsZXRlZC4KKyAg
ICAgICAgICAgIERlYWQgY29kZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZWdp
c3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNG
b3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNJ
c29sYXRlZFNlc3Npb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNob3VsZElzb2xhdGVTZXNzaW9uc0ZvclByZXZh
bGVudFRvcEZyYW1lcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpo
YXNJc29sYXRlZFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6Y2xlYXJJc29sYXRlZFNlc3Npb25zKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2Ep
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29h
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Omlzb2xhdGVkU2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Omhhc0lzb2xhdGVkU2Vzc2lvbiBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFySXNvbGF0ZWRT
ZXNzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmludmFsaWRh
dGVBbmRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVh
ckNyZWRlbnRpYWxzKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzSXNvbGF0ZWRTZXNzaW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpoYXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aGFzSXNvbGF0ZWRTZXNzaW9uRm9yVGVz
dGluZyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaDoKKwogMjAxOS0wOC0xMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVwbGFjZSBtdWx0aXBhcmFtZXRlciBvdmVybG9hZHMgb2YgYXBwZW5kKCkgaW4g
U3RyaW5nQnVpbGRlciBhcyBhIGZpcnN0IHN0ZXAgdG93YXJkIHN0YW5kYXJkaXppbmdpbmcgb24g
dGhlIGZsZXhpYmxlQXBwZW5kKCkgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggNWQyODhkMzU5MzZjZThkZTEyYzViYTM5
NTUzNDYyNTUyMmM4Y2E2MS4uNzRmOWQzYWM5ODkxNTU3YjhjZjlkNGMwMTMxMTgzOTZkYzMzZTRm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAg
LTE0Nyw2ICsxNDcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0lUUERhdGFiYXNlRW5hYmxl
ZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSVRQRGF0YWJhc2VFbmFibGVkID0gaXNFbmFibGVkOyB9
CiAgICAgYm9vbCBpc0lUUERhdGFiYXNlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJVFBE
YXRhYmFzZUVuYWJsZWQ7IH0KIAorICAgIHZvaWQgc2V0SXNJVFBTZXNzaW9uU3dpdGNoaW5nRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSVRQU2Vzc2lvblN3aXRjaGluZ0VuYWJsZWQgPSBp
c0VuYWJsZWQ7IH0KKyAgICBib29sIGlzSVRQU2Vzc2lvblN3aXRjaGluZ0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzSVRQU2Vzc2lvblN3aXRjaGluZ0VuYWJsZWQ7IH0KKwogICAgIHZvaWQg
c2V0UmVzdHJpY3RlZEhUVFBSZXNwb25zZUFjY2Vzcyhib29sIGlzRW5hYmxlZCkgeyBtX2lzUmVz
dHJpY3RlZEhUVFBSZXNwb25zZUFjY2VzcyA9IGlzRW5hYmxlZDsgfQogICAgIGJvb2wgcmVzdHJp
Y3RlZEhUVFBSZXNwb25zZUFjY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXN0cmljdGVkSFRU
UFJlc3BvbnNlQWNjZXNzOyB9CiAKQEAgLTQxMCw2ICs0MTMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29s
IG1fYXJpYVJlZmxlY3Rpb25FbmFibGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9pdHBEZWJ1Z01v
ZGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0lUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkIHsg
dHJ1ZSB9OwogICAgIGJvb2wgbV9pc1Jlc3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nlc3MgeyB0cnVl
IH07CiAgICAgYm9vbCBtX2Nyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lFbmFibGVkIHsgdHJ1ZSB9
OwogICAgIGJvb2wgbV9pc1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDU3VwcG9ydEVuYWJsZWQg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1s
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDQ1NjI1ZTFkZmNjYTU0
NDgzY2RlMzljYjIxMWE2NDZiNDMxMjBjYTQuLjllMWU2ZDllODMxODAyYzY2MmQ4NGM5ZDFhOGQ3
MzA3MTlhYjk3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFt
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTg2MSw2ICs4NjEs
OSBAQCB3ZWJSVENFbmNyeXB0aW9uRW5hYmxlZDoKICAgaW5pdGlhbDogdHJ1ZQogICBpbnNwZWN0
b3JPdmVycmlkZTogdHJ1ZQogCitpc0lUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkOgorICBpbml0
aWFsOiB0cnVlCisKICMgRGVwcmVjYXRlZAogCiBpY2VDYW5kaWRhdGVGaWx0ZXJpbmdFbmFibGVk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDdhMjdlYjUzNDA2ZDYxOTE5YjUyMDEwMDMyYjU0YWRj
MTU0ODA4NDkuLmU3MTkwN2Q5NzdkZjU5MjczZjQ5MTljNTY1MWFmMTczNmZiMWE2N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5jcHAKQEAgLTYzLDcgKzYzLDIwIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
CiAgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5j
b250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKCEobV9yZWdpc3RyYWJsZURv
bWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bikgJiYgbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuY29udGFp
bnMocmVnaXN0cmFibGVEb21haW4pKSk7CisKKyAgICByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFp
bnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikK
KyAgICAgICAgfHwgbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3Iu
Y29udGFpbnMocmVnaXN0cmFibGVEb21haW4pOworfQorCitib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0J1dEtlZXBGaXJzdFBhcnR5Q29va2ll
c0Zvcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0Cit7
CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgQVNTRVJUKCEobV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRl
Q29va2llc0Zvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikgJiYgbV9yZWdpc3RyYWJsZURv
bWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4p
KSk7CisKKyAgICByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tp
ZXNGb3IuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pOwogfQogCiBib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpIGNvbnN0CkBAIC0xMDMsMTYgKzExNiwyNCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoT3B0aW9uYWw8U2Vjb25kcz4g
c2VjbwogICAgIG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXNTaG9ydCA9IHNlY29uZHMgPyBT
ZWNvbmRzIHsgc2Vjb25kcy0+c2Vjb25kcygpIC8gNy4gfSA6IHNlY29uZHM7CiB9CiAKLXZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNG
b3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tp
ZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykKK3sKKyAgICBt
X3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmNsZWFyKCk7Cisg
ICAgbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5hZGQoZG9t
YWlucy5iZWdpbigpLCBkb21haW5zLmVuZCgpKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoY29uc3Qg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykKIHsKLSAgICBtX3JlZ2lzdHJhYmxl
RG9tYWluc1RvQmxvY2tDb29raWVGb3IuY2xlYXIoKTsKLSAgICBtX3JlZ2lzdHJhYmxlRG9tYWlu
c1RvQmxvY2tDb29raWVGb3IuYWRkKGRvbWFpbnMuYmVnaW4oKSwgZG9tYWlucy5lbmQoKSk7Cisg
ICAgbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuY2xlYXIoKTsK
KyAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5hZGQoZG9t
YWlucy5iZWdpbigpLCBkb21haW5zLmVuZCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiYgZG9tYWlucykKIHsKLSAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCi0gICAg
ICAgIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5yZW1vdmUoZG9tYWluKTsK
KyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpIHsKKyAgICAgICAgbV9yZWdpc3RyYWJs
ZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5yZW1vdmUoZG9tYWluKTsKKyAgICAg
ICAgbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IucmVtb3ZlKGRv
bWFpbik7CisgICAgfQogfQogCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFn
ZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggZTJl
MTA2YTkxZTZjMTdjY2IzMjliYTU4Y2EyMjEyNzhkNDY3MzRkZi4uYzhlZjhmN2JhYjc1ZmQ5OTc5
YjI4MmY1ZjVhODcwMmVmODBjODhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0xNDMsNyArMTQzLDkg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYg
cmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBy
ZXZhbGVudERvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvcihjb25zdCBWZWN0b3I8UmVn
aXN0cmFibGVEb21haW4+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnRE
b21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURv
bWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVD
b29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92
ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlu
cyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZp
cnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmll
cikgY29uc3Q7CkBAIC0xODEsNyArMTgzLDggQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNv
b2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+KSBjb25zdDsKLSAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3Jl
Z2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVGb3I7CisgICAgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcjsK
KyAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxv
Y2tCdXRLZWVwQ29va2llc0ZvcjsKICAgICBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBIYXNoTWFw
PHVpbnQ2NF90LCBSZWdpc3RyYWJsZURvbWFpbiwgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4+IG1fZnJhbWVz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1h
cDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+PiBtX3BhZ2VzR3JhbnRlZFN0
b3JhZ2VBY2Nlc3M7CiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gbV9jYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCAwNDkyM2VlNDMzZmMxMmY1NmMxMjhmNzBh
Yzc4MjM2NGUzNTZiZWEyLi42ODdkMGIwNDYxYWZkZTdjMDcyOThjNmM5ZWZmZDI2MTk0YmY0N2Fj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5jcHAKQEAgLTEzMTcsOCArMTMxNyw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiAK
ICAgICByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogCi0gICAgYXV0byBwcmltYXJ5RG9tYWluc1Rv
QmxvY2sgPSBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKTsKLSAgICB1cGRh
dGVDb29raWVCbG9ja2luZ0ZvckRvbWFpbnMocHJpbWFyeURvbWFpbnNUb0Jsb2NrLCBbY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICBh
dXRvIHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yID0gZW5zdXJl
UHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCk7CisgICAgUmVnaXN0cmFibGVEb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sgeyByZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQW5kRGVsZXRlQ29va2llc0ZvciwgeyB9IH07CisgICAgdXBkYXRlQ29va2llQmxvY2tpbmdG
b3JEb21haW5zKGRvbWFpbnNUb0Jsb2NrLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OkNvb2tpZVRyZWF0bWVudFJlc3VsdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y29va2llVHJlYXRtZW50Rm9yT3JpZ2luKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBkb21haW4pIGNvbnN0CkBAIC0xMzUzLDEyICsxMzU0LDI3IEBAIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFz
VXNlckdyYW50ZWRTCiAgICAgcmV0dXJuICFzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApID8gU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMgOiBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d246Ok5vOwogfQogCi1WZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zVG9CbG9jaygpIGNvbnN0CitWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5z
VG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoKSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOworICAgIAorICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gcmVzdWx0
czsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgcmVn
aXN0cmFibGVEb21haW4gRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgaXNQcmV2YWxlbnQgPSAx
IEFORCBoYWRVc2VySW50ZXJhY3Rpb24gPSAwIl9zKTsKKyAgICBpZiAoc3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxJVEVfT0spCisgICAgICAgIHJldHVybiByZXN1bHRzOworICAgIAorICAgIHdo
aWxlIChzdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21h
aW5TdHJpbmcoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpKTsKKyAgICAKKyAgICByZXR1cm4g
cmVzdWx0czsKK30KKworVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcigpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBWZWN0b3I8UmVn
aXN0cmFibGVEb21haW4+IHJlc3VsdHM7Ci0gICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudCht
X2RhdGFiYXNlLCAiU0VMRUNUIHJlZ2lzdHJhYmxlRG9tYWluIEZST00gT2JzZXJ2ZWREb21haW5z
IFdIRVJFIGlzUHJldmFsZW50ID0gMSJfcyk7CisgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVu
dChtX2RhdGFiYXNlLCAiU0VMRUNUIHJlZ2lzdHJhYmxlRG9tYWluIEZST00gT2JzZXJ2ZWREb21h
aW5zIFdIRVJFIGlzUHJldmFsZW50ID0gMSBBTkQgaGFkVXNlckludGVyYWN0aW9uID0gMSJfcyk7
CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1
cm4gcmVzdWx0czsKICAgICAKQEAgLTEzNzIsMTQgKzEzODgsMTcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxldGlv
bkhhbmRsZXIKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8g
ZG9tYWluc1RvQmxvY2sgPSB0aGlzLT5kb21haW5zVG9CbG9jaygpOworICAgIGF1dG8gZG9tYWlu
c1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yID0gdGhpcy0+ZG9tYWluc1RvQmxvY2tBbmREZWxl
dGVDb29raWVzRm9yKCk7CisgICAgYXV0byBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9y
ID0gdGhpcy0+ZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcigpOwogCi0gICAgaWYgKGRv
bWFpbnNUb0Jsb2NrLmlzRW1wdHkoKSkgeworICAgIGlmIChkb21haW5zVG9CbG9ja0FuZERlbGV0
ZUNvb2tpZXNGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3Iu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoZGVidWdMb2dnaW5nRW5hYmxlZCgpICYmICFkb21haW5zVG9C
bG9jay5pc0VtcHR5KCkpCisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Ig
ZG9tYWluc1RvQmxvY2sgeyBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIGRvbWFp
bnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IgfTsKKworICAgIGlmIChkZWJ1Z0xvZ2dpbmdFbmFi
bGVkKCkgJiYgIWRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgJiYg
IWRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpKQogICAgICAgICBkZWJ1
Z0xvZ0RvbWFpbnNJbkJhdGNoZXMoImJsb2NrIiwgZG9tYWluc1RvQmxvY2spOwogCiAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgc3Rv
cmUgPSBtYWtlUmVmKHN0b3JlKCkpLCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29weShk
b21haW5zVG9CbG9jayksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCAxMWQ3MzMzMzBhYzMyNjJkMzU2MWM3M2NlNjc0N2Rm
Y2I4ODU2OGViLi4zYzhkMmIxZjE2NTQ5M2M5M2NhNWQ4MmJjMDI3MmY5MTNiN2EwN2ZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApA
QCAtMTE3LDcgKzExNyw4IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHVwZGF0ZUxhc3RT
ZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpOwogICAgIHZvaWQgc2V0VXNl
ckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBoYWRVc2VySW50ZXJh
Y3Rpb24sIFdhbGxUaW1lKTsKLSAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNU
b0Jsb2NrKCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9C
bG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoKSBjb25zdDsKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoKSBjb25zdDsKIAogICAgIHN0
cnVjdCBQcmV2YWxlbnREb21haW5EYXRhIHsKICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmlu
ZGV4IDA3NzBlOGRlYjNkYWRjMzNkNTRmZGVkNjI3OWNhYTExNzUwYmVjMjMuLmUyMzlmY2M4MDNl
OGQ3NDQ1NjEyMThkNjcyMTdmNzFlZDQxYjE4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC03MTIsOCArNzEyLDkgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGUKIAogICAgIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAKLSAg
ICBhdXRvIHByaW1hcnlEb21haW5zVG9CbG9jayA9IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0Zv
ckRlYnVnTW9kZSgpOwotICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhwcmltYXJ5
RG9tYWluc1RvQmxvY2ssIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERl
bGV0ZUNvb2tpZXNGb3IgPSBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKTsK
KyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7
IHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLCB7IH0gfTsKKyAg
ICB1cGRhdGVDb29raWVCbG9ja2luZ0ZvckRvbWFpbnMoZG9tYWluc1RvQmxvY2ssIFtjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCiBi
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6d2FzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBj
dXJyZW50LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiB1cGRhdGVkKSBjb25zdApAQCAt
NzYxLDE4ICs3NjIsMjUgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OnVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVyPHYKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9t
YWluc1RvQmxvY2s7CisgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9j
a0FuZERlbGV0ZUNvb2tpZXNGb3I7CisgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21h
aW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yOwogICAgIGZvciAoYXV0byYgcmVzb3VyY2VTdGF0
aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAo
cmVzb3VyY2VTdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAgICAgICAgIGRvbWFp
bnNUb0Jsb2NrLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlKSB7CisgICAg
ICAgICAgICBpZiAoaGFzSGFkVW5leHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9uKHJlc291cmNl
U3RhdGlzdGljLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9uZykpCisgICAgICAgICAgICAgICAg
ZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMu
cmVnaXN0cmFibGVEb21haW4pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRv
bWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMu
cmVnaXN0cmFibGVEb21haW4pOworICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGRvbWFpbnNU
b0Jsb2NrLmlzRW1wdHkoKSAmJiAhZGVidWdNb2RlRW5hYmxlZCgpKSB7CisgICAgaWYgKGRvbWFp
bnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxvY2tC
dXRLZWVwQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgIWRlYnVnTW9kZUVuYWJsZWQoKSkgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSAmJiAhZG9tYWluc1RvQmxvY2suaXNFbXB0eSgpKQor
ICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGRvbWFpbnNUb0Jsb2NrIHsg
ZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLCBkb21haW5zVG9CbG9ja0J1dEtlZXBD
b29raWVzRm9yIH07CisKKyAgICBpZiAoZGVidWdMb2dnaW5nRW5hYmxlZCgpICYmICFkb21haW5z
VG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgpICYmICFkb21haW5zVG9CbG9ja0J1
dEtlZXBDb29raWVzRm9yLmlzRW1wdHkoKSkKICAgICAgICAgZGVidWdMb2dEb21haW5zSW5CYXRj
aGVzKCJibG9jayIsIGRvbWFpbnNUb0Jsb2NrKTsKIAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHN0b3JlID0gbWFrZVJlZihzdG9y
ZSgpKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggYjkz
ZjA3ZGE0MWQ1NWMyM2EwNzZkMGI1ZmQ4ZjQzZTRkMzk1NDkwMC4uZDMzZmQzZWU1ZjY5ZGY4NzRi
NDRjNjU4ZTJlOWM3MmFhMmJhNTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoYm9vbCB2YWx1ZSkKICAgICAg
ICAgbV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgPSBNb25vdG9uaWNUaW1lOjpub3co
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZUJs
b2NraW5nRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5z
VG9CbG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nRm9y
RG9tYWlucyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciYgZG9tYWlu
c1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKQEAgLTU3MSw4ICs1NzEs
MTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRpZENyZWF0ZU5ldHdvcmtQ
cm9jZXNzKCkKICAgICB1cGRhdGVDbGllbnRTaWRlQ29va2llc0FnZUNhcCgpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGVidWdMb2dEb21haW5zSW5CYXRjaGVzKGNv
bnN0IGNoYXIqIGFjdGlvbiwgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlu
cykKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWJ1Z0xvZ0RvbWFpbnNJbkJh
dGNoZXMoY29uc3QgY2hhciogYWN0aW9uLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2Nr
Q29va2llc0ZvciYgZG9tYWluc1RvQmxvY2spCiB7CisgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiBkb21haW5zOworICAgIGRvbWFpbnMuYXBwZW5kVmVjdG9yKGRvbWFpbnNUb0Jsb2NrLmRv
bWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvcik7CisgICAgZG9tYWlucy5hcHBlbmRWZWN0
b3IoZG9tYWluc1RvQmxvY2suZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcik7CiAgICAg
c3RhdGljIGNvbnN0IGF1dG8gbWF4TnVtYmVyT2ZEb21haW5zSW5PbmVMb2dTdGF0ZW1lbnQgPSA1
MDsKICAgICBpZiAoZG9tYWlucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBhZGVjMTRjZjljY2Q5NjRjMjkw
MWNlMmQ4NGVhMzU2ZGY2ZGIwZmYyLi43MGFjYmRjZTk2ZjY1Y2Y4M2E5NDYzN2QzZmI4ZDFlOWIy
NjU1M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC05
OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0ID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpID0gMDsKLSAgICB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9t
YWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zVG9CbG9jaywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5n
Rm9yRG9tYWlucyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhckJsb2NraW5nU3RhdGVG
b3JEb21haW5zKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0
aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogcHJvdGVj
dGVkOgogICAgIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSW1wb3J0YW5jZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgc3RhdGljIFZlY3RvcjxPcGVyYXRpbmdE
YXRlPiBtZXJnZU9wZXJhdGluZ0RhdGVzKGNvbnN0IFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYgZXhp
c3RpbmdEYXRlcywgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiYgbmV3RGF0ZXMpOwotICAgIHN0YXRp
YyB2b2lkIGRlYnVnTG9nRG9tYWluc0luQmF0Y2hlcyhjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0
IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpOworICAgIHN0YXRpYyB2b2lkIGRl
YnVnTG9nRG9tYWluc0luQmF0Y2hlcyhjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJik7CiAKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgV29ya1F1ZXVlJiwgU2hv
dWxkSW5jbHVkZUxvY2FsaG9zdCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRhODg2NmI2MWM4YjA1NzJjZGQ1MDhlYjY5YTlk
OGE5ODllNzVkMjEuLjAwMTIwNzQ4NTVmY2YwODEwZmYyMjZlZjk1YzIxMmMzNTAyOTM3ODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC04
NDAsMzggKzg0MCw2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hl
ZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKENvbXBsZXRpb25IYW5kCiAgICAgfSk7CiB9CiAKLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5n
VXBkYXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5z
VG9CbG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ewotICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQg
b25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1Ro
cmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0
b3JlKSB7Ci0gICAgICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG1fc3RhdGlz
dGljc1N0b3JlLT51cGRhdGVDb29raWVCbG9ja2luZ0ZvckRvbWFpbnMoZG9tYWluc1RvQmxvY2ss
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckJsb2NraW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBi
eSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhy
ZWFkLgotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgcG9zdFRhc2soW3RoaXMs
IGRvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlucyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9z
dGF0aXN0aWNzU3RvcmUpIHsKLSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNsZWFyQmxvY2tpbmdTdGF0ZUZvckRvbWFpbnMoZG9tYWlu
cywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CkBAIC05NTYsMTMgKzkyNCwxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXAoU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aQogICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjYWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxl
cihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zVG9CbG9jaywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nv
b2tpZXNGb3JIYW5kbGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9y
JiBkb21haW5zVG9CbG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAobV9u
ZXR3b3JrU2Vzc2lvbikgewotICAgICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX25l
dHdvcmtTZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgICAgIHN0b3Jh
Z2VTZXNzaW9uLT5zZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoZG9tYWluc1Rv
QmxvY2spOworICAgICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX25ldHdvcmtTZXNz
aW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkgeworICAgICAgICAgICAgc3RvcmFnZVNlc3Np
b24tPnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvcihkb21haW5z
VG9CbG9jay5kb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IpOworICAgICAgICAgICAg
c3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNG
b3IoZG9tYWluc1RvQmxvY2suZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcik7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDAxMjQyYTljY2E5ZDM2ODU5YjUx
MjMxMWQzOWUxYWVlMGYzODgwNWYuLjAyM2RjMjc3Y2Y1MDU0N2JmOTY4OWVjY2E0ODQ0ZDBlNjRh
YjEzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
QEAgLTYzLDExICs2MywxNyBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBlbnVtIGNsYXNzIFNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZEluY2x1
ZGVMb2NhbGhvc3QgOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBFbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3Mg
RW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZyA6IGJvb2wg
eyBObywgWWVzIH07CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVG9SZW1vdmUgOiB1aW50OF90IHsK
ICAgICBBbGwsCiAgICAgQWxsQnV0SHR0cE9ubHlDb29raWVzLAogICAgIEFsbEJ1dENvb2tpZXMK
IH07CitzdHJ1Y3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgeworICAgIFZl
Y3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvQmxvY2tBbmREZWxldGVD
b29raWVzRm9yOworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlu
c1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2Nr
Q29va2llc0ZvciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0Jsb2Nr
QW5kRGVsZXRlQ29va2llc0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvQmxvY2tCdXRLZWVw
Q29va2llc0Zvci5pc29sYXRlZENvcHkoKSB9OyB9Cit9OwogCiBjbGFzcyBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWlu
PiB7CiBwdWJsaWM6CkBAIC0xNjgsNyArMTc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9nVGVz
dGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2FsbEdyYW50U3RvcmFnZUFjY2Vz
c0hhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9w
dGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlQWxs
U3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY2Fs
bFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoY29uc3QgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBjYWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxl
cihjb25zdCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxsUmVtb3ZlRG9tYWluc0hhbmRsZXIoY29u
c3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwogICAgIHZvaWQgY2FsbEhhc1N0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA5Y2I0YTkyNTIyMDkwNWI0YzIxYTRmNzZhZTc3NmFl
MTQ1MDI1Zjg3Li5hODQwMjM3YWFmNTAzNzI2NWRmNzQ1NTU2N2JmZDY0M2Q5NmRhMDUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAt
NjI5LDcgKzYyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmR1bXBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxlCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zVG9C
bG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQotICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQ29va2llc0Zvcihkb21haW5zVG9CbG9jayk7CisgICAgICAgIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9y
KGRvbWFpbnNUb0Jsb2NrKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCkBAIC03NzMs
NiArNzczLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDb29raWVCbG9ja2luZ1Vw
ZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhp
cy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+
Y2xlYXJJc29sYXRlZFNlc3Npb25zKCk7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewog
ICAgICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2UpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmll
ZFNpbmNlLnZhbHVlKCksIHNob3VsZEdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CkBAIC0xMjI4LDYgKzEyMjksMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRD
cm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW8KICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0K
Kwordm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sK
KyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHJlc3VsdCA9IG5ldHdv
cmtTZXNzaW9uLT5oYXNJc29sYXRlZFNlc3Npb24oZG9tYWluKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXN1bHQpOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAKIGJvb2wgTmV0d29ya1Byb2Nlc3M6OnNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGZiN2E2Y2QzNmVhOWYzNTk0YTdmYjlk
ZTg1NTM1MzIzZmE4MjE3MDguLmNhYWI1YTdhNThjNjY0MGE1MTFmMDUzZWE1MmI3M2I5MThmOGJi
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTI2MCw2ICsyNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVM
b2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9u
U2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgaGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpIGNvbnN0OwogI2VuZGlmCiAKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290
UGF0aENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggNmMyODI3ZWI5ZGIxMzg4OTkzZDMwYmI5NDNkM2Q2ZWQyZTFlYWEyMi4uMjAw
NjgzYjE5Y2VkNDgzMGUyOGQyMGNhNzdhMWYyNjJmZjFhYjk1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC0xMzcsNiArMTM3LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZnJvbURv
bWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4pIC0+ICgpIEFzeW5jCiAg
ICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
ZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCisgICAgSGFz
SXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZG9tYWluKSAtPiAoYm9vbCBoYXNJc29sYXRlZFNlc3Npb24pIEFzeW5jCiAj
ZW5kaWYKIAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMyYmY0M2QyNGUwOTFmZjc2ZDlkYjhi
NzBhMTZhZTNmYTE3YjJkNTAuLjJkNWNkNjZjZTFiY2VlODM4Yjk2YTMwODU2ODM0ZTYyYTA4YWM3
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgK
QEAgLTkyLDYgKzkyLDkgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3RpY3NU
ZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5zaWdu
ZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0
b3AzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyk7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50OyB9CiAgICAgdm9pZCBzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KGJvb2wgbG9nKSB7IG1fZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCA9IGxvZzsgfQorICAgIGJvb2wgc2hv
dWxkSXNvbGF0ZVNlc3Npb25zRm9yUHJldmFsZW50VG9wRnJhbWVzKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nID09IEVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmc6OlllczsgfQor
ICAgIHZpcnR1YWwgYm9vbCBoYXNJc29sYXRlZFNlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGNs
ZWFySXNvbGF0ZWRTZXNzaW9ucygpIHsgfQogI2VuZGlmCiAgICAgdm9pZCBzdG9yZUFkQ2xpY2tB
dHRyaWJ1dGlvbihXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24mJik7CiAgICAgdm9pZCBoYW5k
bGVBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlv
bjo6Q29udmVyc2lvbiYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKQEAgLTEzMCw2ICsxMzMsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhv
c3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgeyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMg
fTsKICAgICBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIG1fZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSB7IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGU6Ok5vIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CisgICAgRW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZyBtX2VuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmcgeyBFbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nOjpObyB9OwogICAgIGJvb2wgbV9lbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50OwogI2VuZGlmCiAgICAgVW5pcXVl
UmVmPEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI+IG1fYWRDbGlja0F0dHJpYnV0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAzNTE0Y2MwZjA4M2M3ZWFjNWQxZDg2
MTNhMGVmYTVlNzJlODg3NzlkLi40MDNmOTFmYzI2Yzg5ODNhODE0NGFjMjI3MDkxYWNlMWNjNDdh
MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNTAsNyArNTAsNyBA
QCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVyczo6cHJpdmF0ZVNlc3NpbwogI2lmIFVTRShDVVJMKQogICAgICAgICAsIHsgfSwg
eyB9CiAjZW5kaWYKLSAgICAgICAgLCB7IH0sIHsgfSwgZmFsc2UsIGZhbHNlLCB7IH0sIHsgfSwg
eyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9CisgICAgICAgICwgeyB9LCB7IH0sIGZh
bHNlLCBmYWxzZSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwg
eyB9CiAgICAgfTsKIH0KIApAQCAtODQsNiArODQsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IGVuY29kZXIgPDwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czsKICAgICBlbmNvZGVyIDw8IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7
CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVz
b3VyY2U7CisgICAgZW5jb2RlciA8PCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxT
ZXNzaW9uU3dpdGNoaW5nOwogCiAgICAgZW5jb2RlciA8PCBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PDwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwg
bmV0d29ya0NhY2hlRGlyZWN0b3J5IDw8IG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKQEAgLTIwOCw2ICsyMDksMTEgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICBp
ZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmc7CisgICAgZGVjb2RlciA+PiBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nOworICAgIGlm
ICghZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZykKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKICAgICBPcHRpb25hbDxTdHJpbmc+IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9y
eTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSkKQEAgLTI2Niw2ICsyNzIsNyBAQCBP
cHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgICAgICAsIFdURk1vdmUoKmVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQpCiAgICAgICAgICwgV1RGTW92ZSgqc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgLCBXVEZN
b3ZlKCplbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKQorICAgICAgICAsIFdU
Rk1vdmUoKmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmcp
CiAgICAgICAgICwgV1RGTW92ZSgqZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQp
CiAgICAgICAgICwgV1RGTW92ZSgqYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVz
dHJpY3Rpb25zRm9yVGVzdGluZykKICAgICAgICAgLCBXVEZNb3ZlKCpyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKaW5kZXggN2E0NzQxNGI1MTFmY2Q4MDJiZWU1NzI4YjhjN2ViNDkzNzdiMTFlNi4uMTgzM2U0
NjdmZjZjNTJkMjQzOGE2NzAyYmQxNzhlNTdjNTJiNjZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuaApAQCAtODcsNiArODcsNyBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMgewogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rl
c3RpbmdFdmVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsgdHJ1ZSB9OwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSB7IGZhbHNlIH07CisgICAgYm9vbCBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nIHsgdHJ1ZSB9OwogICAgIGJvb2wg
ZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wg
YWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyB7
IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmlu
ZGV4IDVhZDIxMzQ0YTkwYTZiMTE1ZDEyYzMyNWJhM2E5ZjY4NWU3ZDA1YmYuLjQyZTdhY2U0MjRi
MmFiOGJiMDBhMzdjOTYzZWE5N2Q0NDEzMTVhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAt
MzgsNiArMzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CkBAIC0yMDUs
OSArMjA2LDE1IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShO
ZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAjZW5kaWYKIAogICAgIGJvb2wg
c2hvdWxkQmxvY2tDb29raWVzID0gZmFsc2U7CisgICAgYm9vbCBuZWVkc0lzb2xhdGVkU2Vzc2lv
biA9IGZhbHNlOworICAgIGF1dG8gZmlyc3RQYXJ0eSA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFs
U3RhdGVsZXNzQ29va2llbGVzcwotICAgICAgICB8fCAoc2Vzc2lvbi5uZXR3b3JrU3RvcmFnZVNl
c3Npb24oKSAmJiBzZXNzaW9uLm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5zaG91bGRCbG9ja0Nv
b2tpZXMocmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlEKSk7CisgICAgc2hvdWxkQmxvY2tDb29raWVz
ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3M7CisgICAgaWYgKGF1dG8qIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiA9IHNlc3Npb24ubmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKKyAg
ICAgICAgaWYgKCFzaG91bGRCbG9ja0Nvb2tpZXMpCisgICAgICAgICAgICBzaG91bGRCbG9ja0Nv
b2tpZXMgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0
LCBmcmFtZUlELCBwYWdlSUQpOworICAgICAgICBuZWVkc0lzb2xhdGVkU2Vzc2lvbiA9IHNlc3Np
b24uc2hvdWxkSXNvbGF0ZVNlc3Npb25zRm9yUHJldmFsZW50VG9wRnJhbWVzKCkgJiYgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLT5zaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQnV0S2VlcEZpcnN0
UGFydHlDb29raWVzRm9yKGZpcnN0UGFydHkpOworICAgIH0KICNlbmRpZgogICAgIHJlc3RyaWN0
UmVxdWVzdFJlZmVycmVyVG9PcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCBzaG91bGRCbG9ja0Nvb2tp
ZXMpOwogCkBAIC0yMTUsMjMgKzIyMiwyMiBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29y
a0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogICAg
IGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChu
c1JlcXVlc3QsIHNob3VsZENvbnRlbnRTbmlmZiA9PSBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQ
b2xpY3k6OlNuaWZmQ29udGVudCAmJiAhdXJsLmlzTG9jYWxGaWxlKCksIHNob3VsZENvbnRlbnRF
bmNvZGluZ1NuaWZmID09IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpT
bmlmZik7CiAKICAgICBhdXRvJiBjb2NvYVNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vz
c2lvbkNvY29hJj4oKm1fc2Vzc2lvbik7CisgICAgaWYgKG5lZWRzSXNvbGF0ZWRTZXNzaW9uKQor
ICAgICAgICBtX3Rhc2sgPSBbY29jb2FTZXNzaW9uLmlzb2xhdGVkU2Vzc2lvbihzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgZmlyc3RQYXJ0eSkgZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3Rd
OworICAgIGVsc2UKKyAgICAgICAgbV90YXNrID0gW2NvY29hU2Vzc2lvbi5zZXNzaW9uKHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5KSBkYXRhVGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdF07CiAgICAg
c3dpdGNoIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgewogICAgIGNhc2UgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZToKLSAgICAgICAgbV90YXNrID0gW2NvY29hU2Vzc2lv
bi5tX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UgZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1Jl
cXVlc3RdOwogICAgICAgICBBU1NFUlQoIWNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwV2l0aENy
ZWRlbnRpYWxzLmNvbnRhaW5zKFttX3Rhc2sgdGFza0lkZW50aWZpZXJdKSk7CiAgICAgICAgIGNv
Y29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzLmFkZChbbV90YXNrIHRhc2tJ
ZGVudGlmaWVyXSwgdGhpcyk7CiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgQ3Jl
YXRpbmcgc3RhdGVmdWwgTmV0d29ya0RhdGFUYXNrIHdpdGggVVJMICVzIiwgW21fdGFzayB0YXNr
SWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OkRvTm90VXNlOgotICAgICAgICBtX3Rhc2sgPSBbY29jb2FTZXNzaW9uLm1fc3RhdGVsZXNzU2Vz
c2lvbiBkYXRhVGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdF07CiAgICAgICAgIEFTU0VSVCghY29j
b2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBXaXRob3V0U3RhdGUuY29udGFpbnMoW21fdGFzayB0YXNr
SWRlbnRpZmllcl0pKTsKICAgICAgICAgY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBXaXRob3V0
U3RhdGUuYWRkKFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCB0aGlzKTsKICAgICAgICAgTE9HKE5l
dHdvcmtTZXNzaW9uLCAiJWxsdSBDcmVhdGluZyBzdGF0ZWxlc3MgTmV0d29ya0RhdGFUYXNrIHdp
dGggVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1
dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3M6Ci0g
ICAgICAgIGlmICghY29jb2FTZXNzaW9uLm1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nl
c3Npb24pCi0gICAgICAgICAgICBjb2NvYVNlc3Npb24uaW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRl
bGVzc0Nvb2tpZWxlc3NTZXNzaW9uKCk7Ci0gICAgICAgIG1fdGFzayA9IFtjb2NvYVNlc3Npb24u
bV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbiBkYXRhVGFza1dpdGhSZXF1ZXN0
Om5zUmVxdWVzdF07CiAgICAgICAgIEFTU0VSVCghY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBF
cGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzLmNvbnRhaW5zKFttX3Rhc2sgdGFza0lkZW50aWZp
ZXJdKSk7CiAgICAgICAgIGNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwRXBoZW1lcmFsU3RhdGVs
ZXNzQ29va2llbGVzcy5hZGQoW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHRoaXMpOwogICAgICAg
ICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IENyZWF0aW5nIGVwaGVtZXJhbCwgc3RhdGVsZXNz
LCBjb29raWVsZXNzIE5ldHdvcmtEYXRhVGFzayB3aXRoIFVSTCAlcyIsIFttX3Rhc2sgdGFza0lk
ZW50aWZpZXJdLCBuc1JlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EuaAppbmRleCA0YmFiMjNlYTg1M2NlOGFhNzJlMzhkZGZhNmY4NThhNTE1YmQ5MGIy
Li44YWY0ODUyMjkzYWE5MWZlMWI5ZDJmMjI2YjU2ZjI0MjM3MWEyNTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EuaApAQCAtMzgsNyArMzgsOSBAQCBPQkpDX0NMQVNTIFdLTmV0d29ya1Nlc3Npb25XZWJTb2Nr
ZXREZWxlZ2F0ZTsKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldFRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC04MSw2ICs4MywxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxMb2Fkc0Jsb2NrZWRCeURldmlj
ZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9hbGxM
b2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nOyB9CiAg
ICAgRE1GV2Vic2l0ZVBvbGljeU1vbml0b3IgKmRldmljZU1hbmFnZW1lbnRQb2xpY3lNb25pdG9y
KCk7CiAKKyAgICBOU1VSTFNlc3Npb24qIHNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpOworICAgIE5TVVJMU2Vzc2lvbiogaXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbik7
CisgICAgYm9vbCBoYXNJc29sYXRlZFNlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4pIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJJc29sYXRlZFNlc3Npb25zKCkg
b3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCkgb3ZlcnJpZGU7CkBAIC0xMDEsNiAr
MTA4LDE2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFz
a0lkZW50aWZpZXIsIFdlYlNvY2tldFRhc2sqPiBtX3dlYlNvY2tldERhdGFUYXNrTWFwOwogI2Vu
ZGlmCiAKKyAgICBzdHJ1Y3QgSXNvbGF0ZWRTZXNzaW9uIHsKKyAgICAgICAgUmV0YWluUHRyPE5T
VVJMU2Vzc2lvbj4gc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKKyAgICAgICAgUmV0YWlu
UHRyPFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZT4gc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFn
ZURlbGVnYXRlOworICAgICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uPiBzdGF0ZWxlc3NTZXNz
aW9uOworICAgICAgICBSZXRhaW5QdHI8V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlPiBzdGF0ZWxl
c3NTZXNzaW9uRGVsZWdhdGU7CisgICAgICAgIFdhbGxUaW1lIGxhc3RVc2VkOworICAgIH07CisK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBJc29sYXRlZFNlc3Npb24+
IG1faXNvbGF0ZWRTZXNzaW9uczsKKwogICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb24+IG1fc2Vz
c2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKICAgICBSZXRhaW5QdHI8V0tOZXR3b3JrU2Vzc2lv
bkRlbGVnYXRlPiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2VEZWxlZ2F0ZTsKICAgICBS
ZXRhaW5QdHI8TlNVUkxTZXNzaW9uPiBtX3N0YXRlbGVzc1Nlc3Npb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0KaW5kZXggMWY4ZDRjYmZjN2E1MzM4Y2YwZWY1MjRlOWE2NzU0MzFiNDAxN2ZjOS4uYTk1ZTVj
OTMxZjlmYzE1ZmQxMjg5NTlmOTM2MGVhMWU1MDgyYWU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpA
QCAtNjcsNiArNjcsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogQ0ZTdHJpbmdSZWYgY29u
c3QgV2ViS2l0MkhUVFBQcm94eURlZmF1bHRzS2V5ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KEAiV2ViS2l0MkhUVFBQcm94eSIpOwogQ0ZTdHJpbmdSZWYgY29uc3QgV2ViS2l0MkhUVFBTUHJv
eHlEZWZhdWx0c0tleSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihAIldlYktpdDJIVFRQU1By
b3h5Iik7CiAKK2NvbnN0ZXhwciB1bnNpZ25lZCBtYXhOdW1iZXJPZklzb2xhdGVkU2Vzc2lvbnMg
eyAxMCB9OworCiBzdGF0aWMgTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbiB0b05TVVJM
U2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uIGRpc3Bvc2l0
aW9uKQogewogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKQEAgLTEwMzQsNiArMTAzNiw3IEBA
IE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrCiAgICAgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gcGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9jYWxob3N0
SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzID8gU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIDog
U2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6Tm87CiAgICAgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlID0gcGFyYW1ldGVycy5lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGVidWdNb2RlID8gRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTo6WWVzIDog
RW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTo6Tm87CiAgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBwYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBtX2VuYWJsZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmcgPSBwYXJhbWV0ZXJzLmVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmcgPyBFbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nOjpZZXMgOiBFbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nOjpObzsKICAgICBzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MpOwogI2VuZGlmCiAKQEAgLTEwNjgsNiArMTA3MSw3NSBAQCB2b2lkIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OmluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vz
c2lvbigpCiAgICAgbV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbiA9IFtOU1VS
TFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24gZGVsZWdhdGU6
c3RhdGljX2Nhc3Q8aWQ+KG1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb25EZWxl
Z2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsK
IH0KIAorTlNVUkxTZXNzaW9uKiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uKFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KQoreworICAg
IHN3aXRjaCAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U6CisgICAgICAgIHJldHVybiBtX3Nlc3Npb25XaXRo
Q3JlZGVudGlhbFN0b3JhZ2UuZ2V0KCk7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6RG9Ob3RVc2U6CisgICAgICAgIHJldHVybiBtX3N0YXRlbGVzc1Nlc3Npb24u
Z2V0KCk7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1l
cmFsU3RhdGVsZXNzQ29va2llbGVzczoKKyAgICAgICAgaWYgKCFtX2VwaGVtZXJhbFN0YXRlbGVz
c0Nvb2tpZWxlc3NTZXNzaW9uKQorICAgICAgICAgICAgaW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRl
bGVzc0Nvb2tpZWxlc3NTZXNzaW9uKCk7CisgICAgICAgIHJldHVybiBtX2VwaGVtZXJhbFN0YXRl
bGVzc0Nvb2tpZWxlc3NTZXNzaW9uLmdldCgpOworICAgIH0KK30KKworTlNVUkxTZXNzaW9uKiBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjppc29sYXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4pCit7CisgICAgYXV0byBlbnRyeSA9IG1faXNv
bGF0ZWRTZXNzaW9ucy5lbnN1cmUoZmlyc3RQYXJ0eURvbWFpbiwgW3RoaXNdIHsKKyAgICAgICAg
SXNvbGF0ZWRTZXNzaW9uIG5ld0VudHJ5IHsgfTsKKyAgICAgICAgbmV3RW50cnkuc2Vzc2lvbldp
dGhDcmVkZW50aWFsU3RvcmFnZURlbGVnYXRlID0gYWRvcHROUyhbW1dLTmV0d29ya1Nlc3Npb25E
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhOZXR3b3JrU2Vzc2lvbjoqdGhpcyB3aXRoQ3JlZGVudGlh
bHM6dHJ1ZV0pOworICAgICAgICBuZXdFbnRyeS5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdl
ID0gW05TVVJMU2Vzc2lvbiBzZXNzaW9uV2l0aENvbmZpZ3VyYXRpb246bV9zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlLmdldCgpLmNvbmZpZ3VyYXRpb24gZGVsZWdhdGU6c3RhdGljX2Nhc3Q8
aWQ+KG5ld0VudHJ5LnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2VEZWxlZ2F0ZS5nZXQoKSkg
ZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsKKworICAgICAgICBu
ZXdFbnRyeS5zdGF0ZWxlc3NTZXNzaW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tOZXR3b3JrU2Vz
c2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aE5ldHdvcmtTZXNzaW9uOip0aGlzIHdpdGhDcmVk
ZW50aWFsczpmYWxzZV0pOworICAgICAgICBuZXdFbnRyeS5zdGF0ZWxlc3NTZXNzaW9uID0gW05T
VVJMU2Vzc2lvbiBzZXNzaW9uV2l0aENvbmZpZ3VyYXRpb246bV9zdGF0ZWxlc3NTZXNzaW9uLmdl
dCgpLmNvbmZpZ3VyYXRpb24gZGVsZWdhdGU6c3RhdGljX2Nhc3Q8aWQ+KG5ld0VudHJ5LnN0YXRl
bGVzc1Nlc3Npb25EZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1
ZSBtYWluUXVldWVdXTsKKworICAgICAgICByZXR1cm4gbmV3RW50cnk7CisgICAgfSkuaXRlcmF0
b3ItPnZhbHVlOworCisgICAgZW50cnkubGFzdFVzZWQgPSBXYWxsVGltZTo6bm93KCk7CisKKyAg
ICBpZiAobV9pc29sYXRlZFNlc3Npb25zLnNpemUoKSA+IG1heE51bWJlck9mSXNvbGF0ZWRTZXNz
aW9ucykgeworICAgICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBrZXlUb1JlbW92ZTsK
KyAgICAgICAgYXV0byBvbGRlc3RUaW1lc3RhbXAgPSBXYWxsVGltZTo6bm93KCk7CisgICAgICAg
IGZvciAoYXV0byYga2V5IDogbV9pc29sYXRlZFNlc3Npb25zLmtleXMoKSkgeworICAgICAgICAg
ICAgYXV0byB0aW1lc3RhbXAgPSBtX2lzb2xhdGVkU2Vzc2lvbnMuZ2V0KGtleSkubGFzdFVzZWQ7
CisgICAgICAgICAgICBpZiAodGltZXN0YW1wIDwgb2xkZXN0VGltZXN0YW1wKSB7CisgICAgICAg
ICAgICAgICAgb2xkZXN0VGltZXN0YW1wID0gdGltZXN0YW1wOworICAgICAgICAgICAgICAgIGtl
eVRvUmVtb3ZlID0ga2V5OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIExPRyhO
ZXR3b3JrU2Vzc2lvbiwgIkFib3V0IHRvIHJlbW92ZSBpc29sYXRlZCBOU1VSTFNlc3Npb24uIik7
CisgICAgICAgIG1faXNvbGF0ZWRTZXNzaW9ucy5yZW1vdmUoa2V5VG9SZW1vdmUpOworICAgIH0K
KworICAgIFJFTEVBU0VfQVNTRVJUKG1faXNvbGF0ZWRTZXNzaW9ucy5zaXplKCkgPD0gbWF4TnVt
YmVyT2ZJc29sYXRlZFNlc3Npb25zKTsKKworICAgIHN3aXRjaCAoc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U6
CisgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIlVzaW5nIGlzb2xhdGVkIE5TVVJMU2Vzc2lv
biB3aXRoIGNyZWRlbnRpYWwgc3RvcmFnZS4iKTsKKyAgICAgICAgcmV0dXJuIGVudHJ5LnNlc3Np
b25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuZ2V0KCk7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U6CisgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwg
IlVzaW5nIGlzb2xhdGVkIE5TVVJMU2Vzc2lvbiB3aXRob3V0IGNyZWRlbnRpYWwgc3RvcmFnZS4i
KTsKKyAgICAgICAgcmV0dXJuIGVudHJ5LnN0YXRlbGVzc1Nlc3Npb24uZ2V0KCk7CisgICAgY2Fz
ZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzQ29v
a2llbGVzczoKKyAgICAgICAgaWYgKCFtX2VwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNz
aW9uKQorICAgICAgICAgICAgaW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3NT
ZXNzaW9uKCk7CisgICAgICAgIHJldHVybiBtX2VwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3NT
ZXNzaW9uLmdldCgpOworICAgIH0KK30KKworYm9vbCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpoYXNJ
c29sYXRlZFNlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSBj
b25zdAoreworICAgIHJldHVybiBtX2lzb2xhdGVkU2Vzc2lvbnMuY29udGFpbnMoZG9tYWluKTsK
K30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhcklzb2xhdGVkU2Vzc2lvbnMoKQor
eworICAgIG1faXNvbGF0ZWRTZXNzaW9ucy5jbGVhcigpOworfQorCiB2b2lkIE5ldHdvcmtTZXNz
aW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5jZWwoKQogewogICAgIE5ldHdvcmtTZXNzaW9uOjpp
bnZhbGlkYXRlQW5kQ2FuY2VsKCk7CkBAIC0xMDc4LDYgKzExNTAsMTIgQEAgdm9pZCBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKICAgICBbbV9zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlRGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKICAgICBbbV9zdGF0
ZWxlc3NTZXNzaW9uRGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKICAgICBbbV9lcGhlbWVy
YWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbkRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07
CisKKyAgICBmb3IgKGF1dG8mIHNlc3Npb24gOiBtX2lzb2xhdGVkU2Vzc2lvbnMudmFsdWVzKCkp
IHsKKyAgICAgICAgW3Nlc3Npb24uc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZSBpbnZhbGlk
YXRlQW5kQ2FuY2VsXTsKKyAgICAgICAgW3Nlc3Npb24uc2Vzc2lvbldpdGhDcmVkZW50aWFsU3Rv
cmFnZURlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07CisgICAgfQorICAgIG1faXNvbGF0ZWRT
ZXNzaW9ucy5jbGVhcigpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3Jl
ZGVudGlhbHMoKQpAQCAtMTA4OSw2ICsxMTY3LDggQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29h
OjpjbGVhckNyZWRlbnRpYWxzKCkKICAgICAvLyBGSVhNRTogVXNlIHJlc2V0V2l0aENvbXBsZXRp
b25IYW5kbGVyIGluc3RlYWQuCiAgICAgbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlID0g
W05TVVJMU2Vzc2lvbiBzZXNzaW9uV2l0aENvbmZpZ3VyYXRpb246bV9zZXNzaW9uV2l0aENyZWRl
bnRpYWxTdG9yYWdlLmdldCgpLmNvbmZpZ3VyYXRpb24gZGVsZWdhdGU6c3RhdGljX2Nhc3Q8aWQ+
KG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZURlbGVnYXRlLmdldCgpKSBkZWxlZ2F0ZVF1
ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV1dOwogICAgIG1fc3RhdGVsZXNzU2Vzc2lv
biA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOm1fc3RhdGVsZXNzU2Vz
c2lvbi5nZXQoKS5jb25maWd1cmF0aW9uIGRlbGVnYXRlOnN0YXRpY19jYXN0PGlkPihtX3N0YXRl
bGVzc1Nlc3Npb25EZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1
ZSBtYWluUXVldWVdXTsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9pc29sYXRlZFNlc3Npb25z
LnZhbHVlcygpKQorICAgICAgICBlbnRyeS5zZXNzaW9uID0gW05TVVJMU2Vzc2lvbiBzZXNzaW9u
V2l0aENvbmZpZ3VyYXRpb246ZW50cnkuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uIGRlbGVn
YXRlOnN0YXRpY19jYXN0PGlkPihlbnRyeS5kZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpb
TlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCAyYmI5YWYxZDRjNTg2NWRhMWZlZjM2YmYw
Njk3YTdkZTMxOGIwOGMzLi4wMzU3MTM0ZmNlMTgxOTczMGUwOTlhY2FlMWRjOTZlNjRhOGU2OTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTE3MjMsNiAr
MTcyMywxNCBAQCBMYXp5SW1hZ2VMb2FkaW5nRW5hYmxlZDoKICAgd2ViY29yZUJpbmRpbmc6IFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMKICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAogCitJc0lUUFNl
c3Npb25Td2l0Y2hpbmdFbmFibGVkOgorICB0eXBlOiBib29sCisgIGRlZmF1bHRWYWx1ZTogdHJ1
ZQorICBodW1hblJlYWRhYmxlTmFtZTogIklUUCBTZXNzaW9uIFN3aXRjaGluZyIKKyAgaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIHNlc3Npb24gc3dpdGNoaW5nIGZvciBkb21haW5z
IGNsYXNzaWZpZWQgYnkgSVRQIgorICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJsZWRGZWF0
dXJlcworICBjYXRlZ29yeTogaW50ZXJuYWwKKwogIyBEZXByZWNhdGVkCiAKIElDRUNhbmRpZGF0
ZUZpbHRlcmluZ0VuYWJsZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCAzYzk2NjBlMmJlNTI0NmEzY2E2
YmJhNGViOGZhMmViODAzMTNhNmQzLi45NmIyMzM3NDJjMDlhYjYzM2RlZWQ0Mzk0NzkwZmUxYTQz
NmIyZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQ3Miw2ICs0NzIsMTcgQEAgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG8KICNlbmRpZgogfQogCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NIYXNJc29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
V0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc0hhc0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKQoreworI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2td
KGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKSB7CisgICAgICAgIGNhbGxiYWNrKGhhc0lzb2xhdGVk
U2Vzc2lvbiwgY29udGV4dCk7CisgICAgfSk7CisjZWxzZQorICAgIGNhbGxiYWNrKGZhbHNlLCBj
b250ZXh0KTsKKyNlbmRpZgorfQorCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKaW5kZXggYzc2ZWIyZDRkNzQ5OGJjY2MxMmMz
ZDVkMmFiYzhiOTE4YjhjZDJkZi4uY2RlMTRjYTg2N2UwN2MyNzQ1OGFhMjY1MDE3ZjcxYWFjOWQw
ZmM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmgKQEAgLTEwMyw2ICsxMDMsOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24pKGJvb2wgaGFz
TG9jYQogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2Fs
U3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBo
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxT
dG9yYWdlRnVuY3Rpb24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29u
dGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2Fj
aGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNl
Y29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNo
ZU1heEFnZUNhcEZ1bmN0aW9uKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25GdW5jdGlvbikoYm9vbCBoYXNJc29sYXRlZFNlc3Np
b24sIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25GdW5jdGlvbiBjYWxsYmFjayk7CiB0
eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9u
SGFuZGxlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDBkM2QwM2NlZWQ4MzEzYmNhMjdiMzkxNWFj
MzdjZTZlM2VkNzMwOTkuLjk0ZmFmNmI5ZGUyNjIwMWQ4NGQyNmZmODM5MzNmODIyOWMwNWQ2Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtOTc0LDYgKzk3NCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOgogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc0lzb2xhdGVk
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpIYXNJc29sYXRlZFNlc3Npb24o
c2Vzc2lvbklELCBkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNl
bmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
aW5kZXggMzViODIxM2MyOGZjYjZiOTQwYTEwOTliZTE0MDhmOTA2YTNiOTJiYi4uNDMzNTQ1YzBl
MzNmYWFlZWQ5ZGViYjM0ZjZiMjBjZmNhZTVlOTVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE1MCw2ICsx
NTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNv
cmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhSW5V
SVByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFZlY3Rv
cjxSZWdpc3RyYWJsZURvbWFpbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOworICAgIHZvaWQgaGFzSXNvbGF0ZWRTZXNz
aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NSZWFkeVRv
U3VzcGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGE2ODM2
ZDkyNTE2MzJiODE4NTUzMTZiNmRjNGVhNzhmZjgxY2I2YjYuLmJhOWZjY2ViOTgzZDVhYzJiY2Rk
MWMyYWQ4MzQ2YmNkMTQ1ZDg1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudUNvY29h
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL0Zp
bGVTeXN0ZW0uaD4KQEAgLTY2LDYgKzY3LDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1
bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXTsKICAgICBib29sIHNo
b3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7CisgICAgYm9vbCBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nID0gV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pc0lUUFNlc3Npb25Td2l0Y2hpbmdFbmFi
bGVkKCk7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUg
PSBbZGVmYXVsdHMgYm9vbEZvcktleTpAIklUUERlYnVnTW9kZSJdOwpAQCAtMTM3LDYgKzEzOSw3
IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRl
cnMoKQogICAgICAgICBmYWxzZSwKICAgICAgICAgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVz
b3VyY2VMb2FkU3RhdGlzdGljcywKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZSwKKyAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vz
c2lvblN3aXRjaGluZywKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5kZXZpY2VNYW5hZ2VtZW50
UmVzdHJpY3Rpb25zRW5hYmxlZCgpLAogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPmFsbExvYWRz
QmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoKSwKICAgICAg
ICAgV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2Up
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAppbmRleCA5NGM0ZDU5OGI2MDM3YTY5OTcxMmQxN2I5ZmE3YzVlYjE2
NGE2YzU4Li4wMjU4N2IxOWUxOTRlNjFkZjMxZTMxMWM4NjJhZGIxY2ZiYzFjYmQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcApAQCAtMTY4NCw2ICsxNjg0LDE4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
aGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRs
CiAgICAgfQogICAgIEFTU0VSVCghY29tcGxldGlvbkhhbmRsZXIpOwogfQorCit2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6Omhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoY29uc3QgVVJMJiB1cmws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0
Cit7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAg
ICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vz
cygpKSB7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+aGFzSXNvbGF0ZWRTZXNzaW9uKG1f
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICBBU1NFUlQocHJvY2Vzc1Bvb2xzKCkuc2l6
ZSgpID09IDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNT
RVJUKCFjb21wbGV0aW9uSGFuZGxlcik7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBmMmZhNDE2ZDFm
YjkyMjRjNmZiODVkYWJjOWZiMTYwNTIxMDJhNDE4Li42NmYzNTZhYmQ4NmI3Zjk2MDM0MGI4YjY5
ZDMzZGE2YzA5YmRmZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xNzksNiArMTc5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JUZXN0aW5nKGNvbnN0IFVSTCYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGhhc0xvY2FsU3RvcmFnZUZvclRlc3Rp
bmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7Cisg
ICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb25Gb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OwogI2VuZGlmCiAgICAgdm9pZCBzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRmYTdhOTRjZjAxNDgxYjMzZDYyNTk2
ZTQwYjM3ODBmY2ZhYjAxZTYuLmQ3YTE3OTU1ZmQ3NTFiMjliNDI0Y2MxZjE1NTI4MTYxZWI4ZTQz
ZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNCBAQAorMjAxOS0wOC0xMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IFN3aXRjaCBOU1VSTFNl
c3Npb24gb24gdG9wIG5hdmlnYXRpb24gdG8gcHJldmFsZW50IHJlc291cmNlIHdpdGggdXNlciBp
bnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNjQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Mzk2MjA3Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGVz
dCBpbmZyYXN0cnVjdHVyZSB0byBxdWVyeSB3aGV0aGVyIGFuIG9yaWdpbiBoYXMgYW4KKyAgICAg
ICAgaXNvbGF0ZWQgTlNVUkxTZXNzaW9uIG9yIG5vdC4KKworICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6aGFzU3RhdGlzdGljc0lzb2xhdGVkU2Vzc2lvbik6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpoYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOS0w
OC0xMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBt
dWx0aXBhcmFtZXRlciBvdmVybG9hZHMgb2YgYXBwZW5kKCkgaW4gU3RyaW5nQnVpbGRlciBhcyBh
IGZpcnN0IHN0ZXAgdG93YXJkIHN0YW5kYXJkaXppbmdpbmcgb24gdGhlIGZsZXhpYmxlQXBwZW5k
KCkgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDBhZWI5M2Ux
OTEwNzM3ZTcwMDIzZDE5NjljZWQyNzg5ZDI2ZDk4MjUuLmFjZWVkNDBmMmIyNjZiYWYwMGRmNGZi
NWM5NWY5MGVkY2RmMDg2MjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzMzLDYg
KzMzMyw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICBib29sZWFuIGlzU3RhdGlzdGlj
c0hhc0xvY2FsU3RvcmFnZShET01TdHJpbmcgaG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlz
dGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlKG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgYm9v
bGVhbiBoYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKERPTVN0cmluZyBob3N0TmFtZSk7CiAK
ICAgICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCiAgICAgdm9pZCBpbnN0YWxsVGV4
dERpZENoYW5nZUluVGV4dEZpZWxkQ2FsbGJhY2sob2JqZWN0IGNhbGxiYWNrKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmlu
ZGV4IDU5ZjI1YzFiYmFjNmVkODllOTRjZmE4OGE5YWZmYzAzZmI3MjRhMTguLjM3MjllMDVhOWI3
YmM1OTEwYjA5OTgwOWU4NmYwYTcyZmE1Y2ZjOTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjA2Niw2ICsyMDY2
LDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJs
ZSBzZWNvbmRzKQogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9k
eS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK2Jvb2wgVGVzdFJ1bm5lcjo6aGFzU3RhdGlzdGljc0lz
b2xhdGVkU2Vzc2lvbihKU1N0cmluZ1JlZiBob3N0TmFtZSkKK3sKKyAgICBhdXRvIG1lc3NhZ2VO
YW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSGFzU3RhdGlzdGlj
c0lzb2xhdGVkU2Vzc2lvbiIpKTsKKyAgICBhdXRvIG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkpOworICAgIFdLVHlwZVJlZiByZXR1cm5E
YXRhID0gbnVsbHB0cjsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9y
VGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgJnJldHVybkRhdGEpOworICAgIEFTU0VS
VChXS0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAg
cmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVm
PihyZXR1cm5EYXRhKSkuZ2V0KCkpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3ND
YWxsQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsQ2FsbGJhY2soKQogewogICAgIGNhbGxU
ZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZENsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVt
b3ZhbENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA3ZTg1ODhlY2EzMTdiZjg0NjBjZGNhYTc0Njg5NjI0
NWExODkxZWQzLi5jYWZlNzc2Y2E4OWI0NWU5NzRlNGNiNzc4MjhjZDg5ZGZlNjY1NDkwIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aApAQCAtNDMxLDYgKzQzMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsQ2xl
YXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsQ2FsbGJhY2soKTsKICAgICBib29sIGlzU3RhdGlz
dGljc0hhc0xvY2FsU3RvcmFnZShKU1N0cmluZ1JlZiBob3N0TmFtZSk7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpOworICAgIGJvb2wgaGFzU3Rh
dGlzdGljc0lzb2xhdGVkU2Vzc2lvbihKU1N0cmluZ1JlZiBob3N0TmFtZSk7CiAgICAgdm9pZCBz
dGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5k
bGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNh
bGxiYWNrKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggMTY1NDYyOWNhYTZmNmQ4Yzg5NDU0ODM1MWMwYzhmYjBhMzMzMzcyYS4uOGZlZDU5MjU1OGYx
YzYwMjJlZDEzOWUwYzhjODJlZWEyNGRhNTVhYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTM1MTEsNiArMzUxMSwxNSBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpCiAgICAgcnVu
VW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOwogfQogCitib29sIFRlc3RDb250cm9sbGVy
OjpoYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKFdLU3RyaW5nUmVmIGhvc3QpCit7CisgICAg
YXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNv
bnRleHQoKSk7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQo
KnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Np
b24oZGF0YVN0b3JlLCBob3N0LCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzQm9vbGVhblJl
c3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7Cisg
ICAgcmV0dXJuIGNvbnRleHQucmVzdWx0OworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0
aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0g
V0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYzhmZTRlNWE4YjU5YmI0ZWZhYzRj
NWUxYTZhMjk4NzZjYTg5Y2ZmZi4uOGUxMTE5N2I5NzJiYzMzNmFkNmIyMmVjMjYxNzBkMDcwYTMy
ZWFmOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjQ0LDYg
KzI0NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9z
dChXS1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogICAgIGJv
b2wgaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CisgICAg
Ym9vbCBoYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsK
ICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKICAgICB2b2lk
IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCmluZGV4IDEwNzNhYjE1MWEwZTM1NDlhNDEyYTVkMjVmNTRmN2IxYjRl
OWRjYjguLjRkNTllODM2NzdhYTkwMmZjNTgwMzQwM2UxOTJjMGI0MDcxZjljOGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNDYyLDYgKzE0NjIsMTUg
QEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJI
YXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlw
ZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKTsKKyAgICAgICAgCisgICAg
ICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KG1lc3Nh
Z2VCb2R5KTsKKyAgICAgICAgYm9vbCBoYXNJc29sYXRlZFNlc3Npb24gPSBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuaGFzU3RhdGlzdGljc0lzb2xhdGVkU2Vzc2lvbihob3N0TmFtZSk7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaGFzSXNvbGF0ZWRT
ZXNzaW9uKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiUmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzIikpIHsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJl
bW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA2MGRkYTVkYjZhMjAwYWQzMjE5ODhhNTg2NzM4MzEwZGJkMTZmNzFhLi41ZGJmYTBlNzlj
NWEwOTdkM2YyNDU5MWE1ZjYxYzBmYTgwNWFhYTg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTktMDgtMTIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBTd2l0Y2ggTlNVUkxTZXNzaW9uIG9uIHRvcCBuYXZp
Z2F0aW9uIHRvIHByZXZhbGVudCByZXNvdXJjZSB3aXRoIHVzZXIgaW50ZXJhY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDY0MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTM5NjIwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQt
aW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24t
dG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmln
YXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3dpdGNoLXNlc3Np
b24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1pbnRlcmFjdGlvbi5odG1sOiBBZGRl
ZC4KKwogMjAxOS0wOC0xMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGEgdGVzdCB0byBlbnN1cmUgdGhhdCB3ZSBkaXNwYXRjaCBrZXlkb3duIGFuZCBr
ZXl1cCBldmVudHMgd2hlbiBtdWx0aXBsZSBrZXlzIGFyZSBwcmVzc2VkIGF0IHRoZSBzYW1lIHRp
bWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9kby1ub3Qtc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0
aG91dC1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24t
dG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQwNWRjMDliNjk2MzlmMWQ5MGM2YzM3YzIyZWQxYjk2Zjg2MWM0NDkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90
LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJh
Y3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRoYXQgdGhlIHNlc3Np
b24gaXMgbm90IHN3aXRjaGVkIHVwb24gdG9wIGZyYW1lIG5hdmlnYXRpb24gdG8gYSBwcmV2YWxl
bnQgcmVzb3VyY2Ugd2l0aG91dCB1c2VyIGludGVyYWN0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tp
ZS4KK1BBU1MgU2hvdWxkIGhhdmUgYW5kIGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuCitQQVNT
IE9yaWdpbiBoYXMgbm8gaXNvbGF0ZWQgc2Vzc2lvbi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5h
dmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50ZXJhY3Rpb24uaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1ub3Qtc3dpdGNoLXNlc3Np
b24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aG91dC1pbnRlcmFjdGlvbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjliNmZjZTNmNTI4NTUzY2Y2N2Q5MWM0MWIyZDIyYzk3NGIzOTU5ZjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZG8tbm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhv
dXQtaW50ZXJhY3Rpb24uaHRtbApAQCAtMCwwICsxLDEwOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAg
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMg
dGhhdCB0aGUgc2Vzc2lvbiBpcyBub3Qgc3dpdGNoZWQgdXBvbiB0b3AgZnJhbWUgbmF2aWdhdGlv
biB0byBhIHByZXZhbGVudCByZXNvdXJjZSB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24uIik7Cisg
ICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBwcmV2YWxlbnRPcmlnaW4gPSAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBub25QcmV2YWxlbnRPcmlnaW4gPSAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCBzZXNzaW9uQ29va2llTmFtZSA9ICJz
ZXNzaW9uQ29va2llIjsKKyAgICBjb25zdCBwZXJzaXN0ZW50Q29va2llTmFtZSA9ICJwZXJzaXN0
ZW50Q29va2llIjsKKyAgICBjb25zdCB0d29NaW51dGVzSW5TZWNvbmRzID0gMTIwOworCisgICAg
ZnVuY3Rpb24gc2V0U2Vzc2lvbkNvb2tpZSgpIHsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0g
c2Vzc2lvbkNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LyI7CisgICAgfQorCisgICAgZnVuY3Rpb24g
c2V0UGVyc2lzdGVudENvb2tpZSgpIHsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gcGVyc2lz
dGVudENvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsgTWF4LUFnZT0iICsgdHdvTWludXRlc0luU2Vj
b25kcyArICI7IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoc2hvdWxkSGF2
ZVNlc3Npb25Db29raWUsIHNob3VsZEhhdmVQZXJzaXN0ZW50Q29va2llKSB7CisgICAgICAgIGxl
dCBoYXNTZXNzaW9uQ29va2llID0gKGRvY3VtZW50LmNvb2tpZSArICIiKS5pbmNsdWRlcyhzZXNz
aW9uQ29va2llTmFtZSksCisgICAgICAgICAgICBoYXNQZXJzaXN0ZW50Q29va2llID0gKGRvY3Vt
ZW50LmNvb2tpZSArICIiKS5pbmNsdWRlcyhwZXJzaXN0ZW50Q29va2llTmFtZSk7CisKKyAgICAg
ICAgaWYgKHNob3VsZEhhdmVTZXNzaW9uQ29va2llICYmIGhhc1Nlc3Npb25Db29raWUpCisgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tp
ZS4iKTsKKyAgICAgICAgZWxzZSBpZiAoc2hvdWxkSGF2ZVNlc3Npb25Db29raWUgJiYgIWhhc1Nl
c3Npb25Db29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNob3VsZCBoYXZlIGJ1dCBk
b2Vzbid0IGhhdmUgdGhlIHNlc3Npb24gY29va2llLiIpOworICAgICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSBlbHNlIGlmICghc2hvdWxk
SGF2ZVNlc3Npb25Db29raWUgJiYgaGFzU2Vzc2lvbkNvb2tpZSkgeworICAgICAgICAgICAgdGVz
dEZhaWxlZCgiU2hvdWxkbid0IGhhdmUgYnV0IGhhcyB0aGUgc2Vzc2lvbiBjb29raWUuIik7Cisg
ICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNob3VsZG4ndCBoYXZlIGFuZCBkb2Vz
bid0IGhhdmUgdGhlIHNlc3Npb24gY29va2llLiIpOworCisKKyAgICAgICAgaWYgKHNob3VsZEhh
dmVQZXJzaXN0ZW50Q29va2llICYmIGhhc1BlcnNpc3RlbnRDb29raWUpCisgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsK
KyAgICAgICAgZWxzZSBpZiAoc2hvdWxkSGF2ZVBlcnNpc3RlbnRDb29raWUgJiYgIWhhc1BlcnNp
c3RlbnRDb29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNob3VsZCBoYXZlIGJ1dCBk
b2Vzbid0IGhhdmUgdGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAgICAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSBlbHNlIGlmICghc2hv
dWxkSGF2ZVBlcnNpc3RlbnRDb29raWUgJiYgaGFzUGVyc2lzdGVudENvb2tpZSkgeworICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkbid0IGhhdmUgYnV0IGhhcyB0aGUgcGVyc2lzdGVudCBj
b29raWUuIik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rl
c3QpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNob3VsZG4ndCBo
YXZlIGFuZCBkb2Vzbid0IGhhdmUgdGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHN3aXRjaCAoZG9jdW1lbnQubG9jYXRp
b24uaGFzaCkgeworICAgICAgICAgICAgY2FzZSAiI3N0ZXAxIjoKKyAgICAgICAgICAgICAgICBz
ZXRTZXNzaW9uQ29va2llKCk7CisgICAgICAgICAgICAgICAgc2V0UGVyc2lzdGVudENvb2tpZSgp
OworICAgICAgICAgICAgICAgIGNoZWNrQ29va2llcyh0cnVlLCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICBpZiAodGVzdFJ1bm5lci5oYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKHByZXZhbGVu
dE9yaWdpbikpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiT3JpZ2luIGhhcyBp
c29sYXRlZCBzZXNzaW9uLiIpOworICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJPcmlnaW4gaGFzIG5vIGlzb2xhdGVkIHNlc3Npb24uIik7
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IG5vblByZXZhbGVudE9y
aWdpbiArICIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1ub3Qtc3dpdGNoLXNlc3Npb24tb24t
bmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aG91dC1pbnRlcmFjdGlvbi5odG1sI3N0ZXAyIjsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMiI6CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMyI7CisgICAgICAgICAg
ICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbiAhPT0gbm9uUHJldmFsZW50T3JpZ2lu
KQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTdGVwIDIgaXMgbm90IG9uICIgKyBu
b25QcmV2YWxlbnRPcmlnaW4gKyAiLiIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHByZXZhbGVudE9yaWdpbiwgdHJ1ZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZShwcmV2YWxlbnRPcmlnaW4pKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKHByZXZhbGVudE9yaWdpbiArICIgZGlkIG5vdCBnZXQgc2V0IGFzIHBy
ZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmco
cnVuVGVzdCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlICIjc3RlcDMiOgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0
aW9uLmhyZWYgPSBwcmV2YWxlbnRPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8t
bm90LXN3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGhvdXQtaW50
ZXJhY3Rpb24uaHRtbCNzdGVwNCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlICIjc3RlcDQiOgorICAgICAgICAgICAgICAgIGNoZWNrQ29va2llcyh0cnVlLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5oYXNTdGF0aXN0aWNzSXNvbGF0ZWRT
ZXNzaW9uKHByZXZhbGVudE9yaWdpbikpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ik9yaWdpbiBoYXMgaXNvbGF0ZWQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIk9yaWdpbiBoYXMgbm8gaXNvbGF0ZWQgc2Vz
c2lvbi4iKTsKKyAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hK
U1Rlc3QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGhhc2guIik7CisgICAgICAgICAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgeworICAgICAgICBp
ZiAoZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luICE9PSBwcmV2YWxlbnRPcmlnaW4pCisgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJUZXN0IGlzIG5vdCBzdGFydGluZyBvdXQgb24gIiArIHByZXZhbGVu
dE9yaWdpbiArICIuIik7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UocHJldmFsZW50T3JpZ2luKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKHByZXZh
bGVudE9yaWdpbiArICIgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJlZm9y
ZSB0aGUgdGVzdCBzdGFydHMuIik7CisgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNo
ID0gInN0ZXAxIjsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1pbnRl
cmFjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0
aC1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQzOTIyZmQ5M2YxYTU0NDRm
MmNiMDY4ODRlZmMzMjkwYmFlNTFmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0
aW9uLXRvLXByZXZhbGVudC13aXRoLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEyIEBACitUZXN0cyB0aGF0IHRoZSBzZXNzaW9uIGlzIHN3aXRjaGVkIHVwb24gdG9wIGZyYW1l
IG5hdmlnYXRpb24gdG8gYSBwcmV2YWxlbnQgcmVzb3VyY2Ugd2l0aCB1c2VyIGludGVyYWN0aW9u
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTaG91bGQgaGF2ZSBhbmQg
aGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4KK1BBU1MgU2hvdWxkIGhhdmUgYW5kIGhhcyB0aGUgcGVy
c2lzdGVudCBjb29raWUuCitQQVNTIE9yaWdpbiBoYXMgaXNvbGF0ZWQgc2Vzc2lvbi4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3dpdGNoLXNl
c3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1pbnRlcmFjdGlvbi5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNz
aW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rpb24uaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YWJmN2U1ZmI3ZTMzYmZjMzEwMjM5MmIwMjE1Y2FhNWNjYWMzOWJmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rp
b24uaHRtbApAQCAtMCwwICsxLDExMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJl
biI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgc2Vz
c2lvbiBpcyBzd2l0Y2hlZCB1cG9uIHRvcCBmcmFtZSBuYXZpZ2F0aW9uIHRvIGEgcHJldmFsZW50
IHJlc291cmNlIHdpdGggdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgIGNvbnN0IHByZXZhbGVudE9yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiOworICAgIGNvbnN0IG5vblByZXZhbGVudE9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0Ojgw
MDAiOworICAgIGNvbnN0IHNlc3Npb25Db29raWVOYW1lID0gInNlc3Npb25Db29raWUiOworICAg
IGNvbnN0IHBlcnNpc3RlbnRDb29raWVOYW1lID0gInBlcnNpc3RlbnRDb29raWUiOworICAgIGNv
bnN0IHR3b01pbnV0ZXNJblNlY29uZHMgPSAxMjA7CisKKyAgICBmdW5jdGlvbiBzZXRTZXNzaW9u
Q29va2llKCkgeworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBzZXNzaW9uQ29va2llTmFtZSAr
ICI9MTsgcGF0aD0vIjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRQZXJzaXN0ZW50Q29va2ll
KCkgeworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBwZXJzaXN0ZW50Q29va2llTmFtZSArICI9
MTsgcGF0aD0vOyBNYXgtQWdlPSIgKyB0d29NaW51dGVzSW5TZWNvbmRzICsgIjsiOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcyhzaG91bGRIYXZlU2Vzc2lvbkNvb2tpZSwgc2hv
dWxkSGF2ZVBlcnNpc3RlbnRDb29raWUpIHsKKyAgICAgICAgbGV0IGhhc1Nlc3Npb25Db29raWUg
PSAoZG9jdW1lbnQuY29va2llICsgIiIpLmluY2x1ZGVzKHNlc3Npb25Db29raWVOYW1lKSwKKyAg
ICAgICAgICAgIGhhc1BlcnNpc3RlbnRDb29raWUgPSAoZG9jdW1lbnQuY29va2llICsgIiIpLmlu
Y2x1ZGVzKHBlcnNpc3RlbnRDb29raWVOYW1lKTsKKworICAgICAgICBpZiAoc2hvdWxkSGF2ZVNl
c3Npb25Db29raWUgJiYgaGFzU2Vzc2lvbkNvb2tpZSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQo
IlNob3VsZCBoYXZlIGFuZCBoYXMgdGhlIHNlc3Npb24gY29va2llLiIpOworICAgICAgICBlbHNl
IGlmIChzaG91bGRIYXZlU2Vzc2lvbkNvb2tpZSAmJiAhaGFzU2Vzc2lvbkNvb2tpZSkgeworICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGhhdmUgYnV0IGRvZXNuJ3QgaGF2ZSB0aGUgc2Vz
c2lvbiBjb29raWUuIik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5p
c2hKU1Rlc3QpOworICAgICAgICB9IGVsc2UgaWYgKCFzaG91bGRIYXZlU2Vzc2lvbkNvb2tpZSAm
JiBoYXNTZXNzaW9uQ29va2llKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGRuJ3Qg
aGF2ZSBidXQgaGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJs
ZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiU2hvdWxkbid0IGhhdmUgYW5kIGRvZXNuJ3QgaGF2ZSB0aGUgc2Vzc2lv
biBjb29raWUuIik7CisKKworICAgICAgICBpZiAoc2hvdWxkSGF2ZVBlcnNpc3RlbnRDb29raWUg
JiYgaGFzUGVyc2lzdGVudENvb2tpZSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNob3VsZCBo
YXZlIGFuZCBoYXMgdGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAgICAgICBlbHNlIGlmIChz
aG91bGRIYXZlUGVyc2lzdGVudENvb2tpZSAmJiAhaGFzUGVyc2lzdGVudENvb2tpZSkgeworICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGhhdmUgYnV0IGRvZXNuJ3QgaGF2ZSB0aGUgcGVy
c2lzdGVudCBjb29raWUuIik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBm
aW5pc2hKU1Rlc3QpOworICAgICAgICB9IGVsc2UgaWYgKCFzaG91bGRIYXZlUGVyc2lzdGVudENv
b2tpZSAmJiBoYXNQZXJzaXN0ZW50Q29va2llKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJT
aG91bGRuJ3QgaGF2ZSBidXQgaGFzIHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICAgICAg
ICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiU2hvdWxkbid0IGhhdmUgYW5kIGRvZXNuJ3QgaGF2
ZSB0aGUgcGVyc2lzdGVudCBjb29raWUuIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAg
ICAgICBjYXNlICIjc3RlcDEiOgorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihwcmV2YWxlbnRPcmlnaW4sIHRydWUsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgICAgICBzZXRTZXNzaW9uQ29va2llKCk7CisgICAgICAgICAg
ICAgICAgICAgIHNldFBlcnNpc3RlbnRDb29raWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2hl
Y2tDb29raWVzKHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5l
ci5oYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKHByZXZhbGVudE9yaWdpbikpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk9yaWdpbiBoYXMgaXNvbGF0ZWQgc2Vzc2lv
bi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZp
bmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiT3JpZ2luIGhhcyBubyBpc29sYXRlZCBzZXNzaW9uLiIpOwor
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gbm9uUHJldmFsZW50
T3JpZ2luICsgIi9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmln
YXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rpb24uaHRtbCNzdGVwMiI7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIj
c3RlcDIiOgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDMi
OworICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gIT09IG5vblBy
ZXZhbGVudE9yaWdpbikKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3RlcCAyIGlz
IG5vdCBvbiAiICsgbm9uUHJldmFsZW50T3JpZ2luICsgIi4iKTsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShwcmV2YWxlbnRPcmlnaW4s
IHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UocHJldmFsZW50T3JpZ2luKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChwcmV2YWxlbnRPcmlnaW4gKyAiIGRpZCBub3Qg
Z2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNv
b2tpZUJsb2NraW5nKHJ1blRlc3QpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAzIjoKKyAgICAgICAgICAgICAgICBk
b2N1bWVudC5sb2NhdGlvbi5ocmVmID0gcHJldmFsZW50T3JpZ2luICsgIi9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgt
aW50ZXJhY3Rpb24uaHRtbCNzdGVwNCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlICIjc3RlcDQiOgorICAgICAgICAgICAgICAgIGNoZWNrQ29va2llcyh0cnVlLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5oYXNTdGF0aXN0aWNzSXNvbGF0
ZWRTZXNzaW9uKHByZXZhbGVudE9yaWdpbikpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIk9yaWdpbiBoYXMgaXNvbGF0ZWQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk9yaWdpbiBoYXMgbm8gaXNvbGF0ZWQg
c2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5p
c2hKU1Rlc3QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGhhc2guIik7CisgICAgICAgICAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgeworICAgICAg
ICBpZiAoZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luICE9PSBwcmV2YWxlbnRPcmlnaW4pCisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJUZXN0IGlzIG5vdCBzdGFydGluZyBvdXQgb24gIiArIHByZXZh
bGVudE9yaWdpbiArICIuIik7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UocHJldmFsZW50T3JpZ2luKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKHBy
ZXZhbGVudE9yaWdpbiArICIgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJl
Zm9yZSB0aGUgdGVzdCBzdGFydHMuIik7CisgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5o
YXNoID0gInN0ZXAxIjsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>