<?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>225519</bug_id>
          
          <creation_ts>2021-05-07 09:58:04 -0700</creation_ts>
          <short_desc>[Cocoa] _WKAuthenticatorAssertionResponse should specify the attachment type used</short_desc>
          <delta_ts>2021-06-02 09:42:37 -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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>garrett_davidson</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1757903</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-05-07 09:58:04 -0700</bug_when>
    <thetext>Include context about whether the _WKAuthenticatorAssertionResponse came from the platform authenticator or a security key.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757904</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-05-07 10:00:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/76554090&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757907</commentid>
    <comment_count>2</comment_count>
      <attachid>428007</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-05-07 10:15:45 -0700</bug_when>
    <thetext>Created attachment 428007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758054</commentid>
    <comment_count>3</comment_count>
      <attachid>428007</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-05-07 15:42:08 -0700</bug_when>
    <thetext>Comment on attachment 428007
Patch

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

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAssertionResponse.h:40
&gt; +    static Ref&lt;AuthenticatorAssertionResponse&gt; create(Ref&lt;ArrayBuffer&gt;&amp;&amp; rawId, Ref&lt;ArrayBuffer&gt;&amp;&amp; authenticatorData, Ref&lt;ArrayBuffer&gt;&amp;&amp; signature, RefPtr&lt;ArrayBuffer&gt;&amp;&amp; userHandle, Optional&lt;AuthenticationExtensionsClientOutputs&gt;&amp;&amp;, AuthenticatorResponse::Attachment);

This is only used in the Web API. No need to add attachment to it.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.h:36
&gt; +    static Ref&lt;AuthenticatorAttestationResponse&gt; create(Ref&lt;ArrayBuffer&gt;&amp;&amp; rawId, Ref&lt;ArrayBuffer&gt;&amp;&amp; attestationObject, AuthenticatorResponse::Attachment);

Ditto.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorCoordinator.cpp:194
&gt; +        if (auto response = AuthenticatorResponse::tryCreate(WTFMove(data), AuthenticatorResponse::Attachment::CrossPlatform)) {

You cannot assume this.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorCoordinator.cpp:265
&gt; +        if (auto response = AuthenticatorResponse::tryCreate(WTFMove(data), AuthenticatorResponse::Attachment::CrossPlatform)) {

Ditto.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponse.cpp:37
&gt; +RefPtr&lt;AuthenticatorResponse&gt; AuthenticatorResponse::tryCreate(AuthenticatorResponseData&amp;&amp; data, Attachment attachment)

It&apos;s only used in the Web API. No need for this.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponse.cpp:88
&gt; +AuthenticatorResponse::Attachment AuthenticatorResponse::attachment() const

You can do it in the header.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponse.h:46
&gt; +    enum class Attachment {

Instead of making a new enum, use WebCore::AuthenticatorAttachment.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponse.h:71
&gt; +    Attachment m_attachment;

This is only for the SPI not the Web API. Let&apos;s make it Optional such that it&apos;s not necessary to serialize it back to the web process.

&gt; Source/WebCore/Modules/webauthn/fido/DeviceResponseConverter.cpp:139
&gt; +    return AuthenticatorAttestationResponse::create(credentialId, *attestationObject, AuthenticatorResponse::Attachment::CrossPlatform);

Add a new parameter to this function and do it in the Authenticator layer. It&apos;s not guaranteed that only external authenticators will use this function.

&gt; Source/WebCore/Modules/webauthn/fido/DeviceResponseConverter.cpp:176
&gt; +        response = AuthenticatorAssertionResponse::create(credentialId, authData, signature, userHandle, AuthenticatorResponse::Attachment::CrossPlatform);

Ditto.

&gt; Source/WebCore/Modules/webauthn/fido/DeviceResponseConverter.cpp:192
&gt; +        response = AuthenticatorAssertionResponse::create(credentialId, authData, signature, { }, AuthenticatorResponse::Attachment::CrossPlatform);

Ditto.

&gt; Source/WebCore/Modules/webauthn/fido/U2fResponseConverter.cpp:170
&gt; +    return AuthenticatorAttestationResponse::create(credentialId, attestationObject, AuthenticatorResponse::Attachment::CrossPlatform);

Ditto.

&gt; Source/WebCore/Modules/webauthn/fido/U2fResponseConverter.cpp:190
&gt; +    return AuthenticatorAssertionResponse::create(keyHandle, authData, signature, { }, AuthenticatorResponse::Attachment::CrossPlatform);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764127</commentid>
    <comment_count>4</comment_count>
      <attachid>429816</attachid>
    <who name="Garrett Davidson">garrett_davidson</who>
    <bug_when>2021-05-26 17:00:52 -0700</bug_when>
    <thetext>Created attachment 429816
Updated patch to replace the current one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764573</commentid>
    <comment_count>5</comment_count>
      <attachid>429952</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-05-27 16:36:31 -0700</bug_when>
    <thetext>Created attachment 429952
Garrett&apos;s Patch (Rebaselined)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764578</commentid>
    <comment_count>6</comment_count>
      <attachid>429952</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-05-27 16:41:23 -0700</bug_when>
    <thetext>Comment on attachment 429952
Garrett&apos;s Patch (Rebaselined)

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

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAssertionResponse.h:40
&gt; +    static Ref&lt;AuthenticatorAssertionResponse&gt; create(Ref&lt;ArrayBuffer&gt;&amp;&amp; rawId, Ref&lt;ArrayBuffer&gt;&amp;&amp; authenticatorData, Ref&lt;ArrayBuffer&gt;&amp;&amp; signature, RefPtr&lt;ArrayBuffer&gt;&amp;&amp; userHandle, Optional&lt;AuthenticationExtensionsClientOutputs&gt;&amp;&amp;, AuthenticatorAttachment);

Jiewen pointed out this is only used by the WebAPI -- is there any reason to keep the unused AuthenticatorAttachment argument?

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.h:36
&gt; +    static Ref&lt;AuthenticatorAttestationResponse&gt; create(Ref&lt;ArrayBuffer&gt;&amp;&amp; rawId, Ref&lt;ArrayBuffer&gt;&amp;&amp; attestationObject, AuthenticatorAttachment);

Ditto.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponse.cpp:90
&gt; +    return m_attachment;

Jiewen suggested you move this to the header: Any reason not to?

&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponse.h:67
&gt; +    AuthenticatorAttachment m_attachment;

You didn&apos;t address Jiewen&apos;s comment that this isn&apos;t needed in the Web layer, so serializing it back/forth to the WebContent process seems wasteful. Can we make it Optional&lt;&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764587</commentid>
    <comment_count>7</comment_count>
    <who name="Garrett Davidson">garrett_davidson</who>
    <bug_when>2021-05-27 16:58:19 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #6)

&gt; You didn&apos;t address Jiewen&apos;s comment that this isn&apos;t needed in the Web layer,
&gt; so serializing it back/forth to the WebContent process seems wasteful. Can
&gt; we make it Optional&lt;&gt;?

I&apos;m new in this codebase, so this is probably just my lack of understanding, but what&apos;s being &quot;wasted&quot; here? Isn&apos;t it the same amount of space to encode an empty Optional&lt;&gt; as it is to encode an int? If we go to Optional&lt;&gt; route, we effectively end up with a partially initialized object which has more complex usage because you have to add code to handle not having a value, as opposed to guaranteeing it&apos;s always there.



&gt; Jiewen suggested you move this to the header: Any reason not to?

I tried moving it to the header and ended up getting errors about an exported symbol being defined in multiple compilation units. My assumption was that you can&apos;t mix `WEBCORE_EXPORT` with a method defined in a header, but if I missed something I&apos;m happy to move it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764840</commentid>
    <comment_count>8</comment_count>
      <attachid>430030</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-05-28 11:29:04 -0700</bug_when>
    <thetext>Created attachment 430030
Patch (Rebase Attempt #2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764843</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-05-28 11:32:19 -0700</bug_when>
    <thetext>(In reply to Garrett Davidson from comment #7)
&gt; (In reply to Brent Fulgham from comment #6)
&gt; 
&gt; &gt; You didn&apos;t address Jiewen&apos;s comment that this isn&apos;t needed in the Web layer,
&gt; &gt; so serializing it back/forth to the WebContent process seems wasteful. Can
&gt; &gt; we make it Optional&lt;&gt;?
&gt; 
&gt; I&apos;m new in this codebase, so this is probably just my lack of understanding,
&gt; but what&apos;s being &quot;wasted&quot; here? Isn&apos;t it the same amount of space to encode
&gt; an empty Optional&lt;&gt; as it is to encode an int? If we go to Optional&lt;&gt; route,
&gt; we effectively end up with a partially initialized object which has more
&gt; complex usage because you have to add code to handle not having a value, as
&gt; opposed to guaranteeing it&apos;s always there.

Fair enough. We encode a nullptr for this case, which would be the same size in IPC as an integer value.

&gt; &gt; Jiewen suggested you move this to the header: Any reason not to?
&gt; 
&gt; I tried moving it to the header and ended up getting errors about an
&gt; exported symbol being defined in multiple compilation units. My assumption
&gt; was that you can&apos;t mix `WEBCORE_EXPORT` with a method defined in a header,
&gt; but if I missed something I&apos;m happy to move it :)

Ah, yes. That&apos;s true. Inline and WEBCORE_EXPORT don&apos;t mix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764855</commentid>
    <comment_count>10</comment_count>
      <attachid>430030</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-05-28 11:40:22 -0700</bug_when>
    <thetext>Comment on attachment 430030
Patch (Rebase Attempt #2)

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

&gt; Source/WebCore/Modules/webauthn/AuthenticatorCoordinatorClient.h:30
&gt; +#include &quot;AuthenticatorAttachment.h&quot;

It would be better if we could forward-declare this, and include in the implementation file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764899</commentid>
    <comment_count>11</comment_count>
    <who name="Garrett Davidson">garrett_davidson</who>
    <bug_when>2021-05-28 13:11:05 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #10)
&gt; Comment on attachment 430030 [details]
&gt; Patch (Rebase Attempt #2)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430030&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webauthn/AuthenticatorCoordinatorClient.h:30
&gt; &gt; +#include &quot;AuthenticatorAttachment.h&quot;
&gt; 
&gt; It would be better if we could forward-declare this, and include in the
&gt; implementation file.

The only thing in AuthenticatorAttachment.h is the AuthenticatorAttachment enum. Can that be forward declared?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764923</commentid>
    <comment_count>12</comment_count>
      <attachid>430050</attachid>
    <who name="Garrett Davidson">garrett_davidson</who>
    <bug_when>2021-05-28 14:18:32 -0700</bug_when>
    <thetext>Created attachment 430050
Rebased patch with fixed tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765693</commentid>
    <comment_count>13</comment_count>
      <attachid>430050</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-01 11:46:57 -0700</bug_when>
    <thetext>Comment on attachment 430050
Rebased patch with fixed tests

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

&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponse.h:67
&gt; +    AuthenticatorAttachment m_attachment;

Since we&apos;re storing this, this would probably be a good time to reduce the size.  Replace &quot;enum class AuthenticatorAttachment&quot; with &quot;enum class AuthenticatorAttachment : bool&quot;, and you can also remove the EnumTraits in AuthenticatorAttachment.h

&gt; Source/WebKit/UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:75
&gt; +            handler({ }, (AuthenticatorAttachment)0, exception);

This is actually AuthenticatorAttachment::Platform.  Is that what you want?  Maybe you want Optional&lt;AuthenticatorAttachment&gt;

&gt; Source/WebKit/WebAuthnProcess/WebAuthnConnectionToWebProcess.cpp:87
&gt; +            handler({ }, (AuthenticatorAttachment)0, exception);

ditto

&gt; Tools/ChangeLog:1
&gt; +2021-05-28  Garrett Davidson  &lt;davidson.garrettm@gmail.com&gt;

Is this the email address you want to use?

&gt; Tools/ChangeLog:11
&gt; +        Update the CTAP tests to specify the new attachment parameter. All of these tests
&gt; +        assume a cross platform authenticator.

Is it possible to add a test that uses AuthenticatorAttachment::Platform?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765754</commentid>
    <comment_count>14</comment_count>
      <attachid>430050</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-01 14:17:16 -0700</bug_when>
    <thetext>Comment on attachment 430050
Rebased patch with fixed tests

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

&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorResponse.h:67
&gt;&gt; +    AuthenticatorAttachment m_attachment;
&gt; 
&gt; Since we&apos;re storing this, this would probably be a good time to reduce the size.  Replace &quot;enum class AuthenticatorAttachment&quot; with &quot;enum class AuthenticatorAttachment : bool&quot;, and you can also remove the EnumTraits in AuthenticatorAttachment.h

Please note that &quot;: bool&quot; does not depend on &quot;enum&quot; vs. &quot;enum class&quot;. Could do that whether or not we change this to an enum class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765768</commentid>
    <comment_count>15</comment_count>
      <attachid>430291</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-06-01 14:50:24 -0700</bug_when>
    <thetext>Created attachment 430291
Garrett&apos;s Patch with forward declaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765772</commentid>
    <comment_count>16</comment_count>
      <attachid>430291</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-06-01 14:54:11 -0700</bug_when>
    <thetext>Comment on attachment 430291
Garrett&apos;s Patch with forward declaration.

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

Thanks for fixing the API tests. r=me, but waiting for EWS to complete.

&gt; Source/WebKit/WebAuthnProcess/WebAuthnConnectionToWebProcess.cpp:87
&gt; +            handler({ }, (AuthenticatorAttachment)0, exception);

This should be a C++ style cast. Or should we just be hard-coding it as AuthenticatorAttachment::Platform?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765777</commentid>
    <comment_count>17</comment_count>
      <attachid>430295</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-06-01 14:57:30 -0700</bug_when>
    <thetext>Created attachment 430295
Garrett&apos;s Patch with fwd declaration (and the cast)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766035</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-02 09:42:36 -0700</bug_when>
    <thetext>Committed r278358 (238390@main): &lt;https://commits.webkit.org/238390@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430295.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428007</attachid>
            <date>2021-05-07 10:15:45 -0700</date>
            <delta_ts>2021-05-27 16:36:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225519-20210507101544.patch</filename>
            <type>text/plain</type>
            <size>45181</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY4ZjQ5ZTI5ZDExNWVl
ZmRiMzZhNzU1MDI5YThmOGI1MTAzM2JhNi4uNDY0ZDI2YWE3NDFmNDVkNjhmNWQ4ZWVhMTRmZjFi
ZDA3ODY5NjA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA1LTA3ICBHYXJy
ZXR0IERhdmlkc29uICA8Z2FycmV0dF9kYXZpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Ugc2hvdWxkIHNwZWNpZnkgdGhl
IGF0dGFjaG1lbnQgdHlwZSB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU1MTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTU0MDkwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJldmlzZSB0
aGUgRklETyBhdXRoZW50aWNhdG9yIGxvZ2ljIHRvIHRocmVhZCBhdHRhY2htZW50IHN0YXRlIHRo
cm91Z2ggdGhlIHZhcmlvdXMgbGF5ZXJzLiBGSURPCisgICAgICAgIGRldmljZXMgYXJlIG1hcmtl
ZCBhcyBDcm9zcy1QbGF0Zm9ybS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKTogVGhyZWFkIGF0dGFjaG1lbnQgc3RhdGUg
dGhyb3VnaHQgdGhlIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKTogRGl0dG8uCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSk6IERp
dHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
OmNyZWF0ZSBjb25zdCk6IE1hcmsgYXR0YWNobWVudCBhcyBDcm9zcy1QbGF0Zm9ybS4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJu
YWxTb3VyY2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVz
cG9uc2U6OnRyeUNyZWF0ZSk6IFN1cHBvcnQgYXR0YWNobWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6YXR0YWNobWVudCBjb25zdCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2Up
OiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZl
cnRlci5jcHA6CisgICAgICAgIChmaWRvOjpyZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2Up
OiBNYXJrIGF0dGFjaG1lbnQgYXMgQ3Jvc3MtUGxhdGZvcm0uCisgICAgICAgIChmaWRvOjpyZWFk
Q1RBUEdldEFzc2VydGlvblJlc3BvbnNlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJh
dXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAgICAgKGZpZG86OnJlYWRV
MmZSZWdpc3RlclJlc3BvbnNlKTogRGl0dG8uCisgICAgICAgIChmaWRvOjpyZWFkVTJmU2lnblJl
c3BvbnNlKTogRGl0dG8uCisKIDIwMjEtMDUtMDYgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlvc2hp
YWtpLmppdHN1a2F3YUBzb255LmNvbT4KIAogICAgICAgICBbT3BlblNTTF0gSW1wbGVtZW50IENy
eXB0b0FsZ29yaXRobVJTQSoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTQzMGJlYWU5Mjk2Y2EwODcyNGIxODQ2NWRm
MmIxNmY1NTUwMjllNC4uOGRhZjllMjVhNDQxNjNmYmRlMzMwN2IzYjVmOTQ1NjcyMGM1YTBiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMS0wNS0wNyAgR2FycmV0dCBEYXZpZHNvbiAg
PGdhcnJldHRfZGF2aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gX1dLQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlIHNob3VsZCBzcGVjaWZ5IHRoZSBhdHRhY2htZW50IHR5
cGUgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI1NTE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjU1NDA5MD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXZpc2UgYXV0aGVudGljYXRvciBo
YW5kbGluZyB0byB0aHJlYWQgYXR0YWNobWVudCB0aHJvdWdoIHRoZSB2YXJpb3VzIGxheWVycyB0
byB0aGF0IHRoZSBVSSBjYW4gYWNjZXNzIGl0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UubW06CisgICAgICAgICgtW19X
S0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJh
d0lkOmV4dGVuc2lvbnM6YXV0aGVudGljYXRvckRhdGE6c2lnbmF0dXJlOnVzZXJIYW5kbGU6YXR0
YWNobWVudDpdKTogUmV2aXNlCisgICAgICAgIG1ldGhvZCB0byByZXF1aXJlIGF0dGFjaG1lbnQu
CisgICAgICAgICgtW19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBpbml0V2l0aENs
aWVudERhdGFKU09OOnJhd0lkOmV4dGVuc2lvbnM6YXV0aGVudGljYXRvckRhdGE6c2lnbmF0dXJl
OnVzZXJIYW5kbGU6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW06
CisgICAgICAgICgtW19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGluaXRXaXRo
Q2xpZW50RGF0YUpTT046cmF3SWQ6ZXh0ZW5zaW9uczphdHRlc3RhdGlvbk9iamVjdDphdHRhY2ht
ZW50Ol0pOiBSZXZpc2UgbWV0aG9kCisgICAgICAgIHRvIHJlcXVpcmUgYXR0YWNobWVudC4KKyAg
ICAgICAgKC1bX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgaW5pdFdpdGhDbGll
bnREYXRhSlNPTjpyYXdJZDpleHRlbnNpb25zOmF0dGVzdGF0aW9uT2JqZWN0Ol0pOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2VJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QXV0aGVudGljYXRvclJlc3BvbnNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRoZW50aWNhdG9yUmVzcG9uc2UubW06CisgICAgICAgICgtW19XS0F1dGhlbnRpY2F0b3JS
ZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJhd0lkOmV4dGVuc2lvbnM6YXR0YWNobWVu
dDpdKTogUmV2aXNlIG1ldGhvZCB0byByZXF1aXJlIGF0dGFjaG1lbnQuCisgICAgICAgICgtW19X
S0F1dGhlbnRpY2F0b3JSZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJhd0lkOmV4dGVu
c2lvbnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRo
ZW50aWNhdG9yUmVzcG9uc2VJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKGF1dGhlbnRpY2F0b3JS
ZXNwb25zZUF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQpOiBUaHJlYWQgYXR0
YWNobWVudCB0aHJvdWdoIHRoZSBtZXRob2QuCisgICAgICAgICh3a0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlKTogRGl0dG8uCisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgbWFrZUNyZWRlbnRpYWxXaXRoQ2hhbGxlbmdlOm9yaWdpbjpvcHRpb25zOmNvbXBsZXRp
b25IYW5kbGVyOl0pOiBEaXR0by4KKyAgICAgICAgKHdrQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlKTogRGl0dG8uCisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZ2V0
QXNzZXJ0aW9uV2l0aENoYWxsZW5nZTpvcmlnaW46b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjpd
KTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9y
SW50ZXJuYWw6OmdldEV4aXN0aW5nQ3JlZGVudGlhbHMpOiBNYXJrIGF1dGhlbnRpY2F0b3IgYXMg
UGxhdGZvcm0gYXR0YWNobWVudC4KKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9y
Ojpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlh
bEFmdGVyQXR0ZXN0ZWQpOiBEaXR0by4KKwogMjAyMS0wNS0wNiAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0gUmVkdWNlIE1lZGlhUGxheWVy
IHBvbGxpbmcgZnJlcXVlbmN5IHdoZW4gcG9zc2libGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLmNwcAppbmRleCAxYzBjMDQxZWNiMzdlOTE4MTY2YTVhYjNlYzA0ZDllZGZhYjVlMGU5
Li5lMGU0MWY3YjUzMDYwNWYwNGQ2NzM5YmNjY2FlMWRkMGY2NWYxNWNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDI1ICszMiwyNSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2ln
bmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgT3B0aW9uYWw8QXV0aGVu
dGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJiBleHRlbnNpb25zKQorUmVmPEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
OjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0
aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzPiYmIGV4dGVuc2lvbnMsIEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXR0YWNo
bWVudCBhdHRhY2htZW50KQogewotICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdFJlZigqbmV3IEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RGTW92ZShhdXRo
ZW50aWNhdG9yRGF0YSksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZSh1c2VySGFuZGxlKSkp
OworICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdFJlZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSksIFdU
Rk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZSh1c2VySGFuZGxlKSwgYXR0YWNobWVudCkpOwogICAg
IGlmIChleHRlbnNpb25zKQogICAgICAgICByZXNwb25zZS0+c2V0RXh0ZW5zaW9ucyhXVEZNb3Zl
KCpleHRlbnNpb25zKSk7CiAgICAgcmV0dXJuIHJlc3BvbnNlOwogfQogCi1SZWY8QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNy
ZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKQorUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNh
dG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgdXNlckhhbmRsZSwgQXV0aGVudGljYXRvclJlc3BvbnNlOjpBdHRhY2htZW50IGF0
dGFjaG1lbnQpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiB1c2VyaGFuZGxlQnVmZmVyOwog
ICAgIGlmICghdXNlckhhbmRsZS5pc0VtcHR5KCkpCiAgICAgICAgIHVzZXJoYW5kbGVCdWZmZXIg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGUuZGF0YSgpLCB1c2VySGFuZGxlLnNpemUo
KSk7Ci0gICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRhdGEoKSwg
cmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRh
KCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0
dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSksIFdURk1vdmUodXNlcmhhbmRsZUJ1ZmZlciks
IFdURjo6bnVsbG9wdCk7CisgICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJh
d0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNh
dG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpj
cmVhdGUoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSksIFdURk1vdmUodXNlcmhh
bmRsZUJ1ZmZlciksIFdURjo6bnVsbG9wdCwgYXR0YWNobWVudCk7CiB9CiAKLVJlZjxBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6
Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJI
YW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCkK
K1JlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVm
ZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNj
ZXNzQ29udHJvbCwgQXV0aGVudGljYXRvclJlc3BvbnNlOjpBdHRhY2htZW50IGF0dGFjaG1lbnQp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3ZlKHVzZXJIYW5kbGUpLCBXVEZNb3ZlKG5hbWUpLCBh
Y2Nlc3NDb250cm9sKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3ZlKHVzZXJIYW5kbGUpLCBXVEZN
b3ZlKG5hbWUpLCBhY2Nlc3NDb250cm9sLCBhdHRhY2htZW50KSk7CiB9CiAKIHZvaWQgQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRBdXRoZW50aWNhdG9yRGF0YShWZWN0b3I8dWlu
dDhfdD4mJiBhdXRoZW50aWNhdG9yRGF0YSkKQEAgLTU4LDE2ICs1OCwxNiBAQCB2b2lkIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6c2V0QXV0aGVudGljYXRvckRhdGEoVmVjdG9yPHVp
bnQ4X3Q+JiYgYXV0aAogICAgIG1fYXV0aGVudGljYXRvckRhdGEgPSBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKGF1dGhlbnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKTsK
IH0KIAotQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYg
YXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQotICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdU
Rk1vdmUocmF3SWQpKQorQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlC
dWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBBdXRoZW50aWNhdG9yUmVzcG9uc2U6
OkF0dGFjaG1lbnQgYXR0YWNobWVudCkKKyAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZN
b3ZlKHJhd0lkKSwgYXR0YWNobWVudCkKICAgICAsIG1fYXV0aGVudGljYXRvckRhdGEoV1RGTW92
ZShhdXRoZW50aWNhdG9yRGF0YSkpCiAgICAgLCBtX3NpZ25hdHVyZShXVEZNb3ZlKHNpZ25hdHVy
ZSkpCiAgICAgLCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKIHsKIH0KIAotQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRs
ZSwgU3RyaW5nJiYgbmFtZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQotICAg
IDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpKQorQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5
QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgU3RyaW5nJiYg
bmFtZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sLCBBdXRoZW50aWNhdG9yUmVz
cG9uc2U6OkF0dGFjaG1lbnQgYXR0YWNobWVudCkKKyAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25z
ZShXVEZNb3ZlKHJhd0lkKSwgYXR0YWNobWVudCkKICAgICAsIG1fdXNlckhhbmRsZShXVEZNb3Zl
KHVzZXJIYW5kbGUpKQogICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCiAgICAgLCBtX2FjY2Vz
c0NvbnRyb2woYWNjZXNzQ29udHJvbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCmlu
ZGV4IDJhZDY2NWUxMjgxODAzYTIyMjJmZTIzNmVlNjA1NGJiZGM5YWYxMDAuLmVkMzM5YTdiNGQz
NmI5YTFkY2ZiOTkxMDlhOTRmODU3ZjI4YzA0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+
IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRo
ZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIHVzZXJIYW5kbGUsIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudE91dHB1dHM+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJ
ZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+
JiYgdXNlckhhbmRsZSwgU3RyaW5nJiYgbmFtZSwgU2VjQWNjZXNzQ29udHJvbFJlZik7CisgICAg
c3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJy
YXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwg
UmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJI
YW5kbGUsIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYs
IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXR0YWNobWVudCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0
b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgdXNlckhhbmRsZSwgQXV0aGVudGljYXRvclJlc3BvbnNlOjpBdHRhY2htZW50KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYm
IHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIEF1dGhlbnRp
Y2F0b3JSZXNwb25zZTo6QXR0YWNobWVudCk7CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCiAgICAgQXJyYXlCdWZmZXIqIGF1dGhlbnRp
Y2F0b3JEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5nZXQoKTsgfQpA
QCAtNTksOCArNTksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMQUNvbnRleHQoTEFDb250ZXh0
ICpjb250ZXh0KSB7IG1fbGFDb250ZXh0ID0gY29udGV4dDsgfQogCiBwcml2YXRlOgotICAgIEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJh
eUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwot
ICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJl
ZjxBcnJheUJ1ZmZlcj4mJiwgU3RyaW5nJiYsIFNlY0FjY2Vzc0NvbnRyb2xSZWYpOworICAgIEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJh
eUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIEF1
dGhlbnRpY2F0b3JSZXNwb25zZTo6QXR0YWNobWVudCk7CisgICAgQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBTdHJp
bmcmJiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgQXV0aGVudGljYXRvclJlc3BvbnNlOjpBdHRhY2ht
ZW50KTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OkFzc2Vy
dGlvbjsgfQogICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSgpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcAppbmRleCA5ZDJiODczNDA0
ZDY0Y2Q3NmJmZTgxZWJjYzI5Yzg1NTMwOWMwMjk1Li44NDEyY2EwMDU1NGRkN2QzYWZhZDgzZDQ4
NGFlZDFiNjk1ZjY1MmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiwxOCArMzIsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
OjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0
ZXN0YXRpb25PYmplY3QpCitSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYm
IHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0
b3JSZXNwb25zZTo6QXR0YWNobWVudCBhdHRhY2htZW50KQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBX
VEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3ZlKGF0
dGVzdGF0aW9uT2JqZWN0KSwgYXR0YWNobWVudCkpOwogfQogCi1SZWY8QXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVh
dGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBh
dHRlc3RhdGlvbk9iamVjdCkKK1JlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4g
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0LCBB
dXRoZW50aWNhdG9yUmVzcG9uc2U6OkF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKLSAgICByZXR1
cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkp
LCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRp
b25PYmplY3Quc2l6ZSgpKSk7CisgICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRl
KHJhd0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3Rh
dGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSksIGF0dGFjaG1lbnQp
OwogfQogCi1BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZm
ZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RG
TW92ZShyYXdJZCkpCitBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6QXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJy
YXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXR0
YWNobWVudCBhdHRhY2htZW50KQorICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUo
cmF3SWQpLCBhdHRhY2htZW50KQogICAgICwgbV9hdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF0
dGVzdGF0aW9uT2JqZWN0KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uu
aAppbmRleCA2MGNkNmU3YTFiMDQ1NGQ0YjdkOGUxMWU1ZGUzZWMyZmFiZmZkZjViLi5jMzY0NmI2
NGE1YjdhYWJhZGY4YmU1NTg5YTMwNTU0YTZiNzUyMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0
b3JSZXNwb25zZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5
QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVj
dCk7CisgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3Jl
YXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0
aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OkF0dGFjaG1lbnQpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IGNy
ZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OkF0dGFjaG1lbnQpOwog
CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoKSA9IGRlZmF1
bHQ7CiAKICAgICBBcnJheUJ1ZmZlciogYXR0ZXN0YXRpb25PYmplY3QoKSBjb25zdCB7IHJldHVy
biBtX2F0dGVzdGF0aW9uT2JqZWN0LnB0cigpOyB9CiAKIHByaXZhdGU6Ci0gICAgQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZm
ZXI+JiYpOworICAgIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1
ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OkF0dGFj
aG1lbnQpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6QXR0
ZXN0YXRpb247IH0KICAgICBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEoKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAppbmRleCAyZTVmMGFmOTdjMGZhMmM5NTE2MjY2
MWI4ODFlNzk5YmRkZWZiNWRmLi43YTJkNDBkMzBkNTQ1MGIxOGVlODUxNWEwNTdiMDg2NGRhYmZi
YmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgUHVibGljS2V5QwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGF1dG8gcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZShXVEZN
b3ZlKGRhdGEpKSkgeworICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JS
ZXNwb25zZTo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSksIEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6
QXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRD
bGllbnREYXRhSlNPTihXVEZNb3ZlKGNsaWVudERhdGFKc29uKSk7CiAgICAgICAgICAgICBwcm9t
aXNlLnJlc29sdmUoUHVibGljS2V5Q3JlZGVudGlhbDo6Y3JlYXRlKHJlc3BvbnNlLnJlbGVhc2VO
b25OdWxsKCkpLnB0cigpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2Miw3ICsyNjIsNyBA
QCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3Vy
Y2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKGF1dG8gcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRy
eUNyZWF0ZShXVEZNb3ZlKGRhdGEpKSkgeworICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1
dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSksIEF1dGhlbnRpY2F0
b3JSZXNwb25zZTo6QXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSkpIHsKICAgICAgICAgICAgIHJl
c3BvbnNlLT5zZXRDbGllbnREYXRhSlNPTihXVEZNb3ZlKGNsaWVudERhdGFKc29uKSk7CiAgICAg
ICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVibGljS2V5Q3JlZGVudGlhbDo6Y3JlYXRlKHJlc3Bv
bnNlLnJlbGVhc2VOb25OdWxsKCkpLnB0cigpKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3Bv
bnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJl
c3BvbnNlLmNwcAppbmRleCBkNGI3MTI5M2NmM2VkZTk1MzQxMTM2Yzk1OTM2NGQxNjAyN2Y2ZWZl
Li5jMDliNTMyZjA2ZGRiNTM3YTVhY2FmNmQxMjk4MmM5OGM5MmQ0YjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9u
c2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8QXV0
aGVudGljYXRvclJlc3BvbnNlPiBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZShBdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSkKK1JlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9u
c2U+IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRlKEF1dGhlbnRpY2F0b3JSZXNwb25z
ZURhdGEmJiBkYXRhLCBBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7CiAgICAgaWYgKCFkYXRhLnJh
d0lkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQzLDEzICs0MywxMyBAQCBSZWZQdHI8
QXV0aGVudGljYXRvclJlc3BvbnNlPiBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZShB
dXRoZW50aWNhdG9yUmVzcAogICAgICAgICBpZiAoIWRhdGEuYXR0ZXN0YXRpb25PYmplY3QpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLnJhd0lkLnJlbGVhc2VOb25OdWxsKCks
IGRhdGEuYXR0ZXN0YXRpb25PYmplY3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHJldHVy
biBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEucmF3SWQucmVs
ZWFzZU5vbk51bGwoKSwgZGF0YS5hdHRlc3RhdGlvbk9iamVjdC5yZWxlYXNlTm9uTnVsbCgpLCBh
dHRhY2htZW50KTsKICAgICB9CiAKICAgICBpZiAoIWRhdGEuYXV0aGVudGljYXRvckRhdGEgfHwg
IWRhdGEuc2lnbmF0dXJlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLnJhd0lkLnJlbGVhc2VO
b25OdWxsKCksIGRhdGEuYXV0aGVudGljYXRvckRhdGEucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5z
aWduYXR1cmUucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShkYXRhLnVzZXJIYW5kbGUpLCBBdXRo
ZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzIHsgZGF0YS5hcHBpZCB9KTsKKyAgICBy
ZXR1cm4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5y
ZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLnJlbGVhc2VOb25OdWxsKCks
IGRhdGEuc2lnbmF0dXJlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoZGF0YS51c2VySGFuZGxl
KSwgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyB7IGRhdGEuYXBwaWQgfSwg
YXR0YWNobWVudCk7CiB9CiAKIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgQXV0aGVudGljYXRv
clJlc3BvbnNlOjpkYXRhKCkgY29uc3QKQEAgLTg1LDggKzg1LDE0IEBAIEFycmF5QnVmZmVyKiBB
dXRoZW50aWNhdG9yUmVzcG9uc2U6OmNsaWVudERhdGFKU09OKCkgY29uc3QKICAgICByZXR1cm4g
bV9jbGllbnREYXRhSlNPTi5nZXQoKTsKIH0KIAotQXV0aGVudGljYXRvclJlc3BvbnNlOjpBdXRo
ZW50aWNhdG9yUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkKQorQXV0aGVudGljYXRv
clJlc3BvbnNlOjpBdHRhY2htZW50IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6YXR0YWNobWVudCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXR0YWNobWVudDsKK30KKworQXV0aGVudGljYXRvclJl
c3BvbnNlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBB
dXRoZW50aWNhdG9yUmVzcG9uc2U6OkF0dGFjaG1lbnQgYXR0YWNobWVudCkKICAgICA6IG1fcmF3
SWQoV1RGTW92ZShyYXdJZCkpCisgICAgLCBtX2F0dGFjaG1lbnQoYXR0YWNobWVudCkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvclJlc3BvbnNlLmgKaW5kZXggNWEzM2U3MjUwOTliMWJlZWEzY2I5MTg5ZjFkMTJlNDViYTkx
NDhhZC4uYjlkMGRjMzIwNTA2YzRkYzRjNWM4ZjdkOGQxODk4NzU5YmRhZTQyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNw
b25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQzLDcgKzQzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgQXR0ZXN0YXRpb24KICAgICB9
OwogCi0gICAgc3RhdGljIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IHRyeUNyZWF0ZShB
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYpOworICAgIGVudW0gY2xhc3MgQXR0YWNobWVudCB7
CisgICAgICAgIFBsYXRmb3JtLAorICAgICAgICBDcm9zc1BsYXRmb3JtCisgICAgfTsKKworICAg
IHN0YXRpYyBSZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiB0cnlDcmVhdGUoQXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YSYmLCBBdHRhY2htZW50KTsKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNh
dG9yUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0
ID0gMDsKQEAgLTU0LDE0ICs1OSwxNiBAQCBwdWJsaWM6CiAgICAgQXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50T3V0cHV0cyBleHRlbnNpb25zKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDbGll
bnREYXRhSlNPTihSZWY8QXJyYXlCdWZmZXI+JiYpOwogICAgIEFycmF5QnVmZmVyKiBjbGllbnRE
YXRhSlNPTigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEF0dGFjaG1lbnQgYXR0YWNobWVu
dCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgQXV0aGVudGljYXRvclJlc3BvbnNlKFJlZjxB
cnJheUJ1ZmZlcj4mJik7CisgICAgQXV0aGVudGljYXRvclJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZl
cj4mJiwgQXR0YWNobWVudCk7CiAKIHByaXZhdGU6CiAgICAgUmVmPEFycmF5QnVmZmVyPiBtX3Jh
d0lkOwogICAgIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMgbV9leHRlbnNp
b25zOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9jbGllbnREYXRhSlNPTjsKKyAgICBBdHRh
Y2htZW50IG1fYXR0YWNobWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25z
ZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2
aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IDhkMzRiZTkzZDFiZTQ4MTNhN2E5YjM4NTVi
YTRjYTFmMDRjZjY4ODcuLjIzZDgzNWZkZGJmMDkyNTUwN2M5YjIzOTkyMGMyOTgwNWVkOTJhZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VS
ZXNwb25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8vIENv
cHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8gQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
IC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTEzNiw3ICsxMzYsNyBAQCBS
ZWZQdHI8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRl
bnRpYWxSZXNwb25zZShjb25zdCBWZQogICAgICAgICBhdHRlc3RhdGlvbk9iamVjdCA9IGNib3I6
OkNCT1JXcml0ZXI6OndyaXRlKENCT1IoV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdE1hcCkpKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNy
ZWF0ZShjcmVkZW50aWFsSWQsICphdHRlc3RhdGlvbk9iamVjdCk7CisgICAgcmV0dXJuIEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCAqYXR0ZXN0
YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXR0YWNobWVudDo6Q3Jvc3NQbGF0
Zm9ybSk7CiB9CiAKIFJlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRD
VEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikK
QEAgLTE3Myw3ICsxNzMsNyBAQCBSZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
PiByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3RvcgogICAgICAgICBpZiAo
aXRyID09IHVzZXIuZW5kKCkgfHwgIWl0ci0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGF1dG8mIHVzZXJIYW5kbGUgPSBpdHItPnNl
Y29uZC5nZXRCeXRlU3RyaW5nKCk7Ci0gICAgICAgIHJlc3BvbnNlID0gQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdXRoRGF0YSwgc2lnbmF0dXJl
LCB1c2VySGFuZGxlKTsKKyAgICAgICAgcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHVzZXJI
YW5kbGUsIEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7
CiAKICAgICAgICAgaXRyID0gdXNlci5maW5kKENCT1Ioa0VudGl0eU5hbWVNYXBLZXkpKTsKICAg
ICAgICAgaWYgKGl0ciAhPSB1c2VyLmVuZCgpKSB7CkBAIC0xODksNyArMTg5LDcgQEAgUmVmUHRy
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNw
b25zZShjb25zdCBWZWN0b3IKICAgICAgICAgICAgIHJlc3BvbnNlLT5zZXREaXNwbGF5TmFtZShp
dHItPnNlY29uZC5nZXRTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAg
ICByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRl
bnRpYWxJZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgeyB9KTsKKyAgICAgICAgcmVzcG9uc2UgPSBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF1dGhE
YXRhLCBzaWduYXR1cmUsIHsgfSwgQXV0aGVudGljYXRvclJlc3BvbnNlOjpBdHRhY2htZW50OjpD
cm9zc1BsYXRmb3JtKTsKICAgICB9CiAKICAgICBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUig1
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJm
UmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAppbmRleCAyYjU0NmQxNzM3ODM2ZTVmNGM3Mzlm
ODIxNzNiMjE2ZDk4Yjc1YjExLi5lYmM2MjExOWY4M2Q1Mjg0NWQ0OWYyNGYzMjY1OGQ1ZGUyY2Fm
NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJm
UmVzcG9uc2VDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBSZWZQ
dHI8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3Bv
bnNlKGNvbnN0IFN0cmluZyYgcgogCiAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxk
QXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJmaWRvLXUyZiIsIFdURk1vdmUo
Zmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50KSwgYXR0ZXN0YXRpb24pOwogCi0gICAgcmV0dXJuIEF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRl
c3RhdGlvbk9iamVjdCk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRv
clJlc3BvbnNlOjpBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKIH0KIAogUmVmUHRyPEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJp
bmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHUyZkRhdGEpCkBAIC0xODcsNyArMTg3LDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJw
SWQsIGMKICAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlOwogICAgIHNpZ25hdHVyZS5hcHBl
bmQodTJmRGF0YS5kYXRhKCkgKyBzaWduYXR1cmVJbmRleCwgdTJmRGF0YS5zaXplKCkgLSBzaWdu
YXR1cmVJbmRleCk7CiAKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
OjpjcmVhdGUoa2V5SGFuZGxlLCBhdXRoRGF0YSwgc2lnbmF0dXJlLCB7IH0pOworICAgIHJldHVy
biBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShrZXlIYW5kbGUsIGF1dGhE
YXRhLCBzaWduYXR1cmUsIHsgfSwgQXV0aGVudGljYXRvclJlc3BvbnNlOjpBdHRhY2htZW50OjpD
cm9zc1BsYXRmb3JtKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgZmlkbwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UubW0KaW5kZXggMzg3ZjIyNGI1ZmUyZGM5YjFhNTE1YmVk
OTJkZmJiYTFhNTRmMTNmMC4uNDYxOGJlMGQyMmFmMjdiZTlmZjYxMGNkNjVkOTc4ODI3ZGE2MzQ5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLm1tCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDkgKzMy
LDkgQEAKIAogQGltcGxlbWVudGF0aW9uIF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xp
ZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxf
V0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXV0
aGVudGljYXRvckRhdGE6KE5TRGF0YSAqKWF1dGhlbnRpY2F0b3JEYXRhIHNpZ25hdHVyZTooTlNE
YXRhICopc2lnbmF0dXJlIHVzZXJIYW5kbGU6KE5TRGF0YSAqKXVzZXJIYW5kbGUKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiBy
YXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdXRoZW50aWNhdG9yRGF0
YTooTlNEYXRhICopYXV0aGVudGljYXRvckRhdGEgc2lnbmF0dXJlOihOU0RhdGEgKilzaWduYXR1
cmUgdXNlckhhbmRsZTooTlNEYXRhICopdXNlckhhbmRsZSBhdHRhY2htZW50OihfV0tBdXRoZW50
aWNhdG9yQXR0YWNobWVudClhdHRhY2htZW50CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0V2l0aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOnJhd0lkIGV4dGVuc2lv
bnM6V1RGTW92ZShleHRlbnNpb25zKV0pKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpyYXdJZCBleHRlbnNpb25zOldU
Rk1vdmUoZXh0ZW5zaW9ucykgYXR0YWNobWVudDphdHRhY2htZW50XSkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKICAgICBfYXV0aGVudGljYXRvckRhdGEgPSBhdXRoZW50aWNhdG9yRGF0YTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZUludGVybmFsLmgKaW5k
ZXggZWVmNmExNDdhM2IwNjNmNGQzOTgwNzhmYTU4YWUzODI2NzY5N2NjYS4uZjQ4OTM4OTVmNjI0
ODhlMjQxMzZlN2ZmNDhlYzE3MTYzMjkwZDE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZUludGVy
bmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZUludGVybmFsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNyArMzQsNyBAQCBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgogCiBAaW50ZXJmYWNlIF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRh
ICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFp
blB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lv
bnMgYXV0aGVudGljYXRvckRhdGE6KE5TRGF0YSAqKWF1dGhlbnRpY2F0b3JEYXRhIHNpZ25hdHVy
ZTooTlNEYXRhICopc2lnbmF0dXJlIHVzZXJIYW5kbGU6KE5TRGF0YSAqKXVzZXJIYW5kbGU7Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0
YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRo
ZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXV0aGVudGlj
YXRvckRhdGE6KE5TRGF0YSAqKWF1dGhlbnRpY2F0b3JEYXRhIHNpZ25hdHVyZTooTlNEYXRhICop
c2lnbmF0dXJlIHVzZXJIYW5kbGU6KE5TRGF0YSAqKXVzZXJIYW5kbGUgYXR0YWNobWVudDooX1dL
QXV0aGVudGljYXRvckF0dGFjaG1lbnQpYXR0YWNobWVudDsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0KaW5kZXggM2IxOTFmZWRmNTc5OTg2
NGFjMWZhOTUyN2I0Zjc3NTQzYzZlOTE1MS4uYmRjMGUzNWI5MjQ3ODk3OGRiYjA0Zjg2MTc1Njky
NjgyNTNkYTY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMiw5ICszMiw5IEBACiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNP
TjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lv
bnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYm
KWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2JqZWN0
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50
RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0
YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2JqZWN0IGF0dGFjaG1lbnQ6KF9XS0F1
dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6cmF3SWQgZXh0
ZW5zaW9uczpXVEZNb3ZlKGV4dGVuc2lvbnMpXSkpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0V2l0aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOnJhd0lkIGV4dGVuc2lv
bnM6V1RGTW92ZShleHRlbnNpb25zKSBhdHRhY2htZW50OmF0dGFjaG1lbnRdKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAogICAgIF9hdHRlc3RhdGlvbk9iamVjdCA9IGF0dGVzdGF0aW9uT2JqZWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZUludGVy
bmFsLmgKaW5kZXggMDZiMTgwN2Q4NWVkMjljNjY1Njg3YmQ2ZjM5MTQ3MjRhYjg2YjM1ZS4uYWFm
YmYwYmQ0M2ZjODBlOTQxMGRlMDgyM2JmNDE1OGJlN2RhNmNiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5hbC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDcg
QEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGludGVyZmFjZSBfV0tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnRE
YXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4
dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRw
dXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9u
T2JqZWN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAq
KWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5Q
dHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25z
IGF0dGVzdGF0aW9uT2JqZWN0OihOU0RhdGEgKilhdHRlc3RhdGlvbk9iamVjdCBhdHRhY2htZW50
OihfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudClhdHRhY2htZW50OwogCiBAZW5kCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9y
UmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50
aWNhdG9yUmVzcG9uc2UuaAppbmRleCAxMWVkZDk0NDQ5NDdmZTM1MzMwZjEzNDM5NmYyZGVjMjg1
ODlmZmNhLi42NWFiZTVlNzFjMGZjYWQ5NzVmM2ZhZmQzMGQzZDBhNzU1ZGUyY2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJl
c3BvbnNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhl
bnRpY2F0b3JSZXNwb25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW1wb3J0
IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQuaD4KIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKQEAg
LTM2LDYgKzM3LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIFdLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQogQGludGVyZmFjZSBfV0tBdXRo
ZW50aWNhdG9yUmVzcG9uc2UgOiBOU09iamVjdAogCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQ7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIE5TRGF0YSAqY2xpZW50RGF0YUpTT047CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIE5TRGF0YSAqcmF3SWQ7CiBAcHJvcGVydHkgKG51bGxhYmxl
LCBub25hdG9taWMsIHJlYWRvbmx5LCBzdHJvbmcpIF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9u
c0NsaWVudE91dHB1dHMgKmV4dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZS5tbQppbmRl
eCA4OWQwNjE3ZWVkNzRiYjM0NDZjMWQwOWM2NjYwYzEzZTc1ODc0MzA3Li5iNjgwZWFiN2Q4MGY0
NGE4MjFjNWUxNWVlODMyMWUzNDE4NTQyMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UubW0K
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzMsNyArMzMsNyBAQAogICAgIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzPiBfZXh0ZW5zaW9uczsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKily
YXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cz4mJilleHRlbnNpb25zCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnRE
YXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4
dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRw
dXRzPiYmKWV4dGVuc2lvbnMgYXR0YWNobWVudDooX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQp
YXR0YWNobWVudAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICBy
ZXR1cm4gbmlsOwpAQCAtNDEsNiArNDEsOCBAQAogICAgIF9jbGllbnREYXRhSlNPTiA9IGNsaWVu
dERhdGFKU09OOwogICAgIF9yYXdJZCA9IHJhd0lkOwogICAgIF9leHRlbnNpb25zID0gZXh0ZW5z
aW9uczsKKyAgICBfYXR0YWNobWVudCA9IGF0dGFjaG1lbnQ7CisKICAgICByZXR1cm4gc2VsZjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1
dGhlbnRpY2F0b3JSZXNwb25zZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlSW50ZXJuYWwuaAppbmRleCBiMGZhZWZi
ZjQ3ZmEzM2U4MTk0M2IzNzA2MjQwODg5NTU0NGM5NzE3Li4zNmEyMjUzMjdjMGI2NmI3Y2I0ZjIw
N2JjNWFlYzJjYzU4OTZmN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlSW50ZXJu
YWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNCw3ICszNCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBpbnRlcmZhY2Ug
X1dLQXV0aGVudGljYXRvclJlc3BvbnNlICgpCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENs
aWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3
SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVu
dE91dHB1dHM+JiYpZXh0ZW5zaW9uczsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERh
dGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0
ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1
dHM+JiYpZXh0ZW5zaW9ucyBhdHRhY2htZW50OihfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudClh
dHRhY2htZW50OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggZTRl
NzQ4ZWE1YWNmYzJhOThlMGRiMDUyNThjNGE5NzE1MTVlZmNhZi4uZGVmYjk5YzZlMzAzYjk5ZTk2
M2IwODhhMzE3NDM1NzUxZTQ3NGJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAg
LTQ1OCw5ICs0NTgsMTkgQEAgc3RhdGljIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9u
c0NsaWVudElucHV0cyBhdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGkKIH0KIAogI2lmIEVOQUJM
RShXRUJfQVVUSE4pCi1zdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEsIE5TRGF0YSAqY2xpZW50RGF0YUpT
T04pCitzdGF0aWMgX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXV0aGVudGljYXRvclJlc3Bv
bnNlQXR0YWNobWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yUmVzcG9uc2U6OkF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKLSAgICByZXR1cm4gYWRv
cHROUyhbW19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOltOU0RhdGEgZGF0YVdpdGhCeXRl
czpkYXRhLnJhd0lkLT5kYXRhKCkgbGVuZ3RoOmRhdGEucmF3SWQtPmJ5dGVMZW5ndGgoKV0gZXh0
ZW5zaW9uczpuaWwgYXR0ZXN0YXRpb25PYmplY3Q6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEu
YXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSBsZW5ndGg6ZGF0YS5hdHRlc3RhdGlvbk9iamVjdC0+
Ynl0ZUxlbmd0aCgpXV0pOworICAgIHN3aXRjaCAoYXR0YWNobWVudCkgeworICAgIGNhc2UgV2Vi
Q29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlOjpBdHRhY2htZW50OjpQbGF0Zm9ybToKKyAgICAg
ICAgcmV0dXJuIF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50UGxhdGZvcm07CisgICAgY2FzZSBX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OkF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm06
CisgICAgICAgIHJldHVybiBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudENyb3NzUGxhdGZvcm07
CisgICAgfQorfQorCitzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEsIE5TRGF0YSAqY2xpZW50RGF0YUpT
T04sIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXR0YWNobWVudCBhdHRhY2htZW50
KQoreworICAgIHJldHVybiBhZG9wdE5TKFtbX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UgYWxsb2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRhdGEoKSBsZW5ndGg6ZGF0YS5yYXdJ
ZC0+Ynl0ZUxlbmd0aCgpXSBleHRlbnNpb25zOm5pbCBhdHRlc3RhdGlvbk9iamVjdDpbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6ZGF0YS5hdHRlc3RhdGlvbk9iamVjdC0+ZGF0YSgpIGxlbmd0aDpkYXRh
LmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCldIGF0dGFjaG1lbnQ6IGF1dGhlbnRpY2F0
b3JSZXNwb25zZUF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVu
dCldKTsKIH0KICNlbmRpZgogCkBAIC00NzEsNyArNDgxLDcgQEAgc3RhdGljIFJldGFpblB0cjxf
V0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb24KICAgICBhdXRvIGhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERh
dGFKU09OLmdldCgpKTsKICAgICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoaGFuZGxlciksIGNsaWVudERhdGFKU09OID0gV1RGTW92ZShjbGllbnREYXRhSlNPTildIChW
YXJpYW50PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U+LCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24ocmVz
dWx0LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZT4mIHJlc3Bv
bnNlKSB7Ci0gICAgICAgICAgICBoYW5kbGVyKHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UocmVzcG9uc2UtPmRhdGEoKSwgY2xpZW50RGF0YUpTT04uZ2V0KCkpLmdldCgpLCBuaWwp
OworICAgICAgICAgICAgaGFuZGxlcih3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
KHJlc3BvbnNlLT5kYXRhKCksIGNsaWVudERhdGFKU09OLmdldCgpLCByZXNwb25zZS0+YXR0YWNo
bWVudCgpKS5nZXQoKSwgbmlsKTsKICAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEmIGV4Y2VwdGlvbikgewogICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9y
IGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlcklu
Zm86bmlsXSk7CiAgICAgICAgIH0pOwpAQCAtNTAwLDcgKzUxMCw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uCiB9CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotc3RhdGljIFJldGFpblB0cjxf
V0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEs
IE5TRGF0YSAqY2xpZW50RGF0YUpTT04pCitzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYgZGF0YSwgTlNEYXRhICpjbGll
bnREYXRhSlNPTiwgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlOjpBdHRhY2htZW50IGF0
dGFjaG1lbnQpCiB7CiAgICAgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudE91dHB1dHM+IGV4dGVuc2lvbnM7CiAgICAgaWYgKGRhdGEuYXBwaWQpCkBAIC01MTAsNyAr
NTIwLDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3AKICAgICBpZiAoZGF0YS51c2VySGFuZGxl
KQogICAgICAgICB1c2VySGFuZGxlID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEudXNlckhh
bmRsZS0+ZGF0YSgpIGxlbmd0aDpkYXRhLnVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKV07CiAKLSAg
ICByZXR1cm4gYWRvcHROUyhbW19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6ZGF0YS5yYXdJZC0+ZGF0YSgpIGxlbmd0aDpkYXRhLnJhd0lkLT5ieXRlTGVu
Z3RoKCldIGV4dGVuc2lvbnM6V1RGTW92ZShleHRlbnNpb25zKSBhdXRoZW50aWNhdG9yRGF0YTpb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+ZGF0YSgpIGxlbmd0
aDpkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5ieXRlTGVuZ3RoKCldIHNpZ25hdHVyZTpbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6ZGF0YS5zaWduYXR1cmUtPmRhdGEoKSBsZW5ndGg6ZGF0YS5zaWduYXR1
cmUtPmJ5dGVMZW5ndGgoKV0gdXNlckhhbmRsZTp1c2VySGFuZGxlXSk7CisgICAgcmV0dXJuIGFk
b3B0TlMoW1tfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
Q2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6W05TRGF0YSBkYXRhV2l0aEJ5dGVz
OmRhdGEucmF3SWQtPmRhdGEoKSBsZW5ndGg6ZGF0YS5yYXdJZC0+Ynl0ZUxlbmd0aCgpXSBleHRl
bnNpb25zOldURk1vdmUoZXh0ZW5zaW9ucykgYXV0aGVudGljYXRvckRhdGE6W05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmRhdGEuYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSBsZW5ndGg6ZGF0YS5hdXRo
ZW50aWNhdG9yRGF0YS0+Ynl0ZUxlbmd0aCgpXSBzaWduYXR1cmU6W05TRGF0YSBkYXRhV2l0aEJ5
dGVzOmRhdGEuc2lnbmF0dXJlLT5kYXRhKCkgbGVuZ3RoOmRhdGEuc2lnbmF0dXJlLT5ieXRlTGVu
Z3RoKCldIHVzZXJIYW5kbGU6dXNlckhhbmRsZSBhdHRhY2htZW50OmF1dGhlbnRpY2F0b3JSZXNw
b25zZUF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVudCldKTsK
IH0KICNlbmRpZgogCkBAIC01MjEsNyArNTMxLDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3AK
ICAgICBhdXRvIGhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKU09O
LmdldCgpKTsKICAgICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoaGFu
ZGxlciksIGNsaWVudERhdGFKU09OID0gV1RGTW92ZShjbGllbnREYXRhSlNPTildIChWYXJpYW50
PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U+LCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBb
Jl0oY29uc3QgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZT4mIHJlc3BvbnNlKSB7
Ci0gICAgICAgICAgICBoYW5kbGVyKHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKHJl
c3BvbnNlLT5kYXRhKCksIGNsaWVudERhdGFKU09OLmdldCgpKS5nZXQoKSwgbmlsKTsKKyAgICAg
ICAgICAgIGhhbmRsZXIod2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UocmVzcG9uc2Ut
PmRhdGEoKSwgY2xpZW50RGF0YUpTT04uZ2V0KCksIHJlc3BvbnNlLT5hdHRhY2htZW50KCkpLmdl
dCgpLCBuaWwpOwogICAgICAgICB9LCBbJl0oY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYg
ZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRo
RG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsK
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5k
ZXggNWVjNWFjNTc4YTc5MTU2MTgwMDNjMDFhYmVhYjVmMzk5ODhlMWEyMS4uYzc2ZjFkNDFhMTNk
ZDI5NTJiODY5N2UxYzk2YjczNzM0MmM2OGFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2Fs
QXV0aGVudGljYXRvci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxS
ZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4+IGdldEV4aXN0aW5nQ3JlZGVudGkK
ICAgICAgICAgfQogICAgICAgICBhdXRvJiB1c2VybmFtZSA9IGl0LT5zZWNvbmQuZ2V0U3RyaW5n
KCk7CiAKLSAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OmNyZWF0ZSh0b0FycmF5QnVmZmVyKGF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRy
QXBwbGljYXRpb25MYWJlbF0pLCB0b0FycmF5QnVmZmVyKHVzZXJIYW5kbGUpLCBTdHJpbmcodXNl
cm5hbWUpLCAoX19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVzWyhpZClrU2Vj
QXR0ckFjY2Vzc0NvbnRyb2xdKSk7CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUodG9BcnJheUJ1ZmZlcihhdHRyaWJ1
dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwgdG9BcnJheUJ1ZmZlcih1c2VySGFu
ZGxlKSwgU3RyaW5nKHVzZXJuYW1lKSwgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpYXR0
cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSwgQXV0aGVudGljYXRvclJlc3BvbnNl
OjpBdHRhY2htZW50OjpQbGF0Zm9ybSkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpA
QCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFNlY0FjY2Vzc0NvCiAKICAgICAgICAgYXV0
byBhdXRoRGF0YSA9IGJ1aWxkQXV0aERhdGEoY3JlYXRpb25PcHRpb25zLnJwLmlkLCBmbGFncywg
Y291bnRlciwgYnVpbGRBdHRlc3RlZENyZWRlbnRpYWxEYXRhKFZlY3Rvcjx1aW50OF90PihhYWd1
aWRMZW5ndGgsIDApLCBjcmVkZW50aWFsSWQsIGNvc2VQdWJsaWNLZXkpKTsKICAgICAgICAgYXV0
byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRo
RGF0YSksICIiLCB7IH0sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUpOwot
ICAgICAgICByZWNlaXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6
Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QpKTsKKyAgICAgICAgcmVjZWl2
ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50
aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OkF0dGFjaG1l
bnQ6OlBsYXRmb3JtKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ3OSw3ICs0Nzks
NyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVy
QXR0ZXN0ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgYwogICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3Qg
PSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCAiYXBwbGUiLCBXVEZN
b3ZlKGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwKSwgY3JlYXRpb25PcHRpb25zLmF0dGVzdGF0aW9u
KTsKIAogICAgIGRlbGV0ZUR1cGxpY2F0ZUNyZWRlbnRpYWwoKTsKLSAgICByZWNlaXZlUmVzcG9u
ZChBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwg
YXR0ZXN0YXRpb25PYmplY3QpKTsKKyAgICByZWNlaXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3Qs
IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXR0YWNobWVudDo6UGxhdGZvcm0pKTsKIH0KIAogdm9p
ZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429816</attachid>
            <date>2021-05-26 17:00:52 -0700</date>
            <delta_ts>2021-05-27 16:36:29 -0700</delta_ts>
            <desc>Updated patch to replace the current one</desc>
            <filename>76554090-2.patch</filename>
            <type>text/plain</type>
            <size>67848</size>
            <attacher name="Garrett Davidson">garrett_davidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZjc1MmQzOWUzYWY3Li5jN2Q5ZWI1MzIzMjgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMjEtMDUtMjYgIEdhcnJldHQgRGF2aWRzb24gIDxnYXJyZXR0X2Rh
dmlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIF9XS0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZSBzaG91bGQgc3BlY2lmeSB0aGUgYXR0YWNobWVudCB0eXBlIHVzZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTUxOQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzY1NTQwOTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgV2ViQXV0aG4gYXV0aGVudGljYXRvcnMgdG8g
cGFzcyBiYWNrIHRoZWlyIGF0dGFjaG1lbnQgdHlwZSBhbmQgY29udGludWUKKyAgICAgICAgcGx1
bWJpbmcgdGhyb3VnaCB1cCB0byB0aGUgYXV0aGVudGljYXRvciBjb29yZGluYXRvci4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IG1hbnVhbCB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
OmNyZWF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6YXR0YWNobWVudCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JSZXNwb25zZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwOgorICAg
ICAgICAoZmlkbzo6cmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKToKKyAgICAgICAgKGZp
ZG86OnJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHA6CisgICAgICAgIChmaWRvOjpy
ZWFkVTJmUmVnaXN0ZXJSZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpyZWFkVTJmU2lnblJlc3Bv
bnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0
ZXIuaDoKKwogMjAyMS0wNS0yNSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bVEZDXSBQZXJjZW50IGhlaWdodCByZXNvbHZpbmcgcXVpcmsgc2hvdWxkIHN0
b3AgYXQgdGhlIHRhYmxlIGZvcm1hdHRpbmcgY29udGV4dCByb290CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5jcHAKaW5kZXggMWMwYzA0MWVjYjM3ZS4uZDU1MWY1ZDNkMmMzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyNSArMzIsMjUgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYg
cmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVm
ZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIE9wdGlv
bmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYgZXh0ZW5zaW9ucykK
K1JlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVm
ZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgT3B0aW9uYWw8QXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJiBleHRlbnNpb25zLCBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudCBhdHRhY2htZW50KQogewotICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdFJlZigqbmV3IEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RGTW92ZShhdXRo
ZW50aWNhdG9yRGF0YSksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZSh1c2VySGFuZGxlKSkp
OworICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdFJlZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSksIFdU
Rk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZSh1c2VySGFuZGxlKSwgYXR0YWNobWVudCkpOwogICAg
IGlmIChleHRlbnNpb25zKQogICAgICAgICByZXNwb25zZS0+c2V0RXh0ZW5zaW9ucyhXVEZNb3Zl
KCpleHRlbnNpb25zKSk7CiAgICAgcmV0dXJuIHJlc3BvbnNlOwogfQogCi1SZWY8QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNy
ZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKQorUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNh
dG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgdXNlckhhbmRsZSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkK
IHsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHVzZXJoYW5kbGVCdWZmZXI7CiAgICAgaWYgKCF1
c2VySGFuZGxlLmlzRW1wdHkoKSkKICAgICAgICAgdXNlcmhhbmRsZUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUodXNlckhhbmRsZS5kYXRhKCksIHVzZXJIYW5kbGUuc2l6ZSgpKTsKLSAgICBy
ZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXpl
KCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVu
dGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgp
LCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1c2VyaGFuZGxlQnVmZmVyKSwgV1RGOjpudWxs
b3B0KTsKKyAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUocmF3SWQuZGF0YSgp
LCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JEYXRhLmRh
dGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShzaWdu
YXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1c2VyaGFuZGxlQnVmZmVy
KSwgV1RGOjpudWxsb3B0LCBhdHRhY2htZW50KTsKIH0KIAotUmVmPEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoUmVm
PEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgU3Ry
aW5nJiYgbmFtZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQorUmVmPEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
OjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNl
ckhhbmRsZSwgU3RyaW5nJiYgbmFtZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9s
LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwg
V1RGTW92ZSh1c2VySGFuZGxlKSwgV1RGTW92ZShuYW1lKSwgYWNjZXNzQ29udHJvbCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZN
b3ZlKHJhd0lkKSwgV1RGTW92ZSh1c2VySGFuZGxlKSwgV1RGTW92ZShuYW1lKSwgYWNjZXNzQ29u
dHJvbCwgYXR0YWNobWVudCkpOwogfQogCiB2b2lkIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZTo6c2V0QXV0aGVudGljYXRvckRhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aGVudGljYXRv
ckRhdGEpCkBAIC01OCwxNiArNTgsMTYgQEAgdm9pZCBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U6OnNldEF1dGhlbnRpY2F0b3JEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGF1dGgKICAgICBt
X2F1dGhlbnRpY2F0b3JEYXRhID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0
YS5kYXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSk7CiB9CiAKLUF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJh
eUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBS
ZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhh
bmRsZSkKLSAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKK0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
KFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0
b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgdXNlckhhbmRsZSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKKyAgICA6
IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgYXR0YWNobWVudCkKICAgICAs
IG1fYXV0aGVudGljYXRvckRhdGEoV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCiAgICAgLCBt
X3NpZ25hdHVyZShXVEZNb3ZlKHNpZ25hdHVyZSkpCiAgICAgLCBtX3VzZXJIYW5kbGUoV1RGTW92
ZSh1c2VySGFuZGxlKSkKIHsKIH0KIAotQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBS
ZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgU3RyaW5nJiYgbmFtZSwgU2VjQWNjZXNzQ29u
dHJvbFJlZiBhY2Nlc3NDb250cm9sKQotICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1v
dmUocmF3SWQpKQorQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZm
ZXI+JiYgdXNlckhhbmRsZSwgU3RyaW5nJiYgbmFtZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nl
c3NDb250cm9sLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQorICAgIDogQXV0
aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBhdHRhY2htZW50KQogICAgICwgbV91
c2VySGFuZGxlKFdURk1vdmUodXNlckhhbmRsZSkpCiAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1l
KSkKICAgICAsIG1fYWNjZXNzQ29udHJvbChhY2Nlc3NDb250cm9sKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmgKaW5kZXggMmFkNjY1ZTEyODE4MC4uZDFlZGNkZmI5YWExNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgOiBwdWJsaWMgQXV0
aGVudGljYXRvclJlc3BvbnNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2ln
bmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgT3B0aW9uYWw8QXV0aGVu
dGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0
b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgdXNlckhhbmRsZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3
SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTdHJpbmcmJiBuYW1lLCBTZWNBY2Nl
c3NDb250cm9sUmVmKTsKKyAgICBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYm
IGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50T3V0cHV0cz4mJiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25h
dHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlLCBBdXRoZW50aWNhdG9yQXR0
YWNobWVudCBhdHRhY2htZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJ
ZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vz
c0NvbnRyb2xSZWYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpOwogICAgIHZp
cnR1YWwgfkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAg
IEFycmF5QnVmZmVyKiBhdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aGVu
dGljYXRvckRhdGEuZ2V0KCk7IH0KQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAgIHZvaWQg
c2V0TEFDb250ZXh0KExBQ29udGV4dCAqY29udGV4dCkgeyBtX2xhQ29udGV4dCA9IGNvbnRleHQ7
IH0KIAogcHJpdmF0ZToKLSAgICBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFy
cmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmKTsKLSAgICBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uo
UmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFN0cmluZyYmLCBTZWNBY2Nl
c3NDb250cm9sUmVmKTsKKyAgICBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFy
cmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CisgICAgQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVm
ZmVyPiYmLCBTdHJpbmcmJiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgQXV0aGVudGljYXRvckF0dGFj
aG1lbnQpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6QXNz
ZXJ0aW9uOyB9CiAgICAgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhKCkgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCmluZGV4IDlkMmI4NzM0
MDRkNjQuLjRlOGI3NDllNGMwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMyLDE4ICszMiwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4m
JiBhdHRlc3RhdGlvbk9iamVjdCkKK1JlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZT4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZm
ZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RGTW92
ZShhdHRlc3RhdGlvbk9iamVjdCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RGTW92ZShhdHRlc3Rh
dGlvbk9iamVjdCksIGF0dGFjaG1lbnQpKTsKIH0KIAotUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0
YXRpb25PYmplY3QpCitSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCwgQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKLSAgICByZXR1cm4gY3JlYXRlKEFycmF5
QnVmZmVyOjpjcmVhdGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3Quc2l6ZSgp
KSk7CisgICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRhdGEoKSwg
cmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5kYXRh
KCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSksIGF0dGFjaG1lbnQpOwogfQogCi1BdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRp
b25PYmplY3QpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCkpCitB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0
ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCisgICAg
OiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIGF0dGFjaG1lbnQpCiAgICAg
LCBtX2F0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCmluZGV4IDYwY2Q2ZTdhMWIwNDUuLmE1
MDhlMGY1ZjVhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTUg
KzMzLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UgOiBwdWJsaWMgQXV0aGVudGljYXRvclJlc3BvbnNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUo
UmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25P
YmplY3QpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICBzdGF0aWMgUmVmPEF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYm
IHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0LCBB
dXRoZW50aWNhdG9yQXR0YWNobWVudCk7CiAKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAgIEFycmF5QnVmZmVyKiBhdHRlc3Rh
dGlvbk9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0ZXN0YXRpb25PYmplY3QucHRyKCk7IH0K
IAogcHJpdmF0ZToKLSAgICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWY8QXJy
YXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJik7CisgICAgQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIFR5cGU6OkF0dGVzdGF0aW9uOyB9CiAgICAgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YSBkYXRhKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggM2Q1NjZm
ODdhZWI5YS4uMDg1ZjE3Nzk0ZjRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xODUsMTMg
KzE4NSwxMyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5QwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUoY2xpZW50
RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwgPSBXVEZN
b3ZlKGFib3J0U2lnbmFsKV0gKEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiBkYXRhLCBFeGNl
cHRpb25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW2Ns
aWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YSYmIGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1l
bnQsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoYWJv
cnRTaWduYWwgJiYgYWJvcnRTaWduYWwtPmFib3J0ZWQoKSkgewogICAgICAgICAgICAgcHJvbWlz
ZS5yZWplY3QoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0ZWQgYnkgQWJvcnRTaWduYWwu
Il9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF1
dG8gcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZShXVEZNb3ZlKGRh
dGEpKSkgeworICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JSZXNwb25z
ZTo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSksIGF0dGFjaG1lbnQpKSB7CiAgICAgICAgICAgICBy
ZXNwb25zZS0+c2V0Q2xpZW50RGF0YUpTT04oV1RGTW92ZShjbGllbnREYXRhSnNvbikpOwogICAg
ICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFB1YmxpY0tleUNyZWRlbnRpYWw6OmNyZWF0ZShyZXNw
b25zZS5yZWxlYXNlTm9uTnVsbCgpKS5wdHIoKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0y
NTYsMTMgKzI1NiwxMyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJG
cm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUo
Y2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwg
PSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0gKEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiBkYXRh
LCBFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNr
ID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0
aGVudGljYXRvclJlc3BvbnNlRGF0YSYmIGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0
dGFjaG1lbnQsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBp
ZiAoYWJvcnRTaWduYWwgJiYgYWJvcnRTaWduYWwtPmFib3J0ZWQoKSkgewogICAgICAgICAgICAg
cHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0ZWQgYnkgQWJvcnRT
aWduYWwuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGF1dG8gcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZShXVEZN
b3ZlKGRhdGEpKSkgeworICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JS
ZXNwb25zZTo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSksIGF0dGFjaG1lbnQpKSB7CiAgICAgICAg
ICAgICByZXNwb25zZS0+c2V0Q2xpZW50RGF0YUpTT04oV1RGTW92ZShjbGllbnREYXRhSnNvbikp
OwogICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFB1YmxpY0tleUNyZWRlbnRpYWw6OmNyZWF0
ZShyZXNwb25zZS5yZWxlYXNlTm9uTnVsbCgpKS5wdHIoKSk7CiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaAppbmRleCBhZmYwYzZhZjFjY2E4Li41ZWY0
MDQ0N2UwNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00MSw3ICs0Miw3
IEBAIHN0cnVjdCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOwogc3RydWN0IFB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zOwogCi11c2luZyBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiwgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YSYmKT47Cit1c2luZyBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEm
JiwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQsIFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEmJik+OwogdXNpbmcgUXVlcnlDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGljYXRvckNvb3JkaW5h
dG9yQ2xpZW50PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAKaW5kZXggZDRiNzEyOTNjZjNlZC4uN2E0MTY2
OWRkNmU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmUHRyPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4gQXV0aGVudGljYXRvclJl
c3BvbnNlOjp0cnlDcmVhdGUoQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYmIGRhdGEpCitSZWZQ
dHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0
ZShBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1l
bnQgYXR0YWNobWVudCkKIHsKICAgICBpZiAoIWRhdGEucmF3SWQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNDMsMTMgKzQzLDEzIEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+
IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRlKEF1dGhlbnRpY2F0b3JSZXNwCiAgICAg
ICAgIGlmICghZGF0YS5hdHRlc3RhdGlvbk9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6
Y3JlYXRlKGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdHRlc3RhdGlvbk9iamVj
dC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF0
dGVzdGF0aW9uT2JqZWN0LnJlbGVhc2VOb25OdWxsKCksIGF0dGFjaG1lbnQpOwogICAgIH0KIAog
ICAgIGlmICghZGF0YS5hdXRoZW50aWNhdG9yRGF0YSB8fCAhZGF0YS5zaWduYXR1cmUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZTo6Y3JlYXRlKGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdXRoZW50
aWNhdG9yRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLnNpZ25hdHVyZS5yZWxlYXNlTm9uTnVs
bCgpLCBXVEZNb3ZlKGRhdGEudXNlckhhbmRsZSksIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudE91dHB1dHMgeyBkYXRhLmFwcGlkIH0pOworICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLnJhd0lkLnJlbGVhc2VOb25OdWxsKCksIGRhdGEu
YXV0aGVudGljYXRvckRhdGEucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5zaWduYXR1cmUucmVsZWFz
ZU5vbk51bGwoKSwgV1RGTW92ZShkYXRhLnVzZXJIYW5kbGUpLCBBdXRoZW50aWNhdGlvbkV4dGVu
c2lvbnNDbGllbnRPdXRwdXRzIHsgZGF0YS5hcHBpZCB9LCBhdHRhY2htZW50KTsKIH0KIAogQXV0
aGVudGljYXRvclJlc3BvbnNlRGF0YSBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmRhdGEoKSBjb25z
dApAQCAtODUsOCArODUsMTQgQEAgQXJyYXlCdWZmZXIqIEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6
Y2xpZW50RGF0YUpTT04oKSBjb25zdAogICAgIHJldHVybiBtX2NsaWVudERhdGFKU09OLmdldCgp
OwogfQogCi1BdXRoZW50aWNhdG9yUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWY8
QXJyYXlCdWZmZXI+JiYgcmF3SWQpCitBdXRoZW50aWNhdG9yQXR0YWNobWVudCBBdXRoZW50aWNh
dG9yUmVzcG9uc2U6OmF0dGFjaG1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2F0dGFjaG1l
bnQ7Cit9CisKK0F1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXV0aGVudGljYXRvclJlc3BvbnNlKFJl
ZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVu
dCkKICAgICA6IG1fcmF3SWQoV1RGTW92ZShyYXdJZCkpCisgICAgLCBtX2F0dGFjaG1lbnQoYXR0
YWNobWVudCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmgKaW5kZXggNWEzM2U3MjUwOTliMS4uM2Q5YzBi
YjhlNTY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJf
QVVUSE4pCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXR0YWNobWVudC5oIgogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCIKICNpbmNsdWRlICJJRExU
eXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Myw3ICs0NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgQXR0ZXN0YXRpb24KICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxB
dXRoZW50aWNhdG9yUmVzcG9uc2U+IHRyeUNyZWF0ZShBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRh
JiYpOworICAgIHN0YXRpYyBSZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiB0cnlDcmVhdGUo
QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYmLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRh
Y2htZW50KTsKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yUmVzcG9uc2UoKSA9IGRlZmF1bHQ7
CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKQEAgLTU0LDE0ICs1NSwxNiBA
QCBwdWJsaWM6CiAgICAgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBleHRl
bnNpb25zKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDbGllbnREYXRhSlNPTihSZWY8QXJyYXlCdWZm
ZXI+JiYpOwogICAgIEFycmF5QnVmZmVyKiBjbGllbnREYXRhSlNPTigpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQoKSBjb25zdDsK
IAogcHJvdGVjdGVkOgotICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+
JiYpOworICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIEF1dGhl
bnRpY2F0b3JBdHRhY2htZW50KTsKIAogcHJpdmF0ZToKICAgICBSZWY8QXJyYXlCdWZmZXI+IG1f
cmF3SWQ7CiAgICAgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBtX2V4dGVu
c2lvbnM7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2NsaWVudERhdGFKU09OOworICAgIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50IG1fYXR0YWNobWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IDhkMzRiZTkzZDFi
ZTQuLjE1ZTdiNmUxNmU1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8gQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAg
LTk2LDcgKzk2LDcgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBnZXRDcmVkZW50aWFsSWQoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSkKIAogLy8gRGVjb2RlcyBieXRl
IGFycmF5IHJlc3BvbnNlIGZyb20gYXV0aGVudGljYXRvciB0byBDQk9SIHZhbHVlIG9iamVjdCBh
bmQKIC8vIGNoZWNrcyBmb3IgY29ycmVjdCBlbmNvZGluZyBmb3JtYXQuCi1SZWZQdHI8QXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25z
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyLCBjb25zdCBBdHRlc3RhdGlvbkNvbnZl
eWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlvbikKK1JlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaW5CdWZmZXIsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0
dGFjaG1lbnQsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0
aW9uKQogewogICAgIGF1dG8gZGVjb2RlZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFwKGluQnVmZmVy
KTsKICAgICBpZiAoIWRlY29kZWRNYXApCkBAIC0xMzYsMTAgKzEzNiwxMCBAQCBSZWZQdHI8QXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNw
b25zZShjb25zdCBWZQogICAgICAgICBhdHRlc3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JXcml0
ZXI6OndyaXRlKENCT1IoV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdE1hcCkpKTsKICAgICB9CiAK
LSAgICByZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVk
ZW50aWFsSWQsICphdHRlc3RhdGlvbk9iamVjdCk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCAqYXR0ZXN0YXRpb25PYmpl
Y3QsIGF0dGFjaG1lbnQpOwogfQogCi1SZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aW5CdWZmZXIpCitSZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkQ1RB
UEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIsIFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7CiAgICAgYXV0byBk
ZWNvZGVkTWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2Rl
ZE1hcCkKQEAgLTE3Myw3ICsxNzMsNyBAQCBSZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3RvcgogICAgICAg
ICBpZiAoaXRyID09IHVzZXIuZW5kKCkgfHwgIWl0ci0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGF1dG8mIHVzZXJIYW5kbGUgPSBp
dHItPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7Ci0gICAgICAgIHJlc3BvbnNlID0gQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdXRoRGF0YSwgc2ln
bmF0dXJlLCB1c2VySGFuZGxlKTsKKyAgICAgICAgcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUs
IHVzZXJIYW5kbGUsIGF0dGFjaG1lbnQpOwogCiAgICAgICAgIGl0ciA9IHVzZXIuZmluZChDQk9S
KGtFbnRpdHlOYW1lTWFwS2V5KSk7CiAgICAgICAgIGlmIChpdHIgIT0gdXNlci5lbmQoKSkgewpA
QCAtMTg5LDcgKzE4OSw3IEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+
IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yCiAgICAgICAgICAgICBy
ZXNwb25zZS0+c2V0RGlzcGxheU5hbWUoaXRyLT5zZWNvbmQuZ2V0U3RyaW5nKCkpOwogICAgICAg
ICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHsg
fSk7CisgICAgICAgIHJlc3BvbnNlID0gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpj
cmVhdGUoY3JlZGVudGlhbElkLCBhdXRoRGF0YSwgc2lnbmF0dXJlLCB7IH0sIGF0dGFjaG1lbnQp
OwogICAgIH0KIAogICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNv
bnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
c3BvbnNlQ29udmVydGVyLmgKaW5kZXggMGUxM2FiZGYzOTI5ZC4uMDI5YTQ4Njg4NDY4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3Bv
bnNlQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQg
MjAxOCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmln
aHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC01MiwxMiArNTIsMTIgQEAgV0VCQ09SRV9F
WFBPUlQgQ3RhcERldmljZVJlc3BvbnNlQ29kZSBnZXRSZXNwb25zZUNvZGUoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+Jik7CiAvLyBhbmQgY29udmVydHMgcmVzcG9uc2UgdG8gQXV0aGVudGljYXRvck1h
a2VDcmVkZW50aWFsUmVzcG9uc2Ugb2JqZWN0IHdpdGgKIC8vIENCT1IgbWFwIGtleXMgdGhhdCBj
b25mb3JtIHRvIGZvcm1hdCBvZiBhdHRlc3RhdGlvbiBvYmplY3QgZGVmaW5lZCBieSB0aGUKIC8v
IFdlYkF1dGhOIHNwZWMgOiBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXV0aG4vI2ZpZy1hdHRT
dHJ1Y3RzCi1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJl
bmNlJiBhdHRlc3RhdGlvbiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2U6OkRpcmVjdCk7CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25z
dCBWZWN0b3I8dWludDhfdD4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRh
Y2htZW50LCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBh
dHRlc3RhdGlvbiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6OkRp
cmVjdCk7CiAKIC8vIERlLXNlcmlhbGl6ZXMgQ0JPUiBlbmNvZGVkIHJlc3BvbnNlIHRvIEF1dGhl
bnRpY2F0b3JHZXRBc3NlcnRpb24gLwogLy8gQXV0aGVudGljYXRvckdldE5leHRBc3NlcnRpb24g
cmVxdWVzdCB0byBBdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uUmVzcG9uc2UKIC8vIG9iamVjdC4K
LVdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
Jik7CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpOwogCiAv
LyBEZS1zZXJpYWxpemVzIENCT1IgZW5jb2RlZCByZXNwb25zZSB0byBBdXRoZW50aWNhdG9yR2V0
SW5mbyByZXF1ZXN0IHRvCiAvLyBBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlIG9iamVjdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNw
b25zZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
VTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IDJiNTQ2ZDE3Mzc4MzYuLjMzOTY5OGM0M2Zi
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZS
ZXNwb25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8vIENvcHly
aWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENv
cHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8v
CiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0
aWMgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1l
bnRGcm9tVTJmUmVnaXN0ZXJSZQogCiB9IC8vIG5hbWVzcGFjZQogCi1SZWZQdHI8QXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0
cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBjb25zdCBBdHRlc3Rh
dGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlvbikKK1JlZlB0cjxBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3Ry
aW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50IGF0dGFjaG1lbnQsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2UmIGF0dGVzdGF0aW9uKQogewogICAgIGF1dG8gcHVibGljS2V5ID0gZXh0cmFjdEVDUHVibGlj
S2V5RnJvbVUyZlJlZ2lzdHJhdGlvblJlc3BvbnNlKHUyZkRhdGEpOwogICAgIGlmIChwdWJsaWNL
ZXkuaXNFbXB0eSgpKQpAQCAtMTY3LDEwICsxNjcsMTAgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcm
IHIKIAogICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0
KFdURk1vdmUoYXV0aERhdGEpLCAiZmlkby11MmYiLCBXVEZNb3ZlKGZpZG9BdHRlc3RhdGlvblN0
YXRlbWVudCksIGF0dGVzdGF0aW9uKTsKIAotICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QpOwor
ICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRl
bnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QsIGF0dGFjaG1lbnQpOwogfQogCi1SZWZQdHI8QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0
cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgdTJmRGF0YSkKK1JlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U+IHJlYWRVMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBBdXRo
ZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQogewogICAgIGlmIChrZXlIYW5kbGUuaXNF
bXB0eSgpIHx8IHUyZkRhdGEuc2l6ZSgpIDw9IHNpZ25hdHVyZUluZGV4KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTE4Nyw3ICsxODcsNyBAQCBSZWZQdHI8QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPiByZWFkVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgYwog
ICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmU7CiAgICAgc2lnbmF0dXJlLmFwcGVuZCh1MmZE
YXRhLmRhdGEoKSArIHNpZ25hdHVyZUluZGV4LCB1MmZEYXRhLnNpemUoKSAtIHNpZ25hdHVyZUlu
ZGV4KTsKIAotICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0
ZShrZXlIYW5kbGUsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHsgfSk7CisgICAgcmV0dXJuIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGtleUhhbmRsZSwgYXV0aERhdGEsIHNp
Z25hdHVyZSwgeyB9LCBhdHRhY2htZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgZmlkbwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNl
Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVz
cG9uc2VDb252ZXJ0ZXIuaAppbmRleCBjNGYyMDFmYzA1M2U3Li5mNDYyMzQ5YTI3MDRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VD
b252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJm
UmVzcG9uc2VDb252ZXJ0ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8vIENvcHlyaWdodCAyMDE4IFRo
ZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykg
MjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vCiAvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQwLDExICs0MCwxMSBAQCBuYW1lc3BhY2UgZmlkbyB7
CiAKIC8vIENvbnZlcnRzIGEgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlIHRvIFdlYkF1dGhOIG1ha2VD
cmVkZW50aWFsIHJlc3BvbnNlLgogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2Zp
ZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29s
LXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsLWlu
dGVyb3BlcmFiaWxpdHkKLVdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3Ry
aW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIGNvbnN0IFdlYkNvcmU6
OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uID0gV2ViQ29yZTo6
QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6RGlyZWN0KTsKK1dFQkNPUkVfRVhQT1JU
IFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUy
ZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHUyZkRhdGEsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQs
IGNvbnN0IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0
aW9uID0gV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6RGlyZWN0KTsK
IAogLy8gQ29udmVydHMgYSBVMkYgYXV0aGVudGljYXRpb24gcmVzcG9uc2UgdG8gV2ViQXV0aE4g
Z2V0QXNzZXJ0aW9uIHJlc3BvbnNlLgogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNz
L2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3Rv
Y29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0aGVudGljYXRvckdldEFzc2VydGlvbi1p
bnRlcm9wZXJhYmlsaXR5Ci1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYg
cnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgdTJmRGF0YSk7CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYg
cnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgdTJmRGF0YSwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVu
dCk7CiAKIH0gLy8gbmFtZXNwYWNlIGZpZG8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NGMzOWJiNDk5OGQ3Li44
NmI2M2M5ZGVmZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA1LTI2ICBHYXJy
ZXR0IERhdmlkc29uICA8Z2FycmV0dF9kYXZpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Ugc2hvdWxkIHNwZWNpZnkgdGhl
IGF0dGFjaG1lbnQgdHlwZSB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU1MTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTU0MDkwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhdmUgV2Vi
QXV0aG4gYXV0aGVudGljYXRvcnMgc3RhcnQgcGFzc2luZyBiYWNrIHRoZWlyIGF0dGFjaG1lbnQg
dHlwZSwgYW5kIHBsdW1iCisgICAgICAgIGl0IHVwIHRocm91Z2ggdG8gdGhlIGNhbGxpbmcgcHJv
Y2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLm1tOgorICAgICAgICAoLVtfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2UgaW5pdFdpdGhDbGllbnREYXRhSlNPTjpyYXdJZDpleHRlbnNpb25zOmF1dGhlbnRp
Y2F0b3JEYXRhOnNpZ25hdHVyZTp1c2VySGFuZGxlOmF0dGFjaG1lbnQ6XSk6CisgICAgICAgICgt
W19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09O
OnJhd0lkOmV4dGVuc2lvbnM6YXV0aGVudGljYXRvckRhdGE6c2lnbmF0dXJlOnVzZXJIYW5kbGU6
XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW06CisgICAgICAgICgt
W19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGluaXRXaXRoQ2xpZW50RGF0YUpT
T046cmF3SWQ6ZXh0ZW5zaW9uczphdHRlc3RhdGlvbk9iamVjdDphdHRhY2htZW50Ol0pOgorICAg
ICAgICAoLVtfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSBpbml0V2l0aENsaWVu
dERhdGFKU09OOnJhd0lkOmV4dGVuc2lvbnM6YXR0ZXN0YXRpb25PYmplY3Q6XSk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRoZW50aWNhdG9yUmVzcG9uc2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F1dGhlbnRpY2F0b3JSZXNwb25zZS5tbToKKyAgICAgICAgKC1bX1dLQXV0aGVudGljYXRvclJl
c3BvbnNlIGluaXRXaXRoQ2xpZW50RGF0YUpTT046cmF3SWQ6ZXh0ZW5zaW9uczphdHRhY2htZW50
Ol0pOgorICAgICAgICAoLVtfV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UgaW5pdFdpdGhDbGllbnRE
YXRhSlNPTjpyYXdJZDpleHRlbnNpb25zOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlSW50ZXJuYWwuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAg
ICAgIChhdXRoZW50aWNhdG9yQXR0YWNobWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudCk6
CisgICAgICAgICh3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKToKKyAgICAgICAg
KC1bX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBtYWtlQ3JlZGVudGlhbFdpdGhDaGFsbGVuZ2U6
b3JpZ2luOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICh3a0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgZ2V0QXNzZXJ0aW9uV2l0aENoYWxsZW5nZTpvcmlnaW46b3B0aW9uczpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxBdXRoZW50aWNhdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0
b3JJbnRlcm5hbDo6Z2V0RXhpc3RpbmdDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJLaXQ6Okxv
Y2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpoYW5kbGVSZXF1ZXN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlh
bEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBBdXRoZW50aWNh
dG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAg
IChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldE5leHRBc3NlcnRpb25BZnRl
clJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50
aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRl
clJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFdlYkF1dGhuUHJv
Y2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJBdXRo
blByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAy
MDIxLTA1LTI1ICBNYXR0IE1va2FyeSAgPG1tb2thcnlAYXBwbGUuY29tPgogCiAgICAgICAgIEVu
c3VyZSBhcHAgaGlnaGxpZ2h0IHZpc2liaWxpdHkgb2JzZXJ2ZXIgaXMgaW5pdGlhbGl6ZWQgYmVm
b3JlIGFkZGluZyBhIG5ldyBoaWdobGlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLm1tCmluZGV4IDM4N2YyMjRiNWZlMmQuLjQ2MThiZTBkMjJhZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw5ICszMiw5IEBACiAKIEBp
bXBsZW1lbnRhdGlvbiBfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UKIAotLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09O
IHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGlj
YXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25zIGF1dGhlbnRpY2F0b3JE
YXRhOihOU0RhdGEgKilhdXRoZW50aWNhdG9yRGF0YSBzaWduYXR1cmU6KE5TRGF0YSAqKXNpZ25h
dHVyZSB1c2VySGFuZGxlOihOU0RhdGEgKil1c2VySGFuZGxlCistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0
YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXV0aGVudGljYXRvckRhdGE6KE5TRGF0YSAq
KWF1dGhlbnRpY2F0b3JEYXRhIHNpZ25hdHVyZTooTlNEYXRhICopc2lnbmF0dXJlIHVzZXJIYW5k
bGU6KE5TRGF0YSAqKXVzZXJIYW5kbGUgYXR0YWNobWVudDooX1dLQXV0aGVudGljYXRvckF0dGFj
aG1lbnQpYXR0YWNobWVudAogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhDbGll
bnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpyYXdJZCBleHRlbnNpb25zOldURk1vdmUo
ZXh0ZW5zaW9ucyldKSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoQ2xpZW50RGF0
YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6cmF3SWQgZXh0ZW5zaW9uczpXVEZNb3ZlKGV4dGVu
c2lvbnMpIGF0dGFjaG1lbnQ6YXR0YWNobWVudF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgX2F1dGhlbnRpY2F0b3JEYXRhID0gYXV0aGVudGljYXRvckRhdGE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oCmluZGV4IGVlZjZhMTQ3
YTNiMDYuLmY0ODkzODk1ZjYyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDcgQEAgTlNfQVNTVU1FX05PTk5VTExf
QkVHSU4KIAogQGludGVyZmFjZSBfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgKCkK
IAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVu
dERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dL
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25zIGF1dGhl
bnRpY2F0b3JEYXRhOihOU0RhdGEgKilhdXRoZW50aWNhdG9yRGF0YSBzaWduYXR1cmU6KE5TRGF0
YSAqKXNpZ25hdHVyZSB1c2VySGFuZGxlOihOU0RhdGEgKil1c2VySGFuZGxlOworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJh
d0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRp
b25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25zIGF1dGhlbnRpY2F0b3JEYXRh
OihOU0RhdGEgKilhdXRoZW50aWNhdG9yRGF0YSBzaWduYXR1cmU6KE5TRGF0YSAqKXNpZ25hdHVy
ZSB1c2VySGFuZGxlOihOU0RhdGEgKil1c2VySGFuZGxlIGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRp
Y2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQ7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLm1tCmluZGV4IDNiMTkxZmVkZjU3OTkuLmJkYzBlMzVi
OTI0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0K
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzIsOSArMzIsOSBAQAogCiBAaW1wbGVtZW50YXRpb24gX1dLQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5T
RGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihS
ZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRl
bnNpb25zIGF0dGVzdGF0aW9uT2JqZWN0OihOU0RhdGEgKilhdHRlc3RhdGlvbk9iamVjdAorLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFK
U09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVu
dGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25zIGF0dGVzdGF0aW9u
T2JqZWN0OihOU0RhdGEgKilhdHRlc3RhdGlvbk9iamVjdCBhdHRhY2htZW50OihfV0tBdXRoZW50
aWNhdG9yQXR0YWNobWVudClhdHRhY2htZW50CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0V2l0aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOnJhd0lkIGV4dGVuc2lv
bnM6V1RGTW92ZShleHRlbnNpb25zKV0pKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpyYXdJZCBleHRlbnNpb25zOldU
Rk1vdmUoZXh0ZW5zaW9ucykgYXR0YWNobWVudDphdHRhY2htZW50XSkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKICAgICBfYXR0ZXN0YXRpb25PYmplY3QgPSBhdHRlc3RhdGlvbk9iamVjdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5hbC5o
CmluZGV4IDA2YjE4MDdkODVlZDIuLmFhZmJmMGJkNDNmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw3IEBA
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBpbnRlcmZhY2UgX1dLQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UgKCkKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0
YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRl
bnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0
cz4mJilleHRlbnNpb25zIGF0dGVzdGF0aW9uT2JqZWN0OihOU0RhdGEgKilhdHRlc3RhdGlvbk9i
amVjdDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKilj
bGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRy
PF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBh
dHRlc3RhdGlvbk9iamVjdDooTlNEYXRhICopYXR0ZXN0YXRpb25PYmplY3QgYXR0YWNobWVudDoo
X1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQpYXR0YWNobWVudDsKIAogQGVuZAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJl
c3BvbnNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGlj
YXRvclJlc3BvbnNlLmgKaW5kZXggMTFlZGQ5NDQ0OTQ3Zi4uNjVhYmU1ZTcxYzBmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JS
ZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRo
ZW50aWNhdG9yUmVzcG9uc2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2ltcG9y
dCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0F1dGhlbnRpY2F0
b3JBdHRhY2htZW50Lmg+CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCkBA
IC0zNiw2ICszNyw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBXS19DTEFTU19BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgX1dLQXV0
aGVudGljYXRvclJlc3BvbnNlIDogTlNPYmplY3QKIAorQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50OwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0RhdGEgKmNsaWVudERhdGFKU09OOwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0RhdGEgKnJhd0lkOwogQHByb3BlcnR5IChudWxsYWJs
ZSwgbm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRPdXRwdXRzICpleHRlbnNpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UubW0KaW5k
ZXggODlkMDYxN2VlZDc0Yi4uYjY4MGVhYjdkODBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNl
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMzLDcgKzMzLDcgQEAKICAgICBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50T3V0cHV0cz4gX2V4dGVuc2lvbnM7CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRh
ICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9u
c0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xp
ZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJ
ZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50
T3V0cHV0cz4mJilleHRlbnNpb25zIGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50KWF0dGFjaG1lbnQKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKQEAgLTQxLDYgKzQxLDggQEAKICAgICBfY2xpZW50RGF0YUpTT04gPSBj
bGllbnREYXRhSlNPTjsKICAgICBfcmF3SWQgPSByYXdJZDsKICAgICBfZXh0ZW5zaW9ucyA9IGV4
dGVuc2lvbnM7CisgICAgX2F0dGFjaG1lbnQgPSBhdHRhY2htZW50OworCiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRoZW50aWNhdG9yUmVzcG9uc2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZUludGVybmFsLmgKaW5kZXggYjBm
YWVmYmY0N2ZhMy4uMzZhMjI1MzI3YzBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZUludGVybmFsLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25z
ZUludGVybmFsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzQsNyArMzQsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAaW50
ZXJmYWNlIF9XS0F1dGhlbnRpY2F0b3JSZXNwb25zZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0
YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnM7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhD
bGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJh
d0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0YWNobWVudDooX1dLQXV0aGVudGljYXRvckF0dGFj
aG1lbnQpYXR0YWNobWVudDsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmlu
ZGV4IDdhNzdjMGFiYzdmODIuLmQ2NzA1MzQ4ZmFhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCkBAIC00NTgsOSArNDU4LDE5IEBAIHN0YXRpYyBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRJbnB1dHMgYXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpCiB9CiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiBkYXRhLCBOU0RhdGEgKmNs
aWVudERhdGFKU09OKQorc3RhdGljIF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50VG9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0TlMoW1tf
V0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGllbnRE
YXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5y
YXdJZC0+ZGF0YSgpIGxlbmd0aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6
bmlsIGF0dGVzdGF0aW9uT2JqZWN0OltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmF0dGVzdGF0
aW9uT2JqZWN0LT5kYXRhKCkgbGVuZ3RoOmRhdGEuYXR0ZXN0YXRpb25PYmplY3QtPmJ5dGVMZW5n
dGgoKV1dKTsKKyAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpIHsKKyAgICBjYXNlIFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybToKKyAgICAgICAgcmV0dXJuIF9XS0F1dGhl
bnRpY2F0b3JBdHRhY2htZW50UGxhdGZvcm07CisgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybToKKyAgICAgICAgcmV0dXJuIF9XS0F1dGhlbnRp
Y2F0b3JBdHRhY2htZW50Q3Jvc3NQbGF0Zm9ybTsKKyAgICB9Cit9CisKK3N0YXRpYyBSZXRhaW5Q
dHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YSYgZGF0YSwgTlNEYXRhICpjbGllbnREYXRhSlNPTiwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0
dGFjaG1lbnQgYXR0YWNobWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aENsaWVudERhdGFKU09OOmNs
aWVudERhdGFKU09OIHJhd0lkOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLnJhd0lkLT5kYXRh
KCkgbGVuZ3RoOmRhdGEucmF3SWQtPmJ5dGVMZW5ndGgoKV0gZXh0ZW5zaW9uczpuaWwgYXR0ZXN0
YXRpb25PYmplY3Q6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuYXR0ZXN0YXRpb25PYmplY3Qt
PmRhdGEoKSBsZW5ndGg6ZGF0YS5hdHRlc3RhdGlvbk9iamVjdC0+Ynl0ZUxlbmd0aCgpXSBhdHRh
Y2htZW50OiBhdXRoZW50aWNhdG9yQXR0YWNobWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNobWVu
dChhdHRhY2htZW50KV0pOwogfQogI2VuZGlmCiAKQEAgLTQ3MSw3ICs0ODEsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiB3a0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvbgogICAgIGF1dG8gaGFzaCA9IHByb2R1Y2VDbGllbnREYXRhSnNvbkhh
c2goY2xpZW50RGF0YUpTT04uZ2V0KCkpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBbaGFuZGxlciA9
IG1ha2VCbG9ja1B0cihoYW5kbGVyKSwgY2xpZW50RGF0YUpTT04gPSBXVEZNb3ZlKGNsaWVudERh
dGFKU09OKV0gKFZhcmlhbnQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZT4sIFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgV1RGOjpz
d2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3Bv
bnNlPiYgcmVzcG9uc2UpIHsKLSAgICAgICAgICAgIGhhbmRsZXIod2tBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZShyZXNwb25zZS0+ZGF0YSgpLCBjbGllbnREYXRhSlNPTi5nZXQoKSku
Z2V0KCksIG5pbCk7CisgICAgICAgICAgICBoYW5kbGVyKHdrQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UocmVzcG9uc2UtPmRhdGEoKSwgY2xpZW50RGF0YUpTT04uZ2V0KCksIHJlc3Bv
bnNlLT5hdHRhY2htZW50KCkpLmdldCgpLCBuaWwpOwogICAgICAgICB9LCBbJl0oY29uc3QgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBoYW5kbGVyKG5p
bCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5r
bm93biB1c2VySW5mbzpuaWxdKTsKICAgICAgICAgfSk7CkBAIC01MDAsNyArNTEwLDcgQEAgc3Rh
dGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gd2tBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb24KIH0KIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi1zdGF0aWMg
UmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNl
RGF0YSYgZGF0YSwgTlNEYXRhICpjbGllbnREYXRhSlNPTikKK3N0YXRpYyBSZXRhaW5QdHI8X1dL
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiBkYXRhLCBO
U0RhdGEgKmNsaWVudERhdGFKU09OLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBh
dHRhY2htZW50KQogewogICAgIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzPiBleHRlbnNpb25zOwogICAgIGlmIChkYXRhLmFwcGlkKQpAQCAtNTEwLDcg
KzUyMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiB3a0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwCiAgICAgaWYgKGRhdGEudXNlckhhbmRs
ZSkKICAgICAgICAgdXNlckhhbmRsZSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLnVzZXJI
YW5kbGUtPmRhdGEoKSBsZW5ndGg6ZGF0YS51c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCldOwogCi0g
ICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6W05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRhdGEoKSBsZW5ndGg6ZGF0YS5yYXdJZC0+Ynl0ZUxl
bmd0aCgpXSBleHRlbnNpb25zOldURk1vdmUoZXh0ZW5zaW9ucykgYXV0aGVudGljYXRvckRhdGE6
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSBsZW5n
dGg6ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+Ynl0ZUxlbmd0aCgpXSBzaWduYXR1cmU6W05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmRhdGEuc2lnbmF0dXJlLT5kYXRhKCkgbGVuZ3RoOmRhdGEuc2lnbmF0
dXJlLT5ieXRlTGVuZ3RoKCldIHVzZXJIYW5kbGU6dXNlckhhbmRsZV0pOworICAgIHJldHVybiBh
ZG9wdE5TKFtbX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOltOU0RhdGEgZGF0YVdpdGhCeXRl
czpkYXRhLnJhd0lkLT5kYXRhKCkgbGVuZ3RoOmRhdGEucmF3SWQtPmJ5dGVMZW5ndGgoKV0gZXh0
ZW5zaW9uczpXVEZNb3ZlKGV4dGVuc2lvbnMpIGF1dGhlbnRpY2F0b3JEYXRhOltOU0RhdGEgZGF0
YVdpdGhCeXRlczpkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCkgbGVuZ3RoOmRhdGEuYXV0
aGVudGljYXRvckRhdGEtPmJ5dGVMZW5ndGgoKV0gc2lnbmF0dXJlOltOU0RhdGEgZGF0YVdpdGhC
eXRlczpkYXRhLnNpZ25hdHVyZS0+ZGF0YSgpIGxlbmd0aDpkYXRhLnNpZ25hdHVyZS0+Ynl0ZUxl
bmd0aCgpXSB1c2VySGFuZGxlOnVzZXJIYW5kbGUgYXR0YWNobWVudDphdXRoZW50aWNhdG9yQXR0
YWNobWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudChhdHRhY2htZW50KV0pOwogfQogI2Vu
ZGlmCiAKQEAgLTUyMSw3ICs1MzEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcAogICAgIGF1
dG8gaGFzaCA9IHByb2R1Y2VDbGllbnREYXRhSnNvbkhhc2goY2xpZW50RGF0YUpTT04uZ2V0KCkp
OwogICAgIGF1dG8gY2FsbGJhY2sgPSBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihoYW5kbGVyKSwg
Y2xpZW50RGF0YUpTT04gPSBXVEZNb3ZlKGNsaWVudERhdGFKU09OKV0gKFZhcmlhbnQ8UmVmPFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25z
dCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlPiYgcmVzcG9uc2UpIHsKLSAgICAg
ICAgICAgIGhhbmRsZXIod2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UocmVzcG9uc2Ut
PmRhdGEoKSwgY2xpZW50RGF0YUpTT04uZ2V0KCkpLmdldCgpLCBuaWwpOworICAgICAgICAgICAg
aGFuZGxlcih3a0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShyZXNwb25zZS0+ZGF0YSgp
LCBjbGllbnREYXRhSlNPTi5nZXQoKSwgcmVzcG9uc2UtPmF0dGFjaG1lbnQoKSkuZ2V0KCksIG5p
bCk7CiAgICAgICAgIH0sIFsmXShjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRp
b24pIHsKICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46
V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOwogICAgICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCBmMjJm
MGY4YjdhZGE5Li5hMTAxNzI5ZDA0NTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRo
ZW50aWNhdG9yLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE3NCw3ICsxNzQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFJlZjxB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4gZ2V0RXhpc3RpbmdDcmVkZW50aQogICAg
ICAgICB9CiAgICAgICAgIGF1dG8mIHVzZXJuYW1lID0gaXQtPnNlY29uZC5nZXRTdHJpbmcoKTsK
IAotICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZTo6Y3JlYXRlKHRvQXJyYXlCdWZmZXIoYXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBs
aWNhdGlvbkxhYmVsXSksIHRvQXJyYXlCdWZmZXIodXNlckhhbmRsZSksIFN0cmluZyh1c2VybmFt
ZSksIChfX2JyaWRnZSBTZWNBY2Nlc3NDb250cm9sUmVmKWF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRy
QWNjZXNzQ29udHJvbF0pKTsKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSh0b0FycmF5QnVmZmVyKGF0dHJpYnV0ZXNb
KGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF0pLCB0b0FycmF5QnVmZmVyKHVzZXJIYW5kbGUp
LCBTdHJpbmcodXNlcm5hbWUpLCAoX19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1
dGVzWyhpZClrU2VjQXR0ckFjY2Vzc0NvbnRyb2xdLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6
UGxhdGZvcm0pKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQzMyw3ICs0MzMs
NyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVy
VXNlclZlcmlmaWNhdGlvbihTZWNBY2Nlc3NDbwogCiAgICAgICAgIGF1dG8gYXV0aERhdGEgPSBi
dWlsZEF1dGhEYXRhKGNyZWF0aW9uT3B0aW9ucy5ycC5pZCwgZmxhZ3MsIGNvdW50ZXIsIGJ1aWxk
QXR0ZXN0ZWRDcmVkZW50aWFsRGF0YShWZWN0b3I8dWludDhfdD4oYWFndWlkTGVuZ3RoLCAwKSwg
Y3JlZGVudGlhbElkLCBjb3NlUHVibGljS2V5KSk7CiAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25P
YmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCAiIiwgeyB9
LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsKLSAgICAgICAgcmVjZWl2
ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50
aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KSk7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3Rh
dGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIExvY2FsQXV0aGVudGlj
YXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQoVmVjdG9yPHVpbnQ4X3Q+
JiYgYwogICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0
KFdURk1vdmUoYXV0aERhdGEpLCAiYXBwbGUiLCBXVEZNb3ZlKGF0dGVzdGF0aW9uU3RhdGVtZW50
TWFwKSwgY3JlYXRpb25PcHRpb25zLmF0dGVzdGF0aW9uKTsKIAogICAgIGRlbGV0ZUR1cGxpY2F0
ZUNyZWRlbnRpYWwoKTsKLSAgICByZWNlaXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QpKTsKKyAg
ICByZWNlaXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRl
KGNyZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
OjpQbGF0Zm9ybSkpOwogfQogCiB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmNwcAppbmRleCBhZjNmOTE5NjZjMzcxLi4xY2EwZGUwNGUwMWNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcwLDkgKzcwLDkg
QEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdChX
ZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXQKICAgICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIg
PSBXVEZNb3ZlKGhhbmRsZXIpXSAoVmFyaWFudDxSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiwg
RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFJl
ZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiByZXNwb25zZSkgewotICAgICAgICAgICAgaGFuZGxl
cihyZXNwb25zZS0+ZGF0YSgpLCB7IH0pOworICAgICAgICAgICAgaGFuZGxlcihyZXNwb25zZS0+
ZGF0YSgpLCByZXNwb25zZS0+YXR0YWNobWVudCgpLCB7IH0pOwogICAgICAgICB9LCBbJl0oY29u
c3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBoYW5kbGVyKHsgfSwg
ZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFj
aG1lbnQpMCwgZXhjZXB0aW9uKTsKICAgICAgICAgfSk7CiAgICAgfTsKICAgICBtX3dlYlBhZ2VQ
cm94eS53ZWJzaXRlRGF0YVN0b3JlKCkuYXV0aGVudGljYXRvck1hbmFnZXIoKS5oYW5kbGVSZXF1
ZXN0KFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDMzZWIwN2YzOTIwMDUu
LmYwOGUyNDc1ZTk3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBA
IC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkoKTsKIAogcHJpdmF0ZToKLSAgICB1c2luZyBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNw
b25zZURhdGEmLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+OworICAgIHVzaW5nIFJl
cXVlc3RDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
dHRhY2htZW50LCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+OwogICAgIHVzaW5nIFF1
ZXJ5Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPjsKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkZjk4
YjhlMzZjMjg2Li5jYjkzYzg5ZjI0NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMSw0ICsx
LDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw4ICsyNiw4IEBACiAKIG1l
c3NhZ2VzIC0+IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IE5vdFJlZkNvdW50ZWQg
ewogCi0gICAgTWFrZUNyZWRlbnRpYWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBWZWN0b3I8dWludDhfdD4g
aGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMg
b3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6
QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSBleGNlcHRpb24pIEFzeW5jCi0gICAgR2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywg
VmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+IChz
dHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBzdHJ1Y3QgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAgTWFrZUNyZWRlbnRpYWwo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5m
b0RhdGEgZnJhbWVJbmZvLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5n
VXNlckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YSBkYXRhLCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2ht
ZW50LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAg
R2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVj
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgYm9v
bCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YSBkYXRhLCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNo
bWVudCBhdHRhY2htZW50LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24p
IEFzeW5jCiAgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxl
KCkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhl
bnRpY2F0b3IuY3BwCmluZGV4IGVmODVhMzE4ODg1ZmMuLjU5ODE1MzhiMDY4MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1
dGhlbnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIEN0
YXBBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAKIHZvaWQgQ3RhcEF1dGhlbnRpY2F0
b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVu
dGlhbFJlc3BvbnNlKGRhdGEsIFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykuYXR0ZXN0YXRpb24pOworICAgIGF1dG8gcmVz
cG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoZGF0YSwgQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0sIFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykuYXR0ZXN0YXRpb24pOwogICAg
IGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgYXV0byBlcnJvciA9IGdldFJlc3BvbnNlQ29kZShk
YXRhKTsKIApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmdldEFz
c2VydGlvbigpCiAKIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9u
QWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgYXV0
byByZXNwb25zZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoZGF0YSk7CisgICAgYXV0
byByZXNwb25zZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoZGF0YSwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIGlmICghcmVzcG9uc2UpIHsKICAg
ICAgICAgYXV0byBlcnJvciA9IGdldFJlc3BvbnNlQ29kZShkYXRhKTsKIApAQCAtMTg1LDcgKzE4
NSw3IEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90CiAKIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlR2V0TmV4dEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQogewotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUEdldEFzc2VydGlv
blJlc3BvbnNlKGRhdGEpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUEdldEFzc2VydGlv
blJlc3BvbnNlKGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsK
ICAgICBpZiAoIXJlc3BvbnNlKSB7CiAgICAgICAgIGF1dG8gZXJyb3IgPSBnZXRSZXNwb25zZUNv
ZGUoZGF0YSk7CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6ICIs
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGVycm9yKSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRo
ZW50aWNhdG9yLmNwcAppbmRleCBjNzU3NTlmYTMyZDk4Li5jMzA0OGQ2OTY1NmY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1
dGhlbnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgVTJm
QXV0aGVudGljYXRvcjo6Y29udGludWVSZWdpc3RlckNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2
ZWQoQXBkdVJlc3BvbnNlCiAgICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0YXR1czo6U1dfTk9fRVJS
T1I6IHsKICAgICAgICAgYXV0byYgb3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAgICAgICAgIGF1dG8g
YXBwSWQgPSBwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKG9wdGlvbnMu
ZXh0ZW5zaW9ucyk7Ci0gICAgICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNw
b25zZSghYXBwSWQgPyBvcHRpb25zLnJwLmlkIDogYXBwSWQsIGFwZHVSZXNwb25zZS5kYXRhKCks
IG9wdGlvbnMuYXR0ZXN0YXRpb24pOworICAgICAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJl
Z2lzdGVyUmVzcG9uc2UoIWFwcElkID8gb3B0aW9ucy5ycC5pZCA6IGFwcElkLCBhcGR1UmVzcG9u
c2UuZGF0YSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSwgb3B0aW9u
cy5hdHRlc3RhdGlvbik7CiAgICAgICAgIGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgICAgIHJl
Y2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBwYXJz
ZSB0aGUgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlLiJfcyB9KTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTIwOCw5ICsyMDgsOSBAQCB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNv
bW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQXBkdVJlc3BvbnNlJiYgYQogICAgICAgICBSZWZQ
dHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZXNwb25zZTsKICAgICAgICAgaWYg
KG1faXNBcHBJZCkgewogICAgICAgICAgICAgQVNTRVJUKHJlcXVlc3RPcHRpb25zLmV4dGVuc2lv
bnMgJiYgIXJlcXVlc3RPcHRpb25zLmV4dGVuc2lvbnMtPmFwcGlkLmlzTnVsbCgpKTsKLSAgICAg
ICAgICAgIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShyZXF1ZXN0T3B0aW9ucy5leHRl
bnNpb25zLT5hcHBpZCwgcmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFsc1ttX25leHRMaXN0
SW5kZXggLSAxXS5pZFZlY3RvciwgYXBkdVJlc3BvbnNlLmRhdGEoKSk7CisgICAgICAgICAgICBy
ZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UocmVxdWVzdE9wdGlvbnMuZXh0ZW5zaW9ucy0+
YXBwaWQsIHJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHNbbV9uZXh0TGlzdEluZGV4IC0g
MV0uaWRWZWN0b3IsIGFwZHVSZXNwb25zZS5kYXRhKCksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
OjpDcm9zc1BsYXRmb3JtKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXNwb25zZSA9
IHJlYWRVMmZTaWduUmVzcG9uc2UocmVxdWVzdE9wdGlvbnMucnBJZCwgcmVxdWVzdE9wdGlvbnMu
YWxsb3dDcmVkZW50aWFsc1ttX25leHRMaXN0SW5kZXggLSAxXS5pZFZlY3RvciwgYXBkdVJlc3Bv
bnNlLmRhdGEoKSk7CisgICAgICAgICAgICByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2Uo
cmVxdWVzdE9wdGlvbnMucnBJZCwgcmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFsc1ttX25l
eHRMaXN0SW5kZXggLSAxXS5pZFZlY3RvciwgYXBkdVJlc3BvbnNlLmRhdGEoKSwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgICAgICBpZiAoIXJlc3BvbnNlKSB7
CiAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9y
LCAiQ291bGRuJ3QgcGFyc2UgdGhlIFUyRiBzaWduIHJlc3BvbnNlLiJfcyB9KTsKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dl
YkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhu
UHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDUxZTczYTZm
MmY5NzIuLjJkMjdjY2JlMzUwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Q
cm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04
Miw5ICs4Miw5IEBAIHZvaWQgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYW5kbGVS
ZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmCiAgICAgYXV0byBjYWxsYmFjayA9
IFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKFZhcmlhbnQ8UmVmPEF1dGhlbnRpY2F0b3JS
ZXNwb25zZT4sIEV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsm
XShjb25zdCBSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiYgcmVzcG9uc2UpIHsKLSAgICAgICAg
ICAgIGhhbmRsZXIocmVzcG9uc2UtPmRhdGEoKSwgeyB9KTsKKyAgICAgICAgICAgIGhhbmRsZXIo
cmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPmF0dGFjaG1lbnQoKSwgeyB9KTsKICAgICAgICAg
fSwgWyZdKGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgewotICAgICAgICAgICAgaGFu
ZGxlcih7IH0sIGV4Y2VwdGlvbik7CisgICAgICAgICAgICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50KTAsIGV4Y2VwdGlvbik7CiAgICAgICAgIH0pOwogICAgIH07CiAgICAg
bV9XZWJBdXRoblByb2Nlc3MtPmF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkuaGFuZGxlUmVxdWVzdChX
VEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IGJmNmY3YzY1NWQ5NjUuLjU1YTMxNjE1YzcwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckF0dGFjaG1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAt
NTcsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVy
OyB9CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VE
YXRhJiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKKyAgICB1c2luZyBSZXF1ZXN0
Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNo
bWVudCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKICAgICB1c2luZyBRdWVyeUNv
bXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47CiAKICAgICBX
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQXV0aG5Qcm9jZXNzJiwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJB
dXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMjliNGMxZGU5N2Ji
Zi4uYWM3M2E5NTM2YTg5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nl
c3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNCw4ICsyNCw4IEBACiAKIG1lc3NhZ2VzIC0+IFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyB7CiAKLSAgICBNYWtlQ3JlZGVudGlhbChWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucywgYm9v
bCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRp
b24pIEFzeW5jCi0gICAgR2V0QXNzZXJ0aW9uKFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMsIGJvb2wg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9u
KSBBc3luYworICAgIE1ha2VDcmVkZW50aWFsKFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zLCBib29s
IHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
UmVzcG9uc2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50IGF0dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlvbikg
QXN5bmMKKyAgICBHZXRBc3NlcnRpb24oVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJD
b3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9j
ZXNzaW5nVXNlckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3Bv
bnNlRGF0YSBkYXRhLCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBh
dHRhY2htZW50LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5j
CiAgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCkgLT4g
KGJvb2wgcmVzdWx0KSBBc3luYwogCiAgICAgU2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429952</attachid>
            <date>2021-05-27 16:36:31 -0700</date>
            <delta_ts>2021-05-28 11:29:02 -0700</delta_ts>
            <desc>Garrett&apos;s Patch (Rebaselined)</desc>
            <filename>bug-225519-20210527163630.patch</filename>
            <type>text/plain</type>
            <size>69463</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk2YzBkZTQwM2FlOWVl
MGQwMWRhMGMzZDczODg5MzcxYTgyMDc5Ny4uODg1MmUxOTE4YjAxZmFjNTg5ZTljMTUxZTQxODk5
NTE4YmFlOGJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTA1LTI3ICBHYXJy
ZXR0IERhdmlkc29uICA8Z2FycmV0dF9kYXZpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Ugc2hvdWxkIHNwZWNpZnkgdGhl
IGF0dGFjaG1lbnQgdHlwZSB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU1MTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTU0MDkwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IFdl
YkF1dGhuIGF1dGhlbnRpY2F0b3JzIHRvIHBhc3MgYmFjayB0aGVpciBhdHRhY2htZW50IHR5cGUg
YW5kIGNvbnRpbnVlCisgICAgICAgIHBsdW1iaW5nIHRocm91Z2ggdXAgdG8gdGhlIGF1dGhlbnRp
Y2F0b3IgY29vcmRpbmF0b3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBtYW51YWwgdGVzdHMuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNw
b25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmF0dGFjaG1l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlOjpBdXRo
ZW50aWNhdG9yUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvclJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
c3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAgICAgKGZpZG86OnJlYWRDVEFQTWFrZUNyZWRlbnRp
YWxSZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpyZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0
ZXIuY3BwOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UpOgorICAgICAg
ICAoZmlkbzo6cmVhZFUyZlNpZ25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmg6CisKIDIwMjEtMDUtMjcgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0hhcmRlbmluZ10gVXNlIGEgUkVM
RUFTRV9BU1NFUlQgZm9yIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGNvbnN0cnVjdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDZiNTc4YjZkODdmY2Y0ODFmYWNhMTViNWU1ZjY5MzNhOThjZTUxOTEuLmFlOWM4Y2E2ODgy
NWJmMDMxMmI5OGNhY2I3ODI2ZDQ3NmYyZTA2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAK
KzIwMjEtMDUtMjcgIEdhcnJldHQgRGF2aWRzb24gIDxnYXJyZXR0X2Rhdmlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ29jb2FdIF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBz
aG91bGQgc3BlY2lmeSB0aGUgYXR0YWNobWVudCB0eXBlIHVzZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTUxOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzY1NTQwOTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSGF2ZSBXZWJBdXRobiBhdXRoZW50aWNhdG9ycyBzdGFydCBwYXNzaW5nIGJhY2sg
dGhlaXIgYXR0YWNobWVudCB0eXBlLCBhbmQgcGx1bWIKKyAgICAgICAgaXQgdXAgdGhyb3VnaCB0
byB0aGUgY2FsbGluZyBwcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UubW06CisgICAgICAgICgtW19XS0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJhd0lkOmV4
dGVuc2lvbnM6YXV0aGVudGljYXRvckRhdGE6c2lnbmF0dXJlOnVzZXJIYW5kbGU6YXR0YWNobWVu
dDpdKToKKyAgICAgICAgKC1bX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlIGluaXRX
aXRoQ2xpZW50RGF0YUpTT046cmF3SWQ6ZXh0ZW5zaW9uczphdXRoZW50aWNhdG9yRGF0YTpzaWdu
YXR1cmU6dXNlckhhbmRsZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZUludGVybmFsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZS5tbToKKyAgICAgICAgKC1bX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgaW5p
dFdpdGhDbGllbnREYXRhSlNPTjpyYXdJZDpleHRlbnNpb25zOmF0dGVzdGF0aW9uT2JqZWN0OmF0
dGFjaG1lbnQ6XSk6CisgICAgICAgICgtW19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlIGluaXRXaXRoQ2xpZW50RGF0YUpTT046cmF3SWQ6ZXh0ZW5zaW9uczphdHRlc3RhdGlvbk9i
amVjdDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLm1tOgorICAgICAgICAoLVtf
V0tBdXRoZW50aWNhdG9yUmVzcG9uc2UgaW5pdFdpdGhDbGllbnREYXRhSlNPTjpyYXdJZDpleHRl
bnNpb25zOmF0dGFjaG1lbnQ6XSk6CisgICAgICAgICgtW19XS0F1dGhlbnRpY2F0b3JSZXNwb25z
ZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJhd0lkOmV4dGVuc2lvbnM6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2VJbnRl
cm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbToKKyAgICAgICAgKGF1dGhlbnRpY2F0b3JBdHRhY2htZW50VG9XS0F1dGhlbnRp
Y2F0b3JBdHRhY2htZW50KToKKyAgICAgICAgKHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UpOgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIG1ha2VDcmVkZW50
aWFsV2l0aENoYWxsZW5nZTpvcmlnaW46b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKToKKyAgICAgICAgKC1bX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbCBnZXRBc3NlcnRpb25XaXRoQ2hhbGxlbmdlOm9yaWdpbjpv
cHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6
OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjpnZXRFeGlzdGluZ0NyZWRlbnRpYWxzKToKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6
OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0
aGVudGljYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpjb250
aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktp
dDo6Q3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0
TmV4dEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVnaXN0ZXJDb21tYW5kQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6VTJmQXV0aGVudGljYXRvcjo6Y29udGlu
dWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgICogV2ViQXV0aG5Q
cm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFuZGxlUmVxdWVzdCk6CisgICAg
ICAgICogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisKIDIwMjEtMDUtMjcgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gU2lsZW5jZSByZXBvcnRzIGFib3V0ICdjb20uYXBwbGUu
cnVubmluZ2JvYXJkJwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCmluZGV4IDFj
MGMwNDFlY2IzN2U5MTgxNjZhNWFiM2VjMDRkOWVkZmFiNWUwZTkuLmQ1NTFmNWQzZDJjMzRjNjk3
NjljNTBiMmVhNjk5ODg4ZDJjNWRiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzIsMjUgKzMyLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
OjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0
aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzPiYmIGV4dGVuc2lvbnMpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlC
dWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVm
PEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5k
bGUsIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYgZXh0
ZW5zaW9ucywgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKLSAgICBhdXRv
IHJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uo
V1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpLCBXVEZNb3ZlKHNpZ25h
dHVyZSksIFdURk1vdmUodXNlckhhbmRsZSkpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHRS
ZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdU
Rk1vdmUoYXV0aGVudGljYXRvckRhdGEpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUodXNl
ckhhbmRsZSksIGF0dGFjaG1lbnQpKTsKICAgICBpZiAoZXh0ZW5zaW9ucykKICAgICAgICAgcmVz
cG9uc2UtPnNldEV4dGVuc2lvbnMoV1RGTW92ZSgqZXh0ZW5zaW9ucykpOwogICAgIHJldHVybiBy
ZXNwb25zZTsKIH0KIAotUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBy
YXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRs
ZSkKK1JlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZTo6Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUsIEF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiB1
c2VyaGFuZGxlQnVmZmVyOwogICAgIGlmICghdXNlckhhbmRsZS5pc0VtcHR5KCkpCiAgICAgICAg
IHVzZXJoYW5kbGVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGUuZGF0YSgp
LCB1c2VySGFuZGxlLnNpemUoKSk7Ci0gICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKHJhd0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRo
ZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSksIEFycmF5QnVm
ZmVyOjpjcmVhdGUoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSksIFdURk1vdmUo
dXNlcmhhbmRsZUJ1ZmZlciksIFdURjo6bnVsbG9wdCk7CisgICAgcmV0dXJuIGNyZWF0ZShBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6
OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUo
KSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUo
KSksIFdURk1vdmUodXNlcmhhbmRsZUJ1ZmZlciksIFdURjo6bnVsbG9wdCwgYXR0YWNobWVudCk7
CiB9CiAKLVJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFy
cmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xS
ZWYgYWNjZXNzQ29udHJvbCkKK1JlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiBy
YXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0
YWNobWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUodXNlckhhbmRsZSksIFdURk1vdmUo
bmFtZSksIGFjY2Vzc0NvbnRyb2wpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUodXNlckhhbmRs
ZSksIFdURk1vdmUobmFtZSksIGFjY2Vzc0NvbnRyb2wsIGF0dGFjaG1lbnQpKTsKIH0KIAogdm9p
ZCBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldEF1dGhlbnRpY2F0b3JEYXRhKFZl
Y3Rvcjx1aW50OF90PiYmIGF1dGhlbnRpY2F0b3JEYXRhKQpAQCAtNTgsMTYgKzU4LDE2IEBAIHZv
aWQgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRBdXRoZW50aWNhdG9yRGF0YShW
ZWN0b3I8dWludDhfdD4mJiBhdXRoCiAgICAgbV9hdXRoZW50aWNhdG9yRGF0YSA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRhdGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5z
aXplKCkpOwogfQogCi1BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1
ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVz
cG9uc2UoV1RGTW92ZShyYXdJZCkpCitBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJl
ZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNp
Z25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50IGF0dGFjaG1lbnQpCisgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92
ZShyYXdJZCksIGF0dGFjaG1lbnQpCiAgICAgLCBtX2F1dGhlbnRpY2F0b3JEYXRhKFdURk1vdmUo
YXV0aGVudGljYXRvckRhdGEpKQogICAgICwgbV9zaWduYXR1cmUoV1RGTW92ZShzaWduYXR1cmUp
KQogICAgICwgbV91c2VySGFuZGxlKFdURk1vdmUodXNlckhhbmRsZSkpCiB7CiB9CiAKLUF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
KFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUs
IFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCkKLSAgICA6
IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKK0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1
ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5h
bWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCwgQXV0aGVudGljYXRvckF0dGFj
aG1lbnQgYXR0YWNobWVudCkKKyAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKHJh
d0lkKSwgYXR0YWNobWVudCkKICAgICAsIG1fdXNlckhhbmRsZShXVEZNb3ZlKHVzZXJIYW5kbGUp
KQogICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCiAgICAgLCBtX2FjY2Vzc0NvbnRyb2woYWNj
ZXNzQ29udHJvbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDJhZDY2NWUx
MjgxODAzYTIyMjJmZTIzNmVlNjA1NGJiZGM5YWYxMDAuLmVhNGE3NjYwNWJiZTc0ZjA4MjU2MjJj
YWM3YTMwN2ViZDlmZTczZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw5
ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8
QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0
YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVz
ZXJIYW5kbGUsIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+
JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBz
aWduYXR1cmUsICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVh
dGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRs
ZSwgU3RyaW5nJiYgbmFtZSwgU2VjQWNjZXNzQ29udHJvbFJlZik7CisgICAgc3RhdGljIFJlZjxB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYg
cmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVm
ZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIE9wdGlv
bmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYsIEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUsIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiBy
YXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKICAgICB2aXJ0dWFsIH5B
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CiAKICAgICBBcnJheUJ1
ZmZlciogYXV0aGVudGljYXRvckRhdGEoKSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRpY2F0b3JE
YXRhLmdldCgpOyB9CkBAIC01OSw4ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExBQ29u
dGV4dChMQUNvbnRleHQgKmNvbnRleHQpIHsgbV9sYUNvbnRleHQgPSBjb250ZXh0OyB9CiAKIHBy
aXZhdGU6Ci0gICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZl
cj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJik7Ci0gICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJh
eUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBTdHJpbmcmJiwgU2VjQWNjZXNzQ29udHJv
bFJlZik7CisgICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZl
cj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQpOworICAgIEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwg
U3RyaW5nJiYsIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsK
IAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OkFzc2VydGlvbjsg
fQogICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcAppbmRleCA5ZDJiODczNDA0ZDY0Y2Q3
NmJmZTgxZWJjYzI5Yzg1NTMwOWMwMjk1Li40ZThiNzQ5ZTRjMDA3MDlmZGEzMDFhN2FmZTVmZDk5
NWU0MDc4NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwx
OCArMzIsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVh
dGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRp
b25PYmplY3QpCitSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lk
LCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50IGF0dGFjaG1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRp
b25PYmplY3QpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3Qp
LCBhdHRhY2htZW50KSk7CiB9CiAKLVJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZT4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8
dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0
KQorUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50IGF0dGFjaG1lbnQpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKHJhd0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRl
c3RhdGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSkpOworICAgIHJl
dHVybiBjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCksIHJhd0lkLnNpemUo
KSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3Rh
dGlvbk9iamVjdC5zaXplKCkpLCBhdHRhY2htZW50KTsKIH0KIAotQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJh
eUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KQot
ICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpKQorQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJl
ZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2Jq
ZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQorICAgIDogQXV0aGVudGlj
YXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBhdHRhY2htZW50KQogICAgICwgbV9hdHRlc3Rh
dGlvbk9iamVjdChXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0KSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2UuaAppbmRleCA2MGNkNmU3YTFiMDQ1NGQ0YjdkOGUxMWU1ZGUz
ZWMyZmFiZmZkZjViLi4yNjIzZWE4NTk5YzQ3MTU0N2FhYTUwOWM3YTI2OGI0YWU0OGY2YjFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
IDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZl
cj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
PiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCk7CisgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFy
cmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsK
IAogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKCkgPSBkZWZh
dWx0OwogCiAgICAgQXJyYXlCdWZmZXIqIGF0dGVzdGF0aW9uT2JqZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9hdHRlc3RhdGlvbk9iamVjdC5wdHIoKTsgfQogCiBwcml2YXRlOgotICAgIEF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVm
ZmVyPiYmKTsKKyAgICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWY8QXJyYXlC
dWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwog
CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6QXR0ZXN0YXRpb247
IH0KICAgICBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmNwcAppbmRleCAzZDU2NmY4N2FlYjlhMDE3ZGMwYTk5OTc2YTc4NjFj
MzI4ZTZkZTFhLi4wODVmMTc3OTRmNGVkMzc5MWJiMmJiYjkzMzU5MjA5MmNjNGE1MmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE4NSwxMyArMTg1LDEzIEBAIHZvaWQgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJs
aWNLZXlDCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrID0gW2Ns
aWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YSYmIGRhdGEsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFi
bGUgeworICAgIGF1dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVu
dERhdGFKc29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RG
TW92ZShhYm9ydFNpZ25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0
aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlv
bikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJv
cnRlZCgpKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVy
cm9yLCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JS
ZXNwb25zZTo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSkpKSB7CisgICAgICAgIGlmIChhdXRvIHJl
c3BvbnNlID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoV1RGTW92ZShkYXRhKSwg
YXR0YWNobWVudCkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRDbGllbnREYXRhSlNPTihX
VEZNb3ZlKGNsaWVudERhdGFKc29uKSk7CiAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVi
bGljS2V5Q3JlZGVudGlhbDo6Y3JlYXRlKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkpLnB0cigp
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1NiwxMyArMjU2LDEzIEBAIHZvaWQgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1
bWVudCYgZG9jdW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNr
ID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0
aGVudGljYXRvclJlc3BvbnNlRGF0YSYmIGRhdGEsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24p
IG11dGFibGUgeworICAgIGF1dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3Zl
KGNsaWVudERhdGFKc29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFs
ID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0
YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4
Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25h
bC0+YWJvcnRlZCgpKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBB
Ym9ydEVycm9yLCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSkpKSB7CisgICAgICAgIGlmIChh
dXRvIHJlc3BvbnNlID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoV1RGTW92ZShk
YXRhKSwgYXR0YWNobWVudCkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRDbGllbnREYXRh
SlNPTihXVEZNb3ZlKGNsaWVudERhdGFKc29uKSk7CiAgICAgICAgICAgICBwcm9taXNlLnJlc29s
dmUoUHVibGljS2V5Q3JlZGVudGlhbDo6Y3JlYXRlKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkp
LnB0cigpKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVu
dC5oCmluZGV4IGFmZjBjNmFmMWNjYThjZGI3NjdiYmZhN2UxMzQ4MGU0NWM4NDNlYWEuLjVlZjQw
NDQ3ZTA3NDY2ZTJhMmU4Y2EwOWZhZGU3OGVlN2QzMjkxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisj
aW5jbHVkZSAiQXV0aGVudGljYXRvckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25E
YXRhLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KQEAgLTQxLDcgKzQyLDcgQEAgc3RydWN0IEF1dGhlbnRpY2F0b3JSZXNwb25z
ZURhdGE7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKIHN0cnVj
dCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiAKLXVzaW5nIFJlcXVlc3RDb21w
bGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YSYmLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYpPjsKK3VzaW5nIFJl
cXVlc3RDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYmLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNo
bWVudCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYmKT47CiB1c2luZyBRdWVyeUNvbXBsZXRpb25I
YW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47CiAKIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcApp
bmRleCBkNGI3MTI5M2NmM2VkZTk1MzQxMTM2Yzk1OTM2NGQxNjAyN2Y2ZWZlLi43YTQxNjY5ZGQ2
ZTdhZjQwM2QxZGUyMjY5N2M4NDQ1MDkyOGM1YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcg
KzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8QXV0aGVudGljYXRvclJl
c3BvbnNlPiBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZShBdXRoZW50aWNhdG9yUmVz
cG9uc2VEYXRhJiYgZGF0YSkKK1JlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRlKEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiBkYXRh
LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQogewogICAgIGlmICghZGF0YS5y
YXdJZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00MywxMyArNDMsMTMgQEAgUmVmUHRy
PEF1dGhlbnRpY2F0b3JSZXNwb25zZT4gQXV0aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUo
QXV0aGVudGljYXRvclJlc3AKICAgICAgICAgaWYgKCFkYXRhLmF0dGVzdGF0aW9uT2JqZWN0KQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgp
LCBkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXR1
cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLnJhd0lkLnJl
bGVhc2VOb25OdWxsKCksIGRhdGEuYXR0ZXN0YXRpb25PYmplY3QucmVsZWFzZU5vbk51bGwoKSwg
YXR0YWNobWVudCk7CiAgICAgfQogCiAgICAgaWYgKCFkYXRhLmF1dGhlbnRpY2F0b3JEYXRhIHx8
ICFkYXRhLnNpZ25hdHVyZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNl
Tm9uTnVsbCgpLCBkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLnJlbGVhc2VOb25OdWxsKCksIGRhdGEu
c2lnbmF0dXJlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoZGF0YS51c2VySGFuZGxlKSwgQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyB7IGRhdGEuYXBwaWQgfSk7CisgICAg
cmV0dXJuIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEucmF3SWQu
cmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdXRoZW50aWNhdG9yRGF0YS5yZWxlYXNlTm9uTnVsbCgp
LCBkYXRhLnNpZ25hdHVyZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGRhdGEudXNlckhhbmRs
ZSksIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMgeyBkYXRhLmFwcGlkIH0s
IGF0dGFjaG1lbnQpOwogfQogCiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhlbnRpY2F0
b3JSZXNwb25zZTo6ZGF0YSgpIGNvbnN0CkBAIC04NSw4ICs4NSwxNCBAQCBBcnJheUJ1ZmZlciog
QXV0aGVudGljYXRvclJlc3BvbnNlOjpjbGllbnREYXRhSlNPTigpIGNvbnN0CiAgICAgcmV0dXJu
IG1fY2xpZW50RGF0YUpTT04uZ2V0KCk7CiB9CiAKLUF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXV0
aGVudGljYXRvclJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCkKK0F1dGhlbnRpY2F0
b3JBdHRhY2htZW50IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6YXR0YWNobWVudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fYXR0YWNobWVudDsKK30KKworQXV0aGVudGljYXRvclJlc3BvbnNlOjpB
dXRoZW50aWNhdG9yUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBBdXRoZW50aWNh
dG9yQXR0YWNobWVudCBhdHRhY2htZW50KQogICAgIDogbV9yYXdJZChXVEZNb3ZlKHJhd0lkKSkK
KyAgICAsIG1fYXR0YWNobWVudChhdHRhY2htZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaAppbmRl
eCA1YTMzZTcyNTA5OWIxYmVlYTNjYjkxODlmMWQxMmU0NWJhOTE0OGFkLi43N2I2MmUxNDA1MWY0
ZjNjNGFkMzY5MjFmMGU3MTU1OWQ5MzQwMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBA
QAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkV4dGVu
c2lvbnNDbGllbnRPdXRwdXRzLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckF0dGFjaG1lbnQu
aCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEF0dGVzdGF0aW9uCiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWZQdHI8QXV0aGVudGljYXRv
clJlc3BvbnNlPiB0cnlDcmVhdGUoQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4gdHJ5Q3JlYXRlKEF1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEmJiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwogICAgIHZpcnR1YWwg
fkF1dGhlbnRpY2F0b3JSZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgVHlwZSB0
eXBlKCkgY29uc3QgPSAwOwpAQCAtNTQsMTQgKzU1LDE2IEBAIHB1YmxpYzoKICAgICBBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzIGV4dGVuc2lvbnMoKSBjb25zdDsKICAgICB2
b2lkIHNldENsaWVudERhdGFKU09OKFJlZjxBcnJheUJ1ZmZlcj4mJik7CiAgICAgQXJyYXlCdWZm
ZXIqIGNsaWVudERhdGFKU09OKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgQXV0
aGVudGljYXRvclJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJik7CisgICAgQXV0aGVudGljYXRv
clJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwog
CiBwcml2YXRlOgogICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9yYXdJZDsKICAgICBBdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzIG1fZXh0ZW5zaW9uczsKICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG1fY2xpZW50RGF0YUpTT047CisgICAgQXV0aGVudGljYXRvckF0dGFjaG1lbnQg
bV9hdHRhY2htZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVy
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNw
b25zZUNvbnZlcnRlci5jcHAKaW5kZXggODRjMTdiNzczNmM4NWQ2MTdlZTkyZmNmYzJiNjgyOTk4
MzAxZDUyMS4uMWU3MmJhYmFiMDRhMTM1NGFlODFiZjY0ZjA4YzA3OGY2MzcxODc0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNl
Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
RGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLy8gQ29weXJpZ2h0
IDIwMTggVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJp
Z2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8KIC8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGdldENyZWRlbnRpYWxJZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhl
bnRpY2F0b3JEYXRhKQogCiAvLyBEZWNvZGVzIGJ5dGUgYXJyYXkgcmVzcG9uc2UgZnJvbSBhdXRo
ZW50aWNhdG9yIHRvIENCT1IgdmFsdWUgb2JqZWN0IGFuZAogLy8gY2hlY2tzIGZvciBjb3JyZWN0
IGVuY29kaW5nIGZvcm1hdC4KLVJlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aW5CdWZmZXIsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0
aW9uKQorUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkQ1RBUE1h
a2VDcmVkZW50aWFsUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlciwgV2Vi
Q29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgY29uc3QgQXR0ZXN0YXRp
b25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCiB7CiAgICAgYXV0byBkZWNvZGVk
TWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2RlZE1hcCkK
QEAgLTEzNSwxMCArMTM1LDEwIEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlCiAgICAgICAgIGF0
dGVzdGF0aW9uT2JqZWN0ID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoQ0JPUihXVEZNb3ZlKGF0
dGVzdGF0aW9uT2JqZWN0TWFwKSkpOwogICAgIH0KIAotICAgIHJldHVybiBBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgKmF0dGVzdGF0aW9uT2Jq
ZWN0KTsKKyAgICByZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0
ZShjcmVkZW50aWFsSWQsICphdHRlc3RhdGlvbk9iamVjdCwgYXR0YWNobWVudCk7CiB9CiAKLVJl
ZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0aW9u
UmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikKK1JlZlB0cjxBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlciwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFj
aG1lbnQgYXR0YWNobWVudCkKIHsKICAgICBhdXRvIGRlY29kZWRNYXAgPSBkZWNvZGVSZXNwb25z
ZU1hcChpbkJ1ZmZlcik7CiAgICAgaWYgKCFkZWNvZGVkTWFwKQpAQCAtMTcyLDcgKzE3Miw3IEBA
IFJlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0
aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yCiAgICAgICAgIGlmIChpdHIgPT0gdXNlci5lbmQoKSB8
fCAhaXRyLT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgYXV0byYgdXNlckhhbmRsZSA9IGl0ci0+c2Vjb25kLmdldEJ5dGVTdHJpbmco
KTsKLSAgICAgICAgcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNy
ZWF0ZShjcmVkZW50aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHVzZXJIYW5kbGUpOworICAg
ICAgICByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGNy
ZWRlbnRpYWxJZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgdXNlckhhbmRsZSwgYXR0YWNobWVudCk7
CiAKICAgICAgICAgaXRyID0gdXNlci5maW5kKENCT1Ioa0VudGl0eU5hbWVNYXBLZXkpKTsKICAg
ICAgICAgaWYgKGl0ciAhPSB1c2VyLmVuZCgpKSB7CkBAIC0xODgsNyArMTg4LDcgQEAgUmVmUHRy
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNw
b25zZShjb25zdCBWZWN0b3IKICAgICAgICAgICAgIHJlc3BvbnNlLT5zZXREaXNwbGF5TmFtZShp
dHItPnNlY29uZC5nZXRTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAg
ICByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRl
bnRpYWxJZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgeyB9KTsKKyAgICAgICAgcmVzcG9uc2UgPSBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF1dGhE
YXRhLCBzaWduYXR1cmUsIHsgfSwgYXR0YWNobWVudCk7CiAgICAgfQogCiAgICAgaXQgPSByZXNw
b25zZU1hcC5maW5kKENCT1IoNSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaAppbmRleCAw
ZTEzYWJkZjM5MjlkNTkxNzI3NzMxY2Q2YzJlMjk1NGMwNjg5MTIzLi41NDljMzU3YTc5NDAxMzky
OWYwNjcxZmY3NTEwNjM5MTU0OTBkZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8gQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTUyLDEyICs1MiwxMiBAQCBXRUJDT1JFX0VYUE9SVCBDdGFwRGV2aWNlUmVzcG9uc2VDb2Rl
IGdldFJlc3BvbnNlQ29kZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIC8vIGFuZCBjb252ZXJ0
cyByZXNwb25zZSB0byBBdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWxSZXNwb25zZSBvYmplY3Qg
d2l0aAogLy8gQ0JPUiBtYXAga2V5cyB0aGF0IGNvbmZvcm0gdG8gZm9ybWF0IG9mIGF0dGVzdGF0
aW9uIG9iamVjdCBkZWZpbmVkIGJ5IHRoZQogLy8gV2ViQXV0aE4gc3BlYyA6IGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby93ZWJhdXRobi8jZmlnLWF0dFN0cnVjdHMKLVdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtl
Q3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFdlYkNvcmU6
OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uID0gV2ViQ29yZTo6
QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6RGlyZWN0KTsKK1dFQkNPUkVfRVhQT1JU
IFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENU
QVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZl
eWFuY2VQcmVmZXJlbmNlJiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2U6OkRpcmVjdCk7CiAKIC8vIERlLXNlcmlhbGl6ZXMgQ0JPUiBlbmNvZGVkIHJlc3BvbnNlIHRv
IEF1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24gLwogLy8gQXV0aGVudGljYXRvckdldE5leHRBc3Nl
cnRpb24gcmVxdWVzdCB0byBBdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uUmVzcG9uc2UKIC8vIG9i
amVjdC4KLVdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+Jik7CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogLy8gRGUt
c2VyaWFsaXplcyBDQk9SIGVuY29kZWQgcmVzcG9uc2UgdG8gQXV0aGVudGljYXRvckdldEluZm8g
cmVxdWVzdCB0bwogLy8gQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSBvYmplY3QuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VD
b252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJl
c3BvbnNlQ29udmVydGVyLmNwcAppbmRleCAxMzQ1NDFkMWVmNTk1NDI5ZjI1MTI4MjJmMTkzZDUx
NTNkNGQwYjg1Li4xYTdkMTA1YmI4NTI1ZDU1ZGU5M2JkNTM5MDZhODEzMGE2NjEzMDNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VD
b252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9V
MmZSZXNwb25zZUNvbnZlcnRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAx
OCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIGNib3I6
OkNCT1JWYWx1ZTo6TWFwVmFsdWUgY3JlYXRlRmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50RnJvbVUy
ZlJlZ2lzdGVyUmUKIAogfSAvLyBuYW1lc3BhY2UKIAotUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJw
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgY29uc3QgQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCitSZWZQdHI8QXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJ
ZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVu
dCBhdHRhY2htZW50LCBjb25zdCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRl
c3RhdGlvbikKIHsKICAgICBhdXRvIHB1YmxpY0tleSA9IGV4dHJhY3RFQ1B1YmxpY0tleUZyb21V
MmZSZWdpc3RyYXRpb25SZXNwb25zZSh1MmZEYXRhKTsKICAgICBpZiAocHVibGljS2V5LmlzRW1w
dHkoKSkKQEAgLTE2MCwxMCArMTYwLDEwIEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiByCiAKICAg
ICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3Zl
KGF1dGhEYXRhKSwgImZpZG8tdTJmIiwgV1RGTW92ZShmaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnQp
LCBhdHRlc3RhdGlvbik7CiAKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICByZXR1
cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQs
IGF0dGVzdGF0aW9uT2JqZWN0LCBhdHRhY2htZW50KTsKIH0KIAotUmVmUHRyPEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJw
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHUyZkRhdGEpCitSZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFk
VTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKICAgICBpZiAoa2V5SGFuZGxlLmlzRW1wdHkoKSB8
fCB1MmZEYXRhLnNpemUoKSA8PSBzaWduYXR1cmVJbmRleCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xNzgsNyArMTc4LDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGMKIAogICAgIC8v
IEZJWE1FOiBGaW5kIGEgd2F5IHRvIHJlbW92ZSB0aGUgbmVlZCBvZiBjb25zdHJ1Y3RpbmcgYSB2
ZWN0b3IgaGVyZS4KICAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlIHsgdTJmRGF0YS5kYXRh
KCkgKyBzaWduYXR1cmVJbmRleCwgdTJmRGF0YS5zaXplKCkgLSBzaWduYXR1cmVJbmRleCB9Owot
ICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShrZXlIYW5k
bGUsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHsgfSk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGtleUhhbmRsZSwgYXV0aERhdGEsIHNpZ25hdHVyZSwg
eyB9LCBhdHRhY2htZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgZmlkbwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252
ZXJ0ZXIuaAppbmRleCBjNGYyMDFmYzA1M2U3ODVlMWQ5NzFhZTU2NWVjZjNmNTVlMWUxNjUyLi5l
YzMzNDI5NDhmMWQ1ZjM1YjExOTAyNDJlOGQxMWI4NGQ3ZGMxYjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252
ZXJ0ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTQwLDExICs0MCwxMSBAQCBuYW1lc3BhY2UgZmlkbyB7CiAKIC8vIENvbnZl
cnRzIGEgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlIHRvIFdlYkF1dGhOIG1ha2VDcmVkZW50aWFsIHJl
c3BvbnNlLgogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0y
MDE4MDIyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAx
ODAyMjcuaHRtbCN1MmYtYXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsLWludGVyb3BlcmFiaWxp
dHkKLVdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIGNvbnN0IFdlYkNvcmU6OkF0dGVzdGF0aW9u
Q29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uID0gV2ViQ29yZTo6QXR0ZXN0YXRpb25D
b252ZXlhbmNlUHJlZmVyZW5jZTo6RGlyZWN0KTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVz
cG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEs
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBjb25zdCBXZWJDb3JlOjpBdHRlc3Rh
dGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5j
ZVByZWZlcmVuY2U6OkRpcmVjdCk7CiAKIC8vIENvbnZlcnRzIGEgVTJGIGF1dGhlbnRpY2F0aW9u
IHJlc3BvbnNlIHRvIFdlYkF1dGhOIGdldEFzc2VydGlvbiByZXNwb25zZS4KIC8vIGh0dHBzOi8v
Zmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQt
dG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWF1dGhl
bnRpY2F0b3JHZXRBc3NlcnRpb24taW50ZXJvcGVyYWJpbGl0eQotV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25S
ZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFu
ZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEpOworV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25S
ZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFu
ZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBdHRhY2htZW50KTsKIAogfSAvLyBuYW1lc3BhY2UgZmlkbwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5tbQppbmRleCAzODdmMjI0YjVmZTJkYzliMWE1MTViZWQ5
MmRmYmJhMWE1NGYxM2YwLi40NjE4YmUwZDIyYWYyN2JlOWZmNjEwY2Q2NWQ5Nzg4MjdkYTYzNDk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UubW0KQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsOSArMzIs
OSBAQAogCiBAaW1wbGVtZW50YXRpb24gX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGll
bnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9X
S0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdXRo
ZW50aWNhdG9yRGF0YTooTlNEYXRhICopYXV0aGVudGljYXRvckRhdGEgc2lnbmF0dXJlOihOU0Rh
dGEgKilzaWduYXR1cmUgdXNlckhhbmRsZTooTlNEYXRhICopdXNlckhhbmRsZQorLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJh
d0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRp
b25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25zIGF1dGhlbnRpY2F0b3JEYXRh
OihOU0RhdGEgKilhdXRoZW50aWNhdG9yRGF0YSBzaWduYXR1cmU6KE5TRGF0YSAqKXNpZ25hdHVy
ZSB1c2VySGFuZGxlOihOU0RhdGEgKil1c2VySGFuZGxlIGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRp
Y2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6cmF3SWQgZXh0ZW5zaW9u
czpXVEZNb3ZlKGV4dGVuc2lvbnMpXSkpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0
aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOnJhd0lkIGV4dGVuc2lvbnM6V1RG
TW92ZShleHRlbnNpb25zKSBhdHRhY2htZW50OmF0dGFjaG1lbnRdKSkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAogICAgIF9hdXRoZW50aWNhdG9yRGF0YSA9IGF1dGhlbnRpY2F0b3JEYXRhOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaAppbmRl
eCBlZWY2YTE0N2EzYjA2M2Y0ZDM5ODA3OGZhNThhZTM4MjY3Njk3Y2NhLi5mNDg5Mzg5NWY2MjQ4
OGUyNDEzNmU3ZmY0OGVjMTcxNjMyOTBkMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlSW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw3IEBAIE5TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCiAKIEBpbnRlcmZhY2UgX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlICgpCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEg
KiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWlu
UHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9u
cyBhdXRoZW50aWNhdG9yRGF0YTooTlNEYXRhICopYXV0aGVudGljYXRvckRhdGEgc2lnbmF0dXJl
OihOU0RhdGEgKilzaWduYXR1cmUgdXNlckhhbmRsZTooTlNEYXRhICopdXNlckhhbmRsZTsKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRh
SlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhl
bnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdXRoZW50aWNh
dG9yRGF0YTooTlNEYXRhICopYXV0aGVudGljYXRvckRhdGEgc2lnbmF0dXJlOihOU0RhdGEgKilz
aWduYXR1cmUgdXNlckhhbmRsZTooTlNEYXRhICopdXNlckhhbmRsZSBhdHRhY2htZW50OihfV0tB
dXRoZW50aWNhdG9yQXR0YWNobWVudClhdHRhY2htZW50OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5tbQppbmRleCAzYjE5MWZlZGY1Nzk5ODY0
YWMxZmE5NTI3YjRmNzc1NDNjNmU5MTUxLi5iZGMwZTM1YjkyNDc4OTc4ZGJiMDRmODYxNzU2OTI2
ODI1M2RhNjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDkgKzMyLDkgQEAKIAogQGltcGxlbWVudGF0aW9uIF9XS0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09O
OihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9u
czooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYp
ZXh0ZW5zaW9ucyBhdHRlc3RhdGlvbk9iamVjdDooTlNEYXRhICopYXR0ZXN0YXRpb25PYmplY3QK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnRE
YXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdHRlc3Rh
dGlvbk9iamVjdDooTlNEYXRhICopYXR0ZXN0YXRpb25PYmplY3QgYXR0YWNobWVudDooX1dLQXV0
aGVudGljYXRvckF0dGFjaG1lbnQpYXR0YWNobWVudAogewotICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpyYXdJZCBleHRl
bnNpb25zOldURk1vdmUoZXh0ZW5zaW9ucyldKSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6cmF3SWQgZXh0ZW5zaW9u
czpXVEZNb3ZlKGV4dGVuc2lvbnMpIGF0dGFjaG1lbnQ6YXR0YWNobWVudF0pKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCiAgICAgX2F0dGVzdGF0aW9uT2JqZWN0ID0gYXR0ZXN0YXRpb25PYmplY3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJu
YWwuaAppbmRleCAwNmIxODA3ZDg1ZWQyOWM2NjU2ODdiZDZmMzkxNDcyNGFiODZiMzVlLi5hYWZi
ZjBiZDQzZmM4MGU5NDEwZGUwODIzYmY0MTU4YmU3ZGE2Y2I5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2VJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZUludGVybmFsLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNyArMzQsNyBA
QCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAaW50ZXJmYWNlIF9XS0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlICgpCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERh
dGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0
ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1
dHM+JiYpZXh0ZW5zaW9ucyBhdHRlc3RhdGlvbk9iamVjdDooTlNEYXRhICopYXR0ZXN0YXRpb25P
YmplY3Q7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICop
Y2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0
cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMg
YXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2JqZWN0IGF0dGFjaG1lbnQ6
KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQ7CiAKIEBlbmQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JS
ZXNwb25zZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRp
Y2F0b3JSZXNwb25zZS5oCmluZGV4IDExZWRkOTQ0NDk0N2ZlMzUzMzBmMTM0Mzk2ZjJkZWMyODU4
OWZmY2EuLjY1YWJlNWU3MWMwZmNhZDk3NWYzZmFmZDMwZDNkMGE3NTVkZTJjYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVu
dGljYXRvclJlc3BvbnNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbXBvcnQg
PFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tBdXRoZW50aWNhdG9y
QXR0YWNobWVudC5oPgogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApAQCAt
MzYsNiArMzcsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogV0tfQ0xBU1NfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS0F1dGhl
bnRpY2F0b3JSZXNwb25zZSA6IE5TT2JqZWN0CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudDsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgTlNEYXRhICpjbGllbnREYXRhSlNPTjsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgTlNEYXRhICpyYXdJZDsKIEBwcm9wZXJ0eSAobnVsbGFibGUs
IG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZykgX1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50T3V0cHV0cyAqZXh0ZW5zaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLm1tCmluZGV4
IDg5ZDA2MTdlZWQ3NGJiMzQ0NmMxZDA5YzY2NjBjMTNlNzU4NzQzMDcuLmI2ODBlYWI3ZDgwZjQ0
YTgyMWM1ZTE1ZWU4MzIxZTM0MTg1NDIyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZS5tbQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Myw3ICszMyw3IEBACiAgICAgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudE91dHB1dHM+IF9leHRlbnNpb25zOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhD
bGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJh
d0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERh
dGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0
ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1
dHM+JiYpZXh0ZW5zaW9ucyBhdHRhY2htZW50OihfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudClh
dHRhY2htZW50CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CkBAIC00MSw2ICs0MSw4IEBACiAgICAgX2NsaWVudERhdGFKU09OID0gY2xpZW50
RGF0YUpTT047CiAgICAgX3Jhd0lkID0gcmF3SWQ7CiAgICAgX2V4dGVuc2lvbnMgPSBleHRlbnNp
b25zOworICAgIF9hdHRhY2htZW50ID0gYXR0YWNobWVudDsKKwogICAgIHJldHVybiBzZWxmOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
aGVudGljYXRvclJlc3BvbnNlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2VJbnRlcm5hbC5oCmluZGV4IGIwZmFlZmJm
NDdmYTMzZTgxOTQzYjM3MDYyNDA4ODk1NTQ0Yzk3MTcuLjM2YTIyNTMyN2MwYjY2YjdjYjRmMjA3
YmM1YWVjMmNjNTg5NmY3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2VJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2VJbnRlcm5h
bC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM0LDcgKzM0LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGludGVyZmFjZSBf
V0tBdXRoZW50aWNhdG9yUmVzcG9uc2UgKCkKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xp
ZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJ
ZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50
T3V0cHV0cz4mJilleHRlbnNpb25zOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0
YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRl
bnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0
cz4mJilleHRlbnNpb25zIGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0
dGFjaG1lbnQ7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCBiYmUx
MzU5OGE5YTMyNjA4OTMyYzg4M2YwYmE0NDNkOWIyZDEzMDk4Li5kMThhYmI4MjZlMDg1YmIwMjZi
ZDExOThhMDc0ZjQ2MTgwYzUxZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAt
NDUzLDkgKzQ1MywxOSBAQCBzdGF0aWMgV2ViQ29yZTo6QXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50SW5wdXRzIGF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaQogfQogCiAjaWYgRU5BQkxF
KFdFQl9BVVRITikKLXN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYgZGF0YSwgTlNEYXRhICpjbGllbnREYXRhSlNP
TikKK3N0YXRpYyBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdXRoZW50aWNhdG9yQXR0YWNo
bWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0
YWNobWVudCBhdHRhY2htZW50KQogewotICAgIHJldHVybiBhZG9wdE5TKFtbX1dLQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xp
ZW50RGF0YUpTT04gcmF3SWQ6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRhdGEo
KSBsZW5ndGg6ZGF0YS5yYXdJZC0+Ynl0ZUxlbmd0aCgpXSBleHRlbnNpb25zOm5pbCBhdHRlc3Rh
dGlvbk9iamVjdDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5hdHRlc3RhdGlvbk9iamVjdC0+
ZGF0YSgpIGxlbmd0aDpkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCldXSk7Cisg
ICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXR0YWNobWVudDo6UGxhdGZvcm06CisgICAgICAgIHJldHVybiBfV0tBdXRoZW50aWNhdG9yQXR0
YWNobWVudFBsYXRmb3JtOworICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1l
bnQ6OkNyb3NzUGxhdGZvcm06CisgICAgICAgIHJldHVybiBfV0tBdXRoZW50aWNhdG9yQXR0YWNo
bWVudENyb3NzUGxhdGZvcm07CisgICAgfQorfQorCitzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEsIE5T
RGF0YSAqY2xpZW50RGF0YUpTT04sIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0
dGFjaG1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRhSlNP
TiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5yYXdJZC0+ZGF0YSgpIGxlbmd0aDpk
YXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6bmlsIGF0dGVzdGF0aW9uT2JqZWN0
OltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5kYXRhKCkgbGVu
Z3RoOmRhdGEuYXR0ZXN0YXRpb25PYmplY3QtPmJ5dGVMZW5ndGgoKV0gYXR0YWNobWVudDogYXV0
aGVudGljYXRvckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVu
dCldKTsKIH0KICNlbmRpZgogCkBAIC00NjYsNyArNDc2LDcgQEAgc3RhdGljIFJldGFpblB0cjxf
V0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb24KICAgICBhdXRvIGhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERh
dGFKU09OLmdldCgpKTsKICAgICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoaGFuZGxlciksIGNsaWVudERhdGFKU09OID0gV1RGTW92ZShjbGllbnREYXRhSlNPTildIChW
YXJpYW50PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U+LCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24ocmVz
dWx0LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZT4mIHJlc3Bv
bnNlKSB7Ci0gICAgICAgICAgICBoYW5kbGVyKHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UocmVzcG9uc2UtPmRhdGEoKSwgY2xpZW50RGF0YUpTT04uZ2V0KCkpLmdldCgpLCBuaWwp
OworICAgICAgICAgICAgaGFuZGxlcih3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
KHJlc3BvbnNlLT5kYXRhKCksIGNsaWVudERhdGFKU09OLmdldCgpLCByZXNwb25zZS0+YXR0YWNo
bWVudCgpKS5nZXQoKSwgbmlsKTsKICAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEmIGV4Y2VwdGlvbikgewogICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9y
IGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlcklu
Zm86bmlsXSk7CiAgICAgICAgIH0pOwpAQCAtNDk1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uCiB9CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotc3RhdGljIFJldGFpblB0cjxf
V0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEs
IE5TRGF0YSAqY2xpZW50RGF0YUpTT04pCitzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYgZGF0YSwgTlNEYXRhICpjbGll
bnREYXRhSlNPTiwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkK
IHsKICAgICBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0
cz4gZXh0ZW5zaW9uczsKICAgICBpZiAoZGF0YS5hcHBpZCkKQEAgLTUwNSw3ICs1MTUsNyBAQCBz
dGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gd2tBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcAogICAgIGlmIChkYXRhLnVzZXJIYW5kbGUpCiAgICAgICAg
IHVzZXJIYW5kbGUgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS51c2VySGFuZGxlLT5kYXRh
KCkgbGVuZ3RoOmRhdGEudXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpXTsKIAotICAgIHJldHVybiBh
ZG9wdE5TKFtbX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOltOU0RhdGEgZGF0YVdpdGhCeXRl
czpkYXRhLnJhd0lkLT5kYXRhKCkgbGVuZ3RoOmRhdGEucmF3SWQtPmJ5dGVMZW5ndGgoKV0gZXh0
ZW5zaW9uczpXVEZNb3ZlKGV4dGVuc2lvbnMpIGF1dGhlbnRpY2F0b3JEYXRhOltOU0RhdGEgZGF0
YVdpdGhCeXRlczpkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCkgbGVuZ3RoOmRhdGEuYXV0
aGVudGljYXRvckRhdGEtPmJ5dGVMZW5ndGgoKV0gc2lnbmF0dXJlOltOU0RhdGEgZGF0YVdpdGhC
eXRlczpkYXRhLnNpZ25hdHVyZS0+ZGF0YSgpIGxlbmd0aDpkYXRhLnNpZ25hdHVyZS0+Ynl0ZUxl
bmd0aCgpXSB1c2VySGFuZGxlOnVzZXJIYW5kbGVdKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19X
S0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGllbnREYXRh
SlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5yYXdJ
ZC0+ZGF0YSgpIGxlbmd0aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6V1RG
TW92ZShleHRlbnNpb25zKSBhdXRoZW50aWNhdG9yRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+ZGF0YSgpIGxlbmd0aDpkYXRhLmF1dGhlbnRpY2F0b3JE
YXRhLT5ieXRlTGVuZ3RoKCldIHNpZ25hdHVyZTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5z
aWduYXR1cmUtPmRhdGEoKSBsZW5ndGg6ZGF0YS5zaWduYXR1cmUtPmJ5dGVMZW5ndGgoKV0gdXNl
ckhhbmRsZTp1c2VySGFuZGxlIGF0dGFjaG1lbnQ6YXV0aGVudGljYXRvckF0dGFjaG1lbnRUb1dL
QXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVudCldKTsKIH0KICNlbmRpZgogCkBAIC01
MTYsNyArNTI2LDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3AKICAgICBhdXRvIGhhc2ggPSBw
cm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKU09OLmdldCgpKTsKICAgICBhdXRv
IGNhbGxiYWNrID0gW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoaGFuZGxlciksIGNsaWVudERhdGFK
U09OID0gV1RGTW92ZShjbGllbnREYXRhSlNPTildIChWYXJpYW50PFJlZjxXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yUmVzcG9uc2U+LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgUmVmPFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZT4mIHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICBoYW5k
bGVyKHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKHJlc3BvbnNlLT5kYXRhKCksIGNs
aWVudERhdGFKU09OLmdldCgpKS5nZXQoKSwgbmlsKTsKKyAgICAgICAgICAgIGhhbmRsZXIod2tB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UocmVzcG9uc2UtPmRhdGEoKSwgY2xpZW50RGF0
YUpTT04uZ2V0KCksIHJlc3BvbnNlLT5hdHRhY2htZW50KCkpLmdldCgpLCBuaWwpOwogICAgICAg
ICB9LCBbJl0oY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CiAgICAg
ICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21h
aW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKICAgICAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggYTIxZWYwMGNhMWFkZDFh
N2I4NjFhMzdmYWU1ZjNkODNjMzQ3NGFkZi4uMDY4ZTU2NDIwNjc0ZjRkMjhjNDY3MmNkNDE5NmJk
OTdjNDljN2Y3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NjcsNyArMTY3LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPj4+IGdldEV4aXN0aW5nQ3JlZGVudGkKICAgICAgICAgfQogICAgICAg
ICBhdXRvJiB1c2VybmFtZSA9IGl0LT5zZWNvbmQuZ2V0U3RyaW5nKCk7CiAKLSAgICAgICAgcmVz
dWx0LnVuY2hlY2tlZEFwcGVuZChBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0
ZSh0b0FycmF5QnVmZmVyKGF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF0p
LCB0b0FycmF5QnVmZmVyKHVzZXJIYW5kbGUpLCBTdHJpbmcodXNlcm5hbWUpLCAoX19icmlkZ2Ug
U2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFjY2Vzc0NvbnRyb2xd
KSk7CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpjcmVhdGUodG9BcnJheUJ1ZmZlcihhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFw
cGxpY2F0aW9uTGFiZWxdKSwgdG9BcnJheUJ1ZmZlcih1c2VySGFuZGxlKSwgU3RyaW5nKHVzZXJu
YW1lKSwgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpYXR0cmlidXRlc1soaWQpa1NlY0F0
dHJBY2Nlc3NDb250cm9sXSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtKSk7CiAg
ICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRp
b24oU2VjQWNjZXNzQ28KIAogICAgICAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShj
cmVhdGlvbk9wdGlvbnMucnAuaWQsIGZsYWdzLCBjb3VudGVyLCBidWlsZEF0dGVzdGVkQ3JlZGVu
dGlhbERhdGEoVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMCksIGNyZWRlbnRpYWxJZCwg
Y29zZVB1YmxpY0tleSkpOwogICAgICAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRB
dHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgIiIsIHsgfSwgQXR0ZXN0YXRpb25D
b252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3Rh
dGlvbk9iamVjdCkpOworICAgICAgICByZWNlaXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QsIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVl
TWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFZlY3Rvcjx1aW50OF90PiYmIGMKICAgICBhdXRv
IGF0dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhE
YXRhKSwgImFwcGxlIiwgV1RGTW92ZShhdHRlc3RhdGlvblN0YXRlbWVudE1hcCksIGNyZWF0aW9u
T3B0aW9ucy5hdHRlc3RhdGlvbik7CiAKICAgICBkZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsKCk7
Ci0gICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNy
ZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KSk7CisgICAgcmVjZWl2ZVJlc3Bv
bmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQs
IGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm0pKTsK
IH0KIAogdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggYWYz
ZjkxOTY2YzM3MWYwOGVmNGRlODEwMTc1MGM4OGU0ZWYyM2E2Yy4uMWNhMGRlMDRlMDFjYWEwMzQ3
YzU1MjkxNDkxZWViZDI0N2Q0N2RiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MCw5ICs3MCw5IEBAIHZvaWQgV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25S
ZXF1ZXN0RGF0CiAgICAgYXV0byBjYWxsYmFjayA9IFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVy
KV0gKFZhcmlhbnQ8UmVmPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4sIEV4Y2VwdGlvbkRhdGE+JiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBSZWY8QXV0aGVudGljYXRvclJl
c3BvbnNlPiYgcmVzcG9uc2UpIHsKLSAgICAgICAgICAgIGhhbmRsZXIocmVzcG9uc2UtPmRhdGEo
KSwgeyB9KTsKKyAgICAgICAgICAgIGhhbmRsZXIocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2Ut
PmF0dGFjaG1lbnQoKSwgeyB9KTsKICAgICAgICAgfSwgWyZdKGNvbnN0IEV4Y2VwdGlvbkRhdGEm
IGV4Y2VwdGlvbikgewotICAgICAgICAgICAgaGFuZGxlcih7IH0sIGV4Y2VwdGlvbik7CisgICAg
ICAgICAgICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIGV4Y2VwdGlv
bik7CiAgICAgICAgIH0pOwogICAgIH07CiAgICAgbV93ZWJQYWdlUHJveHkud2Vic2l0ZURhdGFT
dG9yZSgpLmF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkuaGFuZGxlUmVxdWVzdChXVEZNb3ZlKGRhdGEp
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHkuaAppbmRleCAzM2ViMDdmMzkyMDA1NmU1ZDc3MjQwZTIyZGUwOTdj
OWM2NjBiNGVhLi5mMDhlMjQ3NWU5N2Q5MDQ1YjY0N2M0NDJjYjQzMTkzZjBlNjJiZDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBdHRhY2htZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNTUsNyArNTYsNyBAQCBwdWJs
aWM6CiAgICAgfldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KCk7CiAKIHByaXZhdGU6
Ci0gICAgdXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiwgY29uc3QgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKKyAgICB1c2luZyBSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEmLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgY29uc3QgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKICAgICB1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVy
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGY5OGI4ZTM2YzI4NmUwMmIxYTY1NDgw
OTQxZWQ5MDRiOTIzNjM0My4uY2I5M2M4OWYyNDQ3MGYzOTlhMGIxOWIxZDMyOWU3N2E3Zjc1NmFm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAx
OC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjYsOCArMjYsOCBAQAogCiBtZXNzYWdlcyAtPiBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eSBOb3RSZWZDb3VudGVkIHsKIAotICAgIE1ha2VDcmVkZW50aWFs
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURh
dGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYwot
ICAgIEdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0
IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBz
dHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMs
IGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhj
ZXB0aW9uKSBBc3luYworICAgIE1ha2VDcmVkZW50aWFsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgVmVjdG9y
PHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29y
ZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYworICAgIEdldEFzc2VydGlvbihXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFt
ZUluZm8sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51
bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYwogICAgIElzVXNlclZlcmlm
eWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSgpIC0+IChib29sIHJlc3VsdCkgQXN5
bmMKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAppbmRleCBlZjg1
YTMxODg4NWZjOWVlODQwODJkMDg1MDA4ZDQ1NjcwNjliMGEyLi41OTgxNTM4YjA2ODI5YzgwNTU4
Nzk5Y2Y0MzI2MWQxOWM4NDUyYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNh
dG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6bWFrZUNyZWRl
bnRpYWwoKQogCiB2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgYXV0
byByZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShkYXRhLCBXVEY6Omdl
dDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlv
bnMpLmF0dGVzdGF0aW9uKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVu
dGlhbFJlc3BvbnNlKGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3Jt
LCBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0
YSgpLm9wdGlvbnMpLmF0dGVzdGF0aW9uKTsKICAgICBpZiAoIXJlc3BvbnNlKSB7CiAgICAgICAg
IGF1dG8gZXJyb3IgPSBnZXRSZXNwb25zZUNvZGUoZGF0YSk7CiAKQEAgLTE0Niw3ICsxNDYsNyBA
QCB2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogCiB2b2lkIEN0YXBBdXRo
ZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUEdldEFz
c2VydGlvblJlc3BvbnNlKGRhdGEpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUEdldEFz
c2VydGlvblJlc3BvbnNlKGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRm
b3JtKTsKICAgICBpZiAoIXJlc3BvbnNlKSB7CiAgICAgICAgIGF1dG8gZXJyb3IgPSBnZXRSZXNw
b25zZUNvZGUoZGF0YSk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEN0YXBBdXRoZW50aWNh
dG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWlu
dDhfdAogCiB2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldE5leHRBc3NlcnRpb25B
ZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBhdXRv
IHJlc3BvbnNlID0gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShkYXRhKTsKKyAgICBhdXRv
IHJlc3BvbnNlID0gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShkYXRhLCBBdXRoZW50aWNh
dG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgaWYgKCFyZXNwb25zZSkgewogICAg
ICAgICBhdXRvIGVycm9yID0gZ2V0UmVzcG9uc2VDb2RlKGRhdGEpOwogICAgICAgICByZWNlaXZl
UmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJVbmtub3du
IGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAiLCBzdGF0aWNfY2FzdDx1aW50OF90PihlcnJv
cikpIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKaW5kZXggYzc1NzU5
ZmEzMmQ5ODllOTU0ZDcyMjRiNjQ2M2VjMGU2MmEyYTgxNy4uYzMwNDhkNjk2NTZmNzVmNzJkZjA0
YzBhMWM4OGYzOTljODk2OTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3Iu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVnaXN0
ZXJDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZQogICAgIGNhc2UgQXBk
dVJlc3BvbnNlOjpTdGF0dXM6OlNXX05PX0VSUk9SOiB7CiAgICAgICAgIGF1dG8mIG9wdGlvbnMg
PSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0
YSgpLm9wdGlvbnMpOwogICAgICAgICBhdXRvIGFwcElkID0gcHJvY2Vzc0dvb2dsZUxlZ2FjeUFw
cElkU3VwcG9ydEV4dGVuc2lvbihvcHRpb25zLmV4dGVuc2lvbnMpOwotICAgICAgICBhdXRvIHJl
c3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoIWFwcElkID8gb3B0aW9ucy5ycC5pZCA6
IGFwcElkLCBhcGR1UmVzcG9uc2UuZGF0YSgpLCBvcHRpb25zLmF0dGVzdGF0aW9uKTsKKyAgICAg
ICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKCFhcHBJZCA/IG9wdGlv
bnMucnAuaWQgOiBhcHBJZCwgYXBkdVJlc3BvbnNlLmRhdGEoKSwgQXV0aGVudGljYXRvckF0dGFj
aG1lbnQ6OkNyb3NzUGxhdGZvcm0sIG9wdGlvbnMuYXR0ZXN0YXRpb24pOwogICAgICAgICBpZiAo
IXJlc3BvbnNlKSB7CiAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsg
VW5rbm93bkVycm9yLCAiQ291bGRuJ3QgcGFyc2UgdGhlIFUyRiByZWdpc3RlciByZXNwb25zZS4i
X3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDgsOSArMjA4LDkgQEAgdm9pZCBVMmZB
dXRoZW50aWNhdG9yOjpjb250aW51ZVNpZ25Db21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKEFw
ZHVSZXNwb25zZSYmIGEKICAgICAgICAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gcmVzcG9uc2U7CiAgICAgICAgIGlmIChtX2lzQXBwSWQpIHsKICAgICAgICAgICAgIEFT
U0VSVChyZXF1ZXN0T3B0aW9ucy5leHRlbnNpb25zICYmICFyZXF1ZXN0T3B0aW9ucy5leHRlbnNp
b25zLT5hcHBpZC5pc051bGwoKSk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IHJlYWRVMmZTaWdu
UmVzcG9uc2UocmVxdWVzdE9wdGlvbnMuZXh0ZW5zaW9ucy0+YXBwaWQsIHJlcXVlc3RPcHRpb25z
LmFsbG93Q3JlZGVudGlhbHNbbV9uZXh0TGlzdEluZGV4IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNw
b25zZS5kYXRhKCkpOworICAgICAgICAgICAgcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNl
KHJlcXVlc3RPcHRpb25zLmV4dGVuc2lvbnMtPmFwcGlkLCByZXF1ZXN0T3B0aW9ucy5hbGxvd0Ny
ZWRlbnRpYWxzW21fbmV4dExpc3RJbmRleCAtIDFdLmlkVmVjdG9yLCBhcGR1UmVzcG9uc2UuZGF0
YSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKHJlcXVlc3RP
cHRpb25zLnJwSWQsIHJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHNbbV9uZXh0TGlzdElu
ZGV4IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNwb25zZS5kYXRhKCkpOworICAgICAgICAgICAgcmVz
cG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKHJlcXVlc3RPcHRpb25zLnJwSWQsIHJlcXVlc3RP
cHRpb25zLmFsbG93Q3JlZGVudGlhbHNbbV9uZXh0TGlzdEluZGV4IC0gMV0uaWRWZWN0b3IsIGFw
ZHVSZXNwb25zZS5kYXRhKCksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3Jt
KTsKICAgICAgICAgaWYgKCFyZXNwb25zZSkgewogICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQo
RXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIkNvdWxkbid0IHBhcnNlIHRoZSBVMkYgc2ln
biByZXNwb25zZS4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCA1MWU3M2E2ZjJmOTcyYzc2NjNlMjg2MDAyZDQ5YTQ3ZDM4YzFk
ZjE1Li4yZDI3Y2NiZTM1MGEyZjk3NTdkNzQzN2IyMzM2MDM4NjBiNjkzYTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODIsOSArODIsOSBAQCB2b2lkIFdlYkF1dGhuQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3RE
YXRhJgogICAgIGF1dG8gY2FsbGJhY2sgPSBbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildIChW
YXJpYW50PFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+LCBFeGNlcHRpb25EYXRhPiYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAg
IFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgUmVmPEF1dGhlbnRpY2F0b3JSZXNwb25z
ZT4mIHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICBoYW5kbGVyKHJlc3BvbnNlLT5kYXRhKCksIHsg
fSk7CisgICAgICAgICAgICBoYW5kbGVyKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5hdHRh
Y2htZW50KCksIHsgfSk7CiAgICAgICAgIH0sIFsmXShjb25zdCBFeGNlcHRpb25EYXRhJiBleGNl
cHRpb24pIHsKLSAgICAgICAgICAgIGhhbmRsZXIoeyB9LCBleGNlcHRpb24pOworICAgICAgICAg
ICAgaGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBleGNlcHRpb24pOwog
ICAgICAgICB9KTsKICAgICB9OwogICAgIG1fV2ViQXV0aG5Qcm9jZXNzLT5hdXRoZW50aWNhdG9y
TWFuYWdlcigpLmhhbmRsZVJlcXVlc3QoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjaykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJB
dXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBiZjZmN2M2NTVkOTY1OTBhMWYyMjE0
MDU3YjM2ZTliNTA1MjI4NzQwLi41NWEzMTYxNWM3MGNhMjliMjg1ODAyZjJhMmE1Yzg5MDAzY2Nj
NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vz
cy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBdHRhY2htZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTU3LDcgKzU4LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV93ZWJQcm9jZXNzSWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgotICAgIHVzaW5nIFJlcXVlc3RD
b21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEm
KT47CisgICAgdXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiwgV2ViQ29y
ZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEm
KT47CiAgICAgdXNpbmcgUXVlcnlDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+OwogCiAgICAgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkF1
dGhuUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3Mv
V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDI5YjRjMWRlOTdiYmYyNGI4NGIyZGQwYzliMDdhM2UyNmNkMDIxNjEuLmFjNzNh
OTUzNmE4OTIwMjJlMzNmYTZjMTQxNzI4NTlkZTJkNWY0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsOCArMjQsOCBAQAogCiBtZXNzYWdlcyAtPiBXZWJBdXRo
bkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgewogCi0gICAgTWFrZUNyZWRlbnRpYWwoVmVjdG9yPHVp
bnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYwotICAgIEdldEFzc2VydGlvbihWZWN0b3I8dWlu
dDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBNYWtlQ3JlZGVudGlhbChWZWN0b3I8dWlu
dDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVtOmludCBXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAgR2V0QXNzZXJ0aW9uKFZlY3Rvcjx1aW50OF90
PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
IG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVu
dGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEgZXhjZXB0aW9uKSBBc3luYwogICAgIElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZSgpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKIAogICAgIFNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oc3RydWN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430030</attachid>
            <date>2021-05-28 11:29:04 -0700</date>
            <delta_ts>2021-05-28 15:19:38 -0700</delta_ts>
            <desc>Patch (Rebase Attempt #2)</desc>
            <filename>bug-225519-20210528112903.patch</filename>
            <type>text/plain</type>
            <size>69505</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5NzNjN2QyNGU2Y2E3
NzQyNzljMTE3MWRlNzY0YTM5MDQ0ODk1NC4uMDRkNDY0MWVjYzBjMWUyNDdjY2ZhYmYzYTQ0ZWQx
M2RkNWFhODdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTA1LTI4ICBHYXJy
ZXR0IERhdmlkc29uICA8Z2FycmV0dF9kYXZpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Ugc2hvdWxkIHNwZWNpZnkgdGhl
IGF0dGFjaG1lbnQgdHlwZSB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU1MTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTU0MDkwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IFdl
YkF1dGhuIGF1dGhlbnRpY2F0b3JzIHRvIHBhc3MgYmFjayB0aGVpciBhdHRhY2htZW50IHR5cGUg
YW5kIGNvbnRpbnVlCisgICAgICAgIHBsdW1iaW5nIHRocm91Z2ggdXAgdG8gdGhlIGF1dGhlbnRp
Y2F0b3IgY29vcmRpbmF0b3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBtYW51YWwgdGVzdHMuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNw
b25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmF0dGFjaG1l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlOjpBdXRo
ZW50aWNhdG9yUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvclJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
c3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAgICAgKGZpZG86OnJlYWRDVEFQTWFrZUNyZWRlbnRp
YWxSZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpyZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0
ZXIuY3BwOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UpOgorICAgICAg
ICAoZmlkbzo6cmVhZFUyZlNpZ25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmg6CisKIDIwMjEtMDUtMjggIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBSZXR1cm4gaW1t
ZWRpYXRlbHkgd2hlbiBhc2tlZCB0byBwYWludCBhbiBBVlBsYXllciB0aGF0IGhhc24ndCByZWFj
aGVkIEhhdmVDdXJyZW50RGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MzNhMzk5OWVhYTM1MGI4ZjFlOGZiMWM1
N2Y0MjExM2UxZmUzYjkwLi43NjBiNzUxOGMxYmEzNDMwZTBkYTYzMWIzMTU5NmRkYWM5MDA1NGEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA1LTI4ICBHYXJyZXR0IERhdmlkc29u
ICA8Z2FycmV0dF9kYXZpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBfV0tBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Ugc2hvdWxkIHNwZWNpZnkgdGhlIGF0dGFjaG1lbnQg
dHlwZSB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU1MTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTU0MDkwPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhdmUgV2ViQXV0aG4gYXV0aGVu
dGljYXRvcnMgc3RhcnQgcGFzc2luZyBiYWNrIHRoZWlyIGF0dGFjaG1lbnQgdHlwZSwgYW5kIHBs
dW1iCisgICAgICAgIGl0IHVwIHRocm91Z2ggdG8gdGhlIGNhbGxpbmcgcHJvY2Vzcy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlLm1tOgorICAgICAgICAoLVtfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgaW5p
dFdpdGhDbGllbnREYXRhSlNPTjpyYXdJZDpleHRlbnNpb25zOmF1dGhlbnRpY2F0b3JEYXRhOnNp
Z25hdHVyZTp1c2VySGFuZGxlOmF0dGFjaG1lbnQ6XSk6CisgICAgICAgICgtW19XS0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJhd0lkOmV4dGVu
c2lvbnM6YXV0aGVudGljYXRvckRhdGE6c2lnbmF0dXJlOnVzZXJIYW5kbGU6XSk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2VJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW06CisgICAgICAgICgtW19XS0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGluaXRXaXRoQ2xpZW50RGF0YUpTT046cmF3SWQ6ZXh0
ZW5zaW9uczphdHRlc3RhdGlvbk9iamVjdDphdHRhY2htZW50Ol0pOgorICAgICAgICAoLVtfV0tB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJh
d0lkOmV4dGVuc2lvbnM6YXR0ZXN0YXRpb25PYmplY3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZUlu
dGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9y
UmVzcG9uc2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0
b3JSZXNwb25zZS5tbToKKyAgICAgICAgKC1bX1dLQXV0aGVudGljYXRvclJlc3BvbnNlIGluaXRX
aXRoQ2xpZW50RGF0YUpTT046cmF3SWQ6ZXh0ZW5zaW9uczphdHRhY2htZW50Ol0pOgorICAgICAg
ICAoLVtfV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UgaW5pdFdpdGhDbGllbnREYXRhSlNPTjpyYXdJ
ZDpleHRlbnNpb25zOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0aGVudGljYXRvclJlc3BvbnNlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgIChhdXRoZW50
aWNhdG9yQXR0YWNobWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudCk6CisgICAgICAgICh3
a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKC1bX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbCBtYWtlQ3JlZGVudGlhbFdpdGhDaGFsbGVuZ2U6b3JpZ2luOm9wdGlv
bnM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICh3a0F1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZSk6CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZ2V0QXNz
ZXJ0aW9uV2l0aENoYWxsZW5nZTpvcmlnaW46b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50
aWNhdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDo6
Z2V0RXhpc3RpbmdDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGlj
YXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFm
dGVyQXR0ZXN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVzcG9u
c2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51
ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OkN0
YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldE5leHRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVj
ZWl2ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1
dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50aWNhdG9yOjpjb250
aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJL
aXQ6OlUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVj
ZWl2ZWQpOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRo
bkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJBdXRoblByb2Nlc3MvV2Vi
QXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDIxLTA1LTI4ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gSERSIHZh
cmlhbnRzIGluIEhMUyBwbGF5bGlzdHMgbm90IHNlbGVjdGVkIHdoZW4gc2NyZWVuIGlzIEhEUgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCmluZGV4IDBiZjIzZjAyODU2YjgwMDc1
YWRjNmFjMDlkZGU3NGUxZWYzODNhZTAuLmEwZDFiMzhhM2JkNGE2YjZjNWRmNmI4ZDNhZGUxODA1
YTg0ZmQwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjUgKzMy
LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFy
cmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEs
IFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2Vy
SGFuZGxlLCBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYm
IGV4dGVuc2lvbnMpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQs
IFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYm
IHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIE9wdGlvbmFsPEF1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYgZXh0ZW5zaW9ucywgQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gYWRv
cHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCks
IFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUo
dXNlckhhbmRsZSkpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXV0aGVudGlj
YXRvckRhdGEpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUodXNlckhhbmRsZSksIGF0dGFj
aG1lbnQpKTsKICAgICBpZiAoZXh0ZW5zaW9ucykKICAgICAgICAgcmVzcG9uc2UtPnNldEV4dGVu
c2lvbnMoV1RGTW92ZSgqZXh0ZW5zaW9ucykpOwogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAot
UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBz
aWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRsZSkKK1JlZjxBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6
Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
IGF0dGFjaG1lbnQpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiB1c2VyaGFuZGxlQnVmZmVy
OwogICAgIGlmICghdXNlckhhbmRsZS5pc0VtcHR5KCkpCiAgICAgICAgIHVzZXJoYW5kbGVCdWZm
ZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGUuZGF0YSgpLCB1c2VySGFuZGxlLnNp
emUoKSk7Ci0gICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRhdGEo
KSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5k
YXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2ln
bmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSksIFdURk1vdmUodXNlcmhhbmRsZUJ1ZmZl
ciksIHN0ZDo6bnVsbG9wdCk7CisgICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRl
KHJhd0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50
aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSksIEFycmF5QnVmZmVy
OjpjcmVhdGUoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSksIFdURk1vdmUodXNl
cmhhbmRsZUJ1ZmZlciksIHN0ZDo6bnVsbG9wdCwgYXR0YWNobWVudCk7CiB9CiAKLVJlZjxBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVz
ZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJv
bCkKK1JlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5
QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYg
YWNjZXNzQ29udHJvbCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RG
TW92ZShyYXdJZCksIFdURk1vdmUodXNlckhhbmRsZSksIFdURk1vdmUobmFtZSksIGFjY2Vzc0Nv
bnRyb2wpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUodXNlckhhbmRsZSksIFdURk1vdmUobmFt
ZSksIGFjY2Vzc0NvbnRyb2wsIGF0dGFjaG1lbnQpKTsKIH0KIAogdm9pZCBBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U6OnNldEF1dGhlbnRpY2F0b3JEYXRhKFZlY3Rvcjx1aW50OF90PiYm
IGF1dGhlbnRpY2F0b3JEYXRhKQpAQCAtNTgsMTYgKzU4LDE2IEBAIHZvaWQgQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlOjpzZXRBdXRoZW50aWNhdG9yRGF0YShWZWN0b3I8dWludDhfdD4m
JiBhdXRoCiAgICAgbV9hdXRoZW50aWNhdG9yRGF0YSA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0
aGVudGljYXRvckRhdGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5zaXplKCkpOwogfQogCi1B
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50
aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIHVzZXJIYW5kbGUpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShy
YXdJZCkpCitBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4m
JiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRy
PEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFj
aG1lbnQpCisgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIGF0dGFj
aG1lbnQpCiAgICAgLCBtX2F1dGhlbnRpY2F0b3JEYXRhKFdURk1vdmUoYXV0aGVudGljYXRvckRh
dGEpKQogICAgICwgbV9zaWduYXR1cmUoV1RGTW92ZShzaWduYXR1cmUpKQogICAgICwgbV91c2Vy
SGFuZGxlKFdURk1vdmUodXNlckhhbmRsZSkpCiB7CiB9CiAKLUF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZl
cj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUs
IFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCkKLSAgICA6IEF1dGhlbnRpY2F0b3JS
ZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKK0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwg
UmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0Nv
bnRyb2xSZWYgYWNjZXNzQ29udHJvbCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVu
dCkKKyAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgYXR0YWNobWVu
dCkKICAgICAsIG1fdXNlckhhbmRsZShXVEZNb3ZlKHVzZXJIYW5kbGUpKQogICAgICwgbV9uYW1l
KFdURk1vdmUobmFtZSkpCiAgICAgLCBtX2FjY2Vzc0NvbnRyb2woYWNjZXNzQ29udHJvbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDJhZDY2NWUxMjgxODAzYTIyMjJmZTIz
NmVlNjA1NGJiZGM5YWYxMDAuLmVhNGE3NjYwNWJiZTc0ZjA4MjU2MjJjYWM3YTMwN2ViZDlmZTcz
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlIDog
cHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYg
cmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVm
ZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIE9wdGlv
bmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVh
dGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBh
dXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVm
ZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgU3RyaW5nJiYgbmFt
ZSwgU2VjQWNjZXNzQ29udHJvbFJlZik7CisgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJh
eUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVy
ZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIE9wdGlvbmFsPEF1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0
dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUsIEF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5
QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYs
IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CiAKICAgICBBcnJheUJ1ZmZlciogYXV0aGVudGlj
YXRvckRhdGEoKSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRpY2F0b3JEYXRhLmdldCgpOyB9CkBA
IC01OSw4ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExBQ29udGV4dChMQUNvbnRleHQg
KmNvbnRleHQpIHsgbV9sYUNvbnRleHQgPSBjb250ZXh0OyB9CiAKIHByaXZhdGU6Ci0gICAgQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5
QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7Ci0g
ICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVm
PEFycmF5QnVmZmVyPiYmLCBTdHJpbmcmJiwgU2VjQWNjZXNzQ29udHJvbFJlZik7CisgICAgQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5
QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgQXV0
aGVudGljYXRvckF0dGFjaG1lbnQpOworICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgU3RyaW5nJiYsIFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogICAgIFR5cGUgdHlw
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OkFzc2VydGlvbjsgfQogICAgIEF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGEgZGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlLmNwcAppbmRleCA5ZDJiODczNDA0ZDY0Y2Q3NmJmZTgxZWJjYzI5Yzg1
NTMwOWMwMjk1Li40ZThiNzQ5ZTRjMDA3MDlmZGEzMDFhN2FmZTVmZDk5NWU0MDc4NDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwxOCArMzIsMTggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2U+IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVm
ZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QpCitSZWY8
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZm
ZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1l
bnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uo
V1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpLCBhdHRhY2htZW50KSk7
CiB9CiAKLVJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lk
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0KQorUmVmPEF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZTo6Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1l
bnQpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRhdGEo
KSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5k
YXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSkpOworICAgIHJldHVybiBjcmVhdGUoQXJy
YXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCksIHJhd0lkLnNpemUoKSksIEFycmF5QnVmZmVy
OjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5zaXpl
KCkpLCBhdHRhY2htZW50KTsKIH0KIAotQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6
OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJ
ZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KQotICAgIDogQXV0aGVudGlj
YXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpKQorQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4m
JiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNh
dG9yQXR0YWNobWVudCBhdHRhY2htZW50KQorICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdU
Rk1vdmUocmF3SWQpLCBhdHRhY2htZW50KQogICAgICwgbV9hdHRlc3RhdGlvbk9iamVjdChXVEZN
b3ZlKGF0dGVzdGF0aW9uT2JqZWN0KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UuaAppbmRleCA2MGNkNmU3YTFiMDQ1NGQ0YjdkOGUxMWU1ZGUzZWMyZmFiZmZkZjViLi4y
NjIzZWE4NTk5YzQ3MTU0N2FhYTUwOWM3YTI2OGI0YWU0OGY2YjFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhl
bnRpY2F0b3JSZXNwb25zZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlv
bk9iamVjdCk7CisgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0
dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRl
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0
ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogICAgIHZpcnR1YWwg
fkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCiAgICAgQXJy
YXlCdWZmZXIqIGF0dGVzdGF0aW9uT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hdHRlc3RhdGlv
bk9iamVjdC5wdHIoKTsgfQogCiBwcml2YXRlOgotICAgIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmKTsKKyAgICBB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxB
cnJheUJ1ZmZlcj4mJiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwogCiAgICAgVHlwZSB0eXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6QXR0ZXN0YXRpb247IH0KICAgICBBdXRoZW50
aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmNwcAppbmRleCAzZDU2NmY4N2FlYjlhMDE3ZGMwYTk5OTc2YTc4NjFjMzI4ZTZkZTFhLi4wODVm
MTc3OTRmNGVkMzc5MWJiMmJiYjkzMzU5MjA5MmNjNGE1MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTE4NSwxMyArMTg1LDEzIEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpj
cmVhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVudERhdGFKc29uID0g
V1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBhYm9y
dFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YSYmIGRhdGEsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIGF1dG8g
Y2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKSwgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNpZ25h
bCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVudGljYXRvckF0dGFj
aG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRlZCgpKSB7CiAgICAg
ICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnRlZCBi
eSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3Jl
YXRlKFdURk1vdmUoZGF0YSkpKSB7CisgICAgICAgIGlmIChhdXRvIHJlc3BvbnNlID0gQXV0aGVu
dGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoV1RGTW92ZShkYXRhKSwgYXR0YWNobWVudCkpIHsK
ICAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRDbGllbnREYXRhSlNPTihXVEZNb3ZlKGNsaWVudERh
dGFKc29uKSk7CiAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVibGljS2V5Q3JlZGVudGlh
bDo6Y3JlYXRlKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkpLnB0cigpKTsKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTI1NiwxMyArMjU2LDEzIEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVudERhdGFK
c29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0aGVudGljYXRvclJlc3Bv
bnNlRGF0YSYmIGRhdGEsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgeworICAg
IGF1dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29u
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9y
dFNpZ25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRlZCgpKSB7
CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiQWJv
cnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6
dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSkpKSB7CisgICAgICAgIGlmIChhdXRvIHJlc3BvbnNlID0g
QXV0aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoV1RGTW92ZShkYXRhKSwgYXR0YWNobWVu
dCkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRDbGllbnREYXRhSlNPTihXVEZNb3ZlKGNs
aWVudERhdGFKc29uKSk7CiAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVibGljS2V5Q3Jl
ZGVudGlhbDo6Y3JlYXRlKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkpLnB0cigpKTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oCmluZGV4IGFmZjBj
NmFmMWNjYThjZGI3NjdiYmZhN2UxMzQ4MGU0NWM4NDNlYWEuLjVlZjQwNDQ3ZTA3NDY2ZTJhMmU4
Y2EwOWZhZGU3OGVlN2QzMjkxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisjaW5jbHVkZSAiQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAg
LTQxLDcgKzQyLDcgQEAgc3RydWN0IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE7CiBzdHJ1Y3Qg
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKIHN0cnVjdCBQdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnM7CiAKLXVzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YSYmLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYpPjsKK3VzaW5nIFJlcXVlc3RDb21wbGV0aW9u
SGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRvclJl
c3BvbnNlRGF0YSYmLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YSYmKT47CiB1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT47CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JDbGllbnQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcAppbmRleCBkNGI3MTI5M2Nm
M2VkZTk1MzQxMTM2Yzk1OTM2NGQxNjAyN2Y2ZWZlLi43YTQxNjY5ZGQ2ZTdhZjQwM2QxZGUyMjY5
N2M4NDQ1MDkyOGM1YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiBBdXRoZW50
aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZShBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0
YSkKK1JlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6
dHJ5Q3JlYXRlKEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiBkYXRhLCBBdXRoZW50aWNhdG9y
QXR0YWNobWVudCBhdHRhY2htZW50KQogewogICAgIGlmICghZGF0YS5yYXdJZCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC00MywxMyArNDMsMTMgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JS
ZXNwb25zZT4gQXV0aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoQXV0aGVudGljYXRvclJl
c3AKICAgICAgICAgaWYgKCFkYXRhLmF0dGVzdGF0aW9uT2JqZWN0KQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF0dGVzdGF0
aW9uT2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXR1cm4gQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLnJhd0lkLnJlbGVhc2VOb25OdWxsKCks
IGRhdGEuYXR0ZXN0YXRpb25PYmplY3QucmVsZWFzZU5vbk51bGwoKSwgYXR0YWNobWVudCk7CiAg
ICAgfQogCiAgICAgaWYgKCFkYXRhLmF1dGhlbnRpY2F0b3JEYXRhIHx8ICFkYXRhLnNpZ25hdHVy
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBkYXRh
LmF1dGhlbnRpY2F0b3JEYXRhLnJlbGVhc2VOb25OdWxsKCksIGRhdGEuc2lnbmF0dXJlLnJlbGVh
c2VOb25OdWxsKCksIFdURk1vdmUoZGF0YS51c2VySGFuZGxlKSwgQXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50T3V0cHV0cyB7IGRhdGEuYXBwaWQgfSk7CisgICAgcmV0dXJuIEF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwo
KSwgZGF0YS5hdXRoZW50aWNhdG9yRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLnNpZ25hdHVy
ZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGRhdGEudXNlckhhbmRsZSksIEF1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMgeyBkYXRhLmFwcGlkIH0sIGF0dGFjaG1lbnQpOwog
fQogCiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6ZGF0
YSgpIGNvbnN0CkBAIC04NSw4ICs4NSwxNCBAQCBBcnJheUJ1ZmZlciogQXV0aGVudGljYXRvclJl
c3BvbnNlOjpjbGllbnREYXRhSlNPTigpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpZW50RGF0YUpT
T04uZ2V0KCk7CiB9CiAKLUF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXV0aGVudGljYXRvclJlc3Bv
bnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCkKK0F1dGhlbnRpY2F0b3JBdHRhY2htZW50IEF1
dGhlbnRpY2F0b3JSZXNwb25zZTo6YXR0YWNobWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
YXR0YWNobWVudDsKK30KKworQXV0aGVudGljYXRvclJlc3BvbnNlOjpBdXRoZW50aWNhdG9yUmVz
cG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBh
dHRhY2htZW50KQogICAgIDogbV9yYXdJZChXVEZNb3ZlKHJhd0lkKSkKKyAgICAsIG1fYXR0YWNo
bWVudChhdHRhY2htZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaAppbmRleCA1YTMzZTcyNTA5OWIx
YmVlYTNjYjkxODlmMWQxMmU0NWJhOTE0OGFkLi43N2I2MmUxNDA1MWY0ZjNjNGFkMzY5MjFmMGU3
MTU1OWQ5MzQwMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShX
RUJfQVVUSE4pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRw
dXRzLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJJ
RExUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1R5
cGVDYXN0cy5oPgpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEF0dGVzdGF0aW9u
CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiB0cnlD
cmVhdGUoQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEF1
dGhlbnRpY2F0b3JSZXNwb25zZT4gdHJ5Q3JlYXRlKEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEm
JiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JS
ZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAw
OwpAQCAtNTQsMTQgKzU1LDE2IEBAIHB1YmxpYzoKICAgICBBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRPdXRwdXRzIGV4dGVuc2lvbnMoKSBjb25zdDsKICAgICB2b2lkIHNldENsaWVudERh
dGFKU09OKFJlZjxBcnJheUJ1ZmZlcj4mJik7CiAgICAgQXJyYXlCdWZmZXIqIGNsaWVudERhdGFK
U09OKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQXV0aGVudGljYXRvckF0dGFjaG1lbnQg
YXR0YWNobWVudCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgQXV0aGVudGljYXRvclJlc3Bv
bnNlKFJlZjxBcnJheUJ1ZmZlcj4mJik7CisgICAgQXV0aGVudGljYXRvclJlc3BvbnNlKFJlZjxB
cnJheUJ1ZmZlcj4mJiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwogCiBwcml2YXRlOgogICAg
IFJlZjxBcnJheUJ1ZmZlcj4gbV9yYXdJZDsKICAgICBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzIG1fZXh0ZW5zaW9uczsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fY2xp
ZW50RGF0YUpTT047CisgICAgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgbV9hdHRhY2htZW50Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5j
cHAKaW5kZXggOWEyMTU1MzlmZmM4ZWU0OWIxODY5ODQ3NjQ3YTI0YjliMjIyMTdjOS4uZjcxYzZl
ZmU1ZTJmNTIzNWIxZjc2ZWQzMDY4ZDMyMGE5ODM2NWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VD
b252ZXJ0ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLy8gQ29weXJpZ2h0IDIwMTggVGhlIENocm9t
aXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE4LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8KIC8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGdl
dENyZWRlbnRpYWxJZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhKQog
CiAvLyBEZWNvZGVzIGJ5dGUgYXJyYXkgcmVzcG9uc2UgZnJvbSBhdXRoZW50aWNhdG9yIHRvIENC
T1IgdmFsdWUgb2JqZWN0IGFuZAogLy8gY2hlY2tzIGZvciBjb3JyZWN0IGVuY29kaW5nIGZvcm1h
dC4KLVJlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtl
Q3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIsIGNvbnN0
IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uKQorUmVmUHRyPEF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVz
cG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlciwgV2ViQ29yZTo6QXV0aGVudGlj
YXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJl
ZmVyZW5jZSYgYXR0ZXN0YXRpb24pCiB7CiAgICAgYXV0byBkZWNvZGVkTWFwID0gZGVjb2RlUmVz
cG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2RlZE1hcCkKQEAgLTEzNSwxMCArMTM1
LDEwIEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBN
YWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlCiAgICAgICAgIGF0dGVzdGF0aW9uT2JqZWN0
ID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoQ0JPUihXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0
TWFwKSkpOwogICAgIH0KIAotICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgKmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICByZXR1
cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQs
ICphdHRlc3RhdGlvbk9iamVjdCwgYXR0YWNobWVudCk7CiB9CiAKLVJlZlB0cjxBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikKK1JlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBpbkJ1ZmZlciwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVu
dCkKIHsKICAgICBhdXRvIGRlY29kZWRNYXAgPSBkZWNvZGVSZXNwb25zZU1hcChpbkJ1ZmZlcik7
CiAgICAgaWYgKCFkZWNvZGVkTWFwKQpAQCAtMTcyLDcgKzE3Miw3IEBAIFJlZlB0cjxBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29u
c3QgVmVjdG9yCiAgICAgICAgIGlmIChpdHIgPT0gdXNlci5lbmQoKSB8fCAhaXRyLT5zZWNvbmQu
aXNCeXRlU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgYXV0
byYgdXNlckhhbmRsZSA9IGl0ci0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKTsKLSAgICAgICAgcmVz
cG9uc2UgPSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFs
SWQsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHVzZXJIYW5kbGUpOworICAgICAgICByZXNwb25zZSA9
IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXV0
aERhdGEsIHNpZ25hdHVyZSwgdXNlckhhbmRsZSwgYXR0YWNobWVudCk7CiAKICAgICAgICAgaXRy
ID0gdXNlci5maW5kKENCT1Ioa0VudGl0eU5hbWVNYXBLZXkpKTsKICAgICAgICAgaWYgKGl0ciAh
PSB1c2VyLmVuZCgpKSB7CkBAIC0xODgsNyArMTg4LDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb25zdCBWZWN0
b3IKICAgICAgICAgICAgIHJlc3BvbnNlLT5zZXREaXNwbGF5TmFtZShpdHItPnNlY29uZC5nZXRT
dHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICByZXNwb25zZSA9IEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXV0aERh
dGEsIHNpZ25hdHVyZSwgeyB9KTsKKyAgICAgICAgcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUs
IHsgfSwgYXR0YWNobWVudCk7CiAgICAgfQogCiAgICAgaXQgPSByZXNwb25zZU1hcC5maW5kKENC
T1IoNSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L0RldmljZVJlc3BvbnNlQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaAppbmRleCAwZTEzYWJkZjM5MjlkNTkx
NzI3NzMxY2Q2YzJlMjk1NGMwNjg5MTIzLi41NDljMzU3YTc5NDAxMzkyOWYwNjcxZmY3NTEwNjM5
MTU0OTBkZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaApAQCAtMSw1ICsxLDUgQEAK
IC8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTUyLDEyICs1Miwx
MiBAQCBXRUJDT1JFX0VYUE9SVCBDdGFwRGV2aWNlUmVzcG9uc2VDb2RlIGdldFJlc3BvbnNlQ29k
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIC8vIGFuZCBjb252ZXJ0cyByZXNwb25zZSB0byBB
dXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWxSZXNwb25zZSBvYmplY3Qgd2l0aAogLy8gQ0JPUiBt
YXAga2V5cyB0aGF0IGNvbmZvcm0gdG8gZm9ybWF0IG9mIGF0dGVzdGF0aW9uIG9iamVjdCBkZWZp
bmVkIGJ5IHRoZQogLy8gV2ViQXV0aE4gc3BlYyA6IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJh
dXRobi8jZmlnLWF0dFN0cnVjdHMKLVdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3Bv
bnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29u
dmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uID0gV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZTo6RGlyZWN0KTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlh
bFJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
dHRhY2htZW50LCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNl
JiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7CiAK
IC8vIERlLXNlcmlhbGl6ZXMgQ0JPUiBlbmNvZGVkIHJlc3BvbnNlIHRvIEF1dGhlbnRpY2F0b3JH
ZXRBc3NlcnRpb24gLwogLy8gQXV0aGVudGljYXRvckdldE5leHRBc3NlcnRpb24gcmVxdWVzdCB0
byBBdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uUmVzcG9uc2UKIC8vIG9iamVjdC4KLVdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJl
YWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CitXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
PiByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogLy8gRGUtc2VyaWFsaXplcyBDQk9S
IGVuY29kZWQgcmVzcG9uc2UgdG8gQXV0aGVudGljYXRvckdldEluZm8gcmVxdWVzdCB0bwogLy8g
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVy
LmNwcAppbmRleCAxMzQ1NDFkMWVmNTk1NDI5ZjI1MTI4MjJmMTkzZDUxNTNkNGQwYjg1Li4xYTdk
MTA1YmI4NTI1ZDU1ZGU5M2JkNTM5MDZhODEzMGE2NjEzMDNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZl
cnRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQ2hyb21pdW0g
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIGNib3I6OkNCT1JWYWx1ZTo6TWFw
VmFsdWUgY3JlYXRlRmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50RnJvbVUyZlJlZ2lzdGVyUmUKIAog
fSAvLyBuYW1lc3BhY2UKIAotUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
PiByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgdTJmRGF0YSwgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5j
ZSYgYXR0ZXN0YXRpb24pCitSZWZQdHI8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+
IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiB1MmZEYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBj
b25zdCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlvbikKIHsKICAg
ICBhdXRvIHB1YmxpY0tleSA9IGV4dHJhY3RFQ1B1YmxpY0tleUZyb21VMmZSZWdpc3RyYXRpb25S
ZXNwb25zZSh1MmZEYXRhKTsKICAgICBpZiAocHVibGljS2V5LmlzRW1wdHkoKSkKQEAgLTE2MCwx
MCArMTYwLDEwIEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVh
ZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiByCiAKICAgICBhdXRvIGF0dGVzdGF0
aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgImZp
ZG8tdTJmIiwgV1RGTW92ZShmaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnQpLCBhdHRlc3RhdGlvbik7
CiAKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShj
cmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICByZXR1cm4gQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2Jq
ZWN0LCBhdHRhY2htZW50KTsKIH0KIAotUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5SGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEpCitS
ZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkVTJmU2lnblJlc3BvbnNl
KGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0
YWNobWVudCkKIHsKICAgICBpZiAoa2V5SGFuZGxlLmlzRW1wdHkoKSB8fCB1MmZEYXRhLnNpemUo
KSA8PSBzaWduYXR1cmVJbmRleCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzgsNyAr
MTc4LDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNp
Z25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGMKIAogICAgIC8vIEZJWE1FOiBGaW5kIGEg
d2F5IHRvIHJlbW92ZSB0aGUgbmVlZCBvZiBjb25zdHJ1Y3RpbmcgYSB2ZWN0b3IgaGVyZS4KICAg
ICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlIHsgdTJmRGF0YS5kYXRhKCkgKyBzaWduYXR1cmVJ
bmRleCwgdTJmRGF0YS5zaXplKCkgLSBzaWduYXR1cmVJbmRleCB9OwotICAgIHJldHVybiBBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShrZXlIYW5kbGUsIGF1dGhEYXRhLCBz
aWduYXR1cmUsIHsgfSk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZTo6Y3JlYXRlKGtleUhhbmRsZSwgYXV0aERhdGEsIHNpZ25hdHVyZSwgeyB9LCBhdHRhY2htZW50
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgZmlkbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAppbmRleCBj
NGYyMDFmYzA1M2U3ODVlMWQ5NzFhZTU2NWVjZjNmNTVlMWUxNjUyLi5lYzMzNDI5NDhmMWQ1ZjM1
YjExOTAyNDJlOGQxMWI4NGQ3ZGMxYjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaApAQCAtMSw1
ICsxLDUgQEAKIC8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQw
LDExICs0MCwxMSBAQCBuYW1lc3BhY2UgZmlkbyB7CiAKIC8vIENvbnZlcnRzIGEgVTJGIHJlZ2lz
dGVyIHJlc3BvbnNlIHRvIFdlYkF1dGhOIG1ha2VDcmVkZW50aWFsIHJlc3BvbnNlLgogLy8gaHR0
cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNs
aWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYt
YXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsLWludGVyb3BlcmFiaWxpdHkKLVdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVh
ZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHUyZkRhdGEsIGNvbnN0IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZl
cmVuY2UmIGF0dGVzdGF0aW9uID0gV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVy
ZW5jZTo6RGlyZWN0KTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3Ry
aW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBdHRhY2htZW50LCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQ
cmVmZXJlbmNlJiA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6OkRp
cmVjdCk7CiAKIC8vIENvbnZlcnRzIGEgVTJGIGF1dGhlbnRpY2F0aW9uIHJlc3BvbnNlIHRvIFdl
YkF1dGhOIGdldEFzc2VydGlvbiByZXNwb25zZS4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9y
Zy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRv
ci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWF1dGhlbnRpY2F0b3JHZXRBc3Nl
cnRpb24taW50ZXJvcGVyYWJpbGl0eQotV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBT
dHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHUyZkRhdGEpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBT
dHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHUyZkRhdGEsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsK
IAogfSAvLyBuYW1lc3BhY2UgZmlkbwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZS5tbQppbmRleCAzODdmMjI0YjVmZTJkYzliMWE1MTViZWQ5MmRmYmJhMWE1NGYxM2Yw
Li40NjE4YmUwZDIyYWYyN2JlOWZmNjEwY2Q2NWQ5Nzg4MjdkYTYzNDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsOSArMzIsOSBAQAogCiBAaW1wbGVt
ZW50YXRpb24gX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlCiAKLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJ
ZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdXRoZW50aWNhdG9yRGF0YToo
TlNEYXRhICopYXV0aGVudGljYXRvckRhdGEgc2lnbmF0dXJlOihOU0RhdGEgKilzaWduYXR1cmUg
dXNlckhhbmRsZTooTlNEYXRhICopdXNlckhhbmRsZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKily
YXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cz4mJilleHRlbnNpb25zIGF1dGhlbnRpY2F0b3JEYXRhOihOU0RhdGEgKilhdXRo
ZW50aWNhdG9yRGF0YSBzaWduYXR1cmU6KE5TRGF0YSAqKXNpZ25hdHVyZSB1c2VySGFuZGxlOihO
U0RhdGEgKil1c2VySGFuZGxlIGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50
KWF0dGFjaG1lbnQKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoQ2xpZW50RGF0
YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6cmF3SWQgZXh0ZW5zaW9uczpXVEZNb3ZlKGV4dGVu
c2lvbnMpXSkpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aENsaWVudERhdGFKU09O
OmNsaWVudERhdGFKU09OIHJhd0lkOnJhd0lkIGV4dGVuc2lvbnM6V1RGTW92ZShleHRlbnNpb25z
KSBhdHRhY2htZW50OmF0dGFjaG1lbnRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIF9h
dXRoZW50aWNhdG9yRGF0YSA9IGF1dGhlbnRpY2F0b3JEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaAppbmRleCBlZWY2YTE0N2EzYjA2
M2Y0ZDM5ODA3OGZhNThhZTM4MjY3Njk3Y2NhLi5mNDg5Mzg5NWY2MjQ4OGUyNDEzNmU3ZmY0OGVj
MTcxNjMyOTBkMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlSW50ZXJuYWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAK
IEBpbnRlcmZhY2UgX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlICgpCiAKLS0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNP
TiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRp
Y2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdXRoZW50aWNhdG9y
RGF0YTooTlNEYXRhICopYXV0aGVudGljYXRvckRhdGEgc2lnbmF0dXJlOihOU0RhdGEgKilzaWdu
YXR1cmUgdXNlckhhbmRsZTooTlNEYXRhICopdXNlckhhbmRsZTsKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNE
YXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdXRoZW50aWNhdG9yRGF0YTooTlNEYXRh
ICopYXV0aGVudGljYXRvckRhdGEgc2lnbmF0dXJlOihOU0RhdGEgKilzaWduYXR1cmUgdXNlckhh
bmRsZTooTlNEYXRhICopdXNlckhhbmRsZSBhdHRhY2htZW50OihfV0tBdXRoZW50aWNhdG9yQXR0
YWNobWVudClhdHRhY2htZW50OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZS5tbQppbmRleCAzYjE5MWZlZGY1Nzk5ODY0YWMxZmE5NTI3YjRmNzc1
NDNjNmU5MTUxLi5iZGMwZTM1YjkyNDc4OTc4ZGJiMDRmODYxNzU2OTI2ODI1M2RhNjhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDkgKzMyLDkg
QEAKIAogQGltcGxlbWVudGF0aW9uIF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGll
bnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9X
S0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdHRl
c3RhdGlvbk9iamVjdDooTlNEYXRhICopYXR0ZXN0YXRpb25PYmplY3QKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDoo
TlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdHRlc3RhdGlvbk9iamVjdDooTlNE
YXRhICopYXR0ZXN0YXRpb25PYmplY3QgYXR0YWNobWVudDooX1dLQXV0aGVudGljYXRvckF0dGFj
aG1lbnQpYXR0YWNobWVudAogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhDbGll
bnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpyYXdJZCBleHRlbnNpb25zOldURk1vdmUo
ZXh0ZW5zaW9ucyldKSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoQ2xpZW50RGF0
YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6cmF3SWQgZXh0ZW5zaW9uczpXVEZNb3ZlKGV4dGVu
c2lvbnMpIGF0dGFjaG1lbnQ6YXR0YWNobWVudF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgX2F0dGVzdGF0aW9uT2JqZWN0ID0gYXR0ZXN0YXRpb25PYmplY3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaAppbmRleCAwNmIx
ODA3ZDg1ZWQyOWM2NjU2ODdiZDZmMzkxNDcyNGFiODZiMzVlLi5hYWZiZjBiZDQzZmM4MGU5NDEw
ZGUwODIzYmY0MTU4YmU3ZGE2Y2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5hbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZUludGVybmFsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNyArMzQsNyBAQCBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgogCiBAaW50ZXJmYWNlIF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlICgpCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEg
KiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWlu
UHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9u
cyBhdHRlc3RhdGlvbk9iamVjdDooTlNEYXRhICopYXR0ZXN0YXRpb25PYmplY3Q7CistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04g
cmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmpl
Y3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2JqZWN0IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0
b3JBdHRhY2htZW50KWF0dGFjaG1lbnQ7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZS5o
CmluZGV4IDExZWRkOTQ0NDk0N2ZlMzUzMzBmMTM0Mzk2ZjJkZWMyODU4OWZmY2EuLjY1YWJlNWU3
MWMwZmNhZDk3NWYzZmFmZDMwZDNkMGE3NTVkZTJjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNl
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5k
YXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudC5oPgog
CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApAQCAtMzYsNiArMzcsNyBAQCBO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS0F1dGhlbnRpY2F0b3JSZXNwb25z
ZSA6IE5TT2JqZWN0CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgX1dLQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgTlNEYXRhICpjbGllbnREYXRhSlNPTjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgTlNEYXRhICpyYXdJZDsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgcmVh
ZG9ubHksIHN0cm9uZykgX1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyAq
ZXh0ZW5zaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLm1tCmluZGV4IDg5ZDA2MTdlZWQ3NGJi
MzQ0NmMxZDA5YzY2NjBjMTNlNzU4NzQzMDcuLmI2ODBlYWI3ZDgwZjQ0YTgyMWM1ZTE1ZWU4MzIx
ZTM0MTg1NDIyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZS5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMyw3IEBACiAg
ICAgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+IF9l
eHRlbnNpb25zOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjoo
TlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6
KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4
dGVuc2lvbnMKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEg
KiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWlu
UHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9u
cyBhdHRhY2htZW50OihfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudClhdHRhY2htZW50CiB7CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00
MSw2ICs0MSw4IEBACiAgICAgX2NsaWVudERhdGFKU09OID0gY2xpZW50RGF0YUpTT047CiAgICAg
X3Jhd0lkID0gcmF3SWQ7CiAgICAgX2V4dGVuc2lvbnMgPSBleHRlbnNpb25zOworICAgIF9hdHRh
Y2htZW50ID0gYXR0YWNobWVudDsKKwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3Bv
bnNlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRo
ZW50aWNhdG9yUmVzcG9uc2VJbnRlcm5hbC5oCmluZGV4IGIwZmFlZmJmNDdmYTMzZTgxOTQzYjM3
MDYyNDA4ODk1NTQ0Yzk3MTcuLjM2YTIyNTMyN2MwYjY2YjdjYjRmMjA3YmM1YWVjMmNjNTg5NmY3
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRo
ZW50aWNhdG9yUmVzcG9uc2VJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2VJbnRlcm5hbC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDcg
QEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGludGVyZmFjZSBfV0tBdXRoZW50aWNhdG9y
UmVzcG9uc2UgKCkKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5T
RGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihS
ZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRl
bnNpb25zOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAq
KWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5Q
dHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25z
IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQ7CiAKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCBiMjBjYzI5YzhkNGNkZDQ0YWRh
MDg1NDdkYjcyYjU3NzY0N2U2NGY2Li43OWE0N2ZhOWYzYjdlMjZmNTg5NGNiZmIzM2I2MDg0M2Ey
NTA1M2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNDUzLDkgKzQ1MywxOSBA
QCBzdGF0aWMgV2ViQ29yZTo6QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzIGF1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaQogfQogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLXN0
YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YSYgZGF0YSwgTlNEYXRhICpjbGllbnREYXRhSlNPTikKK3N0YXRpYyBfV0tB
dXRoZW50aWNhdG9yQXR0YWNobWVudCBhdXRoZW50aWNhdG9yQXR0YWNobWVudFRvV0tBdXRoZW50
aWNhdG9yQXR0YWNobWVudChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2ht
ZW50KQogewotICAgIHJldHVybiBhZG9wdE5TKFtbX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3
SWQ6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRhdGEoKSBsZW5ndGg6ZGF0YS5y
YXdJZC0+Ynl0ZUxlbmd0aCgpXSBleHRlbnNpb25zOm5pbCBhdHRlc3RhdGlvbk9iamVjdDpbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5hdHRlc3RhdGlvbk9iamVjdC0+ZGF0YSgpIGxlbmd0aDpk
YXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCldXSk7CisgICAgc3dpdGNoIChhdHRh
Y2htZW50KSB7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxh
dGZvcm06CisgICAgICAgIHJldHVybiBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudFBsYXRmb3Jt
OworICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZv
cm06CisgICAgICAgIHJldHVybiBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudENyb3NzUGxhdGZv
cm07CisgICAgfQorfQorCitzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEsIE5TRGF0YSAqY2xpZW50RGF0
YUpTT04sIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSBh
bGxvY10gaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6ZGF0YS5yYXdJZC0+ZGF0YSgpIGxlbmd0aDpkYXRhLnJhd0lkLT5ieXRl
TGVuZ3RoKCldIGV4dGVuc2lvbnM6bmlsIGF0dGVzdGF0aW9uT2JqZWN0OltOU0RhdGEgZGF0YVdp
dGhCeXRlczpkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5kYXRhKCkgbGVuZ3RoOmRhdGEuYXR0ZXN0
YXRpb25PYmplY3QtPmJ5dGVMZW5ndGgoKV0gYXR0YWNobWVudDogYXV0aGVudGljYXRvckF0dGFj
aG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVudCldKTsKIH0KICNlbmRp
ZgogCkBAIC00NjYsNyArNDc2LDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb24KICAgICBhdXRv
IGhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKU09OLmdldCgpKTsK
ICAgICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoaGFuZGxlciksIGNs
aWVudERhdGFKU09OID0gV1RGTW92ZShjbGllbnREYXRhSlNPTildIChWYXJpYW50PFJlZjxXZWJD
b3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U+LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3Qg
UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZT4mIHJlc3BvbnNlKSB7Ci0gICAgICAg
ICAgICBoYW5kbGVyKHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UocmVzcG9uc2Ut
PmRhdGEoKSwgY2xpZW50RGF0YUpTT04uZ2V0KCkpLmdldCgpLCBuaWwpOworICAgICAgICAgICAg
aGFuZGxlcih3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKHJlc3BvbnNlLT5kYXRh
KCksIGNsaWVudERhdGFKU09OLmdldCgpLCByZXNwb25zZS0+YXR0YWNobWVudCgpKS5nZXQoKSwg
bmlsKTsKICAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2Vw
dGlvbikgewogICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSk7CiAgICAg
ICAgIH0pOwpAQCAtNDk1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uCiB9CiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEsIE5TRGF0YSAqY2xpZW50
RGF0YUpTT04pCitzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRvclJlc3BvbnNlRGF0YSYgZGF0YSwgTlNEYXRhICpjbGllbnREYXRhSlNPTiwgV2Vi
Q29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKICAgICBSZXRhaW5Q
dHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4gZXh0ZW5zaW9uczsK
ICAgICBpZiAoZGF0YS5hcHBpZCkKQEAgLTUwNSw3ICs1MTUsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcAogICAgIGlmIChkYXRhLnVzZXJIYW5kbGUpCiAgICAgICAgIHVzZXJIYW5kbGUgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS51c2VySGFuZGxlLT5kYXRhKCkgbGVuZ3RoOmRhdGEu
dXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpXTsKIAotICAgIHJldHVybiBhZG9wdE5TKFtbX1dLQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aENsaWVudERhdGFKU09O
OmNsaWVudERhdGFKU09OIHJhd0lkOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLnJhd0lkLT5k
YXRhKCkgbGVuZ3RoOmRhdGEucmF3SWQtPmJ5dGVMZW5ndGgoKV0gZXh0ZW5zaW9uczpXVEZNb3Zl
KGV4dGVuc2lvbnMpIGF1dGhlbnRpY2F0b3JEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRh
LmF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCkgbGVuZ3RoOmRhdGEuYXV0aGVudGljYXRvckRhdGEt
PmJ5dGVMZW5ndGgoKV0gc2lnbmF0dXJlOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLnNpZ25h
dHVyZS0+ZGF0YSgpIGxlbmd0aDpkYXRhLnNpZ25hdHVyZS0+Ynl0ZUxlbmd0aCgpXSB1c2VySGFu
ZGxlOnVzZXJIYW5kbGVdKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS0F1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRh
SlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5yYXdJZC0+ZGF0YSgpIGxlbmd0
aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6V1RGTW92ZShleHRlbnNpb25z
KSBhdXRoZW50aWNhdG9yRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5hdXRoZW50aWNh
dG9yRGF0YS0+ZGF0YSgpIGxlbmd0aDpkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5ieXRlTGVuZ3Ro
KCldIHNpZ25hdHVyZTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5zaWduYXR1cmUtPmRhdGEo
KSBsZW5ndGg6ZGF0YS5zaWduYXR1cmUtPmJ5dGVMZW5ndGgoKV0gdXNlckhhbmRsZTp1c2VySGFu
ZGxlIGF0dGFjaG1lbnQ6YXV0aGVudGljYXRvckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0
dGFjaG1lbnQoYXR0YWNobWVudCldKTsKIH0KICNlbmRpZgogCkBAIC01MTYsNyArNTI2LDcgQEAg
c3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3AKICAgICBhdXRvIGhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0
YUpzb25IYXNoKGNsaWVudERhdGFKU09OLmdldCgpKTsKICAgICBhdXRvIGNhbGxiYWNrID0gW2hh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoaGFuZGxlciksIGNsaWVudERhdGFKU09OID0gV1RGTW92ZShj
bGllbnREYXRhSlNPTildIChWYXJpYW50PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9u
c2U+LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JSZXNwb25zZT4mIHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICBoYW5kbGVyKHdrQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlKHJlc3BvbnNlLT5kYXRhKCksIGNsaWVudERhdGFKU09OLmdl
dCgpKS5nZXQoKSwgbmlsKTsKKyAgICAgICAgICAgIGhhbmRsZXIod2tBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UocmVzcG9uc2UtPmRhdGEoKSwgY2xpZW50RGF0YUpTT04uZ2V0KCksIHJl
c3BvbnNlLT5hdHRhY2htZW50KCkpLmdldCgpLCBuaWwpOwogICAgICAgICB9LCBbJl0oY29uc3Qg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBoYW5kbGVy
KG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9y
VW5rbm93biB1c2VySW5mbzpuaWxdKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggMWFhYzFjYTI2MWVjM2E5YzI5N2IxYzkzYjMzNDA4
MzIyZjdkYmVkNi4uN2VhNmI3YmFlMmQyZGZmZmIwM2VlYjBhYzJmN2I5Mjk5Yzk4ODI3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjcsNyArMTY3LDcgQEAg
c3RhdGljIE9wdGlvbmFsPFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Pj4+IGdldEV4aXN0aW5nQ3JlZGVudGkKICAgICAgICAgfQogICAgICAgICBhdXRvJiB1c2VybmFt
ZSA9IGl0LT5zZWNvbmQuZ2V0U3RyaW5nKCk7CiAKLSAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFw
cGVuZChBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSh0b0FycmF5QnVmZmVy
KGF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF0pLCB0b0FycmF5QnVmZmVy
KHVzZXJIYW5kbGUpLCBTdHJpbmcodXNlcm5hbWUpLCAoX19icmlkZ2UgU2VjQWNjZXNzQ29udHJv
bFJlZilhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFjY2Vzc0NvbnRyb2xdKSk7CisgICAgICAgIHJl
c3VsdC51bmNoZWNrZWRBcHBlbmQoQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVh
dGUodG9BcnJheUJ1ZmZlcihhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxd
KSwgdG9BcnJheUJ1ZmZlcih1c2VySGFuZGxlKSwgU3RyaW5nKHVzZXJuYW1lKSwgKF9fYnJpZGdl
IFNlY0FjY2Vzc0NvbnRyb2xSZWYpYXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9s
XSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtKSk7CiAgICAgfQogICAgIHJldHVy
biByZXN1bHQ7CiB9CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ28K
IAogICAgICAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShjcmVhdGlvbk9wdGlvbnMu
cnAuaWQsIGZsYWdzLCBjb3VudGVyLCBidWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVjdG9y
PHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMCksIGNyZWRlbnRpYWxJZCwgY29zZVB1YmxpY0tleSkp
OwogICAgICAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVj
dChXVEZNb3ZlKGF1dGhEYXRhKSwgIiIsIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVy
ZW5jZTo6Tm9uZSk7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCkpOwor
ICAgICAgICByZWNlaXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6
Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50OjpQbGF0Zm9ybSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NzAsNyAr
NDcwLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxB
ZnRlckF0dGVzdGVkKFZlY3Rvcjx1aW50OF90PiYmIGMKICAgICBhdXRvIGF0dGVzdGF0aW9uT2Jq
ZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgImFwcGxlIiwg
V1RGTW92ZShhdHRlc3RhdGlvblN0YXRlbWVudE1hcCksIGNyZWF0aW9uT3B0aW9ucy5hdHRlc3Rh
dGlvbik7CiAKICAgICBkZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsKCk7Ci0gICAgcmVjZWl2ZVJl
c3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFs
SWQsIGF0dGVzdGF0aW9uT2JqZWN0KSk7CisgICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2Jq
ZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm0pKTsKIH0KIAogdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggYWYzZjkxOTY2YzM3MWYwOGVm
NGRlODEwMTc1MGM4OGU0ZWYyM2E2Yy4uMWNhMGRlMDRlMDFjYWEwMzQ3YzU1MjkxNDkxZWViZDI0
N2Q0N2RiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC03MCw5ICs3MCw5IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHk6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0CiAgICAg
YXV0byBjYWxsYmFjayA9IFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKFZhcmlhbnQ8UmVm
PEF1dGhlbnRpY2F0b3JSZXNwb25zZT4sIEV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSBtdXRhYmxl
IHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgV1RGOjpzd2l0
Y2hPbihyZXN1bHQsIFsmXShjb25zdCBSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiYgcmVzcG9u
c2UpIHsKLSAgICAgICAgICAgIGhhbmRsZXIocmVzcG9uc2UtPmRhdGEoKSwgeyB9KTsKKyAgICAg
ICAgICAgIGhhbmRsZXIocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPmF0dGFjaG1lbnQoKSwg
eyB9KTsKICAgICAgICAgfSwgWyZdKGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgewot
ICAgICAgICAgICAgaGFuZGxlcih7IH0sIGV4Y2VwdGlvbik7CisgICAgICAgICAgICBoYW5kbGVy
KHsgfSwgKEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIGV4Y2VwdGlvbik7CiAgICAgICAgIH0p
OwogICAgIH07CiAgICAgbV93ZWJQYWdlUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpLmF1dGhlbnRp
Y2F0b3JNYW5hZ2VyKCkuaGFuZGxlUmVxdWVzdChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuaAppbmRleCAzM2ViMDdmMzkyMDA1NmU1ZDc3MjQwZTIyZGUwOTdjOWM2NjBiNGVhLi5mMDhl
MjQ3NWU5N2Q5MDQ1YjY0N2M0NDJjYjQzMTkzZjBlNjJiZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2lm
IEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBdHRhY2htZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgfldlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KCk7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmVx
dWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYpPjsKKyAgICB1c2luZyBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmLCBX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYpPjsKICAgICB1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT47CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggZGY5OGI4ZTM2YzI4NmUwMmIxYTY1NDgwOTQxZWQ5MDRiOTIzNjM0
My4uY2I5M2M4OWYyNDQ3MGYzOTlhMGIxOWIxZDMyOWU3N2E3Zjc1NmFmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsOCArMjYsOCBAQAogCiBtZXNzYWdlcyAtPiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eSBOb3RSZWZDb3VudGVkIHsKIAotICAgIE1ha2VDcmVkZW50aWFsKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5m
bywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAt
PiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYwotICAgIEdldEFzc2VydGlv
bihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURh
dGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYwor
ICAgIE1ha2VDcmVkZW50aWFsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gs
IHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlv
bnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRv
ckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhj
ZXB0aW9uKSBBc3luYworICAgIEdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZlY3Rvcjx1
aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6
QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYwogICAgIElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZSgpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
QXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAppbmRleCBlZjg1YTMxODg4NWZjOWVlODQw
ODJkMDg1MDA4ZDQ1NjcwNjliMGEyLi41OTgxNTM4YjA2ODI5YzgwNTU4Nzk5Y2Y0MzI2MWQxOWM4
NDUyYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDUsNyAr
MTA1LDcgQEAgdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogCiB2b2lk
IEN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJl
Y2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IHJl
YWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShkYXRhLCBXVEY6OmdldDxQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpLmF0dGVzdGF0aW9u
KTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGRh
dGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtLCBXVEY6OmdldDxQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpLmF0
dGVzdGF0aW9uKTsKICAgICBpZiAoIXJlc3BvbnNlKSB7CiAgICAgICAgIGF1dG8gZXJyb3IgPSBn
ZXRSZXNwb25zZUNvZGUoZGF0YSk7CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIEN0YXBBdXRo
ZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogCiB2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjpjb250
aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJiBk
YXRhKQogewotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNl
KGRhdGEpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNl
KGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBpZiAo
IXJlc3BvbnNlKSB7CiAgICAgICAgIGF1dG8gZXJyb3IgPSBnZXRSZXNwb25zZUNvZGUoZGF0YSk7
CiAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZUdl
dEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWludDhfdAogCiB2b2lkIEN0
YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldE5leHRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVj
ZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVh
ZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShkYXRhKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVh
ZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6
Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgaWYgKCFyZXNwb25zZSkgewogICAgICAgICBhdXRvIGVycm9y
ID0gZ2V0UmVzcG9uc2VDb2RlKGRhdGEpOwogICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRp
b25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJVbmtub3duIGludGVybmFsIGVycm9y
LiBFcnJvciBjb2RlOiAiLCBzdGF0aWNfY2FzdDx1aW50OF90PihlcnJvcikpIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZB
dXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKaW5kZXggYzc1NzU5ZmEzMmQ5ODllOTU0ZDcy
MjRiNjQ2M2VjMGU2MmEyYTgxNy4uYzMwNDhkNjk2NTZmNzVmNzJkZjA0YzBhMWM4OGYzOTljODk2
OTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Niw3ICsxNTYs
NyBAQCB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVnaXN0ZXJDb21tYW5kQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZQogICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0
dXM6OlNXX05PX0VSUk9SOiB7CiAgICAgICAgIGF1dG8mIG9wdGlvbnMgPSBXVEY6OmdldDxQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwog
ICAgICAgICBhdXRvIGFwcElkID0gcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVu
c2lvbihvcHRpb25zLmV4dGVuc2lvbnMpOwotICAgICAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUy
ZlJlZ2lzdGVyUmVzcG9uc2UoIWFwcElkID8gb3B0aW9ucy5ycC5pZCA6IGFwcElkLCBhcGR1UmVz
cG9uc2UuZGF0YSgpLCBvcHRpb25zLmF0dGVzdGF0aW9uKTsKKyAgICAgICAgYXV0byByZXNwb25z
ZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKCFhcHBJZCA/IG9wdGlvbnMucnAuaWQgOiBhcHBJ
ZCwgYXBkdVJlc3BvbnNlLmRhdGEoKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxh
dGZvcm0sIG9wdGlvbnMuYXR0ZXN0YXRpb24pOwogICAgICAgICBpZiAoIXJlc3BvbnNlKSB7CiAg
ICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAi
Q291bGRuJ3QgcGFyc2UgdGhlIFUyRiByZWdpc3RlciByZXNwb25zZS4iX3MgfSk7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0yMDgsOSArMjA4LDkgQEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjpj
b250aW51ZVNpZ25Db21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZSYmIGEK
ICAgICAgICAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVzcG9uc2U7
CiAgICAgICAgIGlmIChtX2lzQXBwSWQpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXF1ZXN0T3B0
aW9ucy5leHRlbnNpb25zICYmICFyZXF1ZXN0T3B0aW9ucy5leHRlbnNpb25zLT5hcHBpZC5pc051
bGwoKSk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UocmVxdWVz
dE9wdGlvbnMuZXh0ZW5zaW9ucy0+YXBwaWQsIHJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlh
bHNbbV9uZXh0TGlzdEluZGV4IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNwb25zZS5kYXRhKCkpOwor
ICAgICAgICAgICAgcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKHJlcXVlc3RPcHRpb25z
LmV4dGVuc2lvbnMtPmFwcGlkLCByZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzW21fbmV4
dExpc3RJbmRleCAtIDFdLmlkVmVjdG9yLCBhcGR1UmVzcG9uc2UuZGF0YSgpLCBBdXRoZW50aWNh
dG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKHJlcXVlc3RPcHRpb25zLnJwSWQsIHJl
cXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHNbbV9uZXh0TGlzdEluZGV4IC0gMV0uaWRWZWN0
b3IsIGFwZHVSZXNwb25zZS5kYXRhKCkpOworICAgICAgICAgICAgcmVzcG9uc2UgPSByZWFkVTJm
U2lnblJlc3BvbnNlKHJlcXVlc3RPcHRpb25zLnJwSWQsIHJlcXVlc3RPcHRpb25zLmFsbG93Q3Jl
ZGVudGlhbHNbbV9uZXh0TGlzdEluZGV4IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNwb25zZS5kYXRh
KCksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICAgICAgaWYg
KCFyZXNwb25zZSkgewogICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7
IFVua25vd25FcnJvciwgIkNvdWxkbid0IHBhcnNlIHRoZSBVMkYgc2lnbiByZXNwb25zZS4iX3Mg
fSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkF1
dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCA2NGNiYWZjOTMxOWJjZmE0ODE1ZGM5NWYxZTU0Nzg0MzZmYTRhMjQyLi5iNzE0OGNiZTEx
NTAzZGNiODg1MmRiMWNhN2YyODhmNWYwMzYxOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtODIsOSArODIsOSBAQCB2b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJgogICAgIGF1dG8g
Y2FsbGJhY2sgPSBbaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildIChWYXJpYW50PFJlZjxBdXRo
ZW50aWNhdG9yUmVzcG9uc2U+LCBFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIFdURjo6c3dpdGNoT24o
cmVzdWx0LCBbJl0oY29uc3QgUmVmPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4mIHJlc3BvbnNlKSB7
Ci0gICAgICAgICAgICBoYW5kbGVyKHJlc3BvbnNlLT5kYXRhKCksIHsgfSk7CisgICAgICAgICAg
ICBoYW5kbGVyKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5hdHRhY2htZW50KCksIHsgfSk7
CiAgICAgICAgIH0sIFsmXShjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKLSAgICAg
ICAgICAgIGhhbmRsZXIoeyB9LCBleGNlcHRpb24pOworICAgICAgICAgICAgaGFuZGxlcih7IH0s
IChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBleGNlcHRpb24pOwogICAgICAgICB9KTsKICAg
ICB9OwogICAgIG1fV2ViQXV0aG5Qcm9jZXNzLT5hdXRoZW50aWNhdG9yTWFuYWdlcigpLmhhbmRs
ZVJlcXVlc3QoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjaykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAppbmRleCBiZjZmN2M2NTVkOTY1OTBhMWYyMjE0MDU3YjM2ZTliNTA1MjI4
NzQwLi41NWEzMTYxNWM3MGNhMjliMjg1ODAyZjJhMmE1Yzg5MDAzY2NjNGM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBdHRhY2htZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKQEAgLTU3LDcgKzU4LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9jZXNzSWRl
bnRpZmllcjsgfQogCiBwcml2YXRlOgotICAgIHVzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxl
ciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJl
c3BvbnNlRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT47CisgICAgdXNpbmcg
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiwgV2ViQ29yZTo6QXV0aGVudGljYXRv
ckF0dGFjaG1lbnQsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT47CiAgICAgdXNpbmcg
UXVlcnlDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+Owog
CiAgICAgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkF1dGhuUHJvY2VzcyYsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nl
c3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDI5YjRj
MWRlOTdiYmYyNGI4NGIyZGQwYzliMDdhM2UyNmNkMDIxNjEuLmFjNzNhOTUzNmE4OTIwMjJlMzNm
YTZjMTQxNzI4NTlkZTJkNWY0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Q
cm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjQsOCArMjQsOCBAQAogCiBtZXNzYWdlcyAtPiBXZWJBdXRobkNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgewogCi0gICAgTWFrZUNyZWRlbnRpYWwoVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0
cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMs
IGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhj
ZXB0aW9uKSBBc3luYwotICAgIEdldEFzc2VydGlvbihWZWN0b3I8dWludDhfdD4gaGFzaCwgc3Ry
dWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zLCBi
b29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdXRoZW50aWNh
dG9yUmVzcG9uc2VEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2Vw
dGlvbikgQXN5bmMKKyAgICBNYWtlQ3JlZGVudGlhbChWZWN0b3I8dWludDhfdD4gaGFzaCwgc3Ry
dWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucywg
Ym9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0
YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRp
b24pIEFzeW5jCisgICAgR2V0QXNzZXJ0aW9uKFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMsIGJvb2wg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1l
bnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBB
c3luYwogICAgIElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSgp
IC0+IChib29sIHJlc3VsdCkgQXN5bmMKIAogICAgIFNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oc3RydWN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbik7Cg==
</data>
<flag name="commit-queue"
          id="451364"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430050</attachid>
            <date>2021-05-28 14:18:32 -0700</date>
            <delta_ts>2021-06-01 14:50:22 -0700</delta_ts>
            <desc>Rebased patch with fixed tests</desc>
            <filename>76554090-3.patch</filename>
            <type>text/plain</type>
            <size>81174</size>
            <attacher name="Garrett Davidson">garrett_davidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZDZlZjBjMDNkYzkuLjMzN2RiYmYzNjhhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQyIEBACisyMDIxLTA1LTI4ICBHYXJyZXR0IERhdmlkc29uICA8Z2FycmV0dF9kYXZp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBfV0tBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2Ugc2hvdWxkIHNwZWNpZnkgdGhlIGF0dGFjaG1lbnQgdHlwZSB1c2VkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1MTkKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTU0MDkwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IFdlYkF1dGhuIGF1dGhlbnRpY2F0b3JzIHRvIHBh
c3MgYmFjayB0aGVpciBhdHRhY2htZW50IHR5cGUgYW5kIGNvbnRpbnVlCisgICAgICAgIHBsdW1i
aW5nIHRocm91Z2ggdXAgdG8gdGhlIGF1dGhlbnRpY2F0b3IgY29vcmRpbmF0b3IuCisKKyAgICAg
ICAgQ292ZXJlZCBieSBtYW51YWwgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpj
cmVhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yUmVzcG9uc2U6OmF0dGFjaG1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvclJlc3BvbnNlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2UpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAg
ICAgKGZpZG86OnJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZSk6CisgICAgICAgIChmaWRv
OjpyZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoZmlkbzo6cmVh
ZFUyZlJlZ2lzdGVyUmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlNpZ25SZXNwb25z
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVy
Lmg6CisKIDIwMjEtMDUtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgTWVkaWFTZXNzaW9uLmNhbGxBY3Rpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZS5jcHAKaW5kZXggMGJmMjNmMDI4NTZiLi5hMGQxYjM4YTNiZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjUgKzMyLDI1IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4g
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYm
IHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1
ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBPcHRp
b25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmIGV4dGVuc2lvbnMp
CitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1
ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYgZXh0ZW5zaW9ucywgQXV0aGVudGljYXRvckF0dGFj
aG1lbnQgYXR0YWNobWVudCkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXV0
aGVudGljYXRvckRhdGEpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUodXNlckhhbmRsZSkp
KTsKKyAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpLCBX
VEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUodXNlckhhbmRsZSksIGF0dGFjaG1lbnQpKTsKICAg
ICBpZiAoZXh0ZW5zaW9ucykKICAgICAgICAgcmVzcG9uc2UtPnNldEV4dGVuc2lvbnMoV1RGTW92
ZSgqZXh0ZW5zaW9ucykpOwogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAotUmVmPEF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpj
cmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRsZSkKK1JlZjxBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGlj
YXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHVzZXJIYW5kbGUsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQp
CiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiB1c2VyaGFuZGxlQnVmZmVyOwogICAgIGlmICgh
dXNlckhhbmRsZS5pc0VtcHR5KCkpCiAgICAgICAgIHVzZXJoYW5kbGVCdWZmZXIgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGUuZGF0YSgpLCB1c2VySGFuZGxlLnNpemUoKSk7Ci0gICAg
cmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRhdGEoKSwgcmF3SWQuc2l6
ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhl
bnRpY2F0b3JEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJlLmRhdGEo
KSwgc2lnbmF0dXJlLnNpemUoKSksIFdURk1vdmUodXNlcmhhbmRsZUJ1ZmZlciksIHN0ZDo6bnVs
bG9wdCk7CisgICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRhdGEo
KSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5k
YXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2ln
bmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSksIFdURk1vdmUodXNlcmhhbmRsZUJ1ZmZl
ciksIHN0ZDo6bnVsbG9wdCwgYXR0YWNobWVudCk7CiB9CiAKLVJlZjxBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKFJl
ZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0
cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCkKK1JlZjxBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVz
ZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJv
bCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCks
IFdURk1vdmUodXNlckhhbmRsZSksIFdURk1vdmUobmFtZSksIGFjY2Vzc0NvbnRyb2wpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RG
TW92ZShyYXdJZCksIFdURk1vdmUodXNlckhhbmRsZSksIFdURk1vdmUobmFtZSksIGFjY2Vzc0Nv
bnRyb2wsIGF0dGFjaG1lbnQpKTsKIH0KIAogdm9pZCBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U6OnNldEF1dGhlbnRpY2F0b3JEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGF1dGhlbnRpY2F0
b3JEYXRhKQpAQCAtNTgsMTYgKzU4LDE2IEBAIHZvaWQgQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpzZXRBdXRoZW50aWNhdG9yRGF0YShWZWN0b3I8dWludDhfdD4mJiBhdXRoCiAgICAg
bV9hdXRoZW50aWNhdG9yRGF0YSA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRh
dGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5zaXplKCkpOwogfQogCi1BdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJy
YXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwg
UmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJI
YW5kbGUpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCkpCitBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNh
dG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIHVzZXJIYW5kbGUsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCisgICAg
OiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIGF0dGFjaG1lbnQpCiAgICAg
LCBtX2F1dGhlbnRpY2F0b3JEYXRhKFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpKQogICAgICwg
bV9zaWduYXR1cmUoV1RGTW92ZShzaWduYXR1cmUpKQogICAgICwgbV91c2VySGFuZGxlKFdURk1v
dmUodXNlckhhbmRsZSkpCiB7CiB9CiAKLUF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwg
UmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0Nv
bnRyb2xSZWYgYWNjZXNzQ29udHJvbCkKLSAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZN
b3ZlKHJhd0lkKSkKK0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVm
ZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNj
ZXNzQ29udHJvbCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKKyAgICA6IEF1
dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgYXR0YWNobWVudCkKICAgICAsIG1f
dXNlckhhbmRsZShXVEZNb3ZlKHVzZXJIYW5kbGUpKQogICAgICwgbV9uYW1lKFdURk1vdmUobmFt
ZSkpCiAgICAgLCBtX2FjY2Vzc0NvbnRyb2woYWNjZXNzQ29udHJvbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5oCmluZGV4IDJhZDY2NWUxMjgxOC4uZWE0YTc2NjA1YmJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsOSArMzcsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSA6IHB1YmxpYyBBdXRo
ZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8
QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWdu
YXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBPcHRpb25hbDxBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRv
ckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCAgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiB1c2VySGFuZGxlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJ
ZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vz
c0NvbnRyb2xSZWYpOworICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYg
YXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRPdXRwdXRzPiYmLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1
dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1
c2VySGFuZGxlLCBTdHJpbmcmJiBuYW1lLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBBdXRoZW50aWNh
dG9yQXR0YWNobWVudCk7CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlKCkgPSBkZWZhdWx0OwogCiAgICAgQXJyYXlCdWZmZXIqIGF1dGhlbnRpY2F0b3JEYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5nZXQoKTsgfQpAQCAtNTksOCArNTks
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMQUNvbnRleHQoTEFDb250ZXh0ICpjb250ZXh0KSB7
IG1fbGFDb250ZXh0ID0gY29udGV4dDsgfQogCiBwcml2YXRlOgotICAgIEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwg
UmVmPEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwotICAgIEF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZl
cj4mJiwgU3RyaW5nJiYsIFNlY0FjY2Vzc0NvbnRyb2xSZWYpOworICAgIEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwg
UmVmPEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50KTsKKyAgICBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5
QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFN0cmluZyYmLCBTZWNBY2Nlc3NDb250cm9s
UmVmLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBUeXBlOjpBc3NlcnRpb247IH0KICAgICBBdXRoZW50aWNhdG9yUmVzcG9u
c2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZS5jcHAKaW5kZXggOWQyYjg3MzQwNGQ2Li40ZThiNzQ5ZTRjMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDE4ICszMiwxOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3
SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkKK1JlZjxBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6
OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRl
c3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShX
VEZNb3ZlKHJhd0lkKSwgV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdCkpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShXVEZNb3ZlKHJh
d0lkKSwgV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdCksIGF0dGFjaG1lbnQpKTsKIH0KIAotUmVm
PEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZTo6Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QpCitSZWY8QXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRl
c3RhdGlvbk9iamVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUocmF3SWQuZGF0YSgpLCByYXdJZC5z
aXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0
ZXN0YXRpb25PYmplY3Quc2l6ZSgpKSk7CisgICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHJhd0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShh
dHRlc3RhdGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSksIGF0dGFj
aG1lbnQpOwogfQogCi1BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6QXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJy
YXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVzcG9u
c2UoV1RGTW92ZShyYXdJZCkpCitBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBS
ZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50IGF0dGFjaG1lbnQpCisgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJ
ZCksIGF0dGFjaG1lbnQpCiAgICAgLCBtX2F0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXR0ZXN0
YXRpb25PYmplY3QpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCmlu
ZGV4IDYwY2Q2ZTdhMWIwNC4uMjYyM2VhODU5OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JS
ZXNwb25zZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVm
ZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCk7
CisgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRl
KFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9u
T2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25P
YmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCiAgICAgQXJyYXlCdWZmZXIq
IGF0dGVzdGF0aW9uT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hdHRlc3RhdGlvbk9iamVjdC5w
dHIoKTsgfQogCiBwcml2YXRlOgotICAgIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
KFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmKTsKKyAgICBBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZl
cj4mJiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gVHlwZTo6QXR0ZXN0YXRpb247IH0KICAgICBBdXRoZW50aWNhdG9yUmVz
cG9uc2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAppbmRl
eCAzZDU2NmY4N2FlYjkuLjA4NWYxNzc5NGY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
ODUsMTMgKzE4NSwxMyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5QwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUo
Y2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRTaWduYWwg
PSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0gKEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiBkYXRh
LCBFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNr
ID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0
aGVudGljYXRvclJlc3BvbnNlRGF0YSYmIGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0
dGFjaG1lbnQsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBp
ZiAoYWJvcnRTaWduYWwgJiYgYWJvcnRTaWduYWwtPmFib3J0ZWQoKSkgewogICAgICAgICAgICAg
cHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0ZWQgYnkgQWJvcnRT
aWduYWwuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGF1dG8gcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0ZShXVEZN
b3ZlKGRhdGEpKSkgeworICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JS
ZXNwb25zZTo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSksIGF0dGFjaG1lbnQpKSB7CiAgICAgICAg
ICAgICByZXNwb25zZS0+c2V0Q2xpZW50RGF0YUpTT04oV1RGTW92ZShjbGllbnREYXRhSnNvbikp
OwogICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFB1YmxpY0tleUNyZWRlbnRpYWw6OmNyZWF0
ZShyZXNwb25zZS5yZWxlYXNlTm9uTnVsbCgpKS5wdHIoKSk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0yNTYsMTMgKzI1NiwxMyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlz
Y292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFjayA9IFtjbGllbnREYXRhSnNvbiA9IFdU
Rk1vdmUoY2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgYWJvcnRT
aWduYWwgPSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0gKEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEm
JiBkYXRhLCBFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNh
bGxiYWNrID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwp
XSAoQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYmIGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50IGF0dGFjaG1lbnQsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgewogICAg
ICAgICBpZiAoYWJvcnRTaWduYWwgJiYgYWJvcnRTaWduYWwtPmFib3J0ZWQoKSkgewogICAgICAg
ICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0ZWQgYnkg
QWJvcnRTaWduYWwuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKGF1dG8gcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNyZWF0
ZShXVEZNb3ZlKGRhdGEpKSkgeworICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSksIGF0dGFjaG1lbnQpKSB7CiAg
ICAgICAgICAgICByZXNwb25zZS0+c2V0Q2xpZW50RGF0YUpTT04oV1RGTW92ZShjbGllbnREYXRh
SnNvbikpOwogICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFB1YmxpY0tleUNyZWRlbnRpYWw6
OmNyZWF0ZShyZXNwb25zZS5yZWxlYXNlTm9uTnVsbCgpKS5wdHIoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaAppbmRleCBhZmYwYzZhZjFjY2Eu
LjVlZjQwNDQ3ZTA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9y
QXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDEsNyAr
NDIsNyBAQCBzdHJ1Y3QgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTsKIHN0cnVjdCBQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9uczsKIAotdXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYsIFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmJik+OwordXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVy
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VE
YXRhJiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBXZWJDb3JlOjpFeGNlcHRp
b25EYXRhJiYpPjsKIHVzaW5nIFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudD4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwCmluZGV4IGQ0YjcxMjkzY2YzZS4uN2E0
MTY2OWRkNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiBBdXRoZW50aWNhdG9y
UmVzcG9uc2U6OnRyeUNyZWF0ZShBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSkKK1Jl
ZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3Jl
YXRlKEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiBkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudCBhdHRhY2htZW50KQogewogICAgIGlmICghZGF0YS5yYXdJZCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC00MywxMyArNDMsMTMgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JSZXNwb25z
ZT4gQXV0aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoQXV0aGVudGljYXRvclJlc3AKICAg
ICAgICAgaWYgKCFkYXRhLmF0dGVzdGF0aW9uT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
OjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF0dGVzdGF0aW9uT2Jq
ZWN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXR1cm4gQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLnJhd0lkLnJlbGVhc2VOb25OdWxsKCksIGRhdGEu
YXR0ZXN0YXRpb25PYmplY3QucmVsZWFzZU5vbk51bGwoKSwgYXR0YWNobWVudCk7CiAgICAgfQog
CiAgICAgaWYgKCFkYXRhLmF1dGhlbnRpY2F0b3JEYXRhIHx8ICFkYXRhLnNpZ25hdHVyZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF1dGhl
bnRpY2F0b3JEYXRhLnJlbGVhc2VOb25OdWxsKCksIGRhdGEuc2lnbmF0dXJlLnJlbGVhc2VOb25O
dWxsKCksIFdURk1vdmUoZGF0YS51c2VySGFuZGxlKSwgQXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50T3V0cHV0cyB7IGRhdGEuYXBwaWQgfSk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwoKSwgZGF0
YS5hdXRoZW50aWNhdG9yRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLnNpZ25hdHVyZS5yZWxl
YXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGRhdGEudXNlckhhbmRsZSksIEF1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudE91dHB1dHMgeyBkYXRhLmFwcGlkIH0sIGF0dGFjaG1lbnQpOwogfQogCiBB
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6ZGF0YSgpIGNv
bnN0CkBAIC04NSw4ICs4NSwxNCBAQCBBcnJheUJ1ZmZlciogQXV0aGVudGljYXRvclJlc3BvbnNl
OjpjbGllbnREYXRhSlNPTigpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpZW50RGF0YUpTT04uZ2V0
KCk7CiB9CiAKLUF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXV0aGVudGljYXRvclJlc3BvbnNlKFJl
ZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCkKK0F1dGhlbnRpY2F0b3JBdHRhY2htZW50IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZTo6YXR0YWNobWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXR0YWNo
bWVudDsKK30KKworQXV0aGVudGljYXRvclJlc3BvbnNlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2Uo
UmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2ht
ZW50KQogICAgIDogbV9yYXdJZChXVEZNb3ZlKHJhd0lkKSkKKyAgICAsIG1fYXR0YWNobWVudChh
dHRhY2htZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaAppbmRleCA1YTMzZTcyNTA5OWIuLjc3YjYy
ZTE0MDUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCX0FV
VEhOKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5o
IgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiSURMVHlw
ZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2Fz
dHMuaD4KQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgICAgICBBdHRlc3RhdGlvbgogICAg
IH07CiAKLSAgICBzdGF0aWMgUmVmUHRyPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4gdHJ5Q3JlYXRl
KEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJik7CisgICAgc3RhdGljIFJlZlB0cjxBdXRoZW50
aWNhdG9yUmVzcG9uc2U+IHRyeUNyZWF0ZShBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYsIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yUmVzcG9u
c2UoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKQEAg
LTU0LDE0ICs1NSwxNiBAQCBwdWJsaWM6CiAgICAgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cyBleHRlbnNpb25zKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDbGllbnREYXRhSlNP
TihSZWY8QXJyYXlCdWZmZXI+JiYpOwogICAgIEFycmF5QnVmZmVyKiBjbGllbnREYXRhSlNPTigp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFj
aG1lbnQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZShS
ZWY8QXJyYXlCdWZmZXI+JiYpOworICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWY8QXJyYXlC
dWZmZXI+JiYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogcHJpdmF0ZToKICAgICBSZWY8
QXJyYXlCdWZmZXI+IG1fcmF3SWQ7CiAgICAgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50
T3V0cHV0cyBtX2V4dGVuc2lvbnM7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2NsaWVudERh
dGFKU09OOworICAgIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IG1fYXR0YWNobWVudDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmlu
ZGV4IDlhMjE1NTM5ZmZjOC4uZjcxYzZlZmU1ZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZl
cnRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQ2hyb21pdW0g
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gZ2V0Q3Jl
ZGVudGlhbElkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEpCiAKIC8v
IERlY29kZXMgYnl0ZSBhcnJheSByZXNwb25zZSBmcm9tIGF1dGhlbnRpY2F0b3IgdG8gQ0JPUiB2
YWx1ZSBvYmplY3QgYW5kCiAvLyBjaGVja3MgZm9yIGNvcnJlY3QgZW5jb2RpbmcgZm9ybWF0Lgot
UmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkQ1RBUE1ha2VDcmVk
ZW50aWFsUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlciwgY29uc3QgQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCitSZWZQdHI8QXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25z
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXR0YWNobWVudCBhdHRhY2htZW50LCBjb25zdCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJl
bmNlJiBhdHRlc3RhdGlvbikKIHsKICAgICBhdXRvIGRlY29kZWRNYXAgPSBkZWNvZGVSZXNwb25z
ZU1hcChpbkJ1ZmZlcik7CiAgICAgaWYgKCFkZWNvZGVkTWFwKQpAQCAtMTM1LDEwICsxMzUsMTAg
QEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkQ1RBUE1ha2VD
cmVkZW50aWFsUmVzcG9uc2UoY29uc3QgVmUKICAgICAgICAgYXR0ZXN0YXRpb25PYmplY3QgPSBj
Ym9yOjpDQk9SV3JpdGVyOjp3cml0ZShDQk9SKFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3RNYXAp
KSk7CiAgICAgfQogCi0gICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
OjpjcmVhdGUoY3JlZGVudGlhbElkLCAqYXR0ZXN0YXRpb25PYmplY3QpOworICAgIHJldHVybiBB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgKmF0
dGVzdGF0aW9uT2JqZWN0LCBhdHRhY2htZW50KTsKIH0KIAotUmVmUHRyPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGluQnVmZmVyKQorUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGluQnVmZmVyLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQog
ewogICAgIGF1dG8gZGVjb2RlZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFwKGluQnVmZmVyKTsKICAg
ICBpZiAoIWRlY29kZWRNYXApCkBAIC0xNzIsNyArMTcyLDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb25zdCBW
ZWN0b3IKICAgICAgICAgaWYgKGl0ciA9PSB1c2VyLmVuZCgpIHx8ICFpdHItPnNlY29uZC5pc0J5
dGVTdHJpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBhdXRvJiB1
c2VySGFuZGxlID0gaXRyLT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOwotICAgICAgICByZXNwb25z
ZSA9IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwg
YXV0aERhdGEsIHNpZ25hdHVyZSwgdXNlckhhbmRsZSk7CisgICAgICAgIHJlc3BvbnNlID0gQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdXRoRGF0
YSwgc2lnbmF0dXJlLCB1c2VySGFuZGxlLCBhdHRhY2htZW50KTsKIAogICAgICAgICBpdHIgPSB1
c2VyLmZpbmQoQ0JPUihrRW50aXR5TmFtZU1hcEtleSkpOwogICAgICAgICBpZiAoaXRyICE9IHVz
ZXIuZW5kKCkpIHsKQEAgLTE4OCw3ICsxODgsNyBAQCBSZWZQdHI8QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3Rvcgog
ICAgICAgICAgICAgcmVzcG9uc2UtPnNldERpc3BsYXlOYW1lKGl0ci0+c2Vjb25kLmdldFN0cmlu
ZygpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3BvbnNlID0gQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdXRoRGF0YSwg
c2lnbmF0dXJlLCB7IH0pOworICAgICAgICByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgeyB9
LCBhdHRhY2htZW50KTsKICAgICB9CiAKICAgICBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUig1
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2
aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oCmluZGV4IDBlMTNhYmRmMzkyOS4uNTQ5YzM1
N2E3OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
RGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8v
IENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8gQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTUyLDEyICs1MiwxMiBA
QCBXRUJDT1JFX0VYUE9SVCBDdGFwRGV2aWNlUmVzcG9uc2VDb2RlIGdldFJlc3BvbnNlQ29kZShj
b25zdCBWZWN0b3I8dWludDhfdD4mKTsKIC8vIGFuZCBjb252ZXJ0cyByZXNwb25zZSB0byBBdXRo
ZW50aWNhdG9yTWFrZUNyZWRlbnRpYWxSZXNwb25zZSBvYmplY3Qgd2l0aAogLy8gQ0JPUiBtYXAg
a2V5cyB0aGF0IGNvbmZvcm0gdG8gZm9ybWF0IG9mIGF0dGVzdGF0aW9uIG9iamVjdCBkZWZpbmVk
IGJ5IHRoZQogLy8gV2ViQXV0aE4gc3BlYyA6IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhdXRo
bi8jZmlnLWF0dFN0cnVjdHMKLVdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNl
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5
YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uID0gV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlh
bmNlUHJlZmVyZW5jZTo6RGlyZWN0KTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJl
c3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50LCBjb25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiA9
IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7CiAKIC8v
IERlLXNlcmlhbGl6ZXMgQ0JPUiBlbmNvZGVkIHJlc3BvbnNlIHRvIEF1dGhlbnRpY2F0b3JHZXRB
c3NlcnRpb24gLwogLy8gQXV0aGVudGljYXRvckdldE5leHRBc3NlcnRpb24gcmVxdWVzdCB0byBB
dXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uUmVzcG9uc2UKIC8vIG9iamVjdC4KLVdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRD
VEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CitXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBy
ZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogLy8gRGUtc2VyaWFsaXplcyBDQk9SIGVu
Y29kZWQgcmVzcG9uc2UgdG8gQXV0aGVudGljYXRvckdldEluZm8gcmVxdWVzdCB0bwogLy8gQXV0
aGVudGljYXRvckdldEluZm9SZXNwb25zZSBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNw
cAppbmRleCAxMzQ1NDFkMWVmNTkuLjFhN2QxMDViYjg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0
ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLy8gQ29weXJpZ2h0IDIwMTggVGhlIENocm9taXVtIEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8KIC8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZh
bHVlIGNyZWF0ZUZpZG9BdHRlc3RhdGlvblN0YXRlbWVudEZyb21VMmZSZWdpc3RlclJlCiAKIH0g
Ly8gbmFtZXNwYWNlCiAKLVJlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4g
cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHUyZkRhdGEsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2Um
IGF0dGVzdGF0aW9uKQorUmVmUHRyPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBy
ZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgdTJmRGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgY29u
c3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgYXR0ZXN0YXRpb24pCiB7CiAgICAg
YXV0byBwdWJsaWNLZXkgPSBleHRyYWN0RUNQdWJsaWNLZXlGcm9tVTJmUmVnaXN0cmF0aW9uUmVz
cG9uc2UodTJmRGF0YSk7CiAgICAgaWYgKHB1YmxpY0tleS5pc0VtcHR5KCkpCkBAIC0xNjAsMTAg
KzE2MCwxMCBAQCBSZWZQdHI8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRV
MmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcgogCiAgICAgYXV0byBhdHRlc3RhdGlv
bk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJmaWRv
LXUyZiIsIFdURk1vdmUoZmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50KSwgYXR0ZXN0YXRpb24pOwog
Ci0gICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3Jl
ZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVj
dCwgYXR0YWNobWVudCk7CiB9CiAKLVJlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U+IHJlYWRVMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKQorUmVm
UHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShj
b25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFj
aG1lbnQpCiB7CiAgICAgaWYgKGtleUhhbmRsZS5pc0VtcHR5KCkgfHwgdTJmRGF0YS5zaXplKCkg
PD0gc2lnbmF0dXJlSW5kZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTc4LDcgKzE3
OCw3IEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRVMmZTaWdu
UmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjCiAKICAgICAvLyBGSVhNRTogRmluZCBhIHdh
eSB0byByZW1vdmUgdGhlIG5lZWQgb2YgY29uc3RydWN0aW5nIGEgdmVjdG9yIGhlcmUuCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZSB7IHUyZkRhdGEuZGF0YSgpICsgc2lnbmF0dXJlSW5k
ZXgsIHUyZkRhdGEuc2l6ZSgpIC0gc2lnbmF0dXJlSW5kZXggfTsKLSAgICByZXR1cm4gQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoa2V5SGFuZGxlLCBhdXRoRGF0YSwgc2ln
bmF0dXJlLCB7IH0pOworICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6
OmNyZWF0ZShrZXlIYW5kbGUsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHsgfSwgYXR0YWNobWVudCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIGZpZG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmgKaW5kZXggYzRm
MjAxZmMwNTNlLi5lYzMzNDI5NDhmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oCkBAIC0xLDUg
KzEsNSBAQAogLy8gQ29weXJpZ2h0IDIwMTggVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogLy8KIC8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDAs
MTEgKzQwLDExIEBAIG5hbWVzcGFjZSBmaWRvIHsKIAogLy8gQ29udmVydHMgYSBVMkYgcmVnaXN0
ZXIgcmVzcG9uc2UgdG8gV2ViQXV0aE4gbWFrZUNyZWRlbnRpYWwgcmVzcG9uc2UuCiAvLyBodHRw
czovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3L2ZpZG8tY2xp
ZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5odG1sI3UyZi1h
dXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWwtaW50ZXJvcGVyYWJpbGl0eQotV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFk
VTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgdTJmRGF0YSwgY29uc3QgV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVy
ZW5jZSYgYXR0ZXN0YXRpb24gPSBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJl
bmNlOjpEaXJlY3QpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJp
bmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgV2ViQ29yZTo6QXV0aGVu
dGljYXRvckF0dGFjaG1lbnQsIGNvbnN0IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2UmID0gV2ViQ29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6RGly
ZWN0KTsKIAogLy8gQ29udmVydHMgYSBVMkYgYXV0aGVudGljYXRpb24gcmVzcG9uc2UgdG8gV2Vi
QXV0aE4gZ2V0QXNzZXJ0aW9uIHJlc3BvbnNlLgogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3Jn
L3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9y
LXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0aGVudGljYXRvckdldEFzc2Vy
dGlvbi1pbnRlcm9wZXJhYmlsaXR5Ci1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0
cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgdTJmRGF0YSk7CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0
cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgdTJmRGF0YSwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwog
CiB9IC8vIG5hbWVzcGFjZSBmaWRvCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggN2YyMjUzOGMwZWViLi5mMmIxNjNh
YWJkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMDUtMjggIEdhcnJldHQgRGF2
aWRzb24gIDxnYXJyZXR0X2Rhdmlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIF9X
S0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBzaG91bGQgc3BlY2lmeSB0aGUgYXR0YWNo
bWVudCB0eXBlIHVzZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTUxOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1NTQwOTA+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBXZWJBdXRobiBh
dXRoZW50aWNhdG9ycyBzdGFydCBwYXNzaW5nIGJhY2sgdGhlaXIgYXR0YWNobWVudCB0eXBlLCBh
bmQgcGx1bWIKKyAgICAgICAgaXQgdXAgdGhyb3VnaCB0byB0aGUgY2FsbGluZyBwcm9jZXNzLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2UubW06CisgICAgICAgICgtW19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJhd0lkOmV4dGVuc2lvbnM6YXV0aGVudGljYXRvckRh
dGE6c2lnbmF0dXJlOnVzZXJIYW5kbGU6YXR0YWNobWVudDpdKToKKyAgICAgICAgKC1bX1dLQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlIGluaXRXaXRoQ2xpZW50RGF0YUpTT046cmF3SWQ6
ZXh0ZW5zaW9uczphdXRoZW50aWNhdG9yRGF0YTpzaWduYXR1cmU6dXNlckhhbmRsZTpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5tbToKKyAgICAgICAgKC1bX1dLQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgaW5pdFdpdGhDbGllbnREYXRhSlNPTjpyYXdJ
ZDpleHRlbnNpb25zOmF0dGVzdGF0aW9uT2JqZWN0OmF0dGFjaG1lbnQ6XSk6CisgICAgICAgICgt
W19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGluaXRXaXRoQ2xpZW50RGF0YUpT
T046cmF3SWQ6ZXh0ZW5zaW9uczphdHRlc3RhdGlvbk9iamVjdDpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRp
Y2F0b3JSZXNwb25zZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVu
dGljYXRvclJlc3BvbnNlLm1tOgorICAgICAgICAoLVtfV0tBdXRoZW50aWNhdG9yUmVzcG9uc2Ug
aW5pdFdpdGhDbGllbnREYXRhSlNPTjpyYXdJZDpleHRlbnNpb25zOmF0dGFjaG1lbnQ6XSk6Cisg
ICAgICAgICgtW19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09O
OnJhd0lkOmV4dGVuc2lvbnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2VJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKGF1
dGhlbnRpY2F0b3JBdHRhY2htZW50VG9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KToKKyAgICAg
ICAgKHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOgorICAgICAgICAoLVtfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsIG1ha2VDcmVkZW50aWFsV2l0aENoYWxsZW5nZTpvcmlnaW46
b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKHdrQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKToKKyAgICAgICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBn
ZXRBc3NlcnRpb25XaXRoQ2hhbGxlbmdlOm9yaWdpbjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVy
bmFsOjpnZXRFeGlzdGluZ0NyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRo
ZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktp
dDo6Q3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0TmV4dEFzc2VydGlvbkFmdGVyUmVzcG9u
c2VSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
VTJmQXV0aGVudGljYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlUyZkF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlUmVnaXN0ZXJDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYktpdDo6VTJmQXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9u
c2VSZWNlaXZlZCk6CisgICAgICAgICogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhuQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogV2ViQXV0aG5Qcm9jZXNzL1dl
YkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vz
cy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMjEtMDUt
MjggIE1hdHQgR2lsbGlnYW4gIDxtYXR0aGV3X2dpbGxpZ2FuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQcmV2ZW50IHJlc2V0dGluZyBzY3JvbGwgcG9zaXRpb24gaW4gdW5uZWNlc3NhcnkgY2FzZXMg
ZHVyaW5nIHBhZ2UgbG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uu
bW0KaW5kZXggMzg3ZjIyNGI1ZmUyLi40NjE4YmUwZDIyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw5ICszMiw5IEBACiAKIEBpbXBsZW1lbnRhdGlv
biBfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UKIAotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0Rh
dGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25zIGF1dGhlbnRpY2F0b3JEYXRhOihOU0RhdGEg
KilhdXRoZW50aWNhdG9yRGF0YSBzaWduYXR1cmU6KE5TRGF0YSAqKXNpZ25hdHVyZSB1c2VySGFu
ZGxlOihOU0RhdGEgKil1c2VySGFuZGxlCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnRE
YXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4
dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRw
dXRzPiYmKWV4dGVuc2lvbnMgYXV0aGVudGljYXRvckRhdGE6KE5TRGF0YSAqKWF1dGhlbnRpY2F0
b3JEYXRhIHNpZ25hdHVyZTooTlNEYXRhICopc2lnbmF0dXJlIHVzZXJIYW5kbGU6KE5TRGF0YSAq
KXVzZXJIYW5kbGUgYXR0YWNobWVudDooX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQpYXR0YWNo
bWVudAogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhDbGllbnREYXRhSlNPTjpj
bGllbnREYXRhSlNPTiByYXdJZDpyYXdJZCBleHRlbnNpb25zOldURk1vdmUoZXh0ZW5zaW9ucyld
KSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50
RGF0YUpTT04gcmF3SWQ6cmF3SWQgZXh0ZW5zaW9uczpXVEZNb3ZlKGV4dGVuc2lvbnMpIGF0dGFj
aG1lbnQ6YXR0YWNobWVudF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX2F1dGhlbnRp
Y2F0b3JEYXRhID0gYXV0aGVudGljYXRvckRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oCmluZGV4IGVlZjZhMTQ3YTNiMC4uZjQ4OTM4
OTVmNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
SW50ZXJuYWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNCw3ICszNCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBpbnRl
cmZhY2UgX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlICgpCiAKLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJ
ZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdXRoZW50aWNhdG9yRGF0YToo
TlNEYXRhICopYXV0aGVudGljYXRvckRhdGEgc2lnbmF0dXJlOihOU0RhdGEgKilzaWduYXR1cmUg
dXNlckhhbmRsZTooTlNEYXRhICopdXNlckhhbmRsZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRhICop
cmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdXRoZW50aWNhdG9yRGF0YTooTlNEYXRhICopYXV0
aGVudGljYXRvckRhdGEgc2lnbmF0dXJlOihOU0RhdGEgKilzaWduYXR1cmUgdXNlckhhbmRsZToo
TlNEYXRhICopdXNlckhhbmRsZSBhdHRhY2htZW50OihfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVu
dClhdHRhY2htZW50OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZS5tbQppbmRleCAzYjE5MWZlZGY1NzkuLmJkYzBlMzViOTI0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw5ICszMiw5IEBACiAK
IEBpbXBsZW1lbnRhdGlvbiBfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZQogCi0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0
YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRo
ZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRp
b25PYmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0
YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAq
KWF0dGVzdGF0aW9uT2JqZWN0IGF0dGFjaG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50
KWF0dGFjaG1lbnQKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoQ2xpZW50RGF0
YUpTT046Y2xpZW50RGF0YUpTT04gcmF3SWQ6cmF3SWQgZXh0ZW5zaW9uczpXVEZNb3ZlKGV4dGVu
c2lvbnMpXSkpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aENsaWVudERhdGFKU09O
OmNsaWVudERhdGFKU09OIHJhd0lkOnJhd0lkIGV4dGVuc2lvbnM6V1RGTW92ZShleHRlbnNpb25z
KSBhdHRhY2htZW50OmF0dGFjaG1lbnRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIF9h
dHRlc3RhdGlvbk9iamVjdCA9IGF0dGVzdGF0aW9uT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZUludGVybmFsLmgKaW5kZXggMDZiMTgwN2Q4
NWVkLi5hYWZiZjBiZDQzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZUludGVybmFsLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw3IEBAIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKIEBpbnRlcmZhY2UgX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Ug
KCkKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNs
aWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8
X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25zIGF0
dGVzdGF0aW9uT2JqZWN0OihOU0RhdGEgKilhdHRlc3RhdGlvbk9iamVjdDsKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJ
ZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdHRlc3RhdGlvbk9iamVjdDoo
TlNEYXRhICopYXR0ZXN0YXRpb25PYmplY3QgYXR0YWNobWVudDooX1dLQXV0aGVudGljYXRvckF0
dGFjaG1lbnQpYXR0YWNobWVudDsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLmgKaW5k
ZXggMTFlZGQ5NDQ0OTQ3Li42NWFiZTVlNzFjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRp
b24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudC5oPgogCiAj
aW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApAQCAtMzYsNiArMzcsNyBAQCBOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS0F1dGhlbnRpY2F0b3JSZXNwb25zZSA6
IE5TT2JqZWN0CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgX1dLQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQgYXR0YWNobWVudDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNEYXRhICpjbGllbnREYXRhSlNPTjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNEYXRhICpyYXdJZDsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgcmVhZG9u
bHksIHN0cm9uZykgX1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyAqZXh0
ZW5zaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRoZW50aWNhdG9yUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLm1tCmluZGV4IDg5ZDA2MTdlZWQ3NC4uYjY4
MGVhYjdkODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0aGVudGljYXRvclJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UubW0KQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyArMzMsNyBAQAogICAg
IFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiBfZXh0
ZW5zaW9uczsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5T
RGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihS
ZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRl
bnNpb25zCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICop
Y2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0
cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMg
YXR0YWNobWVudDooX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQpYXR0YWNobWVudAogewogICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNDEs
NiArNDEsOCBAQAogICAgIF9jbGllbnREYXRhSlNPTiA9IGNsaWVudERhdGFKU09OOwogICAgIF9y
YXdJZCA9IHJhd0lkOwogICAgIF9leHRlbnNpb25zID0gZXh0ZW5zaW9uczsKKyAgICBfYXR0YWNo
bWVudCA9IGF0dGFjaG1lbnQ7CisKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25z
ZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVu
dGljYXRvclJlc3BvbnNlSW50ZXJuYWwuaAppbmRleCBiMGZhZWZiZjQ3ZmEuLjM2YTIyNTMyN2Mw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhl
bnRpY2F0b3JSZXNwb25zZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZUludGVybmFsLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNyArMzQsNyBA
QCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAaW50ZXJmYWNlIF9XS0F1dGhlbnRpY2F0b3JS
ZXNwb25zZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNE
YXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJl
dGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVu
c2lvbnM7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICop
Y2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0
cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMg
YXR0YWNobWVudDooX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQpYXR0YWNobWVudDsKIAogQGVu
ZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IGIyMGNjMjljOGQ0Yy4uNzlhNDdm
YTlmM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNDUzLDkgKzQ1MywxOSBA
QCBzdGF0aWMgV2ViQ29yZTo6QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzIGF1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaQogfQogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLXN0
YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YSYgZGF0YSwgTlNEYXRhICpjbGllbnREYXRhSlNPTikKK3N0YXRpYyBfV0tB
dXRoZW50aWNhdG9yQXR0YWNobWVudCBhdXRoZW50aWNhdG9yQXR0YWNobWVudFRvV0tBdXRoZW50
aWNhdG9yQXR0YWNobWVudChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2ht
ZW50KQogewotICAgIHJldHVybiBhZG9wdE5TKFtbX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3
SWQ6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQtPmRhdGEoKSBsZW5ndGg6ZGF0YS5y
YXdJZC0+Ynl0ZUxlbmd0aCgpXSBleHRlbnNpb25zOm5pbCBhdHRlc3RhdGlvbk9iamVjdDpbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5hdHRlc3RhdGlvbk9iamVjdC0+ZGF0YSgpIGxlbmd0aDpk
YXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCldXSk7CisgICAgc3dpdGNoIChhdHRh
Y2htZW50KSB7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxh
dGZvcm06CisgICAgICAgIHJldHVybiBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudFBsYXRmb3Jt
OworICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZv
cm06CisgICAgICAgIHJldHVybiBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudENyb3NzUGxhdGZv
cm07CisgICAgfQorfQorCitzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEsIE5TRGF0YSAqY2xpZW50RGF0
YUpTT04sIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSBh
bGxvY10gaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6ZGF0YS5yYXdJZC0+ZGF0YSgpIGxlbmd0aDpkYXRhLnJhd0lkLT5ieXRl
TGVuZ3RoKCldIGV4dGVuc2lvbnM6bmlsIGF0dGVzdGF0aW9uT2JqZWN0OltOU0RhdGEgZGF0YVdp
dGhCeXRlczpkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5kYXRhKCkgbGVuZ3RoOmRhdGEuYXR0ZXN0
YXRpb25PYmplY3QtPmJ5dGVMZW5ndGgoKV0gYXR0YWNobWVudDogYXV0aGVudGljYXRvckF0dGFj
aG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVudCldKTsKIH0KICNlbmRp
ZgogCkBAIC00NjYsNyArNDc2LDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb24KICAgICBhdXRv
IGhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKU09OLmdldCgpKTsK
ICAgICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoaGFuZGxlciksIGNs
aWVudERhdGFKU09OID0gV1RGTW92ZShjbGllbnREYXRhSlNPTildIChWYXJpYW50PFJlZjxXZWJD
b3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U+LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3Qg
UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZT4mIHJlc3BvbnNlKSB7Ci0gICAgICAg
ICAgICBoYW5kbGVyKHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UocmVzcG9uc2Ut
PmRhdGEoKSwgY2xpZW50RGF0YUpTT04uZ2V0KCkpLmdldCgpLCBuaWwpOworICAgICAgICAgICAg
aGFuZGxlcih3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKHJlc3BvbnNlLT5kYXRh
KCksIGNsaWVudERhdGFKU09OLmdldCgpLCByZXNwb25zZS0+YXR0YWNobWVudCgpKS5nZXQoKSwg
bmlsKTsKICAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2Vw
dGlvbikgewogICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSk7CiAgICAg
ICAgIH0pOwpAQCAtNDk1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uCiB9CiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRhdGEsIE5TRGF0YSAqY2xpZW50
RGF0YUpTT04pCitzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRvclJlc3BvbnNlRGF0YSYgZGF0YSwgTlNEYXRhICpjbGllbnREYXRhSlNPTiwgV2Vi
Q29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKICAgICBSZXRhaW5Q
dHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4gZXh0ZW5zaW9uczsK
ICAgICBpZiAoZGF0YS5hcHBpZCkKQEAgLTUwNSw3ICs1MTUsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcAogICAgIGlmIChkYXRhLnVzZXJIYW5kbGUpCiAgICAgICAgIHVzZXJIYW5kbGUgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS51c2VySGFuZGxlLT5kYXRhKCkgbGVuZ3RoOmRhdGEu
dXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpXTsKIAotICAgIHJldHVybiBhZG9wdE5TKFtbX1dLQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aENsaWVudERhdGFKU09O
OmNsaWVudERhdGFKU09OIHJhd0lkOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLnJhd0lkLT5k
YXRhKCkgbGVuZ3RoOmRhdGEucmF3SWQtPmJ5dGVMZW5ndGgoKV0gZXh0ZW5zaW9uczpXVEZNb3Zl
KGV4dGVuc2lvbnMpIGF1dGhlbnRpY2F0b3JEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRh
LmF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCkgbGVuZ3RoOmRhdGEuYXV0aGVudGljYXRvckRhdGEt
PmJ5dGVMZW5ndGgoKV0gc2lnbmF0dXJlOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLnNpZ25h
dHVyZS0+ZGF0YSgpIGxlbmd0aDpkYXRhLnNpZ25hdHVyZS0+Ynl0ZUxlbmd0aCgpXSB1c2VySGFu
ZGxlOnVzZXJIYW5kbGVdKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS0F1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRh
SlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5yYXdJZC0+ZGF0YSgpIGxlbmd0
aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6V1RGTW92ZShleHRlbnNpb25z
KSBhdXRoZW50aWNhdG9yRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5hdXRoZW50aWNh
dG9yRGF0YS0+ZGF0YSgpIGxlbmd0aDpkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5ieXRlTGVuZ3Ro
KCldIHNpZ25hdHVyZTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5zaWduYXR1cmUtPmRhdGEo
KSBsZW5ndGg6ZGF0YS5zaWduYXR1cmUtPmJ5dGVMZW5ndGgoKV0gdXNlckhhbmRsZTp1c2VySGFu
ZGxlIGF0dGFjaG1lbnQ6YXV0aGVudGljYXRvckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0
dGFjaG1lbnQoYXR0YWNobWVudCldKTsKIH0KICNlbmRpZgogCkBAIC01MTYsNyArNTI2LDcgQEAg
c3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3AKICAgICBhdXRvIGhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0
YUpzb25IYXNoKGNsaWVudERhdGFKU09OLmdldCgpKTsKICAgICBhdXRvIGNhbGxiYWNrID0gW2hh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoaGFuZGxlciksIGNsaWVudERhdGFKU09OID0gV1RGTW92ZShj
bGllbnREYXRhSlNPTildIChWYXJpYW50PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9u
c2U+LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JSZXNwb25zZT4mIHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICBoYW5kbGVyKHdrQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlKHJlc3BvbnNlLT5kYXRhKCksIGNsaWVudERhdGFKU09OLmdl
dCgpKS5nZXQoKSwgbmlsKTsKKyAgICAgICAgICAgIGhhbmRsZXIod2tBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UocmVzcG9uc2UtPmRhdGEoKSwgY2xpZW50RGF0YUpTT04uZ2V0KCksIHJl
c3BvbnNlLT5hdHRhY2htZW50KCkpLmdldCgpLCBuaWwpOwogICAgICAgICB9LCBbJl0oY29uc3Qg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBoYW5kbGVy
KG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9y
VW5rbm93biB1c2VySW5mbzpuaWxdKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggMWFhYzFjYTI2MWVjLi43ZWE2YjdiYWUyZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTY3LDcgKzE2Nyw3IEBA
IHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZT4+PiBnZXRFeGlzdGluZ0NyZWRlbnRpCiAgICAgICAgIH0KICAgICAgICAgYXV0byYgdXNlcm5h
bWUgPSBpdC0+c2Vjb25kLmdldFN0cmluZygpOwogCi0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRB
cHBlbmQoQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUodG9BcnJheUJ1ZmZl
cihhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwgdG9BcnJheUJ1ZmZl
cih1c2VySGFuZGxlKSwgU3RyaW5nKHVzZXJuYW1lKSwgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRy
b2xSZWYpYXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSkpOworICAgICAgICBy
ZXN1bHQudW5jaGVja2VkQXBwZW5kKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3Jl
YXRlKHRvQXJyYXlCdWZmZXIoYXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVs
XSksIHRvQXJyYXlCdWZmZXIodXNlckhhbmRsZSksIFN0cmluZyh1c2VybmFtZSksIChfX2JyaWRn
ZSBTZWNBY2Nlc3NDb250cm9sUmVmKWF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQWNjZXNzQ29udHJv
bF0sIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybSkpOwogICAgIH0KICAgICByZXR1
cm4gcmVzdWx0OwogfQpAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9y
Ojpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFNlY0FjY2Vzc0Nv
CiAKICAgICAgICAgYXV0byBhdXRoRGF0YSA9IGJ1aWxkQXV0aERhdGEoY3JlYXRpb25PcHRpb25z
LnJwLmlkLCBmbGFncywgY291bnRlciwgYnVpbGRBdHRlc3RlZENyZWRlbnRpYWxEYXRhKFZlY3Rv
cjx1aW50OF90PihhYWd1aWRMZW5ndGgsIDApLCBjcmVkZW50aWFsSWQsIGNvc2VQdWJsaWNLZXkp
KTsKICAgICAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmpl
Y3QoV1RGTW92ZShhdXRoRGF0YSksICIiLCB7IH0sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZl
cmVuY2U6Ok5vbmUpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QpKTsK
KyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6
OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0
YWNobWVudDo6UGxhdGZvcm0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDcwLDcg
KzQ3MCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJBdHRlc3RlZChWZWN0b3I8dWludDhfdD4mJiBjCiAgICAgYXV0byBhdHRlc3RhdGlvbk9i
amVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJhcHBsZSIs
IFdURk1vdmUoYXR0ZXN0YXRpb25TdGF0ZW1lbnRNYXApLCBjcmVhdGlvbk9wdGlvbnMuYXR0ZXN0
YXRpb24pOwogCiAgICAgZGVsZXRlRHVwbGljYXRlQ3JlZGVudGlhbCgpOwotICAgIHJlY2VpdmVS
ZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlh
bElkLCBhdHRlc3RhdGlvbk9iamVjdCkpOworICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9i
amVjdCwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtKSk7CiB9CiAKIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IGFmM2Y5MTk2NmMzNy4uMWNh
MGRlMDRlMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTcwLDkgKzcwLDkgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXQKICAg
ICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXSAoVmFyaWFudDxS
ZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiwgRXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIG11dGFi
bGUgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBXVEY6OnN3
aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiByZXNw
b25zZSkgewotICAgICAgICAgICAgaGFuZGxlcihyZXNwb25zZS0+ZGF0YSgpLCB7IH0pOworICAg
ICAgICAgICAgaGFuZGxlcihyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+YXR0YWNobWVudCgp
LCB7IH0pOwogICAgICAgICB9LCBbJl0oY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7
Ci0gICAgICAgICAgICBoYW5kbGVyKHsgfSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGhhbmRs
ZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgZXhjZXB0aW9uKTsKICAgICAgICAg
fSk7CiAgICAgfTsKICAgICBtX3dlYlBhZ2VQcm94eS53ZWJzaXRlRGF0YVN0b3JlKCkuYXV0aGVu
dGljYXRvck1hbmFnZXIoKS5oYW5kbGVSZXF1ZXN0KFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2Fs
bGJhY2spKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eS5oCmluZGV4IDMzZWIwN2YzOTIwMC4uZjA4ZTI0NzVlOTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAog
I2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBdHRhY2htZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgfldl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KCk7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcg
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSYpPjsKKyAgICB1c2luZyBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEm
LCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSYpPjsKICAgICB1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT47CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggZGY5OGI4ZTM2YzI4Li5jYjkzYzg5ZjI0NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDggKzI2LDggQEAKIAogbWVzc2FnZXMgLT4gV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkgTm90UmVmQ291bnRlZCB7CiAKLSAgICBNYWtlQ3JlZGVudGlhbChXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFt
ZUluZm8sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIHN0
cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKLSAgICBHZXRBc3Nl
cnRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZy
YW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zLCBib29sIHByb2Nl
c3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9u
c2VEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5
bmMKKyAgICBNYWtlQ3JlZGVudGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiBo
YXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBv
cHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpB
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRh
IGV4Y2VwdGlvbikgQXN5bmMKKyAgICBHZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBWZWN0
b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucyBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVj
dCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKICAgICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
Q3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKaW5kZXggZWY4NWEzMTg4ODVmLi41
OTgxNTM4YjA2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEw
NSw3ICsxMDUsNyBAQCB2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAK
IHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3Bv
bnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBhdXRvIHJlc3BvbnNl
ID0gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGRhdGEsIFdURjo6Z2V0PFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykuYXR0ZXN0
YXRpb24pOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9u
c2UoZGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0sIFdURjo6Z2V0
PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9u
cykuYXR0ZXN0YXRpb24pOwogICAgIGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgYXV0byBlcnJv
ciA9IGdldFJlc3BvbnNlQ29kZShkYXRhKTsKIApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgQ3Rh
cEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiAKIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVz
cG9uc2UoZGF0YSk7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVz
cG9uc2UoZGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAg
IGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgYXV0byBlcnJvciA9IGdldFJlc3BvbnNlQ29kZShk
YXRhKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90CiAKIHZv
aWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0TmV4dEFzc2VydGlvbkFmdGVyUmVzcG9u
c2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGF1dG8gcmVzcG9uc2Ug
PSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGRhdGEpOworICAgIGF1dG8gcmVzcG9uc2Ug
PSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBpZiAoIXJlc3BvbnNlKSB7CiAgICAgICAgIGF1dG8g
ZXJyb3IgPSBnZXRSZXNwb25zZUNvZGUoZGF0YSk7CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4
Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIlVua25vd24gaW50ZXJuYWwg
ZXJyb3IuIEVycm9yIGNvZGU6ICIsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGVycm9yKSkgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRv
L1UyZkF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAppbmRleCBjNzU3NTlmYTMyZDkuLmMz
MDQ4ZDY5NjU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Niw3
ICsxNTYsNyBAQCB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVnaXN0ZXJDb21tYW5k
QWZ0ZXJSZXNwb25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZQogICAgIGNhc2UgQXBkdVJlc3BvbnNl
OjpTdGF0dXM6OlNXX05PX0VSUk9SOiB7CiAgICAgICAgIGF1dG8mIG9wdGlvbnMgPSBXVEY6Omdl
dDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlv
bnMpOwogICAgICAgICBhdXRvIGFwcElkID0gcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9y
dEV4dGVuc2lvbihvcHRpb25zLmV4dGVuc2lvbnMpOwotICAgICAgICBhdXRvIHJlc3BvbnNlID0g
cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoIWFwcElkID8gb3B0aW9ucy5ycC5pZCA6IGFwcElkLCBh
cGR1UmVzcG9uc2UuZGF0YSgpLCBvcHRpb25zLmF0dGVzdGF0aW9uKTsKKyAgICAgICAgYXV0byBy
ZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKCFhcHBJZCA/IG9wdGlvbnMucnAuaWQg
OiBhcHBJZCwgYXBkdVJlc3BvbnNlLmRhdGEoKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNy
b3NzUGxhdGZvcm0sIG9wdGlvbnMuYXR0ZXN0YXRpb24pOwogICAgICAgICBpZiAoIXJlc3BvbnNl
KSB7CiAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVy
cm9yLCAiQ291bGRuJ3QgcGFyc2UgdGhlIFUyRiByZWdpc3RlciByZXNwb25zZS4iX3MgfSk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yMDgsOSArMjA4LDkgQEAgdm9pZCBVMmZBdXRoZW50aWNh
dG9yOjpjb250aW51ZVNpZ25Db21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKEFwZHVSZXNwb25z
ZSYmIGEKICAgICAgICAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVz
cG9uc2U7CiAgICAgICAgIGlmIChtX2lzQXBwSWQpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXF1
ZXN0T3B0aW9ucy5leHRlbnNpb25zICYmICFyZXF1ZXN0T3B0aW9ucy5leHRlbnNpb25zLT5hcHBp
ZC5pc051bGwoKSk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2Uo
cmVxdWVzdE9wdGlvbnMuZXh0ZW5zaW9ucy0+YXBwaWQsIHJlcXVlc3RPcHRpb25zLmFsbG93Q3Jl
ZGVudGlhbHNbbV9uZXh0TGlzdEluZGV4IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNwb25zZS5kYXRh
KCkpOworICAgICAgICAgICAgcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKHJlcXVlc3RP
cHRpb25zLmV4dGVuc2lvbnMtPmFwcGlkLCByZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxz
W21fbmV4dExpc3RJbmRleCAtIDFdLmlkVmVjdG9yLCBhcGR1UmVzcG9uc2UuZGF0YSgpLCBBdXRo
ZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKHJlcXVlc3RPcHRpb25zLnJw
SWQsIHJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHNbbV9uZXh0TGlzdEluZGV4IC0gMV0u
aWRWZWN0b3IsIGFwZHVSZXNwb25zZS5kYXRhKCkpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBy
ZWFkVTJmU2lnblJlc3BvbnNlKHJlcXVlc3RPcHRpb25zLnJwSWQsIHJlcXVlc3RPcHRpb25zLmFs
bG93Q3JlZGVudGlhbHNbbV9uZXh0TGlzdEluZGV4IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNwb25z
ZS5kYXRhKCksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICAg
ICAgaWYgKCFyZXNwb25zZSkgewogICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9u
RGF0YSB7IFVua25vd25FcnJvciwgIkNvdWxkbid0IHBhcnNlIHRoZSBVMkYgc2lnbiByZXNwb25z
ZS4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCA2NGNiYWZjOTMxOWIuLmI3MTQ4Y2JlMTE1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTgyLDkgKzgyLDkgQEAgdm9pZCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYKICAg
ICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXSAoVmFyaWFudDxS
ZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiwgRXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIG11dGFi
bGUgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBXVEY6OnN3
aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiByZXNw
b25zZSkgewotICAgICAgICAgICAgaGFuZGxlcihyZXNwb25zZS0+ZGF0YSgpLCB7IH0pOworICAg
ICAgICAgICAgaGFuZGxlcihyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+YXR0YWNobWVudCgp
LCB7IH0pOwogICAgICAgICB9LCBbJl0oY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7
Ci0gICAgICAgICAgICBoYW5kbGVyKHsgfSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGhhbmRs
ZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgZXhjZXB0aW9uKTsKICAgICAgICAg
fSk7CiAgICAgfTsKICAgICBtX1dlYkF1dGhuUHJvY2Vzcy0+YXV0aGVudGljYXRvck1hbmFnZXIo
KS5oYW5kbGVSZXF1ZXN0KFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYmY2ZjdjNjU1ZDk2Li41NWEzMTYxNWM3MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1
dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckF0dGFjaG1lbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIApAQCAtNTcsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYlBy
b2Nlc3NJZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmVxdWVzdENvbXBsZXRp
b25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdG9yUmVzcG9uc2VEYXRhJiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKKyAg
ICB1c2luZyBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmLCBXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXR0YWNobWVudCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKICAg
ICB1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT47CiAKICAgICBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQXV0aG5Qcm9j
ZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRo
bkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYkF1
dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggMjliNGMxZGU5N2JiLi5hYzczYTk1MzZhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjQsOCArMjQsOCBAQAogCiBtZXNzYWdlcyAtPiBXZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgewogCi0gICAgTWFrZUNyZWRlbnRpYWwoVmVjdG9yPHVpbnQ4X3Q+
IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
IG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGEgZXhjZXB0aW9uKSBBc3luYwotICAgIEdldEFzc2VydGlvbihWZWN0b3I8dWludDhfdD4g
aGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBv
cHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpB
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBNYWtlQ3JlZGVudGlhbChWZWN0b3I8dWludDhfdD4g
aGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMg
b3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6
QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YSBleGNlcHRpb24pIEFzeW5jCisgICAgR2V0QXNzZXJ0aW9uKFZlY3Rvcjx1aW50OF90PiBoYXNo
LCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlv
bnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRv
ckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhj
ZXB0aW9uKSBBc3luYwogICAgIElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2
YWlsYWJsZSgpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKIAogICAgIFNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oc3RydWN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGYzMTQzNzhlZmVkLi5lYmQ4YWFkZmU3NzYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAyMS0wNS0yOCAgR2FycmV0dCBEYXZpZHNvbiAgPGRhdmlkc29uLmdhcnJldHRt
QGdtYWlsLmNvbT4KKworCisgICAgICAgIFtDb2NvYV0gX1dLQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlIHNob3VsZCBzcGVjaWZ5IHRoZSBhdHRhY2htZW50IHR5cGUgdXNlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTE5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83NjU1NDA5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIENUQVAgdGVzdHMgdG8gc3BlY2lmeSB0aGUg
bmV3IGF0dGFjaG1lbnQgcGFyYW1ldGVyLiBBbGwgb2YgdGhlc2UgdGVzdHMKKyAgICAgICAgYXNz
dW1lIGEgY3Jvc3MgcGxhdGZvcm0gYXV0aGVudGljYXRvci4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTA1LTI4ICBNYXR0IEdpbGxpZ2FuICA8bWF0dGhld19n
aWxsaWdhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJldmVudCByZXNldHRpbmcgc2Nyb2xsIHBv
c2l0aW9uIGluIHVubmVjZXNzYXJ5IGNhc2VzIGR1cmluZyBwYWdlIGxvYWQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcApp
bmRleCBjMzdmZDY4MmU1NGIuLmIzZWVhMjQwMDQxYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcApAQCAtMzUzLDcg
KzM1Myw3IEBAIFZlY3Rvcjx1aW50OF90PiBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShzaXpl
X3QgcHJlZml4U2l6ZSwgY29uc3QgdWludDhfdCBhcHBlCiAvLyBodHRwczovL2ZpZG9hbGxpYW5j
ZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRp
Y2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI2NvbW1hbmRzCiBURVNUKENUQVBS
ZXNwb25zZVRlc3QsIFRlc3RSZWFkTWFrZUNyZWRlbnRpYWxSZXNwb25zZSkKIHsKLSAgICBhdXRv
IG1ha2VDcmVkZW50aWFsUmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2Uo
Y29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25z
ZSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpKSk7CisgICAg
YXV0byBtYWtlQ3JlZGVudGlhbFJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3Bv
bnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVz
cG9uc2UsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKSksIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBBU1NFUlRfVFJVRSht
YWtlQ3JlZGVudGlhbFJlc3BvbnNlKTsKICAgICBhdXRvIGNib3JBdHRlc3RhdGlvbk9iamVjdCA9
IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQoY29udmVydEJ5dGVzVG9WZWN0b3IocmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4obWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRpb25PYmplY3Qo
KS0+ZGF0YSgpKSwgbWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRpb25PYmplY3QoKS0+
Ynl0ZUxlbmd0aCgpKSk7CiAgICAgQVNTRVJUX1RSVUUoY2JvckF0dGVzdGF0aW9uT2JqZWN0KTsK
QEAgLTQwMSw3ICs0MDEsNyBAQCBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkTWFrZUNy
ZWRlbnRpYWxSZXNwb25zZSkKIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRv
LXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12
Mi4wLXBzLTIwMTcwOTI3Lmh0bWwKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRHZXRB
c3NlcnRpb25SZXNwb25zZTEpCiB7Ci0gICAgYXV0byBnZXRBc3NlcnRpb25SZXNwb25zZSA9IHJl
YWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6
OmtEZXZpY2VHZXRBc3NlcnRpb25SZXNwb25zZVNob3J0LCBzaXplb2YoVGVzdERhdGE6OmtEZXZp
Y2VHZXRBc3NlcnRpb25SZXNwb25zZVNob3J0KSkpOworICAgIGF1dG8gZ2V0QXNzZXJ0aW9uUmVz
cG9uc2UgPSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9y
KFRlc3REYXRhOjprRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2VTaG9ydCwgc2l6ZW9mKFRlc3RE
YXRhOjprRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2VTaG9ydCkpLCBBdXRoZW50aWNhdG9yQXR0
YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgQVNTRVJUX1RSVUUoZ2V0QXNzZXJ0aW9uUmVz
cG9uc2UpOwogCiAgICAgRVhQRUNUX0VRKGdldEFzc2VydGlvblJlc3BvbnNlLT5hdXRoZW50aWNh
dG9yRGF0YSgpLT5ieXRlTGVuZ3RoKCksIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyR2V0QXNzZXJ0
aW9uQXV0aERhdGEpKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCBURVNUKENUQVBSZXNwb25zZVRlc3Qs
IFRlc3RSZWFkR2V0QXNzZXJ0aW9uUmVzcG9uc2UxKQogCiBURVNUKENUQVBSZXNwb25zZVRlc3Qs
IFRlc3RSZWFkR2V0QXNzZXJ0aW9uUmVzcG9uc2UyKQogewotICAgIGF1dG8gZ2V0QXNzZXJ0aW9u
UmVzcG9uc2UgPSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnZlcnRCeXRlc1RvVmVj
dG9yKFRlc3REYXRhOjprRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2UsIHNpemVvZihUZXN0RGF0
YTo6a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlKSkpOworICAgIGF1dG8gZ2V0QXNzZXJ0aW9u
UmVzcG9uc2UgPSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnZlcnRCeXRlc1RvVmVj
dG9yKFRlc3REYXRhOjprRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2UsIHNpemVvZihUZXN0RGF0
YTo6a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlKSksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
OjpDcm9zc1BsYXRmb3JtKTsKICAgICBBU1NFUlRfVFJVRShnZXRBc3NlcnRpb25SZXNwb25zZSk7
CiAKICAgICBFWFBFQ1RfRVEoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UtPmF1dGhlbnRpY2F0b3JEYXRh
KCktPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJHZXRBc3NlcnRpb25BdXRo
RGF0YSkpOwpAQCAtNDI1LDcgKzQyNSw3IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJl
YWRHZXRBc3NlcnRpb25SZXNwb25zZTIpCiAKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJl
YWRHZXRBc3NlcnRpb25SZXNwb25zZTMpCiB7Ci0gICAgYXV0byBnZXRBc3NlcnRpb25SZXNwb25z
ZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVz
dERhdGE6OmtEZXZpY2VHZXRBc3NlcnRpb25SZXNwb25zZUxvbmcsIHNpemVvZihUZXN0RGF0YTo6
a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlTG9uZykpKTsKKyAgICBhdXRvIGdldEFzc2VydGlv
blJlc3BvbnNlID0gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1Zl
Y3RvcihUZXN0RGF0YTo6a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlTG9uZywgc2l6ZW9mKFRl
c3REYXRhOjprRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2VMb25nKSksIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBBU1NFUlRfVFJVRShnZXRBc3NlcnRpb25S
ZXNwb25zZSk7CiAKICAgICBFWFBFQ1RfRVEoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UtPmF1dGhlbnRp
Y2F0b3JEYXRhKCktPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJHZXRBc3Nl
cnRpb25BdXRoRGF0YSkpOwpAQCAtNDQyLDcgKzQ0Miw3IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVz
dCwgVGVzdFJlYWRHZXRBc3NlcnRpb25SZXNwb25zZTMpCiAvLyBUZXN0IHRoYXQgVTJGIHJlZ2lz
dGVyIHJlc3BvbnNlIGlzIHByb3Blcmx5IHBhcnNlZC4KIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwg
VGVzdFBhcnNlUmVnaXN0ZXJSZXNwb25zZURhdGEpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IHJl
YWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGNvbnZlcnRC
eXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UsIHNpemVvZihU
ZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlKSkpOworICAgIGF1dG8gcmVzcG9uc2Ug
PSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBjb252
ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlLCBzaXpl
b2YoVGVzdERhdGE6OmtUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZSkpLCBBdXRoZW50aWNhdG9yQXR0
YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgQVNTRVJUX1RSVUUocmVzcG9uc2UpOwogICAg
IEVYUEVDVF9FUShyZXNwb25zZS0+cmF3SWQoKS0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERh
dGE6OmtVMmZTaWduS2V5SGFuZGxlKSk7CiAgICAgRVhQRUNUX0VRKG1lbWNtcChyZXNwb25zZS0+
cmF3SWQoKS0+ZGF0YSgpLCBUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0
RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKSwgMCk7CkBAIC00NTUsMjYgKzQ1NSwyNiBAQCBURVNU
KENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZVJlZ2lzdGVyUmVzcG9uc2VEYXRhKQogVEVTVChD
VEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VJbmNvcnJlY3RSZWdpc3RlclJlc3BvbnNlRGF0YTEp
CiB7CiAgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YTFbXSA9IHsgMHgwNSB9OwotICAgIGF1dG8g
cmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0
eUlkLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcih0ZXN0RGF0YTEsIHNpemVvZih0ZXN0RGF0YTEpKSk7
CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjpr
UmVseWluZ1BhcnR5SWQsIGNvbnZlcnRCeXRlc1RvVmVjdG9yKHRlc3REYXRhMSwgc2l6ZW9mKHRl
c3REYXRhMSkpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAg
RVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKIAogICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGEyW10g
PSB7IDB4MDUsIDB4MDAgfTsKLSAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNl
KFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGNvbnZlcnRCeXRlc1RvVmVjdG9yKHRlc3REYXRh
Miwgc2l6ZW9mKHRlc3REYXRhMikpKTsKKyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJl
c3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGNvbnZlcnRCeXRlc1RvVmVjdG9yKHRl
c3REYXRhMiwgc2l6ZW9mKHRlc3REYXRhMikpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jv
c3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKIAogICAgIGNvbnN0IHVp
bnQ4X3QgdGVzdERhdGEzW10gPSB7IDB4MDUsIDB4MDQsIDB4MDAgfTsKLSAgICByZXNwb25zZSA9
IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGNvbnZl
cnRCeXRlc1RvVmVjdG9yKHRlc3REYXRhMywgc2l6ZW9mKHRlc3REYXRhMykpKTsKKyAgICByZXNw
b25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQs
IGNvbnZlcnRCeXRlc1RvVmVjdG9yKHRlc3REYXRhMywgc2l6ZW9mKHRlc3REYXRhMykpLCBBdXRo
ZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJl
c3BvbnNlKTsKIH0KIAogLy8gVGVzdCBtYWxmb3JtZWQga2V5IGhhbmRsZS4KIFRFU1QoQ1RBUFJl
c3BvbnNlVGVzdCwgVGVzdFBhcnNlSW5jb3JyZWN0UmVnaXN0ZXJSZXNwb25zZURhdGEyKQogewot
ICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1Jl
bHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShrVTJmS2V5SGFuZGxlTGVu
Z3RoT2Zmc2V0LCBudWxscHRyLCAwKSk7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdp
c3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3Rl
clJlc3BvbnNlKGtVMmZLZXlIYW5kbGVMZW5ndGhPZmZzZXQsIG51bGxwdHIsIDApLCBBdXRoZW50
aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3Bv
bnNlKTsKIAogICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGFbXSA9IHsgMHg0MCB9OwotICAgIHJl
c3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJ
ZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2Uoa1UyZktleUhhbmRsZUxlbmd0aE9mZnNldCwg
dGVzdERhdGEsIHNpemVvZih0ZXN0RGF0YSkpKTsKKyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdp
c3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3Rl
clJlc3BvbnNlKGtVMmZLZXlIYW5kbGVMZW5ndGhPZmZzZXQsIHRlc3REYXRhLCBzaXplb2YodGVz
dERhdGEpKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEVY
UEVDVF9GQUxTRShyZXNwb25zZSk7CiB9CiAKQEAgLTQ4MiwyNyArNDgyLDI3IEBAIFRFU1QoQ1RB
UFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlSW5jb3JyZWN0UmVnaXN0ZXJSZXNwb25zZURhdGEyKQog
VEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VJbmNvcnJlY3RSZWdpc3RlclJlc3BvbnNl
RGF0YTMpCiB7CiAgICAgY29uc3QgYXV0byBwcmVmaXggPSBrVTJmS2V5SGFuZGxlT2Zmc2V0ICsg
NjQ7Ci0gICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRh
OjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgbnVs
bHB0ciwgMCkpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShU
ZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVm
aXgsIG51bGxwdHIsIDApLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7
CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKIAogICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERh
dGExW10gPSB7IDB4NDAgfTsKLSAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNl
KFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKHBy
ZWZpeCwgdGVzdERhdGExLCBzaXplb2YodGVzdERhdGExKSkpOworICAgIHJlc3BvbnNlID0gcmVh
ZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUy
ZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4LCB0ZXN0RGF0YTEsIHNpemVvZih0ZXN0RGF0YTEpKSwg
QXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEVYUEVDVF9GQUxT
RShyZXNwb25zZSk7CiAKICAgICBjb25zdCB1aW50OF90IHRlc3REYXRhMltdID0geyAweDMwIH07
Ci0gICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlp
bmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3REYXRhMiwg
c2l6ZW9mKHRlc3REYXRhMikpKTsKKyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3Bv
bnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNl
KHByZWZpeCwgdGVzdERhdGEyLCBzaXplb2YodGVzdERhdGEyKSksIEF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogCiAg
ICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YTNbXSA9IHsgMHgzMCwgMHg4MiB9OwotICAgIHJlc3Bv
bnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwg
Z2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4LCB0ZXN0RGF0YTMsIHNpemVvZih0ZXN0
RGF0YTMpKSk7CisgICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0
YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRl
c3REYXRhMywgc2l6ZW9mKHRlc3REYXRhMykpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jv
c3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKIAogICAgIGNvbnN0IHVp
bnQ4X3QgdGVzdERhdGE0W10gPSB7IDB4MzAsIDB4QzEgfTsKLSAgICByZXNwb25zZSA9IHJlYWRV
MmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZS
ZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgdGVzdERhdGE0LCBzaXplb2YodGVzdERhdGE0KSkpOwor
ICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5n
UGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4LCB0ZXN0RGF0YTQsIHNp
emVvZih0ZXN0RGF0YTQpKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0p
OwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CiAKICAgICBjb25zdCB1aW50OF90IHRlc3RE
YXRhNVtdID0geyAweDMwLCAweDgyLCAweDAyLCAweDRBIH07Ci0gICAgcmVzcG9uc2UgPSByZWFk
VTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJm
UmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3REYXRhNSwgc2l6ZW9mKHRlc3REYXRhNSkpKTsK
KyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWlu
Z1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgdGVzdERhdGE1LCBz
aXplb2YodGVzdERhdGE1KSksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3Jt
KTsKICAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogfQogCkBAIC01MTAsNyArNTEwLDcgQEAg
VEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VJbmNvcnJlY3RSZWdpc3RlclJlc3BvbnNl
RGF0YTMpCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZUluY29ycmVjdFJlZ2lzdGVy
UmVzcG9uc2VEYXRhNCkKIHsKICAgICBjb25zdCBhdXRvIHByZWZpeCA9IHNpemVvZihUZXN0RGF0
YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlKTsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUy
ZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJl
Z2lzdGVyUmVzcG9uc2UocHJlZml4IC0gNzEsIG51bGxwdHIsIDApKTsKKyAgICBhdXRvIHJlc3Bv
bnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwg
Z2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4IC0gNzEsIG51bGxwdHIsIDApLCBBdXRo
ZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJl
c3BvbnNlKTsKIH0KIApAQCAtNTI3LDcgKzUyNyw3IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwg
VGVzdFBhcnNlSW5jb3JyZWN0UmVnaXN0ZXJSZXNwb25zZURhdGE1KQogICAgIHRlc3REYXRhMS5h
cHBlbmQoMHgwMSk7CiAgICAgdGVzdERhdGExLmFwcGVuZCgweDAwKTsKICAgICB0ZXN0RGF0YTEu
YXBwZW5kKFRlc3REYXRhOjprVGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UgKyBzdWZmaXgsIHNpZ25h
dHVyZVNpemUpOwotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShU
ZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCB0ZXN0RGF0YTEpOworICAgIGF1dG8gcmVzcG9uc2Ug
PSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCB0ZXN0
RGF0YTEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBF
Q1RfVFJVRShyZXNwb25zZSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdGVzdERhdGEyOwpAQCAt
NTM3LDE0ICs1MzcsMTQgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VJbmNvcnJl
Y3RSZWdpc3RlclJlc3BvbnNlRGF0YTUpCiAgICAgdGVzdERhdGEyLmFwcGVuZCgweDAxKTsKICAg
ICB0ZXN0RGF0YTIuYXBwZW5kKDB4MDApOwogICAgIHRlc3REYXRhMi5hcHBlbmQoVGVzdERhdGE6
OmtUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZSArIHN1ZmZpeCwgc2lnbmF0dXJlU2l6ZSk7Ci0gICAg
cmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0
eUlkLCB0ZXN0RGF0YTIpOworICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2Uo
VGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgdGVzdERhdGEyLCBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNUX1RSVUUocmVzcG9uc2UpOwogfQogCiAv
LyBUZXN0cyB0aGF0IFUyRiBhdXRoZW50aWNhdG9yIGRhdGEgaXMgcHJvcGVybHkgc2VyaWFsaXpl
ZC4KIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlU2lnblJlc3BvbnNlRGF0YSkKIHsK
LSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlp
bmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0VGVzdFNpZ25SZXNw
b25zZSgpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0
YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0VGVz
dFNpZ25SZXNwb25zZSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7
CiAgICAgQVNTRVJUX1RSVUUocmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShyZXNwb25zZS0+cmF3
SWQoKS0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSk7
CiAgICAgRVhQRUNUX0VRKG1lbWNtcChyZXNwb25zZS0+cmF3SWQoKS0+ZGF0YSgpLCBUZXN0RGF0
YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUp
KSwgMCk7CkBAIC01NTYsMjcgKzU1NiwyNyBAQCBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQ
YXJzZVNpZ25SZXNwb25zZURhdGEpCiAKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNl
VTJmU2lnbldpdGhOdWxsS2V5SGFuZGxlKQogewotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJm
U2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIFZlY3Rvcjx1aW50OF90Pigp
LCBnZXRUZXN0U2lnblJlc3BvbnNlKCkpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmU2ln
blJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIFZlY3Rvcjx1aW50OF90PigpLCBn
ZXRUZXN0U2lnblJlc3BvbnNlKCksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRm
b3JtKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogfQogCiBURVNUKENUQVBSZXNwb25z
ZVRlc3QsIFRlc3RQYXJzZVUyZlNpZ25XaXRoTnVsbFJlc3BvbnNlKQogewotICAgIGF1dG8gcmVz
cG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdl
dFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBWZWN0b3I8dWludDhfdD4oKSk7CisgICAgYXV0
byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJ
ZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIFZlY3Rvcjx1aW50OF90PigpLCBBdXRo
ZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJl
c3BvbnNlKTsKIH0KIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0
aENvcnJ1cHRlZENvdW50ZXIpCiB7CiAgICAgLy8gQSBzaWduIHJlc3BvbnNlIG9mIGxlc3MgdGhh
biA1IGJ5dGVzLgotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKFRlc3RE
YXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBnZXRU
ZXN0Q29ycnVwdGVkU2lnblJlc3BvbnNlKDMpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUy
ZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlh
bFJhd0lkQnl0ZXMoKSwgZ2V0VGVzdENvcnJ1cHRlZFNpZ25SZXNwb25zZSgzKSwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25z
ZSk7CiB9CiAKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlVTJmU2lnbldpdGhDb3Jy
dXB0ZWRTaWduYXR1cmUpCiB7CiAgICAgLy8gQSBzaWduIHJlc3BvbnNlIG5vIG1vcmUgdGhhbiA1
IGJ5dGVzLgotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKFRlc3REYXRh
OjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0
Q29ycnVwdGVkU2lnblJlc3BvbnNlKDUpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNp
Z25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJh
d0lkQnl0ZXMoKSwgZ2V0VGVzdENvcnJ1cHRlZFNpZ25SZXNwb25zZSg1KSwgQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430291</attachid>
            <date>2021-06-01 14:50:24 -0700</date>
            <delta_ts>2021-06-01 14:57:28 -0700</delta_ts>
            <desc>Garrett&apos;s Patch with forward declaration.</desc>
            <filename>bug-225519-20210601145023.patch</filename>
            <type>text/plain</type>
            <size>87822</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNhYTVlNTNjNjk4NTE0
MWVlMjgzY2FkMTQ4M2Y3Njg1ZjQxZjY3Yy4uMmZhZDk2OTNjNmI1ZTdkMmQ2NTViYjc4NzU5YmI4
ODA1ZTRkYTEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTA2LTAxICBHYXJy
ZXR0IERhdmlkc29uICA8Z2FycmV0dF9kYXZpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Ugc2hvdWxkIHNwZWNpZnkgdGhl
IGF0dGFjaG1lbnQgdHlwZSB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU1MTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTU0MDkwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IFdl
YkF1dGhuIGF1dGhlbnRpY2F0b3JzIHRvIHBhc3MgYmFjayB0aGVpciBhdHRhY2htZW50IHR5cGUg
YW5kIGNvbnRpbnVlCisgICAgICAgIHBsdW1iaW5nIHRocm91Z2ggdXAgdG8gdGhlIGF1dGhlbnRp
Y2F0b3IgY29vcmRpbmF0b3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBtYW51YWwgdGVzdHMuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNw
b25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmF0dGFjaG1l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlOjpBdXRo
ZW50aWNhdG9yUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvclJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
c3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAgICAgKGZpZG86OnJlYWRDVEFQTWFrZUNyZWRlbnRp
YWxSZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpyZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0
ZXIuY3BwOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UpOgorICAgICAg
ICAoZmlkbzo6cmVhZFUyZlNpZ25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmg6CisKIDIwMjEtMDYtMDEgIEFudHRpIEtvaXZp
c3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBJbmxpbmVCb3ggdG8gTGVn
YWN5SW5saW5lQm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJmNWUwNmE5M2Q3MWY5Yjk3MDNhMWJjYmFjNmE4Y2U2
NmI4NDE5YjkuLjBhMjE2Mzc0YWQ5NzNjNGIzOTcxMjA4NTZhMmE2NTAxOGI3MmZiNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMDYtMDEgIEdhcnJldHQgRGF2aWRzb24gIDxnYXJy
ZXR0X2Rhdmlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIF9XS0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZSBzaG91bGQgc3BlY2lmeSB0aGUgYXR0YWNobWVudCB0eXBlIHVz
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTUx
OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1NTQwOTA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBXZWJBdXRobiBhdXRoZW50aWNhdG9y
cyBzdGFydCBwYXNzaW5nIGJhY2sgdGhlaXIgYXR0YWNobWVudCB0eXBlLCBhbmQgcGx1bWIKKyAg
ICAgICAgaXQgdXAgdGhyb3VnaCB0byB0aGUgY2FsbGluZyBwcm9jZXNzLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UubW06
CisgICAgICAgICgtW19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBpbml0V2l0aENs
aWVudERhdGFKU09OOnJhd0lkOmV4dGVuc2lvbnM6YXV0aGVudGljYXRvckRhdGE6c2lnbmF0dXJl
OnVzZXJIYW5kbGU6YXR0YWNobWVudDpdKToKKyAgICAgICAgKC1bX1dLQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlIGluaXRXaXRoQ2xpZW50RGF0YUpTT046cmF3SWQ6ZXh0ZW5zaW9uczph
dXRoZW50aWNhdG9yRGF0YTpzaWduYXR1cmU6dXNlckhhbmRsZTpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZS5tbToKKyAgICAgICAgKC1bX1dLQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UgaW5pdFdpdGhDbGllbnREYXRhSlNPTjpyYXdJZDpleHRlbnNpb25z
OmF0dGVzdGF0aW9uT2JqZWN0OmF0dGFjaG1lbnQ6XSk6CisgICAgICAgICgtW19XS0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGluaXRXaXRoQ2xpZW50RGF0YUpTT046cmF3SWQ6ZXh0
ZW5zaW9uczphdHRlc3RhdGlvbk9iamVjdDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25z
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3Bv
bnNlLm1tOgorICAgICAgICAoLVtfV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UgaW5pdFdpdGhDbGll
bnREYXRhSlNPTjpyYXdJZDpleHRlbnNpb25zOmF0dGFjaG1lbnQ6XSk6CisgICAgICAgICgtW19X
S0F1dGhlbnRpY2F0b3JSZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJhd0lkOmV4dGVu
c2lvbnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRo
ZW50aWNhdG9yUmVzcG9uc2VJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKGF1dGhlbnRpY2F0b3JB
dHRhY2htZW50VG9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KToKKyAgICAgICAgKHdrQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsIG1ha2VDcmVkZW50aWFsV2l0aENoYWxsZW5nZTpvcmlnaW46b3B0aW9uczpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlKToKKyAgICAgICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBnZXRBc3NlcnRpb25X
aXRoQ2hhbGxlbmdlOm9yaWdpbjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
bW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjpnZXRFeGlz
dGluZ0NyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpj
b250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRl
c3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN0
YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2Vp
dmVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNz
ZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlR2V0TmV4dEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGlj
YXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVn
aXN0ZXJDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6VTJm
QXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6
CisgICAgICAgICogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMjEtMDYtMDEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgV2ViUGFnZVByb3h5J3Mg
cmVsZWFzZSBsb2dnaW5nIGluIGVwaGVtZXJhbCBzZXNzaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UuY3BwCmluZGV4IDA3MzQ1YjM3YmUzMGY1NWRkZmU1MGQxYTZjN2RjMmYxOWFm
NWU5OWIuLjFmMmFjMzcyODg1MTI5OWYzM2JlMGE0MzlkZmViZjJiNDM0ZTcyMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjUgKzMyLDI1IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lk
LCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4m
JiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBzdGQ6Om9wdGlv
bmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYgZXh0ZW5zaW9ucykK
K1JlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVm
ZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmIGV4dGVuc2lvbnMsIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50IGF0dGFjaG1lbnQpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IGFkb3B0UmVmKCpu
ZXcgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3Zl
KGF1dGhlbnRpY2F0b3JEYXRhKSwgV1RGTW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKHVzZXJIYW5k
bGUpKSk7CisgICAgYXV0byByZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRh
KSwgV1RGTW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKHVzZXJIYW5kbGUpLCBhdHRhY2htZW50KSk7
CiAgICAgaWYgKGV4dGVuc2lvbnMpCiAgICAgICAgIHJlc3BvbnNlLT5zZXRFeHRlbnNpb25zKFdU
Rk1vdmUoKmV4dGVuc2lvbnMpKTsKICAgICByZXR1cm4gcmVzcG9uc2U7CiB9CiAKLVJlZjxBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZTo6Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJl
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCitSZWY8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShj
b25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhl
bnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2ht
ZW50KQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlcmhhbmRsZUJ1ZmZlcjsKICAgICBp
ZiAoIXVzZXJIYW5kbGUuaXNFbXB0eSgpKQogICAgICAgICB1c2VyaGFuZGxlQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZSh1c2VySGFuZGxlLmRhdGEoKSwgdXNlckhhbmRsZS5zaXplKCkpOwot
ICAgIHJldHVybiBjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCksIHJhd0lk
LnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRhdGEuZGF0YSgpLCBh
dXRoZW50aWNhdG9yRGF0YS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5k
YXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBXVEZNb3ZlKHVzZXJoYW5kbGVCdWZmZXIpLCBzdGQ6
Om51bGxvcHQpOworICAgIHJldHVybiBjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5k
YXRhKCksIHJhd0lkLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRh
dGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KHNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBXVEZNb3ZlKHVzZXJoYW5kbGVC
dWZmZXIpLCBzdGQ6Om51bGxvcHQsIGF0dGFjaG1lbnQpOwogfQogCi1SZWY8QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0
ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxl
LCBTdHJpbmcmJiBuYW1lLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wpCitSZWY8
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4m
JiB1c2VySGFuZGxlLCBTdHJpbmcmJiBuYW1lLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2wsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3
SWQpLCBXVEZNb3ZlKHVzZXJIYW5kbGUpLCBXVEZNb3ZlKG5hbWUpLCBhY2Nlc3NDb250cm9sKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
KFdURk1vdmUocmF3SWQpLCBXVEZNb3ZlKHVzZXJIYW5kbGUpLCBXVEZNb3ZlKG5hbWUpLCBhY2Nl
c3NDb250cm9sLCBhdHRhY2htZW50KSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpzZXRBdXRoZW50aWNhdG9yRGF0YShWZWN0b3I8dWludDhfdD4mJiBhdXRoZW50
aWNhdG9yRGF0YSkKQEAgLTU4LDE2ICs1OCwxNiBAQCB2b2lkIEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6c2V0QXV0aGVudGljYXRvckRhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aAog
ICAgIG1fYXV0aGVudGljYXRvckRhdGEgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0
b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKTsKIH0KIAotQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVm
PEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRh
dGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1
c2VySGFuZGxlKQotICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpKQor
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVu
dGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiB1c2VySGFuZGxlLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQor
ICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBhdHRhY2htZW50KQog
ICAgICwgbV9hdXRoZW50aWNhdG9yRGF0YShXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSkKICAg
ICAsIG1fc2lnbmF0dXJlKFdURk1vdmUoc2lnbmF0dXJlKSkKICAgICAsIG1fdXNlckhhbmRsZShX
VEZNb3ZlKHVzZXJIYW5kbGUpKQogewogfQogCi1BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3
SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTdHJpbmcmJiBuYW1lLCBTZWNBY2Nl
c3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2Uo
V1RGTW92ZShyYXdJZCkpCitBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJh
eUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTdHJpbmcmJiBuYW1lLCBTZWNBY2Nlc3NDb250cm9sUmVm
IGFjY2Vzc0NvbnRyb2wsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCisgICAg
OiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIGF0dGFjaG1lbnQpCiAgICAg
LCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKICAgICAsIG1fbmFtZShXVEZNb3Zl
KG5hbWUpKQogICAgICwgbV9hY2Nlc3NDb250cm9sKGFjY2Vzc0NvbnRyb2wpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UuaAppbmRleCA4MDExZmNjZDNjZDQ4MDA4ZDY5MzdlMDNjYTY5NGE3
Y2MyZDQyZTY4Li41MzdlZTA5YTM4ZTE4MmE3MmI2NTRlZTZmNDg1NTExMWYxNzIxNmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsOSArMzcsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSA6IHB1YmxpYyBB
dXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBS
ZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBz
aWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBzdGQ6Om9wdGlvbmFs
PEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRo
ZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVy
PiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgU3RyaW5nJiYgbmFtZSwg
U2VjQWNjZXNzQ29udHJvbFJlZik7CisgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1
ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGlj
YXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWdu
YXR1cmUsICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUsIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFy
cmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xS
ZWYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CiAKICAgICBBcnJheUJ1ZmZlciogYXV0aGVu
dGljYXRvckRhdGEoKSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRpY2F0b3JEYXRhLmdldCgpOyB9
CkBAIC01OSw4ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExBQ29udGV4dChMQUNvbnRl
eHQgKmNvbnRleHQpIHsgbV9sYUNvbnRleHQgPSBjb250ZXh0OyB9CiAKIHByaXZhdGU6Ci0gICAg
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFy
cmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7
Ci0gICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwg
UmVmPEFycmF5QnVmZmVyPiYmLCBTdHJpbmcmJiwgU2VjQWNjZXNzQ29udHJvbFJlZik7CisgICAg
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFy
cmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwg
QXV0aGVudGljYXRvckF0dGFjaG1lbnQpOworICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgU3RyaW5nJiYsIFNl
Y0FjY2Vzc0NvbnRyb2xSZWYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogICAgIFR5cGUg
dHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OkFzc2VydGlvbjsgfQogICAgIEF1dGhl
bnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlLmNwcAppbmRleCA5ZDJiODczNDA0ZDY0Y2Q3NmJmZTgxZWJjYzI5
Yzg1NTMwOWMwMjk1Li40ZThiNzQ5ZTRjMDA3MDlmZGEzMDFhN2FmZTVmZDk5NWU0MDc4NDUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwxOCArMzIsMTggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5
QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QpCitS
ZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlC
dWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFj
aG1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpLCBhdHRhY2htZW50
KSk7CiB9CiAKLVJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJh
d0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0KQorUmVmPEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZTo6Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFj
aG1lbnQpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRh
dGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVj
dC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSkpOworICAgIHJldHVybiBjcmVhdGUo
QXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCksIHJhd0lkLnNpemUoKSksIEFycmF5QnVm
ZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5z
aXplKCkpLCBhdHRhY2htZW50KTsKIH0KIAotQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiBy
YXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KQotICAgIDogQXV0aGVu
dGljYXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpKQorQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZl
cj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50
aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQorICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNl
KFdURk1vdmUocmF3SWQpLCBhdHRhY2htZW50KQogICAgICwgbV9hdHRlc3RhdGlvbk9iamVjdChX
VEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UuaAppbmRleCA2MGNkNmU3YTFiMDQ1NGQ0YjdkOGUxMWU1ZGUzZWMyZmFiZmZkZjVi
Li4yNjIzZWE4NTk5YzQ3MTU0N2FhYTUwOWM3YTI2OGI0YWU0OGY2YjFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIDogcHVibGljIEF1
dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwg
UmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3Rh
dGlvbk9iamVjdCk7CisgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYm
IGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3Jl
YXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogICAgIHZpcnR1
YWwgfkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCiAgICAg
QXJyYXlCdWZmZXIqIGF0dGVzdGF0aW9uT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hdHRlc3Rh
dGlvbk9iamVjdC5wdHIoKTsgfQogCiBwcml2YXRlOgotICAgIEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmKTsKKyAg
ICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJl
ZjxBcnJheUJ1ZmZlcj4mJiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwogCiAgICAgVHlwZSB0
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6QXR0ZXN0YXRpb247IH0KICAgICBBdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmNwcAppbmRleCA3MzQzNmE3MjIwZjdmMWVmNzEyMWI0MTMyZWMwNGUzODA4NWVmM2E5Li5j
NGU1NjhmMTA2NTFlYzA3NGI0NTU3ZTA0Yjk3OGY5MmRlODQ3N2M2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE4NSwxMyArMTg1LDEzIEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjpjcmVhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVudERhdGFKc29u
ID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBh
Ym9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0aGVudGljYXRvclJlc3BvbnNl
RGF0YSYmIGRhdGEsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIGF1
dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNp
Z25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVudGljYXRvckF0
dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRlZCgpKSB7CiAg
ICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnRl
ZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5
Q3JlYXRlKFdURk1vdmUoZGF0YSkpKSB7CisgICAgICAgIGlmIChhdXRvIHJlc3BvbnNlID0gQXV0
aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoV1RGTW92ZShkYXRhKSwgYXR0YWNobWVudCkp
IHsKICAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRDbGllbnREYXRhSlNPTihXVEZNb3ZlKGNsaWVu
dERhdGFKc29uKSk7CiAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVibGljS2V5Q3JlZGVu
dGlhbDo6Y3JlYXRlKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkpLnB0cigpKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTI1NiwxMyArMjU2LDEzIEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1l
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVudERh
dGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0aGVudGljYXRvclJl
c3BvbnNlRGF0YSYmIGRhdGEsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgewor
ICAgIGF1dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERhdGFK
c29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RGTW92ZShh
Ym9ydFNpZ25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRlZCgp
KSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAi
QWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JSZXNwb25z
ZTo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSkpKSB7CisgICAgICAgIGlmIChhdXRvIHJlc3BvbnNl
ID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoV1RGTW92ZShkYXRhKSwgYXR0YWNo
bWVudCkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRDbGllbnREYXRhSlNPTihXVEZNb3Zl
KGNsaWVudERhdGFKc29uKSk7CiAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVibGljS2V5
Q3JlZGVudGlhbDo6Y3JlYXRlKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkpLnB0cigpKTsKICAg
ICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oCmluZGV4IGFm
ZjBjNmFmMWNjYThjZGI3NjdiYmZhN2UxMzQ4MGU0NWM4NDNlYWEuLjY0NjFhZTk2NGZhYmQ4MjJk
ZmIxMDA4NzA1NjgxYzZlNDU1N2I0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNywxMSArMzcsMTMgQEAgY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKIAorZW51bSBjbGFzcyBBdXRoZW50aWNhdG9yQXR0YWNobWVu
dDsKKwogc3RydWN0IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE7CiBzdHJ1Y3QgUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnM7CiAKLXVzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYmLCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhJiYpPjsKK3VzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YSYmLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYmKT47CiB1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT47CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcAppbmRleCBkNGI3MTI5M2NmM2VkZTk1MzQx
MTM2Yzk1OTM2NGQxNjAyN2Y2ZWZlLi43YTQxNjY5ZGQ2ZTdhZjQwM2QxZGUyMjY5N2M4NDQ1MDky
OGM1YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiBBdXRoZW50aWNhdG9yUmVz
cG9uc2U6OnRyeUNyZWF0ZShBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSkKK1JlZlB0
cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRl
KEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiBkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVu
dCBhdHRhY2htZW50KQogewogICAgIGlmICghZGF0YS5yYXdJZCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC00MywxMyArNDMsMTMgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4g
QXV0aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoQXV0aGVudGljYXRvclJlc3AKICAgICAg
ICAgaWYgKCFkYXRhLmF0dGVzdGF0aW9uT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpj
cmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF0dGVzdGF0aW9uT2JqZWN0
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLnJhd0lkLnJlbGVhc2VOb25OdWxsKCksIGRhdGEuYXR0
ZXN0YXRpb25PYmplY3QucmVsZWFzZU5vbk51bGwoKSwgYXR0YWNobWVudCk7CiAgICAgfQogCiAg
ICAgaWYgKCFkYXRhLmF1dGhlbnRpY2F0b3JEYXRhIHx8ICFkYXRhLnNpZ25hdHVyZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF1dGhlbnRp
Y2F0b3JEYXRhLnJlbGVhc2VOb25OdWxsKCksIGRhdGEuc2lnbmF0dXJlLnJlbGVhc2VOb25OdWxs
KCksIFdURk1vdmUoZGF0YS51c2VySGFuZGxlKSwgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cyB7IGRhdGEuYXBwaWQgfSk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5h
dXRoZW50aWNhdG9yRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLnNpZ25hdHVyZS5yZWxlYXNl
Tm9uTnVsbCgpLCBXVEZNb3ZlKGRhdGEudXNlckhhbmRsZSksIEF1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudE91dHB1dHMgeyBkYXRhLmFwcGlkIH0sIGF0dGFjaG1lbnQpOwogfQogCiBBdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6ZGF0YSgpIGNvbnN0
CkBAIC04NSw4ICs4NSwxNCBAQCBBcnJheUJ1ZmZlciogQXV0aGVudGljYXRvclJlc3BvbnNlOjpj
bGllbnREYXRhSlNPTigpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpZW50RGF0YUpTT04uZ2V0KCk7
CiB9CiAKLUF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXV0aGVudGljYXRvclJlc3BvbnNlKFJlZjxB
cnJheUJ1ZmZlcj4mJiByYXdJZCkKK0F1dGhlbnRpY2F0b3JBdHRhY2htZW50IEF1dGhlbnRpY2F0
b3JSZXNwb25zZTo6YXR0YWNobWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXR0YWNobWVu
dDsKK30KKworQXV0aGVudGljYXRvclJlc3BvbnNlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2UoUmVm
PEFycmF5QnVmZmVyPiYmIHJhd0lkLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50
KQogICAgIDogbV9yYXdJZChXVEZNb3ZlKHJhd0lkKSkKKyAgICAsIG1fYXR0YWNobWVudChhdHRh
Y2htZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaAppbmRleCA1YTMzZTcyNTA5OWIxYmVlYTNjYjkx
ODlmMWQxMmU0NWJhOTE0OGFkLi5iMDY3MWVlYjExMWZlNWRhYjBiNDMwNDkyZDA5YzFmYjQ1NWQ1
MmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvclJlc3BvbnNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2VudW0gY2xhc3MgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ7CisKIHN0cnVjdCBBdXRoZW50
aWNhdG9yUmVzcG9uc2VEYXRhOwogCiBjbGFzcyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IHsKQEAgLTQzLDcgKzQ1LDcgQEAg
cHVibGljOgogICAgICAgICBBdHRlc3RhdGlvbgogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmUHRy
PEF1dGhlbnRpY2F0b3JSZXNwb25zZT4gdHJ5Q3JlYXRlKEF1dGhlbnRpY2F0b3JSZXNwb25zZURh
dGEmJik7CisgICAgc3RhdGljIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IHRyeUNyZWF0
ZShBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsK
ICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CiAKICAgICB2
aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKQEAgLTU0LDE0ICs1NiwxNiBAQCBwdWJsaWM6
CiAgICAgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBleHRlbnNpb25zKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRDbGllbnREYXRhSlNPTihSZWY8QXJyYXlCdWZmZXI+JiYpOwog
ICAgIEFycmF5QnVmZmVyKiBjbGllbnREYXRhSlNPTigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQoKSBjb25zdDsKIAogcHJvdGVj
dGVkOgotICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYpOworICAg
IEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50KTsKIAogcHJpdmF0ZToKICAgICBSZWY8QXJyYXlCdWZmZXI+IG1fcmF3SWQ7CiAg
ICAgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBtX2V4dGVuc2lvbnM7CiAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2NsaWVudERhdGFKU09OOworICAgIEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50IG1fYXR0YWNobWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgKaW5kZXggYmI5ZmQ0NjQ5NjNi
NzFlZTI1ZTM2ZWE4MGZlNzA1MDFhYjIyYmM5OS4uNWNjYjQ0MjczMjg0ZDc0ZjJjM2Y5YTI3MmJh
NWQ2YTM5MTgzMWYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogI2luY2x1ZGUgIkF0dGVz
dGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRJbnB1dHMuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXR0YWNobWVu
dC5oIgogI2luY2x1ZGUgIkJ1ZmZlclNvdXJjZS5oIgogI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRl
bnRpYWxEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCIK
QEAgLTM4LDYgKzM3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIGNsYXNzIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50OworCiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyB7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBzdHJ1Y3QgRW50aXR5IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VS
ZXNwb25zZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IDdjYjJiMzI1YTFjNjdmMGJmNGRk
Y2NlYWQ0ZWQ3MDg5MmM5OTM0MzcuLjkzMmZmMDgyY2U4NzdiZWYwNDU5MTQ2MDRlODQ2ZWQxNjcy
OWU2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9E
ZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTk1LDcgKzk1LDcg
QEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBnZXRDcmVkZW50aWFsSWQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSkKIAogLy8gRGVjb2RlcyBieXRlIGFycmF5IHJlc3Bv
bnNlIGZyb20gYXV0aGVudGljYXRvciB0byBDQk9SIHZhbHVlIG9iamVjdCBhbmQKIC8vIGNoZWNr
cyBmb3IgY29ycmVjdCBlbmNvZGluZyBmb3JtYXQuCi1SZWZQdHI8QXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGluQnVmZmVyLCBjb25zdCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJl
bmNlJiBhdHRlc3RhdGlvbikKK1JlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aW5CdWZmZXIsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIGNv
bnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uKQogewogICAg
IGF1dG8gZGVjb2RlZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFwKGluQnVmZmVyKTsKICAgICBpZiAo
IWRlY29kZWRNYXApCkBAIC0xMzUsMTAgKzEzNSwxMCBAQCBSZWZQdHI8QXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBW
ZQogICAgICAgICBhdHRlc3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKENC
T1IoV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdE1hcCkpKTsKICAgICB9CiAKLSAgICByZXR1cm4g
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsICph
dHRlc3RhdGlvbk9iamVjdCk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCAqYXR0ZXN0YXRpb25PYmplY3QsIGF0dGFjaG1l
bnQpOwogfQogCi1SZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkQ1RB
UEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCitS
ZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlv
blJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIsIFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7CiAgICAgYXV0byBkZWNvZGVkTWFwID0g
ZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2RlZE1hcCkKQEAgLTE3
Miw3ICsxNzIsNyBAQCBSZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFk
Q1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3RvcgogICAgICAgICBpZiAoaXRyID09
IHVzZXIuZW5kKCkgfHwgIWl0ci0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGF1dG8mIHVzZXJIYW5kbGUgPSBpdHItPnNlY29uZC5n
ZXRCeXRlU3RyaW5nKCk7Ci0gICAgICAgIHJlc3BvbnNlID0gQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdXRoRGF0YSwgc2lnbmF0dXJlLCB1c2Vy
SGFuZGxlKTsKKyAgICAgICAgcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHVzZXJIYW5kbGUs
IGF0dGFjaG1lbnQpOwogCiAgICAgICAgIGl0ciA9IHVzZXIuZmluZChDQk9SKGtFbnRpdHlOYW1l
TWFwS2V5KSk7CiAgICAgICAgIGlmIChpdHIgIT0gdXNlci5lbmQoKSkgewpAQCAtMTg4LDcgKzE4
OCw3IEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRDVEFQR2V0
QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yCiAgICAgICAgICAgICByZXNwb25zZS0+c2V0
RGlzcGxheU5hbWUoaXRyLT5zZWNvbmQuZ2V0U3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6
OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHsgfSk7CisgICAgICAg
IHJlc3BvbnNlID0gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVu
dGlhbElkLCBhdXRoRGF0YSwgc2lnbmF0dXJlLCB7IH0sIGF0dGFjaG1lbnQpOwogICAgIH0KIAog
ICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVy
dGVyLmgKaW5kZXggZTRjNmQ1ZTI0YWFkY2RjNTgxZGNkMzY3NzkzMmJlZTYwOTEzZGI1OC4uYTJl
MjhhODE4ZmZjOGE5ZjAzYWI4MjllODlhYjFkNDQzMWRkYmFiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNl
Q29udmVydGVyLmgKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQ2hyb21p
dW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC01MiwxMiArNTIsMTIgQEAgV0VCQ09SRV9FWFBPUlQgQ3RhcERldmlj
ZVJlc3BvbnNlQ29kZSBnZXRSZXNwb25zZUNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAv
LyBhbmQgY29udmVydHMgcmVzcG9uc2UgdG8gQXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsUmVz
cG9uc2Ugb2JqZWN0IHdpdGgKIC8vIENCT1IgbWFwIGtleXMgdGhhdCBjb25mb3JtIHRvIGZvcm1h
dCBvZiBhdHRlc3RhdGlvbiBvYmplY3QgZGVmaW5lZCBieSB0aGUKIC8vIFdlYkF1dGhOIHNwZWMg
OiBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXV0aG4vI2ZpZy1hdHRTdHJ1Y3RzCi1XRUJDT1JF
X0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+
IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBj
b25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlv
biA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7CitX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhf
dD4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgY29uc3QgV2ViQ29yZTo6QXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgPSBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZl
eWFuY2VQcmVmZXJlbmNlOjpEaXJlY3QpOwogCiAvLyBEZS1zZXJpYWxpemVzIENCT1IgZW5jb2Rl
ZCByZXNwb25zZSB0byBBdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uIC8KIC8vIEF1dGhlbnRpY2F0
b3JHZXROZXh0QXNzZXJ0aW9uIHJlcXVlc3QgdG8gQXV0aGVudGljYXRvckdldEFzc2VydGlvblJl
c3BvbnNlCiAvLyBvYmplY3QuCi1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25z
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVu
dCk7CiAKIC8vIERlLXNlcmlhbGl6ZXMgQ0JPUiBlbmNvZGVkIHJlc3BvbnNlIHRvIEF1dGhlbnRp
Y2F0b3JHZXRJbmZvIHJlcXVlc3QgdG8KIC8vIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Ug
b2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKaW5kZXggMTM0NTQxZDFlZjU5NTQyOWYy
NTEyODIyZjE5M2Q1MTUzZDRkMGI4NS4uMWE3ZDEwNWJiODUyNWQ1NWRlOTNiZDUzOTA2YTgxMzBh
NjYxMzAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLy8g
Q29weXJpZ2h0IDIwMTggVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogLy8KIC8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMTM3LDcgKzEzNyw3IEBA
IHN0YXRpYyBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGNyZWF0ZUZpZG9BdHRlc3RhdGlvblN0
YXRlbWVudEZyb21VMmZSZWdpc3RlclJlCiAKIH0gLy8gbmFtZXNwYWNlCiAKLVJlZlB0cjxBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29u
c3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIGNvbnN0IEF0
dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uKQorUmVmUHRyPEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25z
dCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJl
ZmVyZW5jZSYgYXR0ZXN0YXRpb24pCiB7CiAgICAgYXV0byBwdWJsaWNLZXkgPSBleHRyYWN0RUNQ
dWJsaWNLZXlGcm9tVTJmUmVnaXN0cmF0aW9uUmVzcG9uc2UodTJmRGF0YSk7CiAgICAgaWYgKHB1
YmxpY0tleS5pc0VtcHR5KCkpCkBAIC0xNjAsMTAgKzE2MCwxMCBAQCBSZWZQdHI8QXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0
cmluZyYgcgogCiAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25P
YmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJmaWRvLXUyZiIsIFdURk1vdmUoZmlkb0F0dGVzdGF0
aW9uU3RhdGVtZW50KSwgYXR0ZXN0YXRpb24pOwogCi0gICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVj
dCk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUo
Y3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgYXR0YWNobWVudCk7CiB9CiAKLVJlZlB0
cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRVMmZTaWduUmVzcG9uc2UoY29u
c3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKQorUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEs
IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7CiAgICAgaWYgKGtleUhhbmRs
ZS5pc0VtcHR5KCkgfHwgdTJmRGF0YS5zaXplKCkgPD0gc2lnbmF0dXJlSW5kZXgpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMTc4LDcgKzE3OCw3IEBAIFJlZlB0cjxBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRVMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElk
LCBjCiAKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byByZW1vdmUgdGhlIG5lZWQgb2YgY29u
c3RydWN0aW5nIGEgdmVjdG9yIGhlcmUuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZSB7
IHUyZkRhdGEuZGF0YSgpICsgc2lnbmF0dXJlSW5kZXgsIHUyZkRhdGEuc2l6ZSgpIC0gc2lnbmF0
dXJlSW5kZXggfTsKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpj
cmVhdGUoa2V5SGFuZGxlLCBhdXRoRGF0YSwgc2lnbmF0dXJlLCB7IH0pOworICAgIHJldHVybiBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShrZXlIYW5kbGUsIGF1dGhEYXRh
LCBzaWduYXR1cmUsIHsgfSwgYXR0YWNobWVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIGZpZG8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNw
b25zZUNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmgKaW5kZXggYzRmMjAxZmMwNTNlNzg1ZTFkOTcxYWU1NjVlY2Yz
ZjU1ZTFlMTY1Mi4uZWMzMzQyOTQ4ZjFkNWYzNWIxMTkwMjQyZThkMTFiODRkN2RjMWI2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNl
Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmgKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxOCBU
aGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMp
IDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00MCwxMSArNDAsMTEgQEAgbmFtZXNwYWNlIGZpZG8g
ewogCiAvLyBDb252ZXJ0cyBhIFUyRiByZWdpc3RlciByZXNwb25zZSB0byBXZWJBdXRoTiBtYWtl
Q3JlZGVudGlhbCByZXNwb25zZS4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9m
aWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2Nv
bC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbC1p
bnRlcm9wZXJhYmlsaXR5Ci1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0
cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBjb25zdCBXZWJDb3Jl
OjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlvbiA9IFdlYkNvcmU6
OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7CitXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRV
MmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiB1MmZEYXRhLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgY29uc3QgV2Vi
Q29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgPSBXZWJDb3JlOjpBdHRlc3Rh
dGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpEaXJlY3QpOwogCiAvLyBDb252ZXJ0cyBhIFUyRiBh
dXRoZW50aWNhdGlvbiByZXNwb25zZSB0byBXZWJBdXRoTiBnZXRBc3NlcnRpb24gcmVzcG9uc2Uu
CiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3
L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5o
dG1sI3UyZi1hdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uLWludGVyb3BlcmFiaWxpdHkKLVdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+
IHJlYWRVMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKTsKK1dFQkNP
UkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+
IHJlYWRVMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CiAKIH0gLy8gbmFtZXNwYWNlIGZpZG8KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UubW0KaW5kZXggMzg3ZjIyNGI1ZmUy
ZGM5YjFhNTE1YmVkOTJkZmJiYTFhNTRmMTNmMC4uNDYxOGJlMGQyMmFmMjdiZTlmZjYxMGNkNjVk
OTc4ODI3ZGE2MzQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDkgKzMyLDkgQEAKIAogQGltcGxlbWVudGF0aW9uIF9XS0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjoo
TlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6
KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4
dGVuc2lvbnMgYXV0aGVudGljYXRvckRhdGE6KE5TRGF0YSAqKWF1dGhlbnRpY2F0b3JEYXRhIHNp
Z25hdHVyZTooTlNEYXRhICopc2lnbmF0dXJlIHVzZXJIYW5kbGU6KE5TRGF0YSAqKXVzZXJIYW5k
bGUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGll
bnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9X
S0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdXRo
ZW50aWNhdG9yRGF0YTooTlNEYXRhICopYXV0aGVudGljYXRvckRhdGEgc2lnbmF0dXJlOihOU0Rh
dGEgKilzaWduYXR1cmUgdXNlckhhbmRsZTooTlNEYXRhICopdXNlckhhbmRsZSBhdHRhY2htZW50
OihfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudClhdHRhY2htZW50CiB7Ci0gICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0V2l0aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOnJh
d0lkIGV4dGVuc2lvbnM6V1RGTW92ZShleHRlbnNpb25zKV0pKQorICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpyYXdJZCBl
eHRlbnNpb25zOldURk1vdmUoZXh0ZW5zaW9ucykgYXR0YWNobWVudDphdHRhY2htZW50XSkpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKICAgICBfYXV0aGVudGljYXRvckRhdGEgPSBhdXRoZW50aWNh
dG9yRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZUlu
dGVybmFsLmgKaW5kZXggZWVmNmExNDdhM2IwNjNmNGQzOTgwNzhmYTU4YWUzODI2NzY5N2NjYS4u
ZjQ4OTM4OTVmNjI0ODhlMjQxMzZlN2ZmNDhlYzE3MTYzMjkwZDE4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZUludGVybmFsLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNyArMzQsNyBA
QCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAaW50ZXJmYWNlIF9XS0F1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRh
SlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVu
c2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRz
PiYmKWV4dGVuc2lvbnMgYXV0aGVudGljYXRvckRhdGE6KE5TRGF0YSAqKWF1dGhlbnRpY2F0b3JE
YXRhIHNpZ25hdHVyZTooTlNEYXRhICopc2lnbmF0dXJlIHVzZXJIYW5kbGU6KE5TRGF0YSAqKXVz
ZXJIYW5kbGU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRh
ICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFp
blB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lv
bnMgYXV0aGVudGljYXRvckRhdGE6KE5TRGF0YSAqKWF1dGhlbnRpY2F0b3JEYXRhIHNpZ25hdHVy
ZTooTlNEYXRhICopc2lnbmF0dXJlIHVzZXJIYW5kbGU6KE5TRGF0YSAqKXVzZXJIYW5kbGUgYXR0
YWNobWVudDooX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQpYXR0YWNobWVudDsKIAogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0KaW5kZXggM2Ix
OTFmZWRmNTc5OTg2NGFjMWZhOTUyN2I0Zjc3NTQzYzZlOTE1MS4uYmRjMGUzNWI5MjQ3ODk3OGRi
YjA0Zjg2MTc1NjkyNjgyNTNkYTY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMiw5ICszMiw5IEBACiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhD
bGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJh
d0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVz
dGF0aW9uT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNE
YXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJl
dGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVu
c2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2JqZWN0IGF0dGFj
aG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQKIHsKLSAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3
SWQ6cmF3SWQgZXh0ZW5zaW9uczpXVEZNb3ZlKGV4dGVuc2lvbnMpXSkpCisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0V2l0aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOnJh
d0lkIGV4dGVuc2lvbnM6V1RGTW92ZShleHRlbnNpb25zKSBhdHRhY2htZW50OmF0dGFjaG1lbnRd
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIF9hdHRlc3RhdGlvbk9iamVjdCA9IGF0dGVz
dGF0aW9uT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZUludGVybmFsLmgKaW5kZXggMDZiMTgwN2Q4NWVkMjljNjY1Njg3YmQ2ZjM5MTQ3MjRh
Yjg2YjM1ZS4uYWFmYmYwYmQ0M2ZjODBlOTQxMGRlMDgyM2JmNDE1OGJlN2RhNmNiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5hbC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM0LDcgKzM0LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGludGVyZmFjZSBfV0tB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0
YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAq
KWF0dGVzdGF0aW9uT2JqZWN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpT
T046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNp
b25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4m
JilleHRlbnNpb25zIGF0dGVzdGF0aW9uT2JqZWN0OihOU0RhdGEgKilhdHRlc3RhdGlvbk9iamVj
dCBhdHRhY2htZW50OihfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudClhdHRhY2htZW50OwogCiBA
ZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRoZW50aWNhdG9yUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UuaAppbmRleCAxMWVkZDk0NDQ5NDdmZTM1MzMwZjEz
NDM5NmYyZGVjMjg1ODlmZmNhLi42NWFiZTVlNzFjMGZjYWQ5NzVmM2ZhZmQzMGQzZDBhNzU1ZGUy
Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
aGVudGljYXRvclJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dL
QXV0aGVudGljYXRvckF0dGFjaG1lbnQuaD4KIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CiAKQEAgLTM2LDYgKzM3LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIFdLX0NM
QVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQogQGludGVy
ZmFjZSBfV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UgOiBOU09iamVjdAogCitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQ7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TRGF0YSAqY2xpZW50RGF0YUpTT047
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TRGF0YSAqcmF3SWQ7CiBAcHJvcGVy
dHkgKG51bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5LCBzdHJvbmcpIF9XS0F1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMgKmV4dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNw
b25zZS5tbQppbmRleCA4OWQwNjE3ZWVkNzRiYjM0NDZjMWQwOWM2NjYwYzEzZTc1ODc0MzA3Li5i
NjgwZWFiN2Q4MGY0NGE4MjFjNWUxNWVlODMyMWUzNDE4NTQyMjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9y
UmVzcG9uc2UubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzMsNyArMzMsNyBAQAogICAgIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiBfZXh0ZW5zaW9uczsKIH0KIAotLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lk
OihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25zCistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0
YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0YWNobWVudDooX1dLQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQpYXR0YWNobWVudAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNDEsNiArNDEsOCBAQAogICAgIF9jbGllbnREYXRh
SlNPTiA9IGNsaWVudERhdGFKU09OOwogICAgIF9yYXdJZCA9IHJhd0lkOwogICAgIF9leHRlbnNp
b25zID0gZXh0ZW5zaW9uczsKKyAgICBfYXR0YWNobWVudCA9IGF0dGFjaG1lbnQ7CisKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlSW50ZXJuYWwuaApp
bmRleCBiMGZhZWZiZjQ3ZmEzM2U4MTk0M2IzNzA2MjQwODg5NTU0NGM5NzE3Li4zNmEyMjUzMjdj
MGI2NmI3Y2I0ZjIwN2JjNWFlYzJjYzU4OTZmN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlSW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJl
c3BvbnNlSW50ZXJuYWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAK
IEBpbnRlcmZhY2UgX1dLQXV0aGVudGljYXRvclJlc3BvbnNlICgpCiAKLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDoo
TlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9uczsKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRh
ICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9u
c0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdHRhY2htZW50OihfV0tBdXRoZW50aWNhdG9y
QXR0YWNobWVudClhdHRhY2htZW50OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KaW5kZXggYzAxMTgyMGRkZGYwY2IyNzgzMWRkYWYyYzhlZTIzZGQ4Y2I2OWE1YS4uYjRlOWMz
NDg4ZDQyMGRjNTBmNDQ0MmM0M2IxODMzZWFkZWM5OGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIl9XS1B1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucy5oIgogI2ltcG9ydCAiX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlbHlp
bmdQYXJ0eUVudGl0eS5oIgogI2ltcG9ydCAiX1dLUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRp
dHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRvckF0dGFjaG1lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvQXV0aGVudGljYXRvclJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1
dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0JPUlJlYWRlci5o
PgpAQCAtNDUzLDkgKzQ1NCwxOSBAQCBzdGF0aWMgV2ViQ29yZTo6QXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50SW5wdXRzIGF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaQogfQogCiAjaWYg
RU5BQkxFKFdFQl9BVVRITikKLXN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYgZGF0YSwgTlNEYXRhICpjbGllbnRE
YXRhSlNPTikKK3N0YXRpYyBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdXRoZW50aWNhdG9y
QXR0YWNobWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXR0YWNobWVudCBhdHRhY2htZW50KQogewotICAgIHJldHVybiBhZG9wdE5TKFtbX1dLQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoQ2xpZW50RGF0YUpT
T046Y2xpZW50RGF0YUpTT04gcmF3SWQ6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQt
PmRhdGEoKSBsZW5ndGg6ZGF0YS5yYXdJZC0+Ynl0ZUxlbmd0aCgpXSBleHRlbnNpb25zOm5pbCBh
dHRlc3RhdGlvbk9iamVjdDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5hdHRlc3RhdGlvbk9i
amVjdC0+ZGF0YSgpIGxlbmd0aDpkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCld
XSk7CisgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm06CisgICAgICAgIHJldHVybiBfV0tBdXRoZW50aWNh
dG9yQXR0YWNobWVudFBsYXRmb3JtOworICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0
dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm06CisgICAgICAgIHJldHVybiBfV0tBdXRoZW50aWNhdG9y
QXR0YWNobWVudENyb3NzUGxhdGZvcm07CisgICAgfQorfQorCitzdGF0aWMgUmV0YWluUHRyPF9X
S0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRh
dGEsIE5TRGF0YSAqY2xpZW50RGF0YUpTT04sIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50IGF0dGFjaG1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnRE
YXRhSlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5yYXdJZC0+ZGF0YSgpIGxl
bmd0aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6bmlsIGF0dGVzdGF0aW9u
T2JqZWN0OltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5kYXRh
KCkgbGVuZ3RoOmRhdGEuYXR0ZXN0YXRpb25PYmplY3QtPmJ5dGVMZW5ndGgoKV0gYXR0YWNobWVu
dDogYXV0aGVudGljYXRvckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0
YWNobWVudCldKTsKIH0KICNlbmRpZgogCkBAIC00NjYsNyArNDc3LDcgQEAgc3RhdGljIFJldGFp
blB0cjxfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb24KICAgICBhdXRvIGhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNs
aWVudERhdGFKU09OLmdldCgpKTsKICAgICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoaGFuZGxlciksIGNsaWVudERhdGFKU09OID0gV1RGTW92ZShjbGllbnREYXRhSlNP
TildIChWYXJpYW50PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U+LCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIFdURjo6c3dpdGNo
T24ocmVzdWx0LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZT4m
IHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICBoYW5kbGVyKHdrQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UocmVzcG9uc2UtPmRhdGEoKSwgY2xpZW50RGF0YUpTT04uZ2V0KCkpLmdldCgp
LCBuaWwpOworICAgICAgICAgICAgaGFuZGxlcih3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlKHJlc3BvbnNlLT5kYXRhKCksIGNsaWVudERhdGFKU09OLmdldCgpLCByZXNwb25zZS0+
YXR0YWNobWVudCgpKS5nZXQoKSwgbmlsKTsKICAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6
OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgewogICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtO
U0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24g
dXNlckluZm86bmlsXSk7CiAgICAgICAgIH0pOwpAQCAtNDk1LDcgKzUwNiw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uCiB9CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotc3RhdGljIFJldGFp
blB0cjxfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEm
IGRhdGEsIE5TRGF0YSAqY2xpZW50RGF0YUpTT04pCitzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYgZGF0YSwgTlNEYXRh
ICpjbGllbnREYXRhSlNPTiwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNo
bWVudCkKIHsKICAgICBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50
T3V0cHV0cz4gZXh0ZW5zaW9uczsKICAgICBpZiAoZGF0YS5hcHBpZCkKQEAgLTUwNSw3ICs1MTYs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4g
d2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcAogICAgIGlmIChkYXRhLnVzZXJIYW5kbGUpCiAg
ICAgICAgIHVzZXJIYW5kbGUgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS51c2VySGFuZGxl
LT5kYXRhKCkgbGVuZ3RoOmRhdGEudXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpXTsKIAotICAgIHJl
dHVybiBhZG9wdE5TKFtbX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOltOU0RhdGEgZGF0YVdp
dGhCeXRlczpkYXRhLnJhd0lkLT5kYXRhKCkgbGVuZ3RoOmRhdGEucmF3SWQtPmJ5dGVMZW5ndGgo
KV0gZXh0ZW5zaW9uczpXVEZNb3ZlKGV4dGVuc2lvbnMpIGF1dGhlbnRpY2F0b3JEYXRhOltOU0Rh
dGEgZGF0YVdpdGhCeXRlczpkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCkgbGVuZ3RoOmRh
dGEuYXV0aGVudGljYXRvckRhdGEtPmJ5dGVMZW5ndGgoKV0gc2lnbmF0dXJlOltOU0RhdGEgZGF0
YVdpdGhCeXRlczpkYXRhLnNpZ25hdHVyZS0+ZGF0YSgpIGxlbmd0aDpkYXRhLnNpZ25hdHVyZS0+
Ynl0ZUxlbmd0aCgpXSB1c2VySGFuZGxlOnVzZXJIYW5kbGVdKTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGll
bnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0
YS5yYXdJZC0+ZGF0YSgpIGxlbmd0aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lv
bnM6V1RGTW92ZShleHRlbnNpb25zKSBhdXRoZW50aWNhdG9yRGF0YTpbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+ZGF0YSgpIGxlbmd0aDpkYXRhLmF1dGhlbnRp
Y2F0b3JEYXRhLT5ieXRlTGVuZ3RoKCldIHNpZ25hdHVyZTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ZGF0YS5zaWduYXR1cmUtPmRhdGEoKSBsZW5ndGg6ZGF0YS5zaWduYXR1cmUtPmJ5dGVMZW5ndGgo
KV0gdXNlckhhbmRsZTp1c2VySGFuZGxlIGF0dGFjaG1lbnQ6YXV0aGVudGljYXRvckF0dGFjaG1l
bnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVudCldKTsKIH0KICNlbmRpZgog
CkBAIC01MTYsNyArNTI3LDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3AKICAgICBhdXRvIGhh
c2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKU09OLmdldCgpKTsKICAg
ICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoaGFuZGxlciksIGNsaWVu
dERhdGFKU09OID0gV1RGTW92ZShjbGllbnREYXRhSlNPTildIChWYXJpYW50PFJlZjxXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yUmVzcG9uc2U+LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgUmVm
PFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZT4mIHJlc3BvbnNlKSB7Ci0gICAgICAgICAg
ICBoYW5kbGVyKHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKHJlc3BvbnNlLT5kYXRh
KCksIGNsaWVudERhdGFKU09OLmdldCgpKS5nZXQoKSwgbmlsKTsKKyAgICAgICAgICAgIGhhbmRs
ZXIod2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UocmVzcG9uc2UtPmRhdGEoKSwgY2xp
ZW50RGF0YUpTT04uZ2V0KCksIHJlc3BvbnNlLT5hdHRhY2htZW50KCkpLmdldCgpLCBuaWwpOwog
ICAgICAgICB9LCBbJl0oY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7
CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKICAgICAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggNDYyM2JhODM1ZWFkOWM5
Yzk3MTQ1ZmMyYjExZGFmYThlYzEwNTk4NS4uYjk0OGVmYjBlZmU4ZGVhYWQzZGY0YTViMTNkOTdk
YWM2YWVkMzlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yQXR0YWNobWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvclRyYW5zcG9ydC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGlj
YXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCBjOGEzNmMxMjM5OTE4Zjg0NzRhZGMyMjRlYTRk
M2Q5ZjIxYTljODQ1Li5jYzFkYjFhY2QzMTViOWEyOGM2YjU3NjEwMDI1ZTRiMzViMGVlN2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2ltcG9ydCA8U2VjdXJpdHkvU2VjSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0JPUlJlYWRlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9DQk9SV3JpdGVyLmg+CkBAIC0xNjcsNyArMTY4LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4gZ2V0RXhpc3Rp
bmdDcmUKICAgICAgICAgfQogICAgICAgICBhdXRvJiB1c2VybmFtZSA9IGl0LT5zZWNvbmQuZ2V0
U3RyaW5nKCk7CiAKLSAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSh0b0FycmF5QnVmZmVyKGF0dHJpYnV0ZXNbKGlkKWtT
ZWNBdHRyQXBwbGljYXRpb25MYWJlbF0pLCB0b0FycmF5QnVmZmVyKHVzZXJIYW5kbGUpLCBTdHJp
bmcodXNlcm5hbWUpLCAoX19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVzWyhp
ZClrU2VjQXR0ckFjY2Vzc0NvbnRyb2xdKSk7CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBl
bmQoQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUodG9BcnJheUJ1ZmZlcihh
dHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwgdG9BcnJheUJ1ZmZlcih1
c2VySGFuZGxlKSwgU3RyaW5nKHVzZXJuYW1lKSwgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xS
ZWYpYXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSwgQXV0aGVudGljYXRvckF0
dGFjaG1lbnQ6OlBsYXRmb3JtKSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00
MjYsNyArNDI3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRl
bnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ28KIAogICAgICAgICBhdXRvIGF1
dGhEYXRhID0gYnVpbGRBdXRoRGF0YShjcmVhdGlvbk9wdGlvbnMucnAuaWQsIGZsYWdzLCBjb3Vu
dGVyLCBidWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExl
bmd0aCwgMCksIGNyZWRlbnRpYWxJZCwgY29zZVB1YmxpY0tleSkpOwogICAgICAgICBhdXRvIGF0
dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRh
KSwgIiIsIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7Ci0gICAg
ICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVh
dGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCkpOworICAgICAgICByZWNlaXZlUmVz
cG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJ
ZCwgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NzAsNyArNDcxLDcgQEAgdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFZlY3Rv
cjx1aW50OF90PiYmIGMKICAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3Rh
dGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgImFwcGxlIiwgV1RGTW92ZShhdHRlc3RhdGlv
blN0YXRlbWVudE1hcCksIGNyZWF0aW9uT3B0aW9ucy5hdHRlc3RhdGlvbik7CiAKICAgICBkZWxl
dGVEdXBsaWNhdGVDcmVkZW50aWFsKCk7Ci0gICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2Jq
ZWN0KSk7CisgICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9y
QXR0YWNobWVudDo6UGxhdGZvcm0pKTsKIH0KIAogdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Omdl
dEFzc2VydGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eS5jcHAKaW5kZXggYWYzZjkxOTY2YzM3MWYwOGVmNGRlODEwMTc1MGM4OGU0ZWYy
M2E2Yy4uMWNhMGRlMDRlMDFjYWEwMzQ3YzU1MjkxNDkxZWViZDI0N2Q0N2RiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MCw5
ICs3MCw5IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJl
cXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0CiAgICAgYXV0byBjYWxsYmFjayA9IFto
YW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKFZhcmlhbnQ8UmVmPEF1dGhlbnRpY2F0b3JSZXNw
b25zZT4sIEV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShj
b25zdCBSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiYgcmVzcG9uc2UpIHsKLSAgICAgICAgICAg
IGhhbmRsZXIocmVzcG9uc2UtPmRhdGEoKSwgeyB9KTsKKyAgICAgICAgICAgIGhhbmRsZXIocmVz
cG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPmF0dGFjaG1lbnQoKSwgeyB9KTsKICAgICAgICAgfSwg
WyZdKGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgewotICAgICAgICAgICAgaGFuZGxl
cih7IH0sIGV4Y2VwdGlvbik7CisgICAgICAgICAgICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50KTAsIGV4Y2VwdGlvbik7CiAgICAgICAgIH0pOwogICAgIH07CiAgICAgbV93
ZWJQYWdlUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpLmF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkuaGFu
ZGxlUmVxdWVzdChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAppbmRleCAzM2ViMDdm
MzkyMDA1NmU1ZDc3MjQwZTIyZGUwOTdjOWM2NjBiNGVhLi41M2Y5NzNiNWE3NGRiMmM2OWEzNmMy
YWU2YjJjY2Q4NzllNDIyYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitlbnVtIGNsYXNzIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50Owogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9uczsKIHN0cnVjdCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOwpA
QCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgfldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5KCk7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVy
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVz
cG9uc2VEYXRhJiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKKyAgICB1c2luZyBS
ZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXR0YWNobWVudCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKICAgICB1c2luZyBR
dWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47CiAK
ICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGY5
OGI4ZTM2YzI4NmUwMmIxYTY1NDgwOTQxZWQ5MDRiOTIzNjM0My4uY2I5M2M4OWYyNDQ3MGYzOTlh
MGIxOWIxZDMyOWU3N2E3Zjc1NmFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0
IEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOCArMjYsOCBAQAogCiBtZXNz
YWdlcyAtPiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSBOb3RSZWZDb3VudGVkIHsK
IAotICAgIE1ha2VDcmVkZW50aWFsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBz
dHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhh
c2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9w
dGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEgZXhjZXB0aW9uKSBBc3luYwotICAgIEdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZl
Y3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3Ry
dWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYworICAgIE1ha2VDcmVkZW50aWFsKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9E
YXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEg
ZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVu
dCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYworICAgIEdl
dEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktp
dDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMsIGJvb2wg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1l
bnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBB
c3luYwogICAgIElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSgp
IC0+IChib29sIHJlc3VsdCkgQXN5bmMKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50
aWNhdG9yLmNwcAppbmRleCBlZjg1YTMxODg4NWZjOWVlODQwODJkMDg1MDA4ZDQ1NjcwNjliMGEy
Li5lMDYzMmUwYjU3MjQ5MTBlYzkzYWY1NTNiMTM4ODQyY2YxNDRhY2NiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50
aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ3Rh
cERyaXZlci5oIgogI2luY2x1ZGUgIkN0YXBIaWREcml2ZXIuaCIKICNpbmNsdWRlICJVMmZBdXRo
ZW50aWNhdG9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yQXR0YWNobWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ3J5cHRvS2V5QUVTLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
cnlwdG9LZXlFQy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3J5cHRvS2V5SE1BQy5oPgpAQCAtMTA1
LDcgKzEwNiw3IEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKIAog
dm9pZCBDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVzcG9u
c2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGF1dG8gcmVzcG9uc2Ug
PSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoZGF0YSwgV1RGOjpnZXQ8UHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKS5hdHRlc3Rh
dGlvbik7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25z
ZShkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSwgV1RGOjpnZXQ8
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25z
KS5hdHRlc3RhdGlvbik7CiAgICAgaWYgKCFyZXNwb25zZSkgewogICAgICAgICBhdXRvIGVycm9y
ID0gZ2V0UmVzcG9uc2VDb2RlKGRhdGEpOwogCkBAIC0xNDYsNyArMTQ3LDcgQEAgdm9pZCBDdGFw
QXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKIAogdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6
Y29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNw
b25zZShkYXRhKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNw
b25zZShkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAg
aWYgKCFyZXNwb25zZSkgewogICAgICAgICBhdXRvIGVycm9yID0gZ2V0UmVzcG9uc2VDb2RlKGRh
dGEpOwogCkBAIC0xODUsNyArMTg2LDcgQEAgdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6Y29udGlu
dWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3QKIAogdm9p
ZCBDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVHZXROZXh0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9
IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoZGF0YSk7CisgICAgYXV0byByZXNwb25zZSA9
IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoZGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1l
bnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgYXV0byBl
cnJvciA9IGdldFJlc3BvbnNlQ29kZShkYXRhKTsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhj
ZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiVW5rbm93biBpbnRlcm5hbCBl
cnJvci4gRXJyb3IgY29kZTogIiwgc3RhdGljX2Nhc3Q8dWludDhfdD4oZXJyb3IpKSB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
VTJmQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCmluZGV4IGM3NTc1OWZhMzJkOTg5ZTk1
NGQ3MjI0YjY0NjNlYzBlNjJhMmE4MTcuLjVhNmJkYzI1YjJmNzg1ZTM4ZDQwZTMxOTUxZDgxZjMw
YjNiMmQ0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlICJDdGFwRHJpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcGR1
UmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBdHRhY2htZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
MmZDb21tYW5kQ29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1UyZlJlc3BvbnNlQ29u
dmVydGVyLmg+CkBAIC0xNTYsNyArMTU3LDcgQEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjpjb250
aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UKICAg
ICBjYXNlIEFwZHVSZXNwb25zZTo6U3RhdHVzOjpTV19OT19FUlJPUjogewogICAgICAgICBhdXRv
JiBvcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4o
cmVxdWVzdERhdGEoKS5vcHRpb25zKTsKICAgICAgICAgYXV0byBhcHBJZCA9IHByb2Nlc3NHb29n
bGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24ob3B0aW9ucy5leHRlbnNpb25zKTsKLSAgICAg
ICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKCFhcHBJZCA/IG9wdGlv
bnMucnAuaWQgOiBhcHBJZCwgYXBkdVJlc3BvbnNlLmRhdGEoKSwgb3B0aW9ucy5hdHRlc3RhdGlv
bik7CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZSghYXBw
SWQgPyBvcHRpb25zLnJwLmlkIDogYXBwSWQsIGFwZHVSZXNwb25zZS5kYXRhKCksIEF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtLCBvcHRpb25zLmF0dGVzdGF0aW9uKTsKICAg
ICAgICAgaWYgKCFyZXNwb25zZSkgewogICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IFVua25vd25FcnJvciwgIkNvdWxkbid0IHBhcnNlIHRoZSBVMkYgcmVnaXN0ZXIg
cmVzcG9uc2UuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA4LDkgKzIwOSw5IEBA
IHZvaWQgVTJmQXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VS
ZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBhCiAgICAgICAgIFJlZlB0cjxBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U+IHJlc3BvbnNlOwogICAgICAgICBpZiAobV9pc0FwcElkKSB7CiAgICAg
ICAgICAgICBBU1NFUlQocmVxdWVzdE9wdGlvbnMuZXh0ZW5zaW9ucyAmJiAhcmVxdWVzdE9wdGlv
bnMuZXh0ZW5zaW9ucy0+YXBwaWQuaXNOdWxsKCkpOwotICAgICAgICAgICAgcmVzcG9uc2UgPSBy
ZWFkVTJmU2lnblJlc3BvbnNlKHJlcXVlc3RPcHRpb25zLmV4dGVuc2lvbnMtPmFwcGlkLCByZXF1
ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzW21fbmV4dExpc3RJbmRleCAtIDFdLmlkVmVjdG9y
LCBhcGR1UmVzcG9uc2UuZGF0YSgpKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gcmVhZFUyZlNp
Z25SZXNwb25zZShyZXF1ZXN0T3B0aW9ucy5leHRlbnNpb25zLT5hcHBpZCwgcmVxdWVzdE9wdGlv
bnMuYWxsb3dDcmVkZW50aWFsc1ttX25leHRMaXN0SW5kZXggLSAxXS5pZFZlY3RvciwgYXBkdVJl
c3BvbnNlLmRhdGEoKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25z
ZShyZXF1ZXN0T3B0aW9ucy5ycElkLCByZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzW21f
bmV4dExpc3RJbmRleCAtIDFdLmlkVmVjdG9yLCBhcGR1UmVzcG9uc2UuZGF0YSgpKTsKKyAgICAg
ICAgICAgIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShyZXF1ZXN0T3B0aW9ucy5ycElk
LCByZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzW21fbmV4dExpc3RJbmRleCAtIDFdLmlk
VmVjdG9yLCBhcGR1UmVzcG9uc2UuZGF0YSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jv
c3NQbGF0Zm9ybSk7CiAgICAgICAgIGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgICAgIHJlY2Vp
dmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBwYXJzZSB0
aGUgVTJGIHNpZ24gcmVzcG9uc2UuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjRjYmFmYzkzMTliY2ZhNDgxNWRjOTVmMWU1
NDc4NDM2ZmE0YTI0Mi4uYjcxNDhjYmUxMTUwM2RjYjg4NTJkYjFjYTdmMjg4ZjVmMDM2MTlkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9X
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgyLDkgKzgyLDkgQEAgdm9pZCBXZWJB
dXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRp
b25SZXF1ZXN0RGF0YSYKICAgICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpXSAoVmFyaWFudDxSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiwgRXhjZXB0aW9uRGF0
YT4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFJlZjxBdXRoZW50aWNh
dG9yUmVzcG9uc2U+JiByZXNwb25zZSkgewotICAgICAgICAgICAgaGFuZGxlcihyZXNwb25zZS0+
ZGF0YSgpLCB7IH0pOworICAgICAgICAgICAgaGFuZGxlcihyZXNwb25zZS0+ZGF0YSgpLCByZXNw
b25zZS0+YXR0YWNobWVudCgpLCB7IH0pOwogICAgICAgICB9LCBbJl0oY29uc3QgRXhjZXB0aW9u
RGF0YSYgZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBoYW5kbGVyKHsgfSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgZXhj
ZXB0aW9uKTsKICAgICAgICAgfSk7CiAgICAgfTsKICAgICBtX1dlYkF1dGhuUHJvY2Vzcy0+YXV0
aGVudGljYXRvck1hbmFnZXIoKS5oYW5kbGVSZXF1ZXN0KFdURk1vdmUoZGF0YSksIFdURk1vdmUo
Y2FsbGJhY2spKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dl
YkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblBy
b2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYmY2ZjdjNjU1ZDk2
NTkwYTFmMjIxNDA1N2IzNmU5YjUwNTIyODc0MC4uMjczYjQ2MTU0YzJhNTQ1Y2M0NGJhYTcxMDhj
Mjc4MGJjZmIwMTcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3Mv
V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJB
dXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Vu
dW0gY2xhc3MgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ7CiBzdHJ1Y3QgQXV0aGVudGljYXRvclJl
c3BvbnNlRGF0YTsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogc3RydWN0IE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb247CkBAIC01Nyw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKLSAgICB1c2luZyBSZXF1
ZXN0Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhJik+OworICAgIHVzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYsIFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhJik+OwogICAgIHVzaW5nIFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPjsKIAogICAgIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhX
ZWJBdXRoblByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9j
ZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCAyOWI0YzFkZTk3YmJmMjRiODRiMmRkMGM5YjA3YTNlMjZjZDAyMTYxLi5h
YzczYTk1MzZhODkyMDIyZTMzZmE2YzE0MTcyODU5ZGUyZDVmNGVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5D
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDggKzI0LDggQEAKIAogbWVzc2FnZXMgLT4gV2Vi
QXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzIHsKIAotICAgIE1ha2VDcmVkZW50aWFsKFZlY3Rv
cjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVj
dCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKLSAgICBHZXRBc3NlcnRpb24oVmVjdG9y
PHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+IChzdHJ1Y3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAgTWFrZUNyZWRlbnRpYWwoVmVjdG9y
PHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29y
ZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYworICAgIEdldEFzc2VydGlvbihWZWN0b3I8dWlu
dDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRp
b25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKICAgICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGUoKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKICAgICBTZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHN0cnVjdCBXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAppbmRleCBjNDIzY2Y2ZWYxMDU3NDdj
NTZkZGQ0YzgyOGVjZjM3NDVjOThmNWFlLi5kNTQ1OGVkYmY0NDUxY2E1ODhlOWRmZTQ3YjJjYWVh
YzU1NTVhNjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yQXR0YWNobWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA2ZjZkODY0OTQ5ZTMwYjc5MTFjZmE5ZGMxMGUwM2UyMWJlYjU5NzZkLi5jMzg5MDFkZGEw
NmE5YWY1YWQxOTc0NWY1NDIyOTM0OGVmMmEzMTk3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDYtMDEgIEdh
cnJldHQgRGF2aWRzb24gIDxkYXZpZHNvbi5nYXJyZXR0bUBnbWFpbC5jb20+CisKKworICAgICAg
ICBbQ29jb2FdIF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBzaG91bGQgc3BlY2lm
eSB0aGUgYXR0YWNobWVudCB0eXBlIHVzZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNTUxOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1NTQw
OTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIHRoZSBDVEFQIHRlc3RzIHRvIHNwZWNpZnkgdGhlIG5ldyBhdHRhY2htZW50IHBhcmFtZXRl
ci4gQWxsIG9mIHRoZXNlIHRlc3RzCisgICAgICAgIGFzc3VtZSBhIGNyb3NzIHBsYXRmb3JtIGF1
dGhlbnRpY2F0b3IuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3Rh
cFJlc3BvbnNlVGVzdC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAy
MS0wNi0wMSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UHJpbnQgYm90IGNvbmZpZ3VyYXRpb24gaW4gYnVpbGQud2Via2l0Lm9yZyBidWlsZHMKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVxdWVzdFRlc3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXF1ZXN0VGVzdC5j
cHAKaW5kZXggZTRmN2UzYzFjY2IxODM5ZmU4ZTNmNmM2MDc3NzIwNDE1MGFmMTUwZi4uM2ZiM2Uw
MjI1YWM4MTFlMjQyMjFlZWYxNTllZmI4MzMxOTdhZGRiZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXF1ZXN0VGVzdC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXF1ZXN0VGVzdC5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKIAogI2luY2x1ZGUgIkZpZG9UZXN0RGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yQXR0YWNobWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGluLmg+CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVz
dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVz
dC5jcHAKaW5kZXggYzM3ZmQ2ODJlNTRiYjYwMWZmM2E0NWIyN2M2Mjc5ZTI2ZDdmODhhYi4uY2Rh
M2JiMTA0Y2MwZGE0NTcxNjZmMmY3YzMxYjM1NDExMzNmYWMxYSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJGaWRvVGVz
dERhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBdHRhY2htZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9DQk9SUmVhZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQk9SVmFs
dWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NCT1JXcml0ZXIuaD4KQEAgLTM1Myw3ICszNTQsNyBA
QCBWZWN0b3I8dWludDhfdD4gZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2Uoc2l6ZV90IHByZWZp
eFNpemUsIGNvbnN0IHVpbnQ4X3QgYXBwZQogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3Nw
ZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXBy
b3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCNjb21tYW5kcwogVEVTVChDVEFQUmVzcG9uc2VU
ZXN0LCBUZXN0UmVhZE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpCiB7Ci0gICAgYXV0byBtYWtlQ3Jl
ZGVudGlhbFJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNvbnZlcnRC
eXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9uc2UsIHNpemVv
ZihUZXN0RGF0YTo6a1Rlc3RNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKSkpOworICAgIGF1dG8gbWFr
ZUNyZWRlbnRpYWxSZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb252
ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RNYWtlQ3JlZGVudGlhbFJlc3BvbnNlLCBz
aXplb2YoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25zZSkpLCBBdXRoZW50aWNh
dG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgQVNTRVJUX1RSVUUobWFrZUNyZWRl
bnRpYWxSZXNwb25zZSk7CiAgICAgYXV0byBjYm9yQXR0ZXN0YXRpb25PYmplY3QgPSBjYm9yOjpD
Qk9SUmVhZGVyOjpyZWFkKGNvbnZlcnRCeXRlc1RvVmVjdG9yKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0KCktPmRhdGEo
KSksIG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0KCktPmJ5dGVMZW5n
dGgoKSkpOwogICAgIEFTU0VSVF9UUlVFKGNib3JBdHRlc3RhdGlvbk9iamVjdCk7CkBAIC00MDEs
NyArNDAyLDcgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UmVhZE1ha2VDcmVkZW50aWFs
UmVzcG9uc2UpCiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBz
LTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0y
MDE3MDkyNy5odG1sCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkR2V0QXNzZXJ0aW9u
UmVzcG9uc2UxKQogewotICAgIGF1dG8gZ2V0QXNzZXJ0aW9uUmVzcG9uc2UgPSByZWFkQ1RBUEdl
dEFzc2VydGlvblJlc3BvbnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprRGV2aWNl
R2V0QXNzZXJ0aW9uUmVzcG9uc2VTaG9ydCwgc2l6ZW9mKFRlc3REYXRhOjprRGV2aWNlR2V0QXNz
ZXJ0aW9uUmVzcG9uc2VTaG9ydCkpKTsKKyAgICBhdXRvIGdldEFzc2VydGlvblJlc3BvbnNlID0g
cmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0
YTo6a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlU2hvcnQsIHNpemVvZihUZXN0RGF0YTo6a0Rl
dmljZUdldEFzc2VydGlvblJlc3BvbnNlU2hvcnQpKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6
OkNyb3NzUGxhdGZvcm0pOwogICAgIEFTU0VSVF9UUlVFKGdldEFzc2VydGlvblJlc3BvbnNlKTsK
IAogICAgIEVYUEVDVF9FUShnZXRBc3NlcnRpb25SZXNwb25zZS0+YXV0aGVudGljYXRvckRhdGEo
KS0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwMkdldEFzc2VydGlvbkF1dGhE
YXRhKSk7CkBAIC00MTIsNyArNDEzLDcgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UmVh
ZEdldEFzc2VydGlvblJlc3BvbnNlMSkKIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UmVh
ZEdldEFzc2VydGlvblJlc3BvbnNlMikKIHsKLSAgICBhdXRvIGdldEFzc2VydGlvblJlc3BvbnNl
ID0gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0
RGF0YTo6a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtEZXZp
Y2VHZXRBc3NlcnRpb25SZXNwb25zZSkpKTsKKyAgICBhdXRvIGdldEFzc2VydGlvblJlc3BvbnNl
ID0gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0
RGF0YTo6a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtEZXZp
Y2VHZXRBc3NlcnRpb25SZXNwb25zZSkpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQ
bGF0Zm9ybSk7CiAgICAgQVNTRVJUX1RSVUUoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UpOwogCiAgICAg
RVhQRUNUX0VRKGdldEFzc2VydGlvblJlc3BvbnNlLT5hdXRoZW50aWNhdG9yRGF0YSgpLT5ieXRl
TGVuZ3RoKCksIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyR2V0QXNzZXJ0aW9uQXV0aERhdGEpKTsK
QEAgLTQyNSw3ICs0MjYsNyBAQCBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkR2V0QXNz
ZXJ0aW9uUmVzcG9uc2UyKQogCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkR2V0QXNz
ZXJ0aW9uUmVzcG9uc2UzKQogewotICAgIGF1dG8gZ2V0QXNzZXJ0aW9uUmVzcG9uc2UgPSByZWFk
Q1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjpr
RGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2VMb25nLCBzaXplb2YoVGVzdERhdGE6OmtEZXZpY2VH
ZXRBc3NlcnRpb25SZXNwb25zZUxvbmcpKSk7CisgICAgYXV0byBnZXRBc3NlcnRpb25SZXNwb25z
ZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVz
dERhdGE6OmtEZXZpY2VHZXRBc3NlcnRpb25SZXNwb25zZUxvbmcsIHNpemVvZihUZXN0RGF0YTo6
a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlTG9uZykpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVu
dDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgQVNTRVJUX1RSVUUoZ2V0QXNzZXJ0aW9uUmVzcG9uc2Up
OwogCiAgICAgRVhQRUNUX0VRKGdldEFzc2VydGlvblJlc3BvbnNlLT5hdXRoZW50aWNhdG9yRGF0
YSgpLT5ieXRlTGVuZ3RoKCksIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyR2V0QXNzZXJ0aW9uQXV0
aERhdGEpKTsKQEAgLTQ0Miw3ICs0NDMsNyBAQCBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RS
ZWFkR2V0QXNzZXJ0aW9uUmVzcG9uc2UzKQogLy8gVGVzdCB0aGF0IFUyRiByZWdpc3RlciByZXNw
b25zZSBpcyBwcm9wZXJseSBwYXJzZWQuCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJz
ZVJlZ2lzdGVyUmVzcG9uc2VEYXRhKQogewotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVn
aXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBjb252ZXJ0Qnl0ZXNUb1Zl
Y3RvcihUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6
OmtUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZSkpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUy
ZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgY29udmVydEJ5dGVz
VG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZSwgc2l6ZW9mKFRlc3RE
YXRhOjprVGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UpKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6
OkNyb3NzUGxhdGZvcm0pOwogICAgIEFTU0VSVF9UUlVFKHJlc3BvbnNlKTsKICAgICBFWFBFQ1Rf
RVEocmVzcG9uc2UtPnJhd0lkKCktPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprVTJm
U2lnbktleUhhbmRsZSkpOwogICAgIEVYUEVDVF9FUShtZW1jbXAocmVzcG9uc2UtPnJhd0lkKCkt
PmRhdGEoKSwgVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlLCBzaXplb2YoVGVzdERhdGE6OmtV
MmZTaWduS2V5SGFuZGxlKSksIDApOwpAQCAtNDU1LDI2ICs0NTYsMjYgQEAgVEVTVChDVEFQUmVz
cG9uc2VUZXN0LCBUZXN0UGFyc2VSZWdpc3RlclJlc3BvbnNlRGF0YSkKIFRFU1QoQ1RBUFJlc3Bv
bnNlVGVzdCwgVGVzdFBhcnNlSW5jb3JyZWN0UmVnaXN0ZXJSZXNwb25zZURhdGExKQogewogICAg
IGNvbnN0IHVpbnQ4X3QgdGVzdERhdGExW10gPSB7IDB4MDUgfTsKLSAgICBhdXRvIHJlc3BvbnNl
ID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgY29u
dmVydEJ5dGVzVG9WZWN0b3IodGVzdERhdGExLCBzaXplb2YodGVzdERhdGExKSkpOworICAgIGF1
dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQ
YXJ0eUlkLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcih0ZXN0RGF0YTEsIHNpemVvZih0ZXN0RGF0YTEp
KSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEVYUEVDVF9G
QUxTRShyZXNwb25zZSk7CiAKICAgICBjb25zdCB1aW50OF90IHRlc3REYXRhMltdID0geyAweDA1
LCAweDAwIH07Ci0gICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0
YTo6a1JlbHlpbmdQYXJ0eUlkLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcih0ZXN0RGF0YTIsIHNpemVv
Zih0ZXN0RGF0YTIpKSk7CisgICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShU
ZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcih0ZXN0RGF0YTIs
IHNpemVvZih0ZXN0RGF0YTIpKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZv
cm0pOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CiAKICAgICBjb25zdCB1aW50OF90IHRl
c3REYXRhM1tdID0geyAweDA1LCAweDA0LCAweDAwIH07Ci0gICAgcmVzcG9uc2UgPSByZWFkVTJm
UmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBjb252ZXJ0Qnl0ZXNU
b1ZlY3Rvcih0ZXN0RGF0YTMsIHNpemVvZih0ZXN0RGF0YTMpKSk7CisgICAgcmVzcG9uc2UgPSBy
ZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBjb252ZXJ0
Qnl0ZXNUb1ZlY3Rvcih0ZXN0RGF0YTMsIHNpemVvZih0ZXN0RGF0YTMpKSwgQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7
CiB9CiAKIC8vIFRlc3QgbWFsZm9ybWVkIGtleSBoYW5kbGUuCiBURVNUKENUQVBSZXNwb25zZVRl
c3QsIFRlc3RQYXJzZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhMikKIHsKLSAgICBhdXRv
IHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFy
dHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2Uoa1UyZktleUhhbmRsZUxlbmd0aE9mZnNl
dCwgbnVsbHB0ciwgMCkpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNw
b25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25z
ZShrVTJmS2V5SGFuZGxlTGVuZ3RoT2Zmc2V0LCBudWxscHRyLCAwKSwgQXV0aGVudGljYXRvckF0
dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CiAK
ICAgICBjb25zdCB1aW50OF90IHRlc3REYXRhW10gPSB7IDB4NDAgfTsKLSAgICByZXNwb25zZSA9
IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRl
c3RVMmZSZWdpc3RlclJlc3BvbnNlKGtVMmZLZXlIYW5kbGVMZW5ndGhPZmZzZXQsIHRlc3REYXRh
LCBzaXplb2YodGVzdERhdGEpKSk7CisgICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNw
b25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25z
ZShrVTJmS2V5SGFuZGxlTGVuZ3RoT2Zmc2V0LCB0ZXN0RGF0YSwgc2l6ZW9mKHRlc3REYXRhKSks
IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBFQ1RfRkFM
U0UocmVzcG9uc2UpOwogfQogCkBAIC00ODIsMjcgKzQ4MywyNyBAQCBURVNUKENUQVBSZXNwb25z
ZVRlc3QsIFRlc3RQYXJzZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhMikKIFRFU1QoQ1RB
UFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlSW5jb3JyZWN0UmVnaXN0ZXJSZXNwb25zZURhdGEzKQog
ewogICAgIGNvbnN0IGF1dG8gcHJlZml4ID0ga1UyZktleUhhbmRsZU9mZnNldCArIDY0OwotICAg
IGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlp
bmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIG51bGxwdHIsIDAp
KTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6
OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4LCBudWxs
cHRyLCAwKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEVY
UEVDVF9GQUxTRShyZXNwb25zZSk7CiAKICAgICBjb25zdCB1aW50OF90IHRlc3REYXRhMVtdID0g
eyAweDQwIH07Ci0gICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0
YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRl
c3REYXRhMSwgc2l6ZW9mKHRlc3REYXRhMSkpKTsKKyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdp
c3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3Rl
clJlc3BvbnNlKHByZWZpeCwgdGVzdERhdGExLCBzaXplb2YodGVzdERhdGExKSksIEF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzcG9u
c2UpOwogCiAgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YTJbXSA9IHsgMHgzMCB9OwotICAgIHJl
c3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJ
ZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4LCB0ZXN0RGF0YTIsIHNpemVvZih0
ZXN0RGF0YTIpKSk7CisgICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0
RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgs
IHRlc3REYXRhMiwgc2l6ZW9mKHRlc3REYXRhMikpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6
Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKIAogICAgIGNvbnN0
IHVpbnQ4X3QgdGVzdERhdGEzW10gPSB7IDB4MzAsIDB4ODIgfTsKLSAgICByZXNwb25zZSA9IHJl
YWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RV
MmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgdGVzdERhdGEzLCBzaXplb2YodGVzdERhdGEzKSkp
OworICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5
aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4LCB0ZXN0RGF0YTMs
IHNpemVvZih0ZXN0RGF0YTMpKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZv
cm0pOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CiAKICAgICBjb25zdCB1aW50OF90IHRl
c3REYXRhNFtdID0geyAweDMwLCAweEMxIH07Ci0gICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0
ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJS
ZXNwb25zZShwcmVmaXgsIHRlc3REYXRhNCwgc2l6ZW9mKHRlc3REYXRhNCkpKTsKKyAgICByZXNw
b25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQs
IGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgdGVzdERhdGE0LCBzaXplb2YodGVz
dERhdGE0KSksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBF
WFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogCiAgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YTVbXSA9
IHsgMHgzMCwgMHg4MiwgMHgwMiwgMHg0QSB9OwotICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lz
dGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVy
UmVzcG9uc2UocHJlZml4LCB0ZXN0RGF0YTUsIHNpemVvZih0ZXN0RGF0YTUpKSk7CisgICAgcmVz
cG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlk
LCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3REYXRhNSwgc2l6ZW9mKHRl
c3REYXRhNSkpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAg
RVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKIH0KIApAQCAtNTEwLDcgKzUxMSw3IEBAIFRFU1QoQ1RB
UFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlSW5jb3JyZWN0UmVnaXN0ZXJSZXNwb25zZURhdGEzKQog
VEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VJbmNvcnJlY3RSZWdpc3RlclJlc3BvbnNl
RGF0YTQpCiB7CiAgICAgY29uc3QgYXV0byBwcmVmaXggPSBzaXplb2YoVGVzdERhdGE6OmtUZXN0
VTJmUmVnaXN0ZXJSZXNwb25zZSk7Ci0gICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3Rl
clJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJl
c3BvbnNlKHByZWZpeCAtIDcxLCBudWxscHRyLCAwKSk7CisgICAgYXV0byByZXNwb25zZSA9IHJl
YWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RV
MmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCAtIDcxLCBudWxscHRyLCAwKSwgQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7
CiB9CiAKQEAgLTUyNyw3ICs1MjgsNyBAQCBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJz
ZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhNSkKICAgICB0ZXN0RGF0YTEuYXBwZW5kKDB4
MDEpOwogICAgIHRlc3REYXRhMS5hcHBlbmQoMHgwMCk7CiAgICAgdGVzdERhdGExLmFwcGVuZChU
ZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlICsgc3VmZml4LCBzaWduYXR1cmVTaXpl
KTsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6
OmtSZWx5aW5nUGFydHlJZCwgdGVzdERhdGExKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUy
ZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgdGVzdERhdGExLCBB
dXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNUX1RSVUUo
cmVzcG9uc2UpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRlc3REYXRhMjsKQEAgLTUzNywxNCAr
NTM4LDE0IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlSW5jb3JyZWN0UmVnaXN0
ZXJSZXNwb25zZURhdGE1KQogICAgIHRlc3REYXRhMi5hcHBlbmQoMHgwMSk7CiAgICAgdGVzdERh
dGEyLmFwcGVuZCgweDAwKTsKICAgICB0ZXN0RGF0YTIuYXBwZW5kKFRlc3REYXRhOjprVGVzdFUy
ZlJlZ2lzdGVyUmVzcG9uc2UgKyBzdWZmaXgsIHNpZ25hdHVyZVNpemUpOwotICAgIHJlc3BvbnNl
ID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgdGVz
dERhdGEyKTsKKyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRh
OjprUmVseWluZ1BhcnR5SWQsIHRlc3REYXRhMiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNy
b3NzUGxhdGZvcm0pOwogICAgIEVYUEVDVF9UUlVFKHJlc3BvbnNlKTsKIH0KIAogLy8gVGVzdHMg
dGhhdCBVMkYgYXV0aGVudGljYXRvciBkYXRhIGlzIHByb3Blcmx5IHNlcmlhbGl6ZWQuCiBURVNU
KENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZVNpZ25SZXNwb25zZURhdGEpCiB7Ci0gICAgYXV0
byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJ
ZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIGdldFRlc3RTaWduUmVzcG9uc2UoKSk7
CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5
aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIGdldFRlc3RTaWduUmVz
cG9uc2UoKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEFT
U0VSVF9UUlVFKHJlc3BvbnNlKTsKICAgICBFWFBFQ1RfRVEocmVzcG9uc2UtPnJhd0lkKCktPmJ5
dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOwogICAgIEVY
UEVDVF9FUShtZW1jbXAocmVzcG9uc2UtPnJhd0lkKCktPmRhdGEoKSwgVGVzdERhdGE6OmtVMmZT
aWduS2V5SGFuZGxlLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSksIDApOwpA
QCAtNTU2LDI3ICs1NTcsMjcgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VTaWdu
UmVzcG9uc2VEYXRhKQogCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZVUyZlNpZ25X
aXRoTnVsbEtleUhhbmRsZSkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNw
b25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBWZWN0b3I8dWludDhfdD4oKSwgZ2V0VGVz
dFNpZ25SZXNwb25zZSgpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25z
ZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBWZWN0b3I8dWludDhfdD4oKSwgZ2V0VGVzdFNp
Z25SZXNwb25zZSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKIH0KIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBU
ZXN0UGFyc2VVMmZTaWduV2l0aE51bGxSZXNwb25zZSkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0g
cmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3Jl
ZGVudGlhbFJhd0lkQnl0ZXMoKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgIGF1dG8gcmVzcG9u
c2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRl
c3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBWZWN0b3I8dWludDhfdD4oKSwgQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7
CiB9CiAKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlVTJmU2lnbldpdGhDb3JydXB0
ZWRDb3VudGVyKQogewogICAgIC8vIEEgc2lnbiByZXNwb25zZSBvZiBsZXNzIHRoYW4gNSBieXRl
cy4KLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1Jl
bHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0VGVzdENvcnJ1
cHRlZFNpZ25SZXNwb25zZSgzKSk7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVz
cG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5
dGVzKCksIGdldFRlc3RDb3JydXB0ZWRTaWduUmVzcG9uc2UoMyksIEF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogfQog
CiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZVUyZlNpZ25XaXRoQ29ycnVwdGVkU2ln
bmF0dXJlKQogewogICAgIC8vIEEgc2lnbiByZXNwb25zZSBubyBtb3JlIHRoYW4gNSBieXRlcy4K
LSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlp
bmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0VGVzdENvcnJ1cHRl
ZFNpZ25SZXNwb25zZSg1KSk7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9u
c2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVz
KCksIGdldFRlc3RDb3JydXB0ZWRTaWduUmVzcG9uc2UoNSksIEF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggOWEzMTgzMzkxNThhYWU5YjM1
YWVhZjVjZGY3YjkyOWMyOWM3NmM2ZS4uZDc0OTljMDQ4ZGM5MGIyYjBkODM3MmQyMGI2YWU4MmJl
MjRlZGQ4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMzMsNiAr
MzMsNyBAQAogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8TG9jYWxBdXRoZW50aWNhdGlvbi9Mb2NhbEF1
dGhlbnRpY2F0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBdHRhY2htZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430295</attachid>
            <date>2021-06-01 14:57:30 -0700</date>
            <delta_ts>2021-06-02 09:42:36 -0700</delta_ts>
            <desc>Garrett&apos;s Patch with fwd declaration (and the cast)</desc>
            <filename>bug-225519-20210601145729.patch</filename>
            <type>text/plain</type>
            <size>87835</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNhYTVlNTNjNjk4NTE0
MWVlMjgzY2FkMTQ4M2Y3Njg1ZjQxZjY3Yy4uMmZhZDk2OTNjNmI1ZTdkMmQ2NTViYjc4NzU5YmI4
ODA1ZTRkYTEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTA2LTAxICBHYXJy
ZXR0IERhdmlkc29uICA8Z2FycmV0dF9kYXZpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Ugc2hvdWxkIHNwZWNpZnkgdGhl
IGF0dGFjaG1lbnQgdHlwZSB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU1MTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTU0MDkwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IFdl
YkF1dGhuIGF1dGhlbnRpY2F0b3JzIHRvIHBhc3MgYmFjayB0aGVpciBhdHRhY2htZW50IHR5cGUg
YW5kIGNvbnRpbnVlCisgICAgICAgIHBsdW1iaW5nIHRocm91Z2ggdXAgdG8gdGhlIGF1dGhlbnRp
Y2F0b3IgY29vcmRpbmF0b3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBtYW51YWwgdGVzdHMuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OkF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNw
b25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmF0dGFjaG1l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlOjpBdXRo
ZW50aWNhdG9yUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvclJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
c3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAgICAgKGZpZG86OnJlYWRDVEFQTWFrZUNyZWRlbnRp
YWxSZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpyZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0
ZXIuY3BwOgorICAgICAgICAoZmlkbzo6cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UpOgorICAgICAg
ICAoZmlkbzo6cmVhZFUyZlNpZ25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmg6CisKIDIwMjEtMDYtMDEgIEFudHRpIEtvaXZp
c3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBJbmxpbmVCb3ggdG8gTGVn
YWN5SW5saW5lQm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJmNWUwNmE5M2Q3MWY5Yjk3MDNhMWJjYmFjNmE4Y2U2
NmI4NDE5YjkuLjBhMjE2Mzc0YWQ5NzNjNGIzOTcxMjA4NTZhMmE2NTAxOGI3MmZiNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMDYtMDEgIEdhcnJldHQgRGF2aWRzb24gIDxnYXJy
ZXR0X2Rhdmlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIF9XS0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZSBzaG91bGQgc3BlY2lmeSB0aGUgYXR0YWNobWVudCB0eXBlIHVz
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTUx
OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1NTQwOTA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBXZWJBdXRobiBhdXRoZW50aWNhdG9y
cyBzdGFydCBwYXNzaW5nIGJhY2sgdGhlaXIgYXR0YWNobWVudCB0eXBlLCBhbmQgcGx1bWIKKyAg
ICAgICAgaXQgdXAgdGhyb3VnaCB0byB0aGUgY2FsbGluZyBwcm9jZXNzLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UubW06
CisgICAgICAgICgtW19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBpbml0V2l0aENs
aWVudERhdGFKU09OOnJhd0lkOmV4dGVuc2lvbnM6YXV0aGVudGljYXRvckRhdGE6c2lnbmF0dXJl
OnVzZXJIYW5kbGU6YXR0YWNobWVudDpdKToKKyAgICAgICAgKC1bX1dLQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlIGluaXRXaXRoQ2xpZW50RGF0YUpTT046cmF3SWQ6ZXh0ZW5zaW9uczph
dXRoZW50aWNhdG9yRGF0YTpzaWduYXR1cmU6dXNlckhhbmRsZTpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZS5tbToKKyAgICAgICAgKC1bX1dLQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UgaW5pdFdpdGhDbGllbnREYXRhSlNPTjpyYXdJZDpleHRlbnNpb25z
OmF0dGVzdGF0aW9uT2JqZWN0OmF0dGFjaG1lbnQ6XSk6CisgICAgICAgICgtW19XS0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGluaXRXaXRoQ2xpZW50RGF0YUpTT046cmF3SWQ6ZXh0
ZW5zaW9uczphdHRlc3RhdGlvbk9iamVjdDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25z
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3Bv
bnNlLm1tOgorICAgICAgICAoLVtfV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UgaW5pdFdpdGhDbGll
bnREYXRhSlNPTjpyYXdJZDpleHRlbnNpb25zOmF0dGFjaG1lbnQ6XSk6CisgICAgICAgICgtW19X
S0F1dGhlbnRpY2F0b3JSZXNwb25zZSBpbml0V2l0aENsaWVudERhdGFKU09OOnJhd0lkOmV4dGVu
c2lvbnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRo
ZW50aWNhdG9yUmVzcG9uc2VJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKGF1dGhlbnRpY2F0b3JB
dHRhY2htZW50VG9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KToKKyAgICAgICAgKHdrQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsIG1ha2VDcmVkZW50aWFsV2l0aENoYWxsZW5nZTpvcmlnaW46b3B0aW9uczpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlKToKKyAgICAgICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBnZXRBc3NlcnRpb25X
aXRoQ2hhbGxlbmdlOm9yaWdpbjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
bW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjpnZXRFeGlz
dGluZ0NyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpj
b250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRl
c3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN0
YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2Vp
dmVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNz
ZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlR2V0TmV4dEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGlj
YXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVn
aXN0ZXJDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6VTJm
QXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6
CisgICAgICAgICogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMjEtMDYtMDEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgV2ViUGFnZVByb3h5J3Mg
cmVsZWFzZSBsb2dnaW5nIGluIGVwaGVtZXJhbCBzZXNzaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UuY3BwCmluZGV4IDA3MzQ1YjM3YmUzMGY1NWRkZmU1MGQxYTZjN2RjMmYxOWFm
NWU5OWIuLjFmMmFjMzcyODg1MTI5OWYzM2JlMGE0MzlkZmViZjJiNDM0ZTcyMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjUgKzMyLDI1IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lk
LCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4m
JiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBzdGQ6Om9wdGlv
bmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYgZXh0ZW5zaW9ucykK
K1JlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVm
ZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmIGV4dGVuc2lvbnMsIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50IGF0dGFjaG1lbnQpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IGFkb3B0UmVmKCpu
ZXcgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3Zl
KGF1dGhlbnRpY2F0b3JEYXRhKSwgV1RGTW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKHVzZXJIYW5k
bGUpKSk7CisgICAgYXV0byByZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRh
KSwgV1RGTW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKHVzZXJIYW5kbGUpLCBhdHRhY2htZW50KSk7
CiAgICAgaWYgKGV4dGVuc2lvbnMpCiAgICAgICAgIHJlc3BvbnNlLT5zZXRFeHRlbnNpb25zKFdU
Rk1vdmUoKmV4dGVuc2lvbnMpKTsKICAgICByZXR1cm4gcmVzcG9uc2U7CiB9CiAKLVJlZjxBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZTo6Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJl
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCitSZWY8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShj
b25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhl
bnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2ht
ZW50KQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlcmhhbmRsZUJ1ZmZlcjsKICAgICBp
ZiAoIXVzZXJIYW5kbGUuaXNFbXB0eSgpKQogICAgICAgICB1c2VyaGFuZGxlQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZSh1c2VySGFuZGxlLmRhdGEoKSwgdXNlckhhbmRsZS5zaXplKCkpOwot
ICAgIHJldHVybiBjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCksIHJhd0lk
LnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRhdGEuZGF0YSgpLCBh
dXRoZW50aWNhdG9yRGF0YS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5k
YXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBXVEZNb3ZlKHVzZXJoYW5kbGVCdWZmZXIpLCBzdGQ6
Om51bGxvcHQpOworICAgIHJldHVybiBjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5k
YXRhKCksIHJhd0lkLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRh
dGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KHNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBXVEZNb3ZlKHVzZXJoYW5kbGVC
dWZmZXIpLCBzdGQ6Om51bGxvcHQsIGF0dGFjaG1lbnQpOwogfQogCi1SZWY8QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0
ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxl
LCBTdHJpbmcmJiBuYW1lLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wpCitSZWY8
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4m
JiB1c2VySGFuZGxlLCBTdHJpbmcmJiBuYW1lLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2wsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3
SWQpLCBXVEZNb3ZlKHVzZXJIYW5kbGUpLCBXVEZNb3ZlKG5hbWUpLCBhY2Nlc3NDb250cm9sKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
KFdURk1vdmUocmF3SWQpLCBXVEZNb3ZlKHVzZXJIYW5kbGUpLCBXVEZNb3ZlKG5hbWUpLCBhY2Nl
c3NDb250cm9sLCBhdHRhY2htZW50KSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpzZXRBdXRoZW50aWNhdG9yRGF0YShWZWN0b3I8dWludDhfdD4mJiBhdXRoZW50
aWNhdG9yRGF0YSkKQEAgLTU4LDE2ICs1OCwxNiBAQCB2b2lkIEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6c2V0QXV0aGVudGljYXRvckRhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aAog
ICAgIG1fYXV0aGVudGljYXRvckRhdGEgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0
b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKTsKIH0KIAotQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVm
PEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRh
dGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1
c2VySGFuZGxlKQotICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpKQor
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVu
dGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiB1c2VySGFuZGxlLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQor
ICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBhdHRhY2htZW50KQog
ICAgICwgbV9hdXRoZW50aWNhdG9yRGF0YShXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSkKICAg
ICAsIG1fc2lnbmF0dXJlKFdURk1vdmUoc2lnbmF0dXJlKSkKICAgICAsIG1fdXNlckhhbmRsZShX
VEZNb3ZlKHVzZXJIYW5kbGUpKQogewogfQogCi1BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3
SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTdHJpbmcmJiBuYW1lLCBTZWNBY2Nl
c3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2Uo
V1RGTW92ZShyYXdJZCkpCitBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJh
eUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTdHJpbmcmJiBuYW1lLCBTZWNBY2Nlc3NDb250cm9sUmVm
IGFjY2Vzc0NvbnRyb2wsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCisgICAg
OiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIGF0dGFjaG1lbnQpCiAgICAg
LCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKICAgICAsIG1fbmFtZShXVEZNb3Zl
KG5hbWUpKQogICAgICwgbV9hY2Nlc3NDb250cm9sKGFjY2Vzc0NvbnRyb2wpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UuaAppbmRleCA4MDExZmNjZDNjZDQ4MDA4ZDY5MzdlMDNjYTY5NGE3
Y2MyZDQyZTY4Li41MzdlZTA5YTM4ZTE4MmE3MmI2NTRlZTZmNDg1NTExMWYxNzIxNmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsOSArMzcsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSA6IHB1YmxpYyBB
dXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBS
ZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBz
aWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBzdGQ6Om9wdGlvbmFs
PEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRo
ZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVy
PiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgU3RyaW5nJiYgbmFtZSwg
U2VjQWNjZXNzQ29udHJvbFJlZik7CisgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1
ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGlj
YXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWdu
YXR1cmUsICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUsIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFy
cmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xS
ZWYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CiAKICAgICBBcnJheUJ1ZmZlciogYXV0aGVu
dGljYXRvckRhdGEoKSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRpY2F0b3JEYXRhLmdldCgpOyB9
CkBAIC01OSw4ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExBQ29udGV4dChMQUNvbnRl
eHQgKmNvbnRleHQpIHsgbV9sYUNvbnRleHQgPSBjb250ZXh0OyB9CiAKIHByaXZhdGU6Ci0gICAg
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFy
cmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7
Ci0gICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwg
UmVmPEFycmF5QnVmZmVyPiYmLCBTdHJpbmcmJiwgU2VjQWNjZXNzQ29udHJvbFJlZik7CisgICAg
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFy
cmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwg
QXV0aGVudGljYXRvckF0dGFjaG1lbnQpOworICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgU3RyaW5nJiYsIFNl
Y0FjY2Vzc0NvbnRyb2xSZWYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogICAgIFR5cGUg
dHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OkFzc2VydGlvbjsgfQogICAgIEF1dGhl
bnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlLmNwcAppbmRleCA5ZDJiODczNDA0ZDY0Y2Q3NmJmZTgxZWJjYzI5
Yzg1NTMwOWMwMjk1Li40ZThiNzQ5ZTRjMDA3MDlmZGEzMDFhN2FmZTVmZDk5NWU0MDc4NDUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwxOCArMzIsMTggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5
QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QpCitS
ZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlC
dWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFj
aG1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpLCBhdHRhY2htZW50
KSk7CiB9CiAKLVJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJh
d0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0KQorUmVmPEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZTo6Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFj
aG1lbnQpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRh
dGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVj
dC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSkpOworICAgIHJldHVybiBjcmVhdGUo
QXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCksIHJhd0lkLnNpemUoKSksIEFycmF5QnVm
ZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5z
aXplKCkpLCBhdHRhY2htZW50KTsKIH0KIAotQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiBy
YXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KQotICAgIDogQXV0aGVu
dGljYXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpKQorQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZl
cj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50
aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQorICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNl
KFdURk1vdmUocmF3SWQpLCBhdHRhY2htZW50KQogICAgICwgbV9hdHRlc3RhdGlvbk9iamVjdChX
VEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UuaAppbmRleCA2MGNkNmU3YTFiMDQ1NGQ0YjdkOGUxMWU1ZGUzZWMyZmFiZmZkZjVi
Li4yNjIzZWE4NTk5YzQ3MTU0N2FhYTUwOWM3YTI2OGI0YWU0OGY2YjFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIDogcHVibGljIEF1
dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwg
UmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3Rh
dGlvbk9iamVjdCk7CisgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYm
IGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gY3Jl
YXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogICAgIHZpcnR1
YWwgfkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCiAgICAg
QXJyYXlCdWZmZXIqIGF0dGVzdGF0aW9uT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hdHRlc3Rh
dGlvbk9iamVjdC5wdHIoKTsgfQogCiBwcml2YXRlOgotICAgIEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmKTsKKyAg
ICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJl
ZjxBcnJheUJ1ZmZlcj4mJiwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwogCiAgICAgVHlwZSB0
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6QXR0ZXN0YXRpb247IH0KICAgICBBdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmNwcAppbmRleCA3MzQzNmE3MjIwZjdmMWVmNzEyMWI0MTMyZWMwNGUzODA4NWVmM2E5Li5j
NGU1NjhmMTA2NTFlYzA3NGI0NTU3ZTA0Yjk3OGY5MmRlODQ3N2M2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE4NSwxMyArMTg1LDEzIEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjpjcmVhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVudERhdGFKc29u
ID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBh
Ym9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0aGVudGljYXRvclJlc3BvbnNl
RGF0YSYmIGRhdGEsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIGF1
dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNp
Z25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVudGljYXRvckF0
dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRlZCgpKSB7CiAg
ICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnRl
ZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5
Q3JlYXRlKFdURk1vdmUoZGF0YSkpKSB7CisgICAgICAgIGlmIChhdXRvIHJlc3BvbnNlID0gQXV0
aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoV1RGTW92ZShkYXRhKSwgYXR0YWNobWVudCkp
IHsKICAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRDbGllbnREYXRhSlNPTihXVEZNb3ZlKGNsaWVu
dERhdGFKc29uKSk7CiAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVibGljS2V5Q3JlZGVu
dGlhbDo6Y3JlYXRlKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkpLnB0cigpKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTI1NiwxMyArMjU2LDEzIEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1l
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrID0gW2NsaWVudERh
dGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoQXV0aGVudGljYXRvclJl
c3BvbnNlRGF0YSYmIGRhdGEsIEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgewor
ICAgIGF1dG8gY2FsbGJhY2sgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERhdGFK
c29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGFib3J0U2lnbmFsID0gV1RGTW92ZShh
Ym9ydFNpZ25hbCldIChBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRlZCgp
KSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAi
QWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoYXV0byByZXNwb25zZSA9IEF1dGhlbnRpY2F0b3JSZXNwb25z
ZTo6dHJ5Q3JlYXRlKFdURk1vdmUoZGF0YSkpKSB7CisgICAgICAgIGlmIChhdXRvIHJlc3BvbnNl
ID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoV1RGTW92ZShkYXRhKSwgYXR0YWNo
bWVudCkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlLT5zZXRDbGllbnREYXRhSlNPTihXVEZNb3Zl
KGNsaWVudERhdGFKc29uKSk7CiAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVibGljS2V5
Q3JlZGVudGlhbDo6Y3JlYXRlKHJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCkpLnB0cigpKTsKICAg
ICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oCmluZGV4IGFm
ZjBjNmFmMWNjYThjZGI3NjdiYmZhN2UxMzQ4MGU0NWM4NDNlYWEuLjY0NjFhZTk2NGZhYmQ4MjJk
ZmIxMDA4NzA1NjgxYzZlNDU1N2I0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNywxMSArMzcsMTMgQEAgY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKIAorZW51bSBjbGFzcyBBdXRoZW50aWNhdG9yQXR0YWNobWVu
dDsKKwogc3RydWN0IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE7CiBzdHJ1Y3QgUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnM7CiAKLXVzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYmLCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhJiYpPjsKK3VzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YSYmLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYmKT47CiB1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT47CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcAppbmRleCBkNGI3MTI5M2NmM2VkZTk1MzQx
MTM2Yzk1OTM2NGQxNjAyN2Y2ZWZlLi43YTQxNjY5ZGQ2ZTdhZjQwM2QxZGUyMjY5N2M4NDQ1MDky
OGM1YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiBBdXRoZW50aWNhdG9yUmVz
cG9uc2U6OnRyeUNyZWF0ZShBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYgZGF0YSkKK1JlZlB0
cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6dHJ5Q3JlYXRl
KEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmJiBkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVu
dCBhdHRhY2htZW50KQogewogICAgIGlmICghZGF0YS5yYXdJZCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC00MywxMyArNDMsMTMgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4g
QXV0aGVudGljYXRvclJlc3BvbnNlOjp0cnlDcmVhdGUoQXV0aGVudGljYXRvclJlc3AKICAgICAg
ICAgaWYgKCFkYXRhLmF0dGVzdGF0aW9uT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpj
cmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF0dGVzdGF0aW9uT2JqZWN0
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXR1cm4gQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLnJhd0lkLnJlbGVhc2VOb25OdWxsKCksIGRhdGEuYXR0
ZXN0YXRpb25PYmplY3QucmVsZWFzZU5vbk51bGwoKSwgYXR0YWNobWVudCk7CiAgICAgfQogCiAg
ICAgaWYgKCFkYXRhLmF1dGhlbnRpY2F0b3JEYXRhIHx8ICFkYXRhLnNpZ25hdHVyZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpjcmVhdGUoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF1dGhlbnRp
Y2F0b3JEYXRhLnJlbGVhc2VOb25OdWxsKCksIGRhdGEuc2lnbmF0dXJlLnJlbGVhc2VOb25OdWxs
KCksIFdURk1vdmUoZGF0YS51c2VySGFuZGxlKSwgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cyB7IGRhdGEuYXBwaWQgfSk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5h
dXRoZW50aWNhdG9yRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLnNpZ25hdHVyZS5yZWxlYXNl
Tm9uTnVsbCgpLCBXVEZNb3ZlKGRhdGEudXNlckhhbmRsZSksIEF1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudE91dHB1dHMgeyBkYXRhLmFwcGlkIH0sIGF0dGFjaG1lbnQpOwogfQogCiBBdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhlbnRpY2F0b3JSZXNwb25zZTo6ZGF0YSgpIGNvbnN0
CkBAIC04NSw4ICs4NSwxNCBAQCBBcnJheUJ1ZmZlciogQXV0aGVudGljYXRvclJlc3BvbnNlOjpj
bGllbnREYXRhSlNPTigpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpZW50RGF0YUpTT04uZ2V0KCk7
CiB9CiAKLUF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXV0aGVudGljYXRvclJlc3BvbnNlKFJlZjxB
cnJheUJ1ZmZlcj4mJiByYXdJZCkKK0F1dGhlbnRpY2F0b3JBdHRhY2htZW50IEF1dGhlbnRpY2F0
b3JSZXNwb25zZTo6YXR0YWNobWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXR0YWNobWVu
dDsKK30KKworQXV0aGVudGljYXRvclJlc3BvbnNlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2UoUmVm
PEFycmF5QnVmZmVyPiYmIHJhd0lkLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50
KQogICAgIDogbV9yYXdJZChXVEZNb3ZlKHJhd0lkKSkKKyAgICAsIG1fYXR0YWNobWVudChhdHRh
Y2htZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaAppbmRleCA1YTMzZTcyNTA5OWIxYmVlYTNjYjkx
ODlmMWQxMmU0NWJhOTE0OGFkLi5iMDY3MWVlYjExMWZlNWRhYjBiNDMwNDkyZDA5YzFmYjQ1NWQ1
MmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvclJlc3BvbnNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2VudW0gY2xhc3MgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ7CisKIHN0cnVjdCBBdXRoZW50
aWNhdG9yUmVzcG9uc2VEYXRhOwogCiBjbGFzcyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IHsKQEAgLTQzLDcgKzQ1LDcgQEAg
cHVibGljOgogICAgICAgICBBdHRlc3RhdGlvbgogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmUHRy
PEF1dGhlbnRpY2F0b3JSZXNwb25zZT4gdHJ5Q3JlYXRlKEF1dGhlbnRpY2F0b3JSZXNwb25zZURh
dGEmJik7CisgICAgc3RhdGljIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IHRyeUNyZWF0
ZShBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiYsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsK
ICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CiAKICAgICB2
aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKQEAgLTU0LDE0ICs1NiwxNiBAQCBwdWJsaWM6
CiAgICAgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBleHRlbnNpb25zKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRDbGllbnREYXRhSlNPTihSZWY8QXJyYXlCdWZmZXI+JiYpOwog
ICAgIEFycmF5QnVmZmVyKiBjbGllbnREYXRhSlNPTigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQoKSBjb25zdDsKIAogcHJvdGVj
dGVkOgotICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYpOworICAg
IEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50KTsKIAogcHJpdmF0ZToKICAgICBSZWY8QXJyYXlCdWZmZXI+IG1fcmF3SWQ7CiAg
ICAgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cyBtX2V4dGVuc2lvbnM7CiAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2NsaWVudERhdGFKU09OOworICAgIEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50IG1fYXR0YWNobWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgKaW5kZXggYmI5ZmQ0NjQ5NjNi
NzFlZTI1ZTM2ZWE4MGZlNzA1MDFhYjIyYmM5OS4uNWNjYjQ0MjczMjg0ZDc0ZjJjM2Y5YTI3MmJh
NWQ2YTM5MTgzMWYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogI2luY2x1ZGUgIkF0dGVz
dGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRJbnB1dHMuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXR0YWNobWVu
dC5oIgogI2luY2x1ZGUgIkJ1ZmZlclNvdXJjZS5oIgogI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRl
bnRpYWxEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCIK
QEAgLTM4LDYgKzM3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIGNsYXNzIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50OworCiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyB7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBzdHJ1Y3QgRW50aXR5IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VS
ZXNwb25zZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IDdjYjJiMzI1YTFjNjdmMGJmNGRk
Y2NlYWQ0ZWQ3MDg5MmM5OTM0MzcuLjkzMmZmMDgyY2U4NzdiZWYwNDU5MTQ2MDRlODQ2ZWQxNjcy
OWU2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9E
ZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTk1LDcgKzk1LDcg
QEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBnZXRDcmVkZW50aWFsSWQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSkKIAogLy8gRGVjb2RlcyBieXRlIGFycmF5IHJlc3Bv
bnNlIGZyb20gYXV0aGVudGljYXRvciB0byBDQk9SIHZhbHVlIG9iamVjdCBhbmQKIC8vIGNoZWNr
cyBmb3IgY29ycmVjdCBlbmNvZGluZyBmb3JtYXQuCi1SZWZQdHI8QXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGluQnVmZmVyLCBjb25zdCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJl
bmNlJiBhdHRlc3RhdGlvbikKK1JlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZT4gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aW5CdWZmZXIsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIGNv
bnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uKQogewogICAg
IGF1dG8gZGVjb2RlZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFwKGluQnVmZmVyKTsKICAgICBpZiAo
IWRlY29kZWRNYXApCkBAIC0xMzUsMTAgKzEzNSwxMCBAQCBSZWZQdHI8QXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBW
ZQogICAgICAgICBhdHRlc3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKENC
T1IoV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdE1hcCkpKTsKICAgICB9CiAKLSAgICByZXR1cm4g
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsICph
dHRlc3RhdGlvbk9iamVjdCk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCAqYXR0ZXN0YXRpb25PYmplY3QsIGF0dGFjaG1l
bnQpOwogfQogCi1SZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkQ1RB
UEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCitS
ZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlv
blJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIsIFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7CiAgICAgYXV0byBkZWNvZGVkTWFwID0g
ZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2RlZE1hcCkKQEAgLTE3
Miw3ICsxNzIsNyBAQCBSZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFk
Q1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IFZlY3RvcgogICAgICAgICBpZiAoaXRyID09
IHVzZXIuZW5kKCkgfHwgIWl0ci0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGF1dG8mIHVzZXJIYW5kbGUgPSBpdHItPnNlY29uZC5n
ZXRCeXRlU3RyaW5nKCk7Ci0gICAgICAgIHJlc3BvbnNlID0gQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdXRoRGF0YSwgc2lnbmF0dXJlLCB1c2Vy
SGFuZGxlKTsKKyAgICAgICAgcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHVzZXJIYW5kbGUs
IGF0dGFjaG1lbnQpOwogCiAgICAgICAgIGl0ciA9IHVzZXIuZmluZChDQk9SKGtFbnRpdHlOYW1l
TWFwS2V5KSk7CiAgICAgICAgIGlmIChpdHIgIT0gdXNlci5lbmQoKSkgewpAQCAtMTg4LDcgKzE4
OCw3IEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRDVEFQR2V0
QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yCiAgICAgICAgICAgICByZXNwb25zZS0+c2V0
RGlzcGxheU5hbWUoaXRyLT5zZWNvbmQuZ2V0U3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgcmVzcG9uc2UgPSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6
OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHsgfSk7CisgICAgICAg
IHJlc3BvbnNlID0gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVu
dGlhbElkLCBhdXRoRGF0YSwgc2lnbmF0dXJlLCB7IH0sIGF0dGFjaG1lbnQpOwogICAgIH0KIAog
ICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVy
dGVyLmgKaW5kZXggZTRjNmQ1ZTI0YWFkY2RjNTgxZGNkMzY3NzkzMmJlZTYwOTEzZGI1OC4uYTJl
MjhhODE4ZmZjOGE5ZjAzYWI4MjllODlhYjFkNDQzMWRkYmFiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNl
Q29udmVydGVyLmgKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQ2hyb21p
dW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC01MiwxMiArNTIsMTIgQEAgV0VCQ09SRV9FWFBPUlQgQ3RhcERldmlj
ZVJlc3BvbnNlQ29kZSBnZXRSZXNwb25zZUNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAv
LyBhbmQgY29udmVydHMgcmVzcG9uc2UgdG8gQXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsUmVz
cG9uc2Ugb2JqZWN0IHdpdGgKIC8vIENCT1IgbWFwIGtleXMgdGhhdCBjb25mb3JtIHRvIGZvcm1h
dCBvZiBhdHRlc3RhdGlvbiBvYmplY3QgZGVmaW5lZCBieSB0aGUKIC8vIFdlYkF1dGhOIHNwZWMg
OiBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXV0aG4vI2ZpZy1hdHRTdHJ1Y3RzCi1XRUJDT1JF
X0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+
IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBj
b25zdCBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlv
biA9IFdlYkNvcmU6OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7CitX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZWN0b3I8dWludDhf
dD4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgY29uc3QgV2ViQ29yZTo6QXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgPSBXZWJDb3JlOjpBdHRlc3RhdGlvbkNvbnZl
eWFuY2VQcmVmZXJlbmNlOjpEaXJlY3QpOwogCiAvLyBEZS1zZXJpYWxpemVzIENCT1IgZW5jb2Rl
ZCByZXNwb25zZSB0byBBdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uIC8KIC8vIEF1dGhlbnRpY2F0
b3JHZXROZXh0QXNzZXJ0aW9uIHJlcXVlc3QgdG8gQXV0aGVudGljYXRvckdldEFzc2VydGlvblJl
c3BvbnNlCiAvLyBvYmplY3QuCi1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25z
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVu
dCk7CiAKIC8vIERlLXNlcmlhbGl6ZXMgQ0JPUiBlbmNvZGVkIHJlc3BvbnNlIHRvIEF1dGhlbnRp
Y2F0b3JHZXRJbmZvIHJlcXVlc3QgdG8KIC8vIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Ug
b2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKaW5kZXggMTM0NTQxZDFlZjU5NTQyOWYy
NTEyODIyZjE5M2Q1MTUzZDRkMGI4NS4uMWE3ZDEwNWJiODUyNWQ1NWRlOTNiZDUzOTA2YTgxMzBh
NjYxMzAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLy8g
Q29weXJpZ2h0IDIwMTggVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogLy8KIC8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMTM3LDcgKzEzNyw3IEBA
IHN0YXRpYyBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGNyZWF0ZUZpZG9BdHRlc3RhdGlvblN0
YXRlbWVudEZyb21VMmZSZWdpc3RlclJlCiAKIH0gLy8gbmFtZXNwYWNlCiAKLVJlZlB0cjxBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29u
c3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIGNvbnN0IEF0
dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmIGF0dGVzdGF0aW9uKQorUmVmUHRyPEF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25z
dCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJl
ZmVyZW5jZSYgYXR0ZXN0YXRpb24pCiB7CiAgICAgYXV0byBwdWJsaWNLZXkgPSBleHRyYWN0RUNQ
dWJsaWNLZXlGcm9tVTJmUmVnaXN0cmF0aW9uUmVzcG9uc2UodTJmRGF0YSk7CiAgICAgaWYgKHB1
YmxpY0tleS5pc0VtcHR5KCkpCkBAIC0xNjAsMTAgKzE2MCwxMCBAQCBSZWZQdHI8QXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0
cmluZyYgcgogCiAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25P
YmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJmaWRvLXUyZiIsIFdURk1vdmUoZmlkb0F0dGVzdGF0
aW9uU3RhdGVtZW50KSwgYXR0ZXN0YXRpb24pOwogCi0gICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVj
dCk7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUo
Y3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgYXR0YWNobWVudCk7CiB9CiAKLVJlZlB0
cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRVMmZTaWduUmVzcG9uc2UoY29u
c3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKQorUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEs
IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7CiAgICAgaWYgKGtleUhhbmRs
ZS5pc0VtcHR5KCkgfHwgdTJmRGF0YS5zaXplKCkgPD0gc2lnbmF0dXJlSW5kZXgpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMTc4LDcgKzE3OCw3IEBAIFJlZlB0cjxBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRVMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElk
LCBjCiAKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byByZW1vdmUgdGhlIG5lZWQgb2YgY29u
c3RydWN0aW5nIGEgdmVjdG9yIGhlcmUuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZSB7
IHUyZkRhdGEuZGF0YSgpICsgc2lnbmF0dXJlSW5kZXgsIHUyZkRhdGEuc2l6ZSgpIC0gc2lnbmF0
dXJlSW5kZXggfTsKLSAgICByZXR1cm4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpj
cmVhdGUoa2V5SGFuZGxlLCBhdXRoRGF0YSwgc2lnbmF0dXJlLCB7IH0pOworICAgIHJldHVybiBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShrZXlIYW5kbGUsIGF1dGhEYXRh
LCBzaWduYXR1cmUsIHsgfSwgYXR0YWNobWVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIGZpZG8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNw
b25zZUNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmgKaW5kZXggYzRmMjAxZmMwNTNlNzg1ZTFkOTcxYWU1NjVlY2Yz
ZjU1ZTFlMTY1Mi4uZWMzMzQyOTQ4ZjFkNWYzNWIxMTkwMjQyZThkMTFiODRkN2RjMWI2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNl
Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmgKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxOCBU
aGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMp
IDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00MCwxMSArNDAsMTEgQEAgbmFtZXNwYWNlIGZpZG8g
ewogCiAvLyBDb252ZXJ0cyBhIFUyRiByZWdpc3RlciByZXNwb25zZSB0byBXZWJBdXRoTiBtYWtl
Q3JlZGVudGlhbCByZXNwb25zZS4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9m
aWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2Nv
bC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbC1p
bnRlcm9wZXJhYmlsaXR5Ci1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0
cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBjb25zdCBXZWJDb3Jl
OjpBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJiBhdHRlc3RhdGlvbiA9IFdlYkNvcmU6
OkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6OkRpcmVjdCk7CitXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRV
MmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiB1MmZEYXRhLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgY29uc3QgV2Vi
Q29yZTo6QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYgPSBXZWJDb3JlOjpBdHRlc3Rh
dGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpEaXJlY3QpOwogCiAvLyBDb252ZXJ0cyBhIFUyRiBh
dXRoZW50aWNhdGlvbiByZXNwb25zZSB0byBXZWJBdXRoTiBnZXRBc3NlcnRpb24gcmVzcG9uc2Uu
CiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3
L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5o
dG1sI3UyZi1hdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uLWludGVyb3BlcmFiaWxpdHkKLVdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+
IHJlYWRVMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKTsKK1dFQkNP
UkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+
IHJlYWRVMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CiAKIH0gLy8gbmFtZXNwYWNlIGZpZG8KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UubW0KaW5kZXggMzg3ZjIyNGI1ZmUy
ZGM5YjFhNTE1YmVkOTJkZmJiYTFhNTRmMTNmMC4uNDYxOGJlMGQyMmFmMjdiZTlmZjYxMGNkNjVk
OTc4ODI3ZGE2MzQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDkgKzMyLDkgQEAKIAogQGltcGxlbWVudGF0aW9uIF9XS0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjoo
TlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6
KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4
dGVuc2lvbnMgYXV0aGVudGljYXRvckRhdGE6KE5TRGF0YSAqKWF1dGhlbnRpY2F0b3JEYXRhIHNp
Z25hdHVyZTooTlNEYXRhICopc2lnbmF0dXJlIHVzZXJIYW5kbGU6KE5TRGF0YSAqKXVzZXJIYW5k
bGUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGll
bnREYXRhSlNPTiByYXdJZDooTlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9X
S0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdXRo
ZW50aWNhdG9yRGF0YTooTlNEYXRhICopYXV0aGVudGljYXRvckRhdGEgc2lnbmF0dXJlOihOU0Rh
dGEgKilzaWduYXR1cmUgdXNlckhhbmRsZTooTlNEYXRhICopdXNlckhhbmRsZSBhdHRhY2htZW50
OihfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudClhdHRhY2htZW50CiB7Ci0gICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0V2l0aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOnJh
d0lkIGV4dGVuc2lvbnM6V1RGTW92ZShleHRlbnNpb25zKV0pKQorICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpyYXdJZCBl
eHRlbnNpb25zOldURk1vdmUoZXh0ZW5zaW9ucykgYXR0YWNobWVudDphdHRhY2htZW50XSkpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKICAgICBfYXV0aGVudGljYXRvckRhdGEgPSBhdXRoZW50aWNh
dG9yRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZUlu
dGVybmFsLmgKaW5kZXggZWVmNmExNDdhM2IwNjNmNGQzOTgwNzhmYTU4YWUzODI2NzY5N2NjYS4u
ZjQ4OTM4OTVmNjI0ODhlMjQxMzZlN2ZmNDhlYzE3MTYzMjkwZDE4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZUludGVybmFsLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNyArMzQsNyBA
QCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAaW50ZXJmYWNlIF9XS0F1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRh
SlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVu
c2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRz
PiYmKWV4dGVuc2lvbnMgYXV0aGVudGljYXRvckRhdGE6KE5TRGF0YSAqKWF1dGhlbnRpY2F0b3JE
YXRhIHNpZ25hdHVyZTooTlNEYXRhICopc2lnbmF0dXJlIHVzZXJIYW5kbGU6KE5TRGF0YSAqKXVz
ZXJIYW5kbGU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRh
ICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFp
blB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lv
bnMgYXV0aGVudGljYXRvckRhdGE6KE5TRGF0YSAqKWF1dGhlbnRpY2F0b3JEYXRhIHNpZ25hdHVy
ZTooTlNEYXRhICopc2lnbmF0dXJlIHVzZXJIYW5kbGU6KE5TRGF0YSAqKXVzZXJIYW5kbGUgYXR0
YWNobWVudDooX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQpYXR0YWNobWVudDsKIAogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0KaW5kZXggM2Ix
OTFmZWRmNTc5OTg2NGFjMWZhOTUyN2I0Zjc3NTQzYzZlOTE1MS4uYmRjMGUzNWI5MjQ3ODk3OGRi
YjA0Zjg2MTc1NjkyNjgyNTNkYTY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMiw5ICszMiw5IEBACiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhD
bGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJh
d0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVz
dGF0aW9uT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDbGllbnREYXRhSlNPTjooTlNE
YXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJl
dGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKWV4dGVu
c2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0dGVzdGF0aW9uT2JqZWN0IGF0dGFj
aG1lbnQ6KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50KWF0dGFjaG1lbnQKIHsKLSAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRXaXRoQ2xpZW50RGF0YUpTT046Y2xpZW50RGF0YUpTT04gcmF3
SWQ6cmF3SWQgZXh0ZW5zaW9uczpXVEZNb3ZlKGV4dGVuc2lvbnMpXSkpCisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0V2l0aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOnJh
d0lkIGV4dGVuc2lvbnM6V1RGTW92ZShleHRlbnNpb25zKSBhdHRhY2htZW50OmF0dGFjaG1lbnRd
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIF9hdHRlc3RhdGlvbk9iamVjdCA9IGF0dGVz
dGF0aW9uT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZUludGVybmFsLmgKaW5kZXggMDZiMTgwN2Q4NWVkMjljNjY1Njg3YmQ2ZjM5MTQ3MjRh
Yjg2YjM1ZS4uYWFmYmYwYmQ0M2ZjODBlOTQxMGRlMDgyM2JmNDE1OGJlN2RhNmNiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VJbnRlcm5hbC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM0LDcgKzM0LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGludGVyZmFjZSBfV0tB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0
YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAq
KWF0dGVzdGF0aW9uT2JqZWN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpT
T046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lkOihOU0RhdGEgKilyYXdJZCBleHRlbnNp
b25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4m
JilleHRlbnNpb25zIGF0dGVzdGF0aW9uT2JqZWN0OihOU0RhdGEgKilhdHRlc3RhdGlvbk9iamVj
dCBhdHRhY2htZW50OihfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudClhdHRhY2htZW50OwogCiBA
ZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRoZW50aWNhdG9yUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UuaAppbmRleCAxMWVkZDk0NDQ5NDdmZTM1MzMwZjEz
NDM5NmYyZGVjMjg1ODlmZmNhLi42NWFiZTVlNzFjMGZjYWQ5NzVmM2ZhZmQzMGQzZDBhNzU1ZGUy
Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
aGVudGljYXRvclJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dL
QXV0aGVudGljYXRvckF0dGFjaG1lbnQuaD4KIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CiAKQEAgLTM2LDYgKzM3LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIFdLX0NM
QVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQogQGludGVy
ZmFjZSBfV0tBdXRoZW50aWNhdG9yUmVzcG9uc2UgOiBOU09iamVjdAogCitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQ7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TRGF0YSAqY2xpZW50RGF0YUpTT047
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TRGF0YSAqcmF3SWQ7CiBAcHJvcGVy
dHkgKG51bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5LCBzdHJvbmcpIF9XS0F1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMgKmV4dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNw
b25zZS5tbQppbmRleCA4OWQwNjE3ZWVkNzRiYjM0NDZjMWQwOWM2NjYwYzEzZTc1ODc0MzA3Li5i
NjgwZWFiN2Q4MGY0NGE4MjFjNWUxNWVlODMyMWUzNDE4NTQyMjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRoZW50aWNhdG9y
UmVzcG9uc2UubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzMsNyArMzMsNyBAQAogICAgIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiBfZXh0ZW5zaW9uczsKIH0KIAotLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0YSAqKWNsaWVudERhdGFKU09OIHJhd0lk
OihOU0RhdGEgKilyYXdJZCBleHRlbnNpb25zOihSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJilleHRlbnNpb25zCistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gcmF3SWQ6KE5TRGF0
YSAqKXJhd0lkIGV4dGVuc2lvbnM6KFJldGFpblB0cjxfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRPdXRwdXRzPiYmKWV4dGVuc2lvbnMgYXR0YWNobWVudDooX1dLQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQpYXR0YWNobWVudAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNDEsNiArNDEsOCBAQAogICAgIF9jbGllbnREYXRh
SlNPTiA9IGNsaWVudERhdGFKU09OOwogICAgIF9yYXdJZCA9IHJhd0lkOwogICAgIF9leHRlbnNp
b25zID0gZXh0ZW5zaW9uczsKKyAgICBfYXR0YWNobWVudCA9IGF0dGFjaG1lbnQ7CisKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F1dGhlbnRpY2F0b3JSZXNwb25zZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlSW50ZXJuYWwuaApp
bmRleCBiMGZhZWZiZjQ3ZmEzM2U4MTk0M2IzNzA2MjQwODg5NTU0NGM5NzE3Li4zNmEyMjUzMjdj
MGI2NmI3Y2I0ZjIwN2JjNWFlYzJjYzU4OTZmN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJlc3BvbnNlSW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0aGVudGljYXRvclJl
c3BvbnNlSW50ZXJuYWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAK
IEBpbnRlcmZhY2UgX1dLQXV0aGVudGljYXRvclJlc3BvbnNlICgpCiAKLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDoo
TlNEYXRhICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9uczsKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiByYXdJZDooTlNEYXRh
ICopcmF3SWQgZXh0ZW5zaW9uczooUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9u
c0NsaWVudE91dHB1dHM+JiYpZXh0ZW5zaW9ucyBhdHRhY2htZW50OihfV0tBdXRoZW50aWNhdG9y
QXR0YWNobWVudClhdHRhY2htZW50OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KaW5kZXggYzAxMTgyMGRkZGYwY2IyNzgzMWRkYWYyYzhlZTIzZGQ4Y2I2OWE1YS4uYjRlOWMz
NDg4ZDQyMGRjNTBmNDQ0MmM0M2IxODMzZWFkZWM5OGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIl9XS1B1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucy5oIgogI2ltcG9ydCAiX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlbHlp
bmdQYXJ0eUVudGl0eS5oIgogI2ltcG9ydCAiX1dLUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRp
dHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRvckF0dGFjaG1lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvQXV0aGVudGljYXRvclJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1
dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0JPUlJlYWRlci5o
PgpAQCAtNDUzLDkgKzQ1NCwxOSBAQCBzdGF0aWMgV2ViQ29yZTo6QXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50SW5wdXRzIGF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaQogfQogCiAjaWYg
RU5BQkxFKFdFQl9BVVRITikKLXN0YXRpYyBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYgZGF0YSwgTlNEYXRhICpjbGllbnRE
YXRhSlNPTikKK3N0YXRpYyBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdXRoZW50aWNhdG9y
QXR0YWNobWVudFRvV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXR0YWNobWVudCBhdHRhY2htZW50KQogewotICAgIHJldHVybiBhZG9wdE5TKFtbX1dLQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoQ2xpZW50RGF0YUpT
T046Y2xpZW50RGF0YUpTT04gcmF3SWQ6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEucmF3SWQt
PmRhdGEoKSBsZW5ndGg6ZGF0YS5yYXdJZC0+Ynl0ZUxlbmd0aCgpXSBleHRlbnNpb25zOm5pbCBh
dHRlc3RhdGlvbk9iamVjdDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5hdHRlc3RhdGlvbk9i
amVjdC0+ZGF0YSgpIGxlbmd0aDpkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCld
XSk7CisgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm06CisgICAgICAgIHJldHVybiBfV0tBdXRoZW50aWNh
dG9yQXR0YWNobWVudFBsYXRmb3JtOworICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0
dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm06CisgICAgICAgIHJldHVybiBfV0tBdXRoZW50aWNhdG9y
QXR0YWNobWVudENyb3NzUGxhdGZvcm07CisgICAgfQorfQorCitzdGF0aWMgUmV0YWluUHRyPF9X
S0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiB3a0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmIGRh
dGEsIE5TRGF0YSAqY2xpZW50RGF0YUpTT04sIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50IGF0dGFjaG1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGllbnREYXRhSlNPTjpjbGllbnRE
YXRhSlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5yYXdJZC0+ZGF0YSgpIGxl
bmd0aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lvbnM6bmlsIGF0dGVzdGF0aW9u
T2JqZWN0OltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmF0dGVzdGF0aW9uT2JqZWN0LT5kYXRh
KCkgbGVuZ3RoOmRhdGEuYXR0ZXN0YXRpb25PYmplY3QtPmJ5dGVMZW5ndGgoKV0gYXR0YWNobWVu
dDogYXV0aGVudGljYXRvckF0dGFjaG1lbnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0
YWNobWVudCldKTsKIH0KICNlbmRpZgogCkBAIC00NjYsNyArNDc3LDcgQEAgc3RhdGljIFJldGFp
blB0cjxfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb24KICAgICBhdXRvIGhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNs
aWVudERhdGFKU09OLmdldCgpKTsKICAgICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoaGFuZGxlciksIGNsaWVudERhdGFKU09OID0gV1RGTW92ZShjbGllbnREYXRhSlNP
TildIChWYXJpYW50PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2U+LCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIFdURjo6c3dpdGNo
T24ocmVzdWx0LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZT4m
IHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICBoYW5kbGVyKHdrQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UocmVzcG9uc2UtPmRhdGEoKSwgY2xpZW50RGF0YUpTT04uZ2V0KCkpLmdldCgp
LCBuaWwpOworICAgICAgICAgICAgaGFuZGxlcih3a0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlKHJlc3BvbnNlLT5kYXRhKCksIGNsaWVudERhdGFKU09OLmdldCgpLCByZXNwb25zZS0+
YXR0YWNobWVudCgpKS5nZXQoKSwgbmlsKTsKICAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6
OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgewogICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtO
U0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24g
dXNlckluZm86bmlsXSk7CiAgICAgICAgIH0pOwpAQCAtNDk1LDcgKzUwNiw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8X1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uCiB9CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotc3RhdGljIFJldGFp
blB0cjxfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEm
IGRhdGEsIE5TRGF0YSAqY2xpZW50RGF0YUpTT04pCitzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSYgZGF0YSwgTlNEYXRh
ICpjbGllbnREYXRhSlNPTiwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNo
bWVudCkKIHsKICAgICBSZXRhaW5QdHI8X1dLQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50
T3V0cHV0cz4gZXh0ZW5zaW9uczsKICAgICBpZiAoZGF0YS5hcHBpZCkKQEAgLTUwNSw3ICs1MTYs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4g
d2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcAogICAgIGlmIChkYXRhLnVzZXJIYW5kbGUpCiAg
ICAgICAgIHVzZXJIYW5kbGUgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS51c2VySGFuZGxl
LT5kYXRhKCkgbGVuZ3RoOmRhdGEudXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpXTsKIAotICAgIHJl
dHVybiBhZG9wdE5TKFtbX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aENsaWVudERhdGFKU09OOmNsaWVudERhdGFKU09OIHJhd0lkOltOU0RhdGEgZGF0YVdp
dGhCeXRlczpkYXRhLnJhd0lkLT5kYXRhKCkgbGVuZ3RoOmRhdGEucmF3SWQtPmJ5dGVMZW5ndGgo
KV0gZXh0ZW5zaW9uczpXVEZNb3ZlKGV4dGVuc2lvbnMpIGF1dGhlbnRpY2F0b3JEYXRhOltOU0Rh
dGEgZGF0YVdpdGhCeXRlczpkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCkgbGVuZ3RoOmRh
dGEuYXV0aGVudGljYXRvckRhdGEtPmJ5dGVMZW5ndGgoKV0gc2lnbmF0dXJlOltOU0RhdGEgZGF0
YVdpdGhCeXRlczpkYXRhLnNpZ25hdHVyZS0+ZGF0YSgpIGxlbmd0aDpkYXRhLnNpZ25hdHVyZS0+
Ynl0ZUxlbmd0aCgpXSB1c2VySGFuZGxlOnVzZXJIYW5kbGVdKTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW19XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSBhbGxvY10gaW5pdFdpdGhDbGll
bnREYXRhSlNPTjpjbGllbnREYXRhSlNPTiByYXdJZDpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0
YS5yYXdJZC0+ZGF0YSgpIGxlbmd0aDpkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCldIGV4dGVuc2lv
bnM6V1RGTW92ZShleHRlbnNpb25zKSBhdXRoZW50aWNhdG9yRGF0YTpbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS0+ZGF0YSgpIGxlbmd0aDpkYXRhLmF1dGhlbnRp
Y2F0b3JEYXRhLT5ieXRlTGVuZ3RoKCldIHNpZ25hdHVyZTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ZGF0YS5zaWduYXR1cmUtPmRhdGEoKSBsZW5ndGg6ZGF0YS5zaWduYXR1cmUtPmJ5dGVMZW5ndGgo
KV0gdXNlckhhbmRsZTp1c2VySGFuZGxlIGF0dGFjaG1lbnQ6YXV0aGVudGljYXRvckF0dGFjaG1l
bnRUb1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQoYXR0YWNobWVudCldKTsKIH0KICNlbmRpZgog
CkBAIC01MTYsNyArNTI3LDcgQEAgc3RhdGljIFJldGFpblB0cjxfV0tBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U+IHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3AKICAgICBhdXRvIGhh
c2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKU09OLmdldCgpKTsKICAg
ICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoaGFuZGxlciksIGNsaWVu
dERhdGFKU09OID0gV1RGTW92ZShjbGllbnREYXRhSlNPTildIChWYXJpYW50PFJlZjxXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yUmVzcG9uc2U+LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgUmVm
PFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZT4mIHJlc3BvbnNlKSB7Ci0gICAgICAgICAg
ICBoYW5kbGVyKHdrQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKHJlc3BvbnNlLT5kYXRh
KCksIGNsaWVudERhdGFKU09OLmdldCgpKS5nZXQoKSwgbmlsKTsKKyAgICAgICAgICAgIGhhbmRs
ZXIod2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UocmVzcG9uc2UtPmRhdGEoKSwgY2xp
ZW50RGF0YUpTT04uZ2V0KCksIHJlc3BvbnNlLT5hdHRhY2htZW50KCkpLmdldCgpLCBuaWwpOwog
ICAgICAgICB9LCBbJl0oY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7
CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKICAgICAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggNDYyM2JhODM1ZWFkOWM5
Yzk3MTQ1ZmMyYjExZGFmYThlYzEwNTk4NS4uYjk0OGVmYjBlZmU4ZGVhYWQzZGY0YTViMTNkOTdk
YWM2YWVkMzlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yQXR0YWNobWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvclRyYW5zcG9ydC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGlj
YXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCBjOGEzNmMxMjM5OTE4Zjg0NzRhZGMyMjRlYTRk
M2Q5ZjIxYTljODQ1Li5jYzFkYjFhY2QzMTViOWEyOGM2YjU3NjEwMDI1ZTRiMzViMGVlN2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2ltcG9ydCA8U2VjdXJpdHkvU2VjSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0JPUlJlYWRlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9DQk9SV3JpdGVyLmg+CkBAIC0xNjcsNyArMTY4LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4gZ2V0RXhpc3Rp
bmdDcmUKICAgICAgICAgfQogICAgICAgICBhdXRvJiB1c2VybmFtZSA9IGl0LT5zZWNvbmQuZ2V0
U3RyaW5nKCk7CiAKLSAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSh0b0FycmF5QnVmZmVyKGF0dHJpYnV0ZXNbKGlkKWtT
ZWNBdHRyQXBwbGljYXRpb25MYWJlbF0pLCB0b0FycmF5QnVmZmVyKHVzZXJIYW5kbGUpLCBTdHJp
bmcodXNlcm5hbWUpLCAoX19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVzWyhp
ZClrU2VjQXR0ckFjY2Vzc0NvbnRyb2xdKSk7CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBl
bmQoQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUodG9BcnJheUJ1ZmZlcihh
dHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwgdG9BcnJheUJ1ZmZlcih1
c2VySGFuZGxlKSwgU3RyaW5nKHVzZXJuYW1lKSwgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xS
ZWYpYXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSwgQXV0aGVudGljYXRvckF0
dGFjaG1lbnQ6OlBsYXRmb3JtKSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00
MjYsNyArNDI3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRl
bnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ28KIAogICAgICAgICBhdXRvIGF1
dGhEYXRhID0gYnVpbGRBdXRoRGF0YShjcmVhdGlvbk9wdGlvbnMucnAuaWQsIGZsYWdzLCBjb3Vu
dGVyLCBidWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExl
bmd0aCwgMCksIGNyZWRlbnRpYWxJZCwgY29zZVB1YmxpY0tleSkpOwogICAgICAgICBhdXRvIGF0
dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRh
KSwgIiIsIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7Ci0gICAg
ICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVh
dGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCkpOworICAgICAgICByZWNlaXZlUmVz
cG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJ
ZCwgYXR0ZXN0YXRpb25PYmplY3QsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NzAsNyArNDcxLDcgQEAgdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFZlY3Rv
cjx1aW50OF90PiYmIGMKICAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3Rh
dGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgImFwcGxlIiwgV1RGTW92ZShhdHRlc3RhdGlv
blN0YXRlbWVudE1hcCksIGNyZWF0aW9uT3B0aW9ucy5hdHRlc3RhdGlvbik7CiAKICAgICBkZWxl
dGVEdXBsaWNhdGVDcmVkZW50aWFsKCk7Ci0gICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2Jq
ZWN0KSk7CisgICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LCBBdXRoZW50aWNhdG9y
QXR0YWNobWVudDo6UGxhdGZvcm0pKTsKIH0KIAogdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Omdl
dEFzc2VydGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eS5jcHAKaW5kZXggYWYzZjkxOTY2YzM3MWYwOGVmNGRlODEwMTc1MGM4OGU0ZWYy
M2E2Yy4uMWNhMGRlMDRlMDFjYWEwMzQ3YzU1MjkxNDkxZWViZDI0N2Q0N2RiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MCw5
ICs3MCw5IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJl
cXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0CiAgICAgYXV0byBjYWxsYmFjayA9IFto
YW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKFZhcmlhbnQ8UmVmPEF1dGhlbnRpY2F0b3JSZXNw
b25zZT4sIEV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShj
b25zdCBSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiYgcmVzcG9uc2UpIHsKLSAgICAgICAgICAg
IGhhbmRsZXIocmVzcG9uc2UtPmRhdGEoKSwgeyB9KTsKKyAgICAgICAgICAgIGhhbmRsZXIocmVz
cG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPmF0dGFjaG1lbnQoKSwgeyB9KTsKICAgICAgICAgfSwg
WyZdKGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgewotICAgICAgICAgICAgaGFuZGxl
cih7IH0sIGV4Y2VwdGlvbik7CisgICAgICAgICAgICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50KTAsIGV4Y2VwdGlvbik7CiAgICAgICAgIH0pOwogICAgIH07CiAgICAgbV93
ZWJQYWdlUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpLmF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkuaGFu
ZGxlUmVxdWVzdChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAppbmRleCAzM2ViMDdm
MzkyMDA1NmU1ZDc3MjQwZTIyZGUwOTdjOWM2NjBiNGVhLi41M2Y5NzNiNWE3NGRiMmM2OWEzNmMy
YWU2YjJjY2Q4NzllNDIyYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitlbnVtIGNsYXNzIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50Owogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9uczsKIHN0cnVjdCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOwpA
QCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgfldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5KCk7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVy
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVz
cG9uc2VEYXRhJiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKKyAgICB1c2luZyBS
ZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEmLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXR0YWNobWVudCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKICAgICB1c2luZyBR
dWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47CiAK
ICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGY5
OGI4ZTM2YzI4NmUwMmIxYTY1NDgwOTQxZWQ5MDRiOTIzNjM0My4uY2I5M2M4OWYyNDQ3MGYzOTlh
MGIxOWIxZDMyOWU3N2E3Zjc1NmFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0
IEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOCArMjYsOCBAQAogCiBtZXNz
YWdlcyAtPiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSBOb3RSZWZDb3VudGVkIHsK
IAotICAgIE1ha2VDcmVkZW50aWFsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBz
dHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhh
c2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9w
dGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEgZXhjZXB0aW9uKSBBc3luYwotICAgIEdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZl
Y3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3Ry
dWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYworICAgIE1ha2VDcmVkZW50aWFsKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9E
YXRhIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEg
ZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVu
dCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYworICAgIEdl
dEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktp
dDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMsIGJvb2wg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1l
bnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBB
c3luYwogICAgIElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSgp
IC0+IChib29sIHJlc3VsdCkgQXN5bmMKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50
aWNhdG9yLmNwcAppbmRleCBlZjg1YTMxODg4NWZjOWVlODQwODJkMDg1MDA4ZDQ1NjcwNjliMGEy
Li5lMDYzMmUwYjU3MjQ5MTBlYzkzYWY1NTNiMTM4ODQyY2YxNDRhY2NiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50
aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ3Rh
cERyaXZlci5oIgogI2luY2x1ZGUgIkN0YXBIaWREcml2ZXIuaCIKICNpbmNsdWRlICJVMmZBdXRo
ZW50aWNhdG9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yQXR0YWNobWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ3J5cHRvS2V5QUVTLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
cnlwdG9LZXlFQy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3J5cHRvS2V5SE1BQy5oPgpAQCAtMTA1
LDcgKzEwNiw3IEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKIAog
dm9pZCBDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVzcG9u
c2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGF1dG8gcmVzcG9uc2Ug
PSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoZGF0YSwgV1RGOjpnZXQ8UHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKS5hdHRlc3Rh
dGlvbik7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25z
ZShkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSwgV1RGOjpnZXQ8
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25z
KS5hdHRlc3RhdGlvbik7CiAgICAgaWYgKCFyZXNwb25zZSkgewogICAgICAgICBhdXRvIGVycm9y
ID0gZ2V0UmVzcG9uc2VDb2RlKGRhdGEpOwogCkBAIC0xNDYsNyArMTQ3LDcgQEAgdm9pZCBDdGFw
QXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKIAogdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6
Y29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNw
b25zZShkYXRhKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNw
b25zZShkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAg
aWYgKCFyZXNwb25zZSkgewogICAgICAgICBhdXRvIGVycm9yID0gZ2V0UmVzcG9uc2VDb2RlKGRh
dGEpOwogCkBAIC0xODUsNyArMTg2LDcgQEAgdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6Y29udGlu
dWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3QKIAogdm9p
ZCBDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVHZXROZXh0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9
IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoZGF0YSk7CisgICAgYXV0byByZXNwb25zZSA9
IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoZGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1l
bnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgYXV0byBl
cnJvciA9IGdldFJlc3BvbnNlQ29kZShkYXRhKTsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhj
ZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiVW5rbm93biBpbnRlcm5hbCBl
cnJvci4gRXJyb3IgY29kZTogIiwgc3RhdGljX2Nhc3Q8dWludDhfdD4oZXJyb3IpKSB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
VTJmQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCmluZGV4IGM3NTc1OWZhMzJkOTg5ZTk1
NGQ3MjI0YjY0NjNlYzBlNjJhMmE4MTcuLjVhNmJkYzI1YjJmNzg1ZTM4ZDQwZTMxOTUxZDgxZjMw
YjNiMmQ0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlICJDdGFwRHJpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcGR1
UmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBdHRhY2htZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
MmZDb21tYW5kQ29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1UyZlJlc3BvbnNlQ29u
dmVydGVyLmg+CkBAIC0xNTYsNyArMTU3LDcgQEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjpjb250
aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UKICAg
ICBjYXNlIEFwZHVSZXNwb25zZTo6U3RhdHVzOjpTV19OT19FUlJPUjogewogICAgICAgICBhdXRv
JiBvcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4o
cmVxdWVzdERhdGEoKS5vcHRpb25zKTsKICAgICAgICAgYXV0byBhcHBJZCA9IHByb2Nlc3NHb29n
bGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24ob3B0aW9ucy5leHRlbnNpb25zKTsKLSAgICAg
ICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKCFhcHBJZCA/IG9wdGlv
bnMucnAuaWQgOiBhcHBJZCwgYXBkdVJlc3BvbnNlLmRhdGEoKSwgb3B0aW9ucy5hdHRlc3RhdGlv
bik7CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZSghYXBw
SWQgPyBvcHRpb25zLnJwLmlkIDogYXBwSWQsIGFwZHVSZXNwb25zZS5kYXRhKCksIEF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtLCBvcHRpb25zLmF0dGVzdGF0aW9uKTsKICAg
ICAgICAgaWYgKCFyZXNwb25zZSkgewogICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IFVua25vd25FcnJvciwgIkNvdWxkbid0IHBhcnNlIHRoZSBVMkYgcmVnaXN0ZXIg
cmVzcG9uc2UuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA4LDkgKzIwOSw5IEBA
IHZvaWQgVTJmQXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VS
ZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBhCiAgICAgICAgIFJlZlB0cjxBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U+IHJlc3BvbnNlOwogICAgICAgICBpZiAobV9pc0FwcElkKSB7CiAgICAg
ICAgICAgICBBU1NFUlQocmVxdWVzdE9wdGlvbnMuZXh0ZW5zaW9ucyAmJiAhcmVxdWVzdE9wdGlv
bnMuZXh0ZW5zaW9ucy0+YXBwaWQuaXNOdWxsKCkpOwotICAgICAgICAgICAgcmVzcG9uc2UgPSBy
ZWFkVTJmU2lnblJlc3BvbnNlKHJlcXVlc3RPcHRpb25zLmV4dGVuc2lvbnMtPmFwcGlkLCByZXF1
ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzW21fbmV4dExpc3RJbmRleCAtIDFdLmlkVmVjdG9y
LCBhcGR1UmVzcG9uc2UuZGF0YSgpKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gcmVhZFUyZlNp
Z25SZXNwb25zZShyZXF1ZXN0T3B0aW9ucy5leHRlbnNpb25zLT5hcHBpZCwgcmVxdWVzdE9wdGlv
bnMuYWxsb3dDcmVkZW50aWFsc1ttX25leHRMaXN0SW5kZXggLSAxXS5pZFZlY3RvciwgYXBkdVJl
c3BvbnNlLmRhdGEoKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25z
ZShyZXF1ZXN0T3B0aW9ucy5ycElkLCByZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzW21f
bmV4dExpc3RJbmRleCAtIDFdLmlkVmVjdG9yLCBhcGR1UmVzcG9uc2UuZGF0YSgpKTsKKyAgICAg
ICAgICAgIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShyZXF1ZXN0T3B0aW9ucy5ycElk
LCByZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzW21fbmV4dExpc3RJbmRleCAtIDFdLmlk
VmVjdG9yLCBhcGR1UmVzcG9uc2UuZGF0YSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jv
c3NQbGF0Zm9ybSk7CiAgICAgICAgIGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgICAgIHJlY2Vp
dmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBwYXJzZSB0
aGUgVTJGIHNpZ24gcmVzcG9uc2UuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjRjYmFmYzkzMTliY2ZhNDgxNWRjOTVmMWU1
NDc4NDM2ZmE0YTI0Mi4uNWY0NDU1ZTk2ZTYzZDViNzgzNmI5NWZjNjc3Y2I5ZmFkZGEyNzNiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9X
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgyLDkgKzgyLDkgQEAgdm9pZCBXZWJB
dXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRp
b25SZXF1ZXN0RGF0YSYKICAgICBhdXRvIGNhbGxiYWNrID0gW2hhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpXSAoVmFyaWFudDxSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiwgRXhjZXB0aW9uRGF0
YT4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFJlZjxBdXRoZW50aWNh
dG9yUmVzcG9uc2U+JiByZXNwb25zZSkgewotICAgICAgICAgICAgaGFuZGxlcihyZXNwb25zZS0+
ZGF0YSgpLCB7IH0pOworICAgICAgICAgICAgaGFuZGxlcihyZXNwb25zZS0+ZGF0YSgpLCByZXNw
b25zZS0+YXR0YWNobWVudCgpLCB7IH0pOwogICAgICAgICB9LCBbJl0oY29uc3QgRXhjZXB0aW9u
RGF0YSYgZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBoYW5kbGVyKHsgfSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgICAgIGhhbmRsZXIoeyB9LCBzdGF0aWNfY2FzdDxBdXRoZW50aWNhdG9yQXR0YWNo
bWVudD4oMCksIGV4Y2VwdGlvbik7CiAgICAgICAgIH0pOwogICAgIH07CiAgICAgbV9XZWJBdXRo
blByb2Nlc3MtPmF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkuaGFuZGxlUmVxdWVzdChXVEZNb3ZlKGRh
dGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkF1
dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IGJmNmY3YzY1NWQ5NjU5MGExZjIyMTQwNTdiMzZlOWI1MDUyMjg3NDAuLjI3M2I0NjE1NGMyYTU0
NWNjNDRiYWE3MTA4YzI3ODBiY2ZiMDE3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
QXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CitlbnVtIGNsYXNzIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50Owogc3RydWN0IEF1
dGhlbnRpY2F0b3JSZXNwb25zZURhdGE7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKIHN0cnVjdCBN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwpAQCAtNTcsNyArNTgsNyBAQCBwdWJs
aWM6CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6Ci0g
ICAgdXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhJiwgY29uc3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YSYpPjsKKyAgICB1c2luZyBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNw
b25zZURhdGEmLCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCwgY29uc3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YSYpPjsKICAgICB1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47CiAKICAgICBXZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoV2ViQXV0aG5Qcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIs
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMjliNGMxZGU5N2JiZjI0Yjg0YjJkZDBjOWIwN2Ez
ZTI2Y2QwMjE2MS4uYWM3M2E5NTM2YTg5MjAyMmUzM2ZhNmMxNDE3Mjg1OWRlMmQ1ZjRlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9j
ZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMSw0ICsx
LDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCw4ICsyNCw4IEBACiAKIG1l
c3NhZ2VzIC0+IFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7CiAKLSAgICBNYWtlQ3Jl
ZGVudGlhbChWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1
cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBz
dHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCi0gICAgR2V0QXNz
ZXJ0aW9uKFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3Ry
dWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYworICAgIE1ha2VDcmVk
ZW50aWFsKFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIGVu
dW06aW50IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIHN0cnVj
dCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBHZXRBc3NlcnRp
b24oVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+
IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVtOmlu
dCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3QgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCiAgICAgSXNVc2VyVmVyaWZ5aW5n
UGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwog
CiAgICAgU2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihzdHJ1Y3QgV2ViQ29y
ZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggYzQy
M2NmNmVmMTA1NzQ3YzU2ZGRkNGM4MjhlY2YzNzQ1Yzk4ZjVhZS4uZDU0NThlZGJmNDQ1MWNhNTg4
ZTlkZmU0N2IyY2FlYWM1NTU1YTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdl
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nv
bnNvbGVUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckF0dGFjaG1lbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zLmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNmY2ZDg2NDk0OWUzMGI3OTExY2ZhOWRjMTBlMDNlMjFiZWI1OTc2
ZC4uYzM4OTAxZGRhMDZhOWFmNWFkMTk3NDVmNTQyMjkzNDhlZjJhMzE5NyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDIxLTA2LTAxICBHYXJyZXR0IERhdmlkc29uICA8ZGF2aWRzb24uZ2FycmV0dG1AZ21haWwuY29t
PgorCisKKyAgICAgICAgW0NvY29hXSBfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Ug
c2hvdWxkIHNwZWNpZnkgdGhlIGF0dGFjaG1lbnQgdHlwZSB1c2VkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1MTkKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc2NTU0MDkwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSB0aGUgQ1RBUCB0ZXN0cyB0byBzcGVjaWZ5IHRoZSBuZXcgYXR0YWNo
bWVudCBwYXJhbWV0ZXIuIEFsbCBvZiB0aGVzZSB0ZXN0cworICAgICAgICBhc3N1bWUgYSBjcm9z
cyBwbGF0Zm9ybSBhdXRoZW50aWNhdG9yLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisKIDIwMjEtMDYtMDEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFByaW50IGJvdCBjb25maWd1cmF0aW9uIGluIGJ1aWxkLndlYmtpdC5vcmcg
YnVpbGRzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3Rh
cFJlcXVlc3RUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFw
UmVxdWVzdFRlc3QuY3BwCmluZGV4IGU0ZjdlM2MxY2NiMTgzOWZlOGUzZjZjNjA3NzcyMDQxNTBh
ZjE1MGYuLjNmYjNlMDIyNWFjODExZTI0MjIxZWVmMTU5ZWZiODMzMTk3YWRkYmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVxdWVzdFRlc3QuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVxdWVzdFRlc3Qu
Y3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJGaWRvVGVzdERhdGEuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Bpbi5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0
YXBSZXNwb25zZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0
YXBSZXNwb25zZVRlc3QuY3BwCmluZGV4IGMzN2ZkNjgyZTU0YmI2MDFmZjNhNDViMjdjNjI3OWUy
NmQ3Zjg4YWIuLmNkYTNiYjEwNGNjMGRhNDU3MTY2ZjJmN2MzMWIzNTQxMTMzZmFjMWEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNl
VGVzdC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5j
bHVkZSAiRmlkb1Rlc3REYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yQXR0
YWNobWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0JPUlJlYWRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ0JPUlZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQk9SV3JpdGVyLmg+CkBAIC0z
NTMsNyArMzU0LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNl
KHNpemVfdCBwcmVmaXhTaXplLCBjb25zdCB1aW50OF90IGFwcGUKIC8vIGh0dHBzOi8vZmlkb2Fs
bGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0
aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjY29tbWFuZHMKIFRFU1Qo
Q1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKQogewotICAg
IGF1dG8gbWFrZUNyZWRlbnRpYWxSZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNw
b25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RNYWtlQ3JlZGVudGlhbFJl
c3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25zZSkpKTsK
KyAgICBhdXRvIG1ha2VDcmVkZW50aWFsUmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFs
UmVzcG9uc2UoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRp
YWxSZXNwb25zZSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9uc2Up
KSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEFTU0VSVF9U
UlVFKG1ha2VDcmVkZW50aWFsUmVzcG9uc2UpOwogICAgIGF1dG8gY2JvckF0dGVzdGF0aW9uT2Jq
ZWN0ID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihyZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihtYWtlQ3JlZGVudGlhbFJlc3BvbnNlLT5hdHRlc3RhdGlvbk9i
amVjdCgpLT5kYXRhKCkpLCBtYWtlQ3JlZGVudGlhbFJlc3BvbnNlLT5hdHRlc3RhdGlvbk9iamVj
dCgpLT5ieXRlTGVuZ3RoKCkpKTsKICAgICBBU1NFUlRfVFJVRShjYm9yQXR0ZXN0YXRpb25PYmpl
Y3QpOwpAQCAtNDAxLDcgKzQwMiw3IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRN
YWtlQ3JlZGVudGlhbFJlc3BvbnNlKQogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNz
L2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3Rv
Y29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UmVh
ZEdldEFzc2VydGlvblJlc3BvbnNlMSkKIHsKLSAgICBhdXRvIGdldEFzc2VydGlvblJlc3BvbnNl
ID0gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0
RGF0YTo6a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlU2hvcnQsIHNpemVvZihUZXN0RGF0YTo6
a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlU2hvcnQpKSk7CisgICAgYXV0byBnZXRBc3NlcnRp
b25SZXNwb25zZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29udmVydEJ5dGVzVG9W
ZWN0b3IoVGVzdERhdGE6OmtEZXZpY2VHZXRBc3NlcnRpb25SZXNwb25zZVNob3J0LCBzaXplb2Yo
VGVzdERhdGE6OmtEZXZpY2VHZXRBc3NlcnRpb25SZXNwb25zZVNob3J0KSksIEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBBU1NFUlRfVFJVRShnZXRBc3NlcnRp
b25SZXNwb25zZSk7CiAKICAgICBFWFBFQ1RfRVEoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UtPmF1dGhl
bnRpY2F0b3JEYXRhKCktPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJHZXRB
c3NlcnRpb25BdXRoRGF0YSkpOwpAQCAtNDEyLDcgKzQxMyw3IEBAIFRFU1QoQ1RBUFJlc3BvbnNl
VGVzdCwgVGVzdFJlYWRHZXRBc3NlcnRpb25SZXNwb25zZTEpCiAKIFRFU1QoQ1RBUFJlc3BvbnNl
VGVzdCwgVGVzdFJlYWRHZXRBc3NlcnRpb25SZXNwb25zZTIpCiB7Ci0gICAgYXV0byBnZXRBc3Nl
cnRpb25SZXNwb25zZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29udmVydEJ5dGVz
VG9WZWN0b3IoVGVzdERhdGE6OmtEZXZpY2VHZXRBc3NlcnRpb25SZXNwb25zZSwgc2l6ZW9mKFRl
c3REYXRhOjprRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2UpKSk7CisgICAgYXV0byBnZXRBc3Nl
cnRpb25SZXNwb25zZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoY29udmVydEJ5dGVz
VG9WZWN0b3IoVGVzdERhdGE6OmtEZXZpY2VHZXRBc3NlcnRpb25SZXNwb25zZSwgc2l6ZW9mKFRl
c3REYXRhOjprRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2UpKSwgQXV0aGVudGljYXRvckF0dGFj
aG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEFTU0VSVF9UUlVFKGdldEFzc2VydGlvblJlc3Bv
bnNlKTsKIAogICAgIEVYUEVDVF9FUShnZXRBc3NlcnRpb25SZXNwb25zZS0+YXV0aGVudGljYXRv
ckRhdGEoKS0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwMkdldEFzc2VydGlv
bkF1dGhEYXRhKSk7CkBAIC00MjUsNyArNDI2LDcgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBU
ZXN0UmVhZEdldEFzc2VydGlvblJlc3BvbnNlMikKIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBU
ZXN0UmVhZEdldEFzc2VydGlvblJlc3BvbnNlMykKIHsKLSAgICBhdXRvIGdldEFzc2VydGlvblJl
c3BvbnNlID0gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihUZXN0RGF0YTo6a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlTG9uZywgc2l6ZW9mKFRlc3RE
YXRhOjprRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2VMb25nKSkpOworICAgIGF1dG8gZ2V0QXNz
ZXJ0aW9uUmVzcG9uc2UgPSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnZlcnRCeXRl
c1RvVmVjdG9yKFRlc3REYXRhOjprRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2VMb25nLCBzaXpl
b2YoVGVzdERhdGE6OmtEZXZpY2VHZXRBc3NlcnRpb25SZXNwb25zZUxvbmcpKSwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEFTU0VSVF9UUlVFKGdldEFzc2Vy
dGlvblJlc3BvbnNlKTsKIAogICAgIEVYUEVDVF9FUShnZXRBc3NlcnRpb25SZXNwb25zZS0+YXV0
aGVudGljYXRvckRhdGEoKS0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwMkdl
dEFzc2VydGlvbkF1dGhEYXRhKSk7CkBAIC00NDIsNyArNDQzLDcgQEAgVEVTVChDVEFQUmVzcG9u
c2VUZXN0LCBUZXN0UmVhZEdldEFzc2VydGlvblJlc3BvbnNlMykKIC8vIFRlc3QgdGhhdCBVMkYg
cmVnaXN0ZXIgcmVzcG9uc2UgaXMgcHJvcGVybHkgcGFyc2VkLgogVEVTVChDVEFQUmVzcG9uc2VU
ZXN0LCBUZXN0UGFyc2VSZWdpc3RlclJlc3BvbnNlRGF0YSkKIHsKLSAgICBhdXRvIHJlc3BvbnNl
ID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgY29u
dmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZSwgc2l6
ZW9mKFRlc3REYXRhOjprVGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UpKSk7CisgICAgYXV0byByZXNw
b25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQs
IGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2Us
IHNpemVvZihUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlKSksIEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBBU1NFUlRfVFJVRShyZXNwb25zZSk7
CiAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLT5yYXdJZCgpLT5ieXRlTGVuZ3RoKCksIHNpemVvZihU
ZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsKICAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3Bv
bnNlLT5yYXdJZCgpLT5kYXRhKCksIFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9m
KFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpLCAwKTsKQEAgLTQ1NSwyNiArNDU2LDI2IEBA
IFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlUmVnaXN0ZXJSZXNwb25zZURhdGEpCiBU
RVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VE
YXRhMSkKIHsKICAgICBjb25zdCB1aW50OF90IHRlc3REYXRhMVtdID0geyAweDA1IH07Ci0gICAg
YXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWlu
Z1BhcnR5SWQsIGNvbnZlcnRCeXRlc1RvVmVjdG9yKHRlc3REYXRhMSwgc2l6ZW9mKHRlc3REYXRh
MSkpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERh
dGE6OmtSZWx5aW5nUGFydHlJZCwgY29udmVydEJ5dGVzVG9WZWN0b3IodGVzdERhdGExLCBzaXpl
b2YodGVzdERhdGExKSksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsK
ICAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogCiAgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0
YTJbXSA9IHsgMHgwNSwgMHgwMCB9OwotICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVz
cG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgY29udmVydEJ5dGVzVG9WZWN0b3IodGVz
dERhdGEyLCBzaXplb2YodGVzdERhdGEyKSkpOworICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lz
dGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgY29udmVydEJ5dGVzVG9WZWN0
b3IodGVzdERhdGEyLCBzaXplb2YodGVzdERhdGEyKSksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogCiAgICAgY29u
c3QgdWludDhfdCB0ZXN0RGF0YTNbXSA9IHsgMHgwNSwgMHgwNCwgMHgwMCB9OwotICAgIHJlc3Bv
bnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwg
Y29udmVydEJ5dGVzVG9WZWN0b3IodGVzdERhdGEzLCBzaXplb2YodGVzdERhdGEzKSkpOworICAg
IHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFy
dHlJZCwgY29udmVydEJ5dGVzVG9WZWN0b3IodGVzdERhdGEzLCBzaXplb2YodGVzdERhdGEzKSks
IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBFQ1RfRkFM
U0UocmVzcG9uc2UpOwogfQogCiAvLyBUZXN0IG1hbGZvcm1lZCBrZXkgaGFuZGxlLgogVEVTVChD
VEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VJbmNvcnJlY3RSZWdpc3RlclJlc3BvbnNlRGF0YTIp
CiB7Ci0gICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRh
OjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKGtVMmZLZXlIYW5k
bGVMZW5ndGhPZmZzZXQsIG51bGxwdHIsIDApKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUy
ZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJl
Z2lzdGVyUmVzcG9uc2Uoa1UyZktleUhhbmRsZUxlbmd0aE9mZnNldCwgbnVsbHB0ciwgMCksIEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBFQ1RfRkFMU0Uo
cmVzcG9uc2UpOwogCiAgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YVtdID0geyAweDQwIH07Ci0g
ICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQ
YXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShrVTJmS2V5SGFuZGxlTGVuZ3RoT2Zm
c2V0LCB0ZXN0RGF0YSwgc2l6ZW9mKHRlc3REYXRhKSkpOworICAgIHJlc3BvbnNlID0gcmVhZFUy
ZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJl
Z2lzdGVyUmVzcG9uc2Uoa1UyZktleUhhbmRsZUxlbmd0aE9mZnNldCwgdGVzdERhdGEsIHNpemVv
Zih0ZXN0RGF0YSkpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKIH0KIApAQCAtNDgyLDI3ICs0ODMsMjcgQEAgVEVT
VChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VJbmNvcnJlY3RSZWdpc3RlclJlc3BvbnNlRGF0
YTIpCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZUluY29ycmVjdFJlZ2lzdGVyUmVz
cG9uc2VEYXRhMykKIHsKICAgICBjb25zdCBhdXRvIHByZWZpeCA9IGtVMmZLZXlIYW5kbGVPZmZz
ZXQgKyA2NDsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVz
dERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4
LCBudWxscHRyLCAwKSk7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3Bv
bnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNl
KHByZWZpeCwgbnVsbHB0ciwgMCksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRm
b3JtKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogCiAgICAgY29uc3QgdWludDhfdCB0
ZXN0RGF0YTFbXSA9IHsgMHg0MCB9OwotICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVz
cG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9u
c2UocHJlZml4LCB0ZXN0RGF0YTEsIHNpemVvZih0ZXN0RGF0YTEpKSk7CisgICAgcmVzcG9uc2Ug
PSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRU
ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3REYXRhMSwgc2l6ZW9mKHRlc3REYXRh
MSkpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNU
X0ZBTFNFKHJlc3BvbnNlKTsKIAogICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGEyW10gPSB7IDB4
MzAgfTsKLSAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjpr
UmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgdGVzdERh
dGEyLCBzaXplb2YodGVzdERhdGEyKSkpOworICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVy
UmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVz
cG9uc2UocHJlZml4LCB0ZXN0RGF0YTIsIHNpemVvZih0ZXN0RGF0YTIpKSwgQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7
CiAKICAgICBjb25zdCB1aW50OF90IHRlc3REYXRhM1tdID0geyAweDMwLCAweDgyIH07Ci0gICAg
cmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0
eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3REYXRhMywgc2l6ZW9m
KHRlc3REYXRhMykpKTsKKyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRl
c3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKHByZWZp
eCwgdGVzdERhdGEzLCBzaXplb2YodGVzdERhdGEzKSksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogCiAgICAgY29u
c3QgdWludDhfdCB0ZXN0RGF0YTRbXSA9IHsgMHgzMCwgMHhDMSB9OwotICAgIHJlc3BvbnNlID0g
cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVz
dFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4LCB0ZXN0RGF0YTQsIHNpemVvZih0ZXN0RGF0YTQp
KSk7CisgICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1Jl
bHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3REYXRh
NCwgc2l6ZW9mKHRlc3REYXRhNCkpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0
Zm9ybSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKIAogICAgIGNvbnN0IHVpbnQ4X3Qg
dGVzdERhdGE1W10gPSB7IDB4MzAsIDB4ODIsIDB4MDIsIDB4NEEgfTsKLSAgICByZXNwb25zZSA9
IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRl
c3RVMmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgdGVzdERhdGE1LCBzaXplb2YodGVzdERhdGE1
KSkpOworICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtS
ZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4LCB0ZXN0RGF0
YTUsIHNpemVvZih0ZXN0RGF0YTUpKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxh
dGZvcm0pOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CiB9CiAKQEAgLTUxMCw3ICs1MTEs
NyBAQCBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZUluY29ycmVjdFJlZ2lzdGVyUmVz
cG9uc2VEYXRhMykKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlSW5jb3JyZWN0UmVn
aXN0ZXJSZXNwb25zZURhdGE0KQogewogICAgIGNvbnN0IGF1dG8gcHJlZml4ID0gc2l6ZW9mKFRl
c3REYXRhOjprVGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UpOwotICAgIGF1dG8gcmVzcG9uc2UgPSBy
ZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0
VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXggLSA3MSwgbnVsbHB0ciwgMCkpOworICAgIGF1dG8g
cmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0
eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXggLSA3MSwgbnVsbHB0ciwgMCks
IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBFQ1RfRkFM
U0UocmVzcG9uc2UpOwogfQogCkBAIC01MjcsNyArNTI4LDcgQEAgVEVTVChDVEFQUmVzcG9uc2VU
ZXN0LCBUZXN0UGFyc2VJbmNvcnJlY3RSZWdpc3RlclJlc3BvbnNlRGF0YTUpCiAgICAgdGVzdERh
dGExLmFwcGVuZCgweDAxKTsKICAgICB0ZXN0RGF0YTEuYXBwZW5kKDB4MDApOwogICAgIHRlc3RE
YXRhMS5hcHBlbmQoVGVzdERhdGE6OmtUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZSArIHN1ZmZpeCwg
c2lnbmF0dXJlU2l6ZSk7Ci0gICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3Bv
bnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIHRlc3REYXRhMSk7CisgICAgYXV0byByZXNw
b25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQs
IHRlc3REYXRhMSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOwogICAg
IEVYUEVDVF9UUlVFKHJlc3BvbnNlKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0ZXN0RGF0YTI7
CkBAIC01MzcsMTQgKzUzOCwxNCBAQCBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZUlu
Y29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhNSkKICAgICB0ZXN0RGF0YTIuYXBwZW5kKDB4MDEp
OwogICAgIHRlc3REYXRhMi5hcHBlbmQoMHgwMCk7CiAgICAgdGVzdERhdGEyLmFwcGVuZChUZXN0
RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlICsgc3VmZml4LCBzaWduYXR1cmVTaXplKTsK
LSAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWlu
Z1BhcnR5SWQsIHRlc3REYXRhMik7CisgICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNw
b25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCB0ZXN0RGF0YTIsIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBFQ1RfVFJVRShyZXNwb25zZSk7CiB9
CiAKIC8vIFRlc3RzIHRoYXQgVTJGIGF1dGhlbnRpY2F0b3IgZGF0YSBpcyBwcm9wZXJseSBzZXJp
YWxpemVkLgogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VTaWduUmVzcG9uc2VEYXRh
KQogewotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjpr
UmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0U2ln
blJlc3BvbnNlKCkpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKFRl
c3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBn
ZXRUZXN0U2lnblJlc3BvbnNlKCksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRm
b3JtKTsKICAgICBBU1NFUlRfVFJVRShyZXNwb25zZSk7CiAgICAgRVhQRUNUX0VRKHJlc3BvbnNl
LT5yYXdJZCgpLT5ieXRlTGVuZ3RoKCksIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5k
bGUpKTsKICAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3BvbnNlLT5yYXdJZCgpLT5kYXRhKCksIFRl
c3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhh
bmRsZSkpLCAwKTsKQEAgLTU1NiwyNyArNTU3LDI3IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwg
VGVzdFBhcnNlU2lnblJlc3BvbnNlRGF0YSkKIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0
UGFyc2VVMmZTaWduV2l0aE51bGxLZXlIYW5kbGUpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IHJl
YWRVMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgVmVjdG9yPHVpbnQ4
X3Q+KCksIGdldFRlc3RTaWduUmVzcG9uc2UoKSk7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRV
MmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgVmVjdG9yPHVpbnQ4X3Q+
KCksIGdldFRlc3RTaWduUmVzcG9uc2UoKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3Nz
UGxhdGZvcm0pOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CiB9CiAKIFRFU1QoQ1RBUFJl
c3BvbnNlVGVzdCwgVGVzdFBhcnNlVTJmU2lnbldpdGhOdWxsUmVzcG9uc2UpCiB7Ci0gICAgYXV0
byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJ
ZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIFZlY3Rvcjx1aW50OF90PigpKTsKKyAg
ICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQ
YXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgVmVjdG9yPHVpbnQ4X3Q+KCks
IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKICAgICBFWFBFQ1RfRkFM
U0UocmVzcG9uc2UpOwogfQogCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZVUyZlNp
Z25XaXRoQ29ycnVwdGVkQ291bnRlcikKIHsKICAgICAvLyBBIHNpZ24gcmVzcG9uc2Ugb2YgbGVz
cyB0aGFuIDUgYnl0ZXMuCi0gICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2Uo
VGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCks
IGdldFRlc3RDb3JydXB0ZWRTaWduUmVzcG9uc2UoMykpOworICAgIGF1dG8gcmVzcG9uc2UgPSBy
ZWFkVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVk
ZW50aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3BvbnNlKDMpLCBBdXRo
ZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJl
c3BvbnNlKTsKIH0KIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0
aENvcnJ1cHRlZFNpZ25hdHVyZSkKIHsKICAgICAvLyBBIHNpZ24gcmVzcG9uc2Ugbm8gbW9yZSB0
aGFuIDUgYnl0ZXMuCi0gICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UoVGVz
dERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIGdl
dFRlc3RDb3JydXB0ZWRTaWduUmVzcG9uc2UoNSkpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFk
VTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50
aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3BvbnNlKDUpLCBBdXRoZW50
aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3Bv
bnNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDlhMzE4
MzM5MTU4YWFlOWIzNWFlYWY1Y2RmN2I5MjljMjljNzZjNmUuLmQ3NDk5YzA0OGRjOTBiMmIwZDgz
NzJkMjBiNmFlODJiZTI0ZWRkOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQg
IldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgPExvY2FsQXV0aGVudGlj
YXRpb24vTG9jYWxBdXRoZW50aWNhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNh
dG9yQXR0YWNobWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>