<?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>208087</bug_id>
          
          <creation_ts>2020-02-21 20:54:28 -0800</creation_ts>
          <short_desc>[WebAuthn] Implement SPI for the platform authenticator</short_desc>
          <delta_ts>2020-02-25 13:45:09 -0800</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>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1621848</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-21 20:54:28 -0800</bug_when>
    <thetext>Implement SPI for the platform authenticator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621849</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-21 20:54:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/59369305&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621850</commentid>
    <comment_count>2</comment_count>
      <attachid>391449</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-21 21:15:10 -0800</bug_when>
    <thetext>Created attachment 391449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621851</commentid>
    <comment_count>3</comment_count>
      <attachid>391450</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-21 21:21:51 -0800</bug_when>
    <thetext>Created attachment 391450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621950</commentid>
    <comment_count>4</comment_count>
      <attachid>391475</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-22 21:27:47 -0800</bug_when>
    <thetext>Created attachment 391475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621952</commentid>
    <comment_count>5</comment_count>
      <attachid>391476</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-22 21:44:46 -0800</bug_when>
    <thetext>Created attachment 391476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621956</commentid>
    <comment_count>6</comment_count>
      <attachid>391478</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-22 21:59:12 -0800</bug_when>
    <thetext>Created attachment 391478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621970</commentid>
    <comment_count>7</comment_count>
      <attachid>391482</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-23 00:09:25 -0800</bug_when>
    <thetext>Created attachment 391482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622016</commentid>
    <comment_count>8</comment_count>
      <attachid>391496</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-23 11:51:18 -0800</bug_when>
    <thetext>Created attachment 391496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622017</commentid>
    <comment_count>9</comment_count>
      <attachid>391497</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-23 12:23:21 -0800</bug_when>
    <thetext>Created attachment 391497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622219</commentid>
    <comment_count>10</comment_count>
      <attachid>391497</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-02-24 10:17:06 -0800</bug_when>
    <thetext>Comment on attachment 391497
Patch

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

I have a few suggestions about the code, but I think this looks good.

&gt; Source/WebKit/ChangeLog:29
&gt; +        1) _WKWebAuthenticationPanelUpdate: three error are added to help clients to inform users.

Three ERRORS are added to help clients present meaningful error messages to users.

&gt; Source/WebKit/ChangeLog:34
&gt; +        returned during makeCredential and before verifyUserWithAccessControl delegate.

Does the WebAuthn spec give much guidance on what should happen if a user attempts to create a new credential on a site where they already have one? Could the user be trying to replace a credential for some reason?

&gt; Source/WebKit/ChangeLog:50
&gt; +        wait until verifyUserWithAccessControl to show the combined UI. If any of the LAError is received before

If any of the LAError STATES ARE received before

&gt; Source/WebKit/ChangeLog:51
&gt; +        verifyUserWithAccessControl, clients can then only show the external authenticator UI. Also, platform authenticator and

I think this should be: &quot;... clients SHOULD THEN show the external authenticator UI.&quot;

&gt; Source/WebKit/ChangeLog:52
&gt; +        external authenticators are being discovered at the same time, which means, a user can plug in a security key at anytime.

Extra comma:  &quot;same time, which means a user can plug in a security key at any time.&quot;

&gt; Source/WebKit/ChangeLog:55
&gt; +        Besides introducing the SPI, and all the plumbings to make it happen. This patch also:

and all the NECESSARY PLUMBING, this patch also:

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAssertionResponse.cpp:56
&gt; +void AuthenticatorAssertionResponse::setAuthenticatorData(const Vector&lt;uint8_t&gt;&amp; authenticatorData)

I think this should be a Vector&lt;uint8_t&gt;&amp;&amp;.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAssertionResponse.cpp:58
&gt; +    m_authenticatorData = ArrayBuffer::create(authenticatorData.data(), authenticatorData.size());

Do we have a &apos;create&apos; that reuses the passed memory? It would be a nice improvement.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorAssertionResponse.h:51
&gt; +    WEBCORE_EXPORT void setAuthenticatorData(const Vector&lt;uint8_t&gt;&amp;);

Propose Vector&lt;uint8_t&gt;&amp;&amp;

&gt; Source/WebKit/Platform/spi/Cocoa/LocalAuthenticationSPI.h:37
&gt; +    LAOptionNotInteractive,

It&apos;s a little funny to have an enum with a single value! :-)

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:300
&gt; +    RetainPtr&lt;SecAccessControlRef&gt; accessControl = accessControlRef;

Minor nit: If we always take ownership when we enter this function, should we just pass a RetainPtr&lt;SecAccessControlRef&gt;&amp;&amp;?

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:496
&gt; +    response-&gt;setAuthenticatorData(authData);

Seems like we should WTFMove() the authData, since we create it in the method, and never use it outside of the response object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622316</commentid>
    <comment_count>11</comment_count>
      <attachid>391497</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-24 14:13:38 -0800</bug_when>
    <thetext>Comment on attachment 391497
Patch

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

Thanks Brent for r+ this patch.

&gt;&gt; Source/WebKit/ChangeLog:29
&gt;&gt; +        1) _WKWebAuthenticationPanelUpdate: three error are added to help clients to inform users.
&gt; 
&gt; Three ERRORS are added to help clients present meaningful error messages to users.

Thanks. I don&apos;t know from where I got the impression that error is plural.

&gt;&gt; Source/WebKit/ChangeLog:34
&gt;&gt; +        returned during makeCredential and before verifyUserWithAccessControl delegate.
&gt; 
&gt; Does the WebAuthn spec give much guidance on what should happen if a user attempts to create a new credential on a site where they already have one? Could the user be trying to replace a credential for some reason?

The default behavior is to overwrite the existing one with the new one. Therefore, the excludeList is provided as a way to prevent the overwriting.

&gt;&gt; Source/WebKit/ChangeLog:50
&gt;&gt; +        wait until verifyUserWithAccessControl to show the combined UI. If any of the LAError is received before
&gt; 
&gt; If any of the LAError STATES ARE received before

Fixed.

&gt;&gt; Source/WebKit/ChangeLog:51
&gt;&gt; +        verifyUserWithAccessControl, clients can then only show the external authenticator UI. Also, platform authenticator and
&gt; 
&gt; I think this should be: &quot;... clients SHOULD THEN show the external authenticator UI.&quot;

Fixed.

&gt;&gt; Source/WebKit/ChangeLog:52
&gt;&gt; +        external authenticators are being discovered at the same time, which means, a user can plug in a security key at anytime.
&gt; 
&gt; Extra comma:  &quot;same time, which means a user can plug in a security key at any time.&quot;

Fixed.

&gt;&gt; Source/WebKit/ChangeLog:55
&gt;&gt; +        Besides introducing the SPI, and all the plumbings to make it happen. This patch also:
&gt; 
&gt; and all the NECESSARY PLUMBING, this patch also:

Fixed.

&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorAssertionResponse.cpp:56
&gt;&gt; +void AuthenticatorAssertionResponse::setAuthenticatorData(const Vector&lt;uint8_t&gt;&amp; authenticatorData)
&gt; 
&gt; I think this should be a Vector&lt;uint8_t&gt;&amp;&amp;.

Fixed.

&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorAssertionResponse.cpp:58
&gt;&gt; +    m_authenticatorData = ArrayBuffer::create(authenticatorData.data(), authenticatorData.size());
&gt; 
&gt; Do we have a &apos;create&apos; that reuses the passed memory? It would be a nice improvement.

So unfortunate that there isn&apos;t one.

&gt;&gt; Source/WebCore/Modules/webauthn/AuthenticatorAssertionResponse.h:51
&gt;&gt; +    WEBCORE_EXPORT void setAuthenticatorData(const Vector&lt;uint8_t&gt;&amp;);
&gt; 
&gt; Propose Vector&lt;uint8_t&gt;&amp;&amp;

Fixed.

&gt;&gt; Source/WebKit/Platform/spi/Cocoa/LocalAuthenticationSPI.h:37
&gt;&gt; +    LAOptionNotInteractive,
&gt; 
&gt; It&apos;s a little funny to have an enum with a single value! :-)

Right given I don&apos;t want to expose others...

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:300
&gt;&gt; +    RetainPtr&lt;SecAccessControlRef&gt; accessControl = accessControlRef;
&gt; 
&gt; Minor nit: If we always take ownership when we enter this function, should we just pass a RetainPtr&lt;SecAccessControlRef&gt;&amp;&amp;?

It is a copy instead of a transfer. I think passing a SecAccessControlRef is better than a const RetainPtr&lt;SecAccessControlRef&gt;&amp;.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:496
&gt;&gt; +    response-&gt;setAuthenticatorData(authData);
&gt; 
&gt; Seems like we should WTFMove() the authData, since we create it in the method, and never use it outside of the response object.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622352</commentid>
    <comment_count>12</comment_count>
      <attachid>391586</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-24 15:05:42 -0800</bug_when>
    <thetext>Created attachment 391586
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622371</commentid>
    <comment_count>13</comment_count>
      <attachid>391586</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-24 15:51:22 -0800</bug_when>
    <thetext>Comment on attachment 391586
Patch for landing

Clearing flags on attachment: 391586

Committed r257269: &lt;https://trac.webkit.org/changeset/257269&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622726</commentid>
    <comment_count>14</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-25 13:41:34 -0800</bug_when>
    <thetext>A build fix:
https://trac.webkit.org/changeset/257269/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622729</commentid>
    <comment_count>15</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-25 13:45:09 -0800</bug_when>
    <thetext>Here is the actual build fix:
https://trac.webkit.org/changeset/257371/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391449</attachid>
            <date>2020-02-21 21:15:10 -0800</date>
            <delta_ts>2020-02-21 21:21:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208087-20200221211509.patch</filename>
            <type>text/plain</type>
            <size>103499</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDg0ZTE5MmNjZjY3ODI2
OTI1ZWEzNmY4MzRjN2QyNDg2ZTg4Yzg1Ni4uOWE0MGQ3ZGMxMmY2OTc1ZDdmZWQ0NTg1YTYyODIw
ODRmMDYzODhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAyLTIxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmhhbmNlcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgdG8gYWNj
b21tb25kYXRlIHJlc3BvbnNlcworICAgICAgICByZXR1cm5lZCBmcm9tIHRoZSBwbGF0Zm9ybSBh
dXRoZW50aWNhdG9yLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRB
dXRoZW50aWNhdG9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGljYXRv
ckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGlzcGxheU5hbWUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpudW1iZXJPZkNyZWRlbnRp
YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZTo6YWNjZXNzQ29udHJvbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldFNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXREaXNwbGF5TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE51bWJlck9m
Q3JlZGVudGlhbHMpOgorCiAyMDIwLTAyLTIwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0ZpcnN0IHBhaW50XSBMZXQncyBjaGVjayB2aXN1YWxseS1ub24tZW1w
dHkgc3RhdGUgaW4gRnJhbWVWaWV3OjpzdHlsZUFuZFJlbmRlclRyZWVEaWRDaGFuZ2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYTU3NzdjNzNiNzM2YmJmY2VlMzlhMjI5MmRmYmY3YTQ3NjcxZDc2Ni4uODllYTVjOTVi
NTViMjAyMTI0MzcwNTc5OWZlMDFkYjUyMDRlNzliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDYg
QEAKKzIwMjAtMDItMjEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCBTUEkgZm9yIHRoZSBwbGF0Zm9ybSBhdXRoZW50aWNh
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgw
ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5MzY5MzA1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhlcmUgaXMgdGhlIG5ld2x5IGFkZGVkIFNQ
SToKKyAgICAgICAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZSkgeworICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBfV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvciwKKyAgICAgICAgICAgIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWwsCisgICAgICAgICAgICBfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWwsCisgICAgICAgIH07CisK
KyAgICAgICAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25U
cmFuc3BvcnQpIHsKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgX1dLV2ViQXV0aGVudGlj
YXRpb25UcmFuc3BvcnRJbnRlcm5hbCwKKyAgICAgICAgfTsKKworICAgICAgICBAcHJvdG9jb2wg
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDxOU09iamVjdD4KKyAgICAgICAgQG9w
dGlvbmFsCisgICAgICAgIC4uLgorICAgICAgICAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsICopcGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOihTZWNBY2Nl
c3NDb250cm9sUmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKExB
Q29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlcjsKKyAgICAgICAgQGVuZAorCisgICAgICAgIEls
bHVzdHJhdGlvbnM6CisgICAgICAgIDEpIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGU6
IHRocmVlIGVycm9yIGFyZSBhZGRlZCB0byBoZWxwIGNsaWVudHMgdG8gaW5mb3JtIHVzZXJzLgor
ICAgICAgICBhKSBXS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yOiBBbiBpbnRl
cm5hbCBlcnJvciwgY2xpZW50cyBzaG91bGQgaW5mb3JtIHVzZXJzIGFuZCB0ZXJtaW5hdGUgdGhl
IHBsYXRmb3JtCisgICAgICAgIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MuIFRoaXMgZXJyb3IgY2Fu
IGJlIHJldHVybmVkIGF0IGFueSB0aW1lLgorICAgICAgICBiKSBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsVXBkYXRlTEFEdXBsaWNhdGVDcmVkZW50aWFsOiBJdCBtZWFucyBhIGNyZWRlbnRpYWwg
aXMgZm91bmQgdG8gbWF0Y2ggYW4gZW50cnkgaW4gdGhlCisgICAgICAgIGV4Y2x1ZGVMaXN0LiBD
bGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMgYW5kIHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0gYXV0
aGVudGljYXRpb24gcHJvY2Vzcy4gVGhpcyBlcnJvciB3aWxsIG9ubHkgYmUKKyAgICAgICAgcmV0
dXJuZWQgZHVyaW5nIG1ha2VDcmVkZW50aWFsIGFuZCBiZWZvcmUgdmVyaWZ5VXNlcldpdGhBY2Nl
c3NDb250cm9sIGRlbGVnYXRlLgorICAgICAgICBjKSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlTEFOb0NyZWRlbnRpYWw6IEl0IG1lYW5zIG5vIGNyZWRlbnRpYWxzIGFyZSBmb3VuZC4g
Q2xpZW50cyBzaG91bGQgaW5mb3JtIHVzZXJzIGFuZAorICAgICAgICB0ZXJtaW5hdGUgdGhlIHBs
YXRmb3JtIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MuIFRoaXMgZXJyb3Igd2lsbCBvbmx5IGJlIHJl
dHVybmVkIGR1cmluZyBnZXRBc3NlcnRpb24gYW5kIGJlZm9yZQorICAgICAgICB2ZXJpZnlVc2Vy
V2l0aEFjY2Vzc0NvbnRyb2wgZGVsZWdhdGUuCisKKyAgICAgICAgMikgX1dLV2ViQXV0aGVudGlj
YXRpb25UcmFuc3BvcnQ6IF9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0SW50ZXJuYWwgaXMg
YWRkZWQgc3VjaCB0aGF0IGNsaWVudHMgY2FuIGxlYXJuIHBsYXRmb3JtCisgICAgICAgIGF1dGhl
bnRpY2F0b3Igd2lsbCBiZSB1c2VkIGZyb20gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC50cmFu
c3BvcnRzLgorCisgICAgICAgIDMpIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDogQSBkZWxl
Z2F0ZSB0aGF0IHdpbGwgYmUgY2FsbGVkIGR1cmluZyBtYWtlQ3JlZGVudGlhbCBvciBnZXRBc3Nl
cnRpb24gd2hlbiB0aGUgcGxhdGZvcm0KKyAgICAgICAgYXV0aGVudGljYXRvciBpcyBpbnZvbHZl
ZC4gVGhpcyBkZWxlZ2F0ZSBpcyB1c2VkIHRvIG9idGFpbiB1c2VyIHZlcmlmaWNhdGlvbiBmcm9t
IGEgTEFDb250ZXh0LiBJbiBhZGRpdGlvbiwgdGhlIExBQ29udGV4dAorICAgICAgICBzaG91bGQg
ZXZhbHVhdGUgdGhlIHBhc3NlZCBhY2Nlc3NDb250cm9sLCBzdWNoIHRoYXQgdGhlIFNFUCBwcm90
ZWN0ZWQgY3JlZGVudGlhbCBwcml2YXRlIGtleSBjYW4gYmUgdXNlZC4gQSB0eXBpY2FsCisgICAg
ICAgIGV4YW1wbGUgd2lsbCBiZSBbTEFDb250ZXh0IGV2YWx1YXRlQWNjZXNzQ29udHJvbDphY2Nl
c3NDb250cm9sIG9wZXJhdGlvbjpMQUFjY2Vzc0NvbnRyb2xPcGVyYXRpb25Vc2VLZXlTaWduIGxv
Y2FsaXplZFJlYXNvbjpyZXBseTpdLgorICAgICAgICBOb3RlZCwgZm9yIGdldEFzc2VydGlvbiwg
c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Ugd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHZlcmlmeVVzZXJX
aXRoQWNjZXNzQ29udHJvbC4gU28gdXNlcnMgbmVlZCB0byBiZQorICAgICAgICBwcm9tcHRlZCB0
byBzZWxlY3QgYSBjcmVkZW50aWFsIGJlZm9yZSB0aGUgdXNlciB2ZXJpZmljYXRpb24uCisKKyAg
ICAgICAgSW4gdGhlIHNjZW5hcmlvIHdoZW4gYm90aCB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRv
ciBhbmQgZXh0ZXJuYWwgYXV0aGVudGljYXRvcnMgYXJlIHJlcXVlc3RlZC4gQ2xpZW50cyBhcmUg
YWR2aXNlZCB0bworICAgICAgICB3YWl0IHVudGlsIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJv
bCB0byBzaG93IHRoZSBjb21iaW5lZCBVSS4gSWYgYW55IG9mIHRoZSBMQUVycm9yIGlzIHJlY2Vp
dmVkIGJlZm9yZQorICAgICAgICB2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2wsIGNsaWVudHMg
Y2FuIHRoZW4gb25seSBzaG93IHRoZSBleHRlcm5hbCBhdXRoZW50aWNhdG9yIFVJLiBBbHNvLCBw
bGF0Zm9ybSBhdXRoZW50aWNhdG9yIGFuZAorICAgICAgICBleHRlcm5hbCBhdXRoZW50aWNhdG9y
cyBhcmUgYmVpbmcgZGlzY292ZXJlZCBhdCB0aGUgc2FtZSB0aW1lLCB3aGljaCBtZWFucywgYSB1
c2VyIGNhbiBwbHVnIGluIGEgc2VjdXJpdHkga2V5IGF0IGFueXRpbWUuCisgICAgICAgIElmIGEg
dmFsaWQgcmVzcG9uc2UgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgc2VjdXJpdHkga2V5LCB0aGUgd2hv
bGUgY2VyZW1vbnkgd2lsbCBiZSB0ZXJtaW5hdGVkLgorCisgICAgICAgIEJlc2lkZXMgaW50cm9k
dWNpbmcgdGhlIFNQSSwgYW5kIGFsbCB0aGUgcGx1bWJpbmdzIHRvIG1ha2UgaXQgaGFwcGVuLiBU
aGlzIHBhdGNoIGFsc286CisgICAgICAgIDEpIGFkZHMgTG9jYWxBdXRoZW50aWNhdGlvblNQSSwg
d2hpY2ggaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIGEgZ2l2ZW4gTEFDb250ZXh0IGlzIHVubG9j
a2VkIG9yIG5vdDsKKyAgICAgICAgMikgaW1wcm92ZXMgTW9ja0xvY2FsQ29ubmVjdGlvbiBzdWNo
IHRoYXQgbW9jayB0ZXN0aW5nIGNhbiBzdGlsbCBiZSByYW4uCisKKyAgICAgICAgKiBQbGF0Zm9y
bS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
aW9uU29mdExpbmsuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuY3BwOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudDo6dmVyaWZ5VXNlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAod2tXZWJBdXRo
ZW50aWNhdGlvblRyYW5zcG9ydCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNh
dG9yTWFuYWdlcjo6dmVyaWZ5VXNlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRo
ZW50aWNhdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5h
bDo6dG9OU0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5h
bDo6dG9BcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6
bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQpOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVk
KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9u
QWZ0ZXJSZXNwb25zZVNlbGVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6cmVjZWl2ZUV4Y2VwdGlvbiBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5o
OgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rpb246OmZpbHRlclJlc3BvbnNlcyBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29u
bmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0aW9uOjppc1VubG9ja2Vk
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0aW9uOjpnZXRVc2VyQ29uc2Vu
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6c2Vs
ZWN0Q3JlZGVudGlhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENs
aWVudDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Ondr
V2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQ6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlciBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xv
Y2FsQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9N
b2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENv
bm5lY3Rpb246OmlzVW5sb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxD
b25uZWN0aW9uOjpmaWx0ZXJSZXNwb25zZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNb2Nr
TG9jYWxDb25uZWN0aW9uOjpnZXRVc2VyQ29uc2VudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OnNlbGVjdENyZWRlbnRpYWwgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdGlvbkZsYWdzLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisKIDIwMjAtMDItMjAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV2ViQXV0aG5dIFJlcGxhY2UgRGV2aWNlSWRlbnRpdHkuZnJhbWV3b3JrCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKaW5kZXggNWQzMDJmOGI4ZmMzNWRhMWU2Yzk0
NmUxMTIxOTY3ZDYyZTAwYTQ5OS4uNDVlYTFlNWZhNGI0YTZiOGY0MTQ2ODAwZmU5NjE1ZDRhNTJk
OGNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtNDAsNyArNDAs
NyBAQCBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QQogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAot
UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBz
aWduYXR1cmUsICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCitSZWY8QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6
OmNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKQogewogICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gdXNlcmhhbmRsZUJ1ZmZlcjsKICAgICBpZiAoIXVzZXJIYW5kbGUuaXNFbXB0eSgpKQpA
QCAtNDgsNiArNDgsMTYgQEAgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gY3Jl
YXRlKEFycmF5QnVmZmVyOjpjcmVhdGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRh
dGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1
cmUuc2l6ZSgpKSwgV1RGTW92ZSh1c2VyaGFuZGxlQnVmZmVyKSwgV1RGOjpudWxsb3B0KTsKIH0K
IAorUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlC
dWZmZXI+JiYgdXNlckhhbmRsZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZShXVEZNb3ZlKHJhd0lkKSwgV1RGTW92ZSh1c2VySGFuZGxlKSwgYWNjZXNzQ29udHJvbCkpOwor
fQorCit2b2lkIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6c2V0QXV0aGVudGljYXRv
ckRhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSkKK3sKKyAgICBt
X2F1dGhlbnRpY2F0b3JEYXRhID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0
YS5kYXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSk7Cit9CisKIEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJh
eUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBS
ZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhh
bmRsZSkKICAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKICAgICAs
IG1fYXV0aGVudGljYXRvckRhdGEoV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCkBAIC01Niw2
ICs2NiwxMyBAQCBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JgogewogfQogCitBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJy
YXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nl
c3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wpCisgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2Uo
V1RGTW92ZShyYXdJZCkpCisgICAgLCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkK
KyAgICAsIG1fYWNjZXNzQ29udHJvbChhY2Nlc3NDb250cm9sKQoreworfQorCiBBdXRoZW50aWNh
dG9yUmVzcG9uc2VEYXRhIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGF0YSgpIGNv
bnN0CiB7CiAgICAgYXV0byBkYXRhID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjpkYXRhKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaAppbmRleCBkNzBhOWNjZjhmMzkxYjBkZDYyYzJh
MTE0ZTExNTJmOWY2YzBkNmEyLi4zYjcwYjc0Y2FiNjAzNTc0YTc4MDg1MmQ0N2Q0ZmI1MGJiNmNk
MDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKQEAgLTI4LDYgKzI4LDkgQEAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNl
LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfX1NlY0Fj
Y2Vzc0NvbnRyb2wgKlNlY0FjY2Vzc0NvbnRyb2xSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzUsMzIgKzM4LDM4IEBAIGNsYXNzIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVy
PiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJh
eUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBP
cHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4g
Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCAg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJh
eUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFNlY0FjY2Vz
c0NvbnRyb2xSZWYpOwogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZSgpID0gZGVmYXVsdDsKIAotICAgIEFycmF5QnVmZmVyKiBhdXRoZW50aWNhdG9yRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fYXV0aGVudGljYXRvckRhdGEucHRyKCk7IH0KLSAgICBBcnJheUJ1ZmZl
ciogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmUucHRyKCk7IH0KKyAgICBB
cnJheUJ1ZmZlciogYXV0aGVudGljYXRvckRhdGEoKSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRp
Y2F0b3JEYXRhLmdldCgpOyB9CisgICAgQXJyYXlCdWZmZXIqIHNpZ25hdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2lnbmF0dXJlLmdldCgpOyB9CiAgICAgQXJyYXlCdWZmZXIqIHVzZXJIYW5kbGUo
KSBjb25zdCB7IHJldHVybiBtX3VzZXJIYW5kbGUuZ2V0KCk7IH0KKyAgICBjb25zdCBTdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQorICAgIHNpemVfdCBudW1i
ZXJPZkNyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZkNyZWRlbnRpYWxzOyB9
CisgICAgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKCkgY29uc3QgeyByZXR1cm4g
bV9hY2Nlc3NDb250cm9sLmdldCgpOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1
dGhlbnRpY2F0b3JEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIHZvaWQgc2V0U2ln
bmF0dXJlKFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUpIHsgbV9zaWduYXR1cmUgPSBXVEZN
b3ZlKHNpZ25hdHVyZSk7IH0KICAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7
IG1fbmFtZSA9IG5hbWU7IH0KLSAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVy
biBtX25hbWU7IH0KICAgICB2b2lkIHNldERpc3BsYXlOYW1lKGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUpIHsgbV9kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lOyB9Ci0gICAgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0KICAgICB2b2lk
IHNldE51bWJlck9mQ3JlZGVudGlhbHMoc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMpIHsgbV9u
dW1iZXJPZkNyZWRlbnRpYWxzID0gbnVtYmVyT2ZDcmVkZW50aWFsczsgfQotICAgIHNpemVfdCBu
dW1iZXJPZkNyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZkNyZWRlbnRpYWxz
OyB9CiAKIHByaXZhdGU6CiAgICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxB
cnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJik7CisgICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
KFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBTZWNBY2Nlc3NDb250cm9s
UmVmKTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OkFzc2Vy
dGlvbjsgfQogICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSgpIGNvbnN0IGZpbmFs
OwogCi0gICAgUmVmPEFycmF5QnVmZmVyPiBtX2F1dGhlbnRpY2F0b3JEYXRhOwotICAgIFJlZjxB
cnJheUJ1ZmZlcj4gbV9zaWduYXR1cmU7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2F1dGhl
bnRpY2F0b3JEYXRhOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1cmU7CiAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBtX3VzZXJIYW5kbGU7CiAKICAgICBTdHJpbmcgbV9uYW1lOwog
ICAgIFN0cmluZyBtX2Rpc3BsYXlOYW1lOwogICAgIHNpemVfdCBtX251bWJlck9mQ3JlZGVudGlh
bHMgeyAwIH07CisgICAgUmV0YWluUHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IG1fYWNjZXNzQ29u
dHJvbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25TUEkuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25TUEkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mN2EwZjZkMDNmMGNhMjVjN2UzMDYxMjU1NjQ5NTdmNjEwYThhYWRmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50
aWNhdGlvblNQSS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2ltcG9ydCA8TG9jYWxBdXRoZW50aWNhdGlvbi9Mb2NhbEF1dGhlbnRpY2F0aW9uLmg+CisK
KyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxMb2NhbEF1dGhlbnRpY2F0
aW9uL0xvY2FsQXV0aGVudGljYXRpb25fUHJpdmF0ZS5oPgorCisjZWxzZQorCit0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBMQU9wdGlvbikgeworICAgIExBT3B0aW9uTm90SW50ZXJhY3RpdmUs
Cit9OworCitAaW50ZXJmYWNlIExBQ29udGV4dChQcml2YXRlKSA8TlNTZWN1cmVDb2Rpbmc+CisK
Ky0gKE5TRGljdGlvbmFyeSAqKWV2YWx1YXRlUG9saWN5OihMQVBvbGljeSlwb2xpY3kgb3B0aW9u
czooTlNEaWN0aW9uYXJ5ICopb3B0aW9ucyBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKKworQGVu
ZAorCisjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcApp
bmRleCAwY2RkYmNmNDk3NjMzOTgyNDc1OWZlZTFhMDU1YWY1NmFiNWY0ZDU1Li5lNWNiNDczODY5
YmYxN2Y0MDMwZDgzZmVmZGI0OGRjNDJhMjM5NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwCkBAIC01
Myw2ICs1Myw4IEBAIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwoY29uc3QgQXV0aGVudGljYXRvck1hbmFnZXImIG1hbmFnCiAgICAgICAgIG1fdHJhbnNwb3J0
cy51bmNoZWNrZWRBcHBlbmQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKTsKICAgICBpZiAo
dHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpKQogICAgICAg
ICBtX3RyYW5zcG9ydHMudW5jaGVja2VkQXBwZW5kKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5m
Yyk7CisgICAgaWYgKHRyYW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6
SW50ZXJuYWwpKQorICAgICAgICBtX3RyYW5zcG9ydHMudW5jaGVja2VkQXBwZW5kKEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ6OkludGVybmFsKTsKIH0KIAogV2ViQXV0aGVudGljYXRpb25QYW5lbDo6
fldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQuaAppbmRleCA0NTk2NDRlZTNlNmViNjUxYzI5MmVmM2ZiNDliM2I0YTI2YWM3Njk4Li5hOGJl
ZjgzODcxNDIxZjYwMTkzOTgyYjcwMjQxYzM0MTc3Zjc2MTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2xpZW50LmgKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit0eXBlZGVmIHN0cnVjdCBfX1NlY0Fj
Y2Vzc0NvbnRyb2wgKlNlY0FjY2Vzc0NvbnRyb2xSZWY7CitPQkpDX0NMQVNTIExBQ29udGV4dDsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlOwogfQpAQCAtNTIsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc21p
c3NQYW5lbChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KSBjb25zdCB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRp
b25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdEFzc2Vy
dGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPj4mJiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGNvbnN0IHsgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsgY29tcGxldGlvbkhhbmRsZXIo
cmVzcG9uc2VzWzBdKTsgfQorICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0Nv
bnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCmluZGV4IDQzMWM2MzNi
MGZlYjBiNTUyYTZiOWQxODdlYWQzZDZmYjViY2M4YzIuLmY3MmViMGFlYTNmNDQ1ZTE2MTkwMTM5
NDk0OTM1NzIxOGJjZjQ4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaApAQCAtMzEsNiAr
MzEsNyBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xhc3MgTEFDb250ZXh0Owog
QGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xhc3MgX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbDsKIApAQCAtNDYsNiArNDcsOSBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CiAgICAgX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkJsb2NrZWQsCiAgICAgX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbFVwZGF0ZVBJTkF1dGhCbG9ja2VkLAogICAgIF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxV
cGRhdGVMQUVycm9yLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxp
Y2F0ZUNyZWRlbnRpYWwsCisgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9D
cmVkZW50aWFsLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNh
dGlvblJlc3VsdCkgewpAQCAtNTYsNiArNjAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBfV0tXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgewogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnQpIHsKICAgICBfV0tXZWJBdXRoZW50aWNh
dGlvblRyYW5zcG9ydFVTQiwKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydE5GQywK
KyAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAogfSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKQEAgLTcxLDYgKzc2
LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBl
KSB7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgZGlz
bWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OihfV0tXZWJBdXRoZW50aWNhdGlv
blJlc3VsdClyZXN1bHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilw
YW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6KE5TVUludGVnZXIpcmV0cmllcyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3Nl
cnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
cGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2VyV2l0aEFj
Y2Vzc0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAyZWIzMWU4MTJjOTU5OGU4OTg4NDBiOTU1
OGNlMzMyZjJlZDY3OWZmLi4xOTczYjBmNTY0ZDI1MWIyMGNmMjZhMzZhM2E2NGQ4YTI1MjgyMmYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNzMsNiArNzMsOCBAQCBzdGF0aWMg
X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnQgd2tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9y
dChXZWJDb3JlOjpBdXRoZQogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25UcmFu
c3BvcnRVU0I7CiAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmM6
CiAgICAgICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydE5GQzsKKyAgICBj
YXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsOgorICAgICAgICBy
ZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRJbnRlcm5hbDsKICAgICBkZWZhdWx0
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIF9XS1dlYkF1
dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCmluZGV4IGQxNmIxN2Q1
ZmM2YmM3OTUyMTRiMjdlODI1N2ZkNmYwMGJkNGM3ZTUuLmQ0YTg5MzVhYjY1YTY0MmRjZDAxMWI5
M2MwZmZmYzA5MjVmN2Y4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKQEAgLTM1LDYgKzM1LDEwIEBA
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
Cit0eXBlZGVmIHN0cnVjdCBfX1NlY0FjY2Vzc0NvbnRyb2wgKlNlY0FjY2Vzc0NvbnRyb2xSZWY7
CisKK09CSkNfQ0xBU1MgTEFDb250ZXh0OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7CiB9CkBAIC01Myw2ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdlYkF1
dGhlbnRpY2F0aW9uU3RhdHVzKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGlu
KHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJp
bmcmKT4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9u
c2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2ZXJp
ZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250
ZXh0ICopPiYmKSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3IoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggNzM2MjZj
YzA1MDI3YWU2ZTIxYjI4MTQzYmM4MDA5YjkyYjFhNzViNC4uODg1OTcxZjE4YjQyMWM2YjBhNjg0
YWNhODk2MjNlY2MzMjExNjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNw
cApAQCAtMjk1LDYgKzI5NSwxNCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzZWxlY3RB
c3NlcnRpb25SZXNwb25zZShjb25zdCBIYXNoU2V0PFJlZjxBdXRoZW50aWNhdAogICAgIH0pOwog
fQogCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRy
b2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQg
Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmV0YWluUHRyPFNlY0FjY2Vzc0NvbnRy
b2xSZWY+IGFjY2Vzc0NvbnRyb2wgPSBhY2Nlc3NDb250cm9sUmVmOworICAgIGRpc3BhdGNoUGFu
ZWxDbGllbnRDYWxsKFthY2Nlc3NDb250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250cm9sKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEFQSTo6
V2ViQXV0aGVudGljYXRpb25QYW5lbCYgcGFuZWwpIG11dGFibGUgeworICAgICAgICBwYW5lbC5j
bGllbnQoKS52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwogVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlU2VydmljZShBdXRoZW50aWNh
dG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6Ok9i
c2VydmVyJiBvYnNlcnZlcikgY29uc3QKIHsKICAgICByZXR1cm4gQXV0aGVudGljYXRvclRyYW5z
cG9ydFNlcnZpY2U6OmNyZWF0ZSh0cmFuc3BvcnQsIG9ic2VydmVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yTWFuYWdlci5oCmluZGV4IGMxNTFkZDkzMjY1OWY2MjA2YzBmMTVmYmVhMWU1YzA1NGEx
YTBmOWUuLmU4ZjJkMmJmZDgwYzEwY2FhY2Y4MzA1ZDQ3M2Q1YmQzZjhhZWFmYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvck1hbmFnZXIuaApAQCAtODMsNiArODMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgYXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMp
IGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAgIHZvaWQgc2Vs
ZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChMQUNvbnRleHQgKik+JiYpIGZpbmFsOwogCiAgICAgLy8gT3ZlcnJpZGVuIGJ5IE1vY2tBdXRo
ZW50aWNhdG9yTWFuYWdlci4KICAgICB2aXJ0dWFsIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJh
bnNwb3J0U2VydmljZT4gY3JlYXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNw
b3J0LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgKaW5k
ZXggMTU1MmIyNzM5MDNhYTY0ODJhMzkzYjhkMzg3OWEwM2Y0OGU2NTVhMi4uZTg0OTEwMjk1YmYz
YTI1YTRiYzA2ZTM1MWRiM2QxNGZiN2ZjZmI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRM
aW5rLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpbXBvcnQgPExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxBdXRoZW50aWNh
dGlvbi5oPgorI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIgogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihXZWJLaXQs
IExvY2FsQXV0aGVudGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IuaAppbmRleCBkZWQ5OGYyZDc2YWM0ZGU5NTFhNTg5NDBiMzZkMmI2ZTc0YWY0NGM3Li45YTQ3
NTcwZmU3MGIzYjcyNDhjY2UxMDUzMTRlNTBiOGNjOTAwZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAtMzksMTIgKzM5LDEzIEBAIGNsYXNzIExvY2FsQXV0
aGVudGljYXRvciBmaW5hbCA6IHB1YmxpYyBBdXRoZW50aWNhdG9yIHsKIHB1YmxpYzoKICAgICAv
LyBIZXJlIGlzIHRoZSBGU00uCiAgICAgLy8gTWFrZUNyZWRlbnRpYWw6IEluaXQgPT4gUmVxdWVz
dFJlY2VpdmVkID0+IFVzZXJDb25zZW50ZWQgPT4gQXR0ZXN0ZWQgPT4gRW5kCi0gICAgLy8gR2V0
QXNzZXJ0aW9uOiBJbml0ID0+IFJlcXVlc3RSZWNlaXZlZCA9PiBVc2VyQ29uc2VudGVkID0+IEVu
ZAorICAgIC8vIEdldEFzc2VydGlvbjogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQgPT4gUmVzcG9u
c2VTZWxlY3RlZCA9PiBVc2VyQ29uc2VudGVkID0+IEVuZAogICAgIGVudW0gY2xhc3MgU3RhdGUg
ewogICAgICAgICBJbml0LAogICAgICAgICBSZXF1ZXN0UmVjZWl2ZWQsCiAgICAgICAgIFVzZXJD
b25zZW50ZWQsCiAgICAgICAgIEF0dGVzdGVkLAorICAgICAgICBSZXNwb25zZVNlbGVjdGVkCiAg
ICAgfTsKIAogICAgIHN0YXRpYyBSZWY8TG9jYWxBdXRoZW50aWNhdG9yPiBjcmVhdGUoVW5pcXVl
UmVmPExvY2FsQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQpAQCAtNTYsMTQgKzU3LDE4IEBAIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgTG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENv
bm5lY3Rpb24+JiYpOwogCiAgICAgdm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFsOwotICAgIHZv
aWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250
cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50LCBMQUNvbnRleHQgKik7CisgICAg
dm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0Nv
bnRyb2xSZWYsIExBQ29udGV4dCAqKTsKICAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRpYWxB
ZnRlckF0dGVzdGVkKFNlY0tleVJlZiwgVmVjdG9yPHVpbnQ4X3Q+JiYgY3JlZGVudGlhbElkLCBW
ZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwgTlNBcnJheSAqY2VydGlmaWNhdGVzLCBOU0Vycm9y
ICopOwogCiAgICAgdm9pZCBnZXRBc3NlcnRpb24oKSBmaW5hbDsKLSAgICB2b2lkIGNvbnRpbnVl
R2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNl
bnQsIExBQ29udGV4dCAqLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFuZGxlKTsKKyAgICB2b2lkIGNvbnRpbnVlR2V0QXNz
ZXJ0aW9uQWZ0ZXJSZXNwb25zZVNlbGVjdGVkKFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U+JiYpOworICAgIHZvaWQgY29udGludWVHZXRBc3NlcnRpb25BZnRlclVz
ZXJDb25zZW50ZWQoTEFDb250ZXh0ICosIFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+JiYpOworCisgICAgdm9pZCByZWNlaXZlRXhjZXB0aW9uKFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmJiwgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgPSBXZWJBdXRoZW50aWNhdGlv
blN0YXR1czo6TEFFcnJvcikgY29uc3Q7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6Oklu
aXQgfTsKICAgICBVbmlxdWVSZWY8TG9jYWxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAg
SGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4gbV9h
c3NlcnRpb25SZXNwb25zZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2Fs
QXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCAyNWRkMWM2YWU5NjgxZjBlZjc4
Y2RiMWYzZDRjNDFiYTRlNGJiNWRlLi43OGI3M2RlMWM1MGMxMTQ2N2ZjYWQ1ODFmNzcxNDZhZmZh
NDQ3NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC04
Niw2ICs4NiwxOCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRvTlNEYXRhKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKICAgICByZXR1cm4gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldKTsKIH0K
IAorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNEYXRhPiB0b05TRGF0YShBcnJheUJ1ZmZlciog
YnVmZmVyKQoreworICAgIEFTU0VSVChidWZmZXIpOworICAgIC8vIEZJWE1FKDE4MzUzNCk6IENv
bnNpZGVyIHVzaW5nIGluaXRXaXRoQnl0ZXNOb0NvcHkuCisgICAgcmV0dXJuIGFkb3B0TlMoW1tO
U0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVmZmVyPiB0b0Fy
cmF5QnVmZmVyKE5TRGF0YSAqZGF0YSkKK3sKKyAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5n
dGgpOworfQorCiB9IC8vIExvY2FsQXV0aGVudGljYXRvckludGVybmFsCiAKIExvY2FsQXV0aGVu
dGljYXRvcjo6TG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbikKQEAgLTEwOCw3ICsxMjAsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6
bWFrZUNyZWRlbnRpYWwoKQogICAgIGlmIChub3RGb3VuZCA9PSBjcmVhdGlvbk9wdGlvbnMucHVi
S2V5Q3JlZFBhcmFtcy5maW5kTWF0Y2hpbmcoW10gKGF1dG8mIHB1YktleUNyZWRQYXJhbSkgewog
ICAgICAgICByZXR1cm4gcHViS2V5Q3JlZFBhcmFtLnR5cGUgPT0gUHVibGljS2V5Q3JlZGVudGlh
bFR5cGU6OlB1YmxpY0tleSAmJiBwdWJLZXlDcmVkUGFyYW0uYWxnID09IENPU0U6OkVTMjU2Owog
ICAgIH0pKSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RTdXBw
b3J0ZWRFcnJvciwgIlRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yIGRvZXNuJ3Qg
c3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMuIl9zIH0p
OworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgcGxh
dGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55IHByb3ZpZGVk
IFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTMxLDI0ICsxNDMsMjIgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1h
a2VDcmVkZW50aWFsKCkKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51
bGxwdHI7CiAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9f
YnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJlZik7CiAgICAg
ICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkgewotICAgICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBzdGF0dXMpOwot
ICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwg
bWFrZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICIsIHN0YXR1cykgfSk7CisgICAg
ICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3Vs
ZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9IGFkb3B0Q0Yo
YXR0cmlidXRlc0FycmF5UmVmKTsKIAotICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8z
NTkwMDU5Myk6IE5lZWQgdG8gb2J0YWluIHVzZXIgY29uc2VudCBhbmQgdGhlbiByZXR1cm4gZGlm
ZmVyZW50IGVycm9yIGFjY29yZGluZyB0byB0aGUgcmVzdWx0LgorICAgICAgICAvLyBGSVhNRTog
TmVlZCB0byBvYnRhaW4gdXNlciBjb25zZW50IGFuZCB0aGVuIHJldHVybiBkaWZmZXJlbnQgZXJy
b3IgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQuCiAgICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpu
c0F0dHJpYnV0ZXMgaW4gKE5TQXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlSZWYpIHsKICAgICAgICAg
ICAgIE5TRGF0YSAqbnNDcmVkZW50aWFsSWQgPSBuc0F0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBw
bGljYXRpb25MYWJlbF07CiAgICAgICAgICAgICBpZiAoZXhjbHVkZUNyZWRlbnRpYWxJZHMuY29u
dGFpbnMoU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5zQ3JlZGVudGlhbElk
LmJ5dGVzKSwgbnNDcmVkZW50aWFsSWQubGVuZ3RoKSkpIHsKLSAgICAgICAgICAgICAgICByZWNl
aXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiQXQgbGVhc3Qgb25l
IGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxp
c3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0pOworICAgICAg
ICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBOb3RBbGxvd2VkRXJyb3IsICJBdCBsZWFzdCBv
bmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMg
bGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSwgV2ViQXV0
aGVudGljYXRpb25TdGF0dXM6OkxBRHVwbGljYXRlQ3JlZGVudGlhbCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gU3Rl
cCA2LgotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTAwNTkzKTogVXBkYXRlIHRvIGEg
Zm9ybWFsIFVJLgogICAgIC8vIEdldCB1c2VyIGNvbnNlbnQuCiAgICAgUmV0YWluUHRyPFNlY0Fj
Y2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2w7CiAgICAgewpAQCAtMTU2LDI3ICsxNjYsMjUg
QEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICAgICAgYWNj
ZXNzQ29udHJvbCA9IGFkb3B0Q0YoU2VjQWNjZXNzQ29udHJvbENyZWF0ZVdpdGhGbGFncyhOVUxM
LCBrU2VjQXR0ckFjY2Vzc2libGVXaGVuUGFzc2NvZGVTZXRUaGlzRGV2aWNlT25seSwga1NlY0Fj
Y2Vzc0NvbnRyb2xQcml2YXRlS2V5VXNhZ2UgfCBrU2VjQWNjZXNzQ29udHJvbFVzZXJQcmVzZW5j
ZSwgJmVycm9yUmVmKSk7CiAgICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9y
UmVmKTsKICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkNv
dWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogJUAiLCAoTlNFcnJvciAqKWVycm9yUmVmKTsK
LSAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3Is
IG1ha2VTdHJpbmcoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogIiwgU3RyaW5nKCgo
TlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CisgICAgICAgICAg
ICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBj
cmVhdGUgYWNjZXNzIGNvbnRyb2w6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5sb2Nh
bGl6ZWREZXNjcmlwdGlvbikpIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVmID0gYWNjZXNz
Q29udHJvbC5nZXQoKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRyb2wgPSBXVEZN
b3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKExvY2Fs
Q29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0KSB7Ci0g
ICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMp
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2Jz
ZXJ2ZXIoKSkgeworICAgICAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYg
PSBhY2Nlc3NDb250cm9sLmdldCgpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0Nv
bnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0gKExBQ29udGV4dCAqY29udGV4dCkgeworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJV
c2VyQ29uc2VudGVkKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIGNvbnNlbnQsIGNvbnRleHQpOwotICAg
IH07Ci0gICAgbV9jb25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKLSAgICAgICAgbWFrZVN0cmlu
ZygiYWxsb3cgIl9zLCBjcmVhdGlvbk9wdGlvbnMucnAuaWQsICIgdG8gY3JlYXRlIGEgcHVibGlj
IGtleSBjcmVkZW50aWFsIGZvciAiX3MsIGNyZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUpLAotICAg
ICAgICBhY2Nlc3NDb250cm9sUmVmLAotICAgICAgICBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
ICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRl
ZChhY2Nlc3NDb250cm9sLmdldCgpLCBjb250ZXh0KTsKKyAgICAgICAgfTsKKyAgICAgICAgb2Jz
ZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxsYmFjaykpOwor
ICAgIH0KIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRp
YWxBZnRlclVzZXJDb25zZW50ZWQoU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVm
LCBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4dCAqY29udGV4
dCkKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJV
c2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgTEFDb250
ZXh0ICpjb250ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJ
bnRlcm5hbDsKIApAQCAtMTg0LDcgKzE5Miw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpj
b250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyCiAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOwogICAgIGF1dG8mIGNyZWF0aW9uT3B0
aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVl
c3REYXRhKCkub3B0aW9ucyk7CiAKLSAgICBpZiAoY29uc2VudCA9PSBMb2NhbENvbm5lY3Rpb246
OlVzZXJDb25zZW50OjpObykgeworICAgIGlmICghbV9jb25uZWN0aW9uLT5pc1VubG9ja2VkKGNv
bnRleHQpKSB7CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxv
d2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJfcyB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTIxMyw4ICsyMjEsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6
Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cgog
ICAgIH07CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbURlbGV0ZSgoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBl
cnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBkZWxldGUg
b2xkZXIgY3JlZGVudGlhbDogJWQiLCBzdGF0dXMpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChF
eGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBkZWxldGUg
b2xkZXIgY3JlZGVudGlhbDogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlv
bih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZGVsZXRlIG9sZGVyIGNyZWRl
bnRpYWw6ICIsIHN0YXR1cykgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIyMiw3
ICsyMjksNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlh
bEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cgogICAgIC8vIFRoZSBhYm92ZS10by1j
cmVhdGUgcHJpdmF0ZSBrZXkgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIGtleWNoYWluIHdoaWxlIHVz
aW5nIFNFUC4KICAgICBhdXRvIHByaXZhdGVLZXkgPSBtX2Nvbm5lY3Rpb24tPmNyZWF0ZUNyZWRl
bnRpYWxQcml2YXRlS2V5KGNvbnRleHQsIGFjY2Vzc0NvbnRyb2xSZWYsIHNlY0F0dHJMYWJlbCwg
c2VjQXR0ckFwcGxpY2F0aW9uVGFnLmdldCgpKTsKICAgICBpZiAoIXByaXZhdGVLZXkpIHsKLSAg
ICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIkNvdWxk
bid0IGNyZWF0ZSBwcml2YXRlIGtleS4iX3MgfSk7CisgICAgICAgIHJlY2VpdmVFeGNlcHRpb24o
eyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIl9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNDMsOCArMjUwLDcgQEAgdm9pZCBMb2NhbEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoU2VjQWNj
ZXNzQ29udHIKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNSZWYgPSBudWxscHRyOwogICAg
ICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRp
Y3Rpb25hcnlSZWYpY3JlZGVudGlhbElkUXVlcnksICZhdHRyaWJ1dGVzUmVmKTsKICAgICAgICAg
aWYgKHN0YXR1cykgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZXQgQ3JlZGVu
dGlhbCBJRDogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IENyZWRlbnRp
YWwgSUQ6ICIsIHN0YXR1cykgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5r
bm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZXQgQ3JlZGVudGlhbCBJRDogIiwgc3Rh
dHVzKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIHJl
dGFpbkF0dHJpYnV0ZXMgPSBhZG9wdENGKGF0dHJpYnV0ZXNSZWYpOwpAQCAtMjY4LDggKzI3NCw3
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJV
c2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyCiAgICAgICAgICAgICBwdWJsaWNLZXlEYXRhUmVm
ID0gYWRvcHRDRihTZWNLZXlDb3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihwdWJsaWNLZXkuZ2V0
KCksICZlcnJvclJlZikpOwogICAgICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0Yo
ZXJyb3JSZWYpOwogICAgICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZG4ndCBleHBvcnQgdGhlIHB1YmxpYyBrZXk6ICVAIiwgKE5TRXJyb3Iq
KWVycm9yUmVmKTsKLSAgICAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRh
IHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBleHBvcnQgdGhlIHB1YmxpYyBr
ZXk6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikp
IH0pOworICAgICAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1h
a2VTdHJpbmcoIkNvdWxkbid0IGV4cG9ydCB0aGUgcHVibGljIGtleTogIiwgU3RyaW5nKCgoTlNF
cnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKCgoTlNEYXRhICop
cHVibGljS2V5RGF0YVJlZi5nZXQoKSkubGVuZ3RoID09ICgxICsgMiAqIEVTMjU2RmllbGRFbGVt
ZW50TGVuZ3RoKSk7IC8vIDA0IHwgWCB8IFkKQEAgLTMwOSw4ICszMTQsNyBAQCB2b2lkIExvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQoU2VjS2V5
UmVmIHByaXZhdGVLZQogICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAK
ICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBhdHRlc3Q6ICVA
IiwgZXJyb3IpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93
bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbikpIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93
bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbikpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIEF0
dGVzdGF0aW9uIENlcnRpZmljYXRlIGFuZCBBdHRlc3RhdGlvbiBJc3N1aW5nIENBCkBAIC0zNDQs
MTAgKzM0OCw5IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAg
IC8vIFNraXAgU3RlcCA4IGFzIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgogICAg
IC8vIFN0ZXAgMTIgaXMgaW1wbGljaXRseSBjYXB0dXJlZCBieSBhbGwgVW5rbm93bkVycm9yIGV4
Y2VwdGlvbiBjYWxsYmFja3MuCiAgICAgLy8gU3RlcCAzLTUuIFVubGlrZSB0aGUgc3BlYywgaWYg
YW4gYWxsb3cgbGlzdCBpcyBwcm92aWRlZCBhbmQgdGhlcmUgaXMgbm8gaW50ZXJzZWN0aW9uIGJl
dHdlZW4gZXhpc3Rpbmcgb25lcyBhbmQgdGhlIGFsbG93IGxpc3QsIHdlIGFsd2F5cyByZXR1cm4g
Tm90QWxsb3dlZEVycm9yLgotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTAwNTkzKTog
TmVlZCB0byBpbmZvcm0gdXNlcnMuCiAgICAgYXV0byBhbGxvd0NyZWRlbnRpYWxJZHMgPSBwcm9k
dWNlSGFzaFNldChyZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKTsKICAgICBpZiAoIXJl
cXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuaXNFbXB0eSgpICYmIGFsbG93Q3JlZGVudGlh
bElkcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7
IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRo
ZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmVjZWl2
ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJl
IGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJB
dXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0zNjcsOCArMzcwLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFz
c2VydGlvbigpCiAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51bGxwdHI7CiAg
ICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0
aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKICAgICBpZiAoc3RhdHVzICYm
IHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBzdGF0dXMpOwotICAgICAgICByZWNlaXZlUmVzcG9u
ZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBxdWVy
eSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVu
a25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICIsIHN0YXR1
cykgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byByZXRhaW5BdHRyaWJ1dGVz
QXJyYXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CkBAIC0zODYsNDEgKzM4OCw2MSBA
QCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAgICAgaW50ZXJz
ZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMgPSByZXN1bHQ7CiAgICAgfQogICAgIGlmICghaW50
ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMuY291bnQpIHsKLSAgICAgICAgcmVjZWl2ZVJl
c3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVu
dGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJf
cyB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1h
dGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRo
ZW50aWNhdG9yLiJfcyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gU3RlcCA2LgotICAgIGF1dG8gKnNl
bGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXMgPSBtX2Nvbm5lY3Rpb24tPnNlbGVjdENyZWRlbnRp
YWwoaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMpOworICAgIGZvciAoTlNEaWN0aW9u
YXJ5ICphdHRyaWJ1dGUgOiBpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRlcykgeworICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFkZChBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSgKKyAgICAgICAgICAgIHRvQXJyYXlCdWZmZXIo
YXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwKKyAgICAgICAgICAgIHRv
QXJyYXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSksCisgICAg
ICAgICAgICAoX19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVbKGlkKWtTZWNB
dHRyQWNjZXNzQ29udHJvbF0pKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICB9CisgICAgbV9jb25uZWN0aW9uLT5maWx0ZXJSZXNw
b25zZXMobV9hc3NlcnRpb25SZXNwb25zZXMpOworCisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0g
dGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBhdXRvIGNhbGxiYWNrID0gW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29uc3QgQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlJiByZXNwb25zZSkgeworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBhdXRvIHJldHVyblJlc3BvbnNlID0gbV9hc3NlcnRpb25SZXNwb25zZXMu
dGFrZShjb25zdF9jYXN0PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSo+KCZyZXNwb25z
ZSkpOworICAgICAgICAgICAgaWYgKCFyZXR1cm5SZXNwb25zZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxl
Y3RlZChXVEZNb3ZlKCpyZXR1cm5SZXNwb25zZSkpOworICAgICAgICB9OworICAgICAgICBvYnNl
cnZlci0+c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UobV9hc3NlcnRpb25SZXNwb25zZXMsIFdURk1v
dmUoY2FsbGJhY2spKTsKKyAgICB9Cit9CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250
aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmIHJlc3BvbnNlKQoreworICAgIEFTU0VSVChtX3N0
YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVz
cG9uc2VTZWxlY3RlZDsKIAogICAgIC8vIFN0ZXAgNy4gR2V0IHVzZXIgY29uc2VudC4KLSAgICAv
LyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTkwMDU5Myk6IFVwZGF0ZSB0byBhIGZvcm1hbCBVSS4K
LSAgICBhdXRvIGNhbGxiYWNrID0gWwotICAgICAgICB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwKLSAgICAgICAgY3JlZGVudGlhbElkID0gdG9WZWN0b3Ioc2VsZWN0ZWRDcmVkZW50aWFs
QXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXSksCi0gICAgICAgIHVzZXJo
YW5kbGUgPSB0b1ZlY3RvcihzZWxlY3RlZENyZWRlbnRpYWxBdHRyaWJ1dGVzWyhpZClrU2VjQXR0
ckFwcGxpY2F0aW9uVGFnXSkKLSAgICBdKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29u
c2VudCwgTEFDb250ZXh0ICpjb250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
aWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBhdXRvIGFj
Y2Vzc0NvbnRyb2xSZWYgPSByZXNwb25zZS0+YWNjZXNzQ29udHJvbCgpOworICAgICAgICBhdXRv
IGNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXNwb25zZSA9IFdU
Rk1vdmUocmVzcG9uc2UpXSAoTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVH
ZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoY29uc2VudCwgY29udGV4dCwgY3JlZGVudGlh
bElkLCB1c2VyaGFuZGxlKTsKLSAgICB9OwotICAgIE5TRGF0YSAqaWREYXRhID0gc2VsZWN0ZWRD
cmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ107Ci0gICAgU3Ry
aW5nVmlldyBpZFN0cmluZ1ZpZXcgeyBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KFtpZERhdGEg
Ynl0ZXNdKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFtpZERhdGEgbGVuZ3RoXSkgfTsKLSAgICBt
X2Nvbm5lY3Rpb24tPmdldFVzZXJDb25zZW50KAotICAgICAgICBtYWtlU3RyaW5nKCJsb2cgaW50
byAiLCByZXF1ZXN0T3B0aW9ucy5ycElkLCAiIHdpdGggIiwgaWRTdHJpbmdWaWV3KSwKLSAgICAg
ICAgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpc2VsZWN0ZWRDcmVkZW50aWFsQXR0cmli
dXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSwKLSAgICAgICAgV1RGTW92ZShjYWxsYmFj
aykpOworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2Vy
Q29uc2VudGVkKGNvbnRleHQsIFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICAgICAgfTsKKyAgICAg
ICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxsYmFj
aykpOworICAgIH0KIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNz
ZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29u
c2VudCwgTEFDb250ZXh0ICpjb250ZXh0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRp
YWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFuZGxlKQordm9pZCBMb2NhbEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExBQ29udGV4
dCAqY29udGV4dCwgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4m
JiByZXNwb25zZSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50
ZXJuYWw7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZCk7Cisg
ICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlc3BvbnNlU2VsZWN0ZWQpOwogICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKIAotICAgIGlmIChjb25zZW50ID09IExvY2FsQ29u
bmVjdGlvbjo6VXNlckNvbnNlbnQ6Ok5vKSB7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24tPmlzVW5s
b2NrZWQoY29udGV4dCkpIHsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7
IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNDMyLDI1ICs0NTQsMjcgQEAgdm9pZCBMb2NhbEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29u
bmVjdGlvbjoKICAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShXVEY6OmdldDxQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykucnBJ
ZCwgZ2V0QXNzZXJ0aW9uRmxhZ3MsIGNvdW50ZXIsIHsgfSk7CiAKICAgICAvLyBTdGVwIDExLgot
ICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmU7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
c2lnbmF0dXJlOwogICAgIHsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICpxdWVyeSA9IEB7CisgICAg
ICAgIGF1dG8gcXVlcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOworICAgICAgICBbcXVlcnkgYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OkB7CiAgICAgICAg
ICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAogICAgICAgICAgICAgKGlkKWtT
ZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKLSAgICAgICAgICAg
IChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRvTlNEYXRhKGNyZWRlbnRpYWxJZCkuZ2V0
KCksCi0gICAgICAgICAgICAoaWQpa1NlY1VzZUF1dGhlbnRpY2F0aW9uQ29udGV4dDogY29udGV4
dCwKKyAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRvTlNEYXRhKHJl
c3BvbnNlLT5yYXdJZCgpKS5nZXQoKSwKICAgICAgICAgICAgIChpZClrU2VjUmV0dXJuUmVmOiBA
WUVTLAogI2lmIEhBVkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQogICAgICAgICAgICAgKGlk
KWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCiAjZWxzZQogICAgICAgICAgICAg
KGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICNlbmRpZgotICAgICAgICB9OworICAgICAgICB9
XTsKKyAgICAgICAgLy8gY29udGV4dCBpcyBudWxscHRyIGluIG1vY2sgdGVzdGluZy4KKyAgICAg
ICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICBbcXVlcnkgc2V0T2JqZWN0OmNvbnRleHQgZm9y
S2V5OihpZClrU2VjVXNlQXV0aGVudGljYXRpb25Db250ZXh0XTsKICAgICAgICAgQ0ZUeXBlUmVm
IHByaXZhdGVLZXlSZWYgPSBudWxscHRyOwotICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJ
dGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZwcml2YXRl
S2V5UmVmKTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LmdldCgpLCAmcHJpdmF0ZUtleVJlZik7CiAg
ICAgICAgIGlmIChzdGF0dXMpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2V0
IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICVkIiwgc3RhdHVzKTsKLSAgICAgICAgICAgIHJl
Y2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNv
dWxkbid0IGdldCB0aGUgcHJpdmF0ZSBrZXkgcmVmZXJlbmNlOiAiLCBzdGF0dXMpIH0pOworICAg
ICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291
bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICIsIHN0YXR1cykgfSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gYWRv
cHRDRihwcml2YXRlS2V5UmVmKTsKQEAgLTQ2MCwxOCArNDg0LDI3IEBAIHZvaWQgTG9jYWxBdXRo
ZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENv
bm5lY3Rpb246CiAKICAgICAgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7CiAgICAg
ICAgIC8vIEZJWE1FOiBDb252ZXJ0aW5nIENGVHlwZVJlZiB0byBTZWNLZXlSZWYgaXMgcXVpdGUg
c3VidGxlIGhlcmUuCi0gICAgICAgIGF1dG8gc2lnbmF0dXJlUmVmID0gYWRvcHRDRihTZWNLZXlD
cmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJlZikoKGlkKXByaXZhdGVLZXlSZWYpLCBr
U2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNzYWdlWDk2MlNIQTI1NiwgKF9fYnJpZGdl
IENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYpKTsKKyAgICAgICAgc2lnbmF0dXJlID0g
YWRvcHRDRihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJlZikoKGlkKXBy
aXZhdGVLZXlSZWYpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNzYWdlWDk2MlNI
QTI1NiwgKF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYpKTsKICAgICAg
ICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAgICBpZiAoZXJy
b3JSZWYpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNp
Z25hdHVyZTogJUAiLCAoTlNFcnJvciopZXJyb3JSZWYpOwotICAgICAgICAgICAgcmVjZWl2ZVJl
c3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3Qg
Z2VuZXJhdGUgdGhlIHNpZ25hdHVyZTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxv
Y2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsg
VW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZW5lcmF0ZSB0aGUgc2lnbmF0dXJl
OiAiLCBTdHJpbmcoKChOU0Vycm9yKillcnJvclJlZikubG9jYWxpemVkRGVzY3JpcHRpb24pKSB9
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBzaWduYXR1cmUgPSB0
b1ZlY3RvcigoTlNEYXRhICopc2lnbmF0dXJlUmVmLmdldCgpKTsKICAgICB9CiAKICAgICAvLyBT
dGVwIDEzLgotICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgdXNlcmhhbmRsZSkp
OworICAgIHJlc3BvbnNlLT5zZXRBdXRoZW50aWNhdG9yRGF0YShhdXRoRGF0YSk7CisgICAgcmVz
cG9uc2UtPnNldFNpZ25hdHVyZSh0b0FycmF5QnVmZmVyKChOU0RhdGEgKilzaWduYXR1cmUuZ2V0
KCkpKTsKKyAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKHJlc3BvbnNlKSk7Cit9CisKK3ZvaWQg
TG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0aW9uKEV4Y2VwdGlvbkRhdGEmJiBleGNl
cHRpb24sIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIHN0YXR1cykgY29uc3QKK3sKKyAgICBMT0df
RVJST1IoZXhjZXB0aW9uLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKGF1dG8qIG9i
c2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkKKyAgICAgICAgb2JzZXJ2ZXItPmF1dGhlbnRpY2F0
b3JTdGF0dXNVcGRhdGVkKHN0YXR1cyk7CisgICAgcmVjZWl2ZVJlc3BvbmQoV1RGTW92ZShleGNl
cHRpb24pKTsKKyAgICByZXR1cm47CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaAppbmRleCA5MTkxYjJjNjUzNDJjZDFiNjU3MTI1YTIz
MjY0NjE2ZmU4ZGUyMjlhLi41NDVhYzVmZjYxYjdiMmJhZTdkZTM4NzQyZDU2ODg4ZTVmMDgxNTNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9Mb2NhbENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaApAQCAtNDYsMjMgKzQ2LDE2IEBA
IGNsYXNzIExvY2FsQ29ubmVjdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxDb25uZWN0aW9uKTsKIHB1YmxpYzoKLSAgICBl
bnVtIGNsYXNzIFVzZXJDb25zZW50IHsKLSAgICAgICAgTm8sCi0gICAgICAgIFllcwotICAgIH07
Ci0KICAgICB1c2luZyBBdHRlc3RhdGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChOU0FycmF5ICosIE5TRXJyb3IgKik+OwotICAgIHVzaW5nIFVzZXJDb25zZW50Q2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJDb25zZW50KT47Ci0gICAgdXNpbmcgVXNlckNv
bnNlbnRDb250ZXh0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJDb25zZW50
LCBMQUNvbnRleHQgKik+OwogCiAgICAgTG9jYWxDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwogICAg
IHZpcnR1YWwgfkxvY2FsQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogICAgIC8vIE92ZXJyaWRl
ZCBieSBNb2NrTG9jYWxDb25uZWN0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBnZXRVc2VyQ29uc2Vu
dChjb25zdCBTdHJpbmcmIHJlYXNvbiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNlckNvbnNlbnRD
b250ZXh0Q2FsbGJhY2smJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzVW5sb2NrZWQoTEFD
b250ZXh0ICopIGNvbnN0OwogICAgIHZpcnR1YWwgUmV0YWluUHRyPFNlY0tleVJlZj4gY3JlYXRl
Q3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNv
bnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGdldEF0dGVzdGF0aW9uKFNlY0tleVJlZiwgTlNEYXRh
ICphdXRoRGF0YSwgTlNEYXRhICpoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYpIGNvbnN0Owot
ICAgIHZpcnR1YWwgTlNEaWN0aW9uYXJ5ICpzZWxlY3RDcmVkZW50aWFsKGNvbnN0IE5TQXJyYXkg
KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGZpbHRlclJlc3BvbnNlcyhIYXNoU2V0PFJlZjxX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYpIGNvbnN0IHsgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9u
Lm1tCmluZGV4IDhiYWVlZTcwOWZmYzdkM2NlNWNiOGU4MDE0YzMxM2I4YTBhZTAxYjQuLjUzZTAx
MjNhZDdhZGE1NTc1M2MyMjI5OWZlODllODg0MDJmYzIxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbENvbm5lY3Rpb24ubW0KQEAgLTM5LDIyICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYg
cmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIFVzZXJDb25zZW50Q29u
dGV4dENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Citib29sIExvY2FsQ29ubmVj
dGlvbjo6aXNVbmxvY2tlZChMQUNvbnRleHQgKmNvbnRleHQpIGNvbnN0CiB7Ci0gICAgYXV0byBj
b250ZXh0ID0gYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBh
dXRvIHJlcGx5ID0gbWFrZUJsb2NrUHRyKFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgICAg
IFVzZXJDb25zZW50IGNvbnNlbnQgPSBVc2VyQ29uc2VudDo6WWVzOwotICAgICAgICBpZiAoIXN1
Y2Nlc3MgfHwgZXJyb3IpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXV0aGVu
dGljYXRlIHdpdGggYmlvbWV0cmljczogJUAiLCBlcnJvcik7Ci0gICAgICAgICAgICBjb25zZW50
ID0gVXNlckNvbnNlbnQ6Ok5vOwotICAgICAgICB9Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
Y29uc2VudCwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCldKCkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihjb25zZW50LCBjb250ZXh0LmdldCgpKTsKLSAgICAgICAg
fSk7Ci0gICAgfSk7Ci0gICAgW2NvbnRleHQgZXZhbHVhdGVBY2Nlc3NDb250cm9sOmFjY2Vzc0Nv
bnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJhdGlvblVzZUtleVNpZ24gbG9jYWxp
emVkUmVhc29uOnJlYXNvbiByZXBseTpyZXBseS5nZXQoKV07CisgICAgTlNFcnJvciAqZXJyb3Ig
PSBuaWw7CisgICAgYXV0byByZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVBvbGljeTpMQVBvbGlj
eURldmljZU93bmVyQXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBvcHRpb25zOkB7IEAoTEFP
cHRpb25Ob3RJbnRlcmFjdGl2ZSk6IEBZRVMgfSBlcnJvcjomZXJyb3JdOworICAgIGlmICghcmVz
dWx0KQorICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQ6ICVAIiwg
ZXJyb3IpOworICAgIHJldHVybiAhIXJlc3VsdDsKIH0KIAogUmV0YWluUHRyPFNlY0tleVJlZj4g
TG9jYWxDb25uZWN0aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNvbnRleHQgKmNv
bnRleHQsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgY29uc3QgU3RyaW5n
JiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBjb25zdApAQCAt
ODgsMTIgKzc5LDYgQEAgTE9DQUxDT05ORUNUSU9OX0FERElUSU9OUwogI2VuZGlmCiB9CiAKLU5T
RGljdGlvbmFyeSAqTG9jYWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsKGNvbnN0IE5TQXJy
YXkgKmNyZWRlbnRpYWxzKSBjb25zdAotewotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1
OTAwNTM0KTogV2UgZG9uJ3QgaGF2ZSBhbiBVSSB0byBwcm9tcHQgdXNlcnMgZm9yIHNlbGVjdGlu
ZyBpbnRlcnNlY3RlZENyZWRlbnRpYWxzLCBhbmQgdGhlcmVmb3JlIHdlIGFsd2F5cyB1c2UgdGhl
IGZpcnN0IG9uZSBmb3Igbm93LgotICAgIHJldHVybiBjcmVkZW50aWFsc1swXTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4
IDNjNmIzZDdlMDEzY2U2ODA3MjgzOGI5MjY4YWVjYTliZGUyOThlY2YuLmRmM2Q5NWFlMTA5ZTVi
ZDQyMTI3YTNlNGYwM2M1NDUzYjU4YmMzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2VsZWN0
QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChM
QUNvbnRleHQgKik+JiYpIGNvbnN0IGZpbmFsOwogCiAgICAgX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCAqbV9wYW5lbDsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbERlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CkBAIC01OCw3ICs1OSw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGJvb2wgcGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsIDogMTsKICAgICAg
ICAgYm9vbCBwYW5lbERpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdCA6IDE7
CiAgICAgICAgIGJvb2wgcGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXNDb21wbGV0
aW9uSGFuZGxlciA6IDE7Ci0gICAgICAgIGJvb2wgcGFuZWxzZWxlY3RBc3NlcnRpb25SZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCBwYW5lbFNlbGVjdEFzc2VydGlv
blJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29sIHBhbmVsVmVyaWZ5
VXNlcldpdGhBY2Nlc3NDb250cm9sQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9kZWxl
Z2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5tbQppbmRleCBkNTE2NjMyYjk4ZDczODgxYzQzZTQzMTljMzk3
MzNlMDQwMzllYjVlLi40MDgwNjUyZGRkMjgzMjdkMTYzZWRlZGFhZWE3YjljMGM4ODBhMGQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQubW0KQEAgLTM4LDYgKzM4LDggQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL1J1bkxvb3AuaD4KIAorI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5r
LmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwg
KnBhbmVsLCBpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiBkZWxlZ2F0ZSkK
QEAgLTQ3LDcgKzQ5LDggQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudChfV0tXZWJBdXRoZW50aWNhdGlvblAKICAgICBtX2RlbGVnYXRl
TWV0aG9kcy5wYW5lbFVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDp1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBh
bmVsOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsRGlzbWlzc1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxXaXRoUmVzdWx0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IocGFuZWw6ZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OildOwogICAg
IG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdSZXRyaWVzQ29t
cGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihw
YW5lbDpyZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6Y29tcGxldGlvbkhhbmRsZXI6KV07
Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFu
ZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMucGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6c2VsZWN0
QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1l
dGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFuZGxlciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnZlcmlmeVVzZXJX
aXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0YWluUHRyPGlk
IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudDo6ZGVsZWdhdGUoKQpAQCAtNjcsNiArNzAsMTIgQEAgc3RhdGljIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUgd2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKFdl
YkF1dGhlbnQKICAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQ
SU5BdXRoQmxvY2tlZDsKICAgICBpZiAoc3RhdHVzID09IFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVz
OjpQaW5JbnZhbGlkKQogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVw
ZGF0ZVBJTkludmFsaWQ7CisgICAgaWYgKHN0YXR1cyA9PSBXZWJBdXRoZW50aWNhdGlvblN0YXR1
czo6TEFFcnJvcikKKyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRh
dGVMQUVycm9yOworICAgIGlmIChzdGF0dXMgPT0gV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxB
RHVwbGljYXRlQ3JlZGVudGlhbCkKKyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw7CisgICAgaWYgKHN0YXR1cyA9PSBXZWJB
dXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpCisgICAgICAgIHJldHVybiBfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWw7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVN
dWx0aXBsZU5GQ1RhZ3NQcmVzZW50OwogfQpAQCAtMTMzLDcgKzE0Miw3IEBAIHZvaWQgV2ViQXV0
aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJl
ZjxXZWJDb3JlOjpBCiB7CiAgICAgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsKIAotICAg
IGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyKSB7CisgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFNlbGVjdEFz
c2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmVzcG9uc2VzWzBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1OCw2ICsx
NjcsMjggQEAgdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRp
b25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkEKICAgICB9KS5nZXQoKV07CiB9CiAKK3Zv
aWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250
cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICop
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhv
ZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFuZGxlcikgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNl
KCkgaW5pdF0pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZGVs
ZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRd
KS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNoZWNrZXIgPSBD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxl
Y3RvcihwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlvbkhhbmRsZXI6
KSk7CisgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250
cm9sOmFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92
ZShjaGVja2VyKV0oTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNo
ZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisgICAgfSkuZ2V0KCldOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tM
b2NhbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDcyMDE1OGFjYzI1NTkxYjczMGZj
ZTcxY2FmZWRiZTM0MzE5NmRlZDIuLmQwZGQ5YjEwNDlhYTE3ZmJlZWUzYjg0OTJlNWVjNDFmNzU1
MmE4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCkBAIC0zNywx
MCArMzcsMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tMb2NhbENvbm5lY3Rpb24oY29u
c3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOwogCiBwcml2
YXRlOgotICAgIHZvaWQgZ2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYsIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgaXNVbmxvY2tlZChMQUNvbnRleHQgKikgY29uc3QgZmluYWw7CiAgICAgUmV0
YWluUHRyPFNlY0tleVJlZj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICos
IFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEg
KnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBnZXRBdHRlc3Rh
dGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwgQXR0ZXN0YXRp
b25DYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKLSAgICBOU0RpY3Rpb25hcnkgKnNlbGVjdENyZWRl
bnRpYWwoY29uc3QgTlNBcnJheSAqKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGZpbHRlclJlc3Bv
bnNlcyhIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+
PiYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9j
YWxDb25uZWN0aW9uLm1tCmluZGV4IDkxNWI1OTQ5OWZlN2VjZDI3YmZmNjliMmYwNjcwZGI3ZDRj
ZjMwZmYuLjQ5YTQxNmZhNjkxNmUxYjRiNzM4N2MxMTU4M2NhZDk2MDc0NGFmMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xv
Y2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4K
ICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpbXBvcnQgIkxv
Y2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIgpAQCAtNDMsMTcgKzQ0LDkgQEAgTW9ja0xvY2Fs
Q29ubmVjdGlvbjo6TW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db24KIHsKIH0KIAotdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjpnZXRVc2Vy
Q29uc2VudChjb25zdCBTdHJpbmcmLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2VyQ29uc2VudENv
bnRleHRDYWxsYmFjayYmIGNhbGxiYWNrKSBjb25zdAorYm9vbCBNb2NrTG9jYWxDb25uZWN0aW9u
Ojppc1VubG9ja2VkKExBQ29udGV4dCAqY29udGV4dCkgY29uc3QKIHsKLSAgICAvLyBNb2NrIGFz
eW5jIG9wZXJhdGlvbnMuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25maWd1cmF0
aW9uID0gbV9jb25maWd1cmF0aW9uLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11
dGFibGUgewotICAgICAgICBBU1NFUlQoY29uZmlndXJhdGlvbi5sb2NhbCk7Ci0gICAgICAgIGlm
ICghY29uZmlndXJhdGlvbi5sb2NhbC0+YWNjZXB0QXV0aGVudGljYXRpb24pIHsKLSAgICAgICAg
ICAgIGNhbGxiYWNrKFVzZXJDb25zZW50OjpObywgbmlsKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBjYWxsYmFjayhVc2VyQ29uc2VudDo6WWVzLCBhZG9wdE5TKFth
bGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKLSAgICB9KTsKKyAgICByZXR1
cm4gbV9jb25maWd1cmF0aW9uLmxvY2FsLT5hY2NlcHRBdXRoZW50aWNhdGlvbjsKIH0KIAogUmV0
YWluUHRyPFNlY0tleVJlZj4gTW9ja0xvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFBy
aXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYg
c2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QKQEAgLTEx
MiwxNSArMTA1LDIwIEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24o
U2VjS2V5UmVmLCBOU0RhdGEgKiwgTlNEYXRhICosIEF0dGVzdGF0CiAgICAgfSk7CiB9CiAKLU5T
RGljdGlvbmFyeSAqTW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3JlZGVudGlhbChjb25zdCBO
U0FycmF5ICpjcmVkZW50aWFscykgY29uc3QKK3ZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6Zmls
dGVyUmVzcG9uc2VzKEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4+JiByZXNwb25zZXMpIGNvbnN0CiB7Ci0gICAgYXV0byBwcmVmZXJyZWRVc2VyaGFu
ZGxlID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5n
Om1fY29uZmlndXJhdGlvbi5sb2NhbC0+cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCBvcHRpb25z
OjBdKTsKLSAgICBmb3IgKE5TRGljdGlvbmFyeSAqY3JlZGVudGlhbCA6IGNyZWRlbnRpYWxzKSB7
Ci0gICAgICAgIGlmIChbY3JlZGVudGlhbFsoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ10gaXNF
cXVhbFRvRGF0YTpwcmVmZXJyZWRVc2VyaGFuZGxlLmdldCgpXSkKLSAgICAgICAgICAgIHJldHVy
biBjcmVkZW50aWFsOworICAgIGF1dG8gaXRyID0gcmVzcG9uc2VzLmJlZ2luKCk7CisgICAgZm9y
ICg7IGl0ciAhPSByZXNwb25zZXMuZW5kKCk7ICsraXRyKSB7CisgICAgICAgIGF1dG8qIHVzZXJI
YW5kbGUgPSBpdHItPmdldCgpLnVzZXJIYW5kbGUoKTsKKyAgICAgICAgQVNTRVJUKHVzZXJIYW5k
bGUpOworICAgICAgICBhdXRvIHVzZXJoYW5kbGVCYXNlNjQgPSBiYXNlNjRFbmNvZGUodXNlckhh
bmRsZS0+ZGF0YSgpLCB1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICBpZiAodXNl
cmhhbmRsZUJhc2U2NCA9PSBtX2NvbmZpZ3VyYXRpb24ubG9jYWwtPnByZWZlcnJlZFVzZXJoYW5k
bGVCYXNlNjQpCisgICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIG5pbDsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVzcG9uc2VzLnRh
a2UoaXRyKTsKKyAgICBBU1NFUlQocmVzcG9uc2UpOworICAgIHJlc3BvbnNlcy5jbGVhcigpOwor
ICAgIHJlc3BvbnNlcy5hZGQoV1RGTW92ZSgqcmVzcG9uc2UpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvbkZsYWdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvbkZsYWdzLmgKaW5kZXggNTQ4OGEy
MTEzOTI5MjZjMGEzNjZmZmE4N2Y3NjU5MDlkOTFlNWI4OC4uOTc1MTgzZGZkNTc3NTJkMTIzZjY1
MzM3Yjc2Yjc5NTUyNDY2MTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25GbGFncy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3Mu
aApAQCAtNDUsNyArNDUsMTAgQEAgZW51bSBjbGFzcyBXZWJBdXRoZW50aWNhdGlvblN0YXR1cyA6
IHVpbnQ4X3QgewogICAgIE5vQ3JlZGVudGlhbHNGb3VuZCwKICAgICBQaW5CbG9ja2VkLAogICAg
IFBpbkF1dGhCbG9ja2VkLAotICAgIFBpbkludmFsaWQKKyAgICBQaW5JbnZhbGlkLAorICAgIExB
RXJyb3IsCisgICAgTEFEdXBsaWNhdGVDcmVkZW50aWFsLAorICAgIExBTm9DcmVkZW50aWFsLAog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMGY0OTdiZGIxZTVmZjY0NTgwZmRiZDQ5MDlh
YzYxOGQwZjg1OWU4Li5iNzQ4OTcxMGQ2ZDViNDhhMDNlNTYwMjgzNTkzYTQ0MTI5NGQ3M2ZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEwOTYsNiArMTA5Niw3IEBACiAJCTU3MERBQUM2MjMwMzdGN0YwMEU4RkMwNCAvKiBXS05GUmVh
ZGVyU2Vzc2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzBEQUFDNDIzMDM3RjdFMDBFOEZDMDQgLyogV0tORlJlYWRlclNlc3Npb25E
ZWxlZ2F0ZS5oICovOyB9OwogCQk1NzBEQUFDQTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0Ry
aXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcw
REFBQzgyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2ZXIuaCAqLzsgfTsKIAkJNTcyRkQ0
NDMyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRkQ0NDEyMjI2
NUNFMjAwQTFFQ0MzIC8qIFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oICovOyB9Owor
CQk1NzQyMTc5MjI0MDBFMjg2MDAyQjMwM0QgLyogTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0MjE3OTEyNDAw
RTA5ODAwMkIzMDNEIC8qIExvY2FsQXV0aGVudGljYXRpb25TUEkuaCAqLzsgfTsKIAkJNTc0NzI4
RDEyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDcyOENGMjM0NTZFOTgw
MDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTc0NzI4RDQyMzQ1NzBBRTAwMTcwMEFG
IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0NzI4RDMyMzQ1NzBBRTAwMTcwMEFGIC8q
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oICovOyB9OwogCQk1NzU5N0VCOTIx
ODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBI
aWREcml2ZXIuaCAqLzsgfTsKQEAgLTM4MDYsNiArMzgwNyw3IEBACiAJCTU3MERBQUM4MjMwMzg1
RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN0YXBOZmNEcml2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcwREFBQzkyMzAzODVGRDAwRThG
QzA0IC8qIEN0YXBOZmNEcml2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3RhcE5mY0RyaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkZENDQxMjIyNjVDRTIwMEEx
RUNDMyAvKiBXZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViVmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU3NDIxNzkxMjQwMEUwOTgwMDJCMzAzRCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsQXV0aGVudGljYXRpb25TUEkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTc0NzI4Q0YyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQ3MjhEMDIzNDU2RTk4MDAxNzAw
QUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU3NDcyOEQzMjM0NTcwQUUwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzM2LDYgKzU3MzgsNyBAQAog
CQkJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8sCiAJ
CQkJQkNDNDNBQjgxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAg
Ki8sCiAJCQkJQkNDNDNBQjkxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0
YS5oICovLAorCQkJCTQ5RUNBNDFCMjNGQ0E0ODYwMDIzMzU4RCAvKiBQb2xpY3lEZWNpc2lvbi5o
ICovLAogCQkJCUUxOEM5MkYzMTJEQjlFNzEwMENGMkFFQiAvKiBQcmludEluZm8uY3BwICovLAog
CQkJCUUxQ0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCAqLywKIAkJCQk0NjNG
RDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi8sCkBA
IC01ODYwLDcgKzU4NjMsNiBAQAogCQkJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLywKIAkJCQk0OTYwQTNCQzIzQzUyODY0
MDA5NjE4NDIgLyogV2ViVmlld0NhdGVnb3J5LmggKi8sCiAJCQkJQzAzMzdERDAxMjdBMjk4MDAw
OEZGNEY0IC8qIFdlYldoZWVsRXZlbnQuY3BwICovLAotCQkJCTQ5RUNBNDFCMjNGQ0E0ODYwMDIz
MzU4RCAvKiBQb2xpY3lEZWNpc2lvbi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBTaGFyZWQ7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjgxMyw2ICs2ODE1LDcgQEAKIAkJCQkxQTU3
MDUxMDFCRTQxMEU1MDA4NzRBRjEgLyogQmxvY2tTUEkuaCAqLywKIAkJCQkzN0MyMUNBRDFFOTk0
QzBDMDAyOUQ1RjkgLyogQ29yZVByZWRpY3Rpb25TUEkuaCAqLywKIAkJCQkyREFBREE4RTIyOThD
MjEwMDBFMzZCMEMgLyogRGV2aWNlTWFuYWdlbWVudFNQSS5oICovLAorCQkJCTU3NDIxNzkxMjQw
MEUwOTgwMDJCMzAzRCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggKi8sCiAJCQkJNTdCODI2
NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oICovLAogCQkJCTM3NTRENTQ0MUIz
QTI5RkQwMDNBNEM3RiAvKiBOU0ludm9jYXRpb25TUEkuaCAqLywKIAkJCQkzN0I0N0UyQzFENjRE
Qjc2MDA1RjRFRkYgLyogb2JqY1NQSS5oICovLApAQCAtMTAzMzYsNiArMTAzMzksNyBAQAogCQkJ
CTQxMzA3NUIyMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDEwODc2MTFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3OERDMjk4MjE1NUEwMDIwMDc0RTgxNSAvKiBMb2Nh
bEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3NDIxNzkyMjQw
MEUyODYwMDJCMzAzRCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0RDRURBQzIxNEM2MDI3MDAxNkI4NDcgLyogTG9jYWxBdXRoZW50aWNhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1N0RDRURBRDIxNEM2MDJDMDAxNkI4NDcgLyogTG9jYWxDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURBRTIxNEM2MDMzMDAxNkI4NDcgLyogTG9j
YWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNDg0LDYgKzEwNDg4LDcgQEAKIAkJCQkx
QTRBOUYzMzEyQjg0NEUyMDA4RkU5ODQgLyogUGx1Z2luUXVpcmtzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0Q2MjI3ODE3MzlEODYzMDA1QkQ3RkYgLyogUGx1Z2luU2FuZGJveFByb2ZpbGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNkZCN0FGMTFFNjRCNjgwMERCMTM3MSAvKiBQbHVnaW5WaWV3
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0OUVDQTQxQzIzRkNBNUQ4MDAyMzM1OEQgLyogUG9saWN5
RGVjaXNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTgxMjJCMzUxNUIwMDhEMEU4QiAv
KiBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQTBF
RDM1MUY3NDdDQ0YwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzE1Q0JCMzYyM0YzNzc3MTAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDc3Nyw3ICsxMDc4Miw2IEBACiAJCQkJMkQ1QzlEMDYxOUM4MUQ4RjAw
QjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkMzOTIyOTIz
MTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNCRDM5MTUxMjVCQjFBODAwRDJDMjlGIC8qIFdlYlBhZ2VQcm94eU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk0OUVDQTQxQzIzRkNBNUQ4MDAyMzM1OEQgLyogUG9saWN5RGVj
aXNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMjEyN0M0MTkwODIzOUEwMERBRjM1QyAvKiBX
ZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzQ2OTREMTFBNTFF
MzY4MDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzQ2OTRDQTFBNEI0RUExMDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFByb3h5TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDU3MzExNzI2MjY1Mzc1MmZkNTdjMDdlYTBiMzYwZWJmN2NmZDdhMTAuLjgzODIw
OTQxNTA0OWJjYmI0MDMxM2Y5NjllZTgyYzNkZjA5NmNkOWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wMi0y
MSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRo
bl0gSW1wbGVtZW50IFNQSSBmb3IgdGhlIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA4NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTkzNjkzMDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQmVzaWRlcyBhZGRpbmcgQVBJIHRlc3RzLCB0aGlzIHBhdGNoIGFs
c28gdGVhY2hlcyBUZXN0V2ViS2l0QVBJIHRvIHVzZSByZXN0cmljdGVkIGVudGl0bGVtZW50cy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1t
YWNPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAg
ICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5lbDp1cGRhdGVXZWJB
dXRoZW50aWNhdGlvblBhbmVsOl0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25Q
YW5lbERlbGVnYXRlIHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBh
bmVsOnZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEtbm8tY3Jl
ZGVudGlhbC5odG1sOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
d2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlh
bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbDogQWRkZWQu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC5odG1sOiBBZGRlZC4KKwogMjAyMC0wMi0yMCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHJ1bi13ZWJraXQtdGVzdHMgaGVscCBkZXNjcmlw
dGlvbiBmb3Igc2tpcC1mYWlsaW5nLXRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1lbnRzIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0
bGVtZW50cwppbmRleCBlYTBjMWY3YzQ3NGEyNWM3MTBjMzg1ZGQ2OGJjOTRlODIwOTBhNzEwLi5h
OWY5Y2RmMDRjMmZiYmQwMmUzYTJlZWYyMjYyNDdhZTZlYjk2MjM4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRs
ZW1lbnRzCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktp
dEFQSS1tYWNPUy5lbnRpdGxlbWVudHMKQEAgLTIsNiArMiwxMCBAQAogPCFET0NUWVBFIHBsaXN0
IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5j
b20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVyc2lvbj0iMS4wIj4KIDxk
aWN0PgorCTxrZXk+a2V5Y2hhaW4tYWNjZXNzLWdyb3Vwczwva2V5PgorCTxhcnJheT4KKwkJPHN0
cmluZz5jb20uYXBwbGUuVGVzdFdlYktpdEFQSTwvc3RyaW5nPgorCTwvYXJyYXk+CiAJPGtleT5j
b20uYXBwbGUuc2VjdXJpdHkudGVtcG9yYXJ5LWV4Y2VwdGlvbi5zYnBsPC9rZXk+CiAJPGFycmF5
PgogCQk8c3RyaW5nPihhbGxvdyBtYWNoLWlzc3VlLWV4dGVuc2lvbiAocmVxdWlyZS1hbGwgKGV4
dGVuc2lvbi1jbGFzcyAmcXVvdDtjb20uYXBwbGUud2Via2l0LmV4dGVuc2lvbi5tYWNoJnF1b3Q7
KSkpPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRp
b25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3Vy
YXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKaW5kZXggMzBhOGNhZjBjMjQ3MGQ2NzZiNmRj
ZTM2MjFmMDliMDRhYzc5MGQzMS4uY2E4ZTE3MTVhY2UxYzYzYTYwZDhiNDVjMWMxZmI1NzE4MGQz
ZWZlYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJLnhjY29uZmlnCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwpAQCAtNjksMyArNjksMTAgQEAgQ09ERV9TSUdOX0VO
VElUTEVNRU5UU1tzZGs9aXBob25lKl0gPSBDb25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlP
Uy5lbnRpdGxlbWUKIENPREVfU0lHTl9FTlRJVExFTUVOVFNbc2RrPW1hY29zeCpdID0gQ29uZmln
dXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHM7CiAKIFNUUklQX1NUWUxF
ID0gZGVidWdnaW5nOworCitDT0RFX1NJR05fSURFTlRJVFlbc2RrPW1hY29zeCpdID0gJChDT0RF
X1NJR05fSURFTlRJVFlfJChDT05GSUdVUkFUSU9OKSk7CitDT0RFX1NJR05fSURFTlRJVFlfRGVi
dWcgPSAkKENPREVfU0lHTl9JREVOVElUWV8kKFVTRV9JTlRFUk5BTF9TREspKTsKK0NPREVfU0lH
Tl9JREVOVElUWV9SZWxlYXNlID0gJChDT0RFX1NJR05fSURFTlRJVFlfJChVU0VfSU5URVJOQUxf
U0RLKSk7CitDT0RFX1NJR05fSURFTlRJVFlfWUVTID0gJChXS19FTkdJTkVFUklOR19DT0RFX1NJ
R05fSURFTlRJVFkpOworQ09ERV9TSUdOX0lERU5USVRZX1Byb2R1Y3Rpb24gPSAkKENPREVfU0lH
Tl9JREVOVElUWV9Qcm9kdWN0aW9uXyQoVVNFX0lOVEVSTkFMX1NESykpOworQ09ERV9TSUdOX0lE
RU5USVRZX1Byb2R1Y3Rpb25fWUVTID0gLTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTQx
NTdmNjg4ZDlkMGJiOGZlNzFjZGFiODliYzg3YjBkY2YxM2E0NS4uMTVkNTA3Zjk4YWZjODI3Mzg5
MjU0ZTQzMzhjNjMyODA4MGRkMWYxNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0OSw2
ICszNDksMTEgQEAKIAkJNTczMjU1QTUyMjEzOUJDNzAwMzk2QUU4IC8qIGhlbGxvd29ybGQud2Vi
YXJjaGl2ZSBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzMyNTVBNDIyMTM5QjkwMDAzOTZBRTggLyogaGVsbG93b3JsZC53ZWJhcmNoaXZlICov
OyB9OwogCQk1NzMyNTVBNjIyMTM5QkM3MDAzOTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0xLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTczMjU1QTIyMjEzOUI4RjAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMS5odG1sICovOyB9
OwogCQk1NzMyNTVBNzIyMTM5QkM3MDAzOTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0yLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcz
MjU1QTMyMjEzOUI5MDAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMi5odG1sICovOyB9Owor
CQk1NzQyMTc4ODI0MDBBQzI1MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS1lcnJvci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgKi87IH07CisJCTU3NDIxNzhB
MjQwMEFFRDgwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxh
LWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0MjE3ODkyNDAwQUVEMDAwMkIzMDNEIC8qIHdlYi1h
dXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRt
bCAqLzsgfTsKKwkJNTc0MjE3OEMyNDAwQ0Q0NzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1nZXQtYXNzZXJ0aW9uLWxhLW5vLWNyZWRlbnRpYWwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc4QjI0MDBDRDJEMDAyQjMw
M0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEtbm8tY3JlZGVudGlhbC5o
dG1sICovOyB9OworCQk1NzQyMTc4RTI0MDBEMkRGMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0
aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAvKiB3ZWIt
YXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi87IH07CisJCTU3NDIxNzkw
MjQwMEQ1NTYwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTc0MjE3OEYyNDAwRDU0RDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwuaHRtbCAqLzsgfTsKIAkJNTc0RjU1RDIyMDRENDdGMDAwMjk0OEM2IC8qIFNlY3VyaXR5
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3NEY1NUQwMjA0RDQ3MUMwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi87IH07
CiAJCTU3NTg1OTdGMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU4NTk3RTIzQTI1MjdBMDBD
NzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwICovOyB9OwogCQk1NzU4NTk4NDIzQzNDM0E0MDBDNzQ1
NzIgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLWdldC1yZXRy
aWVzLWVycm9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTc1ODU5ODMyM0MzQzM2MjAwQzc0NTcyIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQtcmV0cmllcy1lcnJvci5odG1sICovOyB9OwpA
QCAtMTUxNyw2ICsxNTIyLDcgQEAKIAkJCQk1NzhEQTQ0RTIzRUNEMjhCMDAyNDYwMTAgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTcwRDI2RkMyM0MzRjg3MDAwRDVDRjY3
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1waW4uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RFQzIzNEYxRjkzMDBFODVFMDkgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJ
CQkJNTc0MjE3OEMyNDAwQ0Q0NzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLWxhLW5vLWNyZWRlbnRpYWwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1
Nzk4MzM5MjIzNjhGQTM3MDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2
M0RFQTIzNEVBNjZEMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24t
bmZjLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc3NDU0RDIyMzU5QkIwMTAwOEUx
RUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLXUyZi1uby1jcmVkZW50aWFs
cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTUzMSw2ICsxNTM3LDEwIEBACiAJCQkJ
NTc4REE0NEEyM0VDRDE4NjAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtaGlkLXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJNTcwRDI2RjYyM0MzRDMzMDAwRDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1t
YWtlLWNyZWRlbnRpYWwtaGlkLXBpbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3
OTgzMzdFMjM2MDE5QTQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50
aWFsLWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTU3NDIxNzhBMjQwMEFFRDgw
MDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0
ZS1jcmVkZW50aWFsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTc0MjE3ODgyNDAw
QUMyNTAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJy
b3IuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk1NzQyMTc4RTI0MDBEMkRGMDAyQjMw
M0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAorCQkJCTU3NDIxNzkwMjQwMEQ1NTYwMDJCMzAzRCAvKiB3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
MUMyQjgxODYxQzg5MjU5RDAwQTU1MjlGIC8qIHdlYmZvbnQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQk1MTcxNEVCNDFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJD
bGVhbnVwLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MTcxNEVCNTFDRjhDNzhD
MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKQEAgLTE5NjEsNiArMTk3MSwxMSBAQAogCQk1NzMyNTVBMzIyMTM5QjkwMDAzOTZB
RTggLyogbG9hZC13ZWItYXJjaGl2ZS0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG9hZC13ZWItYXJjaGl2
ZS0yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMyNTVBNDIyMTM5Qjkw
MDAzOTZBRTggLyogaGVsbG93b3JsZC53ZWJhcmNoaXZlICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZS5icGxpc3Q7IHBhdGggPSBoZWxsb3dvcmxk
LndlYmFyY2hpdmU7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzVGMDI1MUYzQTRF
QTYwMDBFRTgwMSAvKiBUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVt
ZW50czsgcGF0aCA9ICJUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NzQyMTc4NzI0MDBBQkZEMDAyQjMwM0QgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1h
dXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTU3NDIxNzg5MjQwMEFFRDAwMDJCMzAzRCAvKiB3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUt
Y3JlZGVudGlhbC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc0MjE3OEIy
NDAwQ0QyRDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLW5v
LWNyZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1sYS1uby1jcmVkZW50aWFsLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1NzQyMTc4RDI0MDBEMjZDMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NDIxNzhGMjQw
MEQ1NEQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0RjU1RDAyMDRENDcxQzAwMjk0OEM2IC8qIFNl
Y3VyaXR5LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gU2VjdXJpdHkuZnJhbWV3b3JrOyBw
YXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcms7IHNvdXJj
ZVRyZWUgPSBTREtST09UOyB9OwogCQk1NzU4NTk3RDIzQTI1MjdBMDBDNzQ1NzIgLyogQ3RhcFBp
blRlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3RhcFBpblRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTc1ODU5N0UyM0EyNTI3QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEN0YXBQaW5UZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTM1NzksNiArMzU5NCw3IEBACiAJCQkJNTc4REE0NEQyM0VDRDI2MTAwMjQ2MDEw
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1waW4taW52YWxpZC1lcnJv
ci1yZXRyeS5odG1sICovLAogCQkJCTU3MEQyNkZCMjNDM0Y4NjUwMEQ1Q0Y2NyAvKiB3ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLmh0bWwgKi8sCiAJCQkJNTc2NjNERUIy
MzRGMUY4MDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5o
dG1sICovLAorCQkJCTU3NDIxNzhCMjQwMENEMkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi1sYS1uby1jcmVkZW50aWFsLmh0bWwgKi8sCiAJCQkJNTc5ODMzN0Iy
MzVFQjY1QzAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1t
dWx0aXBsZS10YWdzLmh0bWwgKi8sCiAJCQkJNTc2NjNERTkyMzRFQTYwQjAwRTg1RTA5IC8qIHdl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sICovLAogCQkJCTU3NzQ1NEQx
MjM1OUJBRDUwMDhFMUVENyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi11MmYt
bm8tY3JlZGVudGlhbHMuaHRtbCAqLywKQEAgLTM1OTMsNiArMzYwOSwxMCBAQAogCQkJCTU3OERB
NDQ5MjNFQ0QxNTUwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFs
LWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1sICovLAogCQkJCTU3MEQyNkY1MjNDM0Qz
MjcwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4u
aHRtbCAqLywKIAkJCQk1Nzk4MzM3RDIzNjAxOTZEMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0
aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCAqLywKKwkJCQk1NzQyMTc4OTI0MDBBRUQwMDAy
QjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUt
Y3JlZGVudGlhbC5odG1sICovLAorCQkJCTU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3ZWIt
YXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgKi8sCisJCQkJNTc0
MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEuaHRtbCAqLywKKwkJCQk1NzQyMTc4RjI0MDBENTREMDAyQjMwM0QgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC5odG1sICovLAogCQkJCTUxNzE0RUIyMUNGOEM3NjEw
MDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICovLAogCQkJCTUxNzE0
RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICov
LAogCQkJCTUxMjBDODNCMUU2NzRFMzUwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMuaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAw
ODMzYzQ5ODlhYmMzYWEzNGEzY2E2ODgzMWQwNGFmNDA2MmYzNmUzLi5iNDc4OGE2MTRmYzU4ZmEz
YzNlYWQ4NGU0ODUxYWNjMGE1NzNiMjI1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQg
IlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMu
aCIKKyNpbXBvcnQgPExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxBdXRoZW50aWNhdGlvbi5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0V4cGVyaW1lbnRhbEZl
YXR1cmUuaD4KQEAgLTQ5LDkgKzUwLDE4IEBAIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVOb0NyZWRlbnRpYWxzRm91bmQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5CbG9ja2VkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3
ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlUElOQXV0aEJsb2NrZWQgPSBmYWxzZTsKIHN0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkID0gZmFsc2U7Citz
dGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvciA9IGZhbHNlOwor
c3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVu
dGlhbCA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxB
Tm9DcmVkZW50aWFsID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2FuY2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKK3N0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxWZXJpZnlVc2VyID0gZmFsc2U7CiBzdGF0aWMgU3RyaW5nIHdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxQaW47CiBzdGF0aWMgQk9PTCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5k
bGUgPSBOTzsKK3N0YXRpYyBTdHJpbmcgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9CisgICAg
IkJEai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBnRnBzakYvUW0xNzQ5VkJKUGdxVUl3ZmhX
SEo5MW5iN1UiCisgICAgIlBINzZjMCtXRk96WktzbFB5eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVu
Zm5CZ0VWRmg1emV2Ky94cEhRSXZ1cTYiCisgICAgIlJRPT0iOworc3RhdGljIFN0cmluZyB0ZXN0
VXNlcmhhbmRsZUJhc2U2NCA9ICJBQUVDQXdRRkJnY0lDUT09IjsKIAogQGludGVyZmFjZSBUZXN0
V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxEZWxlZ2F0ZT4KIEBlbmQKQEAgLTg0LDYgKzk0LDE4IEBAIC0gKHZvaWQpcGFu
ZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB1cGRhdGVXZWJBdXRoZW50aWNh
dGlvblBhbmVsOihfCiAgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZh
bGlkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAodXBkYXRlID09IF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yKSB7CisgICAgICAgIHdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAodXBkYXRlID09IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1
cGxpY2F0ZUNyZWRlbnRpYWwpIHsKKyAgICAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaWYgKHVwZGF0ZSA9PSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRl
bnRpYWwpIHsKKyAgICAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50
aWFsID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogLSAodm9pZClwYW5lbDoo
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRpc21pc3NXZWJBdXRoZW50aWNhdGlv
blBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGljYXRpb25SZXN1bHQpcmVzdWx0CkBAIC0x
MTEsNiArMTMzLDExIEBAIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwg
KilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6CiAKIC0gKHZvaWQpcGFuZWw6
KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25z
ZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKily
ZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBpZiAocmVzcG9u
c2VzLmNvdW50ID09IDEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2VzWzBd
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEVYUEVDVF9FUShyZXNwb25zZXMuY291
bnQsIDJ1bCk7CiAgICAgZm9yIChfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
ICpyZXNwb25zZSBpbiByZXNwb25zZXMpIHsKICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3BvbnNl
Lm5hbWUgaXNFcXVhbDpAImpvaG5wc21pdGhAZXhhbXBsZS5jb20iXSB8fCBbcmVzcG9uc2UubmFt
ZSBpc0VxdWFsOkAiIl0pOwpAQCAtMTIzLDYgKzE1MCwxMyBAQCAtICh2b2lkKXBhbmVsOihfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6KE5T
QXJyYQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlc1tpbmRleF0pOwogfQogCistICh2
b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdmVyaWZ5VXNlcldp
dGhBY2Nlc3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9sUmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlcgorewor
ICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyID0gdHJ1ZTsKKyAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdE5TKFtbTEFDb250ZXh0IGFsbG9jXSBpbml0XSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoY29udGV4dC5nZXQoKSk7Cit9CisKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0V2Vi
QXV0aGVudGljYXRpb25QYW5lbEZha2VEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsRGVsZWdhdGU+CkBAIC0yMzEsNiArMjY1LDIyIEBAIHN0YXRpYyBfV0tFeHBl
cmltZW50YWxGZWF0dXJlICp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKQog
ICAgIHJldHVybiB0aGVGZWF0dXJlLmdldCgpOwogfQogCitzdGF0aWMgX1dLRXhwZXJpbWVudGFs
RmVhdHVyZSAqd2ViQXV0aGVudGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxG
ZWF0dXJlKCkKK3sKKyAgICBzdGF0aWMgUmV0YWluUHRyPF9XS0V4cGVyaW1lbnRhbEZlYXR1cmU+
IHRoZUZlYXR1cmU7CisgICAgaWYgKHRoZUZlYXR1cmUpCisgICAgICAgIHJldHVybiB0aGVGZWF0
dXJlLmdldCgpOworCisgICAgTlNBcnJheSAqZmVhdHVyZXMgPSBbV0tQcmVmZXJlbmNlcyBfZXhw
ZXJpbWVudGFsRmVhdHVyZXNdOworICAgIGZvciAoX1dLRXhwZXJpbWVudGFsRmVhdHVyZSAqZmVh
dHVyZSBpbiBmZWF0dXJlcykgeworICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWw6QCJX
ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckVuYWJsZWQiXSkgeworICAgICAgICAg
ICAgdGhlRmVhdHVyZSA9IGZlYXR1cmU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gdGhlRmVhdHVyZS5nZXQoKTsKK30KKwogc3RhdGljIHZvaWQgcmVz
ZXQoKQogewogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSBmYWxzZTsKQEAgLTI0MSw5
ICsyOTEsMTMgQEAgc3RhdGljIHZvaWQgcmVzZXQoKQogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVQSU5CbG9ja2VkID0gZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVw
ZGF0ZVBJTkF1dGhCbG9ja2VkID0gZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVw
ZGF0ZVBJTkludmFsaWQgPSBmYWxzZTsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRl
TEFFcnJvciA9IGZhbHNlOworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxp
Y2F0ZUNyZWRlbnRpYWwgPSBmYWxzZTsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRl
TEFOb0NyZWRlbnRpYWwgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2Vs
SW1tZWRpYXRlbHkgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGluID0gZW1w
dHlTdHJpbmcoKTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUgPSBO
TzsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlciA9IGZhbHNlOwogfQogCiBz
dGF0aWMgdm9pZCBjaGVja1BhbmVsKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKnBhbmVsLCBO
U1N0cmluZyAqcmVseWluZ1BhcnR5SUQsIE5TQXJyYXkgKnRyYW5zcG9ydHMsIF9XS1dlYkF1dGhl
bnRpY2F0aW9uVHlwZSB0eXBlKQpAQCAtMjc3LDYgKzMzMSw1NiBAQCBzdGF0aWMgdm9pZCBjaGVj
a0ZyYW1lSW5mbyhXS0ZyYW1lSW5mbyAqZnJhbWUsIGJvb2wgaXNNYWluRnJhbWUsIE5TU3RyaW5n
ICp1cmwsCiAgICAgRVhQRUNUX0VRKGZyYW1lLndlYlZpZXcsIHdlYlZpZXcpOwogfQogCitib29s
IGFkZEtleVRvS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdCBT
dHJpbmcmIHJwSWQsIGNvbnN0IFN0cmluZyYgdXNlckhhbmRsZUJhc2U2NCkKK3sKKyAgICBOU0Rp
Y3Rpb25hcnkqIG9wdGlvbnMgPSBAeworICAgICAgICAoaWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQp
a1NlY0F0dHJLZXlUeXBlRUNTRUNQcmltZVJhbmRvbSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5
Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKKyAgICAgICAgKGlkKWtTZWNBdHRy
S2V5U2l6ZUluQml0czogQDI1NiwKKyAgICB9OworICAgIENGRXJyb3JSZWYgZXJyb3JSZWYgPSBu
dWxscHRyOworICAgIGF1dG8ga2V5ID0gYWRvcHRDRihTZWNLZXlDcmVhdGVXaXRoRGF0YSgKKyAg
ICAgICAgKF9fYnJpZGdlIENGRGF0YVJlZilhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJhc2U2NEVuY29kZWRTdHJpbmc6cHJpdmF0ZUtleUJhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2
NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSwKKyAgICAgICAgKF9fYnJp
ZGdlIENGRGljdGlvbmFyeVJlZilvcHRpb25zLAorICAgICAgICAmZXJyb3JSZWYKKyAgICApKTsK
KyAgICBpZiAoZXJyb3JSZWYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5TRGljdGlv
bmFyeSogYWRkUXVlcnkgPSBAeworICAgICAgICAoaWQpa1NlY1ZhbHVlUmVmOiAoaWQpa2V5Lmdl
dCgpLAorICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAorICAgICAgICAo
aWQpa1NlY0F0dHJMYWJlbDogcnBJZCwKKyAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25U
YWc6IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzp1
c2VySGFuZGxlQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3du
Q2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlOiAoaWQp
a1NlY0F0dHJBY2Nlc3NpYmxlQWZ0ZXJGaXJzdFVubG9jaywKKyNpZiBIQVZFKERBVEFfUFJPVEVD
VElPTl9LRVlDSEFJTikKKyAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWlu
OiBAWUVTCisjZWxzZQorICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUworI2VuZGlm
CisgICAgfTsKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQWRkKChfX2JyaWRnZSBDRkRp
Y3Rpb25hcnlSZWYpYWRkUXVlcnksIE5VTEwpOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIGNsZWFuVXBLZXljaGFp
bihjb25zdCBTdHJpbmcmIHJwSWQpCit7CisgICAgTlNEaWN0aW9uYXJ5KiBkZWxldGVRdWVyeSA9
IEB7CisgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCisgICAgICAgIChp
ZClrU2VjQXR0ckxhYmVsOiBycElkLAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlOiAo
aWQpa1NlY0F0dHJBY2Nlc3NpYmxlQWZ0ZXJGaXJzdFVubG9jaywKKyNpZiBIQVZFKERBVEFfUFJP
VEVDVElPTl9LRVlDSEFJTikKKyAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNo
YWluOiBAWUVTCisjZWxzZQorICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUworI2Vu
ZGlmCisgICAgfTsKKyAgICBTZWNJdGVtRGVsZXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
ZGVsZXRlUXVlcnkpOworfQorCiB9IC8vIG5hbWVzYXBjZTsKIAogVEVTVChXZWJBdXRoZW50aWNh
dGlvblBhbmVsLCBOb1BhbmVsVGltZW91dCkKQEAgLTEwNzYsNiArMTE4MCwxMTggQEAgVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBNdWx0aXBsZUFjY291bnRzKQogICAgIEVYUEVDVF9FUShb
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVzZXJIYW5kbGUiXSBpc0Vx
dWFsVG9TdHJpbmc6QCI8bnVsbD4iXSwgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFu
ZGxlKTsKIH0KIAorVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUVycm9yKQoreworICAg
IHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEtZXJyb3IiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFt
ZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5n
OllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMg
Zm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1
cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMg
Zm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRv
ckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBV
dGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yKTsKK30KKworVEVT
VChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUR1cGxpY2F0ZUNyZWRlbnRpYWwpCit7CisgICAg
cmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3Vy
ZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9z
ZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhw
ZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9z
ZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9j
YWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1Jl
Y3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIEFT
U0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIs
IHRlc3RVc2VyaGFuZGxlQmFzZTY0KSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3
ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFEdXBsaWNhdGVDcmVkZW50aWFsKTsKKyAgICBj
bGVhblVwS2V5Y2hhaW4oIiIpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExB
Tm9DcmVkZW50aWFsKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0
VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLW5vLWNyZWRlbnRpYWwiIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0
byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3Vy
YXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJu
YWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRo
ZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRo
ZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVMQU5vQ3JlZGVudGlhbCk7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5l
bCwgTEFNYWtlQ3JlZGVudGlhbE51bGxEZWxlZ2F0ZSkKK3sKKyAgICByZXNldCgpOworICAgIFJl
dGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhIiB3aXRoRXh0ZW5z
aW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKwor
ICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9j
b25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0
aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJh
dGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6
d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworICAgIFtbY29uZmlndXJh
dGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6
d2ViQXV0aGVudGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJlKCld
OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtkZWxlZ2F0ZSBzZXRJc051bGw6dHJ1ZV07Cisg
ICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCld
XTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKKyAgICBjbGVh
blVwS2V5Y2hhaW4oIiIpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFr
ZUNyZWRlbnRpYWwpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RV
UkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpT
Q0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRF
bmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJp
bWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRF
bmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxB
dXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3Qg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQo
KV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlmeVVzZXIpOwor
ICAgIGNoZWNrUGFuZWwoW2RlbGVnYXRlIHBhbmVsXSwgQCIiLCBAW2Fkb3B0TlMoW1tOU051bWJl
ciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRVU0JdKS5n
ZXQoKSwgYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50
aWNhdGlvblRyYW5zcG9ydEludGVybmFsXSkuZ2V0KCldLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5
cGVDcmVhdGUpOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiT3BlcmF0aW9uIHRpbWVk
IG91dC4iXTsgLy8gTEFDb250ZXh0IGlzIGxvY2tlZC4KK30KKworVEVTVChXZWJBdXRoZW50aWNh
dGlvblBhbmVsLCBMQUdldEFzc2VydGlvbikKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0
cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbiIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpj
b25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlv
bldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMi
IGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRp
Y2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRp
Y2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
KworICAgIEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJh
c2U2NCwgIiIsIHRlc3RVc2VyaGFuZGxlQmFzZTY0KSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRp
bDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlcik7CisgICAgY2hlY2tQYW5l
bChbZGVsZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0
V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQl0pLmdldCgpLCBhZG9wdE5T
KFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNw
b3J0SW50ZXJuYWxdKS5nZXQoKV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZUdldCk7CisgICAg
W3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJPcGVyYXRpb24gdGltZWQgb3V0LiJdOyAvLyBMQUNv
bnRleHQgaXMgbG9ja2VkLgorICAgIGNsZWFuVXBLZXljaGFpbigiIik7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLW5vLWNyZWRlbnRpYWwuaHRtbCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24tbGEtbm8tY3JlZGVudGlhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2N2Q0MmFlMDNmYzk3MjM3MDgz
YjEwODMzNjM0MGIzNjE5MWMxNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxh
LW5vLWNyZWRlbnRpYWwuaHRtbApAQCAtMCwwICsxLDE2IEBACis8aW5wdXQgdHlwZT0idGV4dCIg
aWQ9ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2Nh
bDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxz
ZSB9IH0pOworICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQu
Zm9jdXMoKTsgfSk7CisgICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVi
bGljS2V5OiB7CisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAg
ICAgICAgICAgIHRpbWVvdXQ6IDEKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1h
dXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwKaW5kZXggMmRlMmU5MjdjMGE1NDE1NDk2
N2RmNWM0OWE1ZmRhMGRmMDA1MThjZC4uMjI1NGVlZGE5ZmE2YThjMGM1YmJlNjJlNGU0NDZkNDYy
N2QyNjk3MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5odG1sCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24uaHRtbApAQCAtNiw5ICs2LDE1IEBACiAgICAgY29uc3Qgb3B0aW9ucyA9IHsKICAgICAgICAg
cHVibGljS2V5OiB7CiAgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwK
LSAgICAgICAgICAgIHRpbWVvdXQ6IDEKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAogICAgICAg
ICB9CiAgICAgfTsKIAotICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyk7Cisg
ICAgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4g
eworICAgICAgICAvLyBjb25zb2xlLmxvZygiU3VjY2VlZGVkISIpOworICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiU3VjY2VlZGVk
ISIpOworICAgIH0sIGVycm9yID0+IHsKKyAgICAgICAgLy8gY29uc29sZS5sb2coZXJyb3IubWVz
c2FnZSk7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKGVycm9yLm1lc3NhZ2UpOworICAgIH0pOwogPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNh
dGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhYTU5
NjUwNmE1MzRiMjVmMGJjNjU4ODk2MWJlM2RkZWI0NGI0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1t
YWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbApAQCAtMCwwICsxLDQz
IEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAgY29uc3Qg
dGVzdENyZWRlbnRpYWxJZEhleCA9ICI0OEM0OTcxRTc4MDVFRTExMEVCMDQ5NDBFRjcwQjc0NThG
QkM2RDFFIjsKKyAgICBmdW5jdGlvbiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoaGV4U3RyaW5nKQor
ICAgIHsKKyAgICAgICAgaWYgKGhleFN0cmluZy5sZW5ndGggJSAyICE9IDApCisgICAgICAgICAg
ICB0aHJvdyAiSW52YWxpZCBoZXhTdHJpbmciOworICAgICAgICB2YXIgYXJyYXlCdWZmZXIgPSBu
ZXcgVWludDhBcnJheShoZXhTdHJpbmcubGVuZ3RoIC8gMik7CisKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBoZXhTdHJpbmcubGVuZ3RoOyBpICs9IDIpIHsKKyAgICAgICAgICAgIHZhciBi
eXRlVmFsdWUgPSBwYXJzZUludChoZXhTdHJpbmcuc3Vic3RyKGksIDIpLCAxNik7CisgICAgICAg
ICAgICBpZiAoYnl0ZVZhbHVlID09IE5hTikKKyAgICAgICAgICAgICAgICB0aHJvdyAiSW52YWxp
ZCBoZXhTdHJpbmciOworICAgICAgICAgICAgYXJyYXlCdWZmZXJbaS8yXSA9IGJ5dGVWYWx1ZTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICB9CisKKyAgICBp
ZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBm
YWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIGludGVybmFscy53
aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsKKyAgICB9CisKKyAgICBj
b25zdCBvcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgIHJwOiB7
CisgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIs
CisgICAgICAgICAgICAgICAgaWQ6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
Y2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAgICBwdWJLZXlDcmVkUGFy
YW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICBleGNs
dWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGhleFN0cmluZ1RvVWlu
dDhBcnJheSh0ZXN0Q3JlZGVudGlhbElkSGV4KSB9XSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEw
MCwKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJy
b3IuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMTYx
MjFiYTRjYTJkYjUzM2RmZTVkMmJmMDMzMDRjZGE1MjQ2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1t
YWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbApAQCAtMCwwICsxLDI1IEBACis8aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0
aW9uOiBmYWxzZSB9IH0pOworICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+
IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisgICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAg
ICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgIG5h
bWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAg
ICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIGlk
OiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBs
ZXNlZWQiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4
QXJyYXkoMTYpLAorICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1Ymxp
Yy1rZXkiLCBhbGc6IC0zNSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtMjU3IH1dLCAv
LyBFUzM4NCwgUlMyNTYKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMCwKKyAgICAgICAgfQorICAg
IH07CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpOworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dl
Yi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC1sYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyN2UyNWNhMmRhMmJlZDRkODlhODBiMDI3YjZhMDk1NjBh
YjJjNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbApAQCAtMCww
ICsxLDY2IEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAg
Y29uc3QgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9CisgICAgICAgICJCRGovenhTa3pLZ2FC
dVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pGL1FtMTc0OVZCSlBncVVJd2ZoV0hKOTFuYjdVIiArCisg
ICAgICAgICJQSDc2YzArV0ZPelpLc2xQeXlGc2U0Z29HSVcyUjdrOVZITFBFWmw1bmZuQmdFVkZo
NXpldisveHBIUUl2dXE2IiArCisgICAgICAgICJSUT09IjsKKyAgICBjb25zdCB0ZXN0QXR0ZXN0
YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCA9CisgICAgICAgICJNSUlCNmpDQ0FaQ2dBd0lCQWdJR0FX
SEF4Y2p2TUFvR0NDcUdTTTQ5QkFNQ01GTXhKekFsQmdOVkJBTU1Ia0poIiArCisgICAgICAgICJj
MmxqSUVGMGRHVnpkR0YwYVc5dUlGVnpaWElnVTNWaUlFTkJNVEVUTUJFR0ExVUVDZ3dLUVhCd2JH
VWdTVzVqIiArCisgICAgICAgICJMakVUTUJFR0ExVUVDQXdLUTJGc2FXWnZjbTVwWVRBZUZ3MHhP
REF5TWpNd016TTNNakphRncweE9EQXlNalF3IiArCisgICAgICAgICJNelEzTWpKYU1Hb3hJakFn
QmdOVkJBTU1HVEF3TURBNE1ERXdMVEF3TUVFME9VRXlNekJCTURJeE0wRXhHakFZIiArCisgICAg
ICAgICJCZ05WQkFzTUVVSkJRU0JEWlhKMGFXWnBZMkYwYVc5dU1STXdFUVlEVlFRS0RBcEJjSEJz
WlNCSmJtTXVNUk13IiArCisgICAgICAgICJFUVlEVlFRSURBcERZV3hwWm05eWJtbGhNRmt3RXdZ
SEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUV2Q2plIiArCisgICAgICAgICJQenI2U2c3NlhN
b0h1R2FiUGFHNnpqcExGTDhaZDgvNzRIaDVQY0wyWnErbytmN0VOWFgrN25FWFhZdDBTOFV4IiAr
CisgICAgICAgICI1VElSdzRoZ2JmeFhRYldMRXFNNU1EY3dEQVlEVlIwVEFRSC9CQUl3QURBT0Jn
TlZIUThCQWY4RUJBTUNCUEF3IiArCisgICAgICAgICJGd1lKS29aSWh2ZGpaQWdDQkFvd0NLRUdC
QVIwWlhOME1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lBbEs4QThJIiArCisgICAgICAgICJrNDNU
YnZLdVlHSFpzMURUZ3BUd21LVEJ2SVV3NWJ3Z1p1WW5BaUVBdHVKakRMS2JHTkpBSkZNaTVkZUVC
cW5vIiArCisgICAgICAgICJwQlRDcWJmYkRKY2NmeVFwam5ZPSI7CisgICAgY29uc3QgdGVzdEF0
dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQgPQorICAgICAgICAiTUlJQ0l6Q0NB
YWlnQXdJQkFnSUllTmpoRzl0bkRHZ3dDZ1lJS29aSXpqMEVBd0l3VXpFbk1DVUdBMVVFQXd3ZSIg
KworICAgICAgICAiUW1GemFXTWdRWFIwWlhOMFlYUnBiMjRnVlhObGNpQlNiMjkwSUVOQk1STXdF
UVlEVlFRS0RBcEJjSEJzWlNCSiIgKworICAgICAgICAiYm1NdU1STXdFUVlEVlFRSURBcERZV3hw
Wm05eWJtbGhNQjRYRFRFM01EUXlNREF3TkRJd01Gb1hEVE15TURNeSIgKworICAgICAgICAiTWpB
d01EQXdNRm93VXpFbk1DVUdBMVVFQXd3ZVFtRnphV01nUVhSMFpYTjBZWFJwYjI0Z1ZYTmxjaUJU
ZFdJZyIgKworICAgICAgICAiUTBFeE1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSmJtTXVNUk13RVFZ
RFZRUUlEQXBEWVd4cFptOXlibWxoTUZrdyIgKworICAgICAgICAiRXdZSEtvWkl6ajBDQVFZSUtv
Wkl6ajBEQVFjRFFnQUVvU1ovMXQ5ZUJBRVZwNWE4UHJYYWNtYkdiOHpOQzFYMyIgKworICAgICAg
ICAiU3RMSTlZTzZZMENMN2JsSG1TR21qR1dUd0Q0UStpMEoyQlkzK2JQSFRHUnlBOWpHQjNNU2Jh
Tm1NR1F3RWdZRCIgKworICAgICAgICAiVlIwVEFRSC9CQWd3QmdFQi93SUJBREFmQmdOVkhTTUVH
REFXZ0JTRDVhTWhuckIwdy9saGtQMlhUaU1RZHFTaiIgKworICAgICAgICAiOGpBZEJnTlZIUTRF
RmdRVTVtV2YxRFlMVFhVZFE5eG1PSC91cWVOU0Q4MHdEZ1lEVlIwUEFRSC9CQVFEQWdFRyIgKwor
ICAgICAgICAiTUFvR0NDcUdTTTQ5QkFNQ0Eya0FNR1lDTVFDM00zNjBMTHRKUzYwWjlxM3ZWakp4
TWdNY0ZRMXJvR1RVY0txdiIgKworICAgICAgICAiVys0aEo0Q2VKanlTWFRncTZJRUhuL3lXYWI0
Q01RQ201Tm5LNlNPU0srQXFXdW05bEw4N1czRTZBQTFmMlR2SiIgKworICAgICAgICAiL2hnb2sv
MzRqcjkzbmhTODd0T1FOZHhEUzh6eWlxdz0iOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7
CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsKKyAgICAgICAgICAgIGxvY2FsOiB7CisgICAgICAgICAgICAgICAgYWNjZXB0QXV0aGVudGlj
YXRpb246IHRydWUsCisgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IHRydWUsCisg
ICAgICAgICAgICAgICAgcHJpdmF0ZUtleUJhc2U2NDogdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2
NCwKKyAgICAgICAgICAgICAgICB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlv
bkNlcnRpZmljYXRlQmFzZTY0LAorICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZUNBQ2VydGlm
aWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlQmFzZTY0IH19
KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3Vz
KCk7IH0pOworICAgIH0KKworICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0
IiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAg
bmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICBpZDogbmV3IFVpbnQ4QXJy
YXkoMTYpLAorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAg
ICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAt
NyB9XSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMCwKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9
PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKCJTdWNjZWVkZWQhIik7CisgICAgICAgIHdpbmRv
dy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJTdWNjZWVk
ZWQhIik7CisgICAgfSwgZXJyb3IgPT4geworICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnJvci5t
ZXNzYWdlKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRs
ZXIucG9zdE1lc3NhZ2UoZXJyb3IubWVzc2FnZSk7CisgICAgfSk7Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGUyODczMWI0M2EwODc0Y2RkZDY4NjRiYTI2MWYxNjU4Y2IwZDgzMQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxpbnB1dCB0
eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3Vz
KCk7IH0pOworCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7Cisg
ICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAi
Sm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIGlkOiBuZXcgVWludDhBcnJheSgxNiks
CisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAor
ICAgICAgICAgICAgdGltZW91dDogMTAwLAorICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAg
ICAgICAgLy8gY29uc29sZS5sb2coIlN1Y2NlZWRlZCEiKTsKKyAgICAgICAgd2luZG93LndlYmtp
dC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEiKTsK
KyAgICB9LCBlcnJvciA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2Up
OworICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0
TWVzc2FnZShlcnJvci5tZXNzYWdlKTsKKyAgICB9KTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391450</attachid>
            <date>2020-02-21 21:21:51 -0800</date>
            <delta_ts>2020-02-22 21:27:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208087-20200221212150.patch</filename>
            <type>text/plain</type>
            <size>101729</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uMmNlMDBiNjNjNTRkNzc4NTMzYjVkYjY5YzgxYTE1
NWQwOGJmNzgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAyLTIxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmhhbmNlcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgdG8gYWNj
b21tb25kYXRlIHJlc3BvbnNlcworICAgICAgICByZXR1cm5lZCBmcm9tIHRoZSBwbGF0Zm9ybSBh
dXRoZW50aWNhdG9yLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRB
dXRoZW50aWNhdG9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGljYXRv
ckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGlzcGxheU5hbWUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpudW1iZXJPZkNyZWRlbnRp
YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZTo6YWNjZXNzQ29udHJvbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldFNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXREaXNwbGF5TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE51bWJlck9m
Q3JlZGVudGlhbHMpOgorCiAyMDIwLTAyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUgYWZ0
ZXIgcjI1NjgwOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1NjEwMmJjYzg4Y2FiN2IwNjhiNGY0ZTJiNTk5MmYwNzdk
ZDRiZTMwLi40ZTUxMGI0MDJjMzU2MGQwYTdhMzdiNzc1NDhjOWMyMzc4YTdmODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0wMi0yMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSBmb3IgdGhlIHBs
YXRmb3JtIGF1dGhlbnRpY2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODA4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNjkzMDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGVyZSBpcyB0
aGUgbmV3bHkgYWRkZWQgU1BJOgorICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CisgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yLAorICAgICAgICAg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCwK
KyAgICAgICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlh
bCwKKyAgICAgICAgfTsKKworICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tX
ZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydCkgeworICAgICAgICAgICAgLi4uCisgICAgICAgICAg
ICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAorICAgICAgICB9OworCisg
ICAgICAgIEBwcm90b2NvbCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2Jq
ZWN0PgorICAgICAgICBAb3B0aW9uYWwKKyAgICAgICAgLi4uCisgICAgICAgIC0gKHZvaWQpcGFu
ZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2VyV2l0aEFjY2Vz
c0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBA
ZW5kCisKKyAgICAgICAgSWxsdXN0cmF0aW9uczoKKyAgICAgICAgMSkgX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbFVwZGF0ZTogdGhyZWUgZXJyb3IgYXJlIGFkZGVkIHRvIGhlbHAgY2xpZW50cyB0
byBpbmZvcm0gdXNlcnMuCisgICAgICAgIGEpIFdLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBRXJyb3I6IEFuIGludGVybmFsIGVycm9yLCBjbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMg
YW5kIHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0KKyAgICAgICAgYXV0aGVudGljYXRpb24gcHJvY2Vz
cy4gVGhpcyBlcnJvciBjYW4gYmUgcmV0dXJuZWQgYXQgYW55IHRpbWUuCisgICAgICAgIGIpIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw6IEl0IG1l
YW5zIGEgY3JlZGVudGlhbCBpcyBmb3VuZCB0byBtYXRjaCBhbiBlbnRyeSBpbiB0aGUKKyAgICAg
ICAgZXhjbHVkZUxpc3QuIENsaWVudHMgc2hvdWxkIGluZm9ybSB1c2VycyBhbmQgdGVybWluYXRl
IHRoZSBwbGF0Zm9ybSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLiBUaGlzIGVycm9yIHdpbGwgb25s
eSBiZQorICAgICAgICByZXR1cm5lZCBkdXJpbmcgbWFrZUNyZWRlbnRpYWwgYW5kIGJlZm9yZSB2
ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2wgZGVsZWdhdGUuCisgICAgICAgIGMpIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlhbDogSXQgbWVhbnMgbm8gY3JlZGVu
dGlhbHMgYXJlIGZvdW5kLiBDbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMgYW5kCisgICAgICAg
IHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRpb24gcHJvY2Vzcy4gVGhpcyBlcnJv
ciB3aWxsIG9ubHkgYmUgcmV0dXJuZWQgZHVyaW5nIGdldEFzc2VydGlvbiBhbmQgYmVmb3JlCisg
ICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbCBkZWxlZ2F0ZS4KKworICAgICAgICAy
KSBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydDogX1dLV2ViQXV0aGVudGljYXRpb25UcmFu
c3BvcnRJbnRlcm5hbCBpcyBhZGRlZCBzdWNoIHRoYXQgY2xpZW50cyBjYW4gbGVhcm4gcGxhdGZv
cm0KKyAgICAgICAgYXV0aGVudGljYXRvciB3aWxsIGJlIHVzZWQgZnJvbSBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLnRyYW5zcG9ydHMuCisKKyAgICAgICAgMykgdmVyaWZ5VXNlcldpdGhBY2Nl
c3NDb250cm9sOiBBIGRlbGVnYXRlIHRoYXQgd2lsbCBiZSBjYWxsZWQgZHVyaW5nIG1ha2VDcmVk
ZW50aWFsIG9yIGdldEFzc2VydGlvbiB3aGVuIHRoZSBwbGF0Zm9ybQorICAgICAgICBhdXRoZW50
aWNhdG9yIGlzIGludm9sdmVkLiBUaGlzIGRlbGVnYXRlIGlzIHVzZWQgdG8gb2J0YWluIHVzZXIg
dmVyaWZpY2F0aW9uIGZyb20gYSBMQUNvbnRleHQuIEluIGFkZGl0aW9uLCB0aGUgTEFDb250ZXh0
CisgICAgICAgIHNob3VsZCBldmFsdWF0ZSB0aGUgcGFzc2VkIGFjY2Vzc0NvbnRyb2wsIHN1Y2gg
dGhhdCB0aGUgU0VQIHByb3RlY3RlZCBjcmVkZW50aWFsIHByaXZhdGUga2V5IGNhbiBiZSB1c2Vk
LiBBIHR5cGljYWwKKyAgICAgICAgZXhhbXBsZSB3aWxsIGJlIFtMQUNvbnRleHQgZXZhbHVhdGVB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJh
dGlvblVzZUtleVNpZ24gbG9jYWxpemVkUmVhc29uOnJlcGx5Ol0uCisgICAgICAgIE5vdGVkLCBm
b3IgZ2V0QXNzZXJ0aW9uLCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZSB3aWxsIGJlIGNhbGxlZCBi
ZWZvcmUgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sLiBTbyB1c2VycyBuZWVkIHRvIGJlCisg
ICAgICAgIHByb21wdGVkIHRvIHNlbGVjdCBhIGNyZWRlbnRpYWwgYmVmb3JlIHRoZSB1c2VyIHZl
cmlmaWNhdGlvbi4KKworICAgICAgICBJbiB0aGUgc2NlbmFyaW8gd2hlbiBib3RoIHRoZSBwbGF0
Zm9ybSBhdXRoZW50aWNhdG9yIGFuZCBleHRlcm5hbCBhdXRoZW50aWNhdG9ycyBhcmUgcmVxdWVz
dGVkLiBDbGllbnRzIGFyZSBhZHZpc2VkIHRvCisgICAgICAgIHdhaXQgdW50aWwgdmVyaWZ5VXNl
cldpdGhBY2Nlc3NDb250cm9sIHRvIHNob3cgdGhlIGNvbWJpbmVkIFVJLiBJZiBhbnkgb2YgdGhl
IExBRXJyb3IgaXMgcmVjZWl2ZWQgYmVmb3JlCisgICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNz
Q29udHJvbCwgY2xpZW50cyBjYW4gdGhlbiBvbmx5IHNob3cgdGhlIGV4dGVybmFsIGF1dGhlbnRp
Y2F0b3IgVUkuIEFsc28sIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IgYW5kCisgICAgICAgIGV4dGVy
bmFsIGF1dGhlbnRpY2F0b3JzIGFyZSBiZWluZyBkaXNjb3ZlcmVkIGF0IHRoZSBzYW1lIHRpbWUs
IHdoaWNoIG1lYW5zLCBhIHVzZXIgY2FuIHBsdWcgaW4gYSBzZWN1cml0eSBrZXkgYXQgYW55dGlt
ZS4KKyAgICAgICAgSWYgYSB2YWxpZCByZXNwb25zZSBpcyByZWNlaXZlZCBmcm9tIHRoZSBzZWN1
cml0eSBrZXksIHRoZSB3aG9sZSBjZXJlbW9ueSB3aWxsIGJlIHRlcm1pbmF0ZWQuCisKKyAgICAg
ICAgQmVzaWRlcyBpbnRyb2R1Y2luZyB0aGUgU1BJLCBhbmQgYWxsIHRoZSBwbHVtYmluZ3MgdG8g
bWFrZSBpdCBoYXBwZW4uIFRoaXMgcGF0Y2ggYWxzbzoKKyAgICAgICAgMSkgYWRkcyBMb2NhbEF1
dGhlbnRpY2F0aW9uU1BJLCB3aGljaCBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBM
QUNvbnRleHQgaXMgdW5sb2NrZWQgb3Igbm90OworICAgICAgICAyKSBpbXByb3ZlcyBNb2NrTG9j
YWxDb25uZWN0aW9uIHN1Y2ggdGhhdCBtb2NrIHRlc3RpbmcgY2FuIHN0aWxsIGJlIHJhbi4KKwor
ICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHA6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06Cisg
ICAgICAgICh3a1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b05TRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TG9j
YWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZCk6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyQXR0ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6
OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2Vu
dGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6Zmls
dGVyUmVzcG9uc2VzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5l
Y3Rpb246OmlzVW5sb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rp
b246OmdldFVzZXJDb25zZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9j
YWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6d2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdl
YktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmZpbHRlclJlc3BvbnNlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3Jl
ZGVudGlhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQg
aGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZS5jcHAKaW5kZXggNWQzMDJmOGI4ZmMzNWRhMWU2Yzk0NmUxMTIxOTY3ZDYyZTAwYTQ5OS4u
NDVlYTFlNWZhNGI0YTZiOGY0MTQ2ODAwZmU5NjE1ZDRhNTJkOGNhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0
ZShSZWY8QQogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAotUmVmPEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50
aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8
dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRh
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB1c2VySGFuZGxlKQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlcmhhbmRsZUJ1ZmZl
cjsKICAgICBpZiAoIXVzZXJIYW5kbGUuaXNFbXB0eSgpKQpAQCAtNDgsNiArNDgsMTYgQEAgUmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVh
dGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhl
bnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZm
ZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1
c2VyaGFuZGxlQnVmZmVyKSwgV1RGOjpudWxsb3B0KTsKIH0KIAorUmVmPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUo
UmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwg
U2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RG
TW92ZSh1c2VySGFuZGxlKSwgYWNjZXNzQ29udHJvbCkpOworfQorCit2b2lkIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6c2V0QXV0aGVudGljYXRvckRhdGEoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSkKK3sKKyAgICBtX2F1dGhlbnRpY2F0b3JEYXRhID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0
b3JEYXRhLnNpemUoKSk7Cit9CisKIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2ln
bmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSkKICAgICA6IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKICAgICAsIG1fYXV0aGVudGljYXRvckRhdGEo
V1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCkBAIC01Niw2ICs2NiwxMyBAQCBBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8
QXJyYXlCdWZmZXI+JgogewogfQogCitBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJl
ZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2wpCisgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCkpCisgICAg
LCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKKyAgICAsIG1fYWNjZXNzQ29udHJv
bChhY2Nlc3NDb250cm9sKQoreworfQorCiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byBkYXRh
ID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjpkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaAppbmRleCBkNzBhOWNjZjhmMzkxYjBkZDYyYzJhMTE0ZTExNTJmOWY2YzBkNmEyLi4z
YjcwYjc0Y2FiNjAzNTc0YTc4MDg1MmQ0N2Q0ZmI1MGJiNmNkMDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmgKQEAgLTI4LDYgKzI4LDkgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfX1NlY0FjY2Vzc0NvbnRyb2wgKlNlY0FjY2Vz
c0NvbnRyb2xSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzUsMzIgKzM4LDM4IEBA
IGNsYXNzIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSA6IHB1YmxpYyBBdXRoZW50aWNh
dG9yUmVzcG9uc2UgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlC
dWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBPcHRpb25hbDxBdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB1c2VySGFuZGxlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwogICAgIHZp
cnR1YWwgfkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAotICAg
IEFycmF5QnVmZmVyKiBhdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aGVu
dGljYXRvckRhdGEucHRyKCk7IH0KLSAgICBBcnJheUJ1ZmZlciogc2lnbmF0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zaWduYXR1cmUucHRyKCk7IH0KKyAgICBBcnJheUJ1ZmZlciogYXV0aGVudGlj
YXRvckRhdGEoKSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRpY2F0b3JEYXRhLmdldCgpOyB9Cisg
ICAgQXJyYXlCdWZmZXIqIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbmF0dXJlLmdl
dCgpOyB9CiAgICAgQXJyYXlCdWZmZXIqIHVzZXJIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXJIYW5kbGUuZ2V0KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVy
biBtX25hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9kaXNwbGF5TmFtZTsgfQorICAgIHNpemVfdCBudW1iZXJPZkNyZWRlbnRpYWxzKCkgY29u
c3QgeyByZXR1cm4gbV9udW1iZXJPZkNyZWRlbnRpYWxzOyB9CisgICAgU2VjQWNjZXNzQ29udHJv
bFJlZiBhY2Nlc3NDb250cm9sKCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NDb250cm9sLmdldCgp
OyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1dGhlbnRpY2F0b3JEYXRhKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpOworICAgIHZvaWQgc2V0U2lnbmF0dXJlKFJlZjxBcnJheUJ1ZmZl
cj4mJiBzaWduYXR1cmUpIHsgbV9zaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSk7IH0KICAg
ICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KLSAg
ICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB2b2lk
IHNldERpc3BsYXlOYW1lKGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUpIHsgbV9kaXNwbGF5TmFt
ZSA9IGRpc3BsYXlOYW1lOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0KICAgICB2b2lkIHNldE51bWJlck9mQ3JlZGVudGlh
bHMoc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMpIHsgbV9udW1iZXJPZkNyZWRlbnRpYWxzID0g
bnVtYmVyT2ZDcmVkZW50aWFsczsgfQotICAgIHNpemVfdCBudW1iZXJPZkNyZWRlbnRpYWxzKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1iZXJPZkNyZWRlbnRpYWxzOyB9CiAKIHByaXZhdGU6CiAgICAg
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFy
cmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7
CisgICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwg
UmVmPEFycmF5QnVmZmVyPiYmLCBTZWNBY2Nlc3NDb250cm9sUmVmKTsKIAogICAgIFR5cGUgdHlw
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OkFzc2VydGlvbjsgfQogICAgIEF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGEgZGF0YSgpIGNvbnN0IGZpbmFsOwogCi0gICAgUmVmPEFycmF5QnVm
ZmVyPiBtX2F1dGhlbnRpY2F0b3JEYXRhOwotICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1
cmU7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2F1dGhlbnRpY2F0b3JEYXRhOworICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1cmU7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBt
X3VzZXJIYW5kbGU7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBtX2Rpc3BsYXlO
YW1lOwogICAgIHNpemVfdCBtX251bWJlck9mQ3JlZGVudGlhbHMgeyAwIH07CisgICAgUmV0YWlu
UHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IG1fYWNjZXNzQ29udHJvbDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0Nv
Y29hL0xvY2FsQXV0aGVudGljYXRpb25TUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3Bp
L0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25TUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2EwZjZkMDNmMGNh
MjVjN2UzMDYxMjU1NjQ5NTdmNjEwYThhYWRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oCkBAIC0wLDAg
KzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8TG9jYWxBdXRo
ZW50aWNhdGlvbi9Mb2NhbEF1dGhlbnRpY2F0aW9uLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorCisjaW1wb3J0IDxMb2NhbEF1dGhlbnRpY2F0aW9uL0xvY2FsQXV0aGVudGljYXRp
b25fUHJpdmF0ZS5oPgorCisjZWxzZQorCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBMQU9w
dGlvbikgeworICAgIExBT3B0aW9uTm90SW50ZXJhY3RpdmUsCit9OworCitAaW50ZXJmYWNlIExB
Q29udGV4dChQcml2YXRlKSA8TlNTZWN1cmVDb2Rpbmc+CisKKy0gKE5TRGljdGlvbmFyeSAqKWV2
YWx1YXRlUG9saWN5OihMQVBvbGljeSlwb2xpY3kgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0
aW9ucyBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKKworQGVuZAorCisjZW5kaWYgLy8gVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcAppbmRleCAwY2RkYmNmNDk3NjMzOTgy
NDc1OWZlZTFhMDU1YWY1NmFiNWY0ZDU1Li5lNWNiNDczODY5YmYxN2Y0MDMwZDgzZmVmZGI0OGRj
NDJhMjM5NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwCkBAIC01Myw2ICs1Myw4IEBAIFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoY29uc3QgQXV0aGVudGljYXRv
ck1hbmFnZXImIG1hbmFnCiAgICAgICAgIG1fdHJhbnNwb3J0cy51bmNoZWNrZWRBcHBlbmQoQXV0
aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKTsKICAgICBpZiAodHJhbnNwb3J0cy5jb250YWlucyhB
dXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpKQogICAgICAgICBtX3RyYW5zcG9ydHMudW5jaGVj
a2VkQXBwZW5kKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYyk7CisgICAgaWYgKHRyYW5zcG9y
dHMuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpKQorICAgICAgICBt
X3RyYW5zcG9ydHMudW5jaGVja2VkQXBwZW5kKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVy
bmFsKTsKIH0KIAogV2ViQXV0aGVudGljYXRpb25QYW5lbDo6fldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRleCA0NTk2NDRlZTNl
NmViNjUxYzI5MmVmM2ZiNDliM2I0YTI2YWM3Njk4Li5hOGJlZjgzODcxNDIxZjYwMTkzOTgyYjcw
MjQxYzM0MTc3Zjc2MTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTMyLDYgKzMy
LDkgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCit0eXBlZGVmIHN0cnVjdCBfX1NlY0FjY2Vzc0NvbnRyb2wgKlNlY0FjY2Vz
c0NvbnRyb2xSZWY7CitPQkpDX0NMQVNTIExBQ29udGV4dDsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOwogfQpAQCAtNTIsNiArNTUs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NQYW5lbChXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0aW9uUmVzdWx0KSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBp
bih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5n
KCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxS
ZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mJiByZXNwb25zZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgQVNTRVJUKCFyZXNw
b25zZXMuaXNFbXB0eSgpKTsgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsgfQorICAg
IHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5oCmluZGV4IDQzMWM2MzNiMGZlYjBiNTUyYTZiOWQxODdlYWQz
ZDZmYjViY2M4YzIuLmY3MmViMGFlYTNmNDQ1ZTE2MTkwMTM5NDk0OTM1NzIxOGJjZjQ4N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaApAQCAtMzEsNiArMzEsNyBAQAogCiBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgogCitAY2xhc3MgTEFDb250ZXh0OwogQGNsYXNzIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xhc3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bDsKIApAQCAtNDYsNiArNDcsOSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CiAgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bFVwZGF0ZVBJTkJsb2NrZWQsCiAgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJ
TkF1dGhCbG9ja2VkLAogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZh
bGlkLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yLAorICAgIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWwsCisgICAg
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFsLAogfSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgewpAQCAtNTYs
NiArNjAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlv
blJlc3VsdCkgewogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRp
b25UcmFuc3BvcnQpIHsKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQiwKICAg
ICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydE5GQywKKyAgICBfV0tXZWJBdXRoZW50aWNh
dGlvblRyYW5zcG9ydEludGVybmFsLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tX
ZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKQEAgLTcxLDYgKzc2LDcgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlKSB7CiAtICh2b2lkKXBhbmVsOihf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxXaXRoUmVzdWx0OihfV0tXZWJBdXRoZW50aWNhdGlvblJlc3VsdClyZXN1bHQgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQp
cGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJl
bWFpbmluZ1JldHJpZXM6KE5TVUludGVnZXIpcmV0cmllcyBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJh
eSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6KFNlY0FjY2Vz
c0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTEFD
b250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbQppbmRleCAyZWIzMWU4MTJjOTU5OGU4OTg4NDBiOTU1OGNlMzMyZjJlZDY3OWZmLi4xOTcz
YjBmNTY0ZDI1MWIyMGNmMjZhMzZhM2E2NGQ4YTI1MjgyMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbQpAQCAtNzMsNiArNzMsOCBAQCBzdGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25U
cmFuc3BvcnQgd2tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydChXZWJDb3JlOjpBdXRoZQogICAg
ICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRVU0I7CiAgICAgY2FzZSBX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmM6CiAgICAgICAgIHJldHVybiBfV0tX
ZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydE5GQzsKKyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ6OkludGVybmFsOgorICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGlj
YXRpb25UcmFuc3BvcnRJbnRlcm5hbDsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0
VVNCOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvci5oCmluZGV4IGQxNmIxN2Q1ZmM2YmM3OTUyMTRiMjdlODI1N2Zk
NmYwMGJkNGM3ZTUuLmQ0YTg5MzVhYjY1YTY0MmRjZDAxMWI5M2MwZmZmYzA5MjVmN2Y4MjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yLmgKQEAgLTM1LDYgKzM1LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCit0eXBlZGVmIHN0cnVjdCBfX1Nl
Y0FjY2Vzc0NvbnRyb2wgKlNlY0FjY2Vzc0NvbnRyb2xSZWY7CisKK09CSkNfQ0xBU1MgTEFDb250
ZXh0OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U7CiB9CkBAIC01Myw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2
b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgPSAwOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYp
PiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRy
b2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmKSA9IDA7CiAgICAg
fTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3IoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9y
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggNzM2MjZjYzA1MDI3YWU2ZTIxYjI4MTQzYmM4
MDA5YjkyYjFhNzViNC4uODg1OTcxZjE4YjQyMWM2YjBhNjg0YWNhODk2MjNlY2MzMjExNjAyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMjk1LDYgKzI5NSwxNCBA
QCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShjb25z
dCBIYXNoU2V0PFJlZjxBdXRoZW50aWNhdAogICAgIH0pOwogfQogCit2b2lkIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJl
ZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgUmV0YWluUHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2wg
PSBhY2Nlc3NDb250cm9sUmVmOworICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFthY2Nlc3ND
b250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250cm9sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5l
bCYgcGFuZWwpIG11dGFibGUgeworICAgICAgICBwYW5lbC5jbGllbnQoKS52ZXJpZnlVc2VyKGFj
Y2Vzc0NvbnRyb2wuZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsK
K30KKwogVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNh
dG9yTWFuYWdlcjo6Y3JlYXRlU2VydmljZShBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9y
dCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikgY29u
c3QKIHsKICAgICByZXR1cm4gQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZSh0
cmFuc3BvcnQsIG9ic2VydmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4
IGMxNTFkZDkzMjY1OWY2MjA2YzBmMTVmYmVhMWU1YzA1NGExYTBmOWUuLmU4ZjJkMmJmZDgwYzEw
Y2FhY2Y4MzA1ZDQ3M2Q1YmQzZjhhZWFmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFn
ZXIuaApAQCAtODMsNiArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXV0aGVudGljYXRvclN0
YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQgcmVx
dWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdU
Rjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Uo
Y29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Pj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZSYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNj
ZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGZp
bmFsOwogCiAgICAgLy8gT3ZlcnJpZGVuIGJ5IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci4KICAg
ICB2aXJ0dWFsIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gY3JlYXRl
U2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0LCBBdXRoZW50aWNhdG9yVHJh
bnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25T
b2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgKaW5kZXggMTU1MmIyNzM5MDNhYTY0ODJh
MzkzYjhkMzg3OWEwM2Y0OGU2NTVhMi4uZTg0OTEwMjk1YmYzYTI1YTRiYzA2ZTM1MWRiM2QxNGZi
N2ZjZmI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlv
blNvZnRMaW5rLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbXBvcnQg
PExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxBdXRoZW50aWNhdGlvbi5oPgorI2ltcG9ydCAiTG9j
YWxBdXRoZW50aWNhdGlvblNQSS5oIgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKIFNP
RlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihXZWJLaXQsIExvY2FsQXV0aGVudGljYXRpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaAppbmRleCBkZWQ5OGYyZDc2
YWM0ZGU5NTFhNTg5NDBiMzZkMmI2ZTc0YWY0NGM3Li45YTQ3NTcwZmU3MGIzYjcyNDhjY2UxMDUz
MTRlNTBiOGNjOTAwZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
aApAQCAtMzksMTIgKzM5LDEzIEBAIGNsYXNzIExvY2FsQXV0aGVudGljYXRvciBmaW5hbCA6IHB1
YmxpYyBBdXRoZW50aWNhdG9yIHsKIHB1YmxpYzoKICAgICAvLyBIZXJlIGlzIHRoZSBGU00uCiAg
ICAgLy8gTWFrZUNyZWRlbnRpYWw6IEluaXQgPT4gUmVxdWVzdFJlY2VpdmVkID0+IFVzZXJDb25z
ZW50ZWQgPT4gQXR0ZXN0ZWQgPT4gRW5kCi0gICAgLy8gR2V0QXNzZXJ0aW9uOiBJbml0ID0+IFJl
cXVlc3RSZWNlaXZlZCA9PiBVc2VyQ29uc2VudGVkID0+IEVuZAorICAgIC8vIEdldEFzc2VydGlv
bjogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQgPT4gUmVzcG9uc2VTZWxlY3RlZCA9PiBVc2VyQ29u
c2VudGVkID0+IEVuZAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICBJbml0LAogICAg
ICAgICBSZXF1ZXN0UmVjZWl2ZWQsCiAgICAgICAgIFVzZXJDb25zZW50ZWQsCiAgICAgICAgIEF0
dGVzdGVkLAorICAgICAgICBSZXNwb25zZVNlbGVjdGVkCiAgICAgfTsKIAogICAgIHN0YXRpYyBS
ZWY8TG9jYWxBdXRoZW50aWNhdG9yPiBjcmVhdGUoVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlvbj4m
JiBjb25uZWN0aW9uKQpAQCAtNTYsMTQgKzU3LDE4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
TG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+JiYpOwogCiAgICAg
dm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFsOwotICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cm9sUmVmLCBMb2NhbENvbm5lY3Rp
b246OlVzZXJDb25zZW50LCBMQUNvbnRleHQgKik7CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVk
ZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAq
KTsKICAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJl
ZiwgVmVjdG9yPHVpbnQ4X3Q+JiYgY3JlZGVudGlhbElkLCBWZWN0b3I8dWludDhfdD4mJiBhdXRo
RGF0YSwgTlNBcnJheSAqY2VydGlmaWNhdGVzLCBOU0Vycm9yICopOwogCiAgICAgdm9pZCBnZXRB
c3NlcnRpb24oKSBmaW5hbDsKLSAgICB2b2lkIGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2Vy
Q29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQsIExBQ29udGV4dCAqLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1
c2VyaGFuZGxlKTsKKyAgICB2b2lkIGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVNl
bGVjdGVkKFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOwor
ICAgIHZvaWQgY29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoTEFDb250ZXh0
ICosIFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworCisg
ICAgdm9pZCByZWNlaXZlRXhjZXB0aW9uKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmJiwgV2ViQXV0
aGVudGljYXRpb25TdGF0dXMgPSBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFFcnJvcikgY29u
c3Q7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OkluaXQgfTsKICAgICBVbmlxdWVSZWY8
TG9jYWxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgSGFzaFNldDxSZWY8V2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4gbV9hc3NlcnRpb25SZXNwb25zZXM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRvci5tbQppbmRleCAyNWRkMWM2YWU5NjgxZjBlZjc4Y2RiMWYzZDRjNDFiYTRlNGJiNWRl
Li43OGI3M2RlMWM1MGMxMTQ2N2ZjYWQ1ODFmNzcxNDZhZmZhNDQ3NmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhl
bnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC04Niw2ICs4NiwxOCBAQCBzdGF0aWMg
aW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRvTlNEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkKICAgICByZXR1cm4gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpk
YXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldKTsKIH0KIAorc3RhdGljIGlubGluZSBSZXRh
aW5QdHI8TlNEYXRhPiB0b05TRGF0YShBcnJheUJ1ZmZlciogYnVmZmVyKQoreworICAgIEFTU0VS
VChidWZmZXIpOworICAgIC8vIEZJWE1FKDE4MzUzNCk6IENvbnNpZGVyIHVzaW5nIGluaXRXaXRo
Qnl0ZXNOb0NvcHkuCisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
Qnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+Ynl0ZUxlbmd0aCgpXSk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVmZmVyPiB0b0FycmF5QnVmZmVyKE5TRGF0YSAqZGF0
YSkKK3sKKyAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgpOworfQorCiB9IC8vIExvY2Fs
QXV0aGVudGljYXRvckludGVybmFsCiAKIExvY2FsQXV0aGVudGljYXRvcjo6TG9jYWxBdXRoZW50
aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKQEAgLTEwOCw3
ICsxMjAsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAg
IGlmIChub3RGb3VuZCA9PSBjcmVhdGlvbk9wdGlvbnMucHViS2V5Q3JlZFBhcmFtcy5maW5kTWF0
Y2hpbmcoW10gKGF1dG8mIHB1YktleUNyZWRQYXJhbSkgewogICAgICAgICByZXR1cm4gcHViS2V5
Q3JlZFBhcmFtLnR5cGUgPT0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSAmJiBw
dWJLZXlDcmVkUGFyYW0uYWxnID09IENPU0U6OkVTMjU2OwogICAgIH0pKSB7Ci0gICAgICAgIHJl
Y2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBwbGF0
Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yIGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQg
UHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMuIl9zIH0pOworICAgICAgICByZWNlaXZlRXhj
ZXB0aW9uKHsgTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVu
dGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQ
YXJhbWV0ZXJzLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTMxLDI0ICsx
NDMsMjIgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICAg
ICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51bGxwdHI7CiAgICAgICAgIE9TU3Rh
dHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJl
ZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJlZik7CiAgICAgICAgIGlmIChzdGF0dXMgJiYgc3Rh
dHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgcmVjZWl2ZVJl
c3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3Qg
cXVlcnkgS2V5Y2hhaW46ICIsIHN0YXR1cykgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0
aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjog
Iiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBh
dXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9IGFkb3B0Q0YoYXR0cmlidXRlc0FycmF5UmVmKTsK
IAotICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTkwMDU5Myk6IE5lZWQgdG8gb2J0
YWluIHVzZXIgY29uc2VudCBhbmQgdGhlbiByZXR1cm4gZGlmZmVyZW50IGVycm9yIGFjY29yZGlu
ZyB0byB0aGUgcmVzdWx0LgorICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBvYnRhaW4gdXNlciBj
b25zZW50IGFuZCB0aGVuIHJldHVybiBkaWZmZXJlbnQgZXJyb3IgYWNjb3JkaW5nIHRvIHRoZSBy
ZXN1bHQuCiAgICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgaW4gKE5TQXJy
YXkgKilhdHRyaWJ1dGVzQXJyYXlSZWYpIHsKICAgICAgICAgICAgIE5TRGF0YSAqbnNDcmVkZW50
aWFsSWQgPSBuc0F0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF07CiAgICAg
ICAgICAgICBpZiAoZXhjbHVkZUNyZWRlbnRpYWxJZHMuY29udGFpbnMoU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5zQ3JlZGVudGlhbElkLmJ5dGVzKSwgbnNDcmVkZW50aWFs
SWQubGVuZ3RoKSkpIHsKLSAgICAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25E
YXRhIHsgTm90QWxsb3dlZEVycm9yLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBh
biBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0
dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0pOworICAgICAgICAgICAgICAgIHJlY2VpdmVFeGNl
cHRpb24oeyBOb3RBbGxvd2VkRXJyb3IsICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVz
IGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0g
YXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSwgV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxB
RHVwbGljYXRlQ3JlZGVudGlhbCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gU3RlcCA2LgotICAgIC8vIEZJWE1FKHJk
YXI6Ly9wcm9ibGVtLzM1OTAwNTkzKTogVXBkYXRlIHRvIGEgZm9ybWFsIFVJLgogICAgIC8vIEdl
dCB1c2VyIGNvbnNlbnQuCiAgICAgUmV0YWluUHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IGFjY2Vz
c0NvbnRyb2w7CiAgICAgewpAQCAtMTU2LDI3ICsxNjYsMjUgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICAgICAgYWNjZXNzQ29udHJvbCA9IGFkb3B0Q0Yo
U2VjQWNjZXNzQ29udHJvbENyZWF0ZVdpdGhGbGFncyhOVUxMLCBrU2VjQXR0ckFjY2Vzc2libGVX
aGVuUGFzc2NvZGVTZXRUaGlzRGV2aWNlT25seSwga1NlY0FjY2Vzc0NvbnRyb2xQcml2YXRlS2V5
VXNhZ2UgfCBrU2VjQWNjZXNzQ29udHJvbFVzZXJQcmVzZW5jZSwgJmVycm9yUmVmKSk7CiAgICAg
ICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKICAgICAgICAgaWYgKGVy
cm9yUmVmKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3Mg
Y29udHJvbDogJUAiLCAoTlNFcnJvciAqKWVycm9yUmVmKTsKLSAgICAgICAgICAgIHJlY2VpdmVS
ZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0
IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxv
Y2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsg
VW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBjcmVhdGUgYWNjZXNzIGNvbnRyb2w6
ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0p
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgU2VjQWNjZXNz
Q29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVmID0gYWNjZXNzQ29udHJvbC5nZXQoKTsKLSAgICBh
dXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNl
bnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47
CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBT
ZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYgPSBhY2Nlc3NDb250cm9sLmdldCgp
OworICAgICAgICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vz
c0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKExBQ29udGV4dCAqY29u
dGV4dCkgeworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHdl
YWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKGFjY2Vzc0Nv
bnRyb2wuZ2V0KCksIGNvbnNlbnQsIGNvbnRleHQpOwotICAgIH07Ci0gICAgbV9jb25uZWN0aW9u
LT5nZXRVc2VyQ29uc2VudCgKLSAgICAgICAgbWFrZVN0cmluZygiYWxsb3cgIl9zLCBjcmVhdGlv
bk9wdGlvbnMucnAuaWQsICIgdG8gY3JlYXRlIGEgcHVibGljIGtleSBjcmVkZW50aWFsIGZvciAi
X3MsIGNyZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUpLAotICAgICAgICBhY2Nlc3NDb250cm9sUmVm
LAotICAgICAgICBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29u
dGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChhY2Nlc3NDb250cm9sLmdldCgp
LCBjb250ZXh0KTsKKyAgICAgICAgfTsKKyAgICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNj
ZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0KIH0KIAotdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQo
U2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVz
ZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4dCAqY29udGV4dCkKK3ZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vz
c0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgTEFDb250ZXh0ICpjb250ZXh0KQogewogICAg
IHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKIApAQCAtMTg0LDcg
KzE5Miw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpV
c2VyQ29uc2VudGVkOwogICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAK
LSAgICBpZiAoY29uc2VudCA9PSBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50OjpObykgewor
ICAgIGlmICghbV9jb25uZWN0aW9uLT5pc1VubG9ja2VkKGNvbnRleHQpKSB7CiAgICAgICAgIHJl
Y2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBn
ZXQgdXNlciBjb25zZW50LiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMyw4
ICsyMjEsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlh
bEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cgogICAgIH07CiAgICAgT1NTdGF0dXMg
c3RhdHVzID0gU2VjSXRlbURlbGV0ZSgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1
ZXJ5KTsKICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsK
LSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogJWQi
LCBzdGF0dXMpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93
bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogIiwg
c3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFr
ZVN0cmluZygiQ291bGRuJ3QgZGVsZXRlIG9sZGVyIGNyZWRlbnRpYWw6ICIsIHN0YXR1cykgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIyMiw3ICsyMjksNyBAQCB2b2lkIExvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChT
ZWNBY2Nlc3NDb250cgogICAgIC8vIFRoZSBhYm92ZS10by1jcmVhdGUgcHJpdmF0ZSBrZXkgd2ls
bCBiZSBpbnNlcnRlZCBpbnRvIGtleWNoYWluIHdoaWxlIHVzaW5nIFNFUC4KICAgICBhdXRvIHBy
aXZhdGVLZXkgPSBtX2Nvbm5lY3Rpb24tPmNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KGNvbnRl
eHQsIGFjY2Vzc0NvbnRyb2xSZWYsIHNlY0F0dHJMYWJlbCwgc2VjQXR0ckFwcGxpY2F0aW9uVGFn
LmdldCgpKTsKICAgICBpZiAoIXByaXZhdGVLZXkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQo
RXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIkNvdWxkbid0IGNyZWF0ZSBwcml2YXRlIGtl
eS4iX3MgfSk7CisgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsICJDb3Vs
ZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0yNDMsOCArMjUwLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFr
ZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoU2VjQWNjZXNzQ29udHIKICAgICAgICAgQ0ZU
eXBlUmVmIGF0dHJpYnV0ZXNSZWYgPSBudWxscHRyOwogICAgICAgICBPU1N0YXR1cyBzdGF0dXMg
PSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpY3JlZGVudGlh
bElkUXVlcnksICZhdHRyaWJ1dGVzUmVmKTsKICAgICAgICAgaWYgKHN0YXR1cykgewotICAgICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZXQgQ3JlZGVudGlhbCBJRDogJWQiLCBzdGF0dXMp
OwotICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJv
ciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IENyZWRlbnRpYWwgSUQ6ICIsIHN0YXR1cykgfSk7
CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5n
KCJDb3VsZG4ndCBnZXQgQ3JlZGVudGlhbCBJRDogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXMgPSBhZG9w
dENGKGF0dHJpYnV0ZXNSZWYpOwpAQCAtMjY4LDggKzI3NCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vz
c0NvbnRyCiAgICAgICAgICAgICBwdWJsaWNLZXlEYXRhUmVmID0gYWRvcHRDRihTZWNLZXlDb3B5
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihwdWJsaWNLZXkuZ2V0KCksICZlcnJvclJlZikpOwogICAg
ICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAgICAg
ICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBl
eHBvcnQgdGhlIHB1YmxpYyBrZXk6ICVAIiwgKE5TRXJyb3IqKWVycm9yUmVmKTsKLSAgICAgICAg
ICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtl
U3RyaW5nKCJDb3VsZG4ndCBleHBvcnQgdGhlIHB1YmxpYyBrZXk6ICIsIFN0cmluZygoKE5TRXJy
b3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOworICAgICAgICAgICAgICAg
IHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGV4
cG9ydCB0aGUgcHVibGljIGtleTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2Fs
aXplZERlc2NyaXB0aW9uKSkgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgQVNTRVJUKCgoTlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQo
KSkubGVuZ3RoID09ICgxICsgMiAqIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKSk7IC8vIDA0IHwg
WCB8IFkKQEAgLTMwOSw4ICszMTQsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGlu
dWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQoU2VjS2V5UmVmIHByaXZhdGVLZQogICAgIGF1
dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAKICAgICBpZiAoZXJyb3IpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBhdHRlc3Q6ICVAIiwgZXJyb3IpOwotICAgICAgICBy
ZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJD
b3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0p
OworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJD
b3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIEF0dGVzdGF0aW9uIENlcnRpZmljYXRl
IGFuZCBBdHRlc3RhdGlvbiBJc3N1aW5nIENBCkBAIC0zNDQsMTAgKzM0OCw5IEBAIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgIC8vIFNraXAgU3RlcCA4IGFzIGV4
dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgogICAgIC8vIFN0ZXAgMTIgaXMgaW1wbGlj
aXRseSBjYXB0dXJlZCBieSBhbGwgVW5rbm93bkVycm9yIGV4Y2VwdGlvbiBjYWxsYmFja3MuCiAg
ICAgLy8gU3RlcCAzLTUuIFVubGlrZSB0aGUgc3BlYywgaWYgYW4gYWxsb3cgbGlzdCBpcyBwcm92
aWRlZCBhbmQgdGhlcmUgaXMgbm8gaW50ZXJzZWN0aW9uIGJldHdlZW4gZXhpc3Rpbmcgb25lcyBh
bmQgdGhlIGFsbG93IGxpc3QsIHdlIGFsd2F5cyByZXR1cm4gTm90QWxsb3dlZEVycm9yLgotICAg
IC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTAwNTkzKTogTmVlZCB0byBpbmZvcm0gdXNlcnMu
CiAgICAgYXV0byBhbGxvd0NyZWRlbnRpYWxJZHMgPSBwcm9kdWNlSGFzaFNldChyZXF1ZXN0T3B0
aW9ucy5hbGxvd0NyZWRlbnRpYWxzKTsKICAgICBpZiAoIXJlcXVlc3RPcHRpb25zLmFsbG93Q3Jl
ZGVudGlhbHMuaXNFbXB0eSgpICYmIGFsbG93Q3JlZGVudGlhbElkcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5v
IG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBh
dXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93
ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9y
bSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6
TEFOb0NyZWRlbnRpYWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNjcsOCArMzcw
LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiAgICAgQ0ZUeXBl
UmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51bGxwdHI7CiAgICAgT1NTdGF0dXMgc3RhdHVzID0g
U2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0
cmlidXRlc0FycmF5UmVmKTsKICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVt
Tm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjog
JWQiLCBzdGF0dXMpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5r
bm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVz
KSB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmlu
ZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICIsIHN0YXR1cykgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgYXV0byByZXRhaW5BdHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJp
YnV0ZXNBcnJheVJlZik7CkBAIC0zODYsNDEgKzM4OCw2MSBAQCB2b2lkIExvY2FsQXV0aGVudGlj
YXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAgICAgaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJp
YnV0ZXMgPSByZXN1bHQ7CiAgICAgfQogICAgIGlmICghaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0
dHJpYnV0ZXMuY291bnQpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7
IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRo
ZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmVjZWl2
ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJl
IGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJB
dXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgLy8gU3RlcCA2LgotICAgIGF1dG8gKnNlbGVjdGVkQ3JlZGVudGlhbEF0dHJp
YnV0ZXMgPSBtX2Nvbm5lY3Rpb24tPnNlbGVjdENyZWRlbnRpYWwoaW50ZXJzZWN0ZWRDcmVkZW50
aWFsc0F0dHJpYnV0ZXMpOworICAgIGZvciAoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGUgOiBpbnRl
cnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRlcykgeworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFkZChBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6
OmNyZWF0ZSgKKyAgICAgICAgICAgIHRvQXJyYXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0
ckFwcGxpY2F0aW9uTGFiZWxdKSwKKyAgICAgICAgICAgIHRvQXJyYXlCdWZmZXIoYXR0cmlidXRl
WyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSksCisgICAgICAgICAgICAoX19icmlkZ2UgU2Vj
QWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVbKGlkKWtTZWNBdHRyQWNjZXNzQ29udHJvbF0pKTsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
KyAgICB9CisgICAgbV9jb25uZWN0aW9uLT5maWx0ZXJSZXNwb25zZXMobV9hc3NlcnRpb25SZXNw
b25zZXMpOworCisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgewor
ICAgICAgICBhdXRvIGNhbGxiYWNrID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpXSAoY29uc3QgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJiByZXNwb25zZSkgewor
ICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvIHJl
dHVyblJlc3BvbnNlID0gbV9hc3NlcnRpb25SZXNwb25zZXMudGFrZShjb25zdF9jYXN0PEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSo+KCZyZXNwb25zZSkpOworICAgICAgICAgICAgaWYg
KCFyZXR1cm5SZXNwb25zZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBj
b250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChXVEZNb3ZlKCpyZXR1cm5S
ZXNwb25zZSkpOworICAgICAgICB9OworICAgICAgICBvYnNlcnZlci0+c2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2UobV9hc3NlcnRpb25SZXNwb25zZXMsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9
Cit9CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVy
UmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiYmIHJlc3BvbnNlKQoreworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0
UmVjZWl2ZWQpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVzcG9uc2VTZWxlY3RlZDsKIAogICAg
IC8vIFN0ZXAgNy4gR2V0IHVzZXIgY29uc2VudC4KLSAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxl
bS8zNTkwMDU5Myk6IFVwZGF0ZSB0byBhIGZvcm1hbCBVSS4KLSAgICBhdXRvIGNhbGxiYWNrID0g
WwotICAgICAgICB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwKLSAgICAgICAgY3JlZGVu
dGlhbElkID0gdG9WZWN0b3Ioc2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0
dHJBcHBsaWNhdGlvbkxhYmVsXSksCi0gICAgICAgIHVzZXJoYW5kbGUgPSB0b1ZlY3RvcihzZWxl
Y3RlZENyZWRlbnRpYWxBdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSkKLSAg
ICBdKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250
ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICgh
d2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0g
dGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBhdXRvIGFjY2Vzc0NvbnRyb2xSZWYgPSByZXNw
b25zZS0+YWNjZXNzQ29udHJvbCgpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpXSAoTEFD
b250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJD
b25zZW50ZWQoY29uc2VudCwgY29udGV4dCwgY3JlZGVudGlhbElkLCB1c2VyaGFuZGxlKTsKLSAg
ICB9OwotICAgIE5TRGF0YSAqaWREYXRhID0gc2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlc1so
aWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ107Ci0gICAgU3RyaW5nVmlldyBpZFN0cmluZ1ZpZXcg
eyBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KFtpZERhdGEgYnl0ZXNdKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFtpZERhdGEgbGVuZ3RoXSkgfTsKLSAgICBtX2Nvbm5lY3Rpb24tPmdldFVzZXJD
b25zZW50KAotICAgICAgICBtYWtlU3RyaW5nKCJsb2cgaW50byAiLCByZXF1ZXN0T3B0aW9ucy5y
cElkLCAiIHdpdGggIiwgaWRTdHJpbmdWaWV3KSwKLSAgICAgICAgKF9fYnJpZGdlIFNlY0FjY2Vz
c0NvbnRyb2xSZWYpc2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nl
c3NDb250cm9sXSwKLSAgICAgICAgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICAgICAgd2Vh
a1RoaXMtPmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKGNvbnRleHQsIFdU
Rk1vdmUocmVzcG9uc2UpKTsKKyAgICAgICAgfTsKKyAgICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVz
ZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0KIH0KIAotdm9p
ZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2Vu
dGVkKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiB1c2VyaGFuZGxlKQordm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0
QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExBQ29udGV4dCAqY29udGV4dCwgUmVmPFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4mJiByZXNwb25zZSkKIHsKICAgICB1
c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw7Ci0gICAgQVNTRVJUKG1f
c3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0g
U3RhdGU6OlJlc3BvbnNlU2VsZWN0ZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNl
bnRlZDsKIAotICAgIGlmIChjb25zZW50ID09IExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQ6
Ok5vKSB7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24tPmlzVW5sb2NrZWQoY29udGV4dCkpIHsKICAg
ICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNv
dWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNDMyLDI1ICs0NTQsMjcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0
QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjoKICAgICBhdXRvIGF1
dGhEYXRhID0gYnVpbGRBdXRoRGF0YShXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykucnBJZCwgZ2V0QXNzZXJ0aW9uRmxhZ3Ms
IGNvdW50ZXIsIHsgfSk7CiAKICAgICAvLyBTdGVwIDExLgotICAgIFZlY3Rvcjx1aW50OF90PiBz
aWduYXR1cmU7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc2lnbmF0dXJlOwogICAgIHsKLSAg
ICAgICAgTlNEaWN0aW9uYXJ5ICpxdWVyeSA9IEB7CisgICAgICAgIGF1dG8gcXVlcnkgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgICAgICBbcXVlcnkg
YWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OkB7CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAo
aWQpa1NlY0NsYXNzS2V5LAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClr
U2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0
aW9uTGFiZWw6IHRvTlNEYXRhKGNyZWRlbnRpYWxJZCkuZ2V0KCksCi0gICAgICAgICAgICAoaWQp
a1NlY1VzZUF1dGhlbnRpY2F0aW9uQ29udGV4dDogY29udGV4dCwKKyAgICAgICAgICAgIChpZClr
U2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRvTlNEYXRhKHJlc3BvbnNlLT5yYXdJZCgpKS5nZXQo
KSwKICAgICAgICAgICAgIChpZClrU2VjUmV0dXJuUmVmOiBAWUVTLAogI2lmIEhBVkUoREFUQV9Q
Uk9URUNUSU9OX0tFWUNIQUlOKQogICAgICAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlv
bktleWNoYWluOiBAWUVTCiAjZWxzZQogICAgICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6
IEBZRVMKICNlbmRpZgotICAgICAgICB9OworICAgICAgICB9XTsKKyAgICAgICAgLy8gY29udGV4
dCBpcyBudWxscHRyIGluIG1vY2sgdGVzdGluZy4KKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAg
ICAgICAgICBbcXVlcnkgc2V0T2JqZWN0OmNvbnRleHQgZm9yS2V5OihpZClrU2VjVXNlQXV0aGVu
dGljYXRpb25Db250ZXh0XTsKICAgICAgICAgQ0ZUeXBlUmVmIHByaXZhdGVLZXlSZWYgPSBudWxs
cHRyOwotICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZwcml2YXRlS2V5UmVmKTsKKyAgICAgICAgT1NT
dGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5
UmVmKXF1ZXJ5LmdldCgpLCAmcHJpdmF0ZUtleVJlZik7CiAgICAgICAgIGlmIChzdGF0dXMpIHsK
LSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZl
cmVuY2U6ICVkIiwgc3RhdHVzKTsKLSAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlv
bkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGdldCB0aGUgcHJpdmF0
ZSBrZXkgcmVmZXJlbmNlOiAiLCBzdGF0dXMpIH0pOworICAgICAgICAgICAgcmVjZWl2ZUV4Y2Vw
dGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IHRoZSBwcml2YXRl
IGtleSByZWZlcmVuY2U6ICIsIHN0YXR1cykgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gYWRvcHRDRihwcml2YXRlS2V5UmVmKTsK
QEAgLTQ2MCwxOCArNDg0LDI3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdl
dEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rpb246CiAKICAgICAgICAg
Q0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7CiAgICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0
aW5nIENGVHlwZVJlZiB0byBTZWNLZXlSZWYgaXMgcXVpdGUgc3VidGxlIGhlcmUuCi0gICAgICAg
IGF1dG8gc2lnbmF0dXJlUmVmID0gYWRvcHRDRihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJp
ZGdlIFNlY0tleVJlZikoKGlkKXByaXZhdGVLZXlSZWYpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FT
aWduYXR1cmVNZXNzYWdlWDk2MlNIQTI1NiwgKF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWdu
LCAmZXJyb3JSZWYpKTsKKyAgICAgICAgc2lnbmF0dXJlID0gYWRvcHRDRihTZWNLZXlDcmVhdGVT
aWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJlZikoKGlkKXByaXZhdGVLZXlSZWYpLCBrU2VjS2V5
QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNzYWdlWDk2MlNIQTI1NiwgKF9fYnJpZGdlIENGRGF0
YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYpKTsKICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9
IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAgICBpZiAoZXJyb3JSZWYpIHsKLSAgICAgICAgICAg
IExPR19FUlJPUigiQ291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZTogJUAiLCAoTlNFcnJv
ciopZXJyb3JSZWYpOwotICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7
IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNpZ25hdHVy
ZTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkg
fSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3Ry
aW5nKCJDb3VsZG4ndCBnZW5lcmF0ZSB0aGUgc2lnbmF0dXJlOiAiLCBTdHJpbmcoKChOU0Vycm9y
KillcnJvclJlZikubG9jYWxpemVkRGVzY3JpcHRpb24pKSB9KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBzaWduYXR1cmUgPSB0b1ZlY3RvcigoTlNEYXRhICopc2ln
bmF0dXJlUmVmLmdldCgpKTsKICAgICB9CiAKICAgICAvLyBTdGVwIDEzLgotICAgIHJlY2VpdmVS
ZXNwb25kKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJ
ZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgdXNlcmhhbmRsZSkpOworICAgIHJlc3BvbnNlLT5zZXRB
dXRoZW50aWNhdG9yRGF0YShhdXRoRGF0YSk7CisgICAgcmVzcG9uc2UtPnNldFNpZ25hdHVyZSh0
b0FycmF5QnVmZmVyKChOU0RhdGEgKilzaWduYXR1cmUuZ2V0KCkpKTsKKyAgICByZWNlaXZlUmVz
cG9uZChXVEZNb3ZlKHJlc3BvbnNlKSk7Cit9CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpy
ZWNlaXZlRXhjZXB0aW9uKEV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24sIFdlYkF1dGhlbnRpY2F0
aW9uU3RhdHVzIHN0YXR1cykgY29uc3QKK3sKKyAgICBMT0dfRVJST1IoZXhjZXB0aW9uLm1lc3Nh
Z2UudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2
ZXIoKSkKKyAgICAgICAgb2JzZXJ2ZXItPmF1dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKHN0YXR1
cyk7CisgICAgcmVjZWl2ZVJlc3BvbmQoV1RGTW92ZShleGNlcHRpb24pKTsKKyAgICByZXR1cm47
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rp
b24uaAppbmRleCA5MTkxYjJjNjUzNDJjZDFiNjU3MTI1YTIzMjY0NjE2ZmU4ZGUyMjlhLi41NDVh
YzVmZjYxYjdiMmJhZTdkZTM4NzQyZDU2ODg4ZTVmMDgxNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbENvbm5lY3Rpb24uaApAQCAtNDYsMjMgKzQ2LDE2IEBAIGNsYXNzIExvY2FsQ29ubmVjdGlv
biB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTG9jYWxDb25uZWN0aW9uKTsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIFVzZXJDb25zZW50
IHsKLSAgICAgICAgTm8sCi0gICAgICAgIFllcwotICAgIH07Ci0KICAgICB1c2luZyBBdHRlc3Rh
dGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChOU0FycmF5ICosIE5TRXJyb3Ig
Kik+OwotICAgIHVzaW5nIFVzZXJDb25zZW50Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFVzZXJDb25zZW50KT47Ci0gICAgdXNpbmcgVXNlckNvbnNlbnRDb250ZXh0Q2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJDb25zZW50LCBMQUNvbnRleHQgKik+OwogCiAg
ICAgTG9jYWxDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfkxvY2FsQ29ubmVj
dGlvbigpID0gZGVmYXVsdDsKIAogICAgIC8vIE92ZXJyaWRlZCBieSBNb2NrTG9jYWxDb25uZWN0
aW9uLgotICAgIHZpcnR1YWwgdm9pZCBnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNv
biwgU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNlckNvbnNlbnRDb250ZXh0Q2FsbGJhY2smJikgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGlzVW5sb2NrZWQoTEFDb250ZXh0ICopIGNvbnN0OwogICAg
IHZpcnR1YWwgUmV0YWluUHRyPFNlY0tleVJlZj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXko
TEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxh
YmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIGdldEF0dGVzdGF0aW9uKFNlY0tleVJlZiwgTlNEYXRhICphdXRoRGF0YSwgTlNEYXRhICpo
YXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYpIGNvbnN0OwotICAgIHZpcnR1YWwgTlNEaWN0aW9u
YXJ5ICpzZWxlY3RDcmVkZW50aWFsKGNvbnN0IE5TQXJyYXkgKikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGZpbHRlclJlc3BvbnNlcyhIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+PiYpIGNvbnN0IHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IDhiYWVlZTcwOWZm
YzdkM2NlNWNiOGU4MDE0YzMxM2I4YTBhZTAxYjQuLjUzZTAxMjNhZDdhZGE1NTc1M2MyMjI5OWZl
ODllODg0MDJmYzIxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KQEAg
LTM5LDIyICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBMb2NhbENvbm5l
Y3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250
cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0Citib29sIExvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZChMQUNv
bnRleHQgKmNvbnRleHQpIGNvbnN0CiB7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHROUyhbYWxs
b2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBhdXRvIHJlcGx5ID0gbWFrZUJsb2Nr
UHRyKFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgICAgIFVzZXJDb25zZW50IGNvbnNlbnQg
PSBVc2VyQ29uc2VudDo6WWVzOwotICAgICAgICBpZiAoIXN1Y2Nlc3MgfHwgZXJyb3IpIHsKLSAg
ICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmlj
czogJUAiLCBlcnJvcik7Ci0gICAgICAgICAgICBjb25zZW50ID0gVXNlckNvbnNlbnQ6Ok5vOwot
ICAgICAgICB9Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29uc2VudCwgY29udGV4dCA9IFdU
Rk1vdmUoY29udGV4dCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihjb25zZW50LCBjb250ZXh0LmdldCgpKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0gICAgW2Nv
bnRleHQgZXZhbHVhdGVBY2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNj
ZXNzQ29udHJvbE9wZXJhdGlvblVzZUtleVNpZ24gbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBs
eTpyZXBseS5nZXQoKV07CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byByZXN1
bHQgPSBbY29udGV4dCBldmFsdWF0ZVBvbGljeTpMQVBvbGljeURldmljZU93bmVyQXV0aGVudGlj
YXRpb25XaXRoQmlvbWV0cmljcyBvcHRpb25zOkB7IEAoTEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSk6
IEBZRVMgfSBlcnJvcjomZXJyb3JdOworICAgIGlmICghcmVzdWx0KQorICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQ6ICVAIiwgZXJyb3IpOworICAgIHJldHVybiAh
IXJlc3VsdDsKIH0KIAogUmV0YWluUHRyPFNlY0tleVJlZj4gTG9jYWxDb25uZWN0aW9uOjpjcmVh
dGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNvbnRleHQgKmNvbnRleHQsIFNlY0FjY2Vzc0NvbnRy
b2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgY29uc3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0
YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBjb25zdApAQCAtODgsMTIgKzc5LDYgQEAgTE9DQUxD
T05ORUNUSU9OX0FERElUSU9OUwogI2VuZGlmCiB9CiAKLU5TRGljdGlvbmFyeSAqTG9jYWxDb25u
ZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsKGNvbnN0IE5TQXJyYXkgKmNyZWRlbnRpYWxzKSBjb25z
dAotewotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTAwNTM0KTogV2UgZG9uJ3QgaGF2
ZSBhbiBVSSB0byBwcm9tcHQgdXNlcnMgZm9yIHNlbGVjdGluZyBpbnRlcnNlY3RlZENyZWRlbnRp
YWxzLCBhbmQgdGhlcmVmb3JlIHdlIGFsd2F5cyB1c2UgdGhlIGZpcnN0IG9uZSBmb3Igbm93Lgot
ICAgIHJldHVybiBjcmVkZW50aWFsc1swXTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IDNjNmIzZDdlMDEzY2U2ODA3Mjgz
OGI5MjY4YWVjYTliZGUyOThlY2YuLmRmM2Q5NWFlMTA5ZTViZDQyMTI3YTNlNGYwM2M1NDUzYjU4
YmMzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc21pc3NQ
YW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXF1
ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5n
Jik+JiYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVj
dG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNz
Q29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGNvbnN0
IGZpbmFsOwogCiAgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqbV9wYW5lbDsKICAgICBX
ZWFrT2JqQ1B0cjxpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiA+IG1fZGVs
ZWdhdGU7CkBAIC01OCw3ICs1OSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgcGFuZWxVcGRh
dGVXZWJBdXRoZW50aWNhdGlvblBhbmVsIDogMTsKICAgICAgICAgYm9vbCBwYW5lbERpc21pc3NX
ZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdCA6IDE7CiAgICAgICAgIGJvb2wgcGFuZWxS
ZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXNDb21wbGV0aW9uSGFuZGxlciA6IDE7Ci0gICAg
ICAgIGJvb2wgcGFuZWxzZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIDog
MTsKKyAgICAgICAgYm9vbCBwYW5lbFNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXIgOiAxOworICAgICAgICBib29sIHBhbmVsVmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9s
Q29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5t
bQppbmRleCBkNTE2NjMyYjk4ZDczODgxYzQzZTQzMTljMzk3MzNlMDQwMzllYjVlLi40MDgwNjUy
ZGRkMjgzMjdkMTYzZWRlZGFhZWE3YjljMGM4ODBhMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KQEAgLTM4LDYgKzM4LDgg
QEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAor
I2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKnBhbmVsLCBpZCA8X1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiBkZWxlZ2F0ZSkKQEAgLTQ3LDcgKzQ5LDggQEAgV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudChf
V0tXZWJBdXRoZW50aWNhdGlvblAKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFVwZGF0ZVdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihwYW5lbDp1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOildOwogICAgIG1fZGVsZWdh
dGVNZXRob2RzLnBhbmVsRGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0ID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6ZGlzbWlzc1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBh
bmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdSZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpyZXF1ZXN0UElOV2l0aFJl
bWFpbmluZ1JldHJpZXM6Y29tcGxldGlvbkhhbmRsZXI6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxT
ZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29t
cGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2Vy
V2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21w
bGV0aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0YWluUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGVsZWdhdGUo
KQpAQCAtNjcsNiArNzAsMTIgQEAgc3RhdGljIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRh
dGUgd2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKFdlYkF1dGhlbnQKICAgICAgICAgcmV0
dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5BdXRoQmxvY2tlZDsKICAgICBp
ZiAoc3RhdHVzID09IFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzOjpQaW5JbnZhbGlkKQogICAgICAg
ICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkludmFsaWQ7CisgICAg
aWYgKHN0YXR1cyA9PSBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFFcnJvcikKKyAgICAgICAg
cmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yOworICAgIGlmIChz
dGF0dXMgPT0gV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxBRHVwbGljYXRlQ3JlZGVudGlhbCkK
KyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0
ZUNyZWRlbnRpYWw7CisgICAgaWYgKHN0YXR1cyA9PSBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6
TEFOb0NyZWRlbnRpYWwpCisgICAgICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlTEFOb0NyZWRlbnRpYWw7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVNdWx0aXBsZU5GQ1RhZ3NQcmVzZW50
OwogfQpAQCAtMTMzLDcgKzE0Miw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBCiB7CiAgICAg
QVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsKIAotICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhv
ZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAg
aWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1OCw2ICsxNjcsMjggQEAgdm9pZCBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVm
PFdlYkNvcmU6OkEKICAgICB9KS5nZXQoKV07CiB9CiAKK3ZvaWQgV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudDo6dmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2ws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBjb25zdAoreworICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0
aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihhZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdl
dCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWRv
cHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRdKS5nZXQoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxD
aGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3RvcihwYW5lbDp2ZXJpZnlVc2Vy
V2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIHBh
bmVsOm1fcGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oTEFDb250ZXh0
ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2Vy
LT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29udGV4dCk7CisgICAgfSkuZ2V0KCldOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29u
bmVjdGlvbi5oCmluZGV4IDcyMDE1OGFjYzI1NTkxYjczMGZjZTcxY2FmZWRiZTM0MzE5NmRlZDIu
LmQwZGQ5YjEwNDlhYTE3ZmJlZWUzYjg0OTJlNWVjNDFmNzU1MmE4ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCkBAIC0zNywxMCArMzcsMTAgQEAgcHVibGljOgog
ICAgIGV4cGxpY2l0IE1vY2tMb2NhbENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2V0VXNl
ckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJD
b25zZW50Q29udGV4dENhbGxiYWNrJiYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNVbmxvY2tl
ZChMQUNvbnRleHQgKikgY29uc3QgZmluYWw7CiAgICAgUmV0YWluUHRyPFNlY0tleVJlZj4gY3Jl
YXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYs
IGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRh
ZykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0
YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwgQXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdCBm
aW5hbDsKLSAgICBOU0RpY3Rpb25hcnkgKnNlbGVjdENyZWRlbnRpYWwoY29uc3QgTlNBcnJheSAq
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGZpbHRlclJlc3BvbnNlcyhIYXNoU2V0PFJlZjxXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYpIGNvbnN0IGZpbmFsOwogCiAg
ICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3Vy
YXRpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4
IDkxNWI1OTQ5OWZlN2VjZDI3YmZmNjliMmYwNjcwZGI3ZDRjZjMwZmYuLjQ5YTQxNmZhNjkxNmUx
YjRiNzM4N2MxMTU4M2NhZDk2MDc0NGFmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2Nh
bENvbm5lY3Rpb24ubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0
aW9uRGF0YS5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29j
b2EvU2VjdXJpdHlTUEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpbXBvcnQgIkxvY2FsQXV0aGVudGljYXRpb25Tb2Z0
TGluay5oIgpAQCAtNDMsMTcgKzQ0LDkgQEAgTW9ja0xvY2FsQ29ubmVjdGlvbjo6TW9ja0xvY2Fs
Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db24KIHsKIH0K
IAotdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcm
LCBTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2VyQ29uc2VudENvbnRleHRDYWxsYmFjayYmIGNhbGxi
YWNrKSBjb25zdAorYm9vbCBNb2NrTG9jYWxDb25uZWN0aW9uOjppc1VubG9ja2VkKExBQ29udGV4
dCAqY29udGV4dCkgY29uc3QKIHsKLSAgICAvLyBNb2NrIGFzeW5jIG9wZXJhdGlvbnMuCi0gICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9u
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICBBU1NF
UlQoY29uZmlndXJhdGlvbi5sb2NhbCk7Ci0gICAgICAgIGlmICghY29uZmlndXJhdGlvbi5sb2Nh
bC0+YWNjZXB0QXV0aGVudGljYXRpb24pIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFVzZXJDb25z
ZW50OjpObywgbmlsKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBj
YWxsYmFjayhVc2VyQ29uc2VudDo6WWVzLCBhZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNl
KCkgaW5pdF0pLmdldCgpKTsKLSAgICB9KTsKKyAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLmxv
Y2FsLT5hY2NlcHRBdXRoZW50aWNhdGlvbjsKIH0KIAogUmV0YWluUHRyPFNlY0tleVJlZj4gTW9j
a0xvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICos
IFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEg
KnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QKQEAgLTExMiwxNSArMTA1LDIwIEBAIHZvaWQg
TW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKiwg
TlNEYXRhICosIEF0dGVzdGF0CiAgICAgfSk7CiB9CiAKLU5TRGljdGlvbmFyeSAqTW9ja0xvY2Fs
Q29ubmVjdGlvbjo6c2VsZWN0Q3JlZGVudGlhbChjb25zdCBOU0FycmF5ICpjcmVkZW50aWFscykg
Y29uc3QKK3ZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6ZmlsdGVyUmVzcG9uc2VzKEhhc2hTZXQ8
UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMp
IGNvbnN0CiB7Ci0gICAgYXV0byBwcmVmZXJyZWRVc2VyaGFuZGxlID0gYWRvcHROUyhbW05TRGF0
YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOm1fY29uZmlndXJhdGlvbi5sb2Nh
bC0+cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCBvcHRpb25zOjBdKTsKLSAgICBmb3IgKE5TRGlj
dGlvbmFyeSAqY3JlZGVudGlhbCA6IGNyZWRlbnRpYWxzKSB7Ci0gICAgICAgIGlmIChbY3JlZGVu
dGlhbFsoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ10gaXNFcXVhbFRvRGF0YTpwcmVmZXJyZWRV
c2VyaGFuZGxlLmdldCgpXSkKLSAgICAgICAgICAgIHJldHVybiBjcmVkZW50aWFsOworICAgIGF1
dG8gaXRyID0gcmVzcG9uc2VzLmJlZ2luKCk7CisgICAgZm9yICg7IGl0ciAhPSByZXNwb25zZXMu
ZW5kKCk7ICsraXRyKSB7CisgICAgICAgIGF1dG8qIHVzZXJIYW5kbGUgPSBpdHItPmdldCgpLnVz
ZXJIYW5kbGUoKTsKKyAgICAgICAgQVNTRVJUKHVzZXJIYW5kbGUpOworICAgICAgICBhdXRvIHVz
ZXJoYW5kbGVCYXNlNjQgPSBiYXNlNjRFbmNvZGUodXNlckhhbmRsZS0+ZGF0YSgpLCB1c2VySGFu
ZGxlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICBpZiAodXNlcmhhbmRsZUJhc2U2NCA9PSBtX2Nv
bmZpZ3VyYXRpb24ubG9jYWwtPnByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQpCisgICAgICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG5p
bDsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVzcG9uc2VzLnRha2UoaXRyKTsKKyAgICBBU1NFUlQo
cmVzcG9uc2UpOworICAgIHJlc3BvbnNlcy5jbGVhcigpOworICAgIHJlc3BvbnNlcy5hZGQoV1RG
TW92ZSgqcmVzcG9uc2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dGlvbkZsYWdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdGlvbkZsYWdzLmgKaW5kZXggNTQ4OGEyMTEzOTI5MjZjMGEzNjZmZmE4N2Y3
NjU5MDlkOTFlNWI4OC4uOTc1MTgzZGZkNTc3NTJkMTIzZjY1MzM3Yjc2Yjc5NTUyNDY2MTFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRpb25GbGFncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaApAQCAtNDUsNyArNDUsMTAgQEAg
ZW51bSBjbGFzcyBXZWJBdXRoZW50aWNhdGlvblN0YXR1cyA6IHVpbnQ4X3QgewogICAgIE5vQ3Jl
ZGVudGlhbHNGb3VuZCwKICAgICBQaW5CbG9ja2VkLAogICAgIFBpbkF1dGhCbG9ja2VkLAotICAg
IFBpbkludmFsaWQKKyAgICBQaW5JbnZhbGlkLAorICAgIExBRXJyb3IsCisgICAgTEFEdXBsaWNh
dGVDcmVkZW50aWFsLAorICAgIExBTm9DcmVkZW50aWFsLAogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyY2NmYjY1YTg0YTI3Y2ZiZTc2NWJmNzViOTE2YzY1MzEyM2Y2MzI0Li40NWVjY2M1
Njc3MTBkNzFiZDY0N2MxN2MwNzA2MGZjNmM0YWJhNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTYsNiArMTA5Niw3IEBACiAJ
CTU3MERBQUM2MjMwMzdGN0YwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFDNDIz
MDM3RjdFMDBFOEZDMDQgLyogV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oICovOyB9OwogCQk1
NzBEQUFDQTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREFBQzgyMzAzODVGRDAwRThGQzA0
IC8qIEN0YXBOZmNEcml2ZXIuaCAqLzsgfTsKIAkJNTcyRkQ0NDMyMjI2NUNFMjAwQTFFQ0MzIC8q
IFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRkQ0NDEyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZp
ZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oICovOyB9OworCQk1NzQyMTc5MjI0MDBFMjg2MDAy
QjMwM0QgLyogTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0MjE3OTEyNDAwRTA5ODAwMkIzMDNEIC8qIExvY2Fs
QXV0aGVudGljYXRpb25TUEkuaCAqLzsgfTsKIAkJNTc0NzI4RDEyMzQ1NkU5ODAwMTcwMEFGIC8q
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDcyOENGMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTc0NzI4RDQyMzQ1NzBBRTAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc0NzI4RDMyMzQ1NzBBRTAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxJbnRlcm5hbC5oICovOyB9OwogCQk1NzU5N0VCOTIxODExRDlBMDAzN0Y5MjQgLyogQ3Rh
cEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCAqLzsgfTsKQEAg
LTM4MTEsNiArMzgxMiw3IEBACiAJCTU3MERBQUM4MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZj
RHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN0YXBOZmNEcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTcwREFBQzkyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3RhcE5mY0RyaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MkZENDQxMjIyNjVDRTIwMEExRUNDMyAvKiBXZWJWaWV3RGlkTW92
ZVRvV2luZG93T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlld0RpZE1vdmVUb1dpbmRv
d09ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NDIxNzkxMjQwMEUw
OTgwMDJCMzAzRCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
Y2FsQXV0aGVudGljYXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0
NzI4Q0YyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzQ3MjhEMDIzNDU2RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NDcyOEQzMjM0NTcwQUUw
MDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02ODM5LDYgKzY4NDEsNyBAQAogCQkJCTFBNTcwNTEwMUJFNDEwRTUw
MDg3NEFGMSAvKiBCbG9ja1NQSS5oICovLAogCQkJCTM3QzIxQ0FEMUU5OTRDMEMwMDI5RDVGOSAv
KiBDb3JlUHJlZGljdGlvblNQSS5oICovLAogCQkJCTJEQUFEQThFMjI5OEMyMTAwMEUzNkIwQyAv
KiBEZXZpY2VNYW5hZ2VtZW50U1BJLmggKi8sCisJCQkJNTc0MjE3OTEyNDAwRTA5ODAwMkIzMDNE
IC8qIExvY2FsQXV0aGVudGljYXRpb25TUEkuaCAqLywKIAkJCQk1N0I4MjY0MDIzMDRFQjNFMDBC
NzJFQjAgLyogTmVhckZpZWxkU1BJLmggKi8sCiAJCQkJMzc1NEQ1NDQxQjNBMjlGRDAwM0E0QzdG
IC8qIE5TSW52b2NhdGlvblNQSS5oICovLAogCQkJCTM3QjQ3RTJDMUQ2NERCNzYwMDVGNEVGRiAv
KiBvYmpjU1BJLmggKi8sCkBAIC0xMDM2Miw2ICsxMDM2NSw3IEBACiAJCQkJNDEzMDc1QjIxREU4
NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEMTA4NzYxMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTc4REMyOTgyMTU1QTAwMjAwNzRFODE1IC8qIExvY2FsQXV0aGVudGljYXRp
b25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc0MjE3OTIyNDAwRTI4NjAwMkIzMDNE
IC8qIExvY2FsQXV0aGVudGljYXRpb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREFD
MjE0QzYwMjcwMDE2Qjg0NyAvKiBMb2NhbEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3RENFREFEMjE0QzYwMkMwMDE2Qjg0NyAvKiBMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3RENFREFFMjE0QzYwMzMwMDE2Qjg0NyAvKiBMb2NhbFNlcnZpY2UuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDgzZWVkMGI4MDQ3ZmY0NjA1MzljMDdkY2JkZDAzNjVmMDYxMTVmMjQuLmQ1NDZi
NTM0N2FlZDhiZWM5MzE0MmM5OWFjN2UzMmRjMjRjOThjNzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wMi0y
MSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRo
bl0gSW1wbGVtZW50IFNQSSBmb3IgdGhlIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA4NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTkzNjkzMDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQmVzaWRlcyBhZGRpbmcgQVBJIHRlc3RzLCB0aGlzIHBhdGNoIGFs
c28gdGVhY2hlcyBUZXN0V2ViS2l0QVBJIHRvIHVzZSByZXN0cmljdGVkIGVudGl0bGVtZW50cy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1t
YWNPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAg
ICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5lbDp1cGRhdGVXZWJB
dXRoZW50aWNhdGlvblBhbmVsOl0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25Q
YW5lbERlbGVnYXRlIHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBh
bmVsOnZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEtbm8tY3Jl
ZGVudGlhbC5odG1sOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
d2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlh
bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbDogQWRkZWQu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC5odG1sOiBBZGRlZC4KKwogMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hl
bmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQgaGF2ZSBz
ZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVt
ZW50cwppbmRleCBlYTBjMWY3YzQ3NGEyNWM3MTBjMzg1ZGQ2OGJjOTRlODIwOTBhNzEwLi5hOWY5
Y2RmMDRjMmZiYmQwMmUzYTJlZWYyMjYyNDdhZTZlYjk2MjM4IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1l
bnRzCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQ
SS1tYWNPUy5lbnRpdGxlbWVudHMKQEAgLTIsNiArMiwxMCBAQAogPCFET0NUWVBFIHBsaXN0IFBV
QkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20v
RFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVyc2lvbj0iMS4wIj4KIDxkaWN0
PgorCTxrZXk+a2V5Y2hhaW4tYWNjZXNzLWdyb3Vwczwva2V5PgorCTxhcnJheT4KKwkJPHN0cmlu
Zz5jb20uYXBwbGUuVGVzdFdlYktpdEFQSTwvc3RyaW5nPgorCTwvYXJyYXk+CiAJPGtleT5jb20u
YXBwbGUuc2VjdXJpdHkudGVtcG9yYXJ5LWV4Y2VwdGlvbi5zYnBsPC9rZXk+CiAJPGFycmF5Pgog
CQk8c3RyaW5nPihhbGxvdyBtYWNoLWlzc3VlLWV4dGVuc2lvbiAocmVxdWlyZS1hbGwgKGV4dGVu
c2lvbi1jbGFzcyAmcXVvdDtjb20uYXBwbGUud2Via2l0LmV4dGVuc2lvbi5tYWNoJnF1b3Q7KSkp
PC9zdHJpbmc+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25z
L1Rlc3RXZWJLaXRBUEkueGNjb25maWcgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRp
b25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKaW5kZXggMzBhOGNhZjBjMjQ3MGQ2NzZiNmRjZTM2
MjFmMDliMDRhYzc5MGQzMS4uY2E4ZTE3MTVhY2UxYzYzYTYwZDhiNDVjMWMxZmI1NzE4MGQzZWZl
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2Vi
S2l0QVBJLnhjY29uZmlnCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMv
VGVzdFdlYktpdEFQSS54Y2NvbmZpZwpAQCAtNjksMyArNjksMTAgQEAgQ09ERV9TSUdOX0VOVElU
TEVNRU5UU1tzZGs9aXBob25lKl0gPSBDb25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5l
bnRpdGxlbWUKIENPREVfU0lHTl9FTlRJVExFTUVOVFNbc2RrPW1hY29zeCpdID0gQ29uZmlndXJh
dGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHM7CiAKIFNUUklQX1NUWUxFID0g
ZGVidWdnaW5nOworCitDT0RFX1NJR05fSURFTlRJVFlbc2RrPW1hY29zeCpdID0gJChDT0RFX1NJ
R05fSURFTlRJVFlfJChDT05GSUdVUkFUSU9OKSk7CitDT0RFX1NJR05fSURFTlRJVFlfRGVidWcg
PSAkKENPREVfU0lHTl9JREVOVElUWV8kKFVTRV9JTlRFUk5BTF9TREspKTsKK0NPREVfU0lHTl9J
REVOVElUWV9SZWxlYXNlID0gJChDT0RFX1NJR05fSURFTlRJVFlfJChVU0VfSU5URVJOQUxfU0RL
KSk7CitDT0RFX1NJR05fSURFTlRJVFlfWUVTID0gJChXS19FTkdJTkVFUklOR19DT0RFX1NJR05f
SURFTlRJVFkpOworQ09ERV9TSUdOX0lERU5USVRZX1Byb2R1Y3Rpb24gPSAkKENPREVfU0lHTl9J
REVOVElUWV9Qcm9kdWN0aW9uXyQoVVNFX0lOVEVSTkFMX1NESykpOworQ09ERV9TSUdOX0lERU5U
SVRZX1Byb2R1Y3Rpb25fWUVTID0gLTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTQxNTdm
Njg4ZDlkMGJiOGZlNzFjZGFiODliYzg3YjBkY2YxM2E0NS4uMTVkNTA3Zjk4YWZjODI3Mzg5MjU0
ZTQzMzhjNjMyODA4MGRkMWYxNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0OSw2ICsz
NDksMTEgQEAKIAkJNTczMjU1QTUyMjEzOUJDNzAwMzk2QUU4IC8qIGhlbGxvd29ybGQud2ViYXJj
aGl2ZSBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzMyNTVBNDIyMTM5QjkwMDAzOTZBRTggLyogaGVsbG93b3JsZC53ZWJhcmNoaXZlICovOyB9
OwogCQk1NzMyNTVBNjIyMTM5QkM3MDAzOTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0xLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcz
MjU1QTIyMjEzOUI4RjAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMS5odG1sICovOyB9Owog
CQk1NzMyNTVBNzIyMTM5QkM3MDAzOTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0yLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMjU1
QTMyMjEzOUI5MDAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMi5odG1sICovOyB9OworCQk1
NzQyMTc4ODI0MDBBQzI1MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC1sYS1lcnJvci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgKi87IH07CisJCTU3NDIxNzhBMjQw
MEFFRDgwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1
cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0MjE3ODkyNDAwQUVEMDAwMkIzMDNEIC8qIHdlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCAq
LzsgfTsKKwkJNTc0MjE3OEMyNDAwQ0Q0NzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1n
ZXQtYXNzZXJ0aW9uLWxhLW5vLWNyZWRlbnRpYWwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0Qg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEtbm8tY3JlZGVudGlhbC5odG1s
ICovOyB9OworCQk1NzQyMTc4RTI0MDBEMkRGMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9u
LW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAvKiB3ZWItYXV0
aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi87IH07CisJCTU3NDIxNzkwMjQw
MEQ1NTYwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0
MjE3OEYyNDAwRDU0RDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwuaHRtbCAqLzsgfTsKIAkJNTc0RjU1RDIyMDRENDdGMDAwMjk0OEM2IC8qIFNlY3VyaXR5LmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3NEY1NUQwMjA0RDQ3MUMwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi87IH07CiAJ
CTU3NTg1OTdGMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU4NTk3RTIzQTI1MjdBMDBDNzQ1
NzIgLyogQ3RhcFBpblRlc3QuY3BwICovOyB9OwogCQk1NzU4NTk4NDIzQzNDM0E0MDBDNzQ1NzIg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLWdldC1yZXRyaWVz
LWVycm9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc1ODU5ODMyM0MzQzM2MjAwQzc0NTcyIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1t
YWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQtcmV0cmllcy1lcnJvci5odG1sICovOyB9OwpAQCAt
MTUxNyw2ICsxNTIyLDcgQEAKIAkJCQk1NzhEQTQ0RTIzRUNEMjhCMDAyNDYwMTAgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTcwRDI2RkMyM0MzRjg3MDAwRDVDRjY3IC8q
IHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1waW4uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQk1NzY2M0RFQzIzNEYxRjkzMDBFODVFMDkgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJ
NTc0MjE3OEMyNDAwQ0Q0NzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0
aW9uLWxhLW5vLWNyZWRlbnRpYWwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1Nzk4
MzM5MjIzNjhGQTM3MDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24t
bmZjLW11bHRpcGxlLXRhZ3MuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RF
QTIzNEVBNjZEMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZj
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc3NDU0RDIyMzU5QkIwMTAwOEUxRUQ3
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLXUyZi1uby1jcmVkZW50aWFscy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTUzMSw2ICsxNTM3LDEwIEBACiAJCQkJNTc4
REE0NEEyM0VDRDE4NjAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtaGlkLXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJNTcwRDI2RjYyM0MzRDMzMDAwRDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtl
LWNyZWRlbnRpYWwtaGlkLXBpbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3OTgz
MzdFMjM2MDE5QTQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFs
LWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTU3NDIxNzhBMjQwMEFFRDgwMDJC
MzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1j
cmVkZW50aWFsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTc0MjE3ODgyNDAwQUMy
NTAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3Iu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk1NzQyMTc4RTI0MDBEMkRGMDAyQjMwM0Qg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAorCQkJCTU3NDIxNzkwMjQwMEQ1NTYwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUMy
QjgxODYxQzg5MjU5RDAwQTU1MjlGIC8qIHdlYmZvbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQk1MTcxNEVCNDFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVh
bnVwLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MTcxNEVCNTFDRjhDNzhDMDA0
NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKQEAgLTE5NjEsNiArMTk3MSwxMSBAQAogCQk1NzMyNTVBMzIyMTM5QjkwMDAzOTZBRTgg
LyogbG9hZC13ZWItYXJjaGl2ZS0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG9hZC13ZWItYXJjaGl2ZS0y
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMyNTVBNDIyMTM5QjkwMDAz
OTZBRTggLyogaGVsbG93b3JsZC53ZWJhcmNoaXZlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZS5icGxpc3Q7IHBhdGggPSBoZWxsb3dvcmxkLndl
YmFyY2hpdmU7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzVGMDI1MUYzQTRFQTYw
MDBFRTgwMSAvKiBUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50
czsgcGF0aCA9ICJUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzQyMTc4NzI0MDBBQkZEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU3NDIxNzg5MjQwMEFFRDAwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3Jl
ZGVudGlhbC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc0MjE3OEIyNDAw
Q0QyRDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLW5vLWNy
ZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1sYS1uby1jcmVkZW50aWFsLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzQyMTc4RDI0MDBEMjZDMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC1sYS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NDIxNzhGMjQwMEQ1
NEQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0RjU1RDAyMDRENDcxQzAwMjk0OEM2IC8qIFNlY3Vy
aXR5LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gU2VjdXJpdHkuZnJhbWV3b3JrOyBwYXRo
ID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcms7IHNvdXJjZVRy
ZWUgPSBTREtST09UOyB9OwogCQk1NzU4NTk3RDIzQTI1MjdBMDBDNzQ1NzIgLyogQ3RhcFBpblRl
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ3RhcFBpblRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTc1ODU5N0UyM0EyNTI3QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEN0YXBQaW5UZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTM1NzksNiArMzU5NCw3IEBACiAJCQkJNTc4REE0NEQyM0VDRDI2MTAwMjQ2MDEwIC8q
IHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1waW4taW52YWxpZC1lcnJvci1y
ZXRyeS5odG1sICovLAogCQkJCTU3MEQyNkZCMjNDM0Y4NjUwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLmh0bWwgKi8sCiAJCQkJNTc2NjNERUIyMzRG
MUY4MDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1s
ICovLAorCQkJCTU3NDIxNzhCMjQwMENEMkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1sYS1uby1jcmVkZW50aWFsLmh0bWwgKi8sCiAJCQkJNTc5ODMzN0IyMzVF
QjY1QzAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1tdWx0
aXBsZS10YWdzLmh0bWwgKi8sCiAJCQkJNTc2NjNERTkyMzRFQTYwQjAwRTg1RTA5IC8qIHdlYi1h
dXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sICovLAogCQkJCTU3NzQ1NEQxMjM1
OUJBRDUwMDhFMUVENyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi11MmYtbm8t
Y3JlZGVudGlhbHMuaHRtbCAqLywKQEAgLTM1OTMsNiArMzYwOSwxMCBAQAogCQkJCTU3OERBNDQ5
MjNFQ0QxNTUwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhp
ZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1sICovLAogCQkJCTU3MEQyNkY1MjNDM0QzMjcw
MEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4uaHRt
bCAqLywKIAkJCQk1Nzk4MzM3RDIzNjAxOTZEMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9u
LW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCAqLywKKwkJCQk1NzQyMTc4OTI0MDBBRUQwMDAyQjMw
M0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3Jl
ZGVudGlhbC5odG1sICovLAorCQkJCTU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3ZWItYXV0
aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgKi8sCisJCQkJNTc0MjE3
OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwt
bGEuaHRtbCAqLywKKwkJCQk1NzQyMTc4RjI0MDBENTREMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC5odG1sICovLAogCQkJCTUxNzE0RUIyMUNGOEM3NjEwMDQ3
MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICovLAogCQkJCTUxNzE0RUIz
MUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovLAog
CQkJCTUxMjBDODNCMUU2NzRFMzUwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0
aHMuaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAwODMz
YzQ5ODlhYmMzYWEzNGEzY2E2ODgzMWQwNGFmNDA2MmYzNmUzLi5iNDc4OGE2MTRmYzU4ZmEzYzNl
YWQ4NGU0ODUxYWNjMGE1NzNiMjI1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRl
c3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIK
KyNpbXBvcnQgPExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxBdXRoZW50aWNhdGlvbi5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0V4cGVyaW1lbnRhbEZlYXR1
cmUuaD4KQEAgLTQ5LDkgKzUwLDE4IEBAIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVOb0NyZWRlbnRpYWxzRm91bmQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5CbG9ja2VkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJB
dXRoZW50aWNhdGlvblBhbmVsVXBkYXRlUElOQXV0aEJsb2NrZWQgPSBmYWxzZTsKIHN0YXRpYyBi
b29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkID0gZmFsc2U7CitzdGF0
aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvciA9IGZhbHNlOworc3Rh
dGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlh
bCA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9D
cmVkZW50aWFsID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2Fu
Y2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKK3N0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxWZXJpZnlVc2VyID0gZmFsc2U7CiBzdGF0aWMgU3RyaW5nIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxQaW47CiBzdGF0aWMgQk9PTCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUg
PSBOTzsKK3N0YXRpYyBTdHJpbmcgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9CisgICAgIkJE
ai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBnRnBzakYvUW0xNzQ5VkJKUGdxVUl3ZmhXSEo5
MW5iN1UiCisgICAgIlBINzZjMCtXRk96WktzbFB5eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVuZm5C
Z0VWRmg1emV2Ky94cEhRSXZ1cTYiCisgICAgIlJRPT0iOworc3RhdGljIFN0cmluZyB0ZXN0VXNl
cmhhbmRsZUJhc2U2NCA9ICJBQUVDQXdRRkJnY0lDUT09IjsKIAogQGludGVyZmFjZSBUZXN0V2Vi
QXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxEZWxlZ2F0ZT4KIEBlbmQKQEAgLTg0LDYgKzk0LDE4IEBAIC0gKHZvaWQpcGFuZWw6
KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB1cGRhdGVXZWJBdXRoZW50aWNhdGlv
blBhbmVsOihfCiAgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlk
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAodXBkYXRlID09IF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yKSB7CisgICAgICAgIHdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAodXBkYXRlID09IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxp
Y2F0ZUNyZWRlbnRpYWwpIHsKKyAgICAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxB
RHVwbGljYXRlQ3JlZGVudGlhbCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKHVwZGF0ZSA9PSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRp
YWwpIHsKKyAgICAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFs
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogLSAodm9pZClwYW5lbDooX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBh
bmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGljYXRpb25SZXN1bHQpcmVzdWx0CkBAIC0xMTEs
NiArMTMzLDExIEBAIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilw
YW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6CiAKIC0gKHZvaWQpcGFuZWw6KF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZToo
TlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNw
b25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBpZiAocmVzcG9uc2Vz
LmNvdW50ID09IDEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEVYUEVDVF9FUShyZXNwb25zZXMuY291bnQs
IDJ1bCk7CiAgICAgZm9yIChfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpy
ZXNwb25zZSBpbiByZXNwb25zZXMpIHsKICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3BvbnNlLm5h
bWUgaXNFcXVhbDpAImpvaG5wc21pdGhAZXhhbXBsZS5jb20iXSB8fCBbcmVzcG9uc2UubmFtZSBp
c0VxdWFsOkAiIl0pOwpAQCAtMTIzLDYgKzE1MCwxMyBAQCAtICh2b2lkKXBhbmVsOihfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6KE5TQXJy
YQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlc1tpbmRleF0pOwogfQogCistICh2b2lk
KXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdmVyaWZ5VXNlcldpdGhB
Y2Nlc3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9sUmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyID0gdHJ1ZTsKKyAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdE5TKFtbTEFDb250ZXh0IGFsbG9jXSBpbml0XSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoY29udGV4dC5nZXQoKSk7Cit9CisKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0
aGVudGljYXRpb25QYW5lbEZha2VEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsRGVsZWdhdGU+CkBAIC0yMzEsNiArMjY1LDIyIEBAIHN0YXRpYyBfV0tFeHBlcmlt
ZW50YWxGZWF0dXJlICp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKQogICAg
IHJldHVybiB0aGVGZWF0dXJlLmdldCgpOwogfQogCitzdGF0aWMgX1dLRXhwZXJpbWVudGFsRmVh
dHVyZSAqd2ViQXV0aGVudGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0
dXJlKCkKK3sKKyAgICBzdGF0aWMgUmV0YWluUHRyPF9XS0V4cGVyaW1lbnRhbEZlYXR1cmU+IHRo
ZUZlYXR1cmU7CisgICAgaWYgKHRoZUZlYXR1cmUpCisgICAgICAgIHJldHVybiB0aGVGZWF0dXJl
LmdldCgpOworCisgICAgTlNBcnJheSAqZmVhdHVyZXMgPSBbV0tQcmVmZXJlbmNlcyBfZXhwZXJp
bWVudGFsRmVhdHVyZXNdOworICAgIGZvciAoX1dLRXhwZXJpbWVudGFsRmVhdHVyZSAqZmVhdHVy
ZSBpbiBmZWF0dXJlcykgeworICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWw6QCJXZWJB
dXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckVuYWJsZWQiXSkgeworICAgICAgICAgICAg
dGhlRmVhdHVyZSA9IGZlYXR1cmU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gdGhlRmVhdHVyZS5nZXQoKTsKK30KKwogc3RhdGljIHZvaWQgcmVzZXQo
KQogewogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSBmYWxzZTsKQEAgLTI0MSw5ICsy
OTEsMTMgQEAgc3RhdGljIHZvaWQgcmVzZXQoKQogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxV
cGRhdGVQSU5CbG9ja2VkID0gZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZVBJTkF1dGhCbG9ja2VkID0gZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZVBJTkludmFsaWQgPSBmYWxzZTsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFF
cnJvciA9IGZhbHNlOworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0
ZUNyZWRlbnRpYWwgPSBmYWxzZTsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFO
b0NyZWRlbnRpYWwgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1t
ZWRpYXRlbHkgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGluID0gZW1wdHlT
dHJpbmcoKTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUgPSBOTzsK
KyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlciA9IGZhbHNlOwogfQogCiBzdGF0
aWMgdm9pZCBjaGVja1BhbmVsKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKnBhbmVsLCBOU1N0
cmluZyAqcmVseWluZ1BhcnR5SUQsIE5TQXJyYXkgKnRyYW5zcG9ydHMsIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uVHlwZSB0eXBlKQpAQCAtMjc3LDYgKzMzMSw1NiBAQCBzdGF0aWMgdm9pZCBjaGVja0Zy
YW1lSW5mbyhXS0ZyYW1lSW5mbyAqZnJhbWUsIGJvb2wgaXNNYWluRnJhbWUsIE5TU3RyaW5nICp1
cmwsCiAgICAgRVhQRUNUX0VRKGZyYW1lLndlYlZpZXcsIHdlYlZpZXcpOwogfQogCitib29sIGFk
ZEtleVRvS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdCBTdHJp
bmcmIHJwSWQsIGNvbnN0IFN0cmluZyYgdXNlckhhbmRsZUJhc2U2NCkKK3sKKyAgICBOU0RpY3Rp
b25hcnkqIG9wdGlvbnMgPSBAeworICAgICAgICAoaWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpa1Nl
Y0F0dHJLZXlUeXBlRUNTRUNQcmltZVJhbmRvbSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xh
c3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5
U2l6ZUluQml0czogQDI1NiwKKyAgICB9OworICAgIENGRXJyb3JSZWYgZXJyb3JSZWYgPSBudWxs
cHRyOworICAgIGF1dG8ga2V5ID0gYWRvcHRDRihTZWNLZXlDcmVhdGVXaXRoRGF0YSgKKyAgICAg
ICAgKF9fYnJpZGdlIENGRGF0YVJlZilhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJh
c2U2NEVuY29kZWRTdHJpbmc6cHJpdmF0ZUtleUJhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERl
Y29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSwKKyAgICAgICAgKF9fYnJpZGdl
IENGRGljdGlvbmFyeVJlZilvcHRpb25zLAorICAgICAgICAmZXJyb3JSZWYKKyAgICApKTsKKyAg
ICBpZiAoZXJyb3JSZWYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5TRGljdGlvbmFy
eSogYWRkUXVlcnkgPSBAeworICAgICAgICAoaWQpa1NlY1ZhbHVlUmVmOiAoaWQpa2V5LmdldCgp
LAorICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAorICAgICAgICAoaWQp
a1NlY0F0dHJMYWJlbDogcnBJZCwKKyAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6
IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzp1c2Vy
SGFuZGxlQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hh
cmFjdGVyc10pLmdldCgpLAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlOiAoaWQpa1Nl
Y0F0dHJBY2Nlc3NpYmxlQWZ0ZXJGaXJzdFVubG9jaywKKyNpZiBIQVZFKERBVEFfUFJPVEVDVElP
Tl9LRVlDSEFJTikKKyAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBA
WUVTCisjZWxzZQorICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUworI2VuZGlmCisg
ICAgfTsKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQWRkKChfX2JyaWRnZSBDRkRpY3Rp
b25hcnlSZWYpYWRkUXVlcnksIE5VTEwpOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIGNsZWFuVXBLZXljaGFpbihj
b25zdCBTdHJpbmcmIHJwSWQpCit7CisgICAgTlNEaWN0aW9uYXJ5KiBkZWxldGVRdWVyeSA9IEB7
CisgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCisgICAgICAgIChpZClr
U2VjQXR0ckxhYmVsOiBycElkLAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlOiAoaWQp
a1NlY0F0dHJBY2Nlc3NpYmxlQWZ0ZXJGaXJzdFVubG9jaywKKyNpZiBIQVZFKERBVEFfUFJPVEVD
VElPTl9LRVlDSEFJTikKKyAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWlu
OiBAWUVTCisjZWxzZQorICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUworI2VuZGlm
CisgICAgfTsKKyAgICBTZWNJdGVtRGVsZXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVs
ZXRlUXVlcnkpOworfQorCiB9IC8vIG5hbWVzYXBjZTsKIAogVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBOb1BhbmVsVGltZW91dCkKQEAgLTEwNzYsNiArMTE4MCwxMTggQEAgVEVTVChXZWJB
dXRoZW50aWNhdGlvblBhbmVsLCBNdWx0aXBsZUFjY291bnRzKQogICAgIEVYUEVDVF9FUShbW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVzZXJIYW5kbGUiXSBpc0VxdWFs
VG9TdHJpbmc6QCI8bnVsbD4iXSwgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxl
KTsKIH0KIAorVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUVycm9yKQoreworICAgIHJl
c2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwt
bGEtZXJyb3IiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpA
IldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllF
U107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9y
RXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUo
KV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9y
RXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4
cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcg
c2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGls
OjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yKTsKK30KKworVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUR1cGxpY2F0ZUNyZWRlbnRpYWwpCit7CisgICAgcmVz
ZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS1kdXBsaWNhdGUtY3JlZGVudGlhbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpT
Q0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRF
bmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJp
bWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRF
bmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxB
dXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3Qg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIEFTU0VS
VF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIsIHRl
c3RVc2VyaGFuZGxlQmFzZTY0KSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJB
dXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFEdXBsaWNhdGVDcmVkZW50aWFsKTsKKyAgICBjbGVh
blVwS2V5Y2hhaW4oIiIpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTm9D
cmVkZW50aWFsKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJM
ID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNh
dGlvbi1nZXQtYXNzZXJ0aW9uLWxhLW5vLWNyZWRlbnRpYWwiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAq
Y29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxz
IiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50
aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50
aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFs
bG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxV
cGRhdGVMQU5vQ3JlZGVudGlhbCk7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwg
TEFNYWtlQ3JlZGVudGlhbE51bGxEZWxlZ2F0ZSkKK3sKKyAgICByZXNldCgpOworICAgIFJldGFp
blB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAg
IGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25m
aWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aElu
dGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlv
biBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2Vi
QXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworICAgIFtbY29uZmlndXJhdGlv
biBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2Vi
QXV0aGVudGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJlKCldOwor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtkZWxlZ2F0ZSBzZXRJc051bGw6dHJ1ZV07CisgICAg
W3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsK
KyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKKyAgICBjbGVhblVw
S2V5Y2hhaW4oIiIpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNy
ZWRlbnRpYWwpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0
aW9uLW1ha2UtY3JlZGVudGlhbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0g
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0lu
Q2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0Zv
clRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFi
bGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVu
dGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFi
bGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRo
ZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1d
OworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlmeVVzZXIpOworICAg
IGNoZWNrUGFuZWwoW2RlbGVnYXRlIHBhbmVsXSwgQCIiLCBAW2Fkb3B0TlMoW1tOU051bWJlciBh
bGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRVU0JdKS5nZXQo
KSwgYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNh
dGlvblRyYW5zcG9ydEludGVybmFsXSkuZ2V0KCldLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVD
cmVhdGUpOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iXTsgLy8gTEFDb250ZXh0IGlzIGxvY2tlZC4KK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBMQUdldEFzc2VydGlvbikKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxO
U1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3
ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25m
aWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldp
dGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNv
bmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0
aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0
aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
WmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKwor
ICAgIEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2
NCwgIiIsIHRlc3RVc2VyaGFuZGxlQmFzZTY0KSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6
cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlcik7CisgICAgY2hlY2tQYW5lbChb
ZGVsZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0
aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQl0pLmdldCgpLCBhZG9wdE5TKFtb
TlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0
SW50ZXJuYWxdKS5nZXQoKV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZUdldCk7CisgICAgW3dl
YlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJPcGVyYXRpb24gdGltZWQgb3V0LiJdOyAvLyBMQUNvbnRl
eHQgaXMgbG9ja2VkLgorICAgIGNsZWFuVXBLZXljaGFpbigiIik7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNh
dGlvbi1nZXQtYXNzZXJ0aW9uLWxhLW5vLWNyZWRlbnRpYWwuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24t
bGEtbm8tY3JlZGVudGlhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2N2Q0MmFlMDNmYzk3MjM3MDgzYjEw
ODMzNjM0MGIzNjE5MWMxNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLW5v
LWNyZWRlbnRpYWwuaHRtbApAQCAtMCwwICsxLDE2IEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9
ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDog
eyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9
IH0pOworICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9j
dXMoKTsgfSk7CisgICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGlj
S2V5OiB7CisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAg
ICAgICAgIHRpbWVvdXQ6IDEKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0
aW9uLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRo
ZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwKaW5kZXggMmRlMmU5MjdjMGE1NDE1NDk2N2Rm
NWM0OWE1ZmRhMGRmMDA1MThjZC4uMjI1NGVlZGE5ZmE2YThjMGM1YmJlNjJlNGU0NDZkNDYyN2Qy
Njk3MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93
ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24u
aHRtbApAQCAtNiw5ICs2LDE1IEBACiAgICAgY29uc3Qgb3B0aW9ucyA9IHsKICAgICAgICAgcHVi
bGljS2V5OiB7CiAgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKLSAg
ICAgICAgICAgIHRpbWVvdXQ6IDEKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAogICAgICAgICB9
CiAgICAgfTsKIAotICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyk7CisgICAg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewor
ICAgICAgICAvLyBjb25zb2xlLmxvZygiU3VjY2VlZGVkISIpOworICAgICAgICB3aW5kb3cud2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiU3VjY2VlZGVkISIp
OworICAgIH0sIGVycm9yID0+IHsKKyAgICAgICAgLy8gY29uc29sZS5sb2coZXJyb3IubWVzc2Fn
ZSk7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBv
c3RNZXNzYWdlKGVycm9yLm1lc3NhZ2UpOworICAgIH0pOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhYTU5NjUw
NmE1MzRiMjVmMGJjNjU4ODk2MWJlM2RkZWI0NGI0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtl
LWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbApAQCAtMCwwICsxLDQzIEBA
Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAgY29uc3QgdGVz
dENyZWRlbnRpYWxJZEhleCA9ICI0OEM0OTcxRTc4MDVFRTExMEVCMDQ5NDBFRjcwQjc0NThGQkM2
RDFFIjsKKyAgICBmdW5jdGlvbiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoaGV4U3RyaW5nKQorICAg
IHsKKyAgICAgICAgaWYgKGhleFN0cmluZy5sZW5ndGggJSAyICE9IDApCisgICAgICAgICAgICB0
aHJvdyAiSW52YWxpZCBoZXhTdHJpbmciOworICAgICAgICB2YXIgYXJyYXlCdWZmZXIgPSBuZXcg
VWludDhBcnJheShoZXhTdHJpbmcubGVuZ3RoIC8gMik7CisKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBoZXhTdHJpbmcubGVuZ3RoOyBpICs9IDIpIHsKKyAgICAgICAgICAgIHZhciBieXRl
VmFsdWUgPSBwYXJzZUludChoZXhTdHJpbmcuc3Vic3RyKGksIDIpLCAxNik7CisgICAgICAgICAg
ICBpZiAoYnl0ZVZhbHVlID09IE5hTikKKyAgICAgICAgICAgICAgICB0aHJvdyAiSW52YWxpZCBo
ZXhTdHJpbmciOworICAgICAgICAgICAgYXJyYXlCdWZmZXJbaS8yXSA9IGJ5dGVWYWx1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICB9CisKKyAgICBpZiAo
d2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxz
ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIGludGVybmFscy53aXRo
VXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsKKyAgICB9CisKKyAgICBjb25z
dCBvcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgIHJwOiB7Cisg
ICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisg
ICAgICAgICAgICAgICAgaWQ6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAgICAgICAgICBk
aXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgY2hh
bGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1z
OiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICBleGNsdWRl
Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGhleFN0cmluZ1RvVWludDhB
cnJheSh0ZXN0Q3JlZGVudGlhbElkSGV4KSB9XSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMCwK
KyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9w
dGlvbnMpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3Iu
aHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMTYxMjFi
YTRjYTJkYjUzM2RmZTVkMmJmMDMzMDRjZGE1MjQ2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtl
LWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbApAQCAtMCwwICsxLDI1IEBACis8aW5wdXQgdHlwZT0i
dGV4dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9u
OiBmYWxzZSB9IH0pOworICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsg
aW5wdXQuZm9jdXMoKTsgfSk7CisgICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgIG5hbWU6
ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAgICAg
ICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIGlkOiBu
ZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNl
ZWQiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJy
YXkoMTYpLAorICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC0zNSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtMjU3IH1dLCAvLyBF
UzM4NCwgUlMyNTYKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMCwKKyAgICAgICAgfQorICAgIH07
CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpOworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1h
dXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkyN2UyNWNhMmRhMmJlZDRkODlhODBiMDI3YjZhMDk1NjBhYjJj
NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbApAQCAtMCwwICsx
LDY2IEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAgY29u
c3QgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9CisgICAgICAgICJCRGovenhTa3pLZ2FCdVMz
Y2RXREY1NThvZjhBYUlwZ0Zwc2pGL1FtMTc0OVZCSlBncVVJd2ZoV0hKOTFuYjdVIiArCisgICAg
ICAgICJQSDc2YzArV0ZPelpLc2xQeXlGc2U0Z29HSVcyUjdrOVZITFBFWmw1bmZuQmdFVkZoNXpl
disveHBIUUl2dXE2IiArCisgICAgICAgICJSUT09IjsKKyAgICBjb25zdCB0ZXN0QXR0ZXN0YXRp
b25DZXJ0aWZpY2F0ZUJhc2U2NCA9CisgICAgICAgICJNSUlCNmpDQ0FaQ2dBd0lCQWdJR0FXSEF4
Y2p2TUFvR0NDcUdTTTQ5QkFNQ01GTXhKekFsQmdOVkJBTU1Ia0poIiArCisgICAgICAgICJjMmxq
SUVGMGRHVnpkR0YwYVc5dUlGVnpaWElnVTNWaUlFTkJNVEVUTUJFR0ExVUVDZ3dLUVhCd2JHVWdT
VzVqIiArCisgICAgICAgICJMakVUTUJFR0ExVUVDQXdLUTJGc2FXWnZjbTVwWVRBZUZ3MHhPREF5
TWpNd016TTNNakphRncweE9EQXlNalF3IiArCisgICAgICAgICJNelEzTWpKYU1Hb3hJakFnQmdO
VkJBTU1HVEF3TURBNE1ERXdMVEF3TUVFME9VRXlNekJCTURJeE0wRXhHakFZIiArCisgICAgICAg
ICJCZ05WQkFzTUVVSkJRU0JEWlhKMGFXWnBZMkYwYVc5dU1STXdFUVlEVlFRS0RBcEJjSEJzWlNC
SmJtTXVNUk13IiArCisgICAgICAgICJFUVlEVlFRSURBcERZV3hwWm05eWJtbGhNRmt3RXdZSEtv
Wkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUV2Q2plIiArCisgICAgICAgICJQenI2U2c3NlhNb0h1
R2FiUGFHNnpqcExGTDhaZDgvNzRIaDVQY0wyWnErbytmN0VOWFgrN25FWFhZdDBTOFV4IiArCisg
ICAgICAgICI1VElSdzRoZ2JmeFhRYldMRXFNNU1EY3dEQVlEVlIwVEFRSC9CQUl3QURBT0JnTlZI
UThCQWY4RUJBTUNCUEF3IiArCisgICAgICAgICJGd1lKS29aSWh2ZGpaQWdDQkFvd0NLRUdCQVIw
WlhOME1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lBbEs4QThJIiArCisgICAgICAgICJrNDNUYnZL
dVlHSFpzMURUZ3BUd21LVEJ2SVV3NWJ3Z1p1WW5BaUVBdHVKakRMS2JHTkpBSkZNaTVkZUVCcW5v
IiArCisgICAgICAgICJwQlRDcWJmYkRKY2NmeVFwam5ZPSI7CisgICAgY29uc3QgdGVzdEF0dGVz
dGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQgPQorICAgICAgICAiTUlJQ0l6Q0NBYWln
QXdJQkFnSUllTmpoRzl0bkRHZ3dDZ1lJS29aSXpqMEVBd0l3VXpFbk1DVUdBMVVFQXd3ZSIgKwor
ICAgICAgICAiUW1GemFXTWdRWFIwWlhOMFlYUnBiMjRnVlhObGNpQlNiMjkwSUVOQk1STXdFUVlE
VlFRS0RBcEJjSEJzWlNCSiIgKworICAgICAgICAiYm1NdU1STXdFUVlEVlFRSURBcERZV3hwWm05
eWJtbGhNQjRYRFRFM01EUXlNREF3TkRJd01Gb1hEVE15TURNeSIgKworICAgICAgICAiTWpBd01E
QXdNRm93VXpFbk1DVUdBMVVFQXd3ZVFtRnphV01nUVhSMFpYTjBZWFJwYjI0Z1ZYTmxjaUJUZFdJ
ZyIgKworICAgICAgICAiUTBFeE1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSmJtTXVNUk13RVFZRFZR
UUlEQXBEWVd4cFptOXlibWxoTUZrdyIgKworICAgICAgICAiRXdZSEtvWkl6ajBDQVFZSUtvWkl6
ajBEQVFjRFFnQUVvU1ovMXQ5ZUJBRVZwNWE4UHJYYWNtYkdiOHpOQzFYMyIgKworICAgICAgICAi
U3RMSTlZTzZZMENMN2JsSG1TR21qR1dUd0Q0UStpMEoyQlkzK2JQSFRHUnlBOWpHQjNNU2JhTm1N
R1F3RWdZRCIgKworICAgICAgICAiVlIwVEFRSC9CQWd3QmdFQi93SUJBREFmQmdOVkhTTUVHREFX
Z0JTRDVhTWhuckIwdy9saGtQMlhUaU1RZHFTaiIgKworICAgICAgICAiOGpBZEJnTlZIUTRFRmdR
VTVtV2YxRFlMVFhVZFE5eG1PSC91cWVOU0Q4MHdEZ1lEVlIwUEFRSC9CQVFEQWdFRyIgKworICAg
ICAgICAiTUFvR0NDcUdTTTQ5QkFNQ0Eya0FNR1lDTVFDM00zNjBMTHRKUzYwWjlxM3ZWakp4TWdN
Y0ZRMXJvR1RVY0txdiIgKworICAgICAgICAiVys0aEo0Q2VKanlTWFRncTZJRUhuL3lXYWI0Q01R
Q201Tm5LNlNPU0srQXFXdW05bEw4N1czRTZBQTFmMlR2SiIgKworICAgICAgICAiL2hnb2svMzRq
cjkzbmhTODd0T1FOZHhEUzh6eWlxdz0iOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Cisg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsK
KyAgICAgICAgICAgIGxvY2FsOiB7CisgICAgICAgICAgICAgICAgYWNjZXB0QXV0aGVudGljYXRp
b246IHRydWUsCisgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IHRydWUsCisgICAg
ICAgICAgICAgICAgcHJpdmF0ZUtleUJhc2U2NDogdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwK
KyAgICAgICAgICAgICAgICB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbkNl
cnRpZmljYXRlQmFzZTY0LAorICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZUNBQ2VydGlmaWNh
dGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlQmFzZTY0IH19KTsK
KyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7
IH0pOworICAgIH0KKworICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgIHB1YmxpY0tleTog
eworICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgbmFt
ZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICBpZDogbmV3IFVpbnQ4QXJyYXko
MTYpLAorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMCwKKyAgICAgICAgfQorICAgIH07CisKKyAgICBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
CisgICAgICAgIC8vIGNvbnNvbGUubG9nKCJTdWNjZWVkZWQhIik7CisgICAgICAgIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJTdWNjZWVkZWQh
Iik7CisgICAgfSwgZXJyb3IgPT4geworICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnJvci5tZXNz
YWdlKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIu
cG9zdE1lc3NhZ2UoZXJyb3IubWVzc2FnZSk7CisgICAgfSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0
aW9uLW1ha2UtY3JlZGVudGlhbC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGUyODczMWI0M2EwODc0Y2RkZDY4NjRiYTI2MWYxNjU4Y2IwZDgzMQotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxpbnB1dCB0eXBl
PSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7
IH0pOworCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7CisgICAg
ICAgICAgICBycDogeworICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAiSm9o
biBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIGlkOiBuZXcgVWludDhBcnJheSgxNiksCisg
ICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAg
cHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAg
ICAgICAgICAgdGltZW91dDogMTAwLAorICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAg
ICAgLy8gY29uc29sZS5sb2coIlN1Y2NlZWRlZCEiKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEiKTsKKyAg
ICB9LCBlcnJvciA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpOwor
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVz
c2FnZShlcnJvci5tZXNzYWdlKTsKKyAgICB9KTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391475</attachid>
            <date>2020-02-22 21:27:47 -0800</date>
            <delta_ts>2020-02-22 21:44:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208087-20200222212746.patch</filename>
            <type>text/plain</type>
            <size>99614</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uMmNlMDBiNjNjNTRkNzc4NTMzYjVkYjY5YzgxYTE1
NWQwOGJmNzgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAyLTIxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmhhbmNlcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgdG8gYWNj
b21tb25kYXRlIHJlc3BvbnNlcworICAgICAgICByZXR1cm5lZCBmcm9tIHRoZSBwbGF0Zm9ybSBh
dXRoZW50aWNhdG9yLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRB
dXRoZW50aWNhdG9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGljYXRv
ckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGlzcGxheU5hbWUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpudW1iZXJPZkNyZWRlbnRp
YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZTo6YWNjZXNzQ29udHJvbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldFNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXREaXNwbGF5TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE51bWJlck9m
Q3JlZGVudGlhbHMpOgorCiAyMDIwLTAyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUgYWZ0
ZXIgcjI1NjgwOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1NjEwMmJjYzg4Y2FiN2IwNjhiNGY0ZTJiNTk5MmYwNzdk
ZDRiZTMwLi40ZTUxMGI0MDJjMzU2MGQwYTdhMzdiNzc1NDhjOWMyMzc4YTdmODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0wMi0yMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSBmb3IgdGhlIHBs
YXRmb3JtIGF1dGhlbnRpY2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODA4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNjkzMDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGVyZSBpcyB0
aGUgbmV3bHkgYWRkZWQgU1BJOgorICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CisgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yLAorICAgICAgICAg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCwK
KyAgICAgICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlh
bCwKKyAgICAgICAgfTsKKworICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tX
ZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydCkgeworICAgICAgICAgICAgLi4uCisgICAgICAgICAg
ICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAorICAgICAgICB9OworCisg
ICAgICAgIEBwcm90b2NvbCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2Jq
ZWN0PgorICAgICAgICBAb3B0aW9uYWwKKyAgICAgICAgLi4uCisgICAgICAgIC0gKHZvaWQpcGFu
ZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2VyV2l0aEFjY2Vz
c0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBA
ZW5kCisKKyAgICAgICAgSWxsdXN0cmF0aW9uczoKKyAgICAgICAgMSkgX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbFVwZGF0ZTogdGhyZWUgZXJyb3IgYXJlIGFkZGVkIHRvIGhlbHAgY2xpZW50cyB0
byBpbmZvcm0gdXNlcnMuCisgICAgICAgIGEpIFdLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBRXJyb3I6IEFuIGludGVybmFsIGVycm9yLCBjbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMg
YW5kIHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0KKyAgICAgICAgYXV0aGVudGljYXRpb24gcHJvY2Vz
cy4gVGhpcyBlcnJvciBjYW4gYmUgcmV0dXJuZWQgYXQgYW55IHRpbWUuCisgICAgICAgIGIpIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw6IEl0IG1l
YW5zIGEgY3JlZGVudGlhbCBpcyBmb3VuZCB0byBtYXRjaCBhbiBlbnRyeSBpbiB0aGUKKyAgICAg
ICAgZXhjbHVkZUxpc3QuIENsaWVudHMgc2hvdWxkIGluZm9ybSB1c2VycyBhbmQgdGVybWluYXRl
IHRoZSBwbGF0Zm9ybSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLiBUaGlzIGVycm9yIHdpbGwgb25s
eSBiZQorICAgICAgICByZXR1cm5lZCBkdXJpbmcgbWFrZUNyZWRlbnRpYWwgYW5kIGJlZm9yZSB2
ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2wgZGVsZWdhdGUuCisgICAgICAgIGMpIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlhbDogSXQgbWVhbnMgbm8gY3JlZGVu
dGlhbHMgYXJlIGZvdW5kLiBDbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMgYW5kCisgICAgICAg
IHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRpb24gcHJvY2Vzcy4gVGhpcyBlcnJv
ciB3aWxsIG9ubHkgYmUgcmV0dXJuZWQgZHVyaW5nIGdldEFzc2VydGlvbiBhbmQgYmVmb3JlCisg
ICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbCBkZWxlZ2F0ZS4KKworICAgICAgICAy
KSBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydDogX1dLV2ViQXV0aGVudGljYXRpb25UcmFu
c3BvcnRJbnRlcm5hbCBpcyBhZGRlZCBzdWNoIHRoYXQgY2xpZW50cyBjYW4gbGVhcm4gcGxhdGZv
cm0KKyAgICAgICAgYXV0aGVudGljYXRvciB3aWxsIGJlIHVzZWQgZnJvbSBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLnRyYW5zcG9ydHMuCisKKyAgICAgICAgMykgdmVyaWZ5VXNlcldpdGhBY2Nl
c3NDb250cm9sOiBBIGRlbGVnYXRlIHRoYXQgd2lsbCBiZSBjYWxsZWQgZHVyaW5nIG1ha2VDcmVk
ZW50aWFsIG9yIGdldEFzc2VydGlvbiB3aGVuIHRoZSBwbGF0Zm9ybQorICAgICAgICBhdXRoZW50
aWNhdG9yIGlzIGludm9sdmVkLiBUaGlzIGRlbGVnYXRlIGlzIHVzZWQgdG8gb2J0YWluIHVzZXIg
dmVyaWZpY2F0aW9uIGZyb20gYSBMQUNvbnRleHQuIEluIGFkZGl0aW9uLCB0aGUgTEFDb250ZXh0
CisgICAgICAgIHNob3VsZCBldmFsdWF0ZSB0aGUgcGFzc2VkIGFjY2Vzc0NvbnRyb2wsIHN1Y2gg
dGhhdCB0aGUgU0VQIHByb3RlY3RlZCBjcmVkZW50aWFsIHByaXZhdGUga2V5IGNhbiBiZSB1c2Vk
LiBBIHR5cGljYWwKKyAgICAgICAgZXhhbXBsZSB3aWxsIGJlIFtMQUNvbnRleHQgZXZhbHVhdGVB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJh
dGlvblVzZUtleVNpZ24gbG9jYWxpemVkUmVhc29uOnJlcGx5Ol0uCisgICAgICAgIE5vdGVkLCBm
b3IgZ2V0QXNzZXJ0aW9uLCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZSB3aWxsIGJlIGNhbGxlZCBi
ZWZvcmUgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sLiBTbyB1c2VycyBuZWVkIHRvIGJlCisg
ICAgICAgIHByb21wdGVkIHRvIHNlbGVjdCBhIGNyZWRlbnRpYWwgYmVmb3JlIHRoZSB1c2VyIHZl
cmlmaWNhdGlvbi4KKworICAgICAgICBJbiB0aGUgc2NlbmFyaW8gd2hlbiBib3RoIHRoZSBwbGF0
Zm9ybSBhdXRoZW50aWNhdG9yIGFuZCBleHRlcm5hbCBhdXRoZW50aWNhdG9ycyBhcmUgcmVxdWVz
dGVkLiBDbGllbnRzIGFyZSBhZHZpc2VkIHRvCisgICAgICAgIHdhaXQgdW50aWwgdmVyaWZ5VXNl
cldpdGhBY2Nlc3NDb250cm9sIHRvIHNob3cgdGhlIGNvbWJpbmVkIFVJLiBJZiBhbnkgb2YgdGhl
IExBRXJyb3IgaXMgcmVjZWl2ZWQgYmVmb3JlCisgICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNz
Q29udHJvbCwgY2xpZW50cyBjYW4gdGhlbiBvbmx5IHNob3cgdGhlIGV4dGVybmFsIGF1dGhlbnRp
Y2F0b3IgVUkuIEFsc28sIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IgYW5kCisgICAgICAgIGV4dGVy
bmFsIGF1dGhlbnRpY2F0b3JzIGFyZSBiZWluZyBkaXNjb3ZlcmVkIGF0IHRoZSBzYW1lIHRpbWUs
IHdoaWNoIG1lYW5zLCBhIHVzZXIgY2FuIHBsdWcgaW4gYSBzZWN1cml0eSBrZXkgYXQgYW55dGlt
ZS4KKyAgICAgICAgSWYgYSB2YWxpZCByZXNwb25zZSBpcyByZWNlaXZlZCBmcm9tIHRoZSBzZWN1
cml0eSBrZXksIHRoZSB3aG9sZSBjZXJlbW9ueSB3aWxsIGJlIHRlcm1pbmF0ZWQuCisKKyAgICAg
ICAgQmVzaWRlcyBpbnRyb2R1Y2luZyB0aGUgU1BJLCBhbmQgYWxsIHRoZSBwbHVtYmluZ3MgdG8g
bWFrZSBpdCBoYXBwZW4uIFRoaXMgcGF0Y2ggYWxzbzoKKyAgICAgICAgMSkgYWRkcyBMb2NhbEF1
dGhlbnRpY2F0aW9uU1BJLCB3aGljaCBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBM
QUNvbnRleHQgaXMgdW5sb2NrZWQgb3Igbm90OworICAgICAgICAyKSBpbXByb3ZlcyBNb2NrTG9j
YWxDb25uZWN0aW9uIHN1Y2ggdGhhdCBtb2NrIHRlc3RpbmcgY2FuIHN0aWxsIGJlIHJhbi4KKwor
ICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHA6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06Cisg
ICAgICAgICh3a1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b05TRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TG9j
YWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZCk6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyQXR0ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6
OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2Vu
dGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6Zmls
dGVyUmVzcG9uc2VzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5l
Y3Rpb246OmlzVW5sb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rp
b246OmdldFVzZXJDb25zZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9j
YWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6d2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdl
YktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmZpbHRlclJlc3BvbnNlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3Jl
ZGVudGlhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQg
aGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZS5jcHAKaW5kZXggNWQzMDJmOGI4ZmMzNWRhMWU2Yzk0NmUxMTIxOTY3ZDYyZTAwYTQ5OS4u
NDVlYTFlNWZhNGI0YTZiOGY0MTQ2ODAwZmU5NjE1ZDRhNTJkOGNhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0
ZShSZWY8QQogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAotUmVmPEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50
aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8
dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRh
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB1c2VySGFuZGxlKQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlcmhhbmRsZUJ1ZmZl
cjsKICAgICBpZiAoIXVzZXJIYW5kbGUuaXNFbXB0eSgpKQpAQCAtNDgsNiArNDgsMTYgQEAgUmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVh
dGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhl
bnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZm
ZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1
c2VyaGFuZGxlQnVmZmVyKSwgV1RGOjpudWxsb3B0KTsKIH0KIAorUmVmPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUo
UmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwg
U2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RG
TW92ZSh1c2VySGFuZGxlKSwgYWNjZXNzQ29udHJvbCkpOworfQorCit2b2lkIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6c2V0QXV0aGVudGljYXRvckRhdGEoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSkKK3sKKyAgICBtX2F1dGhlbnRpY2F0b3JEYXRhID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0
b3JEYXRhLnNpemUoKSk7Cit9CisKIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2ln
bmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSkKICAgICA6IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKICAgICAsIG1fYXV0aGVudGljYXRvckRhdGEo
V1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCkBAIC01Niw2ICs2NiwxMyBAQCBBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8
QXJyYXlCdWZmZXI+JgogewogfQogCitBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJl
ZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2wpCisgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCkpCisgICAg
LCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKKyAgICAsIG1fYWNjZXNzQ29udHJv
bChhY2Nlc3NDb250cm9sKQoreworfQorCiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byBkYXRh
ID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjpkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaAppbmRleCBkNzBhOWNjZjhmMzkxYjBkZDYyYzJhMTE0ZTExNTJmOWY2YzBkNmEyLi4y
MThmZjhkZjFhODU5MGY4NDY3OWVjMGU0Njc3M2NiOGY2NDJkZDM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmgKQEAgLTI4LDYgKzI4LDEzIEBACiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JSZXNwb25zZS5oIgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
QVhfQUxMT1dFRCA8IDEwMTUwMCkKK3R5cGVkZWYgc3RydWN0IFNFQ1RZUEUoU2VjQWNjZXNzQ29u
dHJvbCkgKlNlY0FjY2Vzc0NvbnRyb2xSZWY7CisjZWxzZQordHlwZWRlZiBzdHJ1Y3QgX19TZWNB
Y2Nlc3NDb250cm9sICpTZWNBY2Nlc3NDb250cm9sUmVmOworI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMzUsMzIgKzQyLDM4IEBAIGNsYXNzIEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFy
cmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEs
IFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2Vy
SGFuZGxlLCBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2ln
bmF0dXJlLCAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRl
KFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUs
IFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAotICAgIEFycmF5QnVmZmVyKiBhdXRoZW50aWNhdG9y
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aGVudGljYXRvckRhdGEucHRyKCk7IH0KLSAgICBB
cnJheUJ1ZmZlciogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmUucHRyKCk7
IH0KKyAgICBBcnJheUJ1ZmZlciogYXV0aGVudGljYXRvckRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2F1dGhlbnRpY2F0b3JEYXRhLmdldCgpOyB9CisgICAgQXJyYXlCdWZmZXIqIHNpZ25hdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2lnbmF0dXJlLmdldCgpOyB9CiAgICAgQXJyYXlCdWZmZXIqIHVz
ZXJIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3VzZXJIYW5kbGUuZ2V0KCk7IH0KKyAgICBjb25z
dCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQorICAgIHNp
emVfdCBudW1iZXJPZkNyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZkNyZWRl
bnRpYWxzOyB9CisgICAgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKCkgY29uc3Qg
eyByZXR1cm4gbV9hY2Nlc3NDb250cm9sLmdldCgpOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEF1dGhlbnRpY2F0b3JEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIHZv
aWQgc2V0U2lnbmF0dXJlKFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUpIHsgbV9zaWduYXR1
cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSk7IH0KICAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5n
JiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KLSAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25z
dCB7IHJldHVybiBtX25hbWU7IH0KICAgICB2b2lkIHNldERpc3BsYXlOYW1lKGNvbnN0IFN0cmlu
ZyYgZGlzcGxheU5hbWUpIHsgbV9kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lOyB9Ci0gICAgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0K
ICAgICB2b2lkIHNldE51bWJlck9mQ3JlZGVudGlhbHMoc2l6ZV90IG51bWJlck9mQ3JlZGVudGlh
bHMpIHsgbV9udW1iZXJPZkNyZWRlbnRpYWxzID0gbnVtYmVyT2ZDcmVkZW50aWFsczsgfQotICAg
IHNpemVfdCBudW1iZXJPZkNyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZkNy
ZWRlbnRpYWxzOyB9CiAKIHByaXZhdGU6CiAgICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZm
ZXI+JiYsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7CisgICAgQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBTZWNBY2Nl
c3NDb250cm9sUmVmKTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5
cGU6OkFzc2VydGlvbjsgfQogICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSgpIGNv
bnN0IGZpbmFsOwogCi0gICAgUmVmPEFycmF5QnVmZmVyPiBtX2F1dGhlbnRpY2F0b3JEYXRhOwot
ICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1cmU7CisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBtX2F1dGhlbnRpY2F0b3JEYXRhOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1
cmU7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX3VzZXJIYW5kbGU7CiAKICAgICBTdHJpbmcg
bV9uYW1lOwogICAgIFN0cmluZyBtX2Rpc3BsYXlOYW1lOwogICAgIHNpemVfdCBtX251bWJlck9m
Q3JlZGVudGlhbHMgeyAwIH07CisgICAgUmV0YWluUHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IG1f
YWNjZXNzQ29udHJvbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25TUEku
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25T
UEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mN2EwZjZkMDNmMGNhMjVjN2UzMDYxMjU1NjQ5NTdmNjEwYThhYWRm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9j
YWxBdXRoZW50aWNhdGlvblNQSS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2ltcG9ydCA8TG9jYWxBdXRoZW50aWNhdGlvbi9Mb2NhbEF1dGhlbnRpY2F0
aW9uLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxMb2NhbEF1
dGhlbnRpY2F0aW9uL0xvY2FsQXV0aGVudGljYXRpb25fUHJpdmF0ZS5oPgorCisjZWxzZQorCit0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBMQU9wdGlvbikgeworICAgIExBT3B0aW9uTm90SW50
ZXJhY3RpdmUsCit9OworCitAaW50ZXJmYWNlIExBQ29udGV4dChQcml2YXRlKSA8TlNTZWN1cmVD
b2Rpbmc+CisKKy0gKE5TRGljdGlvbmFyeSAqKWV2YWx1YXRlUG9saWN5OihMQVBvbGljeSlwb2xp
Y3kgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9ucyBlcnJvcjooTlNFcnJvciAqKillcnJv
cjsKKworQGVuZAorCisjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBh
bmVsLmNwcAppbmRleCAwY2RkYmNmNDk3NjMzOTgyNDc1OWZlZTFhMDU1YWY1NmFiNWY0ZDU1Li5l
NWNiNDczODY5YmYxN2Y0MDMwZDgzZmVmZGI0OGRjNDJhMjM5NjcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
Y3BwCkBAIC01Myw2ICs1Myw4IEBAIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwoY29uc3QgQXV0aGVudGljYXRvck1hbmFnZXImIG1hbmFnCiAgICAgICAgIG1f
dHJhbnNwb3J0cy51bmNoZWNrZWRBcHBlbmQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKTsK
ICAgICBpZiAodHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMp
KQogICAgICAgICBtX3RyYW5zcG9ydHMudW5jaGVja2VkQXBwZW5kKEF1dGhlbnRpY2F0b3JUcmFu
c3BvcnQ6Ok5mYyk7CisgICAgaWYgKHRyYW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRy
YW5zcG9ydDo6SW50ZXJuYWwpKQorICAgICAgICBtX3RyYW5zcG9ydHMudW5jaGVja2VkQXBwZW5k
KEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsKTsKIH0KIAogV2ViQXV0aGVudGljYXRp
b25QYW5lbDo6fldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQuaAppbmRleCA0NTk2NDRlZTNlNmViNjUxYzI5MmVmM2ZiNDliM2I0YTI2YWM3
Njk4Li42ZmVlNDM3YjMxM2NjOWJiNDY2MmZhN2VlYjMzNjgxODE4NWFlNjEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDE0IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEwMTUwMCkKK3R5cGVk
ZWYgc3RydWN0IFNFQ1RZUEUoU2VjQWNjZXNzQ29udHJvbCkgKlNlY0FjY2Vzc0NvbnRyb2xSZWY7
CisjZWxzZQordHlwZWRlZiBzdHJ1Y3QgX19TZWNBY2Nlc3NDb250cm9sICpTZWNBY2Nlc3NDb250
cm9sUmVmOworI2VuZGlmCisKK09CSkNfQ0xBU1MgTEFDb250ZXh0OworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7CiB9CkBAIC01Miw2
ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc1BhbmVsKFdlYktpdDo6
V2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlT
dHJpbmcoKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVj
dG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmIHJlc3Bv
bnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBBU1NFUlQo
IXJlc3BvbnNlcy5pc0VtcHR5KCkpOyBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbMF0pOyB9
CisgICAgdmlydHVhbCB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0
IHsgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKaW5kZXggNDMxYzYzM2IwZmViMGI1NTJhNmI5ZDE4
N2VhZDNkNmZiNWJjYzhjMi4uZjcyZWIwYWVhM2Y0NDVlMTYxOTAxMzk0OTQ5MzU3MjE4YmNmNDg3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCkBAIC0zMSw2ICszMSw3IEBACiAKIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBMQUNvbnRleHQ7CiBAY2xhc3MgX1dLV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTsKIEBjbGFzcyBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsOwogCkBAIC00Niw2ICs0Nyw5IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUpIHsKICAgICBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsVXBkYXRlUElOQmxvY2tlZCwKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBk
YXRlUElOQXV0aEJsb2NrZWQsCiAgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJ
TkludmFsaWQsCisgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRXJyb3IsCisg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCwK
KyAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWwsCiB9IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KSB7CkBA
IC01Niw2ICs2MCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUmVzdWx0KSB7CiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50
aWNhdGlvblRyYW5zcG9ydCkgewogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNC
LAogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0TkZDLAorICAgIF9XS1dlYkF1dGhl
bnRpY2F0aW9uVHJhbnNwb3J0SW50ZXJuYWwsCiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSkgewpAQCAtNzEsNiArNzYsNyBAQCB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKIC0gKHZvaWQpcGFu
ZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBkaXNtaXNzV2ViQXV0aGVudGlj
YXRpb25QYW5lbFdpdGhSZXN1bHQ6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KXJlc3VsdCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAo
dm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVlc3RQSU5X
aXRoUmVtYWluaW5nUmV0cmllczooTlNVSW50ZWdlcilyZXRyaWVzIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClwYW5lbDooX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlOihO
U0FycmF5IDwgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqPiAqKXJlc3Bv
bnNlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZSAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClwYW5lbDooX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDooU2Vj
QWNjZXNzQ29udHJvbFJlZilhY2Nlc3NDb250cm9sIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShMQUNvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tCmluZGV4IDJlYjMxZTgxMmM5NTk4ZTg5ODg0MGI5NTU4Y2UzMzJmMmVkNjc5ZmYu
LjE5NzNiMGY1NjRkMjUxYjIwY2YyNmEzNmEzYTY0ZDhhMjUyODIyZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCkBAIC03Myw2ICs3Myw4IEBAIHN0YXRpYyBfV0tXZWJBdXRoZW50aWNh
dGlvblRyYW5zcG9ydCB3a1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0KFdlYkNvcmU6OkF1dGhl
CiAgICAgICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQjsKICAgICBj
YXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYzoKICAgICAgICAgcmV0dXJu
IF9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0TkZDOworICAgIGNhc2UgV2ViQ29yZTo6QXV0
aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWw6CisgICAgICAgIHJldHVybiBfV0tXZWJBdXRo
ZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25UcmFu
c3BvcnRVU0I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKaW5kZXggZDE2YjE3ZDVmYzZiYzc5NTIxNGIyN2U4
MjU3ZmQ2ZjAwYmQ0YzdlNS4uOTc4NmNlNjVkNDEyNjlhYmFlNmU1NWYyZWRlMTIwZDdhM2MxMTI3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3IuaApAQCAtMzUsNiArMzUsMTQgQEAKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKKyNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMDE1MDApCit0eXBlZGVm
IHN0cnVjdCBTRUNUWVBFKFNlY0FjY2Vzc0NvbnRyb2wpICpTZWNBY2Nlc3NDb250cm9sUmVmOwor
I2Vsc2UKK3R5cGVkZWYgc3RydWN0IF9fU2VjQWNjZXNzQ29udHJvbCAqU2VjQWNjZXNzQ29udHJv
bFJlZjsKKyNlbmRpZgorCitPQkpDX0NMQVNTIExBQ29udGV4dDsKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOwogfQpAQCAtNTMsNiAr
NjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdXRoZW50aWNhdG9yU3RhdHVz
VXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1cykgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdURjo6U3RyaW5nJik+JiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNlbGVjdEFz
c2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikgPSAwOworICAgICAgICB2aXJ0
dWFsIHZvaWQgdmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKExBQ29udGV4dCAqKT4mJikgPSAwOwogICAgIH07CiAKICAgICB2aXJ0dWFsIH5BdXRo
ZW50aWNhdG9yKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3Bw
CmluZGV4IDczNjI2Y2MwNTAyN2FlNmUyMWIyODE0M2JjODAwOWI5MmIxYTc1YjQuLjg4NTk3MWYx
OGI0MjFjNmIwYTY4NGFjYTg5NjIzZWNjMzIxMTYwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dG9yTWFuYWdlci5jcHAKQEAgLTI5NSw2ICsyOTUsMTQgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFu
YWdlcjo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8QXV0aGVudGlj
YXQKICAgICB9KTsKIH0KIAordm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6dmVyaWZ5VXNlcihT
ZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJldGFpblB0cjxT
ZWNBY2Nlc3NDb250cm9sUmVmPiBhY2Nlc3NDb250cm9sID0gYWNjZXNzQ29udHJvbFJlZjsKKyAg
ICBkaXNwYXRjaFBhbmVsQ2xpZW50Q2FsbChbYWNjZXNzQ29udHJvbCA9IFdURk1vdmUoYWNjZXNz
Q29udHJvbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSBtdXRhYmxlIHsKKyAg
ICAgICAgcGFuZWwuY2xpZW50KCkudmVyaWZ5VXNlcihhY2Nlc3NDb250cm9sLmdldCgpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKIFVuaXF1ZVJlZjxBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gQXV0aGVudGljYXRvck1hbmFnZXI6OmNyZWF0ZVNlcnZp
Y2UoQXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQsIEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnRTZXJ2aWNlOjpPYnNlcnZlciYgb2JzZXJ2ZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEF1dGhl
bnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpjcmVhdGUodHJhbnNwb3J0LCBvYnNlcnZlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAppbmRleCBjMTUxZGQ5MzI2NTlmNjIwNmMwZjE1
ZmJlYTFlNWMwNTRhMWEwZjllLi5lOGYyZDJiZmQ4MGMxMGNhYWNmODMwNWQ0NzNkNWJkM2Y4YWVh
ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKQEAgLTgzLDYgKzgzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdlYkF1dGhlbnRp
Y2F0aW9uU3RhdHVzKSBmaW5hbDsKICAgICB2b2lkIHJlcXVlc3RQaW4odWludDY0X3QgcmV0cmll
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmKSBmaW5hbDsK
ICAgICB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikg
ZmluYWw7CisgICAgdm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmKSBmaW5hbDsKIAogICAgIC8vIE92ZXJyaWRl
biBieSBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuCiAgICAgdmlydHVhbCBVbmlxdWVSZWY8QXV0
aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IGNyZWF0ZVNlcnZpY2UoV2ViQ29yZTo6QXV0aGVu
dGljYXRvclRyYW5zcG9ydCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6Ok9ic2VydmVy
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25T
b2Z0TGluay5oCmluZGV4IDE1NTJiMjczOTAzYWE2NDgyYTM5M2I4ZDM4NzlhMDNmNDhlNjU1YTIu
LmU4NDkxMDI5NWJmM2EyNWE0YmMwNmUzNTFkYjNkMTRmYjdmY2ZiOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRpb25Tb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oCkBAIC0yNSw3ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW1wb3J0IDxMb2NhbEF1dGhlbnRpY2F0aW9uL0xv
Y2FsQXV0aGVudGljYXRpb24uaD4KKyNpbXBvcnQgIkxvY2FsQXV0aGVudGljYXRpb25TUEkuaCIK
ICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9I
RUFERVIoV2ViS2l0LCBMb2NhbEF1dGhlbnRpY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRv
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLmgKaW5kZXggZGVkOThmMmQ3NmFjNGRlOTUxYTU4OTQwYjM2ZDJiNmU3
NGFmNDRjNy4uOWE0NzU3MGZlNzBiM2I3MjQ4Y2NlMTA1MzE0ZTUwYjhjYzkwMGRjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKQEAgLTM5LDEyICszOSwxMyBAQCBj
bGFzcyBMb2NhbEF1dGhlbnRpY2F0b3IgZmluYWwgOiBwdWJsaWMgQXV0aGVudGljYXRvciB7CiBw
dWJsaWM6CiAgICAgLy8gSGVyZSBpcyB0aGUgRlNNLgogICAgIC8vIE1ha2VDcmVkZW50aWFsOiBJ
bml0ID0+IFJlcXVlc3RSZWNlaXZlZCA9PiBVc2VyQ29uc2VudGVkID0+IEF0dGVzdGVkID0+IEVu
ZAotICAgIC8vIEdldEFzc2VydGlvbjogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQgPT4gVXNlckNv
bnNlbnRlZCA9PiBFbmQKKyAgICAvLyBHZXRBc3NlcnRpb246IEluaXQgPT4gUmVxdWVzdFJlY2Vp
dmVkID0+IFJlc3BvbnNlU2VsZWN0ZWQgPT4gVXNlckNvbnNlbnRlZCA9PiBFbmQKICAgICBlbnVt
IGNsYXNzIFN0YXRlIHsKICAgICAgICAgSW5pdCwKICAgICAgICAgUmVxdWVzdFJlY2VpdmVkLAog
ICAgICAgICBVc2VyQ29uc2VudGVkLAogICAgICAgICBBdHRlc3RlZCwKKyAgICAgICAgUmVzcG9u
c2VTZWxlY3RlZAogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPExvY2FsQXV0aGVudGljYXRvcj4g
Y3JlYXRlKFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKQEAgLTU2LDE0
ICs1NywxOCBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IExvY2FsQXV0aGVudGljYXRvcihVbmlx
dWVSZWY8TG9jYWxDb25uZWN0aW9uPiYmKTsKIAogICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoKSBm
aW5hbDsKLSAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQo
U2VjQWNjZXNzQ29udHJvbFJlZiwgTG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudCwgTEFDb250
ZXh0ICopOworICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRl
ZChTZWNBY2Nlc3NDb250cm9sUmVmLCBMQUNvbnRleHQgKik7CiAgICAgdm9pZCBjb250aW51ZU1h
a2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYsIFZlY3Rvcjx1aW50OF90PiYmIGNy
ZWRlbnRpYWxJZCwgVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIE5TQXJyYXkgKmNlcnRpZmlj
YXRlcywgTlNFcnJvciAqKTsKIAogICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKCkgZmluYWw7Ci0gICAg
dm9pZCBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rp
b246OlVzZXJDb25zZW50LCBMQUNvbnRleHQgKiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVk
ZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlcmhhbmRsZSk7CisgICAgdm9pZCBj
b250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29yZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlR2V0QXNz
ZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExBQ29udGV4dCAqLCBSZWY8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKKworICAgIHZvaWQgcmVjZWl2ZUV4Y2VwdGlv
bihXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYsIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzID0gV2Vi
QXV0aGVudGljYXRpb25TdGF0dXM6OkxBRXJyb3IpIGNvbnN0OwogCiAgICAgU3RhdGUgbV9zdGF0
ZSB7IFN0YXRlOjpJbml0IH07CiAgICAgVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOworICAgIEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4+IG1fYXNzZXJ0aW9uUmVzcG9uc2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggMjVkZDFj
NmFlOTY4MWYwZWY3OGNkYjFmM2Q0YzQxYmE0ZTRiYjVkZS4uNzhiNzNkZTFjNTBjMTE0NjdmY2Fk
NTgxZjc3MTQ2YWZmYTQ0NzZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGlj
YXRvci5tbQpAQCAtODYsNiArODYsMTggQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNEYXRh
PiB0b05TRGF0YShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiAgICAgcmV0dXJuIGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEu
c2l6ZSgpXSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TRGF0YT4gdG9OU0RhdGEo
QXJyYXlCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICAvLyBGSVhN
RSgxODM1MzQpOiBDb25zaWRlciB1c2luZyBpbml0V2l0aEJ5dGVzTm9Db3B5LgorICAgIHJldHVy
biBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxl
bmd0aDpidWZmZXItPmJ5dGVMZW5ndGgoKV0pOworfQorCitzdGF0aWMgaW5saW5lIFJlZjxBcnJh
eUJ1ZmZlcj4gdG9BcnJheUJ1ZmZlcihOU0RhdGEgKmRhdGEpCit7CisgICAgcmV0dXJuIEFycmF5
QnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRl
cyksIGRhdGEubGVuZ3RoKTsKK30KKwogfSAvLyBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbAog
CiBMb2NhbEF1dGhlbnRpY2F0b3I6OkxvY2FsQXV0aGVudGljYXRvcihVbmlxdWVSZWY8TG9jYWxD
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCkBAIC0xMDgsNyArMTIwLDcgQEAgdm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICBpZiAobm90Rm91bmQgPT0gY3JlYXRp
b25PcHRpb25zLnB1YktleUNyZWRQYXJhbXMuZmluZE1hdGNoaW5nKFtdIChhdXRvJiBwdWJLZXlD
cmVkUGFyYW0pIHsKICAgICAgICAgcmV0dXJuIHB1YktleUNyZWRQYXJhbS50eXBlID09IFB1Ymxp
Y0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXkgJiYgcHViS2V5Q3JlZFBhcmFtLmFsZyA9PSBD
T1NFOjpFUzI1NjsKICAgICB9KSkgewotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25E
YXRhIHsgTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGlj
YXRvciBkb2Vzbid0IHN1cHBvcnQgYW55IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJh
bWV0ZXJzLiJfcyB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiVGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IgZG9lc24ndCBzdXBwb3J0
IGFueSBwcm92aWRlZCBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVycy4iX3MgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzMSwyNCArMTQzLDIyIEBAIHZvaWQgTG9jYWxBdXRo
ZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAgICAgICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVz
QXJyYXlSZWYgPSBudWxscHRyOwogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29w
eU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZhdHRyaWJ1dGVzQXJy
YXlSZWYpOwogICAgICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91
bmQpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICVk
Iiwgc3RhdHVzKTsKLSAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBV
bmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IHF1ZXJ5IEtleWNoYWluOiAiLCBzdGF0
dXMpIH0pOworICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFr
ZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICIsIHN0YXR1cykgfSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byByZXRhaW5BdHRyaWJ1dGVzQXJy
YXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CiAKLSAgICAgICAgLy8gRklYTUUocmRh
cjovL3Byb2JsZW0vMzU5MDA1OTMpOiBOZWVkIHRvIG9idGFpbiB1c2VyIGNvbnNlbnQgYW5kIHRo
ZW4gcmV0dXJuIGRpZmZlcmVudCBlcnJvciBhY2NvcmRpbmcgdG8gdGhlIHJlc3VsdC4KKyAgICAg
ICAgLy8gRklYTUU6IE5lZWQgdG8gb2J0YWluIHVzZXIgY29uc2VudCBhbmQgdGhlbiByZXR1cm4g
ZGlmZmVyZW50IGVycm9yIGFjY29yZGluZyB0byB0aGUgcmVzdWx0LgogICAgICAgICBmb3IgKE5T
RGljdGlvbmFyeSAqbnNBdHRyaWJ1dGVzIGluIChOU0FycmF5ICopYXR0cmlidXRlc0FycmF5UmVm
KSB7CiAgICAgICAgICAgICBOU0RhdGEgKm5zQ3JlZGVudGlhbElkID0gbnNBdHRyaWJ1dGVzWyhp
ZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdOwogICAgICAgICAgICAgaWYgKGV4Y2x1ZGVDcmVk
ZW50aWFsSWRzLmNvbnRhaW5zKFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihu
c0NyZWRlbnRpYWxJZC5ieXRlcyksIG5zQ3JlZGVudGlhbElkLmxlbmd0aCkpKSB7Ci0gICAgICAg
ICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwg
IkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVD
cmVkZW50aWFscyBsaXN0IGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJf
cyB9KTsKKyAgICAgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90QWxsb3dlZEVycm9y
LCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVk
ZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3Iu
Il9zIH0sIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzOjpMQUR1cGxpY2F0ZUNyZWRlbnRpYWwpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
IAogICAgIC8vIFN0ZXAgNi4KLSAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTkwMDU5Myk6
IFVwZGF0ZSB0byBhIGZvcm1hbCBVSS4KICAgICAvLyBHZXQgdXNlciBjb25zZW50LgogICAgIFJl
dGFpblB0cjxTZWNBY2Nlc3NDb250cm9sUmVmPiBhY2Nlc3NDb250cm9sOwogICAgIHsKQEAgLTE1
NiwyNyArMTY2LDI1IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgp
CiAgICAgICAgIGFjY2Vzc0NvbnRyb2wgPSBhZG9wdENGKFNlY0FjY2Vzc0NvbnRyb2xDcmVhdGVX
aXRoRmxhZ3MoTlVMTCwga1NlY0F0dHJBY2Nlc3NpYmxlV2hlblBhc3Njb2RlU2V0VGhpc0Rldmlj
ZU9ubHksIGtTZWNBY2Nlc3NDb250cm9sUHJpdmF0ZUtleVVzYWdlIHwga1NlY0FjY2Vzc0NvbnRy
b2xVc2VyUHJlc2VuY2UsICZlcnJvclJlZikpOwogICAgICAgICBhdXRvIHJldGFpbkVycm9yID0g
YWRvcHRDRihlcnJvclJlZik7CiAgICAgICAgIGlmIChlcnJvclJlZikgewotICAgICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZG4ndCBjcmVhdGUgYWNjZXNzIGNvbnRyb2w6ICVAIiwgKE5TRXJyb3Ig
KillcnJvclJlZik7Ci0gICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsg
VW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBjcmVhdGUgYWNjZXNzIGNvbnRyb2w6
ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0p
OworICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmlu
ZygiQ291bGRuJ3QgY3JlYXRlIGFjY2VzcyBjb250cm9sOiAiLCBTdHJpbmcoKChOU0Vycm9yKill
cnJvclJlZikubG9jYWxpemVkRGVzY3JpcHRpb24pKSB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJv
bFJlZiA9IGFjY2Vzc0NvbnRyb2wuZ2V0KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFthY2Nlc3ND
b250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250cm9sKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldIChMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4dCAq
Y29udGV4dCkgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRvKiBvYnNlcnZl
ciA9IHRoaXMtPm9ic2VydmVyKCkpIHsKKyAgICAgICAgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nl
c3NDb250cm9sUmVmID0gYWNjZXNzQ29udHJvbC5nZXQoKTsKKyAgICAgICAgYXV0byBjYWxsYmFj
ayA9IFthY2Nlc3NDb250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250cm9sKSwgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldIChMQUNvbnRleHQgKmNvbnRleHQpIHsKKyAgICAgICAgICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3Jl
ZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChhY2Nlc3NDb250cm9sLmdldCgpLCBjb25zZW50LCBj
b250ZXh0KTsKLSAgICB9OwotICAgIG1fY29ubmVjdGlvbi0+Z2V0VXNlckNvbnNlbnQoCi0gICAg
ICAgIG1ha2VTdHJpbmcoImFsbG93ICJfcywgY3JlYXRpb25PcHRpb25zLnJwLmlkLCAiIHRvIGNy
ZWF0ZSBhIHB1YmxpYyBrZXkgY3JlZGVudGlhbCBmb3IgIl9zLCBjcmVhdGlvbk9wdGlvbnMudXNl
ci5uYW1lKSwKLSAgICAgICAgYWNjZXNzQ29udHJvbFJlZiwKLSAgICAgICAgV1RGTW92ZShjYWxs
YmFjaykpOworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRl
clVzZXJDb25zZW50ZWQoYWNjZXNzQ29udHJvbC5nZXQoKSwgY29udGV4dCk7CisgICAgICAgIH07
CisgICAgICAgIG9ic2VydmVyLT52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2xSZWYsIFdURk1vdmUo
Y2FsbGJhY2spKTsKKyAgICB9CiB9CiAKLXZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNj
ZXNzQ29udHJvbFJlZiwgTG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudCBjb25zZW50LCBMQUNv
bnRleHQgKmNvbnRleHQpCit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3Jl
ZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRy
b2xSZWYsIExBQ29udGV4dCAqY29udGV4dCkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxB
dXRoZW50aWNhdG9ySW50ZXJuYWw7CiAKQEAgLTE4NCw3ICsxOTIsNyBAQCB2b2lkIExvY2FsQXV0
aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNB
Y2Nlc3NDb250cgogICAgIG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKICAgICBhdXRv
JiBjcmVhdGlvbk9wdGlvbnMgPSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogCi0gICAgaWYgKGNvbnNlbnQgPT0gTG9j
YWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudDo6Tm8pIHsKKyAgICBpZiAoIW1fY29ubmVjdGlvbi0+
aXNVbmxvY2tlZChjb250ZXh0KSkgewogICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25E
YXRhIHsgTm90QWxsb3dlZEVycm9yLCAiQ291bGRuJ3QgZ2V0IHVzZXIgY29uc2VudC4iX3MgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTMsOCArMjIxLDcgQEAgdm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoU2Vj
QWNjZXNzQ29udHIKICAgICB9OwogICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1EZWxldGUo
KF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkZWxldGVRdWVyeSk7CiAgICAgaWYgKHN0YXR1cyAm
JiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ291
bGRuJ3QgZGVsZXRlIG9sZGVyIGNyZWRlbnRpYWw6ICVkIiwgc3RhdHVzKTsKLSAgICAgICAgcmVj
ZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291
bGRuJ3QgZGVsZXRlIG9sZGVyIGNyZWRlbnRpYWw6ICIsIHN0YXR1cykgfSk7CisgICAgICAgIHJl
Y2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGRlbGV0
ZSBvbGRlciBjcmVkZW50aWFsOiAiLCBzdGF0dXMpIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0yMjIsNyArMjI5LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVl
TWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoU2VjQWNjZXNzQ29udHIKICAgICAvLyBU
aGUgYWJvdmUtdG8tY3JlYXRlIHByaXZhdGUga2V5IHdpbGwgYmUgaW5zZXJ0ZWQgaW50byBrZXlj
aGFpbiB3aGlsZSB1c2luZyBTRVAuCiAgICAgYXV0byBwcml2YXRlS2V5ID0gbV9jb25uZWN0aW9u
LT5jcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShjb250ZXh0LCBhY2Nlc3NDb250cm9sUmVmLCBz
ZWNBdHRyTGFiZWwsIHNlY0F0dHJBcHBsaWNhdGlvblRhZy5nZXQoKSk7CiAgICAgaWYgKCFwcml2
YXRlS2V5KSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3du
RXJyb3IsICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIl9zIH0pOworICAgICAgICByZWNl
aXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCAiQ291bGRuJ3QgY3JlYXRlIHByaXZhdGUga2V5
LiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQzLDggKzI1MCw3IEBAIHZv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29u
c2VudGVkKFNlY0FjY2Vzc0NvbnRyCiAgICAgICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzUmVmID0g
bnVsbHB0cjsKICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNyZWRlbnRpYWxJZFF1ZXJ5LCAmYXR0cmlidXRlc1Jl
Zik7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRu
J3QgZ2V0IENyZWRlbnRpYWwgSUQ6ICVkIiwgc3RhdHVzKTsKLSAgICAgICAgICAgIHJlY2VpdmVS
ZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0
IGdldCBDcmVkZW50aWFsIElEOiAiLCBzdGF0dXMpIH0pOworICAgICAgICAgICAgcmVjZWl2ZUV4
Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IENyZWRlbnRp
YWwgSUQ6ICIsIHN0YXR1cykgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgYXV0byByZXRhaW5BdHRyaWJ1dGVzID0gYWRvcHRDRihhdHRyaWJ1dGVzUmVmKTsKQEAg
LTI2OCw4ICsyNzQsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3Jl
ZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cgogICAgICAgICAgICAgcHVi
bGljS2V5RGF0YVJlZiA9IGFkb3B0Q0YoU2VjS2V5Q29weUV4dGVybmFsUmVwcmVzZW50YXRpb24o
cHVibGljS2V5LmdldCgpLCAmZXJyb3JSZWYpKTsKICAgICAgICAgICAgIGF1dG8gcmV0YWluRXJy
b3IgPSBhZG9wdENGKGVycm9yUmVmKTsKICAgICAgICAgICAgIGlmIChlcnJvclJlZikgewotICAg
ICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZXhwb3J0IHRoZSBwdWJsaWMga2V5OiAl
QCIsIChOU0Vycm9yKillcnJvclJlZik7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQo
RXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZXhwb3J0
IHRoZSBwdWJsaWMga2V5OiAiLCBTdHJpbmcoKChOU0Vycm9yKillcnJvclJlZikubG9jYWxpemVk
RGVzY3JpcHRpb24pKSB9KTsKKyAgICAgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5r
bm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBleHBvcnQgdGhlIHB1YmxpYyBrZXk6ICIs
IFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VS
VCgoKE5TRGF0YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0KCkpLmxlbmd0aCA9PSAoMSArIDIgKiBF
UzI1NkZpZWxkRWxlbWVudExlbmd0aCkpOyAvLyAwNCB8IFggfCBZCkBAIC0zMDksOCArMzE0LDcg
QEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0
dGVzdGVkKFNlY0tleVJlZiBwcml2YXRlS2UKICAgICBhdXRvJiBjcmVhdGlvbk9wdGlvbnMgPSBX
VEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgp
Lm9wdGlvbnMpOwogCiAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ291bGRu
J3QgYXR0ZXN0OiAlQCIsIGVycm9yKTsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9u
RGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgYXR0ZXN0OiAiLCBTdHJp
bmcoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24pKSB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2Vw
dGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgYXR0ZXN0OiAiLCBTdHJp
bmcoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24pKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAvLyBBdHRlc3RhdGlvbiBDZXJ0aWZpY2F0ZSBhbmQgQXR0ZXN0YXRpb24gSXNzdWlu
ZyBDQQpAQCAtMzQ0LDEwICszNDgsOSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNz
ZXJ0aW9uKCkKICAgICAvLyBTa2lwIFN0ZXAgOCBhcyBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9y
dGVkIHlldC4KICAgICAvLyBTdGVwIDEyIGlzIGltcGxpY2l0bHkgY2FwdHVyZWQgYnkgYWxsIFVu
a25vd25FcnJvciBleGNlcHRpb24gY2FsbGJhY2tzLgogICAgIC8vIFN0ZXAgMy01LiBVbmxpa2Ug
dGhlIHNwZWMsIGlmIGFuIGFsbG93IGxpc3QgaXMgcHJvdmlkZWQgYW5kIHRoZXJlIGlzIG5vIGlu
dGVyc2VjdGlvbiBiZXR3ZWVuIGV4aXN0aW5nIG9uZXMgYW5kIHRoZSBhbGxvdyBsaXN0LCB3ZSBh
bHdheXMgcmV0dXJuIE5vdEFsbG93ZWRFcnJvci4KLSAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxl
bS8zNTkwMDU5Myk6IE5lZWQgdG8gaW5mb3JtIHVzZXJzLgogICAgIGF1dG8gYWxsb3dDcmVkZW50
aWFsSWRzID0gcHJvZHVjZUhhc2hTZXQocmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyk7
CiAgICAgaWYgKCFyZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzLmlzRW1wdHkoKSAmJiBh
bGxvd0NyZWRlbnRpYWxJZHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4
Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFy
ZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSk7Cisg
ICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBOb3RBbGxvd2VkRXJyb3IsICJObyBtYXRjaGVkIGNy
ZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRv
ci4iX3MgfSwgV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxBTm9DcmVkZW50aWFsKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzY3LDggKzM3MCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzQXJyYXlSZWYg
PSBudWxscHRyOwogICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9f
YnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJlZik7CiAgICAg
aWYgKHN0YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKSB7Ci0gICAgICAgIExP
R19FUlJPUigiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICVkIiwgc3RhdHVzKTsKLSAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygi
Q291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICIsIHN0YXR1cykgfSk7CisgICAgICAgIHJlY2VpdmVF
eGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IHF1ZXJ5IEtleWNo
YWluOiAiLCBzdGF0dXMpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8gcmV0
YWluQXR0cmlidXRlc0FycmF5ID0gYWRvcHRDRihhdHRyaWJ1dGVzQXJyYXlSZWYpOwpAQCAtMzg2
LDQxICszODgsNjEgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiAg
ICAgICAgIGludGVyc2VjdGVkQ3JlZGVudGlhbHNBdHRyaWJ1dGVzID0gcmVzdWx0OwogICAgIH0K
ICAgICBpZiAoIWludGVyc2VjdGVkQ3JlZGVudGlhbHNBdHRyaWJ1dGVzLmNvdW50KSB7Ci0gICAg
ICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJObyBt
YXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0
aGVudGljYXRvci4iX3MgfSk7CisgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBOb3RBbGxvd2Vk
RXJyb3IsICJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0g
YXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSwgV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxB
Tm9DcmVkZW50aWFsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFN0ZXAgNi4K
LSAgICBhdXRvICpzZWxlY3RlZENyZWRlbnRpYWxBdHRyaWJ1dGVzID0gbV9jb25uZWN0aW9uLT5z
ZWxlY3RDcmVkZW50aWFsKGludGVyc2VjdGVkQ3JlZGVudGlhbHNBdHRyaWJ1dGVzKTsKKyAgICBm
b3IgKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlIDogaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJp
YnV0ZXMpIHsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy5h
ZGQoQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoCisgICAgICAgICAgICB0
b0FycmF5QnVmZmVyKGF0dHJpYnV0ZVsoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXSksCisg
ICAgICAgICAgICB0b0FycmF5QnVmZmVyKGF0dHJpYnV0ZVsoaWQpa1NlY0F0dHJBcHBsaWNhdGlv
blRhZ10pLAorICAgICAgICAgICAgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpYXR0cmli
dXRlWyhpZClrU2VjQXR0ckFjY2Vzc0NvbnRyb2xdKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgfQorICAgIG1fY29ubmVjdGlv
bi0+ZmlsdGVyUmVzcG9uc2VzKG1fYXNzZXJ0aW9uUmVzcG9uc2VzKTsKKworICAgIGlmIChhdXRv
KiBvYnNlcnZlciA9IHRoaXMtPm9ic2VydmVyKCkpIHsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGNvbnN0IEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZSYgcmVzcG9uc2UpIHsKKyAgICAgICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byByZXR1cm5SZXNwb25zZSA9IG1fYXNzZXJ0
aW9uUmVzcG9uc2VzLnRha2UoY29uc3RfY2FzdDxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UqPigmcmVzcG9uc2UpKTsKKyAgICAgICAgICAgIGlmICghcmV0dXJuUmVzcG9uc2UpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY29udGludWVHZXRBc3NlcnRpb25BZnRl
clJlc3BvbnNlU2VsZWN0ZWQoV1RGTW92ZSgqcmV0dXJuUmVzcG9uc2UpKTsKKyAgICAgICAgfTsK
KyAgICAgICAgb2JzZXJ2ZXItPnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKG1fYXNzZXJ0aW9uUmVz
cG9uc2VzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgfQorfQorCit2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlU2VsZWN0ZWQoUmVmPFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4mJiByZXNwb25zZSkKK3sKKyAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVxdWVzdFJlY2VpdmVkKTsKKyAgICBtX3N0YXRl
ID0gU3RhdGU6OlJlc3BvbnNlU2VsZWN0ZWQ7CiAKICAgICAvLyBTdGVwIDcuIEdldCB1c2VyIGNv
bnNlbnQuCi0gICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU5MDA1OTMpOiBVcGRhdGUgdG8g
YSBmb3JtYWwgVUkuCi0gICAgYXV0byBjYWxsYmFjayA9IFsKLSAgICAgICAgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyksCi0gICAgICAgIGNyZWRlbnRpYWxJZCA9IHRvVmVjdG9yKHNlbGVj
dGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF0pLAot
ICAgICAgICB1c2VyaGFuZGxlID0gdG9WZWN0b3Ioc2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRl
c1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ10pCi0gICAgXShMb2NhbENvbm5lY3Rpb246OlVz
ZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4dCAqY29udGV4dCkgewotICAgICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAg
cmV0dXJuOworICAgIGlmIChhdXRvKiBvYnNlcnZlciA9IHRoaXMtPm9ic2VydmVyKCkpIHsKKyAg
ICAgICAgYXV0byBhY2Nlc3NDb250cm9sUmVmID0gcmVzcG9uc2UtPmFjY2Vzc0NvbnRyb2woKTsK
KyAgICAgICAgYXV0byBjYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKV0gKExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgd2Vha1Ro
aXMtPmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKGNvbnNlbnQsIGNvbnRl
eHQsIGNyZWRlbnRpYWxJZCwgdXNlcmhhbmRsZSk7Ci0gICAgfTsKLSAgICBOU0RhdGEgKmlkRGF0
YSA9IHNlbGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25U
YWddOwotICAgIFN0cmluZ1ZpZXcgaWRTdHJpbmdWaWV3IHsgc3RhdGljX2Nhc3Q8Y29uc3QgVUNo
YXIqPihbaWREYXRhIGJ5dGVzXSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihbaWREYXRhIGxlbmd0
aF0pIH07Ci0gICAgbV9jb25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKLSAgICAgICAgbWFrZVN0
cmluZygibG9nIGludG8gIiwgcmVxdWVzdE9wdGlvbnMucnBJZCwgIiB3aXRoICIsIGlkU3RyaW5n
VmlldyksCi0gICAgICAgIChfX2JyaWRnZSBTZWNBY2Nlc3NDb250cm9sUmVmKXNlbGVjdGVkQ3Jl
ZGVudGlhbEF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQWNjZXNzQ29udHJvbF0sCi0gICAgICAgIFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUdldEFzc2Vy
dGlvbkFmdGVyVXNlckNvbnNlbnRlZChjb250ZXh0LCBXVEZNb3ZlKHJlc3BvbnNlKSk7CisgICAg
ICAgIH07CisgICAgICAgIG9ic2VydmVyLT52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2xSZWYsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICB9CiB9CiAKLXZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpj
b250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rpb246OlVz
ZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4dCAqY29udGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlcmhhbmRsZSkKK3Zv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNl
bnRlZChMQUNvbnRleHQgKmNvbnRleHQsIFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+JiYgcmVzcG9uc2UpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0
aGVudGljYXRvckludGVybmFsOwotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0
UmVjZWl2ZWQpOworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXNwb25zZVNlbGVjdGVk
KTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlVzZXJDb25zZW50ZWQ7CiAKLSAgICBpZiAoY29uc2Vu
dCA9PSBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50OjpObykgeworICAgIGlmICghbV9jb25u
ZWN0aW9uLT5pc1VubG9ja2VkKGNvbnRleHQpKSB7CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4
Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50
LiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzMiwyNSArNDU0LDI3IEBAIHZv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNl
bnRlZChMb2NhbENvbm5lY3Rpb246CiAgICAgYXV0byBhdXRoRGF0YSA9IGJ1aWxkQXV0aERhdGEo
V1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPihyZXF1ZXN0RGF0YSgp
Lm9wdGlvbnMpLnJwSWQsIGdldEFzc2VydGlvbkZsYWdzLCBjb3VudGVyLCB7IH0pOwogCiAgICAg
Ly8gU3RlcCAxMS4KLSAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlOworICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IHNpZ25hdHVyZTsKICAgICB7Ci0gICAgICAgIE5TRGljdGlvbmFyeSAqcXVl
cnkgPSBAeworICAgICAgICBhdXRvIHF1ZXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW3F1ZXJ5IGFkZEVudHJpZXNGcm9tRGljdGlvbmFy
eTpAewogICAgICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAg
ICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUs
Ci0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsOiB0b05TRGF0YShjcmVk
ZW50aWFsSWQpLmdldCgpLAotICAgICAgICAgICAgKGlkKWtTZWNVc2VBdXRoZW50aWNhdGlvbkNv
bnRleHQ6IGNvbnRleHQsCisgICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVs
OiB0b05TRGF0YShyZXNwb25zZS0+cmF3SWQoKSkuZ2V0KCksCiAgICAgICAgICAgICAoaWQpa1Nl
Y1JldHVyblJlZjogQFlFUywKICNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJTikKICAg
ICAgICAgICAgIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFpbjogQFlFUwogI2Vsc2UK
ICAgICAgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCiAjZW5kaWYKLSAgICAgICAg
fTsKKyAgICAgICAgfV07CisgICAgICAgIC8vIGNvbnRleHQgaXMgbnVsbHB0ciBpbiBtb2NrIHRl
c3RpbmcuCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICAgICAgW3F1ZXJ5IHNldE9iamVj
dDpjb250ZXh0IGZvcktleTooaWQpa1NlY1VzZUF1dGhlbnRpY2F0aW9uQ29udGV4dF07CiAgICAg
ICAgIENGVHlwZVJlZiBwcml2YXRlS2V5UmVmID0gbnVsbHB0cjsKLSAgICAgICAgT1NTdGF0dXMg
c3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1
ZXJ5LCAmcHJpdmF0ZUtleVJlZik7CisgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1D
b3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeS5nZXQoKSwgJnByaXZh
dGVLZXlSZWYpOwogICAgICAgICBpZiAoc3RhdHVzKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1Io
IkNvdWxkbid0IGdldCB0aGUgcHJpdmF0ZSBrZXkgcmVmZXJlbmNlOiAlZCIsIHN0YXR1cyk7Ci0g
ICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBt
YWtlU3RyaW5nKCJDb3VsZG4ndCBnZXQgdGhlIHByaXZhdGUga2V5IHJlZmVyZW5jZTogIiwgc3Rh
dHVzKSB9KTsKKyAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1h
a2VTdHJpbmcoIkNvdWxkbid0IGdldCB0aGUgcHJpdmF0ZSBrZXkgcmVmZXJlbmNlOiAiLCBzdGF0
dXMpIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gcHJp
dmF0ZUtleSA9IGFkb3B0Q0YocHJpdmF0ZUtleVJlZik7CkBAIC00NjAsMTggKzQ4NCwyNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25z
ZW50ZWQoTG9jYWxDb25uZWN0aW9uOgogCiAgICAgICAgIENGRXJyb3JSZWYgZXJyb3JSZWYgPSBu
dWxscHRyOwogICAgICAgICAvLyBGSVhNRTogQ29udmVydGluZyBDRlR5cGVSZWYgdG8gU2VjS2V5
UmVmIGlzIHF1aXRlIHN1YnRsZSBoZXJlLgotICAgICAgICBhdXRvIHNpZ25hdHVyZVJlZiA9IGFk
b3B0Q0YoU2VjS2V5Q3JlYXRlU2lnbmF0dXJlKChfX2JyaWRnZSBTZWNLZXlSZWYpKChpZClwcml2
YXRlS2V5UmVmKSwga1NlY0tleUFsZ29yaXRobUVDRFNBU2lnbmF0dXJlTWVzc2FnZVg5NjJTSEEy
NTYsIChfX2JyaWRnZSBDRkRhdGFSZWYpZGF0YVRvU2lnbiwgJmVycm9yUmVmKSk7CisgICAgICAg
IHNpZ25hdHVyZSA9IGFkb3B0Q0YoU2VjS2V5Q3JlYXRlU2lnbmF0dXJlKChfX2JyaWRnZSBTZWNL
ZXlSZWYpKChpZClwcml2YXRlS2V5UmVmKSwga1NlY0tleUFsZ29yaXRobUVDRFNBU2lnbmF0dXJl
TWVzc2FnZVg5NjJTSEEyNTYsIChfX2JyaWRnZSBDRkRhdGFSZWYpZGF0YVRvU2lnbiwgJmVycm9y
UmVmKSk7CiAgICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKICAg
ICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdl
bmVyYXRlIHRoZSBzaWduYXR1cmU6ICVAIiwgKE5TRXJyb3IqKWVycm9yUmVmKTsKLSAgICAgICAg
ICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJp
bmcoIkNvdWxkbid0IGdlbmVyYXRlIHRoZSBzaWduYXR1cmU6ICIsIFN0cmluZygoKE5TRXJyb3Iq
KWVycm9yUmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOworICAgICAgICAgICAgcmVjZWl2
ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2VuZXJhdGUg
dGhlIHNpZ25hdHVyZTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERl
c2NyaXB0aW9uKSkgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
c2lnbmF0dXJlID0gdG9WZWN0b3IoKE5TRGF0YSAqKXNpZ25hdHVyZVJlZi5nZXQoKSk7CiAgICAg
fQogCiAgICAgLy8gU3RlcCAxMy4KLSAgICByZWNlaXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUs
IHVzZXJoYW5kbGUpKTsKKyAgICByZXNwb25zZS0+c2V0QXV0aGVudGljYXRvckRhdGEoYXV0aERh
dGEpOworICAgIHJlc3BvbnNlLT5zZXRTaWduYXR1cmUodG9BcnJheUJ1ZmZlcigoTlNEYXRhICop
c2lnbmF0dXJlLmdldCgpKSk7CisgICAgcmVjZWl2ZVJlc3BvbmQoV1RGTW92ZShyZXNwb25zZSkp
OworfQorCit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6cmVjZWl2ZUV4Y2VwdGlvbihFeGNlcHRp
b25EYXRhJiYgZXhjZXB0aW9uLCBXZWJBdXRoZW50aWNhdGlvblN0YXR1cyBzdGF0dXMpIGNvbnN0
Cit7CisgICAgTE9HX0VSUk9SKGV4Y2VwdGlvbi5tZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAg
IGlmIChhdXRvKiBvYnNlcnZlciA9IHRoaXMtPm9ic2VydmVyKCkpCisgICAgICAgIG9ic2VydmVy
LT5hdXRoZW50aWNhdG9yU3RhdHVzVXBkYXRlZChzdGF0dXMpOworICAgIHJlY2VpdmVSZXNwb25k
KFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgcmV0dXJuOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmgKaW5kZXggOTE5MWIyYzY1MzQy
Y2QxYjY1NzEyNWEyMzI2NDYxNmZlOGRlMjI5YS4uNTQ1YWM1ZmY2MWI3YjJiYWU3ZGUzODc0MmQ1
Njg4OGU1ZjA4MTUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmgKQEAgLTQ2
LDIzICs0NiwxNiBAQCBjbGFzcyBMb2NhbENvbm5lY3Rpb24gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvY2FsQ29ubmVjdGlvbik7CiBw
dWJsaWM6Ci0gICAgZW51bSBjbGFzcyBVc2VyQ29uc2VudCB7Ci0gICAgICAgIE5vLAotICAgICAg
ICBZZXMKLSAgICB9OwotCiAgICAgdXNpbmcgQXR0ZXN0YXRpb25DYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoTlNBcnJheSAqLCBOU0Vycm9yICopPjsKLSAgICB1c2luZyBVc2VyQ29u
c2VudENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyQ29uc2VudCk+OwotICAg
IHVzaW5nIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChVc2VyQ29uc2VudCwgTEFDb250ZXh0ICopPjsKIAogICAgIExvY2FsQ29ubmVjdGlvbigpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5Mb2NhbENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKICAg
ICAvLyBPdmVycmlkZWQgYnkgTW9ja0xvY2FsQ29ubmVjdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFNlY0FjY2Vzc0NvbnRyb2xSZWYs
IFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBp
c1VubG9ja2VkKExBQ29udGV4dCAqKSBjb25zdDsKICAgICB2aXJ0dWFsIFJldGFpblB0cjxTZWNL
ZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29udGV4dCAqLCBTZWNBY2Nlc3ND
b250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBw
bGljYXRpb25UYWcpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRlc3RhdGlvbihTZWNL
ZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwgQXR0ZXN0YXRpb25DYWxsYmFj
ayYmKSBjb25zdDsKLSAgICB2aXJ0dWFsIE5TRGljdGlvbmFyeSAqc2VsZWN0Q3JlZGVudGlhbChj
b25zdCBOU0FycmF5ICopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBmaWx0ZXJSZXNwb25zZXMo
SGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mKSBj
b25zdCB7IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQ29ubmVjdGlvbi5tbQppbmRleCA4YmFlZWU3MDlmZmM3ZDNjZTVjYjhlODAxNGMzMTNiOGEw
YWUwMWI0Li41M2UwMTIzYWQ3YWRhNTU3NTNjMjIyOTlmZTg5ZTg4NDAyZmMyMWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCkBAIC0zOSwyMiArMzksMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgTG9jYWxDb25uZWN0aW9uOjpnZXRVc2VyQ29uc2VudChj
b25zdCBTdHJpbmcmIHJlYXNvbiwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sLCBV
c2VyQ29uc2VudENvbnRleHRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAorYm9v
bCBMb2NhbENvbm5lY3Rpb246OmlzVW5sb2NrZWQoTEFDb250ZXh0ICpjb250ZXh0KSBjb25zdAog
ewotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBp
bml0XSk7Ci0gICAgYXV0byByZXBseSA9IG1ha2VCbG9ja1B0cihbY29udGV4dCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJPT0wgc3VjY2VzcywgTlNF
cnJvciAqZXJyb3IpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKLQotICAgICAgICBVc2VyQ29uc2VudCBjb25zZW50ID0gVXNlckNvbnNlbnQ6OlllczsKLSAg
ICAgICAgaWYgKCFzdWNjZXNzIHx8IGVycm9yKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkNv
dWxkbid0IGF1dGhlbnRpY2F0ZSB3aXRoIGJpb21ldHJpY3M6ICVAIiwgZXJyb3IpOwotICAgICAg
ICAgICAgY29uc2VudCA9IFVzZXJDb25zZW50OjpObzsKLSAgICAgICAgfQotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGNvbnNlbnQsIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29uc2VudCwgY29udGV4dC5nZXQo
KSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotICAgIFtjb250ZXh0IGV2YWx1YXRlQWNjZXNzQ29u
dHJvbDphY2Nlc3NDb250cm9sIG9wZXJhdGlvbjpMQUFjY2Vzc0NvbnRyb2xPcGVyYXRpb25Vc2VL
ZXlTaWduIGxvY2FsaXplZFJlYXNvbjpyZWFzb24gcmVwbHk6cmVwbHkuZ2V0KCldOworICAgIE5T
RXJyb3IgKmVycm9yID0gbmlsOworICAgIGF1dG8gcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVQ
b2xpY3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uV2l0aEJpb21ldHJpY3Mgb3B0
aW9uczpAeyBAKExBT3B0aW9uTm90SW50ZXJhY3RpdmUpOiBAWUVTIH0gZXJyb3I6JmVycm9yXTsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZXQgdXNlciBj
b25zZW50OiAlQCIsIGVycm9yKTsKKyAgICByZXR1cm4gISFyZXN1bHQ7CiB9CiAKIFJldGFpblB0
cjxTZWNLZXlSZWY+IExvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXko
TEFDb250ZXh0ICpjb250ZXh0LCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYs
IGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRh
ZykgY29uc3QKQEAgLTg4LDEyICs3OSw2IEBAIExPQ0FMQ09OTkVDVElPTl9BRERJVElPTlMKICNl
bmRpZgogfQogCi1OU0RpY3Rpb25hcnkgKkxvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3JlZGVudGlh
bChjb25zdCBOU0FycmF5ICpjcmVkZW50aWFscykgY29uc3QKLXsKLSAgICAvLyBGSVhNRShyZGFy
Oi8vcHJvYmxlbS8zNTkwMDUzNCk6IFdlIGRvbid0IGhhdmUgYW4gVUkgdG8gcHJvbXB0IHVzZXJz
IGZvciBzZWxlY3RpbmcgaW50ZXJzZWN0ZWRDcmVkZW50aWFscywgYW5kIHRoZXJlZm9yZSB3ZSBh
bHdheXMgdXNlIHRoZSBmaXJzdCBvbmUgZm9yIG5vdy4KLSAgICByZXR1cm4gY3JlZGVudGlhbHNb
MF07Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
bGllbnQuaAppbmRleCAzYzZiM2Q3ZTAxM2NlNjgwNzI4MzhiOTI2OGFlY2E5YmRlMjk4ZWNmLi5k
ZjNkOTVhZTEwOWU1YmQ0MjEyN2EzZTRmMDNjNTQ1M2I1OGJjMzg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCkBAIC01MCw2ICs1
MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNtaXNzUGFuZWwoV2ViQXV0aGVudGljYXRpb25S
ZXN1bHQpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmKSBjb25zdCBmaW5hbDsKICAg
ICB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikgY29uc3QgZmlu
YWw7CisgICAgdm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmKSBjb25zdCBmaW5hbDsKIAogICAgIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwgKm1fcGFuZWw7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOwpAQCAtNTgsNyArNTksOCBA
QCBwcml2YXRlOgogICAgICAgICBib29sIHBhbmVsVXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5l
bCA6IDE7CiAgICAgICAgIGJvb2wgcGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdp
dGhSZXN1bHQgOiAxOwogICAgICAgICBib29sIHBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdS
ZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgOiAxOwotICAgICAgICBib29sIHBhbmVsc2VsZWN0QXNz
ZXJ0aW9uUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciA6IDE7CisgICAgICAgIGJvb2wgcGFuZWxT
ZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9v
bCBwYW5lbFZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbENvbXBsZXRpb25IYW5kbGVyIDogMTsK
ICAgICB9IG1fZGVsZWdhdGVNZXRob2RzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KaW5kZXggZDUxNjYzMmI5OGQ3Mzg4
MWM0M2U0MzE5YzM5NzMzZTA0MDM5ZWI1ZS4uNDA4MDY1MmRkZDI4MzI3ZDE2M2VkZWRhYWVhN2I5
YzBjODgwYTBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50Lm1tCkBAIC0zOCw2ICszOCw4IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAKKyNpbXBvcnQgIkxvY2FsQXV0aGVudGlj
YXRpb25Tb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudChfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsICpwYW5lbCwgaWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0
ZT4gZGVsZWdhdGUpCkBAIC00Nyw3ICs0OSw4IEBAIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQoX1dLV2ViQXV0aGVudGljYXRpb25QCiAg
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6dXBkYXRlV2ViQXV0
aGVudGljYXRpb25QYW5lbDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbERpc21pc3NX
ZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHBhbmVsOmRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJl
c3VsdDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFJlcXVlc3RQaW5XaXRoUmVtYWlu
aW5nUmV0cmllc0NvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocGFuZWw6cmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOmNvbXBsZXRp
b25IYW5kbGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsc2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVy
OildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOildOworICAg
IG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsVmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sQ29tcGxl
dGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5l
bDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlvbkhhbmRsZXI6KV07CiB9CiAK
IFJldGFpblB0cjxpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiA+IFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRlbGVnYXRlKCkKQEAgLTY3LDYgKzcwLDEyIEBAIHN0
YXRpYyBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlIHdrV2ViQXV0aGVudGljYXRpb25Q
YW5lbFVwZGF0ZShXZWJBdXRoZW50CiAgICAgICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsVXBkYXRlUElOQXV0aEJsb2NrZWQ7CiAgICAgaWYgKHN0YXR1cyA9PSBXZWJBdXRoZW50
aWNhdGlvblN0YXR1czo6UGluSW52YWxpZCkKICAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkOworICAgIGlmIChzdGF0dXMgPT0gV2ViQXV0aGVu
dGljYXRpb25TdGF0dXM6OkxBRXJyb3IpCisgICAgICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsVXBkYXRlTEFFcnJvcjsKKyAgICBpZiAoc3RhdHVzID09IFdlYkF1dGhlbnRpY2F0
aW9uU3RhdHVzOjpMQUR1cGxpY2F0ZUNyZWRlbnRpYWwpCisgICAgICAgIHJldHVybiBfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFEdXBsaWNhdGVDcmVkZW50aWFsOworICAgIGlmIChz
dGF0dXMgPT0gV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxBTm9DcmVkZW50aWFsKQorICAgICAg
ICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFsOwog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsVXBkYXRlTXVsdGlwbGVORkNUYWdzUHJlc2VudDsKIH0KQEAgLTEzMyw3ICsxNDIsNyBA
QCB2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnNlbGVjdEFzc2VydGlvblJlc3Bv
bnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QQogewogICAgIEFTU0VSVCghcmVzcG9uc2VzLmlzRW1w
dHkoKSk7CiAKLSAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsc2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikgeworICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMu
cGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlc1swXSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xNTgsNiArMTY3LDI4IEBAIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6
c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBCiAgICAgfSkuZ2V0
KCldOwogfQogCit2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnZlcmlmeVVzZXIo
U2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KExBQ29udGV4dCAqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBpZiAoIW1f
ZGVsZWdhdGVNZXRob2RzLnBhbmVsVmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sQ29tcGxldGlv
bkhhbmRsZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWRvcHROUyhbYWxsb2NMQUNv
bnRleHRJbnN0YW5jZSgpIGluaXRdKS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhdXRvIGRlbGVnYXRlID0gbV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRl
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5z
dGFuY2UoKSBpbml0XSkuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRl
LmdldCgpLCBAc2VsZWN0b3IocGFuZWw6dmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOmNvbXBs
ZXRpb25IYW5kbGVyOikpOworICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIHZlcmlmeVVzZXJX
aXRoQWNjZXNzQ29udHJvbDphY2Nlc3NDb250cm9sIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hl
Y2tlciA9IFdURk1vdmUoY2hlY2tlcildKExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pLmdldCgp
XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
VEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAppbmRleCA3MjAxNThh
Y2MyNTU5MWI3MzBmY2U3MWNhZmVkYmUzNDMxOTZkZWQyLi5kMGRkOWIxMDQ5YWExN2ZiZWVlM2I4
NDkyZTVlYzQxZjc1NTJhOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rp
b24uaApAQCAtMzcsMTAgKzM3LDEwIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBNb2NrTG9jYWxD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24mKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYg
cmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2VyQ29uc2VudENvbnRleHRDYWxsYmFjayYm
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzVW5sb2NrZWQoTEFDb250ZXh0ICopIGNvbnN0IGZp
bmFsOwogICAgIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5
KExBQ29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJM
YWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgZ2V0QXR0ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKmF1dGhEYXRhLCBOU0RhdGEgKmhh
c2gsIEF0dGVzdGF0aW9uQ2FsbGJhY2smJikgY29uc3QgZmluYWw7Ci0gICAgTlNEaWN0aW9uYXJ5
ICpzZWxlY3RDcmVkZW50aWFsKGNvbnN0IE5TQXJyYXkgKikgY29uc3QgZmluYWw7CisgICAgdm9p
ZCBmaWx0ZXJSZXNwb25zZXMoSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4mKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2Fs
Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQppbmRleCA5MTViNTk0OTlmZTdlY2QyN2JmZjY5
YjJmMDY3MGRiN2Q0Y2YzMGZmLi44YjhkODI0NTE0ZTU4Yzg0MjAwYWE3ODE2Njc1OWFhZWY3Y2M1
MTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCkBAIC0zMiw2
ICszMiw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0V4Y2VwdGlvbkRhdGEuaD4KICNpbXBvcnQgPHd0
Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiAjaW1wb3J0ICJMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCIKQEAgLTQzLDE3ICs0NCw5
IEBAIE1vY2tMb2NhbENvbm5lY3Rpb246Ok1vY2tMb2NhbENvbm5lY3Rpb24oY29uc3QgV2ViQ29y
ZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uCiB7CiB9CiAKLXZvaWQgTW9ja0xvY2FsQ29ubmVj
dGlvbjo6Z2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiwgU2VjQWNjZXNzQ29udHJvbFJlZiwg
VXNlckNvbnNlbnRDb250ZXh0Q2FsbGJhY2smJiBjYWxsYmFjaykgY29uc3QKK2Jvb2wgTW9ja0xv
Y2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZChMQUNvbnRleHQgKmNvbnRleHQpIGNvbnN0CiB7Ci0g
ICAgLy8gTW9jayBhc3luYyBvcGVyYXRpb25zLgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbY29uZmlndXJhdGlvbiA9IG1fY29uZmlndXJhdGlvbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKGNvbmZpZ3VyYXRpb24ubG9jYWwp
OwotICAgICAgICBpZiAoIWNvbmZpZ3VyYXRpb24ubG9jYWwtPmFjY2VwdEF1dGhlbnRpY2F0aW9u
KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhVc2VyQ29uc2VudDo6Tm8sIG5pbCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY2FsbGJhY2soVXNlckNvbnNlbnQ6Olll
cywgYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRdKS5nZXQoKSk7Ci0gICAg
fSk7CisgICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5sb2NhbC0+YWNjZXB0QXV0aGVudGljYXRp
b247CiB9CiAKIFJldGFpblB0cjxTZWNLZXlSZWY+IE1vY2tMb2NhbENvbm5lY3Rpb246OmNyZWF0
ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBj
b25zdCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcp
IGNvbnN0CkBAIC0xMTIsMTUgKzEwNSwyNCBAQCB2b2lkIE1vY2tMb2NhbENvbm5lY3Rpb246Omdl
dEF0dGVzdGF0aW9uKFNlY0tleVJlZiwgTlNEYXRhICosIE5TRGF0YSAqLCBBdHRlc3RhdAogICAg
IH0pOwogfQogCi1OU0RpY3Rpb25hcnkgKk1vY2tMb2NhbENvbm5lY3Rpb246OnNlbGVjdENyZWRl
bnRpYWwoY29uc3QgTlNBcnJheSAqY3JlZGVudGlhbHMpIGNvbnN0Cit2b2lkIE1vY2tMb2NhbENv
bm5lY3Rpb246OmZpbHRlclJlc3BvbnNlcyhIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYgcmVzcG9uc2VzKSBjb25zdAogewotICAgIGF1dG8gcHJl
ZmVycmVkVXNlcmhhbmRsZSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0
RW5jb2RlZFN0cmluZzptX2NvbmZpZ3VyYXRpb24ubG9jYWwtPnByZWZlcnJlZFVzZXJoYW5kbGVC
YXNlNjQgb3B0aW9uczowXSk7Ci0gICAgZm9yIChOU0RpY3Rpb25hcnkgKmNyZWRlbnRpYWwgOiBj
cmVkZW50aWFscykgewotICAgICAgICBpZiAoW2NyZWRlbnRpYWxbKGlkKWtTZWNBdHRyQXBwbGlj
YXRpb25UYWddIGlzRXF1YWxUb0RhdGE6cHJlZmVycmVkVXNlcmhhbmRsZS5nZXQoKV0pCi0gICAg
ICAgICAgICByZXR1cm4gY3JlZGVudGlhbDsKKyAgICBjb25zdCBhdXRvJiBwcmVmZXJyZWRVc2Vy
aGFuZGxlQmFzZTY0ID0gbV9jb25maWd1cmF0aW9uLmxvY2FsLT5wcmVmZXJyZWRVc2VyaGFuZGxl
QmFzZTY0OworICAgIGlmIChwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdHIgPSByZXNwb25zZXMuYmVnaW4oKTsKKyAgICBm
b3IgKDsgaXRyICE9IHJlc3BvbnNlcy5lbmQoKTsgKytpdHIpIHsKKyAgICAgICAgYXV0byogdXNl
ckhhbmRsZSA9IGl0ci0+Z2V0KCkudXNlckhhbmRsZSgpOworICAgICAgICBBU1NFUlQodXNlckhh
bmRsZSk7CisgICAgICAgIGF1dG8gdXNlcmhhbmRsZUJhc2U2NCA9IGJhc2U2NEVuY29kZSh1c2Vy
SGFuZGxlLT5kYXRhKCksIHVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIGlmICh1
c2VyaGFuZGxlQmFzZTY0ID09IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQpCisgICAgICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG5p
bDsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVzcG9uc2VzLnRha2UoaXRyKTsKKyAgICBBU1NFUlQo
cmVzcG9uc2UpOworICAgIHJlc3BvbnNlcy5jbGVhcigpOworICAgIHJlc3BvbnNlcy5hZGQoV1RG
TW92ZSgqcmVzcG9uc2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dGlvbkZsYWdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdGlvbkZsYWdzLmgKaW5kZXggNTQ4OGEyMTEzOTI5MjZjMGEzNjZmZmE4N2Y3
NjU5MDlkOTFlNWI4OC4uOTc1MTgzZGZkNTc3NTJkMTIzZjY1MzM3Yjc2Yjc5NTUyNDY2MTFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRpb25GbGFncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaApAQCAtNDUsNyArNDUsMTAgQEAg
ZW51bSBjbGFzcyBXZWJBdXRoZW50aWNhdGlvblN0YXR1cyA6IHVpbnQ4X3QgewogICAgIE5vQ3Jl
ZGVudGlhbHNGb3VuZCwKICAgICBQaW5CbG9ja2VkLAogICAgIFBpbkF1dGhCbG9ja2VkLAotICAg
IFBpbkludmFsaWQKKyAgICBQaW5JbnZhbGlkLAorICAgIExBRXJyb3IsCisgICAgTEFEdXBsaWNh
dGVDcmVkZW50aWFsLAorICAgIExBTm9DcmVkZW50aWFsLAogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyY2NmYjY1YTg0YTI3Y2ZiZTc2NWJmNzViOTE2YzY1MzEyM2Y2MzI0Li40NWVjY2M1
Njc3MTBkNzFiZDY0N2MxN2MwNzA2MGZjNmM0YWJhNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTYsNiArMTA5Niw3IEBACiAJ
CTU3MERBQUM2MjMwMzdGN0YwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFDNDIz
MDM3RjdFMDBFOEZDMDQgLyogV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oICovOyB9OwogCQk1
NzBEQUFDQTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREFBQzgyMzAzODVGRDAwRThGQzA0
IC8qIEN0YXBOZmNEcml2ZXIuaCAqLzsgfTsKIAkJNTcyRkQ0NDMyMjI2NUNFMjAwQTFFQ0MzIC8q
IFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRkQ0NDEyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZp
ZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oICovOyB9OworCQk1NzQyMTc5MjI0MDBFMjg2MDAy
QjMwM0QgLyogTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0MjE3OTEyNDAwRTA5ODAwMkIzMDNEIC8qIExvY2Fs
QXV0aGVudGljYXRpb25TUEkuaCAqLzsgfTsKIAkJNTc0NzI4RDEyMzQ1NkU5ODAwMTcwMEFGIC8q
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDcyOENGMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTc0NzI4RDQyMzQ1NzBBRTAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc0NzI4RDMyMzQ1NzBBRTAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxJbnRlcm5hbC5oICovOyB9OwogCQk1NzU5N0VCOTIxODExRDlBMDAzN0Y5MjQgLyogQ3Rh
cEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCAqLzsgfTsKQEAg
LTM4MTEsNiArMzgxMiw3IEBACiAJCTU3MERBQUM4MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZj
RHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN0YXBOZmNEcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTcwREFBQzkyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3RhcE5mY0RyaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MkZENDQxMjIyNjVDRTIwMEExRUNDMyAvKiBXZWJWaWV3RGlkTW92
ZVRvV2luZG93T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlld0RpZE1vdmVUb1dpbmRv
d09ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NDIxNzkxMjQwMEUw
OTgwMDJCMzAzRCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
Y2FsQXV0aGVudGljYXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0
NzI4Q0YyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzQ3MjhEMDIzNDU2RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NDcyOEQzMjM0NTcwQUUw
MDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02ODM5LDYgKzY4NDEsNyBAQAogCQkJCTFBNTcwNTEwMUJFNDEwRTUw
MDg3NEFGMSAvKiBCbG9ja1NQSS5oICovLAogCQkJCTM3QzIxQ0FEMUU5OTRDMEMwMDI5RDVGOSAv
KiBDb3JlUHJlZGljdGlvblNQSS5oICovLAogCQkJCTJEQUFEQThFMjI5OEMyMTAwMEUzNkIwQyAv
KiBEZXZpY2VNYW5hZ2VtZW50U1BJLmggKi8sCisJCQkJNTc0MjE3OTEyNDAwRTA5ODAwMkIzMDNE
IC8qIExvY2FsQXV0aGVudGljYXRpb25TUEkuaCAqLywKIAkJCQk1N0I4MjY0MDIzMDRFQjNFMDBC
NzJFQjAgLyogTmVhckZpZWxkU1BJLmggKi8sCiAJCQkJMzc1NEQ1NDQxQjNBMjlGRDAwM0E0QzdG
IC8qIE5TSW52b2NhdGlvblNQSS5oICovLAogCQkJCTM3QjQ3RTJDMUQ2NERCNzYwMDVGNEVGRiAv
KiBvYmpjU1BJLmggKi8sCkBAIC0xMDM2Miw2ICsxMDM2NSw3IEBACiAJCQkJNDEzMDc1QjIxREU4
NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEMTA4NzYxMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTc4REMyOTgyMTU1QTAwMjAwNzRFODE1IC8qIExvY2FsQXV0aGVudGljYXRp
b25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc0MjE3OTIyNDAwRTI4NjAwMkIzMDNE
IC8qIExvY2FsQXV0aGVudGljYXRpb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREFD
MjE0QzYwMjcwMDE2Qjg0NyAvKiBMb2NhbEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3RENFREFEMjE0QzYwMkMwMDE2Qjg0NyAvKiBMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3RENFREFFMjE0QzYwMzMwMDE2Qjg0NyAvKiBMb2NhbFNlcnZpY2UuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDgzZWVkMGI4MDQ3ZmY0NjA1MzljMDdkY2JkZDAzNjVmMDYxMTVmMjQuLjliZjlj
NjYyMTBhODkxNjY4NDRmNzhjMWZlZGQ4ZDU3M2VjZjgzMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0wMi0y
MSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRo
bl0gSW1wbGVtZW50IFNQSSBmb3IgdGhlIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA4NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTkzNjkzMDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQmVzaWRlcyBhZGRpbmcgQVBJIHRlc3RzLCB0aGlzIHBhdGNoIGFs
c28gdGVhY2hlcyBUZXN0V2ViS2l0QVBJIHRvIHVzZSByZXN0cmljdGVkIGVudGl0bGVtZW50cy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1t
YWNPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAg
ICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5lbDp1cGRhdGVXZWJB
dXRoZW50aWNhdGlvblBhbmVsOl0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25Q
YW5lbERlbGVnYXRlIHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBh
bmVsOnZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbDog
Q29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5odG1sLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1k
dXBsaWNhdGUtY3JlZGVudGlhbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEt
ZXJyb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWw6IEFkZGVkLgor
CiAyMDIwLTAyLTIxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgog
CiAgICAgICAgIEFwcC1ib3VuZCBkb21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsg
U2Vzc2lvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMv
VGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHMgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0Nv
bmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1lbnRzCmluZGV4IGVhMGMx
ZjdjNDc0YTI1YzcxMGMzODVkZDY4YmM5NGU4MjA5MGE3MTAuLmE5ZjljZGYwNGMyZmJiZDAyZTNh
MmVlZjIyNjI0N2FlNmViOTYyMzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHMKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVt
ZW50cwpAQCAtMiw2ICsyLDEwIEBACiA8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8v
RFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlz
dC0xLjAuZHRkIj4KIDxwbGlzdCB2ZXJzaW9uPSIxLjAiPgogPGRpY3Q+CisJPGtleT5rZXljaGFp
bi1hY2Nlc3MtZ3JvdXBzPC9rZXk+CisJPGFycmF5PgorCQk8c3RyaW5nPmNvbS5hcHBsZS5UZXN0
V2ViS2l0QVBJPC9zdHJpbmc+CisJPC9hcnJheT4KIAk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS50
ZW1wb3JhcnktZXhjZXB0aW9uLnNicGw8L2tleT4KIAk8YXJyYXk+CiAJCTxzdHJpbmc+KGFsbG93
IG1hY2gtaXNzdWUtZXh0ZW5zaW9uIChyZXF1aXJlLWFsbCAoZXh0ZW5zaW9uLWNsYXNzICZxdW90
O2NvbS5hcHBsZS53ZWJraXQuZXh0ZW5zaW9uLm1hY2gmcXVvdDspKSk8L3N0cmluZz4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54
Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQ
SS54Y2NvbmZpZwppbmRleCAzMGE4Y2FmMGMyNDcwZDY3NmI2ZGNlMzYyMWYwOWIwNGFjNzkwZDMx
Li5jYThlMTcxNWFjZTFjNjNhNjBkOGI0NWMxYzFmYjU3MTgwZDNlZmVhIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhj
Y29uZmlnCkBAIC02OSwzICs2OSwxMCBAQCBDT0RFX1NJR05fRU5USVRMRU1FTlRTW3Nkaz1pcGhv
bmUqXSA9IENvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktaU9TLmVudGl0bGVtZQogQ09ERV9T
SUdOX0VOVElUTEVNRU5UU1tzZGs9bWFjb3N4Kl0gPSBDb25maWd1cmF0aW9ucy9UZXN0V2ViS2l0
QVBJLW1hY09TLmVudGl0bGVtZW50czsKIAogU1RSSVBfU1RZTEUgPSBkZWJ1Z2dpbmc7CisKK0NP
REVfU0lHTl9JREVOVElUWVtzZGs9bWFjb3N4Kl0gPSAkKENPREVfU0lHTl9JREVOVElUWV8kKENP
TkZJR1VSQVRJT04pKTsKK0NPREVfU0lHTl9JREVOVElUWV9EZWJ1ZyA9ICQoQ09ERV9TSUdOX0lE
RU5USVRZXyQoVVNFX0lOVEVSTkFMX1NESykpOworQ09ERV9TSUdOX0lERU5USVRZX1JlbGVhc2Ug
PSAkKENPREVfU0lHTl9JREVOVElUWV8kKFVTRV9JTlRFUk5BTF9TREspKTsKK0NPREVfU0lHTl9J
REVOVElUWV9ZRVMgPSAkKFdLX0VOR0lORUVSSU5HX0NPREVfU0lHTl9JREVOVElUWSk7CitDT0RF
X1NJR05fSURFTlRJVFlfUHJvZHVjdGlvbiA9ICQoQ09ERV9TSUdOX0lERU5USVRZX1Byb2R1Y3Rp
b25fJChVU0VfSU5URVJOQUxfU0RLKSk7CitDT0RFX1NJR05fSURFTlRJVFlfUHJvZHVjdGlvbl9Z
RVMgPSAtOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NDE1N2Y2ODhkOWQwYmI4ZmU3MWNk
YWI4OWJjODdiMGRjZjEzYTQ1Li5jZjI1MjNlMmMzMDVjYjIxZmExOGZiYWJlMjEyODIzZjc1ZWIz
NWNiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQ5LDYgKzM0OSwxMCBAQAogCQk1NzMy
NTVBNTIyMTM5QkM3MDAzOTZBRTggLyogaGVsbG93b3JsZC53ZWJhcmNoaXZlIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzI1NUE0MjIxMzlC
OTAwMDM5NkFFOCAvKiBoZWxsb3dvcmxkLndlYmFyY2hpdmUgKi87IH07CiAJCTU3MzI1NUE2MjIx
MzlCQzcwMDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNoaXZlLTEuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMyNTVBMjIyMTM5QjhGMDAz
OTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0xLmh0bWwgKi87IH07CiAJCTU3MzI1NUE3MjIxMzlC
QzcwMDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMyNTVBMzIyMTM5QjkwMDAzOTZB
RTggLyogbG9hZC13ZWItYXJjaGl2ZS0yLmh0bWwgKi87IH07CisJCTU3NDIxNzg4MjQwMEFDMjUw
MDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTc0MjE3ODcyNDAwQUJGRDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEtZXJyb3IuaHRtbCAqLzsgfTsKKwkJNTc0MjE3OEEyNDAwQUVEODAwMkIzMDNEIC8q
IHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRp
YWwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzQyMTc4OTI0MDBBRUQwMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sICovOyB9OworCQk1NzQyMTc4
QzI0MDBDRDQ3MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24tbGEuaHRtbCAqLzsgfTsKKwkJNTc0MjE3OEUyNDAwRDJERjAwMkIzMDNEIC8qIHdlYi1h
dXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc4RDI0MDBEMjZDMDAyQjMw
M0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sICovOyB9Owog
CQk1NzRGNTVEMjIwNEQ0N0YwMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0RjU1RDAyMDRENDcx
QzAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsgfTsKIAkJNTc1ODU5N0YyM0EyNTI3
QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTdFMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVz
dC5jcHAgKi87IH07CiAJCTU3NTg1OTg0MjNDM0MzQTQwMEM3NDU3MiAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4tZ2V0LXJldHJpZXMtZXJyb3IuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU4NTk4
MzIzQzNDMzYyMDBDNzQ1NzIgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1o
aWQtcGluLWdldC1yZXRyaWVzLWVycm9yLmh0bWwgKi87IH07CkBAIC0xNTE3LDYgKzE1MjEsNyBA
QAogCQkJCTU3OERBNDRFMjNFQ0QyOEIwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1oaWQtcGluLWludmFsaWQtZXJyb3ItcmV0cnkuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQk1NzBEMjZGQzIzQzNGODcwMDBENUNGNjcgLyogd2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTU3NjYzREVDMjM0RjFGOTMwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk1NzQyMTc4QzI0MDBDRDQ3
MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQk1Nzk4MzM5MjIzNjhGQTM3MDA4RTU1NDcgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RFQTIzNEVBNjZEMDBFODVFMDkgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJNTc3NDU0RDIyMzU5QkIwMTAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLXUyZi1uby1jcmVkZW50aWFscy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAt
MTUzMSw2ICsxNTM2LDkgQEAKIAkJCQk1NzhEQTQ0QTIzRUNEMTg2MDAyNDYwMTAgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLWludmFsaWQtZXJyb3ItcmV0cnku
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzBEMjZGNjIzQzNEMzMwMDBENUNGNjcg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc5ODMzN0UyMzYwMTlBNDAwOEU1NTQ3IC8qIHdlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CisJCQkJNTc0MjE3OEEyNDAwQUVEODAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtl
LWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKKwkJCQk1NzQyMTc4ODI0MDBBQzI1MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9u
LW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJ
CTU3NDIxNzhFMjQwMEQyREYwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUMyQjgxODYxQzg5MjU5
RDAwQTU1MjlGIC8qIHdlYmZvbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MTcx
NEVCNDFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MTcxNEVCNTFDRjhDNzhDMDA0NzIzQzQgLyogV2Vi
UHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE5
NjEsNiArMTk2OSwxMSBAQAogCQk1NzMyNTVBMzIyMTM5QjkwMDAzOTZBRTggLyogbG9hZC13ZWIt
YXJjaGl2ZS0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG9hZC13ZWItYXJjaGl2ZS0yLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMyNTVBNDIyMTM5QjkwMDAzOTZBRTggLyogaGVs
bG93b3JsZC53ZWJhcmNoaXZlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gZmlsZS5icGxpc3Q7IHBhdGggPSBoZWxsb3dvcmxkLndlYmFyY2hpdmU7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzVGMDI1MUYzQTRFQTYwMDBFRTgwMSAvKiBU
ZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50czsgcGF0aCA9ICJU
ZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1NzQyMTc4NzI0MDBBQkZEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS1lcnJvci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1t
YWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU3NDIxNzg5MjQwMEFFRDAwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1j
cmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1
dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc0MjE3OEIyNDAwQ0QyRDAwMkIzMDNE
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0
aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTc0MjE3OEYyNDAwRDU0RDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50
aWFsLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzRGNTVEMDIwNEQ0NzFD
MDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1cml0
eS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZy
YW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCTU3NTg1OTdEMjNBMjUyN0EwMEM3
NDU3MiAvKiBDdGFwUGluVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdGFwUGluVGVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzU4NTk3RTIzQTI1MjdBMDBDNzQ1NzIgLyogQ3Rh
cFBpblRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3RhcFBpblRlc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU3OSw2ICszNTkyLDcgQEAKIAkJCQk1NzhEQTQ0RDIz
RUNEMjYxMDAyNDYwMTAgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBp
bi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0bWwgKi8sCiAJCQkJNTcwRDI2RkIyM0MzRjg2NTAwRDVD
RjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1waW4uaHRtbCAqLywK
IAkJCQk1NzY2M0RFQjIzNEYxRjgwMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1h
c3NlcnRpb24taGlkLmh0bWwgKi8sCisJCQkJNTc0MjE3OEIyNDAwQ0QyRDAwMkIzMDNEIC8qIHdl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwgKi8sCiAJCQkJNTc5ODMzN0Iy
MzVFQjY1QzAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1t
dWx0aXBsZS10YWdzLmh0bWwgKi8sCiAJCQkJNTc2NjNERTkyMzRFQTYwQjAwRTg1RTA5IC8qIHdl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sICovLAogCQkJCTU3NzQ1NEQx
MjM1OUJBRDUwMDhFMUVENyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi11MmYt
bm8tY3JlZGVudGlhbHMuaHRtbCAqLywKQEAgLTM1OTMsNiArMzYwNywxMCBAQAogCQkJCTU3OERB
NDQ5MjNFQ0QxNTUwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFs
LWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1sICovLAogCQkJCTU3MEQyNkY1MjNDM0Qz
MjcwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4u
aHRtbCAqLywKIAkJCQk1Nzk4MzM3RDIzNjAxOTZEMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0
aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCAqLywKKwkJCQk1NzQyMTc4OTI0MDBBRUQwMDAy
QjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUt
Y3JlZGVudGlhbC5odG1sICovLAorCQkJCTU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3ZWIt
YXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgKi8sCisJCQkJNTc0
MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEuaHRtbCAqLywKKwkJCQk1NzQyMTc4RjI0MDBENTREMDAyQjMwM0QgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC5odG1sICovLAogCQkJCTUxNzE0RUIyMUNGOEM3NjEw
MDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICovLAogCQkJCTUxNzE0
RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICov
LAogCQkJCTUxMjBDODNCMUU2NzRFMzUwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMuaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAw
ODMzYzQ5ODlhYmMzYWEzNGEzY2E2ODgzMWQwNGFmNDA2MmYzNmUzLi40NzU2ZGFhYjA0YmRiMDVh
YjU4MjA0OTE2ZDViOWM2NzNiZjE1YTkyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQg
IlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMu
aCIKKyNpbXBvcnQgPExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxBdXRoZW50aWNhdGlvbi5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0V4cGVyaW1lbnRhbEZl
YXR1cmUuaD4KQEAgLTQ5LDkgKzUwLDE4IEBAIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVOb0NyZWRlbnRpYWxzRm91bmQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5CbG9ja2VkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3
ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlUElOQXV0aEJsb2NrZWQgPSBmYWxzZTsKIHN0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkID0gZmFsc2U7Citz
dGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvciA9IGZhbHNlOwor
c3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVu
dGlhbCA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxB
Tm9DcmVkZW50aWFsID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2FuY2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKK3N0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxWZXJpZnlVc2VyID0gZmFsc2U7CiBzdGF0aWMgU3RyaW5nIHdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxQaW47CiBzdGF0aWMgQk9PTCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5k
bGUgPSBOTzsKK3N0YXRpYyBTdHJpbmcgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9CisgICAg
IkJEai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBnRnBzakYvUW0xNzQ5VkJKUGdxVUl3ZmhX
SEo5MW5iN1UiCisgICAgIlBINzZjMCtXRk96WktzbFB5eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVu
Zm5CZ0VWRmg1emV2Ky94cEhRSXZ1cTYiCisgICAgIlJRPT0iOworc3RhdGljIFN0cmluZyB0ZXN0
VXNlcmhhbmRsZUJhc2U2NCA9ICJBQUVDQXdRRkJnY0lDUT09IjsKIAogQGludGVyZmFjZSBUZXN0
V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxEZWxlZ2F0ZT4KIEBlbmQKQEAgLTg0LDYgKzk0LDE4IEBAIC0gKHZvaWQpcGFu
ZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB1cGRhdGVXZWJBdXRoZW50aWNh
dGlvblBhbmVsOihfCiAgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZh
bGlkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAodXBkYXRlID09IF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yKSB7CisgICAgICAgIHdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAodXBkYXRlID09IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1
cGxpY2F0ZUNyZWRlbnRpYWwpIHsKKyAgICAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaWYgKHVwZGF0ZSA9PSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRl
bnRpYWwpIHsKKyAgICAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50
aWFsID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogLSAodm9pZClwYW5lbDoo
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRpc21pc3NXZWJBdXRoZW50aWNhdGlv
blBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGljYXRpb25SZXN1bHQpcmVzdWx0CkBAIC0x
MTEsNiArMTMzLDExIEBAIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwg
KilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6CiAKIC0gKHZvaWQpcGFuZWw6
KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25z
ZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKily
ZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBpZiAocmVzcG9u
c2VzLmNvdW50ID09IDEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2VzWzBd
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEVYUEVDVF9FUShyZXNwb25zZXMuY291
bnQsIDJ1bCk7CiAgICAgZm9yIChfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
ICpyZXNwb25zZSBpbiByZXNwb25zZXMpIHsKICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3BvbnNl
Lm5hbWUgaXNFcXVhbDpAImpvaG5wc21pdGhAZXhhbXBsZS5jb20iXSB8fCBbcmVzcG9uc2UubmFt
ZSBpc0VxdWFsOkAiIl0pOwpAQCAtMTIzLDYgKzE1MCwxMyBAQCAtICh2b2lkKXBhbmVsOihfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6KE5T
QXJyYQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlc1tpbmRleF0pOwogfQogCistICh2
b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdmVyaWZ5VXNlcldp
dGhBY2Nlc3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9sUmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlcgorewor
ICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyID0gdHJ1ZTsKKyAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdE5TKFtbTEFDb250ZXh0IGFsbG9jXSBpbml0XSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoY29udGV4dC5nZXQoKSk7Cit9CisKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0V2Vi
QXV0aGVudGljYXRpb25QYW5lbEZha2VEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsRGVsZWdhdGU+CkBAIC0yMzEsNiArMjY1LDIyIEBAIHN0YXRpYyBfV0tFeHBl
cmltZW50YWxGZWF0dXJlICp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKQog
ICAgIHJldHVybiB0aGVGZWF0dXJlLmdldCgpOwogfQogCitzdGF0aWMgX1dLRXhwZXJpbWVudGFs
RmVhdHVyZSAqd2ViQXV0aGVudGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxG
ZWF0dXJlKCkKK3sKKyAgICBzdGF0aWMgUmV0YWluUHRyPF9XS0V4cGVyaW1lbnRhbEZlYXR1cmU+
IHRoZUZlYXR1cmU7CisgICAgaWYgKHRoZUZlYXR1cmUpCisgICAgICAgIHJldHVybiB0aGVGZWF0
dXJlLmdldCgpOworCisgICAgTlNBcnJheSAqZmVhdHVyZXMgPSBbV0tQcmVmZXJlbmNlcyBfZXhw
ZXJpbWVudGFsRmVhdHVyZXNdOworICAgIGZvciAoX1dLRXhwZXJpbWVudGFsRmVhdHVyZSAqZmVh
dHVyZSBpbiBmZWF0dXJlcykgeworICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWw6QCJX
ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckVuYWJsZWQiXSkgeworICAgICAgICAg
ICAgdGhlRmVhdHVyZSA9IGZlYXR1cmU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gdGhlRmVhdHVyZS5nZXQoKTsKK30KKwogc3RhdGljIHZvaWQgcmVz
ZXQoKQogewogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSBmYWxzZTsKQEAgLTI0MSw5
ICsyOTEsMTMgQEAgc3RhdGljIHZvaWQgcmVzZXQoKQogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVQSU5CbG9ja2VkID0gZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVw
ZGF0ZVBJTkF1dGhCbG9ja2VkID0gZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVw
ZGF0ZVBJTkludmFsaWQgPSBmYWxzZTsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRl
TEFFcnJvciA9IGZhbHNlOworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxp
Y2F0ZUNyZWRlbnRpYWwgPSBmYWxzZTsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRl
TEFOb0NyZWRlbnRpYWwgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2Vs
SW1tZWRpYXRlbHkgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGluID0gZW1w
dHlTdHJpbmcoKTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUgPSBO
TzsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlciA9IGZhbHNlOwogfQogCiBz
dGF0aWMgdm9pZCBjaGVja1BhbmVsKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKnBhbmVsLCBO
U1N0cmluZyAqcmVseWluZ1BhcnR5SUQsIE5TQXJyYXkgKnRyYW5zcG9ydHMsIF9XS1dlYkF1dGhl
bnRpY2F0aW9uVHlwZSB0eXBlKQpAQCAtMjc3LDYgKzMzMSw1NiBAQCBzdGF0aWMgdm9pZCBjaGVj
a0ZyYW1lSW5mbyhXS0ZyYW1lSW5mbyAqZnJhbWUsIGJvb2wgaXNNYWluRnJhbWUsIE5TU3RyaW5n
ICp1cmwsCiAgICAgRVhQRUNUX0VRKGZyYW1lLndlYlZpZXcsIHdlYlZpZXcpOwogfQogCitib29s
IGFkZEtleVRvS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdCBT
dHJpbmcmIHJwSWQsIGNvbnN0IFN0cmluZyYgdXNlckhhbmRsZUJhc2U2NCkKK3sKKyAgICBOU0Rp
Y3Rpb25hcnkqIG9wdGlvbnMgPSBAeworICAgICAgICAoaWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQp
a1NlY0F0dHJLZXlUeXBlRUNTRUNQcmltZVJhbmRvbSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5
Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKKyAgICAgICAgKGlkKWtTZWNBdHRy
S2V5U2l6ZUluQml0czogQDI1NiwKKyAgICB9OworICAgIENGRXJyb3JSZWYgZXJyb3JSZWYgPSBu
dWxscHRyOworICAgIGF1dG8ga2V5ID0gYWRvcHRDRihTZWNLZXlDcmVhdGVXaXRoRGF0YSgKKyAg
ICAgICAgKF9fYnJpZGdlIENGRGF0YVJlZilhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJhc2U2NEVuY29kZWRTdHJpbmc6cHJpdmF0ZUtleUJhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2
NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSwKKyAgICAgICAgKF9fYnJp
ZGdlIENGRGljdGlvbmFyeVJlZilvcHRpb25zLAorICAgICAgICAmZXJyb3JSZWYKKyAgICApKTsK
KyAgICBpZiAoZXJyb3JSZWYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5TRGljdGlv
bmFyeSogYWRkUXVlcnkgPSBAeworICAgICAgICAoaWQpa1NlY1ZhbHVlUmVmOiAoaWQpa2V5Lmdl
dCgpLAorICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAorICAgICAgICAo
aWQpa1NlY0F0dHJMYWJlbDogcnBJZCwKKyAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25U
YWc6IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzp1
c2VySGFuZGxlQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3du
Q2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlOiAoaWQp
a1NlY0F0dHJBY2Nlc3NpYmxlQWZ0ZXJGaXJzdFVubG9jaywKKyNpZiBIQVZFKERBVEFfUFJPVEVD
VElPTl9LRVlDSEFJTikKKyAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWlu
OiBAWUVTCisjZWxzZQorICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUworI2VuZGlm
CisgICAgfTsKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQWRkKChfX2JyaWRnZSBDRkRp
Y3Rpb25hcnlSZWYpYWRkUXVlcnksIE5VTEwpOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIGNsZWFuVXBLZXljaGFp
bihjb25zdCBTdHJpbmcmIHJwSWQpCit7CisgICAgTlNEaWN0aW9uYXJ5KiBkZWxldGVRdWVyeSA9
IEB7CisgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCisgICAgICAgIChp
ZClrU2VjQXR0ckxhYmVsOiBycElkLAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlOiAo
aWQpa1NlY0F0dHJBY2Nlc3NpYmxlQWZ0ZXJGaXJzdFVubG9jaywKKyNpZiBIQVZFKERBVEFfUFJP
VEVDVElPTl9LRVlDSEFJTikKKyAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNo
YWluOiBAWUVTCisjZWxzZQorICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUworI2Vu
ZGlmCisgICAgfTsKKyAgICBTZWNJdGVtRGVsZXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
ZGVsZXRlUXVlcnkpOworfQorCiB9IC8vIG5hbWVzYXBjZTsKIAogVEVTVChXZWJBdXRoZW50aWNh
dGlvblBhbmVsLCBOb1BhbmVsVGltZW91dCkKQEAgLTEwNzYsNiArMTE4MCwxMTggQEAgVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBNdWx0aXBsZUFjY291bnRzKQogICAgIEVYUEVDVF9FUShb
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVzZXJIYW5kbGUiXSBpc0Vx
dWFsVG9TdHJpbmc6QCI8bnVsbD4iXSwgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFu
ZGxlKTsKIH0KIAorVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUVycm9yKQoreworICAg
IHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEtZXJyb3IiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFt
ZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5n
OllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMg
Zm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1
cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMg
Zm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRv
ckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBV
dGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yKTsKK30KKworVEVT
VChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUR1cGxpY2F0ZUNyZWRlbnRpYWwpCit7CisgICAg
cmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3Vy
ZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9z
ZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhw
ZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9z
ZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9j
YWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1Jl
Y3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIEFT
U0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIs
IHRlc3RVc2VyaGFuZGxlQmFzZTY0KSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3
ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFEdXBsaWNhdGVDcmVkZW50aWFsKTsKKyAgICBj
bGVhblVwS2V5Y2hhaW4oIiIpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExB
Tm9DcmVkZW50aWFsKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0
VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNvbmZpZ3VyYXRp
b24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQ
bHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJl
SlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3Nl
dEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25FeHBl
cmltZW50YWxGZWF0dXJlKCldOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3Nl
dEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25Mb2Nh
bEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVj
dCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdl
dCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0Ny
ZWRlbnRpYWwpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRl
bnRpYWxOdWxsRGVsZWdhdGUpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+
IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1
dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25m
aWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldp
dGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNv
bmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0
aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0
aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
WmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBbZGVsZWdhdGUgc2V0SXNOdWxsOnRydWVdOworICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgW3dlYlZp
ZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CisgICAgY2xlYW5VcEtleWNoYWluKCIi
KTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVkZW50aWFsKQor
eworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtbGEiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFt
ZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5n
OllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMg
Zm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1
cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMg
Zm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRv
ckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBV
dGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyKTsKKyAgICBjaGVja1Bh
bmVsKFtkZWxlZ2F0ZSBwYW5lbF0sIEAiIiwgQFthZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGlu
aXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCXSkuZ2V0KCksIGFkb3B0
TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFu
c3BvcnRJbnRlcm5hbF0pLmdldCgpXSwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlQ3JlYXRlKTsK
KyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKK30KKworVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUdldEFzc2VydGlvbikKK3sKKyAgICByZXNldCgpOwor
ICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYSIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rl
c3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJ
bldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0
dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0
dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVy
ZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5l
bFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKKworICAgIEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVT
MjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIsIHRlc3RVc2VyaGFuZGxlQmFzZTY0KSk7CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdl
dCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlcik7
CisgICAgY2hlY2tQYW5lbChbZGVsZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRvcHROUyhbW05TTnVt
YmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQl0p
LmdldCgpLCBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhl
bnRpY2F0aW9uVHJhbnNwb3J0SW50ZXJuYWxdKS5nZXQoKV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9u
VHlwZUdldCk7CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07Cisg
ICAgY2xlYW5VcEtleWNoYWluKCIiKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24tbGEuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmEzYzViYTQ0
YjAyZmIxMDUyOWQwMTRkZjVkZTY0MjhkNDk4MGJmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi1sYS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
aW5wdXQiPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7
IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9
KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3Vz
KCk7IH0pOworICAgIH0KKworICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAg
ICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgIC8vIGNv
bnNvbGUubG9nKCJTdWNjZWVkZWQhIik7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhh
bmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJTdWNjZWVkZWQhIik7CisgICAgfSwgZXJy
b3IgPT4geworICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnJvci5tZXNzYWdlKTsKKyAgICAgICAg
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZXJy
b3IubWVzc2FnZSk7CisgICAgfSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1
cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFhNTk2NTA2YTUzNGIyNWYwYmM2
NTg4OTYxYmUzZGRlYjQ0YjQxYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzxpbnB1dCB0eXBl
PSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBjb25zdCB0ZXN0Q3JlZGVudGlhbElk
SGV4ID0gIjQ4QzQ5NzFFNzgwNUVFMTEwRUIwNDk0MEVGNzBCNzQ1OEZCQzZEMUUiOworICAgIGZ1
bmN0aW9uIGhleFN0cmluZ1RvVWludDhBcnJheShoZXhTdHJpbmcpCisgICAgeworICAgICAgICBp
ZiAoaGV4U3RyaW5nLmxlbmd0aCAlIDIgIT0gMCkKKyAgICAgICAgICAgIHRocm93ICJJbnZhbGlk
IGhleFN0cmluZyI7CisgICAgICAgIHZhciBhcnJheUJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KGhl
eFN0cmluZy5sZW5ndGggLyAyKTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhleFN0
cmluZy5sZW5ndGg7IGkgKz0gMikgeworICAgICAgICAgICAgdmFyIGJ5dGVWYWx1ZSA9IHBhcnNl
SW50KGhleFN0cmluZy5zdWJzdHIoaSwgMiksIDE2KTsKKyAgICAgICAgICAgIGlmIChieXRlVmFs
dWUgPT0gTmFOKQorICAgICAgICAgICAgICAgIHRocm93ICJJbnZhbGlkIGhleFN0cmluZyI7Cisg
ICAgICAgICAgICBhcnJheUJ1ZmZlcltpLzJdID0gYnl0ZVZhbHVlOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIH0KKworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRl
c3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgo
KSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOworICAgIH0KKworICAgIGNvbnN0IG9wdGlvbnMgPSB7
CisgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAg
ICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB1c2VyOiB7
CisgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAg
ICBpZDogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAi
QXBwbGVzZWVkIiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBV
aW50OEFycmF5KDE2KSwKKyAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJw
dWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczog
W3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogaGV4U3RyaW5nVG9VaW50OEFycmF5KHRlc3RDcmVk
ZW50aWFsSWRIZXgpIH1dLAorICAgICAgICAgICAgdGltZW91dDogMTAwLAorICAgICAgICB9Cisg
ICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyk7Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
d2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1j
cmVkZW50aWFsLWxhLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYxNjEyMWJhNGNhMmRiNTMzZGZl
NWQyYmYwMzMwNGNkYTUyNDYyZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS1lcnJvci5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5w
dXQiPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFj
Y2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7
CisgICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1cygp
OyB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6
IHsKKyAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIs
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgIG5h
bWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgaWQ6IG5ldyBVaW50OEFycmF5
KDE2KSwKKyAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCisgICAg
ICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTM1
IH0sIHsgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC0yNTcgfV0sIC8vIEVTMzg0LCBSUzI1Ngor
ICAgICAgICAgICAgdGltZW91dDogMTAwLAorICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9u
LW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTI3ZTI1Y2EyZGEyYmVkNGQ4OWE4MGIwMjdiNmEwOTU2MGFiMmM1NgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzxpbnB1
dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBjb25zdCB0ZXN0RVMyNTZQ
cml2YXRlS2V5QmFzZTY0ID0KKyAgICAgICAgIkJEai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFh
SXBnRnBzakYvUW0xNzQ5VkJKUGdxVUl3ZmhXSEo5MW5iN1UiICsKKyAgICAgICAgIlBINzZjMCtX
Rk96WktzbFB5eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVuZm5CZ0VWRmg1emV2Ky94cEhRSXZ1cTYi
ICsKKyAgICAgICAgIlJRPT0iOworICAgIGNvbnN0IHRlc3RBdHRlc3RhdGlvbkNlcnRpZmljYXRl
QmFzZTY0ID0KKyAgICAgICAgIk1JSUI2akNDQVpDZ0F3SUJBZ0lHQVdIQXhjanZNQW9HQ0NxR1NN
NDlCQU1DTUZNeEp6QWxCZ05WQkFNTUhrSmgiICsKKyAgICAgICAgImMybGpJRUYwZEdWemRHRjBh
Vzl1SUZWelpYSWdVM1ZpSUVOQk1URVRNQkVHQTFVRUNnd0tRWEJ3YkdVZ1NXNWoiICsKKyAgICAg
ICAgIkxqRVRNQkVHQTFVRUNBd0tRMkZzYVdadmNtNXBZVEFlRncweE9EQXlNak13TXpNM01qSmFG
dzB4T0RBeU1qUXciICsKKyAgICAgICAgIk16UTNNakphTUdveElqQWdCZ05WQkFNTUdUQXdNREE0
TURFd0xUQXdNRUUwT1VFeU16QkJNREl4TTBFeEdqQVkiICsKKyAgICAgICAgIkJnTlZCQXNNRVVK
QlFTQkRaWEowYVdacFkyRjBhVzl1TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1STXciICsK
KyAgICAgICAgIkVRWURWUVFJREFwRFlXeHBabTl5Ym1saE1Ga3dFd1lIS29aSXpqMENBUVlJS29a
SXpqMERBUWNEUWdBRXZDamUiICsKKyAgICAgICAgIlB6cjZTZzc2WE1vSHVHYWJQYUc2empwTEZM
OFpkOC83NEhoNVBjTDJacStvK2Y3RU5YWCs3bkVYWFl0MFM4VXgiICsKKyAgICAgICAgIjVUSVJ3
NGhnYmZ4WFFiV0xFcU01TURjd0RBWURWUjBUQVFIL0JBSXdBREFPQmdOVkhROEJBZjhFQkFNQ0JQ
QXciICsKKyAgICAgICAgIkZ3WUpLb1pJaHZkalpBZ0NCQW93Q0tFR0JBUjBaWE4wTUFvR0NDcUdT
TTQ5QkFNQ0EwZ0FNRVVDSUFsSzhBOEkiICsKKyAgICAgICAgIms0M1Ridkt1WUdIWnMxRFRncFR3
bUtUQnZJVXc1YndnWnVZbkFpRUF0dUpqRExLYkdOSkFKRk1pNWRlRUJxbm8iICsKKyAgICAgICAg
InBCVENxYmZiREpjY2Z5UXBqblk9IjsKKyAgICBjb25zdCB0ZXN0QXR0ZXN0YXRpb25Jc3N1aW5n
Q0FDZXJ0aWZpY2F0ZUJhc2U2NCA9CisgICAgICAgICJNSUlDSXpDQ0FhaWdBd0lCQWdJSWVOamhH
OXRuREdnd0NnWUlLb1pJemowRUF3SXdVekVuTUNVR0ExVUVBd3dlIiArCisgICAgICAgICJRbUZ6
YVdNZ1FYUjBaWE4wWVhScGIyNGdWWE5sY2lCU2IyOTBJRU5CTVJNd0VRWURWUVFLREFwQmNIQnNa
U0JKIiArCisgICAgICAgICJibU11TVJNd0VRWURWUVFJREFwRFlXeHBabTl5Ym1saE1CNFhEVEUz
TURReU1EQXdOREl3TUZvWERUTXlNRE15IiArCisgICAgICAgICJNakF3TURBd01Gb3dVekVuTUNV
R0ExVUVBd3dlUW1GemFXTWdRWFIwWlhOMFlYUnBiMjRnVlhObGNpQlRkV0lnIiArCisgICAgICAg
ICJRMEV4TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1STXdFUVlEVlFRSURBcERZV3hwWm05
eWJtbGhNRmt3IiArCisgICAgICAgICJFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW9T
Wi8xdDllQkFFVnA1YThQclhhY21iR2I4ek5DMVgzIiArCisgICAgICAgICJTdExJOVlPNlkwQ0w3
YmxIbVNHbWpHV1R3RDRRK2kwSjJCWTMrYlBIVEdSeUE5akdCM01TYmFObU1HUXdFZ1lEIiArCisg
ICAgICAgICJWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZCZ05WSFNNRUdEQVdnQlNENWFNaG5yQjB3
L2xoa1AyWFRpTVFkcVNqIiArCisgICAgICAgICI4akFkQmdOVkhRNEVGZ1FVNW1XZjFEWUxUWFVk
UTl4bU9IL3VxZU5TRDgwd0RnWURWUjBQQVFIL0JBUURBZ0VHIiArCisgICAgICAgICJNQW9HQ0Nx
R1NNNDlCQU1DQTJrQU1HWUNNUUMzTTM2MExMdEpTNjBaOXEzdlZqSnhNZ01jRlExcm9HVFVjS3F2
IiArCisgICAgICAgICJXKzRoSjRDZUpqeVNYVGdxNklFSG4veVdhYjRDTVFDbTVObks2U09TSytB
cVd1bTlsTDg3VzNFNkFBMWYyVHZKIiArCisgICAgICAgICIvaGdvay8zNGpyOTNuaFM4N3RPUU5k
eERTOHp5aXF3PSI7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJu
YWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAgICAgICAg
bG9jYWw6IHsKKyAgICAgICAgICAgICAgICBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICBw
cml2YXRlS2V5QmFzZTY0OiB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0LAorICAgICAgICAgICAg
ICAgIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0dGVzdGF0aW9uQ2VydGlmaWNhdGVCYXNl
NjQsCisgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDogdGVz
dEF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQgfX0pOworICAgICAgICBpbnRl
cm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisgICAgfQor
CisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAg
ICBycDogeworICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBs
ZXNlZWQiLAorICAgICAgICAgICAgICAgIGlkOiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAg
ICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgcHViS2V5
Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAg
ICAgdGltZW91dDogMTAwLAorICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgLy8g
Y29uc29sZS5sb2coIlN1Y2NlZWRlZCEiKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdl
SGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEiKTsKKyAgICB9LCBl
cnJvciA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpOworICAgICAg
ICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShl
cnJvci5tZXNzYWdlKTsKKyAgICB9KTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391476</attachid>
            <date>2020-02-22 21:44:46 -0800</date>
            <delta_ts>2020-02-22 21:59:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208087-20200222214445.patch</filename>
            <type>text/plain</type>
            <size>99211</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uMmNlMDBiNjNjNTRkNzc4NTMzYjVkYjY5YzgxYTE1
NWQwOGJmNzgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAyLTIxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmhhbmNlcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgdG8gYWNj
b21tb25kYXRlIHJlc3BvbnNlcworICAgICAgICByZXR1cm5lZCBmcm9tIHRoZSBwbGF0Zm9ybSBh
dXRoZW50aWNhdG9yLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRB
dXRoZW50aWNhdG9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGljYXRv
ckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGlzcGxheU5hbWUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpudW1iZXJPZkNyZWRlbnRp
YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZTo6YWNjZXNzQ29udHJvbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldFNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXREaXNwbGF5TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE51bWJlck9m
Q3JlZGVudGlhbHMpOgorCiAyMDIwLTAyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUgYWZ0
ZXIgcjI1NjgwOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1NjEwMmJjYzg4Y2FiN2IwNjhiNGY0ZTJiNTk5MmYwNzdk
ZDRiZTMwLi40ZTUxMGI0MDJjMzU2MGQwYTdhMzdiNzc1NDhjOWMyMzc4YTdmODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0wMi0yMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSBmb3IgdGhlIHBs
YXRmb3JtIGF1dGhlbnRpY2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODA4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNjkzMDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGVyZSBpcyB0
aGUgbmV3bHkgYWRkZWQgU1BJOgorICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CisgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yLAorICAgICAgICAg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCwK
KyAgICAgICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlh
bCwKKyAgICAgICAgfTsKKworICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tX
ZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydCkgeworICAgICAgICAgICAgLi4uCisgICAgICAgICAg
ICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAorICAgICAgICB9OworCisg
ICAgICAgIEBwcm90b2NvbCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2Jq
ZWN0PgorICAgICAgICBAb3B0aW9uYWwKKyAgICAgICAgLi4uCisgICAgICAgIC0gKHZvaWQpcGFu
ZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2VyV2l0aEFjY2Vz
c0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBA
ZW5kCisKKyAgICAgICAgSWxsdXN0cmF0aW9uczoKKyAgICAgICAgMSkgX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbFVwZGF0ZTogdGhyZWUgZXJyb3IgYXJlIGFkZGVkIHRvIGhlbHAgY2xpZW50cyB0
byBpbmZvcm0gdXNlcnMuCisgICAgICAgIGEpIFdLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBRXJyb3I6IEFuIGludGVybmFsIGVycm9yLCBjbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMg
YW5kIHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0KKyAgICAgICAgYXV0aGVudGljYXRpb24gcHJvY2Vz
cy4gVGhpcyBlcnJvciBjYW4gYmUgcmV0dXJuZWQgYXQgYW55IHRpbWUuCisgICAgICAgIGIpIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw6IEl0IG1l
YW5zIGEgY3JlZGVudGlhbCBpcyBmb3VuZCB0byBtYXRjaCBhbiBlbnRyeSBpbiB0aGUKKyAgICAg
ICAgZXhjbHVkZUxpc3QuIENsaWVudHMgc2hvdWxkIGluZm9ybSB1c2VycyBhbmQgdGVybWluYXRl
IHRoZSBwbGF0Zm9ybSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLiBUaGlzIGVycm9yIHdpbGwgb25s
eSBiZQorICAgICAgICByZXR1cm5lZCBkdXJpbmcgbWFrZUNyZWRlbnRpYWwgYW5kIGJlZm9yZSB2
ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2wgZGVsZWdhdGUuCisgICAgICAgIGMpIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlhbDogSXQgbWVhbnMgbm8gY3JlZGVu
dGlhbHMgYXJlIGZvdW5kLiBDbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMgYW5kCisgICAgICAg
IHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRpb24gcHJvY2Vzcy4gVGhpcyBlcnJv
ciB3aWxsIG9ubHkgYmUgcmV0dXJuZWQgZHVyaW5nIGdldEFzc2VydGlvbiBhbmQgYmVmb3JlCisg
ICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbCBkZWxlZ2F0ZS4KKworICAgICAgICAy
KSBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydDogX1dLV2ViQXV0aGVudGljYXRpb25UcmFu
c3BvcnRJbnRlcm5hbCBpcyBhZGRlZCBzdWNoIHRoYXQgY2xpZW50cyBjYW4gbGVhcm4gcGxhdGZv
cm0KKyAgICAgICAgYXV0aGVudGljYXRvciB3aWxsIGJlIHVzZWQgZnJvbSBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLnRyYW5zcG9ydHMuCisKKyAgICAgICAgMykgdmVyaWZ5VXNlcldpdGhBY2Nl
c3NDb250cm9sOiBBIGRlbGVnYXRlIHRoYXQgd2lsbCBiZSBjYWxsZWQgZHVyaW5nIG1ha2VDcmVk
ZW50aWFsIG9yIGdldEFzc2VydGlvbiB3aGVuIHRoZSBwbGF0Zm9ybQorICAgICAgICBhdXRoZW50
aWNhdG9yIGlzIGludm9sdmVkLiBUaGlzIGRlbGVnYXRlIGlzIHVzZWQgdG8gb2J0YWluIHVzZXIg
dmVyaWZpY2F0aW9uIGZyb20gYSBMQUNvbnRleHQuIEluIGFkZGl0aW9uLCB0aGUgTEFDb250ZXh0
CisgICAgICAgIHNob3VsZCBldmFsdWF0ZSB0aGUgcGFzc2VkIGFjY2Vzc0NvbnRyb2wsIHN1Y2gg
dGhhdCB0aGUgU0VQIHByb3RlY3RlZCBjcmVkZW50aWFsIHByaXZhdGUga2V5IGNhbiBiZSB1c2Vk
LiBBIHR5cGljYWwKKyAgICAgICAgZXhhbXBsZSB3aWxsIGJlIFtMQUNvbnRleHQgZXZhbHVhdGVB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJh
dGlvblVzZUtleVNpZ24gbG9jYWxpemVkUmVhc29uOnJlcGx5Ol0uCisgICAgICAgIE5vdGVkLCBm
b3IgZ2V0QXNzZXJ0aW9uLCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZSB3aWxsIGJlIGNhbGxlZCBi
ZWZvcmUgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sLiBTbyB1c2VycyBuZWVkIHRvIGJlCisg
ICAgICAgIHByb21wdGVkIHRvIHNlbGVjdCBhIGNyZWRlbnRpYWwgYmVmb3JlIHRoZSB1c2VyIHZl
cmlmaWNhdGlvbi4KKworICAgICAgICBJbiB0aGUgc2NlbmFyaW8gd2hlbiBib3RoIHRoZSBwbGF0
Zm9ybSBhdXRoZW50aWNhdG9yIGFuZCBleHRlcm5hbCBhdXRoZW50aWNhdG9ycyBhcmUgcmVxdWVz
dGVkLiBDbGllbnRzIGFyZSBhZHZpc2VkIHRvCisgICAgICAgIHdhaXQgdW50aWwgdmVyaWZ5VXNl
cldpdGhBY2Nlc3NDb250cm9sIHRvIHNob3cgdGhlIGNvbWJpbmVkIFVJLiBJZiBhbnkgb2YgdGhl
IExBRXJyb3IgaXMgcmVjZWl2ZWQgYmVmb3JlCisgICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNz
Q29udHJvbCwgY2xpZW50cyBjYW4gdGhlbiBvbmx5IHNob3cgdGhlIGV4dGVybmFsIGF1dGhlbnRp
Y2F0b3IgVUkuIEFsc28sIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IgYW5kCisgICAgICAgIGV4dGVy
bmFsIGF1dGhlbnRpY2F0b3JzIGFyZSBiZWluZyBkaXNjb3ZlcmVkIGF0IHRoZSBzYW1lIHRpbWUs
IHdoaWNoIG1lYW5zLCBhIHVzZXIgY2FuIHBsdWcgaW4gYSBzZWN1cml0eSBrZXkgYXQgYW55dGlt
ZS4KKyAgICAgICAgSWYgYSB2YWxpZCByZXNwb25zZSBpcyByZWNlaXZlZCBmcm9tIHRoZSBzZWN1
cml0eSBrZXksIHRoZSB3aG9sZSBjZXJlbW9ueSB3aWxsIGJlIHRlcm1pbmF0ZWQuCisKKyAgICAg
ICAgQmVzaWRlcyBpbnRyb2R1Y2luZyB0aGUgU1BJLCBhbmQgYWxsIHRoZSBwbHVtYmluZ3MgdG8g
bWFrZSBpdCBoYXBwZW4uIFRoaXMgcGF0Y2ggYWxzbzoKKyAgICAgICAgMSkgYWRkcyBMb2NhbEF1
dGhlbnRpY2F0aW9uU1BJLCB3aGljaCBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBM
QUNvbnRleHQgaXMgdW5sb2NrZWQgb3Igbm90OworICAgICAgICAyKSBpbXByb3ZlcyBNb2NrTG9j
YWxDb25uZWN0aW9uIHN1Y2ggdGhhdCBtb2NrIHRlc3RpbmcgY2FuIHN0aWxsIGJlIHJhbi4KKwor
ICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHA6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06Cisg
ICAgICAgICh3a1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b05TRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TG9j
YWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZCk6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyQXR0ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6
OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2Vu
dGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6Zmls
dGVyUmVzcG9uc2VzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5l
Y3Rpb246OmlzVW5sb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rp
b246OmdldFVzZXJDb25zZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9j
YWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6d2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdl
YktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmZpbHRlclJlc3BvbnNlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3Jl
ZGVudGlhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQg
aGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZS5jcHAKaW5kZXggNWQzMDJmOGI4ZmMzNWRhMWU2Yzk0NmUxMTIxOTY3ZDYyZTAwYTQ5OS4u
NDVlYTFlNWZhNGI0YTZiOGY0MTQ2ODAwZmU5NjE1ZDRhNTJkOGNhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0
ZShSZWY8QQogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAotUmVmPEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50
aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8
dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRh
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB1c2VySGFuZGxlKQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlcmhhbmRsZUJ1ZmZl
cjsKICAgICBpZiAoIXVzZXJIYW5kbGUuaXNFbXB0eSgpKQpAQCAtNDgsNiArNDgsMTYgQEAgUmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVh
dGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhl
bnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZm
ZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1
c2VyaGFuZGxlQnVmZmVyKSwgV1RGOjpudWxsb3B0KTsKIH0KIAorUmVmPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUo
UmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwg
U2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RG
TW92ZSh1c2VySGFuZGxlKSwgYWNjZXNzQ29udHJvbCkpOworfQorCit2b2lkIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6c2V0QXV0aGVudGljYXRvckRhdGEoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSkKK3sKKyAgICBtX2F1dGhlbnRpY2F0b3JEYXRhID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0
b3JEYXRhLnNpemUoKSk7Cit9CisKIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2ln
bmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSkKICAgICA6IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKICAgICAsIG1fYXV0aGVudGljYXRvckRhdGEo
V1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCkBAIC01Niw2ICs2NiwxMyBAQCBBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8
QXJyYXlCdWZmZXI+JgogewogfQogCitBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJl
ZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2wpCisgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCkpCisgICAg
LCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKKyAgICAsIG1fYWNjZXNzQ29udHJv
bChhY2Nlc3NDb250cm9sKQoreworfQorCiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byBkYXRh
ID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjpkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaAppbmRleCBkNzBhOWNjZjhmMzkxYjBkZDYyYzJhMTE0ZTExNTJmOWY2YzBkNmEyLi4x
MWQ1NDYyODg5NzNiM2IzMTRkYWUxMGNhZGE5Mjc4MTVmZjA5OTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmgKQEAgLTI4LDYgKzI4LDggQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSwzMiArMzcsMzggQEAgY2xhc3MgQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0
ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNh
dG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIHVzZXJIYW5kbGUsIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91
dHB1dHM+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
PiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNl
ckhhbmRsZSwgU2VjQWNjZXNzQ29udHJvbFJlZik7CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCi0gICAgQXJyYXlCdWZmZXIqIGF1dGhl
bnRpY2F0b3JEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5wdHIoKTsg
fQotICAgIEFycmF5QnVmZmVyKiBzaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBtX3NpZ25hdHVy
ZS5wdHIoKTsgfQorICAgIEFycmF5QnVmZmVyKiBhdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXV0aGVudGljYXRvckRhdGEuZ2V0KCk7IH0KKyAgICBBcnJheUJ1ZmZlciogc2ln
bmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmUuZ2V0KCk7IH0KICAgICBBcnJheUJ1
ZmZlciogdXNlckhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckhhbmRsZS5nZXQoKTsgfQor
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlOYW1lOyB9
CisgICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX251bWJl
ck9mQ3JlZGVudGlhbHM7IH0KKyAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wo
KSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc0NvbnRyb2wuZ2V0KCk7IH0KIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0QXV0aGVudGljYXRvckRhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7
CisgICAgdm9pZCBzZXRTaWduYXR1cmUoUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSkgeyBt
X3NpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKTsgfQogICAgIHZvaWQgc2V0TmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQotICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZvaWQgc2V0RGlzcGxheU5hbWUoY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSkgeyBtX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7IH0K
LSAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
TmFtZTsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZDcmVkZW50aWFscyhzaXplX3QgbnVtYmVyT2ZD
cmVkZW50aWFscykgeyBtX251bWJlck9mQ3JlZGVudGlhbHMgPSBudW1iZXJPZkNyZWRlbnRpYWxz
OyB9Ci0gICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX251
bWJlck9mQ3JlZGVudGlhbHM7IH0KIAogcHJpdmF0ZToKICAgICBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxB
cnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKKyAgICBBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYs
IFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gVHlwZTo6QXNzZXJ0aW9uOyB9CiAgICAgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBk
YXRhKCkgY29uc3QgZmluYWw7CiAKLSAgICBSZWY8QXJyYXlCdWZmZXI+IG1fYXV0aGVudGljYXRv
ckRhdGE7Ci0gICAgUmVmPEFycmF5QnVmZmVyPiBtX3NpZ25hdHVyZTsKKyAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG1fYXV0aGVudGljYXRvckRhdGE7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBt
X3NpZ25hdHVyZTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fdXNlckhhbmRsZTsKIAogICAg
IFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZGlzcGxheU5hbWU7CiAgICAgc2l6ZV90IG1f
bnVtYmVyT2ZDcmVkZW50aWFscyB7IDAgfTsKKyAgICBSZXRhaW5QdHI8U2VjQWNjZXNzQ29udHJv
bFJlZj4gbV9hY2Nlc3NDb250cm9sOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50aWNh
dGlvblNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50
aWNhdGlvblNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3YTBmNmQwM2YwY2EyNWM3ZTMwNjEyNTU2NDk1N2Y2
MTBhOGFhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9D
b2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxMb2NhbEF1dGhlbnRpY2F0aW9uL0xvY2FsQXV0
aGVudGljYXRpb24uaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQg
PExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxBdXRoZW50aWNhdGlvbl9Qcml2YXRlLmg+CisKKyNl
bHNlCisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIExBT3B0aW9uKSB7CisgICAgTEFPcHRp
b25Ob3RJbnRlcmFjdGl2ZSwKK307CisKK0BpbnRlcmZhY2UgTEFDb250ZXh0KFByaXZhdGUpIDxO
U1NlY3VyZUNvZGluZz4KKworLSAoTlNEaWN0aW9uYXJ5ICopZXZhbHVhdGVQb2xpY3k6KExBUG9s
aWN5KXBvbGljeSBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zIGVycm9yOihOU0Vycm9y
ICoqKWVycm9yOworCitAZW5kCisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuY3BwCmluZGV4IDBjZGRiY2Y0OTc2MzM5ODI0NzU5ZmVlMWEwNTVhZjU2YWI1
ZjRkNTUuLmU1Y2I0NzM4NjliZjE3ZjQwMzBkODNmZWZkYjQ4ZGM0MmEyMzk2NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRp
b25QYW5lbC5jcHAKQEAgLTUzLDYgKzUzLDggQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbDo6V2Vi
QXV0aGVudGljYXRpb25QYW5lbChjb25zdCBBdXRoZW50aWNhdG9yTWFuYWdlciYgbWFuYWcKICAg
ICAgICAgbV90cmFuc3BvcnRzLnVuY2hlY2tlZEFwcGVuZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpVc2IpOwogICAgIGlmICh0cmFuc3BvcnRzLmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ6Ok5mYykpCiAgICAgICAgIG1fdHJhbnNwb3J0cy51bmNoZWNrZWRBcHBlbmQoQXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6TmZjKTsKKyAgICBpZiAodHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkpCisgICAgICAgIG1fdHJhbnNwb3J0cy51bmNoZWNr
ZWRBcHBlbmQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpOwogfQogCiBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsOjp+V2ViQXV0aGVudGljYXRpb25QYW5lbCgpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IDQ1OTY0NGVlM2U2ZWI2NTFjMjkyZWYzZmI0OWIz
YjRhMjZhYzc2OTguLjhjMzY4NTMzZWEwYjIxNGYwMWJhN2NiZDlkZDViNTljYTUyZTE0ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaApAQCAtMzAsOCArMzAsMTEgQEAKICNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQ
SS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitPQkpDX0NMQVNTIExBQ29u
dGV4dDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOwogfQpAQCAtNTIsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpc21pc3NQYW5lbChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KSBjb25zdCB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4mJiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0IHsgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsgY29tcGxldGlvbkhh
bmRsZXIocmVzcG9uc2VzWzBdKTsgfQorICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCmluZGV4IDQz
MWM2MzNiMGZlYjBiNTUyYTZiOWQxODdlYWQzZDZmYjViY2M4YzIuLmY3MmViMGFlYTNmNDQ1ZTE2
MTkwMTM5NDk0OTM1NzIxOGJjZjQ4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaApAQCAt
MzEsNiArMzEsNyBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xhc3MgTEFDb250
ZXh0OwogQGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xh
c3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIApAQCAtNDYsNiArNDcsOSBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CiAg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkJsb2NrZWQsCiAgICAgX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkF1dGhCbG9ja2VkLAogICAgIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVMQUVycm9yLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVM
QUR1cGxpY2F0ZUNyZWRlbnRpYWwsCisgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBTm9DcmVkZW50aWFsLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRo
ZW50aWNhdGlvblJlc3VsdCkgewpAQCAtNTYsNiArNjAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgewogdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnQpIHsKICAgICBfV0tXZWJBdXRo
ZW50aWNhdGlvblRyYW5zcG9ydFVTQiwKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9y
dE5GQywKKyAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAogfSBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKQEAgLTcx
LDYgKzc2LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRp
b25UeXBlKSB7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFu
ZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OihfV0tXZWJBdXRoZW50
aWNhdGlvblJlc3VsdClyZXN1bHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6KE5TVUludGVnZXIpcmV0
cmllcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2Vy
V2l0aEFjY2Vzc0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAyZWIzMWU4MTJjOTU5OGU4OTg4
NDBiOTU1OGNlMzMyZjJlZDY3OWZmLi4xOTczYjBmNTY0ZDI1MWIyMGNmMjZhMzZhM2E2NGQ4YTI1
MjgyMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNzMsNiArNzMsOCBAQCBz
dGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnQgd2tXZWJBdXRoZW50aWNhdGlvblRy
YW5zcG9ydChXZWJDb3JlOjpBdXRoZQogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRp
b25UcmFuc3BvcnRVU0I7CiAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpOZmM6CiAgICAgICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydE5GQzsK
KyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsOgorICAg
ICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRJbnRlcm5hbDsKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIF9X
S1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCmluZGV4IGQx
NmIxN2Q1ZmM2YmM3OTUyMTRiMjdlODI1N2ZkNmYwMGJkNGM3ZTUuLjkxZDk5ZWQ1MmI2ZGIxZGVm
YWIxNTk2MjQzMTA2NzlmM2NhZDY3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKQEAgLTM0LDYgKzM0
LDkgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmg+CisKK09CSkNfQ0xBU1MgTEFDb250ZXh0OwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7CkBAIC01Myw2ICs1Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRh
dGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V1RGOjpTdHJpbmcmKT4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoTEFDb250ZXh0ICopPiYmKSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRp
Y2F0b3IoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5k
ZXggNzM2MjZjYzA1MDI3YWU2ZTIxYjI4MTQzYmM4MDA5YjkyYjFhNzViNC4uODg1OTcxZjE4YjQy
MWM2YjBhNjg0YWNhODk2MjNlY2MzMjExNjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmNwcApAQCAtMjk1LDYgKzI5NSwxNCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShjb25zdCBIYXNoU2V0PFJlZjxBdXRoZW50aWNhdAog
ICAgIH0pOwogfQogCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChM
QUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmV0YWluUHRyPFNlY0Fj
Y2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2wgPSBhY2Nlc3NDb250cm9sUmVmOworICAgIGRp
c3BhdGNoUGFuZWxDbGllbnRDYWxsKFthY2Nlc3NDb250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250
cm9sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNv
bnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYgcGFuZWwpIG11dGFibGUgeworICAgICAg
ICBwYW5lbC5jbGllbnQoKS52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwogVW5pcXVlUmVmPEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlU2VydmljZShB
dXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNl
cnZpY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikgY29uc3QKIHsKICAgICByZXR1cm4gQXV0aGVudGlj
YXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZSh0cmFuc3BvcnQsIG9ic2VydmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IGMxNTFkZDkzMjY1OWY2MjA2YzBmMTVmYmVh
MWU1YzA1NGExYTBmOWUuLmU4ZjJkMmJmZDgwYzEwY2FhY2Y4MzA1ZDQ3M2Q1YmQzZjhhZWFmYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaApAQCAtODMsNiArODMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgYXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRp
b25TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAg
IHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGZpbmFsOwogCiAgICAgLy8gT3ZlcnJpZGVuIGJ5
IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci4KICAgICB2aXJ0dWFsIFVuaXF1ZVJlZjxBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gY3JlYXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNh
dG9yVHJhbnNwb3J0LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRM
aW5rLmgKaW5kZXggMTU1MmIyNzM5MDNhYTY0ODJhMzkzYjhkMzg3OWEwM2Y0OGU2NTVhMi4uZTg0
OTEwMjk1YmYzYTI1YTRiYzA2ZTM1MWRiM2QxNGZiN2ZjZmI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNh
dGlvblNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbXBvcnQgPExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxB
dXRoZW50aWNhdGlvbi5oPgorI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIgogI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURF
UihXZWJLaXQsIExvY2FsQXV0aGVudGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IuaAppbmRleCBkZWQ5OGYyZDc2YWM0ZGU5NTFhNTg5NDBiMzZkMmI2ZTc0YWY0
NGM3Li45YTQ3NTcwZmU3MGIzYjcyNDhjY2UxMDUzMTRlNTBiOGNjOTAwZGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAtMzksMTIgKzM5LDEzIEBAIGNsYXNz
IExvY2FsQXV0aGVudGljYXRvciBmaW5hbCA6IHB1YmxpYyBBdXRoZW50aWNhdG9yIHsKIHB1Ymxp
YzoKICAgICAvLyBIZXJlIGlzIHRoZSBGU00uCiAgICAgLy8gTWFrZUNyZWRlbnRpYWw6IEluaXQg
PT4gUmVxdWVzdFJlY2VpdmVkID0+IFVzZXJDb25zZW50ZWQgPT4gQXR0ZXN0ZWQgPT4gRW5kCi0g
ICAgLy8gR2V0QXNzZXJ0aW9uOiBJbml0ID0+IFJlcXVlc3RSZWNlaXZlZCA9PiBVc2VyQ29uc2Vu
dGVkID0+IEVuZAorICAgIC8vIEdldEFzc2VydGlvbjogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQg
PT4gUmVzcG9uc2VTZWxlY3RlZCA9PiBVc2VyQ29uc2VudGVkID0+IEVuZAogICAgIGVudW0gY2xh
c3MgU3RhdGUgewogICAgICAgICBJbml0LAogICAgICAgICBSZXF1ZXN0UmVjZWl2ZWQsCiAgICAg
ICAgIFVzZXJDb25zZW50ZWQsCiAgICAgICAgIEF0dGVzdGVkLAorICAgICAgICBSZXNwb25zZVNl
bGVjdGVkCiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8TG9jYWxBdXRoZW50aWNhdG9yPiBjcmVh
dGUoVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQpAQCAtNTYsMTQgKzU3
LDE4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJl
ZjxMb2NhbENvbm5lY3Rpb24+JiYpOwogCiAgICAgdm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFs
OwotICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNB
Y2Nlc3NDb250cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50LCBMQUNvbnRleHQg
Kik7CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNl
Y0FjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqKTsKICAgICB2b2lkIGNvbnRpbnVlTWFrZUNy
ZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiwgVmVjdG9yPHVpbnQ4X3Q+JiYgY3JlZGVu
dGlhbElkLCBWZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwgTlNBcnJheSAqY2VydGlmaWNhdGVz
LCBOU0Vycm9yICopOwogCiAgICAgdm9pZCBnZXRBc3NlcnRpb24oKSBmaW5hbDsKLSAgICB2b2lk
IGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6
VXNlckNvbnNlbnQsIExBQ29udGV4dCAqLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRp
YWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFuZGxlKTsKKyAgICB2b2lkIGNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVNlbGVjdGVkKFJlZjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworICAgIHZvaWQgY29udGludWVHZXRBc3NlcnRp
b25BZnRlclVzZXJDb25zZW50ZWQoTEFDb250ZXh0ICosIFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworCisgICAgdm9pZCByZWNlaXZlRXhjZXB0aW9uKFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmJiwgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgPSBXZWJBdXRo
ZW50aWNhdGlvblN0YXR1czo6TEFFcnJvcikgY29uc3Q7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsg
U3RhdGU6OkluaXQgfTsKICAgICBVbmlxdWVSZWY8TG9jYWxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b247CisgICAgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4gbV9hc3NlcnRpb25SZXNwb25zZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCAyNWRkMWM2YWU5
NjgxZjBlZjc4Y2RiMWYzZDRjNDFiYTRlNGJiNWRlLi43OGI3M2RlMWM1MGMxMTQ2N2ZjYWQ1ODFm
NzcxNDZhZmZhNDQ3NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9y
Lm1tCkBAIC04Niw2ICs4NiwxOCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRv
TlNEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKICAgICByZXR1cm4gYWRvcHROUyhb
W05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXpl
KCldKTsKIH0KIAorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNEYXRhPiB0b05TRGF0YShBcnJh
eUJ1ZmZlciogYnVmZmVyKQoreworICAgIEFTU0VSVChidWZmZXIpOworICAgIC8vIEZJWE1FKDE4
MzUzNCk6IENvbnNpZGVyIHVzaW5nIGluaXRXaXRoQnl0ZXNOb0NvcHkuCisgICAgcmV0dXJuIGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3Ro
OmJ1ZmZlci0+Ynl0ZUxlbmd0aCgpXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVm
ZmVyPiB0b0FycmF5QnVmZmVyKE5TRGF0YSAqZGF0YSkKK3sKKyAgICByZXR1cm4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwg
ZGF0YS5sZW5ndGgpOworfQorCiB9IC8vIExvY2FsQXV0aGVudGljYXRvckludGVybmFsCiAKIExv
Y2FsQXV0aGVudGljYXRvcjo6TG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbikKQEAgLTEwOCw3ICsxMjAsNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAgIGlmIChub3RGb3VuZCA9PSBjcmVhdGlvbk9w
dGlvbnMucHViS2V5Q3JlZFBhcmFtcy5maW5kTWF0Y2hpbmcoW10gKGF1dG8mIHB1YktleUNyZWRQ
YXJhbSkgewogICAgICAgICByZXR1cm4gcHViS2V5Q3JlZFBhcmFtLnR5cGUgPT0gUHVibGljS2V5
Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSAmJiBwdWJLZXlDcmVkUGFyYW0uYWxnID09IENPU0U6
OkVTMjU2OwogICAgIH0pKSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEg
eyBOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9y
IGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRl
cnMuIl9zIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55
IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiJfcyB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTMxLDI0ICsxNDMsMjIgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJh
eVJlZiA9IG51bGxwdHI7CiAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0
Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJl
Zik7CiAgICAgICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkg
ewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBz
dGF0dXMpOwotICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25v
d25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICIsIHN0YXR1cykg
fSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3Ry
aW5nKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9
IGFkb3B0Q0YoYXR0cmlidXRlc0FycmF5UmVmKTsKIAotICAgICAgICAvLyBGSVhNRShyZGFyOi8v
cHJvYmxlbS8zNTkwMDU5Myk6IE5lZWQgdG8gb2J0YWluIHVzZXIgY29uc2VudCBhbmQgdGhlbiBy
ZXR1cm4gZGlmZmVyZW50IGVycm9yIGFjY29yZGluZyB0byB0aGUgcmVzdWx0LgorICAgICAgICAv
LyBGSVhNRTogTmVlZCB0byBvYnRhaW4gdXNlciBjb25zZW50IGFuZCB0aGVuIHJldHVybiBkaWZm
ZXJlbnQgZXJyb3IgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQuCiAgICAgICAgIGZvciAoTlNEaWN0
aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgaW4gKE5TQXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlSZWYpIHsK
ICAgICAgICAgICAgIE5TRGF0YSAqbnNDcmVkZW50aWFsSWQgPSBuc0F0dHJpYnV0ZXNbKGlkKWtT
ZWNBdHRyQXBwbGljYXRpb25MYWJlbF07CiAgICAgICAgICAgICBpZiAoZXhjbHVkZUNyZWRlbnRp
YWxJZHMuY29udGFpbnMoU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5zQ3Jl
ZGVudGlhbElkLmJ5dGVzKSwgbnNDcmVkZW50aWFsSWQubGVuZ3RoKSkpIHsKLSAgICAgICAgICAg
ICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiQXQg
bGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRl
bnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0p
OworICAgICAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBOb3RBbGxvd2VkRXJyb3IsICJB
dCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3Jl
ZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3Mg
fSwgV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxBRHVwbGljYXRlQ3JlZGVudGlhbCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAg
ICAgLy8gU3RlcCA2LgotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTAwNTkzKTogVXBk
YXRlIHRvIGEgZm9ybWFsIFVJLgogICAgIC8vIEdldCB1c2VyIGNvbnNlbnQuCiAgICAgUmV0YWlu
UHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2w7CiAgICAgewpAQCAtMTU2LDI3
ICsxNjYsMjUgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAg
ICAgICAgYWNjZXNzQ29udHJvbCA9IGFkb3B0Q0YoU2VjQWNjZXNzQ29udHJvbENyZWF0ZVdpdGhG
bGFncyhOVUxMLCBrU2VjQXR0ckFjY2Vzc2libGVXaGVuUGFzc2NvZGVTZXRUaGlzRGV2aWNlT25s
eSwga1NlY0FjY2Vzc0NvbnRyb2xQcml2YXRlS2V5VXNhZ2UgfCBrU2VjQWNjZXNzQ29udHJvbFVz
ZXJQcmVzZW5jZSwgJmVycm9yUmVmKSk7CiAgICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9w
dENGKGVycm9yUmVmKTsKICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICBMT0df
RVJST1IoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogJUAiLCAoTlNFcnJvciAqKWVy
cm9yUmVmKTsKLSAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtu
b3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogIiwg
U3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7Cisg
ICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJD
b3VsZG4ndCBjcmVhdGUgYWNjZXNzIGNvbnRyb2w6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9y
UmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVm
ID0gYWNjZXNzQ29udHJvbC5nZXQoKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRy
b2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250
ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICgh
d2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0g
dGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2xSZWYgPSBhY2Nlc3NDb250cm9sLmdldCgpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0g
W2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0gKExBQ29udGV4dCAqY29udGV4dCkgeworICAgICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIGNvbnNlbnQsIGNvbnRl
eHQpOwotICAgIH07Ci0gICAgbV9jb25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKLSAgICAgICAg
bWFrZVN0cmluZygiYWxsb3cgIl9zLCBjcmVhdGlvbk9wdGlvbnMucnAuaWQsICIgdG8gY3JlYXRl
IGEgcHVibGljIGtleSBjcmVkZW50aWFsIGZvciAiX3MsIGNyZWF0aW9uT3B0aW9ucy51c2VyLm5h
bWUpLAotICAgICAgICBhY2Nlc3NDb250cm9sUmVmLAotICAgICAgICBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNl
ckNvbnNlbnRlZChhY2Nlc3NDb250cm9sLmdldCgpLCBjb250ZXh0KTsKKyAgICAgICAgfTsKKyAg
ICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIH0KIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFr
ZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3ND
b250cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4
dCAqY29udGV4dCkKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJl
ZiwgTEFDb250ZXh0ICpjb250ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhl
bnRpY2F0b3JJbnRlcm5hbDsKIApAQCAtMTg0LDcgKzE5Miw3IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vz
c0NvbnRyCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOwogICAgIGF1dG8mIGNy
ZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAKLSAgICBpZiAoY29uc2VudCA9PSBMb2NhbENv
bm5lY3Rpb246OlVzZXJDb25zZW50OjpObykgeworICAgIGlmICghbV9jb25uZWN0aW9uLT5pc1Vu
bG9ja2VkKGNvbnRleHQpKSB7CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEg
eyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJfcyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMyw4ICsyMjEsNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nl
c3NDb250cgogICAgIH07CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbURlbGV0ZSgoX19i
cmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKICAgICBpZiAoc3RhdHVzICYmIHN0
YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4n
dCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogJWQiLCBzdGF0dXMpOwotICAgICAgICByZWNlaXZl
UmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4n
dCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2
ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZGVsZXRlIG9s
ZGVyIGNyZWRlbnRpYWw6ICIsIHN0YXR1cykgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTIyMiw3ICsyMjksNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cgogICAgIC8vIFRoZSBh
Ym92ZS10by1jcmVhdGUgcHJpdmF0ZSBrZXkgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIGtleWNoYWlu
IHdoaWxlIHVzaW5nIFNFUC4KICAgICBhdXRvIHByaXZhdGVLZXkgPSBtX2Nvbm5lY3Rpb24tPmNy
ZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KGNvbnRleHQsIGFjY2Vzc0NvbnRyb2xSZWYsIHNlY0F0
dHJMYWJlbCwgc2VjQXR0ckFwcGxpY2F0aW9uVGFnLmdldCgpKTsKICAgICBpZiAoIXByaXZhdGVL
ZXkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJv
ciwgIkNvdWxkbid0IGNyZWF0ZSBwcml2YXRlIGtleS4iX3MgfSk7CisgICAgICAgIHJlY2VpdmVF
eGNlcHRpb24oeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNDMsOCArMjUwLDcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50
ZWQoU2VjQWNjZXNzQ29udHIKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNSZWYgPSBudWxs
cHRyOwogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpY3JlZGVudGlhbElkUXVlcnksICZhdHRyaWJ1dGVzUmVmKTsK
ICAgICAgICAgaWYgKHN0YXR1cykgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBn
ZXQgQ3JlZGVudGlhbCBJRDogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgcmVjZWl2ZVJlc3Bv
bmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0
IENyZWRlbnRpYWwgSUQ6ICIsIHN0YXR1cykgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0
aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZXQgQ3JlZGVudGlhbCBJ
RDogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBhdXRvIHJldGFpbkF0dHJpYnV0ZXMgPSBhZG9wdENGKGF0dHJpYnV0ZXNSZWYpOwpAQCAtMjY4
LDggKzI3NCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyCiAgICAgICAgICAgICBwdWJsaWNL
ZXlEYXRhUmVmID0gYWRvcHRDRihTZWNLZXlDb3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihwdWJs
aWNLZXkuZ2V0KCksICZlcnJvclJlZikpOwogICAgICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9
IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAg
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBleHBvcnQgdGhlIHB1YmxpYyBrZXk6ICVAIiwg
KE5TRXJyb3IqKWVycm9yUmVmKTsKLSAgICAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNl
cHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBleHBvcnQgdGhl
IHB1YmxpYyBrZXk6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNj
cmlwdGlvbikpIH0pOworICAgICAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGV4cG9ydCB0aGUgcHVibGljIGtleTogIiwgU3Ry
aW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKCgo
TlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQoKSkubGVuZ3RoID09ICgxICsgMiAqIEVTMjU2
RmllbGRFbGVtZW50TGVuZ3RoKSk7IC8vIDA0IHwgWCB8IFkKQEAgLTMwOSw4ICszMTQsNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0
ZWQoU2VjS2V5UmVmIHByaXZhdGVLZQogICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6
Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0
aW9ucyk7CiAKICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBh
dHRlc3Q6ICVAIiwgZXJyb3IpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRh
IHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9u
KHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIC8vIEF0dGVzdGF0aW9uIENlcnRpZmljYXRlIGFuZCBBdHRlc3RhdGlvbiBJc3N1aW5nIENB
CkBAIC0zNDQsMTAgKzM0OCw5IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRp
b24oKQogICAgIC8vIFNraXAgU3RlcCA4IGFzIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQg
eWV0LgogICAgIC8vIFN0ZXAgMTIgaXMgaW1wbGljaXRseSBjYXB0dXJlZCBieSBhbGwgVW5rbm93
bkVycm9yIGV4Y2VwdGlvbiBjYWxsYmFja3MuCiAgICAgLy8gU3RlcCAzLTUuIFVubGlrZSB0aGUg
c3BlYywgaWYgYW4gYWxsb3cgbGlzdCBpcyBwcm92aWRlZCBhbmQgdGhlcmUgaXMgbm8gaW50ZXJz
ZWN0aW9uIGJldHdlZW4gZXhpc3Rpbmcgb25lcyBhbmQgdGhlIGFsbG93IGxpc3QsIHdlIGFsd2F5
cyByZXR1cm4gTm90QWxsb3dlZEVycm9yLgotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1
OTAwNTkzKTogTmVlZCB0byBpbmZvcm0gdXNlcnMuCiAgICAgYXV0byBhbGxvd0NyZWRlbnRpYWxJ
ZHMgPSBwcm9kdWNlSGFzaFNldChyZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKTsKICAg
ICBpZiAoIXJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuaXNFbXB0eSgpICYmIGFsbG93
Q3JlZGVudGlhbElkcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZv
dW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAg
ICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVu
dGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJf
cyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0zNjcsOCArMzcwLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0
b3I6OmdldEFzc2VydGlvbigpCiAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51
bGxwdHI7CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKICAgICBpZiAo
c3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBzdGF0dXMpOwotICAgICAgICByZWNl
aXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3Vs
ZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2Vw
dGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46
ICIsIHN0YXR1cykgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byByZXRhaW5B
dHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CkBAIC0zODYsNDEg
KzM4OCw2MSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAg
ICAgaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMgPSByZXN1bHQ7CiAgICAgfQogICAg
IGlmICghaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMuY291bnQpIHsKLSAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNo
ZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50
aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJv
ciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRh
Y2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0Ny
ZWRlbnRpYWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gU3RlcCA2LgotICAg
IGF1dG8gKnNlbGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXMgPSBtX2Nvbm5lY3Rpb24tPnNlbGVj
dENyZWRlbnRpYWwoaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMpOworICAgIGZvciAo
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGUgOiBpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRl
cykgeworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFkZChB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSgKKyAgICAgICAgICAgIHRvQXJy
YXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwKKyAgICAg
ICAgICAgIHRvQXJyYXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFn
XSksCisgICAgICAgICAgICAoX19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVb
KGlkKWtTZWNBdHRyQWNjZXNzQ29udHJvbF0pKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICB9CisgICAgbV9jb25uZWN0aW9uLT5m
aWx0ZXJSZXNwb25zZXMobV9hc3NlcnRpb25SZXNwb25zZXMpOworCisgICAgaWYgKGF1dG8qIG9i
c2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBhdXRvIGNhbGxiYWNrID0gW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29uc3QgQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlJiByZXNwb25zZSkgeworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBhdXRvIHJldHVyblJlc3BvbnNlID0gbV9hc3NlcnRpb25S
ZXNwb25zZXMudGFrZShjb25zdF9jYXN0PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSo+
KCZyZXNwb25zZSkpOworICAgICAgICAgICAgaWYgKCFyZXR1cm5SZXNwb25zZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVz
cG9uc2VTZWxlY3RlZChXVEZNb3ZlKCpyZXR1cm5SZXNwb25zZSkpOworICAgICAgICB9OworICAg
ICAgICBvYnNlcnZlci0+c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UobV9hc3NlcnRpb25SZXNwb25z
ZXMsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9Cit9CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmIHJlc3BvbnNlKQoreworICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOworICAgIG1fc3RhdGUgPSBT
dGF0ZTo6UmVzcG9uc2VTZWxlY3RlZDsKIAogICAgIC8vIFN0ZXAgNy4gR2V0IHVzZXIgY29uc2Vu
dC4KLSAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTkwMDU5Myk6IFVwZGF0ZSB0byBhIGZv
cm1hbCBVSS4KLSAgICBhdXRvIGNhbGxiYWNrID0gWwotICAgICAgICB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwKLSAgICAgICAgY3JlZGVudGlhbElkID0gdG9WZWN0b3Ioc2VsZWN0ZWRD
cmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXSksCi0gICAg
ICAgIHVzZXJoYW5kbGUgPSB0b1ZlY3RvcihzZWxlY3RlZENyZWRlbnRpYWxBdHRyaWJ1dGVzWyhp
ZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSkKLSAgICBdKExvY2FsQ29ubmVjdGlvbjo6VXNlckNv
bnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAg
ICBhdXRvIGFjY2Vzc0NvbnRyb2xSZWYgPSByZXNwb25zZS0+YWNjZXNzQ29udHJvbCgpOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXNw
b25zZSA9IFdURk1vdmUocmVzcG9uc2UpXSAoTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB3ZWFrVGhpcy0+
Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoY29uc2VudCwgY29udGV4dCwg
Y3JlZGVudGlhbElkLCB1c2VyaGFuZGxlKTsKLSAgICB9OwotICAgIE5TRGF0YSAqaWREYXRhID0g
c2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ107
Ci0gICAgU3RyaW5nVmlldyBpZFN0cmluZ1ZpZXcgeyBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+
KFtpZERhdGEgYnl0ZXNdKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFtpZERhdGEgbGVuZ3RoXSkg
fTsKLSAgICBtX2Nvbm5lY3Rpb24tPmdldFVzZXJDb25zZW50KAotICAgICAgICBtYWtlU3RyaW5n
KCJsb2cgaW50byAiLCByZXF1ZXN0T3B0aW9ucy5ycElkLCAiIHdpdGggIiwgaWRTdHJpbmdWaWV3
KSwKLSAgICAgICAgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpc2VsZWN0ZWRDcmVkZW50
aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSwKLSAgICAgICAgV1RGTW92
ZShjYWxsYmFjaykpOworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlR2V0QXNzZXJ0aW9u
QWZ0ZXJVc2VyQ29uc2VudGVkKGNvbnRleHQsIFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICAgICAg
fTsKKyAgICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIH0KIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6VXNlckNv
bnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFuZGxlKQordm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVk
KExBQ29udGV4dCAqY29udGV4dCwgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4mJiByZXNwb25zZSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50
aWNhdG9ySW50ZXJuYWw7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNl
aXZlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlc3BvbnNlU2VsZWN0ZWQpOwog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKIAotICAgIGlmIChjb25zZW50ID09
IExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQ6Ok5vKSB7CisgICAgaWYgKCFtX2Nvbm5lY3Rp
b24tPmlzVW5sb2NrZWQoY29udGV4dCkpIHsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDMyLDI1ICs0NTQsMjcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVk
KExvY2FsQ29ubmVjdGlvbjoKICAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShXVEY6
OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0
aW9ucykucnBJZCwgZ2V0QXNzZXJ0aW9uRmxhZ3MsIGNvdW50ZXIsIHsgfSk7CiAKICAgICAvLyBT
dGVwIDExLgotICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmU7CisgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gc2lnbmF0dXJlOwogICAgIHsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICpxdWVyeSA9
IEB7CisgICAgICAgIGF1dG8gcXVlcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworICAgICAgICBbcXVlcnkgYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OkB7
CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAogICAgICAgICAg
ICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKLSAg
ICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRvTlNEYXRhKGNyZWRlbnRp
YWxJZCkuZ2V0KCksCi0gICAgICAgICAgICAoaWQpa1NlY1VzZUF1dGhlbnRpY2F0aW9uQ29udGV4
dDogY29udGV4dCwKKyAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRv
TlNEYXRhKHJlc3BvbnNlLT5yYXdJZCgpKS5nZXQoKSwKICAgICAgICAgICAgIChpZClrU2VjUmV0
dXJuUmVmOiBAWUVTLAogI2lmIEhBVkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQogICAgICAg
ICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCiAjZWxzZQogICAg
ICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICNlbmRpZgotICAgICAgICB9Owor
ICAgICAgICB9XTsKKyAgICAgICAgLy8gY29udGV4dCBpcyBudWxscHRyIGluIG1vY2sgdGVzdGlu
Zy4KKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICBbcXVlcnkgc2V0T2JqZWN0OmNv
bnRleHQgZm9yS2V5OihpZClrU2VjVXNlQXV0aGVudGljYXRpb25Db250ZXh0XTsKICAgICAgICAg
Q0ZUeXBlUmVmIHByaXZhdGVLZXlSZWYgPSBudWxscHRyOwotICAgICAgICBPU1N0YXR1cyBzdGF0
dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnks
ICZwcml2YXRlS2V5UmVmKTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlN
YXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LmdldCgpLCAmcHJpdmF0ZUtl
eVJlZik7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291
bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICVkIiwgc3RhdHVzKTsKLSAgICAg
ICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VT
dHJpbmcoIkNvdWxkbid0IGdldCB0aGUgcHJpdmF0ZSBrZXkgcmVmZXJlbmNlOiAiLCBzdGF0dXMp
IH0pOworICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0
cmluZygiQ291bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICIsIHN0YXR1cykg
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byBwcml2YXRl
S2V5ID0gYWRvcHRDRihwcml2YXRlS2V5UmVmKTsKQEAgLTQ2MCwxOCArNDg0LDI3IEBAIHZvaWQg
TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRl
ZChMb2NhbENvbm5lY3Rpb246CiAKICAgICAgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxw
dHI7CiAgICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0aW5nIENGVHlwZVJlZiB0byBTZWNLZXlSZWYg
aXMgcXVpdGUgc3VidGxlIGhlcmUuCi0gICAgICAgIGF1dG8gc2lnbmF0dXJlUmVmID0gYWRvcHRD
RihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJlZikoKGlkKXByaXZhdGVL
ZXlSZWYpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNzYWdlWDk2MlNIQTI1Niwg
KF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYpKTsKKyAgICAgICAgc2ln
bmF0dXJlID0gYWRvcHRDRihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJl
ZikoKGlkKXByaXZhdGVLZXlSZWYpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNz
YWdlWDk2MlNIQTI1NiwgKF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYp
KTsKICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAg
ICBpZiAoZXJyb3JSZWYpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2VuZXJh
dGUgdGhlIHNpZ25hdHVyZTogJUAiLCAoTlNFcnJvciopZXJyb3JSZWYpOwotICAgICAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygi
Q291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJy
b3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhj
ZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZW5lcmF0ZSB0aGUg
c2lnbmF0dXJlOiAiLCBTdHJpbmcoKChOU0Vycm9yKillcnJvclJlZikubG9jYWxpemVkRGVzY3Jp
cHRpb24pKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBzaWdu
YXR1cmUgPSB0b1ZlY3RvcigoTlNEYXRhICopc2lnbmF0dXJlUmVmLmdldCgpKTsKICAgICB9CiAK
ICAgICAvLyBTdGVwIDEzLgotICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgdXNl
cmhhbmRsZSkpOworICAgIHJlc3BvbnNlLT5zZXRBdXRoZW50aWNhdG9yRGF0YShhdXRoRGF0YSk7
CisgICAgcmVzcG9uc2UtPnNldFNpZ25hdHVyZSh0b0FycmF5QnVmZmVyKChOU0RhdGEgKilzaWdu
YXR1cmUuZ2V0KCkpKTsKKyAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKHJlc3BvbnNlKSk7Cit9
CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0aW9uKEV4Y2VwdGlvbkRh
dGEmJiBleGNlcHRpb24sIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIHN0YXR1cykgY29uc3QKK3sK
KyAgICBMT0dfRVJST1IoZXhjZXB0aW9uLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgaWYg
KGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkKKyAgICAgICAgb2JzZXJ2ZXItPmF1
dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKHN0YXR1cyk7CisgICAgcmVjZWl2ZVJlc3BvbmQoV1RG
TW92ZShleGNlcHRpb24pKTsKKyAgICByZXR1cm47CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaAppbmRleCA5MTkxYjJjNjUzNDJjZDFi
NjU3MTI1YTIzMjY0NjE2ZmU4ZGUyMjlhLi41NDVhYzVmZjYxYjdiMmJhZTdkZTM4NzQyZDU2ODg4
ZTVmMDgxNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaApAQCAtNDYsMjMg
KzQ2LDE2IEBAIGNsYXNzIExvY2FsQ29ubmVjdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxDb25uZWN0aW9uKTsKIHB1Ymxp
YzoKLSAgICBlbnVtIGNsYXNzIFVzZXJDb25zZW50IHsKLSAgICAgICAgTm8sCi0gICAgICAgIFll
cwotICAgIH07Ci0KICAgICB1c2luZyBBdHRlc3RhdGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChOU0FycmF5ICosIE5TRXJyb3IgKik+OwotICAgIHVzaW5nIFVzZXJDb25zZW50
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJDb25zZW50KT47Ci0gICAgdXNp
bmcgVXNlckNvbnNlbnRDb250ZXh0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVz
ZXJDb25zZW50LCBMQUNvbnRleHQgKik+OwogCiAgICAgTG9jYWxDb25uZWN0aW9uKCkgPSBkZWZh
dWx0OwogICAgIHZpcnR1YWwgfkxvY2FsQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogICAgIC8v
IE92ZXJyaWRlZCBieSBNb2NrTG9jYWxDb25uZWN0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBnZXRV
c2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNl
ckNvbnNlbnRDb250ZXh0Q2FsbGJhY2smJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzVW5s
b2NrZWQoTEFDb250ZXh0ICopIGNvbnN0OwogICAgIHZpcnR1YWwgUmV0YWluUHRyPFNlY0tleVJl
Zj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRy
b2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNh
dGlvblRhZykgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGdldEF0dGVzdGF0aW9uKFNlY0tleVJl
ZiwgTlNEYXRhICphdXRoRGF0YSwgTlNEYXRhICpoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYp
IGNvbnN0OwotICAgIHZpcnR1YWwgTlNEaWN0aW9uYXJ5ICpzZWxlY3RDcmVkZW50aWFsKGNvbnN0
IE5TQXJyYXkgKikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGZpbHRlclJlc3BvbnNlcyhIYXNo
U2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYpIGNvbnN0
IHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxD
b25uZWN0aW9uLm1tCmluZGV4IDhiYWVlZTcwOWZmYzdkM2NlNWNiOGU4MDE0YzMxM2I4YTBhZTAx
YjQuLjUzZTAxMjNhZDdhZGE1NTc1M2MyMjI5OWZlODllODg0MDJmYzIxZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29u
bmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KQEAgLTM5LDIyICszOSwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0
IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIFVzZXJD
b25zZW50Q29udGV4dENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Citib29sIExv
Y2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZChMQUNvbnRleHQgKmNvbnRleHQpIGNvbnN0CiB7Ci0g
ICAgYXV0byBjb250ZXh0ID0gYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRd
KTsKLSAgICBhdXRvIHJlcGx5ID0gbWFrZUJsb2NrUHRyKFtjb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgICAgIFVzZXJDb25zZW50IGNvbnNlbnQgPSBVc2VyQ29uc2VudDo6WWVzOwotICAgICAg
ICBpZiAoIXN1Y2Nlc3MgfHwgZXJyb3IpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRu
J3QgYXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmljczogJUAiLCBlcnJvcik7Ci0gICAgICAgICAg
ICBjb25zZW50ID0gVXNlckNvbnNlbnQ6Ok5vOwotICAgICAgICB9Ci0gICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgY29uc2VudCwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCldKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb25zZW50LCBjb250ZXh0LmdldCgpKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci0gICAgW2NvbnRleHQgZXZhbHVhdGVBY2Nlc3NDb250cm9s
OmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJhdGlvblVzZUtleVNp
Z24gbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpyZXBseS5nZXQoKV07CisgICAgTlNFcnJv
ciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byByZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVBvbGlj
eTpMQVBvbGljeURldmljZU93bmVyQXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBvcHRpb25z
OkB7IEAoTEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSk6IEBZRVMgfSBlcnJvcjomZXJyb3JdOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdldCB1c2VyIGNvbnNl
bnQ6ICVAIiwgZXJyb3IpOworICAgIHJldHVybiAhIXJlc3VsdDsKIH0KIAogUmV0YWluUHRyPFNl
Y0tleVJlZj4gTG9jYWxDb25uZWN0aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNv
bnRleHQgKmNvbnRleHQsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgY29u
c3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBj
b25zdApAQCAtODgsMTIgKzc5LDYgQEAgTE9DQUxDT05ORUNUSU9OX0FERElUSU9OUwogI2VuZGlm
CiB9CiAKLU5TRGljdGlvbmFyeSAqTG9jYWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsKGNv
bnN0IE5TQXJyYXkgKmNyZWRlbnRpYWxzKSBjb25zdAotewotICAgIC8vIEZJWE1FKHJkYXI6Ly9w
cm9ibGVtLzM1OTAwNTM0KTogV2UgZG9uJ3QgaGF2ZSBhbiBVSSB0byBwcm9tcHQgdXNlcnMgZm9y
IHNlbGVjdGluZyBpbnRlcnNlY3RlZENyZWRlbnRpYWxzLCBhbmQgdGhlcmVmb3JlIHdlIGFsd2F5
cyB1c2UgdGhlIGZpcnN0IG9uZSBmb3Igbm93LgotICAgIHJldHVybiBjcmVkZW50aWFsc1swXTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5oCmluZGV4IDNjNmIzZDdlMDEzY2U2ODA3MjgzOGI5MjY4YWVjYTliZGUyOThlY2YuLmRmM2Q5
NWFlMTA5ZTViZDQyMTI3YTNlNGYwM2M1NDUzYjU4YmMzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3Vs
dCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGNvbnN0IGZpbmFsOwogCiAgICAgX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbCAqbV9wYW5lbDsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbERlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CkBAIC01OCw3ICs1OSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIGJvb2wgcGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsIDog
MTsKICAgICAgICAgYm9vbCBwYW5lbERpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJl
c3VsdCA6IDE7CiAgICAgICAgIGJvb2wgcGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJp
ZXNDb21wbGV0aW9uSGFuZGxlciA6IDE7Ci0gICAgICAgIGJvb2wgcGFuZWxzZWxlY3RBc3NlcnRp
b25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCBwYW5lbFNlbGVj
dEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29sIHBh
bmVsVmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAg
IH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQppbmRleCBkNTE2NjMyYjk4ZDczODgxYzQz
ZTQzMTljMzk3MzNlMDQwMzllYjVlLi40MDgwNjUyZGRkMjgzMjdkMTYzZWRlZGFhZWE3YjljMGM4
ODBhMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQubW0KQEAgLTM4LDYgKzM4LDggQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAorI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlv
blNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKnBhbmVsLCBpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiBk
ZWxlZ2F0ZSkKQEAgLTQ3LDcgKzQ5LDggQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudChfV0tXZWJBdXRoZW50aWNhdGlvblAKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy5wYW5lbFVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDp1cGRhdGVXZWJBdXRoZW50
aWNhdGlvblBhbmVsOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsRGlzbWlzc1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocGFuZWw6ZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0
OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdS
ZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwYW5lbDpyZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6Y29tcGxldGlvbkhh
bmRsZXI6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFu
ZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9u
SGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnZl
cmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0
YWluUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6ZGVsZWdhdGUoKQpAQCAtNjcsNiArNzAsMTIgQEAgc3RhdGlj
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUgd2tXZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlKFdlYkF1dGhlbnQKICAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVQSU5BdXRoQmxvY2tlZDsKICAgICBpZiAoc3RhdHVzID09IFdlYkF1dGhlbnRpY2F0
aW9uU3RhdHVzOjpQaW5JbnZhbGlkKQogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZVBJTkludmFsaWQ7CisgICAgaWYgKHN0YXR1cyA9PSBXZWJBdXRoZW50aWNh
dGlvblN0YXR1czo6TEFFcnJvcikKKyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVMQUVycm9yOworICAgIGlmIChzdGF0dXMgPT0gV2ViQXV0aGVudGljYXRpb25T
dGF0dXM6OkxBRHVwbGljYXRlQ3JlZGVudGlhbCkKKyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw7CisgICAgaWYgKHN0YXR1
cyA9PSBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpCisgICAgICAgIHJl
dHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWw7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVNdWx0aXBsZU5GQ1RhZ3NQcmVzZW50OwogfQpAQCAtMTMzLDcgKzE0Miw3IEBAIHZv
aWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Uo
VmVjdG9yPFJlZjxXZWJDb3JlOjpBCiB7CiAgICAgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgp
KTsKIAotICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5l
bFNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE1OCw2ICsxNjcsMjggQEAgdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkEKICAgICB9KS5nZXQoKV07
CiB9CiAKK3ZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlcihTZWNB
Y2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFD
b250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9kZWxl
Z2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFu
ZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFthbGxvY0xBQ29udGV4
dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5j
ZSgpIGluaXRdKS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNo
ZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0
KCksIEBzZWxlY3RvcihwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlv
bkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgdmVyaWZ5VXNlcldpdGhB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2Vy
ID0gV1RGTW92ZShjaGVja2VyKV0oTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisgICAgfSkuZ2V0KCldOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9N
b2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDcyMDE1OGFjYzI1
NTkxYjczMGZjZTcxY2FmZWRiZTM0MzE5NmRlZDIuLmQwZGQ5YjEwNDlhYTE3ZmJlZWUzYjg0OTJl
NWVjNDFmNzU1MmE4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5o
CkBAIC0zNywxMCArMzcsMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tMb2NhbENvbm5l
Y3Rpb24oY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFz
b24sIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaXNVbmxvY2tlZChMQUNvbnRleHQgKikgY29uc3QgZmluYWw7
CiAgICAgUmV0YWluUHRyPFNlY0tleVJlZj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFD
b250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVs
LCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBn
ZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwg
QXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKLSAgICBOU0RpY3Rpb25hcnkgKnNl
bGVjdENyZWRlbnRpYWwoY29uc3QgTlNBcnJheSAqKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGZp
bHRlclJlc3BvbnNlcyhIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U+PiYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25u
ZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IDkxNWI1OTQ5OWZlN2VjZDI3YmZmNjliMmYw
NjcwZGI3ZDRjZjMwZmYuLjhiOGQ4MjQ1MTRlNThjODQyMDBhYTc4MTY2NzU5YWFlZjdjYzUxNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTMyLDYgKzMy
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogI2ltcG9ydCA8d3RmL1J1
bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNp
bXBvcnQgIkxvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIgpAQCAtNDMsMTcgKzQ0LDkgQEAg
TW9ja0xvY2FsQ29ubmVjdGlvbjo6TW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpN
b2NrV2ViQXV0aGVudGljYXRpb25Db24KIHsKIH0KIAotdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9u
OjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2Vy
Q29uc2VudENvbnRleHRDYWxsYmFjayYmIGNhbGxiYWNrKSBjb25zdAorYm9vbCBNb2NrTG9jYWxD
b25uZWN0aW9uOjppc1VubG9ja2VkKExBQ29udGV4dCAqY29udGV4dCkgY29uc3QKIHsKLSAgICAv
LyBNb2NrIGFzeW5jIG9wZXJhdGlvbnMuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtj
b25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9uLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoY29uZmlndXJhdGlvbi5sb2NhbCk7Ci0g
ICAgICAgIGlmICghY29uZmlndXJhdGlvbi5sb2NhbC0+YWNjZXB0QXV0aGVudGljYXRpb24pIHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKFVzZXJDb25zZW50OjpObywgbmlsKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjYWxsYmFjayhVc2VyQ29uc2VudDo6WWVzLCBh
ZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKLSAgICB9KTsK
KyAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLmxvY2FsLT5hY2NlcHRBdXRoZW50aWNhdGlvbjsK
IH0KIAogUmV0YWluUHRyPFNlY0tleVJlZj4gTW9ja0xvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3Jl
ZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0
IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29u
c3QKQEAgLTExMiwxNSArMTA1LDI0IEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0
ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKiwgTlNEYXRhICosIEF0dGVzdGF0CiAgICAgfSk7
CiB9CiAKLU5TRGljdGlvbmFyeSAqTW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3JlZGVudGlh
bChjb25zdCBOU0FycmF5ICpjcmVkZW50aWFscykgY29uc3QKK3ZvaWQgTW9ja0xvY2FsQ29ubmVj
dGlvbjo6ZmlsdGVyUmVzcG9uc2VzKEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMpIGNvbnN0CiB7Ci0gICAgYXV0byBwcmVmZXJy
ZWRVc2VyaGFuZGxlID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNv
ZGVkU3RyaW5nOm1fY29uZmlndXJhdGlvbi5sb2NhbC0+cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2
NCBvcHRpb25zOjBdKTsKLSAgICBmb3IgKE5TRGljdGlvbmFyeSAqY3JlZGVudGlhbCA6IGNyZWRl
bnRpYWxzKSB7Ci0gICAgICAgIGlmIChbY3JlZGVudGlhbFsoaWQpa1NlY0F0dHJBcHBsaWNhdGlv
blRhZ10gaXNFcXVhbFRvRGF0YTpwcmVmZXJyZWRVc2VyaGFuZGxlLmdldCgpXSkKLSAgICAgICAg
ICAgIHJldHVybiBjcmVkZW50aWFsOworICAgIGNvbnN0IGF1dG8mIHByZWZlcnJlZFVzZXJoYW5k
bGVCYXNlNjQgPSBtX2NvbmZpZ3VyYXRpb24ubG9jYWwtPnByZWZlcnJlZFVzZXJoYW5kbGVCYXNl
NjQ7CisgICAgaWYgKHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGl0ciA9IHJlc3BvbnNlcy5iZWdpbigpOworICAgIGZvciAo
OyBpdHIgIT0gcmVzcG9uc2VzLmVuZCgpOyArK2l0cikgeworICAgICAgICBhdXRvKiB1c2VySGFu
ZGxlID0gaXRyLT5nZXQoKS51c2VySGFuZGxlKCk7CisgICAgICAgIEFTU0VSVCh1c2VySGFuZGxl
KTsKKyAgICAgICAgYXV0byB1c2VyaGFuZGxlQmFzZTY0ID0gYmFzZTY0RW5jb2RlKHVzZXJIYW5k
bGUtPmRhdGEoKSwgdXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgaWYgKHVzZXJo
YW5kbGVCYXNlNjQgPT0gcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCkKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbmlsOwor
ICAgIGF1dG8gcmVzcG9uc2UgPSByZXNwb25zZXMudGFrZShpdHIpOworICAgIEFTU0VSVChyZXNw
b25zZSk7CisgICAgcmVzcG9uc2VzLmNsZWFyKCk7CisgICAgcmVzcG9uc2VzLmFkZChXVEZNb3Zl
KCpyZXNwb25zZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9u
RmxhZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0aW9uRmxhZ3MuaAppbmRleCA1NDg4YTIxMTM5MjkyNmMwYTM2NmZmYTg3Zjc2NTkw
OWQ5MWU1Yjg4Li45NzUxODNkZmQ1Nzc1MmQxMjNmNjUzMzdiNzZiNzk1NTI0NjYxMWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdGlvbkZsYWdzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRpb25GbGFncy5oCkBAIC00NSw3ICs0NSwxMCBAQCBlbnVt
IGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIDogdWludDhfdCB7CiAgICAgTm9DcmVkZW50
aWFsc0ZvdW5kLAogICAgIFBpbkJsb2NrZWQsCiAgICAgUGluQXV0aEJsb2NrZWQsCi0gICAgUGlu
SW52YWxpZAorICAgIFBpbkludmFsaWQsCisgICAgTEFFcnJvciwKKyAgICBMQUR1cGxpY2F0ZUNy
ZWRlbnRpYWwsCisgICAgTEFOb0NyZWRlbnRpYWwsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDJjY2ZiNjVhODRhMjdjZmJlNzY1YmY3NWI5MTZjNjUzMTIzZjYzMjQuLjQ1ZWNjYzU2Nzcx
MGQ3MWJkNjQ3YzE3YzA3MDYwZmM2YzRhYmE0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Niw2ICsxMDk2LDcgQEAKIAkJNTcw
REFBQzYyMzAzN0Y3RjAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERBQUM0MjMwMzdG
N0UwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi87IH07CiAJCTU3MERB
QUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyog
Q3RhcE5mY0RyaXZlci5oICovOyB9OwogCQk1NzJGRDQ0MzIyMjY1Q0UyMDBBMUVDQzMgLyogV2Vi
Vmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0Rp
ZE1vdmVUb1dpbmRvd09ic2VydmVyLmggKi87IH07CisJCTU3NDIxNzkyMjQwMEUyODYwMDJCMzAz
RCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyogTG9jYWxBdXRo
ZW50aWNhdGlvblNQSS5oICovOyB9OwogCQk1NzQ3MjhEMTIzNDU2RTk4MDAxNzAwQUYgLyogX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc0NzI4Q0YyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1NzQ3MjhENDIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzQ3MjhEMzIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bEludGVybmFsLmggKi87IH07CiAJCTU3NTk3RUI5MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlk
RHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oICovOyB9OwpAQCAtMzgx
MSw2ICszODEyLDcgQEAKIAkJNTcwREFBQzgyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ3RhcE5mY0RyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzBEQUFDOTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDdGFwTmZjRHJpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTcyRkQ0NDEyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZpZXdEaWRNb3ZlVG9X
aW5kb3dPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWV3RGlkTW92ZVRvV2luZG93T2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc0MjE3OTEyNDAwRTA5ODAw
MkIzMDNEIC8qIExvY2FsQXV0aGVudGljYXRpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxB
dXRoZW50aWNhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQ3MjhD
RjIzNDU2RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3NDcyOEQwMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0NzI4RDMyMzQ1NzBBRTAwMTcw
MEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTY4MzksNiArNjg0MSw3IEBACiAJCQkJMUE1NzA1MTAxQkU0MTBFNTAwODc0
QUYxIC8qIEJsb2NrU1BJLmggKi8sCiAJCQkJMzdDMjFDQUQxRTk5NEMwQzAwMjlENUY5IC8qIENv
cmVQcmVkaWN0aW9uU1BJLmggKi8sCiAJCQkJMkRBQURBOEUyMjk4QzIxMDAwRTM2QjBDIC8qIERl
dmljZU1hbmFnZW1lbnRTUEkuaCAqLywKKwkJCQk1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyog
TG9jYWxBdXRoZW50aWNhdGlvblNQSS5oICovLAogCQkJCTU3QjgyNjQwMjMwNEVCM0UwMEI3MkVC
MCAvKiBOZWFyRmllbGRTUEkuaCAqLywKIAkJCQkzNzU0RDU0NDFCM0EyOUZEMDAzQTRDN0YgLyog
TlNJbnZvY2F0aW9uU1BJLmggKi8sCiAJCQkJMzdCNDdFMkMxRDY0REI3NjAwNUY0RUZGIC8qIG9i
amNTUEkuaCAqLywKQEAgLTEwMzYyLDYgKzEwMzY1LDcgQEAKIAkJCQk0MTMwNzVCMjFERTg1RjU4
MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQxMDg3NjExRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzQyMTc5MjI0MDBFMjg2MDAyQjMwM0QgLyog
TG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQUMyMTRD
NjAyNzAwMTZCODQ3IC8qIExvY2FsQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdEQ0VEQUQyMTRDNjAyQzAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdEQ0VEQUUyMTRDNjAzMzAwMTZCODQ3IC8qIExvY2FsU2VydmljZS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggODNlZWQwYjgwNDdmZjQ2MDUzOWMwN2RjYmRkMDM2NWYwNjExNWYyNC4uOWJmOWM2NjIx
MGE4OTE2Njg0NGY3OGMxZmVkZDhkNTczZWNmODMyYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTAyLTIxICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJ
bXBsZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBCZXNpZGVzIGFkZGluZyBBUEkgdGVzdHMsIHRoaXMgcGF0Y2ggYWxzbyB0
ZWFjaGVzIFRlc3RXZWJLaXRBUEkgdG8gdXNlIHJlc3RyaWN0ZWQgZW50aXRsZW1lbnRzLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09T
LmVudGl0bGVtZW50czoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rl
c3RXZWJLaXRBUEkueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAo
LVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnVwZGF0ZVdlYkF1dGhl
bnRpY2F0aW9uUGFuZWw6XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVs
RGVsZWdhdGUgcGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFuZWw6
dmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sOiBDb3Bp
ZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxp
Y2F0ZS1jcmVkZW50aWFsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJv
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbDogQWRkZWQuCisKIDIw
MjAtMDItMjEgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQXBwLWJvdW5kIGRvbWFpbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgTmV0d29yayBTZXNz
aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmln
dXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHMKaW5kZXggZWEwYzFmN2M0
NzRhMjVjNzEwYzM4NWRkNjhiYzk0ZTgyMDkwYTcxMC4uYTlmOWNkZjA0YzJmYmJkMDJlM2EyZWVm
MjI2MjQ3YWU2ZWI5NjIzOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cworKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1lbnRz
CkBAIC0yLDYgKzIsMTAgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQg
UExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEu
MC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KKwk8a2V5PmtleWNoYWluLWFj
Y2Vzcy1ncm91cHM8L2tleT4KKwk8YXJyYXk+CisJCTxzdHJpbmc+Y29tLmFwcGxlLlRlc3RXZWJL
aXRBUEk8L3N0cmluZz4KKwk8L2FycmF5PgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBv
cmFyeS1leGNlcHRpb24uc2JwbDwva2V5PgogCTxhcnJheT4KIAkJPHN0cmluZz4oYWxsb3cgbWFj
aC1pc3N1ZS1leHRlbnNpb24gKHJlcXVpcmUtYWxsIChleHRlbnNpb24tY2xhc3MgJnF1b3Q7Y29t
LmFwcGxlLndlYmtpdC5leHRlbnNpb24ubWFjaCZxdW90OykpKTwvc3RyaW5nPgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29u
ZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhj
Y29uZmlnCmluZGV4IDMwYThjYWYwYzI0NzBkNjc2YjZkY2UzNjIxZjA5YjA0YWM3OTBkMzEuLmNh
OGUxNzE1YWNlMWM2M2E2MGQ4YjQ1YzFjMWZiNTcxODBkM2VmZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25m
aWcKQEAgLTY5LDMgKzY5LDEwIEBAIENPREVfU0lHTl9FTlRJVExFTUVOVFNbc2RrPWlwaG9uZSpd
ID0gQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lCiBDT0RFX1NJR05f
RU5USVRMRU1FTlRTW3Nkaz1tYWNvc3gqXSA9IENvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkt
bWFjT1MuZW50aXRsZW1lbnRzOwogCiBTVFJJUF9TVFlMRSA9IGRlYnVnZ2luZzsKKworQ09ERV9T
SUdOX0lERU5USVRZW3Nkaz1tYWNvc3gqXSA9ICQoQ09ERV9TSUdOX0lERU5USVRZXyQoQ09ORklH
VVJBVElPTikpOworQ09ERV9TSUdOX0lERU5USVRZX0RlYnVnID0gJChDT0RFX1NJR05fSURFTlRJ
VFlfJChVU0VfSU5URVJOQUxfU0RLKSk7CitDT0RFX1NJR05fSURFTlRJVFlfUmVsZWFzZSA9ICQo
Q09ERV9TSUdOX0lERU5USVRZXyQoVVNFX0lOVEVSTkFMX1NESykpOworQ09ERV9TSUdOX0lERU5U
SVRZX1lFUyA9ICQoV0tfRU5HSU5FRVJJTkdfQ09ERV9TSUdOX0lERU5USVRZKTsKK0NPREVfU0lH
Tl9JREVOVElUWV9Qcm9kdWN0aW9uID0gJChDT0RFX1NJR05fSURFTlRJVFlfUHJvZHVjdGlvbl8k
KFVTRV9JTlRFUk5BTF9TREspKTsKK0NPREVfU0lHTl9JREVOVElUWV9Qcm9kdWN0aW9uX1lFUyA9
IC07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU0MTU3ZjY4OGQ5ZDBiYjhmZTcxY2RhYjg5
YmM4N2IwZGNmMTNhNDUuLmNmMjUyM2UyYzMwNWNiMjFmYTE4ZmJhYmUyMTI4MjNmNzVlYjM1Y2Ig
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDksNiArMzQ5LDEwIEBACiAJCTU3MzI1NUE1
MjIxMzlCQzcwMDM5NkFFOCAvKiBoZWxsb3dvcmxkLndlYmFyY2hpdmUgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMjU1QTQyMjEzOUI5MDAw
Mzk2QUU4IC8qIGhlbGxvd29ybGQud2ViYXJjaGl2ZSAqLzsgfTsKIAkJNTczMjU1QTYyMjEzOUJD
NzAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzI1NUEyMjIxMzlCOEYwMDM5NkFF
OCAvKiBsb2FkLXdlYi1hcmNoaXZlLTEuaHRtbCAqLzsgfTsKIAkJNTczMjU1QTcyMjEzOUJDNzAw
Mzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzI1NUEzMjIxMzlCOTAwMDM5NkFFOCAv
KiBsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCAqLzsgfTsKKwkJNTc0MjE3ODgyNDAwQUMyNTAwMkIz
MDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQy
MTc4NzI0MDBBQkZEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC1sYS1lcnJvci5odG1sICovOyB9OworCQk1NzQyMTc4QTI0MDBBRUQ4MDAyQjMwM0QgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3NDIxNzg5MjQwMEFFRDAwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgKi87IH07CisJCTU3NDIxNzhDMjQw
MENENDcwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
NDIxNzhCMjQwMENEMkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1sYS5odG1sICovOyB9OworCQk1NzQyMTc4RTI0MDBEMkRGMDAyQjMwM0QgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAv
KiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi87IH07CiAJCTU3
NEY1NUQyMjA0RDQ3RjAwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzRGNTVEMDIwNEQ0NzFDMDAy
OTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovOyB9OwogCQk1NzU4NTk3RjIzQTI1MjdBMDBD
NzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1ODU5N0UyM0EyNTI3QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNw
cCAqLzsgfTsKIAkJNTc1ODU5ODQyM0MzQzNBNDAwQzc0NTcyIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQtcmV0cmllcy1lcnJvci5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTgzMjND
M0MzNjIwMEM3NDU3MiAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1w
aW4tZ2V0LXJldHJpZXMtZXJyb3IuaHRtbCAqLzsgfTsKQEAgLTE1MTcsNiArMTUyMSw3IEBACiAJ
CQkJNTc4REE0NEUyM0VDRDI4QjAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTU3MEQyNkZDMjNDM0Y4NzAwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQtcGluLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc2
NjNERUMyMzRGMUY5MzAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9u
LWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTU3NDIxNzhDMjQwMENENDcwMDJC
MzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCTU3OTgzMzkyMjM2OEZBMzcwMDhFNTU0NyAvKiB3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTU3NjYzREVBMjM0RUE2NkQwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGlj
YXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1
Nzc0NTREMjIzNTlCQjAxMDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24tdTJmLW5vLWNyZWRlbnRpYWxzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNTMx
LDYgKzE1MzYsOSBAQAogCQkJCTU3OERBNDRBMjNFQ0QxODYwMDI0NjAxMCAvKiB3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3MEQyNkY2MjNDM0QzMzAwMEQ1Q0Y2NyAvKiB3
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQk1Nzk4MzM3RTIzNjAxOUE0MDA4RTU1NDcgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJ
CQk1NzQyMTc4QTI0MDBBRUQ4MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAorCQkJCTU3NDIxNzg4MjQwMEFDMjUwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTc0
MjE3OEUyNDAwRDJERjAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4NjFDODkyNTlEMDBB
NTUyOUYgLyogd2ViZm9udC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTUxNzE0RUI0
MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTUxNzE0RUI1MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9j
ZXNzS2lsbElEQkNsZWFudXAtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTk2MSw2
ICsxOTY5LDExIEBACiAJCTU3MzI1NUEzMjIxMzlCOTAwMDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNo
aXZlLTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzI1NUE0MjIxMzlCOTAwMDM5NkFFOCAvKiBoZWxsb3dv
cmxkLndlYmFyY2hpdmUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlLmJwbGlzdDsgcGF0aCA9IGhlbGxvd29ybGQud2ViYXJjaGl2ZTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczNUYwMjUxRjNBNEVBNjAwMEVFODAxIC8qIFRlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gIlRlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLWVycm9yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS1lcnJvci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTc0MjE3ODkyNDAwQUVEMDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTc0MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWxhLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzQyMTc4RjI0MDBENTREMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NEY1NUQwMjA0RDQ3MUMwMDI5
NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5LmZy
YW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJNTc1ODU5N0QyM0EyNTI3QTAwQzc0NTcy
IC8qIEN0YXBQaW5UZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN0YXBQaW5UZXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTg1OTdFMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGlu
VGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdGFwUGluVGVzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zNTc5LDYgKzM1OTIsNyBAQAogCQkJCTU3OERBNDREMjNFQ0Qy
NjEwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLWlu
dmFsaWQtZXJyb3ItcmV0cnkuaHRtbCAqLywKIAkJCQk1NzBEMjZGQjIzQzNGODY1MDBENUNGNjcg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi5odG1sICovLAogCQkJ
CTU3NjYzREVCMjM0RjFGODAwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1oaWQuaHRtbCAqLywKKwkJCQk1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLywKIAkJCQk1Nzk4MzM3QjIzNUVC
NjVDMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRp
cGxlLXRhZ3MuaHRtbCAqLywKIAkJCQk1NzY2M0RFOTIzNEVBNjBCMDBFODVFMDkgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwgKi8sCiAJCQkJNTc3NDU0RDEyMzU5
QkFENTAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLXUyZi1uby1j
cmVkZW50aWFscy5odG1sICovLApAQCAtMzU5Myw2ICszNjA3LDEwIEBACiAJCQkJNTc4REE0NDky
M0VDRDE1NTAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlk
LXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0bWwgKi8sCiAJCQkJNTcwRDI2RjUyM0MzRDMyNzAw
RDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi5odG1s
ICovLAogCQkJCTU3OTgzMzdEMjM2MDE5NkQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWhpZC5odG1sICovLAorCQkJCTU3NDIxNzg5MjQwMEFFRDAwMDJCMzAz
RCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVk
ZW50aWFsLmh0bWwgKi8sCisJCQkJNTc0MjE3ODcyNDAwQUJGRDAwMkIzMDNEIC8qIHdlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCAqLywKKwkJCQk1NzQyMTc4
RDI0MDBEMjZDMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS5odG1sICovLAorCQkJCTU3NDIxNzhGMjQwMEQ1NEQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcy
M0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjMx
Q0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgKi8sCiAJ
CQkJNTEyMEM4M0IxRTY3NEUzNTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRo
cy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDA4MzNj
NDk4OWFiYzNhYTM0YTNjYTY4ODMxZDA0YWY0MDYyZjM2ZTMuLjQ3NTZkYWFiMDRiZGIwNWFiNTgy
MDQ5MTZkNWI5YzY3M2JmMTVhOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgor
I2ltcG9ydCA8TG9jYWxBdXRoZW50aWNhdGlvbi9Mb2NhbEF1dGhlbnRpY2F0aW9uLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJ
RGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVy
ZS5oPgpAQCAtNDksOSArNTAsMTggQEAgc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5l
bFVwZGF0ZU5vQ3JlZGVudGlhbHNGb3VuZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgd2ViQXV0aGVu
dGljYXRpb25QYW5lbFVwZGF0ZVBJTkJsb2NrZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5BdXRoQmxvY2tlZCA9IGZhbHNlOwogc3RhdGljIGJv
b2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkludmFsaWQgPSBmYWxzZTsKK3N0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yID0gZmFsc2U7CitzdGF0
aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFEdXBsaWNhdGVDcmVkZW50aWFs
ID0gZmFsc2U7CitzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0Ny
ZWRlbnRpYWwgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYW5j
ZWxJbW1lZGlhdGVseSA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5l
bFZlcmlmeVVzZXIgPSBmYWxzZTsKIHN0YXRpYyBTdHJpbmcgd2ViQXV0aGVudGljYXRpb25QYW5l
bFBpbjsKIHN0YXRpYyBCT09MIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRsZSA9
IE5POworc3RhdGljIFN0cmluZyB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0ID0KKyAgICAiQkRq
L3p4U2t6S2dhQnVTM2NkV0RGNTU4b2Y4QWFJcGdGcHNqRi9RbTE3NDlWQkpQZ3FVSXdmaFdISjkx
bmI3VSIKKyAgICAiUEg3NmMwK1dGT3paS3NsUHl5RnNlNGdvR0lXMlI3azlWSExQRVpsNW5mbkJn
RVZGaDV6ZXYrL3hwSFFJdnVxNiIKKyAgICAiUlE9PSI7CitzdGF0aWMgU3RyaW5nIHRlc3RVc2Vy
aGFuZGxlQmFzZTY0ID0gIkFBRUNBd1FGQmdjSUNRPT0iOwogCiBAaW50ZXJmYWNlIFRlc3RXZWJB
dXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgOiBOU09iamVjdCA8X1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbERlbGVnYXRlPgogQGVuZApAQCAtODQsNiArOTQsMTggQEAgLSAodm9pZClwYW5lbDoo
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9u
UGFuZWw6KF8KICAgICAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkludmFsaWQg
PSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmICh1cGRhdGUgPT0gX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRXJyb3IpIHsKKyAgICAgICAgd2ViQXV0aGVudGlj
YXRpb25QYW5lbFVwZGF0ZUxBRXJyb3IgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmICh1cGRhdGUgPT0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGlj
YXRlQ3JlZGVudGlhbCkgeworICAgICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFE
dXBsaWNhdGVDcmVkZW50aWFsID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAodXBkYXRlID09IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlh
bCkgeworICAgICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWwg
PSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQogfQogCiAtICh2b2lkKXBhbmVsOihfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxXaXRoUmVzdWx0OihfV0tXZWJBdXRoZW50aWNhdGlvblJlc3VsdClyZXN1bHQKQEAgLTExMSw2
ICsxMzMsMTEgQEAgLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBh
bmVsIHJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczoKIAogLSAodm9pZClwYW5lbDooX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlOihO
U0FycmF5IDwgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqPiAqKXJlc3Bv
bnNlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZSAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIGlmIChyZXNwb25zZXMu
Y291bnQgPT0gMSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbMF0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgRVhQRUNUX0VRKHJlc3BvbnNlcy5jb3VudCwg
MnVsKTsKICAgICBmb3IgKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKnJl
c3BvbnNlIGluIHJlc3BvbnNlcykgewogICAgICAgICBFWFBFQ1RfVFJVRShbcmVzcG9uc2UubmFt
ZSBpc0VxdWFsOkAiam9obnBzbWl0aEBleGFtcGxlLmNvbSJdIHx8IFtyZXNwb25zZS5uYW1lIGlz
RXF1YWw6QCIiXSk7CkBAIC0xMjMsNiArMTUwLDEzIEBAIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJh
CiAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2VzW2luZGV4XSk7CiB9CiAKKy0gKHZvaWQp
cGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2VyV2l0aEFj
Y2Vzc0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
d2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlmeVVzZXIgPSB0cnVlOworICAgIGF1dG8gY29udGV4
dCA9IGFkb3B0TlMoW1tMQUNvbnRleHQgYWxsb2NdIGluaXRdKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihjb250ZXh0LmdldCgpKTsKK30KKwogQGVuZAogCiBAaW50ZXJmYWNlIFRlc3RXZWJBdXRo
ZW50aWNhdGlvblBhbmVsRmFrZURlbGVnYXRlIDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxEZWxlZ2F0ZT4KQEAgLTIzMSw2ICsyNjUsMjIgQEAgc3RhdGljIF9XS0V4cGVyaW1l
bnRhbEZlYXR1cmUgKndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpCiAgICAg
cmV0dXJuIHRoZUZlYXR1cmUuZ2V0KCk7CiB9CiAKK3N0YXRpYyBfV0tFeHBlcmltZW50YWxGZWF0
dXJlICp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4cGVyaW1lbnRhbEZlYXR1
cmUoKQoreworICAgIHN0YXRpYyBSZXRhaW5QdHI8X1dLRXhwZXJpbWVudGFsRmVhdHVyZT4gdGhl
RmVhdHVyZTsKKyAgICBpZiAodGhlRmVhdHVyZSkKKyAgICAgICAgcmV0dXJuIHRoZUZlYXR1cmUu
Z2V0KCk7CisKKyAgICBOU0FycmF5ICpmZWF0dXJlcyA9IFtXS1ByZWZlcmVuY2VzIF9leHBlcmlt
ZW50YWxGZWF0dXJlc107CisgICAgZm9yIChfV0tFeHBlcmltZW50YWxGZWF0dXJlICpmZWF0dXJl
IGluIGZlYXR1cmVzKSB7CisgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbDpAIldlYkF1
dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRW5hYmxlZCJdKSB7CisgICAgICAgICAgICB0
aGVGZWF0dXJlID0gZmVhdHVyZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiB0aGVGZWF0dXJlLmdldCgpOworfQorCiBzdGF0aWMgdm9pZCByZXNldCgp
CiB7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbiA9IGZhbHNlOwpAQCAtMjQxLDkgKzI5
MSwxMyBAQCBzdGF0aWMgdm9pZCByZXNldCgpCiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVw
ZGF0ZVBJTkJsb2NrZWQgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRl
UElOQXV0aEJsb2NrZWQgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRl
UElOSW52YWxpZCA9IGZhbHNlOworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVy
cm9yID0gZmFsc2U7CisgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRl
Q3JlZGVudGlhbCA9IGZhbHNlOworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5v
Q3JlZGVudGlhbCA9IGZhbHNlOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYW5jZWxJbW1l
ZGlhdGVseSA9IGZhbHNlOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxQaW4gPSBlbXB0eVN0
cmluZygpOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRsZSA9IE5POwor
ICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyID0gZmFsc2U7CiB9CiAKIHN0YXRp
YyB2b2lkIGNoZWNrUGFuZWwoX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqcGFuZWwsIE5TU3Ry
aW5nICpyZWx5aW5nUGFydHlJRCwgTlNBcnJheSAqdHJhbnNwb3J0cywgX1dLV2ViQXV0aGVudGlj
YXRpb25UeXBlIHR5cGUpCkBAIC0yNzcsNiArMzMxLDU2IEBAIHN0YXRpYyB2b2lkIGNoZWNrRnJh
bWVJbmZvKFdLRnJhbWVJbmZvICpmcmFtZSwgYm9vbCBpc01haW5GcmFtZSwgTlNTdHJpbmcgKnVy
bCwKICAgICBFWFBFQ1RfRVEoZnJhbWUud2ViVmlldywgd2ViVmlldyk7CiB9CiAKK2Jvb2wgYWRk
S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNlNjQsIGNvbnN0IFN0cmlu
ZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VySGFuZGxlQmFzZTY0KQoreworICAgIE5TRGljdGlv
bmFyeSogb3B0aW9ucyA9IEB7CisgICAgICAgIChpZClrU2VjQXR0cktleVR5cGU6IChpZClrU2Vj
QXR0cktleVR5cGVFQ1NFQ1ByaW1lUmFuZG9tLAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFz
czogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlT
aXplSW5CaXRzOiBAMjU2LAorICAgIH07CisgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxw
dHI7CisgICAgYXV0byBrZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVdpdGhEYXRhKAorICAgICAg
ICAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFz
ZTY0RW5jb2RlZFN0cmluZzpwcml2YXRlS2V5QmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVj
b2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKW9wdGlvbnMsCisgICAgICAgICZlcnJvclJlZgorICAgICkpOworICAg
IGlmIChlcnJvclJlZikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTlNEaWN0aW9uYXJ5
KiBhZGRRdWVyeSA9IEB7CisgICAgICAgIChpZClrU2VjVmFsdWVSZWY6IChpZClrZXkuZ2V0KCks
CisgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCisgICAgICAgIChpZClr
U2VjQXR0ckxhYmVsOiBycElkLAorICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzog
YWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOnVzZXJI
YW5kbGVCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0lnbm9yZVVua25vd25DaGFy
YWN0ZXJzXSkuZ2V0KCksCisgICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc2libGU6IChpZClrU2Vj
QXR0ckFjY2Vzc2libGVBZnRlckZpcnN0VW5sb2NrLAorI2lmIEhBVkUoREFUQV9QUk9URUNUSU9O
X0tFWUNIQUlOKQorICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZ
RVMKKyNlbHNlCisgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCisjZW5kaWYKKyAg
ICB9OworICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1BZGQoKF9fYnJpZGdlIENGRGljdGlv
bmFyeVJlZilhZGRRdWVyeSwgTlVMTCk7CisgICAgaWYgKHN0YXR1cykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgY2xlYW5VcEtleWNoYWluKGNv
bnN0IFN0cmluZyYgcnBJZCkKK3sKKyAgICBOU0RpY3Rpb25hcnkqIGRlbGV0ZVF1ZXJ5ID0gQHsK
KyAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKKyAgICAgICAgKGlkKWtT
ZWNBdHRyTGFiZWw6IHJwSWQsCisgICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc2libGU6IChpZClr
U2VjQXR0ckFjY2Vzc2libGVBZnRlckZpcnN0VW5sb2NrLAorI2lmIEhBVkUoREFUQV9QUk9URUNU
SU9OX0tFWUNIQUlOKQorICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46
IEBZRVMKKyNlbHNlCisgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCisjZW5kaWYK
KyAgICB9OworICAgIFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkZWxl
dGVRdWVyeSk7Cit9CisKIH0gLy8gbmFtZXNhcGNlOwogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwsIE5vUGFuZWxUaW1lb3V0KQpAQCAtMTA3Niw2ICsxMTgwLDExOCBAQCBURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIE11bHRpcGxlQWNjb3VudHMpCiAgICAgRVhQRUNUX0VRKFtbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlckhhbmRsZSJdIGlzRXF1YWxU
b1N0cmluZzpAIjxudWxsPiJdLCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUp
OwogfQogCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBRXJyb3IpCit7CisgICAgcmVz
ZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS1lcnJvciIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAi
V2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVT
XTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JF
eHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgp
XTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JF
eHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhw
ZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0
aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBz
ZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6
OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRXJyb3IpOworfQorCitURVNUKFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBRHVwbGljYXRlQ3JlZGVudGlhbCkKK3sKKyAgICByZXNl
dCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxh
LWR1cGxpY2F0ZS1jcmVkZW50aWFsIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24g
PSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVn
SW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlND
Rm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVu
YWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmlt
ZW50YWxGZWF0dXJlKCldOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVu
YWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25Mb2NhbEF1
dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgQVNTRVJU
X1RSVUUoYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0LCAiIiwgdGVz
dFVzZXJoYW5kbGVCYXNlNjQpKTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWwpOworICAgIGNsZWFu
VXBLZXljaGFpbigiIik7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFOb0Ny
ZWRlbnRpYWwpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24tbGEiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9
IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJ
bkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NG
b3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5h
YmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1l
bnRhbEZlYXR1cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5h
YmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0
aGVudGljYXRvckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cisg
ICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCld
XTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVu
dGlhbCk7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFNYWtlQ3JlZGVudGlh
bE51bGxEZWxlZ2F0ZSkKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVz
dFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNvbmZpZ3Vy
YXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRl
c3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmln
dXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10g
X3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25F
eHBlcmltZW50YWxGZWF0dXJlKCldOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10g
X3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25M
b2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJv
UmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworICAgIFtkZWxlZ2F0ZSBzZXRJc051bGw6dHJ1ZV07CisgICAgW3dlYlZpZXcgc2V0VUlE
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKKyAgICBjbGVhblVwS2V5Y2hhaW4oIiIpOwor
fQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRpYWwpCit7Cisg
ICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC1sYSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAi
V2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVT
XTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JF
eHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgp
XTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JF
eHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhw
ZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0
aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBz
ZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6
OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlmeVVzZXIpOworICAgIGNoZWNrUGFuZWwo
W2RlbGVnYXRlIHBhbmVsXSwgQCIiLCBAW2Fkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdp
dGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRVU0JdKS5nZXQoKSwgYWRvcHROUyhb
W05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9y
dEludGVybmFsXSkuZ2V0KCldLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVDcmVhdGUpOworICAg
IFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOworfQorCitURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIExBR2V0QXNzZXJ0aW9uKQoreworICAgIHJlc2V0KCk7CisgICAg
UmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhIiB3aXRoRXh0ZW5z
aW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKwor
ICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9j
b25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0
aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJh
dGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6
d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworICAgIFtbY29uZmlndXJh
dGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6
d2ViQXV0aGVudGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJlKCld
OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOworCisgICAgQVNTRVJUX1RSVUUoYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQ
cml2YXRlS2V5QmFzZTY0LCAiIiwgdGVzdFVzZXJoYW5kbGVCYXNlNjQpKTsKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCld
XTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyKTsKKyAg
ICBjaGVja1BhbmVsKFtkZWxlZ2F0ZSBwYW5lbF0sIEAiIiwgQFthZG9wdE5TKFtbTlNOdW1iZXIg
YWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCXSkuZ2V0
KCksIGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGlj
YXRpb25UcmFuc3BvcnRJbnRlcm5hbF0pLmdldCgpXSwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBl
R2V0KTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKKyAgICBj
bGVhblVwS2V5Y2hhaW4oIiIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1s
YS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmYTNjNWJhNDRiMDJm
YjEwNTI5ZDAxNGRmNWRlNjQyOGQ0OTgwYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0
aW9uLWxhLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1
dCI+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNj
ZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwor
ICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsg
fSk7CisgICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7
CisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAgICAg
IHRpbWVvdXQ6IDEwMAorICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVkZW50
aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgLy8gY29uc29s
ZS5sb2coIlN1Y2NlZWRlZCEiKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxl
cnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEiKTsKKyAgICB9LCBlcnJvciA9
PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpOworICAgICAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShlcnJvci5t
ZXNzYWdlKTsKKyAgICB9KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFs
LWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGlj
YXRlLWNyZWRlbnRpYWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWE1OTY1MDZhNTM0YjI1ZjBiYzY1ODg5
NjFiZTNkZGViNDRiNDFjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1
cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPGlucHV0IHR5cGU9InRl
eHQiIGlkPSJpbnB1dCI+Cis8c2NyaXB0PgorICAgIGNvbnN0IHRlc3RDcmVkZW50aWFsSWRIZXgg
PSAiNDhDNDk3MUU3ODA1RUUxMTBFQjA0OTQwRUY3MEI3NDU4RkJDNkQxRSI7CisgICAgZnVuY3Rp
b24gaGV4U3RyaW5nVG9VaW50OEFycmF5KGhleFN0cmluZykKKyAgICB7CisgICAgICAgIGlmICho
ZXhTdHJpbmcubGVuZ3RoICUgMiAhPSAwKQorICAgICAgICAgICAgdGhyb3cgIkludmFsaWQgaGV4
U3RyaW5nIjsKKyAgICAgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoaGV4U3Ry
aW5nLmxlbmd0aCAvIDIpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGV4U3RyaW5n
Lmxlbmd0aDsgaSArPSAyKSB7CisgICAgICAgICAgICB2YXIgYnl0ZVZhbHVlID0gcGFyc2VJbnQo
aGV4U3RyaW5nLnN1YnN0cihpLCAyKSwgMTYpOworICAgICAgICAgICAgaWYgKGJ5dGVWYWx1ZSA9
PSBOYU4pCisgICAgICAgICAgICAgICAgdGhyb3cgIkludmFsaWQgaGV4U3RyaW5nIjsKKyAgICAg
ICAgICAgIGFycmF5QnVmZmVyW2kvMl0gPSBieXRlVmFsdWU7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gYXJyYXlCdWZmZXI7CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0
aW9uOiBmYWxzZSB9IH0pOworICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+
IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisgICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAg
ICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgIG5h
bWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAg
ICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIGlk
OiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBs
ZXNlZWQiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4
QXJyYXkoMTYpLAorICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1Ymxp
Yy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBbeyB0
eXBlOiAicHVibGljLWtleSIsIGlkOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkodGVzdENyZWRlbnRp
YWxJZEhleCkgfV0sCisgICAgICAgICAgICB0aW1lb3V0OiAxMDAsCisgICAgICAgIH0KKyAgICB9
OworCisgICAgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKTsKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWIt
YXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEtZXJyb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjE2MTIxYmE0Y2EyZGI1MzNkZmU1ZDJi
ZjAzMzA0Y2RhNTI0NjJmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVy
cm9yLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dCI+
Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0
QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAg
ICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0p
OworICAgIH0KKworICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgIHB1YmxpY0tleTogewor
ICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgbmFtZTog
IkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICBpZDogbmV3IFVpbnQ4QXJyYXkoMTYp
LAorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAg
ICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtMzUgfSwg
eyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTI1NyB9XSwgLy8gRVMzODQsIFJTMjU2CisgICAg
ICAgICAgICB0aW1lb3V0OiAxMDAsCisgICAgICAgIH0KKyAgICB9OworCisgICAgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWxhLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MjdlMjVjYTJkYTJiZWQ0ZDg5YTgwYjAyN2I2YTA5NTYwYWIyYzU2Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPGlucHV0IHR5
cGU9InRleHQiIGlkPSJpbnB1dCI+Cis8c2NyaXB0PgorICAgIGNvbnN0IHRlc3RFUzI1NlByaXZh
dGVLZXlCYXNlNjQgPQorICAgICAgICAiQkRqL3p4U2t6S2dhQnVTM2NkV0RGNTU4b2Y4QWFJcGdG
cHNqRi9RbTE3NDlWQkpQZ3FVSXdmaFdISjkxbmI3VSIgKworICAgICAgICAiUEg3NmMwK1dGT3pa
S3NsUHl5RnNlNGdvR0lXMlI3azlWSExQRVpsNW5mbkJnRVZGaDV6ZXYrL3hwSFFJdnVxNiIgKwor
ICAgICAgICAiUlE9PSI7CisgICAgY29uc3QgdGVzdEF0dGVzdGF0aW9uQ2VydGlmaWNhdGVCYXNl
NjQgPQorICAgICAgICAiTUlJQjZqQ0NBWkNnQXdJQkFnSUdBV0hBeGNqdk1Bb0dDQ3FHU000OUJB
TUNNRk14SnpBbEJnTlZCQU1NSGtKaCIgKworICAgICAgICAiYzJsaklFRjBkR1Z6ZEdGMGFXOXVJ
RlZ6WlhJZ1UzVmlJRU5CTVRFVE1CRUdBMVVFQ2d3S1FYQndiR1VnU1c1aiIgKworICAgICAgICAi
TGpFVE1CRUdBMVVFQ0F3S1EyRnNhV1p2Y201cFlUQWVGdzB4T0RBeU1qTXdNek0zTWpKYUZ3MHhP
REF5TWpRdyIgKworICAgICAgICAiTXpRM01qSmFNR294SWpBZ0JnTlZCQU1NR1RBd01EQTRNREV3
TFRBd01FRTBPVUV5TXpCQk1ESXhNMEV4R2pBWSIgKworICAgICAgICAiQmdOVkJBc01FVUpCUVNC
RFpYSjBhV1pwWTJGMGFXOXVNUk13RVFZRFZRUUtEQXBCY0hCc1pTQkpibU11TVJNdyIgKworICAg
ICAgICAiRVFZRFZRUUlEQXBEWVd4cFptOXlibWxoTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemow
REFRY0RRZ0FFdkNqZSIgKworICAgICAgICAiUHpyNlNnNzZYTW9IdUdhYlBhRzZ6anBMRkw4WmQ4
Lzc0SGg1UGNMMlpxK28rZjdFTlhYKzduRVhYWXQwUzhVeCIgKworICAgICAgICAiNVRJUnc0aGdi
ZnhYUWJXTEVxTTVNRGN3REFZRFZSMFRBUUgvQkFJd0FEQU9CZ05WSFE4QkFmOEVCQU1DQlBBdyIg
KworICAgICAgICAiRndZSktvWklodmRqWkFnQ0JBb3dDS0VHQkFSMFpYTjBNQW9HQ0NxR1NNNDlC
QU1DQTBnQU1FVUNJQWxLOEE4SSIgKworICAgICAgICAiazQzVGJ2S3VZR0haczFEVGdwVHdtS1RC
dklVdzVid2dadVluQWlFQXR1SmpETEtiR05KQUpGTWk1ZGVFQnFubyIgKworICAgICAgICAicEJU
Q3FiZmJESmNjZnlRcGpuWT0iOworICAgIGNvbnN0IHRlc3RBdHRlc3RhdGlvbklzc3VpbmdDQUNl
cnRpZmljYXRlQmFzZTY0ID0KKyAgICAgICAgIk1JSUNJekNDQWFpZ0F3SUJBZ0lJZU5qaEc5dG5E
R2d3Q2dZSUtvWkl6ajBFQXdJd1V6RW5NQ1VHQTFVRUF3d2UiICsKKyAgICAgICAgIlFtRnphV01n
UVhSMFpYTjBZWFJwYjI0Z1ZYTmxjaUJTYjI5MElFTkJNUk13RVFZRFZRUUtEQXBCY0hCc1pTQkoi
ICsKKyAgICAgICAgImJtTXVNUk13RVFZRFZRUUlEQXBEWVd4cFptOXlibWxoTUI0WERURTNNRFF5
TURBd05ESXdNRm9YRFRNeU1ETXkiICsKKyAgICAgICAgIk1qQXdNREF3TUZvd1V6RW5NQ1VHQTFV
RUF3d2VRbUZ6YVdNZ1FYUjBaWE4wWVhScGIyNGdWWE5sY2lCVGRXSWciICsKKyAgICAgICAgIlEw
RXhNUk13RVFZRFZRUUtEQXBCY0hCc1pTQkpibU11TVJNd0VRWURWUVFJREFwRFlXeHBabTl5Ym1s
aE1Ga3ciICsKKyAgICAgICAgIkV3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFb1NaLzF0
OWVCQUVWcDVhOFByWGFjbWJHYjh6TkMxWDMiICsKKyAgICAgICAgIlN0TEk5WU82WTBDTDdibEht
U0dtakdXVHdENFEraTBKMkJZMytiUEhUR1J5QTlqR0IzTVNiYU5tTUdRd0VnWUQiICsKKyAgICAg
ICAgIlZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZkJnTlZIU01FR0RBV2dCU0Q1YU1obnJCMHcvbGhr
UDJYVGlNUWRxU2oiICsKKyAgICAgICAgIjhqQWRCZ05WSFE0RUZnUVU1bVdmMURZTFRYVWRROXht
T0gvdXFlTlNEODB3RGdZRFZSMFBBUUgvQkFRREFnRUciICsKKyAgICAgICAgIk1Bb0dDQ3FHU000
OUJBTUNBMmtBTUdZQ01RQzNNMzYwTEx0SlM2MFo5cTN2VmpKeE1nTWNGUTFyb0dUVWNLcXYiICsK
KyAgICAgICAgIlcrNGhKNENlSmp5U1hUZ3E2SUVIbi95V2FiNENNUUNtNU5uSzZTT1NLK0FxV3Vt
OWxMODdXM0U2QUExZjJUdkoiICsKKyAgICAgICAgIi9oZ29rLzM0anI5M25oUzg3dE9RTmR4RFM4
enlpcXc9IjsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7CisgICAgICAgICAgICBsb2Nh
bDogeworICAgICAgICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAorICAgICAg
ICAgICAgICAgIGFjY2VwdEF0dGVzdGF0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgIHByaXZh
dGVLZXlCYXNlNjQ6IHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsCisgICAgICAgICAgICAgICAg
dXNlckNlcnRpZmljYXRlQmFzZTY0OiB0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCwK
KyAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0OiB0ZXN0QXR0
ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZUJhc2U2NCB9fSk7CisgICAgICAgIGludGVybmFs
cy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsKKyAgICB9CisKKyAg
ICBjb25zdCBvcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgIHJw
OiB7CisgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2Vl
ZCIsCisgICAgICAgICAgICAgICAgaWQ6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAgICBwdWJLZXlDcmVk
UGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICB0
aW1lb3V0OiAxMDAsCisgICAgICAgIH0KKyAgICB9OworCisgICAgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAvLyBjb25z
b2xlLmxvZygiU3VjY2VlZGVkISIpOworICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiU3VjY2VlZGVkISIpOworICAgIH0sIGVycm9y
ID0+IHsKKyAgICAgICAgLy8gY29uc29sZS5sb2coZXJyb3IubWVzc2FnZSk7CisgICAgICAgIHdp
bmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKGVycm9y
Lm1lc3NhZ2UpOworICAgIH0pOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391478</attachid>
            <date>2020-02-22 21:59:12 -0800</date>
            <delta_ts>2020-02-23 00:09:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208087-20200222215912.patch</filename>
            <type>text/plain</type>
            <size>99467</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uMmNlMDBiNjNjNTRkNzc4NTMzYjVkYjY5YzgxYTE1
NWQwOGJmNzgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAyLTIxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmhhbmNlcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgdG8gYWNj
b21tb25kYXRlIHJlc3BvbnNlcworICAgICAgICByZXR1cm5lZCBmcm9tIHRoZSBwbGF0Zm9ybSBh
dXRoZW50aWNhdG9yLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRB
dXRoZW50aWNhdG9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGljYXRv
ckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGlzcGxheU5hbWUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpudW1iZXJPZkNyZWRlbnRp
YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZTo6YWNjZXNzQ29udHJvbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldFNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXREaXNwbGF5TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE51bWJlck9m
Q3JlZGVudGlhbHMpOgorCiAyMDIwLTAyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUgYWZ0
ZXIgcjI1NjgwOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1NjEwMmJjYzg4Y2FiN2IwNjhiNGY0ZTJiNTk5MmYwNzdk
ZDRiZTMwLi40ZTUxMGI0MDJjMzU2MGQwYTdhMzdiNzc1NDhjOWMyMzc4YTdmODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0wMi0yMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSBmb3IgdGhlIHBs
YXRmb3JtIGF1dGhlbnRpY2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODA4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNjkzMDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGVyZSBpcyB0
aGUgbmV3bHkgYWRkZWQgU1BJOgorICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CisgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yLAorICAgICAgICAg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCwK
KyAgICAgICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlh
bCwKKyAgICAgICAgfTsKKworICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tX
ZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydCkgeworICAgICAgICAgICAgLi4uCisgICAgICAgICAg
ICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAorICAgICAgICB9OworCisg
ICAgICAgIEBwcm90b2NvbCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2Jq
ZWN0PgorICAgICAgICBAb3B0aW9uYWwKKyAgICAgICAgLi4uCisgICAgICAgIC0gKHZvaWQpcGFu
ZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2VyV2l0aEFjY2Vz
c0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBA
ZW5kCisKKyAgICAgICAgSWxsdXN0cmF0aW9uczoKKyAgICAgICAgMSkgX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbFVwZGF0ZTogdGhyZWUgZXJyb3IgYXJlIGFkZGVkIHRvIGhlbHAgY2xpZW50cyB0
byBpbmZvcm0gdXNlcnMuCisgICAgICAgIGEpIFdLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBRXJyb3I6IEFuIGludGVybmFsIGVycm9yLCBjbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMg
YW5kIHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0KKyAgICAgICAgYXV0aGVudGljYXRpb24gcHJvY2Vz
cy4gVGhpcyBlcnJvciBjYW4gYmUgcmV0dXJuZWQgYXQgYW55IHRpbWUuCisgICAgICAgIGIpIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw6IEl0IG1l
YW5zIGEgY3JlZGVudGlhbCBpcyBmb3VuZCB0byBtYXRjaCBhbiBlbnRyeSBpbiB0aGUKKyAgICAg
ICAgZXhjbHVkZUxpc3QuIENsaWVudHMgc2hvdWxkIGluZm9ybSB1c2VycyBhbmQgdGVybWluYXRl
IHRoZSBwbGF0Zm9ybSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLiBUaGlzIGVycm9yIHdpbGwgb25s
eSBiZQorICAgICAgICByZXR1cm5lZCBkdXJpbmcgbWFrZUNyZWRlbnRpYWwgYW5kIGJlZm9yZSB2
ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2wgZGVsZWdhdGUuCisgICAgICAgIGMpIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlhbDogSXQgbWVhbnMgbm8gY3JlZGVu
dGlhbHMgYXJlIGZvdW5kLiBDbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMgYW5kCisgICAgICAg
IHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRpb24gcHJvY2Vzcy4gVGhpcyBlcnJv
ciB3aWxsIG9ubHkgYmUgcmV0dXJuZWQgZHVyaW5nIGdldEFzc2VydGlvbiBhbmQgYmVmb3JlCisg
ICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbCBkZWxlZ2F0ZS4KKworICAgICAgICAy
KSBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydDogX1dLV2ViQXV0aGVudGljYXRpb25UcmFu
c3BvcnRJbnRlcm5hbCBpcyBhZGRlZCBzdWNoIHRoYXQgY2xpZW50cyBjYW4gbGVhcm4gcGxhdGZv
cm0KKyAgICAgICAgYXV0aGVudGljYXRvciB3aWxsIGJlIHVzZWQgZnJvbSBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLnRyYW5zcG9ydHMuCisKKyAgICAgICAgMykgdmVyaWZ5VXNlcldpdGhBY2Nl
c3NDb250cm9sOiBBIGRlbGVnYXRlIHRoYXQgd2lsbCBiZSBjYWxsZWQgZHVyaW5nIG1ha2VDcmVk
ZW50aWFsIG9yIGdldEFzc2VydGlvbiB3aGVuIHRoZSBwbGF0Zm9ybQorICAgICAgICBhdXRoZW50
aWNhdG9yIGlzIGludm9sdmVkLiBUaGlzIGRlbGVnYXRlIGlzIHVzZWQgdG8gb2J0YWluIHVzZXIg
dmVyaWZpY2F0aW9uIGZyb20gYSBMQUNvbnRleHQuIEluIGFkZGl0aW9uLCB0aGUgTEFDb250ZXh0
CisgICAgICAgIHNob3VsZCBldmFsdWF0ZSB0aGUgcGFzc2VkIGFjY2Vzc0NvbnRyb2wsIHN1Y2gg
dGhhdCB0aGUgU0VQIHByb3RlY3RlZCBjcmVkZW50aWFsIHByaXZhdGUga2V5IGNhbiBiZSB1c2Vk
LiBBIHR5cGljYWwKKyAgICAgICAgZXhhbXBsZSB3aWxsIGJlIFtMQUNvbnRleHQgZXZhbHVhdGVB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJh
dGlvblVzZUtleVNpZ24gbG9jYWxpemVkUmVhc29uOnJlcGx5Ol0uCisgICAgICAgIE5vdGVkLCBm
b3IgZ2V0QXNzZXJ0aW9uLCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZSB3aWxsIGJlIGNhbGxlZCBi
ZWZvcmUgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sLiBTbyB1c2VycyBuZWVkIHRvIGJlCisg
ICAgICAgIHByb21wdGVkIHRvIHNlbGVjdCBhIGNyZWRlbnRpYWwgYmVmb3JlIHRoZSB1c2VyIHZl
cmlmaWNhdGlvbi4KKworICAgICAgICBJbiB0aGUgc2NlbmFyaW8gd2hlbiBib3RoIHRoZSBwbGF0
Zm9ybSBhdXRoZW50aWNhdG9yIGFuZCBleHRlcm5hbCBhdXRoZW50aWNhdG9ycyBhcmUgcmVxdWVz
dGVkLiBDbGllbnRzIGFyZSBhZHZpc2VkIHRvCisgICAgICAgIHdhaXQgdW50aWwgdmVyaWZ5VXNl
cldpdGhBY2Nlc3NDb250cm9sIHRvIHNob3cgdGhlIGNvbWJpbmVkIFVJLiBJZiBhbnkgb2YgdGhl
IExBRXJyb3IgaXMgcmVjZWl2ZWQgYmVmb3JlCisgICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNz
Q29udHJvbCwgY2xpZW50cyBjYW4gdGhlbiBvbmx5IHNob3cgdGhlIGV4dGVybmFsIGF1dGhlbnRp
Y2F0b3IgVUkuIEFsc28sIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IgYW5kCisgICAgICAgIGV4dGVy
bmFsIGF1dGhlbnRpY2F0b3JzIGFyZSBiZWluZyBkaXNjb3ZlcmVkIGF0IHRoZSBzYW1lIHRpbWUs
IHdoaWNoIG1lYW5zLCBhIHVzZXIgY2FuIHBsdWcgaW4gYSBzZWN1cml0eSBrZXkgYXQgYW55dGlt
ZS4KKyAgICAgICAgSWYgYSB2YWxpZCByZXNwb25zZSBpcyByZWNlaXZlZCBmcm9tIHRoZSBzZWN1
cml0eSBrZXksIHRoZSB3aG9sZSBjZXJlbW9ueSB3aWxsIGJlIHRlcm1pbmF0ZWQuCisKKyAgICAg
ICAgQmVzaWRlcyBpbnRyb2R1Y2luZyB0aGUgU1BJLCBhbmQgYWxsIHRoZSBwbHVtYmluZ3MgdG8g
bWFrZSBpdCBoYXBwZW4uIFRoaXMgcGF0Y2ggYWxzbzoKKyAgICAgICAgMSkgYWRkcyBMb2NhbEF1
dGhlbnRpY2F0aW9uU1BJLCB3aGljaCBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBM
QUNvbnRleHQgaXMgdW5sb2NrZWQgb3Igbm90OworICAgICAgICAyKSBpbXByb3ZlcyBNb2NrTG9j
YWxDb25uZWN0aW9uIHN1Y2ggdGhhdCBtb2NrIHRlc3RpbmcgY2FuIHN0aWxsIGJlIHJhbi4KKwor
ICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHA6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06Cisg
ICAgICAgICh3a1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b05TRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TG9j
YWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZCk6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyQXR0ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6
OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2Vu
dGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6Zmls
dGVyUmVzcG9uc2VzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5l
Y3Rpb246OmlzVW5sb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rp
b246OmdldFVzZXJDb25zZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9j
YWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6d2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdl
YktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmZpbHRlclJlc3BvbnNlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3Jl
ZGVudGlhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQg
aGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZS5jcHAKaW5kZXggNWQzMDJmOGI4ZmMzNWRhMWU2Yzk0NmUxMTIxOTY3ZDYyZTAwYTQ5OS4u
NDVlYTFlNWZhNGI0YTZiOGY0MTQ2ODAwZmU5NjE1ZDRhNTJkOGNhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0
ZShSZWY8QQogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAotUmVmPEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50
aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8
dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRh
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB1c2VySGFuZGxlKQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlcmhhbmRsZUJ1ZmZl
cjsKICAgICBpZiAoIXVzZXJIYW5kbGUuaXNFbXB0eSgpKQpAQCAtNDgsNiArNDgsMTYgQEAgUmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVh
dGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhl
bnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZm
ZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1
c2VyaGFuZGxlQnVmZmVyKSwgV1RGOjpudWxsb3B0KTsKIH0KIAorUmVmPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUo
UmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwg
U2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RG
TW92ZSh1c2VySGFuZGxlKSwgYWNjZXNzQ29udHJvbCkpOworfQorCit2b2lkIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6c2V0QXV0aGVudGljYXRvckRhdGEoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSkKK3sKKyAgICBtX2F1dGhlbnRpY2F0b3JEYXRhID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0
b3JEYXRhLnNpemUoKSk7Cit9CisKIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2ln
bmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSkKICAgICA6IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKICAgICAsIG1fYXV0aGVudGljYXRvckRhdGEo
V1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCkBAIC01Niw2ICs2NiwxMyBAQCBBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8
QXJyYXlCdWZmZXI+JgogewogfQogCitBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJl
ZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2wpCisgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCkpCisgICAg
LCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKKyAgICAsIG1fYWNjZXNzQ29udHJv
bChhY2Nlc3NDb250cm9sKQoreworfQorCiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byBkYXRh
ID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjpkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaAppbmRleCBkNzBhOWNjZjhmMzkxYjBkZDYyYzJhMTE0ZTExNTJmOWY2YzBkNmEyLi4x
MWQ1NDYyODg5NzNiM2IzMTRkYWUxMGNhZGE5Mjc4MTVmZjA5OTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmgKQEAgLTI4LDYgKzI4LDggQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSwzMiArMzcsMzggQEAgY2xhc3MgQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0
ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNh
dG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIHVzZXJIYW5kbGUsIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91
dHB1dHM+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
PiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNl
ckhhbmRsZSwgU2VjQWNjZXNzQ29udHJvbFJlZik7CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCi0gICAgQXJyYXlCdWZmZXIqIGF1dGhl
bnRpY2F0b3JEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5wdHIoKTsg
fQotICAgIEFycmF5QnVmZmVyKiBzaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBtX3NpZ25hdHVy
ZS5wdHIoKTsgfQorICAgIEFycmF5QnVmZmVyKiBhdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXV0aGVudGljYXRvckRhdGEuZ2V0KCk7IH0KKyAgICBBcnJheUJ1ZmZlciogc2ln
bmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmUuZ2V0KCk7IH0KICAgICBBcnJheUJ1
ZmZlciogdXNlckhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckhhbmRsZS5nZXQoKTsgfQor
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlOYW1lOyB9
CisgICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX251bWJl
ck9mQ3JlZGVudGlhbHM7IH0KKyAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wo
KSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc0NvbnRyb2wuZ2V0KCk7IH0KIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0QXV0aGVudGljYXRvckRhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7
CisgICAgdm9pZCBzZXRTaWduYXR1cmUoUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSkgeyBt
X3NpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKTsgfQogICAgIHZvaWQgc2V0TmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQotICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZvaWQgc2V0RGlzcGxheU5hbWUoY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSkgeyBtX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7IH0K
LSAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
TmFtZTsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZDcmVkZW50aWFscyhzaXplX3QgbnVtYmVyT2ZD
cmVkZW50aWFscykgeyBtX251bWJlck9mQ3JlZGVudGlhbHMgPSBudW1iZXJPZkNyZWRlbnRpYWxz
OyB9Ci0gICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX251
bWJlck9mQ3JlZGVudGlhbHM7IH0KIAogcHJpdmF0ZToKICAgICBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxB
cnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKKyAgICBBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYs
IFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gVHlwZTo6QXNzZXJ0aW9uOyB9CiAgICAgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBk
YXRhKCkgY29uc3QgZmluYWw7CiAKLSAgICBSZWY8QXJyYXlCdWZmZXI+IG1fYXV0aGVudGljYXRv
ckRhdGE7Ci0gICAgUmVmPEFycmF5QnVmZmVyPiBtX3NpZ25hdHVyZTsKKyAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG1fYXV0aGVudGljYXRvckRhdGE7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBt
X3NpZ25hdHVyZTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fdXNlckhhbmRsZTsKIAogICAg
IFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZGlzcGxheU5hbWU7CiAgICAgc2l6ZV90IG1f
bnVtYmVyT2ZDcmVkZW50aWFscyB7IDAgfTsKKyAgICBSZXRhaW5QdHI8U2VjQWNjZXNzQ29udHJv
bFJlZj4gbV9hY2Nlc3NDb250cm9sOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50aWNh
dGlvblNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50
aWNhdGlvblNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3YTBmNmQwM2YwY2EyNWM3ZTMwNjEyNTU2NDk1N2Y2
MTBhOGFhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9D
b2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxMb2NhbEF1dGhlbnRpY2F0aW9uL0xvY2FsQXV0
aGVudGljYXRpb24uaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQg
PExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxBdXRoZW50aWNhdGlvbl9Qcml2YXRlLmg+CisKKyNl
bHNlCisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIExBT3B0aW9uKSB7CisgICAgTEFPcHRp
b25Ob3RJbnRlcmFjdGl2ZSwKK307CisKK0BpbnRlcmZhY2UgTEFDb250ZXh0KFByaXZhdGUpIDxO
U1NlY3VyZUNvZGluZz4KKworLSAoTlNEaWN0aW9uYXJ5ICopZXZhbHVhdGVQb2xpY3k6KExBUG9s
aWN5KXBvbGljeSBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zIGVycm9yOihOU0Vycm9y
ICoqKWVycm9yOworCitAZW5kCisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuY3BwCmluZGV4IDBjZGRiY2Y0OTc2MzM5ODI0NzU5ZmVlMWEwNTVhZjU2YWI1
ZjRkNTUuLmU1Y2I0NzM4NjliZjE3ZjQwMzBkODNmZWZkYjQ4ZGM0MmEyMzk2NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRp
b25QYW5lbC5jcHAKQEAgLTUzLDYgKzUzLDggQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbDo6V2Vi
QXV0aGVudGljYXRpb25QYW5lbChjb25zdCBBdXRoZW50aWNhdG9yTWFuYWdlciYgbWFuYWcKICAg
ICAgICAgbV90cmFuc3BvcnRzLnVuY2hlY2tlZEFwcGVuZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpVc2IpOwogICAgIGlmICh0cmFuc3BvcnRzLmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ6Ok5mYykpCiAgICAgICAgIG1fdHJhbnNwb3J0cy51bmNoZWNrZWRBcHBlbmQoQXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6TmZjKTsKKyAgICBpZiAodHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkpCisgICAgICAgIG1fdHJhbnNwb3J0cy51bmNoZWNr
ZWRBcHBlbmQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpOwogfQogCiBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsOjp+V2ViQXV0aGVudGljYXRpb25QYW5lbCgpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IDQ1OTY0NGVlM2U2ZWI2NTFjMjkyZWYzZmI0OWIz
YjRhMjZhYzc2OTguLjhjMzY4NTMzZWEwYjIxNGYwMWJhN2NiZDlkZDViNTljYTUyZTE0ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaApAQCAtMzAsOCArMzAsMTEgQEAKICNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQ
SS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitPQkpDX0NMQVNTIExBQ29u
dGV4dDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOwogfQpAQCAtNTIsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpc21pc3NQYW5lbChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KSBjb25zdCB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4mJiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0IHsgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsgY29tcGxldGlvbkhh
bmRsZXIocmVzcG9uc2VzWzBdKTsgfQorICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCmluZGV4IDQz
MWM2MzNiMGZlYjBiNTUyYTZiOWQxODdlYWQzZDZmYjViY2M4YzIuLmY3MmViMGFlYTNmNDQ1ZTE2
MTkwMTM5NDk0OTM1NzIxOGJjZjQ4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaApAQCAt
MzEsNiArMzEsNyBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xhc3MgTEFDb250
ZXh0OwogQGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xh
c3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIApAQCAtNDYsNiArNDcsOSBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CiAg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkJsb2NrZWQsCiAgICAgX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkF1dGhCbG9ja2VkLAogICAgIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVMQUVycm9yLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVM
QUR1cGxpY2F0ZUNyZWRlbnRpYWwsCisgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBTm9DcmVkZW50aWFsLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRo
ZW50aWNhdGlvblJlc3VsdCkgewpAQCAtNTYsNiArNjAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgewogdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnQpIHsKICAgICBfV0tXZWJBdXRo
ZW50aWNhdGlvblRyYW5zcG9ydFVTQiwKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9y
dE5GQywKKyAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAogfSBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKQEAgLTcx
LDYgKzc2LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRp
b25UeXBlKSB7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFu
ZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OihfV0tXZWJBdXRoZW50
aWNhdGlvblJlc3VsdClyZXN1bHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6KE5TVUludGVnZXIpcmV0
cmllcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2Vy
V2l0aEFjY2Vzc0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAyZWIzMWU4MTJjOTU5OGU4OTg4
NDBiOTU1OGNlMzMyZjJlZDY3OWZmLi4xOTczYjBmNTY0ZDI1MWIyMGNmMjZhMzZhM2E2NGQ4YTI1
MjgyMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNzMsNiArNzMsOCBAQCBz
dGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnQgd2tXZWJBdXRoZW50aWNhdGlvblRy
YW5zcG9ydChXZWJDb3JlOjpBdXRoZQogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRp
b25UcmFuc3BvcnRVU0I7CiAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpOZmM6CiAgICAgICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydE5GQzsK
KyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsOgorICAg
ICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRJbnRlcm5hbDsKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIF9X
S1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCmluZGV4IGQx
NmIxN2Q1ZmM2YmM3OTUyMTRiMjdlODI1N2ZkNmYwMGJkNGM3ZTUuLjkxZDk5ZWQ1MmI2ZGIxZGVm
YWIxNTk2MjQzMTA2NzlmM2NhZDY3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKQEAgLTM0LDYgKzM0
LDkgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmg+CisKK09CSkNfQ0xBU1MgTEFDb250ZXh0OwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7CkBAIC01Myw2ICs1Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRh
dGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V1RGOjpTdHJpbmcmKT4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoTEFDb250ZXh0ICopPiYmKSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRp
Y2F0b3IoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5k
ZXggNzM2MjZjYzA1MDI3YWU2ZTIxYjI4MTQzYmM4MDA5YjkyYjFhNzViNC4uODg1OTcxZjE4YjQy
MWM2YjBhNjg0YWNhODk2MjNlY2MzMjExNjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmNwcApAQCAtMjk1LDYgKzI5NSwxNCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShjb25zdCBIYXNoU2V0PFJlZjxBdXRoZW50aWNhdAog
ICAgIH0pOwogfQogCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChM
QUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmV0YWluUHRyPFNlY0Fj
Y2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2wgPSBhY2Nlc3NDb250cm9sUmVmOworICAgIGRp
c3BhdGNoUGFuZWxDbGllbnRDYWxsKFthY2Nlc3NDb250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250
cm9sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNv
bnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYgcGFuZWwpIG11dGFibGUgeworICAgICAg
ICBwYW5lbC5jbGllbnQoKS52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwogVW5pcXVlUmVmPEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlU2VydmljZShB
dXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNl
cnZpY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikgY29uc3QKIHsKICAgICByZXR1cm4gQXV0aGVudGlj
YXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZSh0cmFuc3BvcnQsIG9ic2VydmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IGMxNTFkZDkzMjY1OWY2MjA2YzBmMTVmYmVh
MWU1YzA1NGExYTBmOWUuLmU4ZjJkMmJmZDgwYzEwY2FhY2Y4MzA1ZDQ3M2Q1YmQzZjhhZWFmYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaApAQCAtODMsNiArODMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgYXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRp
b25TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAg
IHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGZpbmFsOwogCiAgICAgLy8gT3ZlcnJpZGVuIGJ5
IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci4KICAgICB2aXJ0dWFsIFVuaXF1ZVJlZjxBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gY3JlYXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNh
dG9yVHJhbnNwb3J0LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRM
aW5rLmgKaW5kZXggMTU1MmIyNzM5MDNhYTY0ODJhMzkzYjhkMzg3OWEwM2Y0OGU2NTVhMi4uZTg0
OTEwMjk1YmYzYTI1YTRiYzA2ZTM1MWRiM2QxNGZiN2ZjZmI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNh
dGlvblNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbXBvcnQgPExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxB
dXRoZW50aWNhdGlvbi5oPgorI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIgogI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURF
UihXZWJLaXQsIExvY2FsQXV0aGVudGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IuaAppbmRleCBkZWQ5OGYyZDc2YWM0ZGU5NTFhNTg5NDBiMzZkMmI2ZTc0YWY0
NGM3Li45YTQ3NTcwZmU3MGIzYjcyNDhjY2UxMDUzMTRlNTBiOGNjOTAwZGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAtMzksMTIgKzM5LDEzIEBAIGNsYXNz
IExvY2FsQXV0aGVudGljYXRvciBmaW5hbCA6IHB1YmxpYyBBdXRoZW50aWNhdG9yIHsKIHB1Ymxp
YzoKICAgICAvLyBIZXJlIGlzIHRoZSBGU00uCiAgICAgLy8gTWFrZUNyZWRlbnRpYWw6IEluaXQg
PT4gUmVxdWVzdFJlY2VpdmVkID0+IFVzZXJDb25zZW50ZWQgPT4gQXR0ZXN0ZWQgPT4gRW5kCi0g
ICAgLy8gR2V0QXNzZXJ0aW9uOiBJbml0ID0+IFJlcXVlc3RSZWNlaXZlZCA9PiBVc2VyQ29uc2Vu
dGVkID0+IEVuZAorICAgIC8vIEdldEFzc2VydGlvbjogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQg
PT4gUmVzcG9uc2VTZWxlY3RlZCA9PiBVc2VyQ29uc2VudGVkID0+IEVuZAogICAgIGVudW0gY2xh
c3MgU3RhdGUgewogICAgICAgICBJbml0LAogICAgICAgICBSZXF1ZXN0UmVjZWl2ZWQsCiAgICAg
ICAgIFVzZXJDb25zZW50ZWQsCiAgICAgICAgIEF0dGVzdGVkLAorICAgICAgICBSZXNwb25zZVNl
bGVjdGVkCiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8TG9jYWxBdXRoZW50aWNhdG9yPiBjcmVh
dGUoVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQpAQCAtNTYsMTQgKzU3
LDE4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJl
ZjxMb2NhbENvbm5lY3Rpb24+JiYpOwogCiAgICAgdm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFs
OwotICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNB
Y2Nlc3NDb250cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50LCBMQUNvbnRleHQg
Kik7CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNl
Y0FjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqKTsKICAgICB2b2lkIGNvbnRpbnVlTWFrZUNy
ZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiwgVmVjdG9yPHVpbnQ4X3Q+JiYgY3JlZGVu
dGlhbElkLCBWZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwgTlNBcnJheSAqY2VydGlmaWNhdGVz
LCBOU0Vycm9yICopOwogCiAgICAgdm9pZCBnZXRBc3NlcnRpb24oKSBmaW5hbDsKLSAgICB2b2lk
IGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6
VXNlckNvbnNlbnQsIExBQ29udGV4dCAqLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRp
YWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFuZGxlKTsKKyAgICB2b2lkIGNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVNlbGVjdGVkKFJlZjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworICAgIHZvaWQgY29udGludWVHZXRBc3NlcnRp
b25BZnRlclVzZXJDb25zZW50ZWQoTEFDb250ZXh0ICosIFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworCisgICAgdm9pZCByZWNlaXZlRXhjZXB0aW9uKFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmJiwgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgPSBXZWJBdXRo
ZW50aWNhdGlvblN0YXR1czo6TEFFcnJvcikgY29uc3Q7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsg
U3RhdGU6OkluaXQgfTsKICAgICBVbmlxdWVSZWY8TG9jYWxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b247CisgICAgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4gbV9hc3NlcnRpb25SZXNwb25zZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCAyNWRkMWM2YWU5
NjgxZjBlZjc4Y2RiMWYzZDRjNDFiYTRlNGJiNWRlLi43OGI3M2RlMWM1MGMxMTQ2N2ZjYWQ1ODFm
NzcxNDZhZmZhNDQ3NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9y
Lm1tCkBAIC04Niw2ICs4NiwxOCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRv
TlNEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKICAgICByZXR1cm4gYWRvcHROUyhb
W05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXpl
KCldKTsKIH0KIAorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNEYXRhPiB0b05TRGF0YShBcnJh
eUJ1ZmZlciogYnVmZmVyKQoreworICAgIEFTU0VSVChidWZmZXIpOworICAgIC8vIEZJWE1FKDE4
MzUzNCk6IENvbnNpZGVyIHVzaW5nIGluaXRXaXRoQnl0ZXNOb0NvcHkuCisgICAgcmV0dXJuIGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3Ro
OmJ1ZmZlci0+Ynl0ZUxlbmd0aCgpXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVm
ZmVyPiB0b0FycmF5QnVmZmVyKE5TRGF0YSAqZGF0YSkKK3sKKyAgICByZXR1cm4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwg
ZGF0YS5sZW5ndGgpOworfQorCiB9IC8vIExvY2FsQXV0aGVudGljYXRvckludGVybmFsCiAKIExv
Y2FsQXV0aGVudGljYXRvcjo6TG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbikKQEAgLTEwOCw3ICsxMjAsNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAgIGlmIChub3RGb3VuZCA9PSBjcmVhdGlvbk9w
dGlvbnMucHViS2V5Q3JlZFBhcmFtcy5maW5kTWF0Y2hpbmcoW10gKGF1dG8mIHB1YktleUNyZWRQ
YXJhbSkgewogICAgICAgICByZXR1cm4gcHViS2V5Q3JlZFBhcmFtLnR5cGUgPT0gUHVibGljS2V5
Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSAmJiBwdWJLZXlDcmVkUGFyYW0uYWxnID09IENPU0U6
OkVTMjU2OwogICAgIH0pKSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEg
eyBOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9y
IGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRl
cnMuIl9zIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55
IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiJfcyB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTMxLDI0ICsxNDMsMjIgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJh
eVJlZiA9IG51bGxwdHI7CiAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0
Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJl
Zik7CiAgICAgICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkg
ewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBz
dGF0dXMpOwotICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25v
d25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICIsIHN0YXR1cykg
fSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3Ry
aW5nKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9
IGFkb3B0Q0YoYXR0cmlidXRlc0FycmF5UmVmKTsKIAotICAgICAgICAvLyBGSVhNRShyZGFyOi8v
cHJvYmxlbS8zNTkwMDU5Myk6IE5lZWQgdG8gb2J0YWluIHVzZXIgY29uc2VudCBhbmQgdGhlbiBy
ZXR1cm4gZGlmZmVyZW50IGVycm9yIGFjY29yZGluZyB0byB0aGUgcmVzdWx0LgorICAgICAgICAv
LyBGSVhNRTogTmVlZCB0byBvYnRhaW4gdXNlciBjb25zZW50IGFuZCB0aGVuIHJldHVybiBkaWZm
ZXJlbnQgZXJyb3IgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQuCiAgICAgICAgIGZvciAoTlNEaWN0
aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgaW4gKE5TQXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlSZWYpIHsK
ICAgICAgICAgICAgIE5TRGF0YSAqbnNDcmVkZW50aWFsSWQgPSBuc0F0dHJpYnV0ZXNbKGlkKWtT
ZWNBdHRyQXBwbGljYXRpb25MYWJlbF07CiAgICAgICAgICAgICBpZiAoZXhjbHVkZUNyZWRlbnRp
YWxJZHMuY29udGFpbnMoU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5zQ3Jl
ZGVudGlhbElkLmJ5dGVzKSwgbnNDcmVkZW50aWFsSWQubGVuZ3RoKSkpIHsKLSAgICAgICAgICAg
ICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiQXQg
bGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRl
bnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0p
OworICAgICAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBOb3RBbGxvd2VkRXJyb3IsICJB
dCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3Jl
ZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3Mg
fSwgV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxBRHVwbGljYXRlQ3JlZGVudGlhbCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAg
ICAgLy8gU3RlcCA2LgotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTAwNTkzKTogVXBk
YXRlIHRvIGEgZm9ybWFsIFVJLgogICAgIC8vIEdldCB1c2VyIGNvbnNlbnQuCiAgICAgUmV0YWlu
UHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2w7CiAgICAgewpAQCAtMTU2LDI3
ICsxNjYsMjUgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAg
ICAgICAgYWNjZXNzQ29udHJvbCA9IGFkb3B0Q0YoU2VjQWNjZXNzQ29udHJvbENyZWF0ZVdpdGhG
bGFncyhOVUxMLCBrU2VjQXR0ckFjY2Vzc2libGVXaGVuUGFzc2NvZGVTZXRUaGlzRGV2aWNlT25s
eSwga1NlY0FjY2Vzc0NvbnRyb2xQcml2YXRlS2V5VXNhZ2UgfCBrU2VjQWNjZXNzQ29udHJvbFVz
ZXJQcmVzZW5jZSwgJmVycm9yUmVmKSk7CiAgICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9w
dENGKGVycm9yUmVmKTsKICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICBMT0df
RVJST1IoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogJUAiLCAoTlNFcnJvciAqKWVy
cm9yUmVmKTsKLSAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtu
b3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogIiwg
U3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7Cisg
ICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJD
b3VsZG4ndCBjcmVhdGUgYWNjZXNzIGNvbnRyb2w6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9y
UmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVm
ID0gYWNjZXNzQ29udHJvbC5nZXQoKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRy
b2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250
ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICgh
d2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0g
dGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2xSZWYgPSBhY2Nlc3NDb250cm9sLmdldCgpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0g
W2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0gKExBQ29udGV4dCAqY29udGV4dCkgeworICAgICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIGNvbnNlbnQsIGNvbnRl
eHQpOwotICAgIH07Ci0gICAgbV9jb25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKLSAgICAgICAg
bWFrZVN0cmluZygiYWxsb3cgIl9zLCBjcmVhdGlvbk9wdGlvbnMucnAuaWQsICIgdG8gY3JlYXRl
IGEgcHVibGljIGtleSBjcmVkZW50aWFsIGZvciAiX3MsIGNyZWF0aW9uT3B0aW9ucy51c2VyLm5h
bWUpLAotICAgICAgICBhY2Nlc3NDb250cm9sUmVmLAotICAgICAgICBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNl
ckNvbnNlbnRlZChhY2Nlc3NDb250cm9sLmdldCgpLCBjb250ZXh0KTsKKyAgICAgICAgfTsKKyAg
ICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIH0KIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFr
ZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3ND
b250cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4
dCAqY29udGV4dCkKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJl
ZiwgTEFDb250ZXh0ICpjb250ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhl
bnRpY2F0b3JJbnRlcm5hbDsKIApAQCAtMTg0LDcgKzE5Miw3IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vz
c0NvbnRyCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOwogICAgIGF1dG8mIGNy
ZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAKLSAgICBpZiAoY29uc2VudCA9PSBMb2NhbENv
bm5lY3Rpb246OlVzZXJDb25zZW50OjpObykgeworICAgIGlmICghbV9jb25uZWN0aW9uLT5pc1Vu
bG9ja2VkKGNvbnRleHQpKSB7CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEg
eyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJfcyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMyw4ICsyMjEsNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nl
c3NDb250cgogICAgIH07CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbURlbGV0ZSgoX19i
cmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKICAgICBpZiAoc3RhdHVzICYmIHN0
YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4n
dCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogJWQiLCBzdGF0dXMpOwotICAgICAgICByZWNlaXZl
UmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4n
dCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2
ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZGVsZXRlIG9s
ZGVyIGNyZWRlbnRpYWw6ICIsIHN0YXR1cykgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTIyMiw3ICsyMjksNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cgogICAgIC8vIFRoZSBh
Ym92ZS10by1jcmVhdGUgcHJpdmF0ZSBrZXkgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIGtleWNoYWlu
IHdoaWxlIHVzaW5nIFNFUC4KICAgICBhdXRvIHByaXZhdGVLZXkgPSBtX2Nvbm5lY3Rpb24tPmNy
ZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KGNvbnRleHQsIGFjY2Vzc0NvbnRyb2xSZWYsIHNlY0F0
dHJMYWJlbCwgc2VjQXR0ckFwcGxpY2F0aW9uVGFnLmdldCgpKTsKICAgICBpZiAoIXByaXZhdGVL
ZXkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJv
ciwgIkNvdWxkbid0IGNyZWF0ZSBwcml2YXRlIGtleS4iX3MgfSk7CisgICAgICAgIHJlY2VpdmVF
eGNlcHRpb24oeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNDMsOCArMjUwLDcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50
ZWQoU2VjQWNjZXNzQ29udHIKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNSZWYgPSBudWxs
cHRyOwogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpY3JlZGVudGlhbElkUXVlcnksICZhdHRyaWJ1dGVzUmVmKTsK
ICAgICAgICAgaWYgKHN0YXR1cykgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBn
ZXQgQ3JlZGVudGlhbCBJRDogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgcmVjZWl2ZVJlc3Bv
bmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0
IENyZWRlbnRpYWwgSUQ6ICIsIHN0YXR1cykgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0
aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZXQgQ3JlZGVudGlhbCBJ
RDogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBhdXRvIHJldGFpbkF0dHJpYnV0ZXMgPSBhZG9wdENGKGF0dHJpYnV0ZXNSZWYpOwpAQCAtMjY4
LDggKzI3NCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyCiAgICAgICAgICAgICBwdWJsaWNL
ZXlEYXRhUmVmID0gYWRvcHRDRihTZWNLZXlDb3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihwdWJs
aWNLZXkuZ2V0KCksICZlcnJvclJlZikpOwogICAgICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9
IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAg
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBleHBvcnQgdGhlIHB1YmxpYyBrZXk6ICVAIiwg
KE5TRXJyb3IqKWVycm9yUmVmKTsKLSAgICAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNl
cHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBleHBvcnQgdGhl
IHB1YmxpYyBrZXk6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNj
cmlwdGlvbikpIH0pOworICAgICAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGV4cG9ydCB0aGUgcHVibGljIGtleTogIiwgU3Ry
aW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKCgo
TlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQoKSkubGVuZ3RoID09ICgxICsgMiAqIEVTMjU2
RmllbGRFbGVtZW50TGVuZ3RoKSk7IC8vIDA0IHwgWCB8IFkKQEAgLTMwOSw4ICszMTQsNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0
ZWQoU2VjS2V5UmVmIHByaXZhdGVLZQogICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6
Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0
aW9ucyk7CiAKICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBh
dHRlc3Q6ICVAIiwgZXJyb3IpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRh
IHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9u
KHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIC8vIEF0dGVzdGF0aW9uIENlcnRpZmljYXRlIGFuZCBBdHRlc3RhdGlvbiBJc3N1aW5nIENB
CkBAIC0zNDQsMTAgKzM0OCw5IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRp
b24oKQogICAgIC8vIFNraXAgU3RlcCA4IGFzIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQg
eWV0LgogICAgIC8vIFN0ZXAgMTIgaXMgaW1wbGljaXRseSBjYXB0dXJlZCBieSBhbGwgVW5rbm93
bkVycm9yIGV4Y2VwdGlvbiBjYWxsYmFja3MuCiAgICAgLy8gU3RlcCAzLTUuIFVubGlrZSB0aGUg
c3BlYywgaWYgYW4gYWxsb3cgbGlzdCBpcyBwcm92aWRlZCBhbmQgdGhlcmUgaXMgbm8gaW50ZXJz
ZWN0aW9uIGJldHdlZW4gZXhpc3Rpbmcgb25lcyBhbmQgdGhlIGFsbG93IGxpc3QsIHdlIGFsd2F5
cyByZXR1cm4gTm90QWxsb3dlZEVycm9yLgotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1
OTAwNTkzKTogTmVlZCB0byBpbmZvcm0gdXNlcnMuCiAgICAgYXV0byBhbGxvd0NyZWRlbnRpYWxJ
ZHMgPSBwcm9kdWNlSGFzaFNldChyZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKTsKICAg
ICBpZiAoIXJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuaXNFbXB0eSgpICYmIGFsbG93
Q3JlZGVudGlhbElkcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZv
dW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAg
ICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVu
dGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJf
cyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0zNjcsOCArMzcwLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0
b3I6OmdldEFzc2VydGlvbigpCiAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51
bGxwdHI7CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKICAgICBpZiAo
c3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBzdGF0dXMpOwotICAgICAgICByZWNl
aXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3Vs
ZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2Vw
dGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46
ICIsIHN0YXR1cykgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byByZXRhaW5B
dHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CkBAIC0zODYsNDEg
KzM4OCw2MSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAg
ICAgaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMgPSByZXN1bHQ7CiAgICAgfQogICAg
IGlmICghaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMuY291bnQpIHsKLSAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNo
ZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50
aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJv
ciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRh
Y2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0Ny
ZWRlbnRpYWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gU3RlcCA2LgotICAg
IGF1dG8gKnNlbGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXMgPSBtX2Nvbm5lY3Rpb24tPnNlbGVj
dENyZWRlbnRpYWwoaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMpOworICAgIGZvciAo
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGUgOiBpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRl
cykgeworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFkZChB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSgKKyAgICAgICAgICAgIHRvQXJy
YXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwKKyAgICAg
ICAgICAgIHRvQXJyYXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFn
XSksCisgICAgICAgICAgICAoX19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVb
KGlkKWtTZWNBdHRyQWNjZXNzQ29udHJvbF0pKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICB9CisgICAgbV9jb25uZWN0aW9uLT5m
aWx0ZXJSZXNwb25zZXMobV9hc3NlcnRpb25SZXNwb25zZXMpOworCisgICAgaWYgKGF1dG8qIG9i
c2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBhdXRvIGNhbGxiYWNrID0gW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29uc3QgQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlJiByZXNwb25zZSkgeworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBhdXRvIHJldHVyblJlc3BvbnNlID0gbV9hc3NlcnRpb25S
ZXNwb25zZXMudGFrZShjb25zdF9jYXN0PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSo+
KCZyZXNwb25zZSkpOworICAgICAgICAgICAgaWYgKCFyZXR1cm5SZXNwb25zZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVz
cG9uc2VTZWxlY3RlZChXVEZNb3ZlKCpyZXR1cm5SZXNwb25zZSkpOworICAgICAgICB9OworICAg
ICAgICBvYnNlcnZlci0+c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UobV9hc3NlcnRpb25SZXNwb25z
ZXMsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9Cit9CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmIHJlc3BvbnNlKQoreworICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOworICAgIG1fc3RhdGUgPSBT
dGF0ZTo6UmVzcG9uc2VTZWxlY3RlZDsKIAogICAgIC8vIFN0ZXAgNy4gR2V0IHVzZXIgY29uc2Vu
dC4KLSAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTkwMDU5Myk6IFVwZGF0ZSB0byBhIGZv
cm1hbCBVSS4KLSAgICBhdXRvIGNhbGxiYWNrID0gWwotICAgICAgICB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwKLSAgICAgICAgY3JlZGVudGlhbElkID0gdG9WZWN0b3Ioc2VsZWN0ZWRD
cmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXSksCi0gICAg
ICAgIHVzZXJoYW5kbGUgPSB0b1ZlY3RvcihzZWxlY3RlZENyZWRlbnRpYWxBdHRyaWJ1dGVzWyhp
ZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSkKLSAgICBdKExvY2FsQ29ubmVjdGlvbjo6VXNlckNv
bnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAg
ICBhdXRvIGFjY2Vzc0NvbnRyb2xSZWYgPSByZXNwb25zZS0+YWNjZXNzQ29udHJvbCgpOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXNw
b25zZSA9IFdURk1vdmUocmVzcG9uc2UpXSAoTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB3ZWFrVGhpcy0+
Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoY29uc2VudCwgY29udGV4dCwg
Y3JlZGVudGlhbElkLCB1c2VyaGFuZGxlKTsKLSAgICB9OwotICAgIE5TRGF0YSAqaWREYXRhID0g
c2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ107
Ci0gICAgU3RyaW5nVmlldyBpZFN0cmluZ1ZpZXcgeyBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+
KFtpZERhdGEgYnl0ZXNdKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFtpZERhdGEgbGVuZ3RoXSkg
fTsKLSAgICBtX2Nvbm5lY3Rpb24tPmdldFVzZXJDb25zZW50KAotICAgICAgICBtYWtlU3RyaW5n
KCJsb2cgaW50byAiLCByZXF1ZXN0T3B0aW9ucy5ycElkLCAiIHdpdGggIiwgaWRTdHJpbmdWaWV3
KSwKLSAgICAgICAgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpc2VsZWN0ZWRDcmVkZW50
aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSwKLSAgICAgICAgV1RGTW92
ZShjYWxsYmFjaykpOworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlR2V0QXNzZXJ0aW9u
QWZ0ZXJVc2VyQ29uc2VudGVkKGNvbnRleHQsIFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICAgICAg
fTsKKyAgICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIH0KIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6VXNlckNv
bnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFuZGxlKQordm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVk
KExBQ29udGV4dCAqY29udGV4dCwgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4mJiByZXNwb25zZSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50
aWNhdG9ySW50ZXJuYWw7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNl
aXZlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlc3BvbnNlU2VsZWN0ZWQpOwog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKIAotICAgIGlmIChjb25zZW50ID09
IExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQ6Ok5vKSB7CisgICAgaWYgKCFtX2Nvbm5lY3Rp
b24tPmlzVW5sb2NrZWQoY29udGV4dCkpIHsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDMyLDI1ICs0NTQsMjcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVk
KExvY2FsQ29ubmVjdGlvbjoKICAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShXVEY6
OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0
aW9ucykucnBJZCwgZ2V0QXNzZXJ0aW9uRmxhZ3MsIGNvdW50ZXIsIHsgfSk7CiAKICAgICAvLyBT
dGVwIDExLgotICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmU7CisgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gc2lnbmF0dXJlOwogICAgIHsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICpxdWVyeSA9
IEB7CisgICAgICAgIGF1dG8gcXVlcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworICAgICAgICBbcXVlcnkgYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OkB7
CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAogICAgICAgICAg
ICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKLSAg
ICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRvTlNEYXRhKGNyZWRlbnRp
YWxJZCkuZ2V0KCksCi0gICAgICAgICAgICAoaWQpa1NlY1VzZUF1dGhlbnRpY2F0aW9uQ29udGV4
dDogY29udGV4dCwKKyAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRv
TlNEYXRhKHJlc3BvbnNlLT5yYXdJZCgpKS5nZXQoKSwKICAgICAgICAgICAgIChpZClrU2VjUmV0
dXJuUmVmOiBAWUVTLAogI2lmIEhBVkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQogICAgICAg
ICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCiAjZWxzZQogICAg
ICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICNlbmRpZgotICAgICAgICB9Owor
ICAgICAgICB9XTsKKyAgICAgICAgLy8gY29udGV4dCBpcyBudWxscHRyIGluIG1vY2sgdGVzdGlu
Zy4KKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICBbcXVlcnkgc2V0T2JqZWN0OmNv
bnRleHQgZm9yS2V5OihpZClrU2VjVXNlQXV0aGVudGljYXRpb25Db250ZXh0XTsKICAgICAgICAg
Q0ZUeXBlUmVmIHByaXZhdGVLZXlSZWYgPSBudWxscHRyOwotICAgICAgICBPU1N0YXR1cyBzdGF0
dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnks
ICZwcml2YXRlS2V5UmVmKTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlN
YXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LmdldCgpLCAmcHJpdmF0ZUtl
eVJlZik7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291
bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICVkIiwgc3RhdHVzKTsKLSAgICAg
ICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VT
dHJpbmcoIkNvdWxkbid0IGdldCB0aGUgcHJpdmF0ZSBrZXkgcmVmZXJlbmNlOiAiLCBzdGF0dXMp
IH0pOworICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0
cmluZygiQ291bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICIsIHN0YXR1cykg
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byBwcml2YXRl
S2V5ID0gYWRvcHRDRihwcml2YXRlS2V5UmVmKTsKQEAgLTQ2MCwxOCArNDg0LDI3IEBAIHZvaWQg
TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRl
ZChMb2NhbENvbm5lY3Rpb246CiAKICAgICAgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxw
dHI7CiAgICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0aW5nIENGVHlwZVJlZiB0byBTZWNLZXlSZWYg
aXMgcXVpdGUgc3VidGxlIGhlcmUuCi0gICAgICAgIGF1dG8gc2lnbmF0dXJlUmVmID0gYWRvcHRD
RihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJlZikoKGlkKXByaXZhdGVL
ZXlSZWYpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNzYWdlWDk2MlNIQTI1Niwg
KF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYpKTsKKyAgICAgICAgc2ln
bmF0dXJlID0gYWRvcHRDRihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJl
ZikoKGlkKXByaXZhdGVLZXlSZWYpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNz
YWdlWDk2MlNIQTI1NiwgKF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYp
KTsKICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAg
ICBpZiAoZXJyb3JSZWYpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2VuZXJh
dGUgdGhlIHNpZ25hdHVyZTogJUAiLCAoTlNFcnJvciopZXJyb3JSZWYpOwotICAgICAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygi
Q291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJy
b3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhj
ZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZW5lcmF0ZSB0aGUg
c2lnbmF0dXJlOiAiLCBTdHJpbmcoKChOU0Vycm9yKillcnJvclJlZikubG9jYWxpemVkRGVzY3Jp
cHRpb24pKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBzaWdu
YXR1cmUgPSB0b1ZlY3RvcigoTlNEYXRhICopc2lnbmF0dXJlUmVmLmdldCgpKTsKICAgICB9CiAK
ICAgICAvLyBTdGVwIDEzLgotICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgdXNl
cmhhbmRsZSkpOworICAgIHJlc3BvbnNlLT5zZXRBdXRoZW50aWNhdG9yRGF0YShhdXRoRGF0YSk7
CisgICAgcmVzcG9uc2UtPnNldFNpZ25hdHVyZSh0b0FycmF5QnVmZmVyKChOU0RhdGEgKilzaWdu
YXR1cmUuZ2V0KCkpKTsKKyAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKHJlc3BvbnNlKSk7Cit9
CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0aW9uKEV4Y2VwdGlvbkRh
dGEmJiBleGNlcHRpb24sIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIHN0YXR1cykgY29uc3QKK3sK
KyAgICBMT0dfRVJST1IoZXhjZXB0aW9uLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgaWYg
KGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkKKyAgICAgICAgb2JzZXJ2ZXItPmF1
dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKHN0YXR1cyk7CisgICAgcmVjZWl2ZVJlc3BvbmQoV1RG
TW92ZShleGNlcHRpb24pKTsKKyAgICByZXR1cm47CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaAppbmRleCA5MTkxYjJjNjUzNDJjZDFi
NjU3MTI1YTIzMjY0NjE2ZmU4ZGUyMjlhLi41NDVhYzVmZjYxYjdiMmJhZTdkZTM4NzQyZDU2ODg4
ZTVmMDgxNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaApAQCAtNDYsMjMg
KzQ2LDE2IEBAIGNsYXNzIExvY2FsQ29ubmVjdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxDb25uZWN0aW9uKTsKIHB1Ymxp
YzoKLSAgICBlbnVtIGNsYXNzIFVzZXJDb25zZW50IHsKLSAgICAgICAgTm8sCi0gICAgICAgIFll
cwotICAgIH07Ci0KICAgICB1c2luZyBBdHRlc3RhdGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChOU0FycmF5ICosIE5TRXJyb3IgKik+OwotICAgIHVzaW5nIFVzZXJDb25zZW50
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJDb25zZW50KT47Ci0gICAgdXNp
bmcgVXNlckNvbnNlbnRDb250ZXh0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVz
ZXJDb25zZW50LCBMQUNvbnRleHQgKik+OwogCiAgICAgTG9jYWxDb25uZWN0aW9uKCkgPSBkZWZh
dWx0OwogICAgIHZpcnR1YWwgfkxvY2FsQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogICAgIC8v
IE92ZXJyaWRlZCBieSBNb2NrTG9jYWxDb25uZWN0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBnZXRV
c2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNl
ckNvbnNlbnRDb250ZXh0Q2FsbGJhY2smJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzVW5s
b2NrZWQoTEFDb250ZXh0ICopIGNvbnN0OwogICAgIHZpcnR1YWwgUmV0YWluUHRyPFNlY0tleVJl
Zj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRy
b2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNh
dGlvblRhZykgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGdldEF0dGVzdGF0aW9uKFNlY0tleVJl
ZiwgTlNEYXRhICphdXRoRGF0YSwgTlNEYXRhICpoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYp
IGNvbnN0OwotICAgIHZpcnR1YWwgTlNEaWN0aW9uYXJ5ICpzZWxlY3RDcmVkZW50aWFsKGNvbnN0
IE5TQXJyYXkgKikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGZpbHRlclJlc3BvbnNlcyhIYXNo
U2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYpIGNvbnN0
IHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxD
b25uZWN0aW9uLm1tCmluZGV4IDhiYWVlZTcwOWZmYzdkM2NlNWNiOGU4MDE0YzMxM2I4YTBhZTAx
YjQuLjUzZTAxMjNhZDdhZGE1NTc1M2MyMjI5OWZlODllODg0MDJmYzIxZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29u
bmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KQEAgLTM5LDIyICszOSwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0
IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIFVzZXJD
b25zZW50Q29udGV4dENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Citib29sIExv
Y2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZChMQUNvbnRleHQgKmNvbnRleHQpIGNvbnN0CiB7Ci0g
ICAgYXV0byBjb250ZXh0ID0gYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRd
KTsKLSAgICBhdXRvIHJlcGx5ID0gbWFrZUJsb2NrUHRyKFtjb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgICAgIFVzZXJDb25zZW50IGNvbnNlbnQgPSBVc2VyQ29uc2VudDo6WWVzOwotICAgICAg
ICBpZiAoIXN1Y2Nlc3MgfHwgZXJyb3IpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRu
J3QgYXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmljczogJUAiLCBlcnJvcik7Ci0gICAgICAgICAg
ICBjb25zZW50ID0gVXNlckNvbnNlbnQ6Ok5vOwotICAgICAgICB9Ci0gICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgY29uc2VudCwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCldKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb25zZW50LCBjb250ZXh0LmdldCgpKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci0gICAgW2NvbnRleHQgZXZhbHVhdGVBY2Nlc3NDb250cm9s
OmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJhdGlvblVzZUtleVNp
Z24gbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpyZXBseS5nZXQoKV07CisgICAgTlNFcnJv
ciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byByZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVBvbGlj
eTpMQVBvbGljeURldmljZU93bmVyQXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBvcHRpb25z
OkB7IEAoTEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSk6IEBZRVMgfSBlcnJvcjomZXJyb3JdOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdldCB1c2VyIGNvbnNl
bnQ6ICVAIiwgZXJyb3IpOworICAgIHJldHVybiAhIXJlc3VsdDsKIH0KIAogUmV0YWluUHRyPFNl
Y0tleVJlZj4gTG9jYWxDb25uZWN0aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNv
bnRleHQgKmNvbnRleHQsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgY29u
c3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBj
b25zdApAQCAtODgsMTIgKzc5LDYgQEAgTE9DQUxDT05ORUNUSU9OX0FERElUSU9OUwogI2VuZGlm
CiB9CiAKLU5TRGljdGlvbmFyeSAqTG9jYWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsKGNv
bnN0IE5TQXJyYXkgKmNyZWRlbnRpYWxzKSBjb25zdAotewotICAgIC8vIEZJWE1FKHJkYXI6Ly9w
cm9ibGVtLzM1OTAwNTM0KTogV2UgZG9uJ3QgaGF2ZSBhbiBVSSB0byBwcm9tcHQgdXNlcnMgZm9y
IHNlbGVjdGluZyBpbnRlcnNlY3RlZENyZWRlbnRpYWxzLCBhbmQgdGhlcmVmb3JlIHdlIGFsd2F5
cyB1c2UgdGhlIGZpcnN0IG9uZSBmb3Igbm93LgotICAgIHJldHVybiBjcmVkZW50aWFsc1swXTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5oCmluZGV4IDNjNmIzZDdlMDEzY2U2ODA3MjgzOGI5MjY4YWVjYTliZGUyOThlY2YuLmRmM2Q5
NWFlMTA5ZTViZDQyMTI3YTNlNGYwM2M1NDUzYjU4YmMzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3Vs
dCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGNvbnN0IGZpbmFsOwogCiAgICAgX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbCAqbV9wYW5lbDsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbERlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CkBAIC01OCw3ICs1OSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIGJvb2wgcGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsIDog
MTsKICAgICAgICAgYm9vbCBwYW5lbERpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJl
c3VsdCA6IDE7CiAgICAgICAgIGJvb2wgcGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJp
ZXNDb21wbGV0aW9uSGFuZGxlciA6IDE7Ci0gICAgICAgIGJvb2wgcGFuZWxzZWxlY3RBc3NlcnRp
b25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCBwYW5lbFNlbGVj
dEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29sIHBh
bmVsVmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAg
IH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQppbmRleCBkNTE2NjMyYjk4ZDczODgxYzQz
ZTQzMTljMzk3MzNlMDQwMzllYjVlLi40MDgwNjUyZGRkMjgzMjdkMTYzZWRlZGFhZWE3YjljMGM4
ODBhMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQubW0KQEAgLTM4LDYgKzM4LDggQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAorI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlv
blNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKnBhbmVsLCBpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiBk
ZWxlZ2F0ZSkKQEAgLTQ3LDcgKzQ5LDggQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudChfV0tXZWJBdXRoZW50aWNhdGlvblAKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy5wYW5lbFVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDp1cGRhdGVXZWJBdXRoZW50
aWNhdGlvblBhbmVsOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsRGlzbWlzc1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocGFuZWw6ZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0
OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdS
ZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwYW5lbDpyZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6Y29tcGxldGlvbkhh
bmRsZXI6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFu
ZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9u
SGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnZl
cmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0
YWluUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6ZGVsZWdhdGUoKQpAQCAtNjcsNiArNzAsMTIgQEAgc3RhdGlj
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUgd2tXZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlKFdlYkF1dGhlbnQKICAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVQSU5BdXRoQmxvY2tlZDsKICAgICBpZiAoc3RhdHVzID09IFdlYkF1dGhlbnRpY2F0
aW9uU3RhdHVzOjpQaW5JbnZhbGlkKQogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZVBJTkludmFsaWQ7CisgICAgaWYgKHN0YXR1cyA9PSBXZWJBdXRoZW50aWNh
dGlvblN0YXR1czo6TEFFcnJvcikKKyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVMQUVycm9yOworICAgIGlmIChzdGF0dXMgPT0gV2ViQXV0aGVudGljYXRpb25T
dGF0dXM6OkxBRHVwbGljYXRlQ3JlZGVudGlhbCkKKyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw7CisgICAgaWYgKHN0YXR1
cyA9PSBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpCisgICAgICAgIHJl
dHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWw7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVNdWx0aXBsZU5GQ1RhZ3NQcmVzZW50OwogfQpAQCAtMTMzLDcgKzE0Miw3IEBAIHZv
aWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Uo
VmVjdG9yPFJlZjxXZWJDb3JlOjpBCiB7CiAgICAgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgp
KTsKIAotICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5l
bFNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE1OCw2ICsxNjcsMjggQEAgdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkEKICAgICB9KS5nZXQoKV07
CiB9CiAKK3ZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlcihTZWNB
Y2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFD
b250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9kZWxl
Z2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFu
ZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFthbGxvY0xBQ29udGV4
dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5j
ZSgpIGluaXRdKS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNo
ZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0
KCksIEBzZWxlY3RvcihwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlv
bkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgdmVyaWZ5VXNlcldpdGhB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2Vy
ID0gV1RGTW92ZShjaGVja2VyKV0oTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisgICAgfSkuZ2V0KCldOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9N
b2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDcyMDE1OGFjYzI1
NTkxYjczMGZjZTcxY2FmZWRiZTM0MzE5NmRlZDIuLmQwZGQ5YjEwNDlhYTE3ZmJlZWUzYjg0OTJl
NWVjNDFmNzU1MmE4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5o
CkBAIC0zNywxMCArMzcsMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tMb2NhbENvbm5l
Y3Rpb24oY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFz
b24sIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaXNVbmxvY2tlZChMQUNvbnRleHQgKikgY29uc3QgZmluYWw7
CiAgICAgUmV0YWluUHRyPFNlY0tleVJlZj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFD
b250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVs
LCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBn
ZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwg
QXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKLSAgICBOU0RpY3Rpb25hcnkgKnNl
bGVjdENyZWRlbnRpYWwoY29uc3QgTlNBcnJheSAqKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGZp
bHRlclJlc3BvbnNlcyhIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U+PiYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25u
ZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IDkxNWI1OTQ5OWZlN2VjZDI3YmZmNjliMmYw
NjcwZGI3ZDRjZjMwZmYuLjhiOGQ4MjQ1MTRlNThjODQyMDBhYTc4MTY2NzU5YWFlZjdjYzUxNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTMyLDYgKzMy
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogI2ltcG9ydCA8d3RmL1J1
bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNp
bXBvcnQgIkxvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIgpAQCAtNDMsMTcgKzQ0LDkgQEAg
TW9ja0xvY2FsQ29ubmVjdGlvbjo6TW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpN
b2NrV2ViQXV0aGVudGljYXRpb25Db24KIHsKIH0KIAotdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9u
OjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2Vy
Q29uc2VudENvbnRleHRDYWxsYmFjayYmIGNhbGxiYWNrKSBjb25zdAorYm9vbCBNb2NrTG9jYWxD
b25uZWN0aW9uOjppc1VubG9ja2VkKExBQ29udGV4dCAqY29udGV4dCkgY29uc3QKIHsKLSAgICAv
LyBNb2NrIGFzeW5jIG9wZXJhdGlvbnMuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtj
b25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9uLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoY29uZmlndXJhdGlvbi5sb2NhbCk7Ci0g
ICAgICAgIGlmICghY29uZmlndXJhdGlvbi5sb2NhbC0+YWNjZXB0QXV0aGVudGljYXRpb24pIHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKFVzZXJDb25zZW50OjpObywgbmlsKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjYWxsYmFjayhVc2VyQ29uc2VudDo6WWVzLCBh
ZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKLSAgICB9KTsK
KyAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLmxvY2FsLT5hY2NlcHRBdXRoZW50aWNhdGlvbjsK
IH0KIAogUmV0YWluUHRyPFNlY0tleVJlZj4gTW9ja0xvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3Jl
ZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0
IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29u
c3QKQEAgLTExMiwxNSArMTA1LDI0IEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0
ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKiwgTlNEYXRhICosIEF0dGVzdGF0CiAgICAgfSk7
CiB9CiAKLU5TRGljdGlvbmFyeSAqTW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3JlZGVudGlh
bChjb25zdCBOU0FycmF5ICpjcmVkZW50aWFscykgY29uc3QKK3ZvaWQgTW9ja0xvY2FsQ29ubmVj
dGlvbjo6ZmlsdGVyUmVzcG9uc2VzKEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMpIGNvbnN0CiB7Ci0gICAgYXV0byBwcmVmZXJy
ZWRVc2VyaGFuZGxlID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNv
ZGVkU3RyaW5nOm1fY29uZmlndXJhdGlvbi5sb2NhbC0+cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2
NCBvcHRpb25zOjBdKTsKLSAgICBmb3IgKE5TRGljdGlvbmFyeSAqY3JlZGVudGlhbCA6IGNyZWRl
bnRpYWxzKSB7Ci0gICAgICAgIGlmIChbY3JlZGVudGlhbFsoaWQpa1NlY0F0dHJBcHBsaWNhdGlv
blRhZ10gaXNFcXVhbFRvRGF0YTpwcmVmZXJyZWRVc2VyaGFuZGxlLmdldCgpXSkKLSAgICAgICAg
ICAgIHJldHVybiBjcmVkZW50aWFsOworICAgIGNvbnN0IGF1dG8mIHByZWZlcnJlZFVzZXJoYW5k
bGVCYXNlNjQgPSBtX2NvbmZpZ3VyYXRpb24ubG9jYWwtPnByZWZlcnJlZFVzZXJoYW5kbGVCYXNl
NjQ7CisgICAgaWYgKHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGl0ciA9IHJlc3BvbnNlcy5iZWdpbigpOworICAgIGZvciAo
OyBpdHIgIT0gcmVzcG9uc2VzLmVuZCgpOyArK2l0cikgeworICAgICAgICBhdXRvKiB1c2VySGFu
ZGxlID0gaXRyLT5nZXQoKS51c2VySGFuZGxlKCk7CisgICAgICAgIEFTU0VSVCh1c2VySGFuZGxl
KTsKKyAgICAgICAgYXV0byB1c2VyaGFuZGxlQmFzZTY0ID0gYmFzZTY0RW5jb2RlKHVzZXJIYW5k
bGUtPmRhdGEoKSwgdXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgaWYgKHVzZXJo
YW5kbGVCYXNlNjQgPT0gcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCkKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbmlsOwor
ICAgIGF1dG8gcmVzcG9uc2UgPSByZXNwb25zZXMudGFrZShpdHIpOworICAgIEFTU0VSVChyZXNw
b25zZSk7CisgICAgcmVzcG9uc2VzLmNsZWFyKCk7CisgICAgcmVzcG9uc2VzLmFkZChXVEZNb3Zl
KCpyZXNwb25zZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9u
RmxhZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0aW9uRmxhZ3MuaAppbmRleCA1NDg4YTIxMTM5MjkyNmMwYTM2NmZmYTg3Zjc2NTkw
OWQ5MWU1Yjg4Li45NzUxODNkZmQ1Nzc1MmQxMjNmNjUzMzdiNzZiNzk1NTI0NjYxMWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdGlvbkZsYWdzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRpb25GbGFncy5oCkBAIC00NSw3ICs0NSwxMCBAQCBlbnVt
IGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIDogdWludDhfdCB7CiAgICAgTm9DcmVkZW50
aWFsc0ZvdW5kLAogICAgIFBpbkJsb2NrZWQsCiAgICAgUGluQXV0aEJsb2NrZWQsCi0gICAgUGlu
SW52YWxpZAorICAgIFBpbkludmFsaWQsCisgICAgTEFFcnJvciwKKyAgICBMQUR1cGxpY2F0ZUNy
ZWRlbnRpYWwsCisgICAgTEFOb0NyZWRlbnRpYWwsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDJjY2ZiNjVhODRhMjdjZmJlNzY1YmY3NWI5MTZjNjUzMTIzZjYzMjQuLjQ1ZWNjYzU2Nzcx
MGQ3MWJkNjQ3YzE3YzA3MDYwZmM2YzRhYmE0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Niw2ICsxMDk2LDcgQEAKIAkJNTcw
REFBQzYyMzAzN0Y3RjAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERBQUM0MjMwMzdG
N0UwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi87IH07CiAJCTU3MERB
QUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyog
Q3RhcE5mY0RyaXZlci5oICovOyB9OwogCQk1NzJGRDQ0MzIyMjY1Q0UyMDBBMUVDQzMgLyogV2Vi
Vmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0Rp
ZE1vdmVUb1dpbmRvd09ic2VydmVyLmggKi87IH07CisJCTU3NDIxNzkyMjQwMEUyODYwMDJCMzAz
RCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyogTG9jYWxBdXRo
ZW50aWNhdGlvblNQSS5oICovOyB9OwogCQk1NzQ3MjhEMTIzNDU2RTk4MDAxNzAwQUYgLyogX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc0NzI4Q0YyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1NzQ3MjhENDIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzQ3MjhEMzIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bEludGVybmFsLmggKi87IH07CiAJCTU3NTk3RUI5MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlk
RHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oICovOyB9OwpAQCAtMzgx
MSw2ICszODEyLDcgQEAKIAkJNTcwREFBQzgyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ3RhcE5mY0RyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzBEQUFDOTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDdGFwTmZjRHJpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTcyRkQ0NDEyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZpZXdEaWRNb3ZlVG9X
aW5kb3dPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWV3RGlkTW92ZVRvV2luZG93T2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc0MjE3OTEyNDAwRTA5ODAw
MkIzMDNEIC8qIExvY2FsQXV0aGVudGljYXRpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxB
dXRoZW50aWNhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQ3MjhD
RjIzNDU2RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3NDcyOEQwMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0NzI4RDMyMzQ1NzBBRTAwMTcw
MEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTY4MzksNiArNjg0MSw3IEBACiAJCQkJMUE1NzA1MTAxQkU0MTBFNTAwODc0
QUYxIC8qIEJsb2NrU1BJLmggKi8sCiAJCQkJMzdDMjFDQUQxRTk5NEMwQzAwMjlENUY5IC8qIENv
cmVQcmVkaWN0aW9uU1BJLmggKi8sCiAJCQkJMkRBQURBOEUyMjk4QzIxMDAwRTM2QjBDIC8qIERl
dmljZU1hbmFnZW1lbnRTUEkuaCAqLywKKwkJCQk1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyog
TG9jYWxBdXRoZW50aWNhdGlvblNQSS5oICovLAogCQkJCTU3QjgyNjQwMjMwNEVCM0UwMEI3MkVC
MCAvKiBOZWFyRmllbGRTUEkuaCAqLywKIAkJCQkzNzU0RDU0NDFCM0EyOUZEMDAzQTRDN0YgLyog
TlNJbnZvY2F0aW9uU1BJLmggKi8sCiAJCQkJMzdCNDdFMkMxRDY0REI3NjAwNUY0RUZGIC8qIG9i
amNTUEkuaCAqLywKQEAgLTEwMzYyLDYgKzEwMzY1LDcgQEAKIAkJCQk0MTMwNzVCMjFERTg1RjU4
MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQxMDg3NjExRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzQyMTc5MjI0MDBFMjg2MDAyQjMwM0QgLyog
TG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQUMyMTRD
NjAyNzAwMTZCODQ3IC8qIExvY2FsQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdEQ0VEQUQyMTRDNjAyQzAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdEQ0VEQUUyMTRDNjAzMzAwMTZCODQ3IC8qIExvY2FsU2VydmljZS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggODNlZWQwYjgwNDdmZjQ2MDUzOWMwN2RjYmRkMDM2NWYwNjExNWYyNC4uOWJmOWM2NjIx
MGE4OTE2Njg0NGY3OGMxZmVkZDhkNTczZWNmODMyYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTAyLTIxICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJ
bXBsZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBCZXNpZGVzIGFkZGluZyBBUEkgdGVzdHMsIHRoaXMgcGF0Y2ggYWxzbyB0
ZWFjaGVzIFRlc3RXZWJLaXRBUEkgdG8gdXNlIHJlc3RyaWN0ZWQgZW50aXRsZW1lbnRzLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09T
LmVudGl0bGVtZW50czoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rl
c3RXZWJLaXRBUEkueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAo
LVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnVwZGF0ZVdlYkF1dGhl
bnRpY2F0aW9uUGFuZWw6XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVs
RGVsZWdhdGUgcGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFuZWw6
dmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sOiBDb3Bp
ZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxp
Y2F0ZS1jcmVkZW50aWFsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJv
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbDogQWRkZWQuCisKIDIw
MjAtMDItMjEgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQXBwLWJvdW5kIGRvbWFpbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgTmV0d29yayBTZXNz
aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmln
dXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHMKaW5kZXggZWEwYzFmN2M0
NzRhMjVjNzEwYzM4NWRkNjhiYzk0ZTgyMDkwYTcxMC4uYTlmOWNkZjA0YzJmYmJkMDJlM2EyZWVm
MjI2MjQ3YWU2ZWI5NjIzOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cworKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1lbnRz
CkBAIC0yLDYgKzIsMTAgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQg
UExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEu
MC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KKwk8a2V5PmtleWNoYWluLWFj
Y2Vzcy1ncm91cHM8L2tleT4KKwk8YXJyYXk+CisJCTxzdHJpbmc+Y29tLmFwcGxlLlRlc3RXZWJL
aXRBUEk8L3N0cmluZz4KKwk8L2FycmF5PgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBv
cmFyeS1leGNlcHRpb24uc2JwbDwva2V5PgogCTxhcnJheT4KIAkJPHN0cmluZz4oYWxsb3cgbWFj
aC1pc3N1ZS1leHRlbnNpb24gKHJlcXVpcmUtYWxsIChleHRlbnNpb24tY2xhc3MgJnF1b3Q7Y29t
LmFwcGxlLndlYmtpdC5leHRlbnNpb24ubWFjaCZxdW90OykpKTwvc3RyaW5nPgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29u
ZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhj
Y29uZmlnCmluZGV4IDMwYThjYWYwYzI0NzBkNjc2YjZkY2UzNjIxZjA5YjA0YWM3OTBkMzEuLmNh
OGUxNzE1YWNlMWM2M2E2MGQ4YjQ1YzFjMWZiNTcxODBkM2VmZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25m
aWcKQEAgLTY5LDMgKzY5LDEwIEBAIENPREVfU0lHTl9FTlRJVExFTUVOVFNbc2RrPWlwaG9uZSpd
ID0gQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lCiBDT0RFX1NJR05f
RU5USVRMRU1FTlRTW3Nkaz1tYWNvc3gqXSA9IENvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkt
bWFjT1MuZW50aXRsZW1lbnRzOwogCiBTVFJJUF9TVFlMRSA9IGRlYnVnZ2luZzsKKworQ09ERV9T
SUdOX0lERU5USVRZW3Nkaz1tYWNvc3gqXSA9ICQoQ09ERV9TSUdOX0lERU5USVRZXyQoQ09ORklH
VVJBVElPTikpOworQ09ERV9TSUdOX0lERU5USVRZX0RlYnVnID0gJChDT0RFX1NJR05fSURFTlRJ
VFlfJChVU0VfSU5URVJOQUxfU0RLKSk7CitDT0RFX1NJR05fSURFTlRJVFlfUmVsZWFzZSA9ICQo
Q09ERV9TSUdOX0lERU5USVRZXyQoVVNFX0lOVEVSTkFMX1NESykpOworQ09ERV9TSUdOX0lERU5U
SVRZX1lFUyA9ICQoV0tfRU5HSU5FRVJJTkdfQ09ERV9TSUdOX0lERU5USVRZKTsKK0NPREVfU0lH
Tl9JREVOVElUWV9Qcm9kdWN0aW9uID0gJChDT0RFX1NJR05fSURFTlRJVFlfUHJvZHVjdGlvbl8k
KFVTRV9JTlRFUk5BTF9TREspKTsKK0NPREVfU0lHTl9JREVOVElUWV9Qcm9kdWN0aW9uX1lFUyA9
IC07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU0MTU3ZjY4OGQ5ZDBiYjhmZTcxY2RhYjg5
YmM4N2IwZGNmMTNhNDUuLmNmMjUyM2UyYzMwNWNiMjFmYTE4ZmJhYmUyMTI4MjNmNzVlYjM1Y2Ig
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDksNiArMzQ5LDEwIEBACiAJCTU3MzI1NUE1
MjIxMzlCQzcwMDM5NkFFOCAvKiBoZWxsb3dvcmxkLndlYmFyY2hpdmUgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMjU1QTQyMjEzOUI5MDAw
Mzk2QUU4IC8qIGhlbGxvd29ybGQud2ViYXJjaGl2ZSAqLzsgfTsKIAkJNTczMjU1QTYyMjEzOUJD
NzAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzI1NUEyMjIxMzlCOEYwMDM5NkFF
OCAvKiBsb2FkLXdlYi1hcmNoaXZlLTEuaHRtbCAqLzsgfTsKIAkJNTczMjU1QTcyMjEzOUJDNzAw
Mzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzI1NUEzMjIxMzlCOTAwMDM5NkFFOCAv
KiBsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCAqLzsgfTsKKwkJNTc0MjE3ODgyNDAwQUMyNTAwMkIz
MDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQy
MTc4NzI0MDBBQkZEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC1sYS1lcnJvci5odG1sICovOyB9OworCQk1NzQyMTc4QTI0MDBBRUQ4MDAyQjMwM0QgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3NDIxNzg5MjQwMEFFRDAwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgKi87IH07CisJCTU3NDIxNzhDMjQw
MENENDcwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
NDIxNzhCMjQwMENEMkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1sYS5odG1sICovOyB9OworCQk1NzQyMTc4RTI0MDBEMkRGMDAyQjMwM0QgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAv
KiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi87IH07CiAJCTU3
NEY1NUQyMjA0RDQ3RjAwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzRGNTVEMDIwNEQ0NzFDMDAy
OTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovOyB9OwogCQk1NzU4NTk3RjIzQTI1MjdBMDBD
NzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1ODU5N0UyM0EyNTI3QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNw
cCAqLzsgfTsKIAkJNTc1ODU5ODQyM0MzQzNBNDAwQzc0NTcyIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQtcmV0cmllcy1lcnJvci5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTgzMjND
M0MzNjIwMEM3NDU3MiAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1w
aW4tZ2V0LXJldHJpZXMtZXJyb3IuaHRtbCAqLzsgfTsKQEAgLTE1MTcsNiArMTUyMSw3IEBACiAJ
CQkJNTc4REE0NEUyM0VDRDI4QjAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTU3MEQyNkZDMjNDM0Y4NzAwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQtcGluLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc2
NjNERUMyMzRGMUY5MzAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9u
LWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTU3NDIxNzhDMjQwMENENDcwMDJC
MzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCTU3OTgzMzkyMjM2OEZBMzcwMDhFNTU0NyAvKiB3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTU3NjYzREVBMjM0RUE2NkQwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGlj
YXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1
Nzc0NTREMjIzNTlCQjAxMDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24tdTJmLW5vLWNyZWRlbnRpYWxzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNTMx
LDYgKzE1MzYsOSBAQAogCQkJCTU3OERBNDRBMjNFQ0QxODYwMDI0NjAxMCAvKiB3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3MEQyNkY2MjNDM0QzMzAwMEQ1Q0Y2NyAvKiB3
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQk1Nzk4MzM3RTIzNjAxOUE0MDA4RTU1NDcgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJ
CQk1NzQyMTc4QTI0MDBBRUQ4MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAorCQkJCTU3NDIxNzg4MjQwMEFDMjUwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTc0
MjE3OEUyNDAwRDJERjAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4NjFDODkyNTlEMDBB
NTUyOUYgLyogd2ViZm9udC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTUxNzE0RUI0
MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTUxNzE0RUI1MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9j
ZXNzS2lsbElEQkNsZWFudXAtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTk2MSw2
ICsxOTY5LDExIEBACiAJCTU3MzI1NUEzMjIxMzlCOTAwMDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNo
aXZlLTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzI1NUE0MjIxMzlCOTAwMDM5NkFFOCAvKiBoZWxsb3dv
cmxkLndlYmFyY2hpdmUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlLmJwbGlzdDsgcGF0aCA9IGhlbGxvd29ybGQud2ViYXJjaGl2ZTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczNUYwMjUxRjNBNEVBNjAwMEVFODAxIC8qIFRlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gIlRlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLWVycm9yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS1lcnJvci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTc0MjE3ODkyNDAwQUVEMDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTc0MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWxhLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzQyMTc4RjI0MDBENTREMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NEY1NUQwMjA0RDQ3MUMwMDI5
NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5LmZy
YW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJNTc1ODU5N0QyM0EyNTI3QTAwQzc0NTcy
IC8qIEN0YXBQaW5UZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN0YXBQaW5UZXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTg1OTdFMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGlu
VGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdGFwUGluVGVzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zNTc5LDYgKzM1OTIsNyBAQAogCQkJCTU3OERBNDREMjNFQ0Qy
NjEwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLWlu
dmFsaWQtZXJyb3ItcmV0cnkuaHRtbCAqLywKIAkJCQk1NzBEMjZGQjIzQzNGODY1MDBENUNGNjcg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi5odG1sICovLAogCQkJ
CTU3NjYzREVCMjM0RjFGODAwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1oaWQuaHRtbCAqLywKKwkJCQk1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLywKIAkJCQk1Nzk4MzM3QjIzNUVC
NjVDMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRp
cGxlLXRhZ3MuaHRtbCAqLywKIAkJCQk1NzY2M0RFOTIzNEVBNjBCMDBFODVFMDkgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwgKi8sCiAJCQkJNTc3NDU0RDEyMzU5
QkFENTAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLXUyZi1uby1j
cmVkZW50aWFscy5odG1sICovLApAQCAtMzU5Myw2ICszNjA3LDEwIEBACiAJCQkJNTc4REE0NDky
M0VDRDE1NTAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlk
LXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0bWwgKi8sCiAJCQkJNTcwRDI2RjUyM0MzRDMyNzAw
RDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi5odG1s
ICovLAogCQkJCTU3OTgzMzdEMjM2MDE5NkQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWhpZC5odG1sICovLAorCQkJCTU3NDIxNzg5MjQwMEFFRDAwMDJCMzAz
RCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVk
ZW50aWFsLmh0bWwgKi8sCisJCQkJNTc0MjE3ODcyNDAwQUJGRDAwMkIzMDNEIC8qIHdlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCAqLywKKwkJCQk1NzQyMTc4
RDI0MDBEMjZDMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS5odG1sICovLAorCQkJCTU3NDIxNzhGMjQwMEQ1NEQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcy
M0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjMx
Q0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgKi8sCiAJ
CQkJNTEyMEM4M0IxRTY3NEUzNTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRo
cy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDA4MzNj
NDk4OWFiYzNhYTM0YTNjYTY4ODMxZDA0YWY0MDYyZjM2ZTMuLmFjZTQzNmQ5NWUzNzEyZDc2N2Vm
MmY0YjU3MThhYmJlZDY2YTlkYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgor
I2ltcG9ydCA8TG9jYWxBdXRoZW50aWNhdGlvbi9Mb2NhbEF1dGhlbnRpY2F0aW9uLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJ
RGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVy
ZS5oPgpAQCAtMzksNiArNDAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JhbmRv
bU51bWJlci5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogI2ltcG9y
dCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIHN0YXRpYyBib29sIHdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSBmYWxzZTsKQEAgLTQ5LDkgKzUxLDE4IEBAIHN0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVOb0NyZWRlbnRpYWxzRm91bmQgPSBm
YWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5CbG9ja2Vk
ID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlUElOQXV0
aEJsb2NrZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRh
dGVQSU5JbnZhbGlkID0gZmFsc2U7CitzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlTEFFcnJvciA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5l
bFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0
aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFsID0gZmFsc2U7CiBzdGF0aWMgYm9v
bCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKK3N0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyID0gZmFsc2U7CiBzdGF0aWMg
U3RyaW5nIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxQaW47CiBzdGF0aWMgQk9PTCB3ZWJBdXRoZW50
aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUgPSBOTzsKK3N0YXRpYyBTdHJpbmcgdGVzdEVTMjU2
UHJpdmF0ZUtleUJhc2U2NCA9CisgICAgIkJEai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBn
RnBzakYvUW0xNzQ5VkJKUGdxVUl3ZmhXSEo5MW5iN1UiCisgICAgIlBINzZjMCtXRk96WktzbFB5
eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVuZm5CZ0VWRmg1emV2Ky94cEhRSXZ1cTYiCisgICAgIlJR
PT0iOworc3RhdGljIFN0cmluZyB0ZXN0VXNlcmhhbmRsZUJhc2U2NCA9ICJBQUVDQXdRRkJnY0lD
UT09IjsKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDog
TlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4KIEBlbmQKQEAgLTg0
LDYgKzk1LDE4IEBAIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilw
YW5lbCB1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOihfCiAgICAgICAgIHdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICBpZiAodXBkYXRlID09IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVy
cm9yKSB7CisgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodXBkYXRlID09IF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWwpIHsKKyAgICAgICAgd2Vi
QXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCA9IHRydWU7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHVwZGF0ZSA9PSBfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWwpIHsKKyAgICAgICAgd2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFsID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIH0KIAogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVs
IGRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGlj
YXRpb25SZXN1bHQpcmVzdWx0CkBAIC0xMTEsNiArMTM0LDExIEBAIC0gKHZvaWQpcGFuZWw6KF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1Jl
dHJpZXM6CiAKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5l
bCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBpZiAocmVzcG9uc2VzLmNvdW50ID09IDEpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IEVYUEVDVF9FUShyZXNwb25zZXMuY291bnQsIDJ1bCk7CiAgICAgZm9yIChfV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpyZXNwb25zZSBpbiByZXNwb25zZXMpIHsKICAgICAg
ICAgRVhQRUNUX1RSVUUoW3Jlc3BvbnNlLm5hbWUgaXNFcXVhbDpAImpvaG5wc21pdGhAZXhhbXBs
ZS5jb20iXSB8fCBbcmVzcG9uc2UubmFtZSBpc0VxdWFsOkAiIl0pOwpAQCAtMTIzLDYgKzE1MSwx
MyBAQCAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2Vs
ZWN0QXNzZXJ0aW9uUmVzcG9uc2U6KE5TQXJyYQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3Bv
bnNlc1tpbmRleF0pOwogfQogCistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsICopcGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9s
UmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAq
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlV
c2VyID0gdHJ1ZTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFtbTEFDb250ZXh0IGFsbG9j
XSBpbml0XSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dC5nZXQoKSk7Cit9CisKIEBl
bmQKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbEZha2VEZWxlZ2F0ZSA6
IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+CkBAIC0yMzEsNiAr
MjY2LDIyIEBAIHN0YXRpYyBfV0tFeHBlcmltZW50YWxGZWF0dXJlICp3ZWJBdXRoZW50aWNhdGlv
bkV4cGVyaW1lbnRhbEZlYXR1cmUoKQogICAgIHJldHVybiB0aGVGZWF0dXJlLmdldCgpOwogfQog
CitzdGF0aWMgX1dLRXhwZXJpbWVudGFsRmVhdHVyZSAqd2ViQXV0aGVudGljYXRpb25Mb2NhbEF1
dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJlKCkKK3sKKyAgICBzdGF0aWMgUmV0YWluUHRy
PF9XS0V4cGVyaW1lbnRhbEZlYXR1cmU+IHRoZUZlYXR1cmU7CisgICAgaWYgKHRoZUZlYXR1cmUp
CisgICAgICAgIHJldHVybiB0aGVGZWF0dXJlLmdldCgpOworCisgICAgTlNBcnJheSAqZmVhdHVy
ZXMgPSBbV0tQcmVmZXJlbmNlcyBfZXhwZXJpbWVudGFsRmVhdHVyZXNdOworICAgIGZvciAoX1dL
RXhwZXJpbWVudGFsRmVhdHVyZSAqZmVhdHVyZSBpbiBmZWF0dXJlcykgeworICAgICAgICBpZiAo
W2ZlYXR1cmUua2V5IGlzRXF1YWw6QCJXZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRv
ckVuYWJsZWQiXSkgeworICAgICAgICAgICAgdGhlRmVhdHVyZSA9IGZlYXR1cmU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdGhlRmVhdHVyZS5nZXQo
KTsKK30KKwogc3RhdGljIHZvaWQgcmVzZXQoKQogewogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSYW4gPSBmYWxzZTsKQEAgLTI0MSw5ICsyOTIsMTMgQEAgc3RhdGljIHZvaWQgcmVzZXQoKQog
ICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5CbG9ja2VkID0gZmFsc2U7CiAgICAg
d2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkF1dGhCbG9ja2VkID0gZmFsc2U7CiAgICAg
d2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkludmFsaWQgPSBmYWxzZTsKKyAgICB3ZWJB
dXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvciA9IGZhbHNlOworICAgIHdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWwgPSBmYWxzZTsKKyAgICB3ZWJB
dXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWwgPSBmYWxzZTsKICAgICB3ZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKICAgICB3ZWJBdXRo
ZW50aWNhdGlvblBhbmVsUGluID0gZW1wdHlTdHJpbmcoKTsKICAgICB3ZWJBdXRoZW50aWNhdGlv
blBhbmVsTnVsbFVzZXJIYW5kbGUgPSBOTzsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVy
aWZ5VXNlciA9IGZhbHNlOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja1BhbmVsKF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwgKnBhbmVsLCBOU1N0cmluZyAqcmVseWluZ1BhcnR5SUQsIE5TQXJyYXkg
KnRyYW5zcG9ydHMsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSB0eXBlKQpAQCAtMjc3LDYgKzMz
Miw1NiBAQCBzdGF0aWMgdm9pZCBjaGVja0ZyYW1lSW5mbyhXS0ZyYW1lSW5mbyAqZnJhbWUsIGJv
b2wgaXNNYWluRnJhbWUsIE5TU3RyaW5nICp1cmwsCiAgICAgRVhQRUNUX0VRKGZyYW1lLndlYlZp
ZXcsIHdlYlZpZXcpOwogfQogCitib29sIGFkZEtleVRvS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBw
cml2YXRlS2V5QmFzZTY0LCBjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFN0cmluZyYgdXNlckhh
bmRsZUJhc2U2NCkKK3sKKyAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAeworICAgICAgICAo
aWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpa1NlY0F0dHJLZXlUeXBlRUNTRUNQcmltZVJhbmRvbSwK
KyAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0
ZSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5U2l6ZUluQml0czogQDI1NiwKKyAgICB9OworICAg
IENGRXJyb3JSZWYgZXJyb3JSZWYgPSBudWxscHRyOworICAgIGF1dG8ga2V5ID0gYWRvcHRDRihT
ZWNLZXlDcmVhdGVXaXRoRGF0YSgKKyAgICAgICAgKF9fYnJpZGdlIENGRGF0YVJlZilhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6cHJpdmF0ZUtleUJh
c2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNd
KS5nZXQoKSwKKyAgICAgICAgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilvcHRpb25zLAorICAg
ICAgICAmZXJyb3JSZWYKKyAgICApKTsKKyAgICBpZiAoZXJyb3JSZWYpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIE5TRGljdGlvbmFyeSogYWRkUXVlcnkgPSBAeworICAgICAgICAoaWQp
a1NlY1ZhbHVlUmVmOiAoaWQpa2V5LmdldCgpLAorICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQp
a1NlY0NsYXNzS2V5LAorICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogcnBJZCwKKyAgICAgICAg
KGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRX
aXRoQmFzZTY0RW5jb2RlZFN0cmluZzp1c2VySGFuZGxlQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFz
ZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAoaWQp
a1NlY0F0dHJBY2Nlc3NpYmxlOiAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlQWZ0ZXJGaXJzdFVubG9j
aywKKyNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJTikKKyAgICAgICAgKGlkKWtTZWNV
c2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCisjZWxzZQorICAgICAgICAoaWQpa1NlY0F0
dHJOb0xlZ2FjeTogQFlFUworI2VuZGlmCisgICAgfTsKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBT
ZWNJdGVtQWRkKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYWRkUXVlcnksIE5VTEwpOworICAg
IGlmIChzdGF0dXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIGNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcmIHJwSWQpCit7CisgICAgTlNE
aWN0aW9uYXJ5KiBkZWxldGVRdWVyeSA9IEB7CisgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClr
U2VjQ2xhc3NLZXksCisgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBycElkLAorICAgICAgICAo
aWQpa1NlY0F0dHJBY2Nlc3NpYmxlOiAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlQWZ0ZXJGaXJzdFVu
bG9jaywKKyNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJTikKKyAgICAgICAgKGlkKWtT
ZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCisjZWxzZQorICAgICAgICAoaWQpa1Nl
Y0F0dHJOb0xlZ2FjeTogQFlFUworI2VuZGlmCisgICAgfTsKKyAgICBTZWNJdGVtRGVsZXRlKChf
X2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkpOworfQorCiB9IC8vIG5hbWVzYXBj
ZTsKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBOb1BhbmVsVGltZW91dCkKQEAgLTEw
NzYsNiArMTE4MSwxMTggQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBNdWx0aXBsZUFj
Y291bnRzKQogICAgIEVYUEVDVF9FUShbW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAInVzZXJIYW5kbGUiXSBpc0VxdWFsVG9TdHJpbmc6QCI8bnVsbD4iXSwgd2ViQXV0aGVu
dGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlKTsKIH0KIAorVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBMQUVycm9yKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0
ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAq
Y29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxz
IiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50
aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50
aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFs
bG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxV
cGRhdGVMQUVycm9yKTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUR1cGxp
Y2F0ZUNyZWRlbnRpYWwpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRl
c3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbCIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rl
c3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJ
bldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0
dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0
dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVy
ZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5l
bFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKKworICAgIEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVT
MjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIsIHRlc3RVc2VyaGFuZGxlQmFzZTY0KSk7CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdl
dCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFEdXBs
aWNhdGVDcmVkZW50aWFsKTsKKyAgICBjbGVhblVwS2V5Y2hhaW4oIiIpOworfQorCitURVNUKFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTm9DcmVkZW50aWFsKQoreworICAgIHJlc2V0KCk7Cisg
ICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsK
KworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVz
dF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0lu
V2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1
cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworICAgIFtbY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1
cmU6d2ViQXV0aGVudGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJl
KCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVs
VUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50
aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWwpOworfQorCitURVNUKFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRpYWxOdWxsRGVsZWdhdGUpCit7CisgICAgcmVzZXQo
KTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYSIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vz
c1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50
YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50
YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFs
RmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRp
b25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbZGVsZWdhdGUgc2V0SXNOdWxs
OnRydWVdOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0
VVJMLmdldCgpXV07CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07
CisgICAgY2xlYW5VcEtleWNoYWluKCIiKTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBh
bmVsLCBMQU1ha2VDcmVkZW50aWFsKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5T
VVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndl
Yi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAq
Y29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxz
IiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50
aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50
aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFs
bG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxW
ZXJpZnlVc2VyKTsKKyAgICBjaGVja1BhbmVsKFtkZWxlZ2F0ZSBwYW5lbF0sIEAiIiwgQFthZG9w
dE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJh
bnNwb3J0VVNCXSkuZ2V0KCksIGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6
X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRJbnRlcm5hbF0pLmdldCgpXSwgX1dLV2ViQXV0
aGVudGljYXRpb25UeXBlQ3JlYXRlKTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1
Y2NlZWRlZCEiXTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUdldEFzc2Vy
dGlvbikKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1sYSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRl
c3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVk
OllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFs
RmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVk
OllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50
aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tU
ZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBb
d2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIEFTU0VSVF9UUlVF
KGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIsIHRlc3RVc2Vy
aGFuZGxlQmFzZTY0KSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50
aWNhdGlvblBhbmVsVmVyaWZ5VXNlcik7CisgICAgY2hlY2tQYW5lbChbZGVsZWdhdGUgcGFuZWxd
LCBAIiIsIEBbYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRo
ZW50aWNhdGlvblRyYW5zcG9ydFVTQl0pLmdldCgpLCBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2Nd
IGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0SW50ZXJuYWxdKS5nZXQo
KV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZUdldCk7CisgICAgW3dlYlZpZXcgd2FpdEZvck1l
c3NhZ2U6QCJTdWNjZWVkZWQhIl07CisgICAgY2xlYW5VcEtleWNoYWluKCIiKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lZmEzYzViYTQ0YjAyZmIxMDUyOWQwMTRkZjVkZTY0MjhkNDk4MGJmCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93
ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sCkBAIC0wLDAgKzEsMjIgQEAK
KzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93
LmludGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2Nl
cHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2Vz
dHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOworICAgIH0KKworICAgIGNvbnN0IG9wdGlv
bnMgPSB7CisgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcg
VWludDhBcnJheSgxNiksCisgICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgfQorICAg
IH07CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVu
dGlhbCA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKCJTdWNjZWVkZWQhIik7CisgICAgICAg
IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJT
dWNjZWVkZWQhIik7CisgICAgfSwgZXJyb3IgPT4geworICAgICAgICAvLyBjb25zb2xlLmxvZyhl
cnJvci5tZXNzYWdlKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVz
dEhhbmRsZXIucG9zdE1lc3NhZ2UoZXJyb3IubWVzc2FnZSk7CisgICAgfSk7Cis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1
dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1s
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRp
b24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWFhNTk2NTA2YTUzNGIyNWYwYmM2NTg4OTYxYmUzZGRlYjQ0YjQxYwotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sCkBAIC0w
LDAgKzEsNDMgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAg
ICBjb25zdCB0ZXN0Q3JlZGVudGlhbElkSGV4ID0gIjQ4QzQ5NzFFNzgwNUVFMTEwRUIwNDk0MEVG
NzBCNzQ1OEZCQzZEMUUiOworICAgIGZ1bmN0aW9uIGhleFN0cmluZ1RvVWludDhBcnJheShoZXhT
dHJpbmcpCisgICAgeworICAgICAgICBpZiAoaGV4U3RyaW5nLmxlbmd0aCAlIDIgIT0gMCkKKyAg
ICAgICAgICAgIHRocm93ICJJbnZhbGlkIGhleFN0cmluZyI7CisgICAgICAgIHZhciBhcnJheUJ1
ZmZlciA9IG5ldyBVaW50OEFycmF5KGhleFN0cmluZy5sZW5ndGggLyAyKTsKKworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGhleFN0cmluZy5sZW5ndGg7IGkgKz0gMikgeworICAgICAgICAg
ICAgdmFyIGJ5dGVWYWx1ZSA9IHBhcnNlSW50KGhleFN0cmluZy5zdWJzdHIoaSwgMiksIDE2KTsK
KyAgICAgICAgICAgIGlmIChieXRlVmFsdWUgPT0gTmFOKQorICAgICAgICAgICAgICAgIHRocm93
ICJJbnZhbGlkIGhleFN0cmluZyI7CisgICAgICAgICAgICBhcnJheUJ1ZmZlcltpLzJdID0gYnl0
ZVZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIH0K
KworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGlj
YXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgaW50
ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOworICAgIH0K
KworICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAg
ICAgcnA6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBw
bGVzZWVkIiwKKyAgICAgICAgICAgICAgICBpZDogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAg
ICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAgICAgIHB1Yktl
eUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAg
ICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogaGV4U3Ry
aW5nVG9VaW50OEFycmF5KHRlc3RDcmVkZW50aWFsSWRIZXgpIH1dLAorICAgICAgICAgICAgdGlt
ZW91dDogMTAwLAorICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC1sYS1lcnJvci5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWYxNjEyMWJhNGNhMmRiNTMzZGZlNWQyYmYwMzMwNGNkYTUyNDYyZgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzxp
bnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0
QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1
cmUoKCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcHRpb25z
ID0geworICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAg
ICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdXNl
cjogeworICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAg
ICAgICAgaWQ6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgY2hhbGxlbmdlOiBu
ZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBl
OiAicHVibGljLWtleSIsIGFsZzogLTM1IH0sIHsgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC0y
NTcgfV0sIC8vIEVTMzg0LCBSUzI1NgorICAgICAgICAgICAgdGltZW91dDogMTAwLAorICAgICAg
ICB9CisgICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyk7
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1j
cmVkZW50aWFsLWxhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI3ZTI1Y2EyZGEyYmVkNGQ4OWE4MGIwMjdi
NmEwOTU2MGFiMmM1NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1s
CkBAIC0wLDAgKzEsNjYgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlw
dD4KKyAgICBjb25zdCB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0ID0KKyAgICAgICAgIkJEai96
eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBnRnBzakYvUW0xNzQ5VkJKUGdxVUl3ZmhXSEo5MW5i
N1UiICsKKyAgICAgICAgIlBINzZjMCtXRk96WktzbFB5eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVu
Zm5CZ0VWRmg1emV2Ky94cEhRSXZ1cTYiICsKKyAgICAgICAgIlJRPT0iOworICAgIGNvbnN0IHRl
c3RBdHRlc3RhdGlvbkNlcnRpZmljYXRlQmFzZTY0ID0KKyAgICAgICAgIk1JSUI2akNDQVpDZ0F3
SUJBZ0lHQVdIQXhjanZNQW9HQ0NxR1NNNDlCQU1DTUZNeEp6QWxCZ05WQkFNTUhrSmgiICsKKyAg
ICAgICAgImMybGpJRUYwZEdWemRHRjBhVzl1SUZWelpYSWdVM1ZpSUVOQk1URVRNQkVHQTFVRUNn
d0tRWEJ3YkdVZ1NXNWoiICsKKyAgICAgICAgIkxqRVRNQkVHQTFVRUNBd0tRMkZzYVdadmNtNXBZ
VEFlRncweE9EQXlNak13TXpNM01qSmFGdzB4T0RBeU1qUXciICsKKyAgICAgICAgIk16UTNNakph
TUdveElqQWdCZ05WQkFNTUdUQXdNREE0TURFd0xUQXdNRUUwT1VFeU16QkJNREl4TTBFeEdqQVki
ICsKKyAgICAgICAgIkJnTlZCQXNNRVVKQlFTQkRaWEowYVdacFkyRjBhVzl1TVJNd0VRWURWUVFL
REFwQmNIQnNaU0JKYm1NdU1STXciICsKKyAgICAgICAgIkVRWURWUVFJREFwRFlXeHBabTl5Ym1s
aE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXZDamUiICsKKyAgICAgICAgIlB6
cjZTZzc2WE1vSHVHYWJQYUc2empwTEZMOFpkOC83NEhoNVBjTDJacStvK2Y3RU5YWCs3bkVYWFl0
MFM4VXgiICsKKyAgICAgICAgIjVUSVJ3NGhnYmZ4WFFiV0xFcU01TURjd0RBWURWUjBUQVFIL0JB
SXdBREFPQmdOVkhROEJBZjhFQkFNQ0JQQXciICsKKyAgICAgICAgIkZ3WUpLb1pJaHZkalpBZ0NC
QW93Q0tFR0JBUjBaWE4wTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUFsSzhBOEkiICsKKyAgICAg
ICAgIms0M1Ridkt1WUdIWnMxRFRncFR3bUtUQnZJVXc1YndnWnVZbkFpRUF0dUpqRExLYkdOSkFK
Rk1pNWRlRUJxbm8iICsKKyAgICAgICAgInBCVENxYmZiREpjY2Z5UXBqblk9IjsKKyAgICBjb25z
dCB0ZXN0QXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZUJhc2U2NCA9CisgICAgICAgICJN
SUlDSXpDQ0FhaWdBd0lCQWdJSWVOamhHOXRuREdnd0NnWUlLb1pJemowRUF3SXdVekVuTUNVR0Ex
VUVBd3dlIiArCisgICAgICAgICJRbUZ6YVdNZ1FYUjBaWE4wWVhScGIyNGdWWE5sY2lCU2IyOTBJ
RU5CTVJNd0VRWURWUVFLREFwQmNIQnNaU0JKIiArCisgICAgICAgICJibU11TVJNd0VRWURWUVFJ
REFwRFlXeHBabTl5Ym1saE1CNFhEVEUzTURReU1EQXdOREl3TUZvWERUTXlNRE15IiArCisgICAg
ICAgICJNakF3TURBd01Gb3dVekVuTUNVR0ExVUVBd3dlUW1GemFXTWdRWFIwWlhOMFlYUnBiMjRn
VlhObGNpQlRkV0lnIiArCisgICAgICAgICJRMEV4TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1N
dU1STXdFUVlEVlFRSURBcERZV3hwWm05eWJtbGhNRmt3IiArCisgICAgICAgICJFd1lIS29aSXpq
MENBUVlJS29aSXpqMERBUWNEUWdBRW9TWi8xdDllQkFFVnA1YThQclhhY21iR2I4ek5DMVgzIiAr
CisgICAgICAgICJTdExJOVlPNlkwQ0w3YmxIbVNHbWpHV1R3RDRRK2kwSjJCWTMrYlBIVEdSeUE5
akdCM01TYmFObU1HUXdFZ1lEIiArCisgICAgICAgICJWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZC
Z05WSFNNRUdEQVdnQlNENWFNaG5yQjB3L2xoa1AyWFRpTVFkcVNqIiArCisgICAgICAgICI4akFk
QmdOVkhRNEVGZ1FVNW1XZjFEWUxUWFVkUTl4bU9IL3VxZU5TRDgwd0RnWURWUjBQQVFIL0JBUURB
Z0VHIiArCisgICAgICAgICJNQW9HQ0NxR1NNNDlCQU1DQTJrQU1HWUNNUUMzTTM2MExMdEpTNjBa
OXEzdlZqSnhNZ01jRlExcm9HVFVjS3F2IiArCisgICAgICAgICJXKzRoSjRDZUpqeVNYVGdxNklF
SG4veVdhYjRDTVFDbTVObks2U09TSytBcVd1bTlsTDg3VzNFNkFBMWYyVHZKIiArCisgICAgICAg
ICIvaGdvay8zNGpyOTNuaFM4N3RPUU5keERTOHp5aXF3PSI7CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeworICAgICAgICAgICAgbG9jYWw6IHsKKyAgICAgICAgICAgICAgICBhY2NlcHRB
dXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjog
dHJ1ZSwKKyAgICAgICAgICAgICAgICBwcml2YXRlS2V5QmFzZTY0OiB0ZXN0RVMyNTZQcml2YXRl
S2V5QmFzZTY0LAorICAgICAgICAgICAgICAgIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0
dGVzdGF0aW9uQ2VydGlmaWNhdGVCYXNlNjQsCisgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRl
Q0FDZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVC
YXNlNjQgfX0pOworICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5w
dXQuZm9jdXMoKTsgfSk7CisgICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAg
cHVibGljS2V5OiB7CisgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgIG5hbWU6ICJs
b2NhbGhvc3QiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAg
ICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIGlkOiBuZXcg
VWludDhBcnJheSgxNiksCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQi
LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXko
MTYpLAorICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBhbGc6IC03IH1dLAorICAgICAgICAgICAgdGltZW91dDogMTAwLAorICAgICAgICB9CisgICAg
fTsKKworICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKKyAgICAgICAgLy8gY29uc29sZS5sb2coIlN1Y2NlZWRlZCEiKTsKKyAgICAg
ICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2Uo
IlN1Y2NlZWRlZCEiKTsKKyAgICB9LCBlcnJvciA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9n
KGVycm9yLm1lc3NhZ2UpOworICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50
ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShlcnJvci5tZXNzYWdlKTsKKyAgICB9KTsKKzwvc2NyaXB0
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391482</attachid>
            <date>2020-02-23 00:09:25 -0800</date>
            <delta_ts>2020-02-23 11:51:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208087-20200223000924.patch</filename>
            <type>text/plain</type>
            <size>99693</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uMmNlMDBiNjNjNTRkNzc4NTMzYjVkYjY5YzgxYTE1
NWQwOGJmNzgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAyLTIxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmhhbmNlcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgdG8gYWNj
b21tb25kYXRlIHJlc3BvbnNlcworICAgICAgICByZXR1cm5lZCBmcm9tIHRoZSBwbGF0Zm9ybSBh
dXRoZW50aWNhdG9yLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRB
dXRoZW50aWNhdG9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGljYXRv
ckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGlzcGxheU5hbWUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpudW1iZXJPZkNyZWRlbnRp
YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZTo6YWNjZXNzQ29udHJvbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldFNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXREaXNwbGF5TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE51bWJlck9m
Q3JlZGVudGlhbHMpOgorCiAyMDIwLTAyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUgYWZ0
ZXIgcjI1NjgwOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1NjEwMmJjYzg4Y2FiN2IwNjhiNGY0ZTJiNTk5MmYwNzdk
ZDRiZTMwLi40ZTUxMGI0MDJjMzU2MGQwYTdhMzdiNzc1NDhjOWMyMzc4YTdmODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0wMi0yMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSBmb3IgdGhlIHBs
YXRmb3JtIGF1dGhlbnRpY2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODA4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNjkzMDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGVyZSBpcyB0
aGUgbmV3bHkgYWRkZWQgU1BJOgorICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CisgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yLAorICAgICAgICAg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCwK
KyAgICAgICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlh
bCwKKyAgICAgICAgfTsKKworICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tX
ZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydCkgeworICAgICAgICAgICAgLi4uCisgICAgICAgICAg
ICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAorICAgICAgICB9OworCisg
ICAgICAgIEBwcm90b2NvbCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2Jq
ZWN0PgorICAgICAgICBAb3B0aW9uYWwKKyAgICAgICAgLi4uCisgICAgICAgIC0gKHZvaWQpcGFu
ZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2VyV2l0aEFjY2Vz
c0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBA
ZW5kCisKKyAgICAgICAgSWxsdXN0cmF0aW9uczoKKyAgICAgICAgMSkgX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbFVwZGF0ZTogdGhyZWUgZXJyb3IgYXJlIGFkZGVkIHRvIGhlbHAgY2xpZW50cyB0
byBpbmZvcm0gdXNlcnMuCisgICAgICAgIGEpIFdLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBRXJyb3I6IEFuIGludGVybmFsIGVycm9yLCBjbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMg
YW5kIHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0KKyAgICAgICAgYXV0aGVudGljYXRpb24gcHJvY2Vz
cy4gVGhpcyBlcnJvciBjYW4gYmUgcmV0dXJuZWQgYXQgYW55IHRpbWUuCisgICAgICAgIGIpIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw6IEl0IG1l
YW5zIGEgY3JlZGVudGlhbCBpcyBmb3VuZCB0byBtYXRjaCBhbiBlbnRyeSBpbiB0aGUKKyAgICAg
ICAgZXhjbHVkZUxpc3QuIENsaWVudHMgc2hvdWxkIGluZm9ybSB1c2VycyBhbmQgdGVybWluYXRl
IHRoZSBwbGF0Zm9ybSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLiBUaGlzIGVycm9yIHdpbGwgb25s
eSBiZQorICAgICAgICByZXR1cm5lZCBkdXJpbmcgbWFrZUNyZWRlbnRpYWwgYW5kIGJlZm9yZSB2
ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2wgZGVsZWdhdGUuCisgICAgICAgIGMpIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlhbDogSXQgbWVhbnMgbm8gY3JlZGVu
dGlhbHMgYXJlIGZvdW5kLiBDbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMgYW5kCisgICAgICAg
IHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRpb24gcHJvY2Vzcy4gVGhpcyBlcnJv
ciB3aWxsIG9ubHkgYmUgcmV0dXJuZWQgZHVyaW5nIGdldEFzc2VydGlvbiBhbmQgYmVmb3JlCisg
ICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbCBkZWxlZ2F0ZS4KKworICAgICAgICAy
KSBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydDogX1dLV2ViQXV0aGVudGljYXRpb25UcmFu
c3BvcnRJbnRlcm5hbCBpcyBhZGRlZCBzdWNoIHRoYXQgY2xpZW50cyBjYW4gbGVhcm4gcGxhdGZv
cm0KKyAgICAgICAgYXV0aGVudGljYXRvciB3aWxsIGJlIHVzZWQgZnJvbSBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLnRyYW5zcG9ydHMuCisKKyAgICAgICAgMykgdmVyaWZ5VXNlcldpdGhBY2Nl
c3NDb250cm9sOiBBIGRlbGVnYXRlIHRoYXQgd2lsbCBiZSBjYWxsZWQgZHVyaW5nIG1ha2VDcmVk
ZW50aWFsIG9yIGdldEFzc2VydGlvbiB3aGVuIHRoZSBwbGF0Zm9ybQorICAgICAgICBhdXRoZW50
aWNhdG9yIGlzIGludm9sdmVkLiBUaGlzIGRlbGVnYXRlIGlzIHVzZWQgdG8gb2J0YWluIHVzZXIg
dmVyaWZpY2F0aW9uIGZyb20gYSBMQUNvbnRleHQuIEluIGFkZGl0aW9uLCB0aGUgTEFDb250ZXh0
CisgICAgICAgIHNob3VsZCBldmFsdWF0ZSB0aGUgcGFzc2VkIGFjY2Vzc0NvbnRyb2wsIHN1Y2gg
dGhhdCB0aGUgU0VQIHByb3RlY3RlZCBjcmVkZW50aWFsIHByaXZhdGUga2V5IGNhbiBiZSB1c2Vk
LiBBIHR5cGljYWwKKyAgICAgICAgZXhhbXBsZSB3aWxsIGJlIFtMQUNvbnRleHQgZXZhbHVhdGVB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJh
dGlvblVzZUtleVNpZ24gbG9jYWxpemVkUmVhc29uOnJlcGx5Ol0uCisgICAgICAgIE5vdGVkLCBm
b3IgZ2V0QXNzZXJ0aW9uLCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZSB3aWxsIGJlIGNhbGxlZCBi
ZWZvcmUgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sLiBTbyB1c2VycyBuZWVkIHRvIGJlCisg
ICAgICAgIHByb21wdGVkIHRvIHNlbGVjdCBhIGNyZWRlbnRpYWwgYmVmb3JlIHRoZSB1c2VyIHZl
cmlmaWNhdGlvbi4KKworICAgICAgICBJbiB0aGUgc2NlbmFyaW8gd2hlbiBib3RoIHRoZSBwbGF0
Zm9ybSBhdXRoZW50aWNhdG9yIGFuZCBleHRlcm5hbCBhdXRoZW50aWNhdG9ycyBhcmUgcmVxdWVz
dGVkLiBDbGllbnRzIGFyZSBhZHZpc2VkIHRvCisgICAgICAgIHdhaXQgdW50aWwgdmVyaWZ5VXNl
cldpdGhBY2Nlc3NDb250cm9sIHRvIHNob3cgdGhlIGNvbWJpbmVkIFVJLiBJZiBhbnkgb2YgdGhl
IExBRXJyb3IgaXMgcmVjZWl2ZWQgYmVmb3JlCisgICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNz
Q29udHJvbCwgY2xpZW50cyBjYW4gdGhlbiBvbmx5IHNob3cgdGhlIGV4dGVybmFsIGF1dGhlbnRp
Y2F0b3IgVUkuIEFsc28sIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IgYW5kCisgICAgICAgIGV4dGVy
bmFsIGF1dGhlbnRpY2F0b3JzIGFyZSBiZWluZyBkaXNjb3ZlcmVkIGF0IHRoZSBzYW1lIHRpbWUs
IHdoaWNoIG1lYW5zLCBhIHVzZXIgY2FuIHBsdWcgaW4gYSBzZWN1cml0eSBrZXkgYXQgYW55dGlt
ZS4KKyAgICAgICAgSWYgYSB2YWxpZCByZXNwb25zZSBpcyByZWNlaXZlZCBmcm9tIHRoZSBzZWN1
cml0eSBrZXksIHRoZSB3aG9sZSBjZXJlbW9ueSB3aWxsIGJlIHRlcm1pbmF0ZWQuCisKKyAgICAg
ICAgQmVzaWRlcyBpbnRyb2R1Y2luZyB0aGUgU1BJLCBhbmQgYWxsIHRoZSBwbHVtYmluZ3MgdG8g
bWFrZSBpdCBoYXBwZW4uIFRoaXMgcGF0Y2ggYWxzbzoKKyAgICAgICAgMSkgYWRkcyBMb2NhbEF1
dGhlbnRpY2F0aW9uU1BJLCB3aGljaCBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBM
QUNvbnRleHQgaXMgdW5sb2NrZWQgb3Igbm90OworICAgICAgICAyKSBpbXByb3ZlcyBNb2NrTG9j
YWxDb25uZWN0aW9uIHN1Y2ggdGhhdCBtb2NrIHRlc3RpbmcgY2FuIHN0aWxsIGJlIHJhbi4KKwor
ICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHA6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06Cisg
ICAgICAgICh3a1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b05TRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TG9j
YWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZCk6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyQXR0ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6
OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2Vu
dGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6Zmls
dGVyUmVzcG9uc2VzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5l
Y3Rpb246OmlzVW5sb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rp
b246OmdldFVzZXJDb25zZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9j
YWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6d2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdl
YktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmZpbHRlclJlc3BvbnNlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3Jl
ZGVudGlhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQg
aGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZS5jcHAKaW5kZXggNWQzMDJmOGI4ZmMzNWRhMWU2Yzk0NmUxMTIxOTY3ZDYyZTAwYTQ5OS4u
NDVlYTFlNWZhNGI0YTZiOGY0MTQ2ODAwZmU5NjE1ZDRhNTJkOGNhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0
ZShSZWY8QQogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAotUmVmPEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50
aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8
dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRh
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB1c2VySGFuZGxlKQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlcmhhbmRsZUJ1ZmZl
cjsKICAgICBpZiAoIXVzZXJIYW5kbGUuaXNFbXB0eSgpKQpAQCAtNDgsNiArNDgsMTYgQEAgUmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVh
dGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhl
bnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZm
ZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1
c2VyaGFuZGxlQnVmZmVyKSwgV1RGOjpudWxsb3B0KTsKIH0KIAorUmVmPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUo
UmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwg
U2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RG
TW92ZSh1c2VySGFuZGxlKSwgYWNjZXNzQ29udHJvbCkpOworfQorCit2b2lkIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6c2V0QXV0aGVudGljYXRvckRhdGEoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSkKK3sKKyAgICBtX2F1dGhlbnRpY2F0b3JEYXRhID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0
b3JEYXRhLnNpemUoKSk7Cit9CisKIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2ln
bmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSkKICAgICA6IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKICAgICAsIG1fYXV0aGVudGljYXRvckRhdGEo
V1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCkBAIC01Niw2ICs2NiwxMyBAQCBBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8
QXJyYXlCdWZmZXI+JgogewogfQogCitBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJl
ZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2wpCisgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCkpCisgICAg
LCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKKyAgICAsIG1fYWNjZXNzQ29udHJv
bChhY2Nlc3NDb250cm9sKQoreworfQorCiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byBkYXRh
ID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjpkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaAppbmRleCBkNzBhOWNjZjhmMzkxYjBkZDYyYzJhMTE0ZTExNTJmOWY2YzBkNmEyLi4x
MWQ1NDYyODg5NzNiM2IzMTRkYWUxMGNhZGE5Mjc4MTVmZjA5OTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmgKQEAgLTI4LDYgKzI4LDggQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSwzMiArMzcsMzggQEAgY2xhc3MgQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0
ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNh
dG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIHVzZXJIYW5kbGUsIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91
dHB1dHM+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
PiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNl
ckhhbmRsZSwgU2VjQWNjZXNzQ29udHJvbFJlZik7CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCi0gICAgQXJyYXlCdWZmZXIqIGF1dGhl
bnRpY2F0b3JEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5wdHIoKTsg
fQotICAgIEFycmF5QnVmZmVyKiBzaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBtX3NpZ25hdHVy
ZS5wdHIoKTsgfQorICAgIEFycmF5QnVmZmVyKiBhdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXV0aGVudGljYXRvckRhdGEuZ2V0KCk7IH0KKyAgICBBcnJheUJ1ZmZlciogc2ln
bmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmUuZ2V0KCk7IH0KICAgICBBcnJheUJ1
ZmZlciogdXNlckhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckhhbmRsZS5nZXQoKTsgfQor
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlOYW1lOyB9
CisgICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX251bWJl
ck9mQ3JlZGVudGlhbHM7IH0KKyAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wo
KSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc0NvbnRyb2wuZ2V0KCk7IH0KIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0QXV0aGVudGljYXRvckRhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7
CisgICAgdm9pZCBzZXRTaWduYXR1cmUoUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSkgeyBt
X3NpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKTsgfQogICAgIHZvaWQgc2V0TmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQotICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZvaWQgc2V0RGlzcGxheU5hbWUoY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSkgeyBtX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7IH0K
LSAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
TmFtZTsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZDcmVkZW50aWFscyhzaXplX3QgbnVtYmVyT2ZD
cmVkZW50aWFscykgeyBtX251bWJlck9mQ3JlZGVudGlhbHMgPSBudW1iZXJPZkNyZWRlbnRpYWxz
OyB9Ci0gICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX251
bWJlck9mQ3JlZGVudGlhbHM7IH0KIAogcHJpdmF0ZToKICAgICBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxB
cnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKKyAgICBBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYs
IFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gVHlwZTo6QXNzZXJ0aW9uOyB9CiAgICAgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBk
YXRhKCkgY29uc3QgZmluYWw7CiAKLSAgICBSZWY8QXJyYXlCdWZmZXI+IG1fYXV0aGVudGljYXRv
ckRhdGE7Ci0gICAgUmVmPEFycmF5QnVmZmVyPiBtX3NpZ25hdHVyZTsKKyAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG1fYXV0aGVudGljYXRvckRhdGE7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBt
X3NpZ25hdHVyZTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fdXNlckhhbmRsZTsKIAogICAg
IFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZGlzcGxheU5hbWU7CiAgICAgc2l6ZV90IG1f
bnVtYmVyT2ZDcmVkZW50aWFscyB7IDAgfTsKKyAgICBSZXRhaW5QdHI8U2VjQWNjZXNzQ29udHJv
bFJlZj4gbV9hY2Nlc3NDb250cm9sOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50aWNh
dGlvblNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50
aWNhdGlvblNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3YTBmNmQwM2YwY2EyNWM3ZTMwNjEyNTU2NDk1N2Y2
MTBhOGFhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9D
b2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxMb2NhbEF1dGhlbnRpY2F0aW9uL0xvY2FsQXV0
aGVudGljYXRpb24uaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQg
PExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxBdXRoZW50aWNhdGlvbl9Qcml2YXRlLmg+CisKKyNl
bHNlCisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIExBT3B0aW9uKSB7CisgICAgTEFPcHRp
b25Ob3RJbnRlcmFjdGl2ZSwKK307CisKK0BpbnRlcmZhY2UgTEFDb250ZXh0KFByaXZhdGUpIDxO
U1NlY3VyZUNvZGluZz4KKworLSAoTlNEaWN0aW9uYXJ5ICopZXZhbHVhdGVQb2xpY3k6KExBUG9s
aWN5KXBvbGljeSBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zIGVycm9yOihOU0Vycm9y
ICoqKWVycm9yOworCitAZW5kCisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuY3BwCmluZGV4IDBjZGRiY2Y0OTc2MzM5ODI0NzU5ZmVlMWEwNTVhZjU2YWI1
ZjRkNTUuLmU1Y2I0NzM4NjliZjE3ZjQwMzBkODNmZWZkYjQ4ZGM0MmEyMzk2NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRp
b25QYW5lbC5jcHAKQEAgLTUzLDYgKzUzLDggQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbDo6V2Vi
QXV0aGVudGljYXRpb25QYW5lbChjb25zdCBBdXRoZW50aWNhdG9yTWFuYWdlciYgbWFuYWcKICAg
ICAgICAgbV90cmFuc3BvcnRzLnVuY2hlY2tlZEFwcGVuZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpVc2IpOwogICAgIGlmICh0cmFuc3BvcnRzLmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ6Ok5mYykpCiAgICAgICAgIG1fdHJhbnNwb3J0cy51bmNoZWNrZWRBcHBlbmQoQXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6TmZjKTsKKyAgICBpZiAodHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkpCisgICAgICAgIG1fdHJhbnNwb3J0cy51bmNoZWNr
ZWRBcHBlbmQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpOwogfQogCiBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsOjp+V2ViQXV0aGVudGljYXRpb25QYW5lbCgpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IDQ1OTY0NGVlM2U2ZWI2NTFjMjkyZWYzZmI0OWIz
YjRhMjZhYzc2OTguLjhjMzY4NTMzZWEwYjIxNGYwMWJhN2NiZDlkZDViNTljYTUyZTE0ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaApAQCAtMzAsOCArMzAsMTEgQEAKICNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQ
SS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitPQkpDX0NMQVNTIExBQ29u
dGV4dDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOwogfQpAQCAtNTIsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpc21pc3NQYW5lbChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KSBjb25zdCB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4mJiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0IHsgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsgY29tcGxldGlvbkhh
bmRsZXIocmVzcG9uc2VzWzBdKTsgfQorICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCmluZGV4IDQz
MWM2MzNiMGZlYjBiNTUyYTZiOWQxODdlYWQzZDZmYjViY2M4YzIuLmY3MmViMGFlYTNmNDQ1ZTE2
MTkwMTM5NDk0OTM1NzIxOGJjZjQ4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaApAQCAt
MzEsNiArMzEsNyBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xhc3MgTEFDb250
ZXh0OwogQGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xh
c3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIApAQCAtNDYsNiArNDcsOSBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CiAg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkJsb2NrZWQsCiAgICAgX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkF1dGhCbG9ja2VkLAogICAgIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVMQUVycm9yLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVM
QUR1cGxpY2F0ZUNyZWRlbnRpYWwsCisgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBTm9DcmVkZW50aWFsLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRo
ZW50aWNhdGlvblJlc3VsdCkgewpAQCAtNTYsNiArNjAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgewogdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnQpIHsKICAgICBfV0tXZWJBdXRo
ZW50aWNhdGlvblRyYW5zcG9ydFVTQiwKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9y
dE5GQywKKyAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAogfSBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKQEAgLTcx
LDYgKzc2LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRp
b25UeXBlKSB7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFu
ZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OihfV0tXZWJBdXRoZW50
aWNhdGlvblJlc3VsdClyZXN1bHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6KE5TVUludGVnZXIpcmV0
cmllcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2Vy
V2l0aEFjY2Vzc0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAyZWIzMWU4MTJjOTU5OGU4OTg4
NDBiOTU1OGNlMzMyZjJlZDY3OWZmLi4xOTczYjBmNTY0ZDI1MWIyMGNmMjZhMzZhM2E2NGQ4YTI1
MjgyMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNzMsNiArNzMsOCBAQCBz
dGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnQgd2tXZWJBdXRoZW50aWNhdGlvblRy
YW5zcG9ydChXZWJDb3JlOjpBdXRoZQogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRp
b25UcmFuc3BvcnRVU0I7CiAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpOZmM6CiAgICAgICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydE5GQzsK
KyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsOgorICAg
ICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRJbnRlcm5hbDsKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIF9X
S1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCmluZGV4IGQx
NmIxN2Q1ZmM2YmM3OTUyMTRiMjdlODI1N2ZkNmYwMGJkNGM3ZTUuLjkxZDk5ZWQ1MmI2ZGIxZGVm
YWIxNTk2MjQzMTA2NzlmM2NhZDY3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKQEAgLTM0LDYgKzM0
LDkgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmg+CisKK09CSkNfQ0xBU1MgTEFDb250ZXh0OwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7CkBAIC01Myw2ICs1Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRh
dGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V1RGOjpTdHJpbmcmKT4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoTEFDb250ZXh0ICopPiYmKSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRp
Y2F0b3IoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5k
ZXggNzM2MjZjYzA1MDI3YWU2ZTIxYjI4MTQzYmM4MDA5YjkyYjFhNzViNC4uODg1OTcxZjE4YjQy
MWM2YjBhNjg0YWNhODk2MjNlY2MzMjExNjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmNwcApAQCAtMjk1LDYgKzI5NSwxNCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShjb25zdCBIYXNoU2V0PFJlZjxBdXRoZW50aWNhdAog
ICAgIH0pOwogfQogCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChM
QUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmV0YWluUHRyPFNlY0Fj
Y2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2wgPSBhY2Nlc3NDb250cm9sUmVmOworICAgIGRp
c3BhdGNoUGFuZWxDbGllbnRDYWxsKFthY2Nlc3NDb250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250
cm9sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNv
bnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYgcGFuZWwpIG11dGFibGUgeworICAgICAg
ICBwYW5lbC5jbGllbnQoKS52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwogVW5pcXVlUmVmPEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlU2VydmljZShB
dXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNl
cnZpY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikgY29uc3QKIHsKICAgICByZXR1cm4gQXV0aGVudGlj
YXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZSh0cmFuc3BvcnQsIG9ic2VydmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IGMxNTFkZDkzMjY1OWY2MjA2YzBmMTVmYmVh
MWU1YzA1NGExYTBmOWUuLmU4ZjJkMmJmZDgwYzEwY2FhY2Y4MzA1ZDQ3M2Q1YmQzZjhhZWFmYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaApAQCAtODMsNiArODMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgYXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRp
b25TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAg
IHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGZpbmFsOwogCiAgICAgLy8gT3ZlcnJpZGVuIGJ5
IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci4KICAgICB2aXJ0dWFsIFVuaXF1ZVJlZjxBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gY3JlYXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNh
dG9yVHJhbnNwb3J0LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRM
aW5rLmgKaW5kZXggMTU1MmIyNzM5MDNhYTY0ODJhMzkzYjhkMzg3OWEwM2Y0OGU2NTVhMi4uZTg0
OTEwMjk1YmYzYTI1YTRiYzA2ZTM1MWRiM2QxNGZiN2ZjZmI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNh
dGlvblNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbXBvcnQgPExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxB
dXRoZW50aWNhdGlvbi5oPgorI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIgogI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURF
UihXZWJLaXQsIExvY2FsQXV0aGVudGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IuaAppbmRleCBkZWQ5OGYyZDc2YWM0ZGU5NTFhNTg5NDBiMzZkMmI2ZTc0YWY0
NGM3Li45YTQ3NTcwZmU3MGIzYjcyNDhjY2UxMDUzMTRlNTBiOGNjOTAwZGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAtMzksMTIgKzM5LDEzIEBAIGNsYXNz
IExvY2FsQXV0aGVudGljYXRvciBmaW5hbCA6IHB1YmxpYyBBdXRoZW50aWNhdG9yIHsKIHB1Ymxp
YzoKICAgICAvLyBIZXJlIGlzIHRoZSBGU00uCiAgICAgLy8gTWFrZUNyZWRlbnRpYWw6IEluaXQg
PT4gUmVxdWVzdFJlY2VpdmVkID0+IFVzZXJDb25zZW50ZWQgPT4gQXR0ZXN0ZWQgPT4gRW5kCi0g
ICAgLy8gR2V0QXNzZXJ0aW9uOiBJbml0ID0+IFJlcXVlc3RSZWNlaXZlZCA9PiBVc2VyQ29uc2Vu
dGVkID0+IEVuZAorICAgIC8vIEdldEFzc2VydGlvbjogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQg
PT4gUmVzcG9uc2VTZWxlY3RlZCA9PiBVc2VyQ29uc2VudGVkID0+IEVuZAogICAgIGVudW0gY2xh
c3MgU3RhdGUgewogICAgICAgICBJbml0LAogICAgICAgICBSZXF1ZXN0UmVjZWl2ZWQsCiAgICAg
ICAgIFVzZXJDb25zZW50ZWQsCiAgICAgICAgIEF0dGVzdGVkLAorICAgICAgICBSZXNwb25zZVNl
bGVjdGVkCiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8TG9jYWxBdXRoZW50aWNhdG9yPiBjcmVh
dGUoVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQpAQCAtNTYsMTQgKzU3
LDE4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJl
ZjxMb2NhbENvbm5lY3Rpb24+JiYpOwogCiAgICAgdm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFs
OwotICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNB
Y2Nlc3NDb250cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50LCBMQUNvbnRleHQg
Kik7CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNl
Y0FjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqKTsKICAgICB2b2lkIGNvbnRpbnVlTWFrZUNy
ZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiwgVmVjdG9yPHVpbnQ4X3Q+JiYgY3JlZGVu
dGlhbElkLCBWZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwgTlNBcnJheSAqY2VydGlmaWNhdGVz
LCBOU0Vycm9yICopOwogCiAgICAgdm9pZCBnZXRBc3NlcnRpb24oKSBmaW5hbDsKLSAgICB2b2lk
IGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6
VXNlckNvbnNlbnQsIExBQ29udGV4dCAqLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRp
YWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFuZGxlKTsKKyAgICB2b2lkIGNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVNlbGVjdGVkKFJlZjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworICAgIHZvaWQgY29udGludWVHZXRBc3NlcnRp
b25BZnRlclVzZXJDb25zZW50ZWQoTEFDb250ZXh0ICosIFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworCisgICAgdm9pZCByZWNlaXZlRXhjZXB0aW9uKFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmJiwgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgPSBXZWJBdXRo
ZW50aWNhdGlvblN0YXR1czo6TEFFcnJvcikgY29uc3Q7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsg
U3RhdGU6OkluaXQgfTsKICAgICBVbmlxdWVSZWY8TG9jYWxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b247CisgICAgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4gbV9hc3NlcnRpb25SZXNwb25zZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCAyNWRkMWM2YWU5
NjgxZjBlZjc4Y2RiMWYzZDRjNDFiYTRlNGJiNWRlLi43OGI3M2RlMWM1MGMxMTQ2N2ZjYWQ1ODFm
NzcxNDZhZmZhNDQ3NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9y
Lm1tCkBAIC04Niw2ICs4NiwxOCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRv
TlNEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKICAgICByZXR1cm4gYWRvcHROUyhb
W05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXpl
KCldKTsKIH0KIAorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNEYXRhPiB0b05TRGF0YShBcnJh
eUJ1ZmZlciogYnVmZmVyKQoreworICAgIEFTU0VSVChidWZmZXIpOworICAgIC8vIEZJWE1FKDE4
MzUzNCk6IENvbnNpZGVyIHVzaW5nIGluaXRXaXRoQnl0ZXNOb0NvcHkuCisgICAgcmV0dXJuIGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3Ro
OmJ1ZmZlci0+Ynl0ZUxlbmd0aCgpXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVm
ZmVyPiB0b0FycmF5QnVmZmVyKE5TRGF0YSAqZGF0YSkKK3sKKyAgICByZXR1cm4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwg
ZGF0YS5sZW5ndGgpOworfQorCiB9IC8vIExvY2FsQXV0aGVudGljYXRvckludGVybmFsCiAKIExv
Y2FsQXV0aGVudGljYXRvcjo6TG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbikKQEAgLTEwOCw3ICsxMjAsNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAgIGlmIChub3RGb3VuZCA9PSBjcmVhdGlvbk9w
dGlvbnMucHViS2V5Q3JlZFBhcmFtcy5maW5kTWF0Y2hpbmcoW10gKGF1dG8mIHB1YktleUNyZWRQ
YXJhbSkgewogICAgICAgICByZXR1cm4gcHViS2V5Q3JlZFBhcmFtLnR5cGUgPT0gUHVibGljS2V5
Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSAmJiBwdWJLZXlDcmVkUGFyYW0uYWxnID09IENPU0U6
OkVTMjU2OwogICAgIH0pKSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEg
eyBOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9y
IGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRl
cnMuIl9zIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55
IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiJfcyB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTMxLDI0ICsxNDMsMjIgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJh
eVJlZiA9IG51bGxwdHI7CiAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0
Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJl
Zik7CiAgICAgICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkg
ewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBz
dGF0dXMpOwotICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25v
d25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICIsIHN0YXR1cykg
fSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3Ry
aW5nKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9
IGFkb3B0Q0YoYXR0cmlidXRlc0FycmF5UmVmKTsKIAotICAgICAgICAvLyBGSVhNRShyZGFyOi8v
cHJvYmxlbS8zNTkwMDU5Myk6IE5lZWQgdG8gb2J0YWluIHVzZXIgY29uc2VudCBhbmQgdGhlbiBy
ZXR1cm4gZGlmZmVyZW50IGVycm9yIGFjY29yZGluZyB0byB0aGUgcmVzdWx0LgorICAgICAgICAv
LyBGSVhNRTogTmVlZCB0byBvYnRhaW4gdXNlciBjb25zZW50IGFuZCB0aGVuIHJldHVybiBkaWZm
ZXJlbnQgZXJyb3IgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQuCiAgICAgICAgIGZvciAoTlNEaWN0
aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgaW4gKE5TQXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlSZWYpIHsK
ICAgICAgICAgICAgIE5TRGF0YSAqbnNDcmVkZW50aWFsSWQgPSBuc0F0dHJpYnV0ZXNbKGlkKWtT
ZWNBdHRyQXBwbGljYXRpb25MYWJlbF07CiAgICAgICAgICAgICBpZiAoZXhjbHVkZUNyZWRlbnRp
YWxJZHMuY29udGFpbnMoU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5zQ3Jl
ZGVudGlhbElkLmJ5dGVzKSwgbnNDcmVkZW50aWFsSWQubGVuZ3RoKSkpIHsKLSAgICAgICAgICAg
ICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiQXQg
bGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRl
bnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0p
OworICAgICAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBOb3RBbGxvd2VkRXJyb3IsICJB
dCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3Jl
ZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3Mg
fSwgV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxBRHVwbGljYXRlQ3JlZGVudGlhbCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAg
ICAgLy8gU3RlcCA2LgotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTAwNTkzKTogVXBk
YXRlIHRvIGEgZm9ybWFsIFVJLgogICAgIC8vIEdldCB1c2VyIGNvbnNlbnQuCiAgICAgUmV0YWlu
UHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2w7CiAgICAgewpAQCAtMTU2LDI3
ICsxNjYsMjUgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAg
ICAgICAgYWNjZXNzQ29udHJvbCA9IGFkb3B0Q0YoU2VjQWNjZXNzQ29udHJvbENyZWF0ZVdpdGhG
bGFncyhOVUxMLCBrU2VjQXR0ckFjY2Vzc2libGVXaGVuUGFzc2NvZGVTZXRUaGlzRGV2aWNlT25s
eSwga1NlY0FjY2Vzc0NvbnRyb2xQcml2YXRlS2V5VXNhZ2UgfCBrU2VjQWNjZXNzQ29udHJvbFVz
ZXJQcmVzZW5jZSwgJmVycm9yUmVmKSk7CiAgICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9w
dENGKGVycm9yUmVmKTsKICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICBMT0df
RVJST1IoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogJUAiLCAoTlNFcnJvciAqKWVy
cm9yUmVmKTsKLSAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtu
b3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogIiwg
U3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7Cisg
ICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJD
b3VsZG4ndCBjcmVhdGUgYWNjZXNzIGNvbnRyb2w6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9y
UmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVm
ID0gYWNjZXNzQ29udHJvbC5nZXQoKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRy
b2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250
ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICgh
d2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0g
dGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2xSZWYgPSBhY2Nlc3NDb250cm9sLmdldCgpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0g
W2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0gKExBQ29udGV4dCAqY29udGV4dCkgeworICAgICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIGNvbnNlbnQsIGNvbnRl
eHQpOwotICAgIH07Ci0gICAgbV9jb25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKLSAgICAgICAg
bWFrZVN0cmluZygiYWxsb3cgIl9zLCBjcmVhdGlvbk9wdGlvbnMucnAuaWQsICIgdG8gY3JlYXRl
IGEgcHVibGljIGtleSBjcmVkZW50aWFsIGZvciAiX3MsIGNyZWF0aW9uT3B0aW9ucy51c2VyLm5h
bWUpLAotICAgICAgICBhY2Nlc3NDb250cm9sUmVmLAotICAgICAgICBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNl
ckNvbnNlbnRlZChhY2Nlc3NDb250cm9sLmdldCgpLCBjb250ZXh0KTsKKyAgICAgICAgfTsKKyAg
ICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIH0KIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFr
ZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3ND
b250cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4
dCAqY29udGV4dCkKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJl
ZiwgTEFDb250ZXh0ICpjb250ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhl
bnRpY2F0b3JJbnRlcm5hbDsKIApAQCAtMTg0LDcgKzE5Miw3IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vz
c0NvbnRyCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOwogICAgIGF1dG8mIGNy
ZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAKLSAgICBpZiAoY29uc2VudCA9PSBMb2NhbENv
bm5lY3Rpb246OlVzZXJDb25zZW50OjpObykgeworICAgIGlmICghbV9jb25uZWN0aW9uLT5pc1Vu
bG9ja2VkKGNvbnRleHQpKSB7CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEg
eyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJfcyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMyw4ICsyMjEsNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nl
c3NDb250cgogICAgIH07CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbURlbGV0ZSgoX19i
cmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKICAgICBpZiAoc3RhdHVzICYmIHN0
YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4n
dCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogJWQiLCBzdGF0dXMpOwotICAgICAgICByZWNlaXZl
UmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4n
dCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2
ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZGVsZXRlIG9s
ZGVyIGNyZWRlbnRpYWw6ICIsIHN0YXR1cykgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTIyMiw3ICsyMjksNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cgogICAgIC8vIFRoZSBh
Ym92ZS10by1jcmVhdGUgcHJpdmF0ZSBrZXkgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIGtleWNoYWlu
IHdoaWxlIHVzaW5nIFNFUC4KICAgICBhdXRvIHByaXZhdGVLZXkgPSBtX2Nvbm5lY3Rpb24tPmNy
ZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KGNvbnRleHQsIGFjY2Vzc0NvbnRyb2xSZWYsIHNlY0F0
dHJMYWJlbCwgc2VjQXR0ckFwcGxpY2F0aW9uVGFnLmdldCgpKTsKICAgICBpZiAoIXByaXZhdGVL
ZXkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJv
ciwgIkNvdWxkbid0IGNyZWF0ZSBwcml2YXRlIGtleS4iX3MgfSk7CisgICAgICAgIHJlY2VpdmVF
eGNlcHRpb24oeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNDMsOCArMjUwLDcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50
ZWQoU2VjQWNjZXNzQ29udHIKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNSZWYgPSBudWxs
cHRyOwogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpY3JlZGVudGlhbElkUXVlcnksICZhdHRyaWJ1dGVzUmVmKTsK
ICAgICAgICAgaWYgKHN0YXR1cykgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBn
ZXQgQ3JlZGVudGlhbCBJRDogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgcmVjZWl2ZVJlc3Bv
bmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0
IENyZWRlbnRpYWwgSUQ6ICIsIHN0YXR1cykgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0
aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZXQgQ3JlZGVudGlhbCBJ
RDogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBhdXRvIHJldGFpbkF0dHJpYnV0ZXMgPSBhZG9wdENGKGF0dHJpYnV0ZXNSZWYpOwpAQCAtMjY4
LDggKzI3NCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyCiAgICAgICAgICAgICBwdWJsaWNL
ZXlEYXRhUmVmID0gYWRvcHRDRihTZWNLZXlDb3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihwdWJs
aWNLZXkuZ2V0KCksICZlcnJvclJlZikpOwogICAgICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9
IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAg
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBleHBvcnQgdGhlIHB1YmxpYyBrZXk6ICVAIiwg
KE5TRXJyb3IqKWVycm9yUmVmKTsKLSAgICAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNl
cHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBleHBvcnQgdGhl
IHB1YmxpYyBrZXk6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNj
cmlwdGlvbikpIH0pOworICAgICAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGV4cG9ydCB0aGUgcHVibGljIGtleTogIiwgU3Ry
aW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKCgo
TlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQoKSkubGVuZ3RoID09ICgxICsgMiAqIEVTMjU2
RmllbGRFbGVtZW50TGVuZ3RoKSk7IC8vIDA0IHwgWCB8IFkKQEAgLTMwOSw4ICszMTQsNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0
ZWQoU2VjS2V5UmVmIHByaXZhdGVLZQogICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6
Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0
aW9ucyk7CiAKICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBh
dHRlc3Q6ICVAIiwgZXJyb3IpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRh
IHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9u
KHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIC8vIEF0dGVzdGF0aW9uIENlcnRpZmljYXRlIGFuZCBBdHRlc3RhdGlvbiBJc3N1aW5nIENB
CkBAIC0zNDQsMTAgKzM0OCw5IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRp
b24oKQogICAgIC8vIFNraXAgU3RlcCA4IGFzIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQg
eWV0LgogICAgIC8vIFN0ZXAgMTIgaXMgaW1wbGljaXRseSBjYXB0dXJlZCBieSBhbGwgVW5rbm93
bkVycm9yIGV4Y2VwdGlvbiBjYWxsYmFja3MuCiAgICAgLy8gU3RlcCAzLTUuIFVubGlrZSB0aGUg
c3BlYywgaWYgYW4gYWxsb3cgbGlzdCBpcyBwcm92aWRlZCBhbmQgdGhlcmUgaXMgbm8gaW50ZXJz
ZWN0aW9uIGJldHdlZW4gZXhpc3Rpbmcgb25lcyBhbmQgdGhlIGFsbG93IGxpc3QsIHdlIGFsd2F5
cyByZXR1cm4gTm90QWxsb3dlZEVycm9yLgotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1
OTAwNTkzKTogTmVlZCB0byBpbmZvcm0gdXNlcnMuCiAgICAgYXV0byBhbGxvd0NyZWRlbnRpYWxJ
ZHMgPSBwcm9kdWNlSGFzaFNldChyZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKTsKICAg
ICBpZiAoIXJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuaXNFbXB0eSgpICYmIGFsbG93
Q3JlZGVudGlhbElkcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZv
dW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAg
ICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVu
dGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJf
cyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0zNjcsOCArMzcwLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0
b3I6OmdldEFzc2VydGlvbigpCiAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51
bGxwdHI7CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKICAgICBpZiAo
c3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBzdGF0dXMpOwotICAgICAgICByZWNl
aXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3Vs
ZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2Vw
dGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46
ICIsIHN0YXR1cykgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byByZXRhaW5B
dHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CkBAIC0zODYsNDEg
KzM4OCw2MSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAg
ICAgaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMgPSByZXN1bHQ7CiAgICAgfQogICAg
IGlmICghaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMuY291bnQpIHsKLSAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNo
ZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50
aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJv
ciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRh
Y2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0Ny
ZWRlbnRpYWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gU3RlcCA2LgotICAg
IGF1dG8gKnNlbGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXMgPSBtX2Nvbm5lY3Rpb24tPnNlbGVj
dENyZWRlbnRpYWwoaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMpOworICAgIGZvciAo
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGUgOiBpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRl
cykgeworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFkZChB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSgKKyAgICAgICAgICAgIHRvQXJy
YXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwKKyAgICAg
ICAgICAgIHRvQXJyYXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFn
XSksCisgICAgICAgICAgICAoX19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVb
KGlkKWtTZWNBdHRyQWNjZXNzQ29udHJvbF0pKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICB9CisgICAgbV9jb25uZWN0aW9uLT5m
aWx0ZXJSZXNwb25zZXMobV9hc3NlcnRpb25SZXNwb25zZXMpOworCisgICAgaWYgKGF1dG8qIG9i
c2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBhdXRvIGNhbGxiYWNrID0gW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29uc3QgQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlJiByZXNwb25zZSkgeworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBhdXRvIHJldHVyblJlc3BvbnNlID0gbV9hc3NlcnRpb25S
ZXNwb25zZXMudGFrZShjb25zdF9jYXN0PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSo+
KCZyZXNwb25zZSkpOworICAgICAgICAgICAgaWYgKCFyZXR1cm5SZXNwb25zZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVz
cG9uc2VTZWxlY3RlZChXVEZNb3ZlKCpyZXR1cm5SZXNwb25zZSkpOworICAgICAgICB9OworICAg
ICAgICBvYnNlcnZlci0+c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UobV9hc3NlcnRpb25SZXNwb25z
ZXMsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9Cit9CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmIHJlc3BvbnNlKQoreworICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOworICAgIG1fc3RhdGUgPSBT
dGF0ZTo6UmVzcG9uc2VTZWxlY3RlZDsKIAogICAgIC8vIFN0ZXAgNy4gR2V0IHVzZXIgY29uc2Vu
dC4KLSAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTkwMDU5Myk6IFVwZGF0ZSB0byBhIGZv
cm1hbCBVSS4KLSAgICBhdXRvIGNhbGxiYWNrID0gWwotICAgICAgICB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwKLSAgICAgICAgY3JlZGVudGlhbElkID0gdG9WZWN0b3Ioc2VsZWN0ZWRD
cmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXSksCi0gICAg
ICAgIHVzZXJoYW5kbGUgPSB0b1ZlY3RvcihzZWxlY3RlZENyZWRlbnRpYWxBdHRyaWJ1dGVzWyhp
ZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSkKLSAgICBdKExvY2FsQ29ubmVjdGlvbjo6VXNlckNv
bnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAg
ICBhdXRvIGFjY2Vzc0NvbnRyb2xSZWYgPSByZXNwb25zZS0+YWNjZXNzQ29udHJvbCgpOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXNw
b25zZSA9IFdURk1vdmUocmVzcG9uc2UpXSAoTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB3ZWFrVGhpcy0+
Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoY29uc2VudCwgY29udGV4dCwg
Y3JlZGVudGlhbElkLCB1c2VyaGFuZGxlKTsKLSAgICB9OwotICAgIE5TRGF0YSAqaWREYXRhID0g
c2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ107
Ci0gICAgU3RyaW5nVmlldyBpZFN0cmluZ1ZpZXcgeyBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+
KFtpZERhdGEgYnl0ZXNdKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFtpZERhdGEgbGVuZ3RoXSkg
fTsKLSAgICBtX2Nvbm5lY3Rpb24tPmdldFVzZXJDb25zZW50KAotICAgICAgICBtYWtlU3RyaW5n
KCJsb2cgaW50byAiLCByZXF1ZXN0T3B0aW9ucy5ycElkLCAiIHdpdGggIiwgaWRTdHJpbmdWaWV3
KSwKLSAgICAgICAgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpc2VsZWN0ZWRDcmVkZW50
aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSwKLSAgICAgICAgV1RGTW92
ZShjYWxsYmFjaykpOworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlR2V0QXNzZXJ0aW9u
QWZ0ZXJVc2VyQ29uc2VudGVkKGNvbnRleHQsIFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICAgICAg
fTsKKyAgICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIH0KIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6VXNlckNv
bnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFuZGxlKQordm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVk
KExBQ29udGV4dCAqY29udGV4dCwgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4mJiByZXNwb25zZSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50
aWNhdG9ySW50ZXJuYWw7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNl
aXZlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlc3BvbnNlU2VsZWN0ZWQpOwog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKIAotICAgIGlmIChjb25zZW50ID09
IExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQ6Ok5vKSB7CisgICAgaWYgKCFtX2Nvbm5lY3Rp
b24tPmlzVW5sb2NrZWQoY29udGV4dCkpIHsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDMyLDI1ICs0NTQsMjcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVk
KExvY2FsQ29ubmVjdGlvbjoKICAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShXVEY6
OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0
aW9ucykucnBJZCwgZ2V0QXNzZXJ0aW9uRmxhZ3MsIGNvdW50ZXIsIHsgfSk7CiAKICAgICAvLyBT
dGVwIDExLgotICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmU7CisgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gc2lnbmF0dXJlOwogICAgIHsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICpxdWVyeSA9
IEB7CisgICAgICAgIGF1dG8gcXVlcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworICAgICAgICBbcXVlcnkgYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OkB7
CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAogICAgICAgICAg
ICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKLSAg
ICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRvTlNEYXRhKGNyZWRlbnRp
YWxJZCkuZ2V0KCksCi0gICAgICAgICAgICAoaWQpa1NlY1VzZUF1dGhlbnRpY2F0aW9uQ29udGV4
dDogY29udGV4dCwKKyAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRv
TlNEYXRhKHJlc3BvbnNlLT5yYXdJZCgpKS5nZXQoKSwKICAgICAgICAgICAgIChpZClrU2VjUmV0
dXJuUmVmOiBAWUVTLAogI2lmIEhBVkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQogICAgICAg
ICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCiAjZWxzZQogICAg
ICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICNlbmRpZgotICAgICAgICB9Owor
ICAgICAgICB9XTsKKyAgICAgICAgLy8gY29udGV4dCBpcyBudWxscHRyIGluIG1vY2sgdGVzdGlu
Zy4KKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICBbcXVlcnkgc2V0T2JqZWN0OmNv
bnRleHQgZm9yS2V5OihpZClrU2VjVXNlQXV0aGVudGljYXRpb25Db250ZXh0XTsKICAgICAgICAg
Q0ZUeXBlUmVmIHByaXZhdGVLZXlSZWYgPSBudWxscHRyOwotICAgICAgICBPU1N0YXR1cyBzdGF0
dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnks
ICZwcml2YXRlS2V5UmVmKTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlN
YXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LmdldCgpLCAmcHJpdmF0ZUtl
eVJlZik7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291
bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICVkIiwgc3RhdHVzKTsKLSAgICAg
ICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VT
dHJpbmcoIkNvdWxkbid0IGdldCB0aGUgcHJpdmF0ZSBrZXkgcmVmZXJlbmNlOiAiLCBzdGF0dXMp
IH0pOworICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0
cmluZygiQ291bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICIsIHN0YXR1cykg
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byBwcml2YXRl
S2V5ID0gYWRvcHRDRihwcml2YXRlS2V5UmVmKTsKQEAgLTQ2MCwxOCArNDg0LDI3IEBAIHZvaWQg
TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRl
ZChMb2NhbENvbm5lY3Rpb246CiAKICAgICAgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxw
dHI7CiAgICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0aW5nIENGVHlwZVJlZiB0byBTZWNLZXlSZWYg
aXMgcXVpdGUgc3VidGxlIGhlcmUuCi0gICAgICAgIGF1dG8gc2lnbmF0dXJlUmVmID0gYWRvcHRD
RihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJlZikoKGlkKXByaXZhdGVL
ZXlSZWYpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNzYWdlWDk2MlNIQTI1Niwg
KF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYpKTsKKyAgICAgICAgc2ln
bmF0dXJlID0gYWRvcHRDRihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJl
ZikoKGlkKXByaXZhdGVLZXlSZWYpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNz
YWdlWDk2MlNIQTI1NiwgKF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYp
KTsKICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAg
ICBpZiAoZXJyb3JSZWYpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2VuZXJh
dGUgdGhlIHNpZ25hdHVyZTogJUAiLCAoTlNFcnJvciopZXJyb3JSZWYpOwotICAgICAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygi
Q291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJy
b3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhj
ZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZW5lcmF0ZSB0aGUg
c2lnbmF0dXJlOiAiLCBTdHJpbmcoKChOU0Vycm9yKillcnJvclJlZikubG9jYWxpemVkRGVzY3Jp
cHRpb24pKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBzaWdu
YXR1cmUgPSB0b1ZlY3RvcigoTlNEYXRhICopc2lnbmF0dXJlUmVmLmdldCgpKTsKICAgICB9CiAK
ICAgICAvLyBTdGVwIDEzLgotICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgdXNl
cmhhbmRsZSkpOworICAgIHJlc3BvbnNlLT5zZXRBdXRoZW50aWNhdG9yRGF0YShhdXRoRGF0YSk7
CisgICAgcmVzcG9uc2UtPnNldFNpZ25hdHVyZSh0b0FycmF5QnVmZmVyKChOU0RhdGEgKilzaWdu
YXR1cmUuZ2V0KCkpKTsKKyAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKHJlc3BvbnNlKSk7Cit9
CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0aW9uKEV4Y2VwdGlvbkRh
dGEmJiBleGNlcHRpb24sIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIHN0YXR1cykgY29uc3QKK3sK
KyAgICBMT0dfRVJST1IoZXhjZXB0aW9uLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgaWYg
KGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkKKyAgICAgICAgb2JzZXJ2ZXItPmF1
dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKHN0YXR1cyk7CisgICAgcmVjZWl2ZVJlc3BvbmQoV1RG
TW92ZShleGNlcHRpb24pKTsKKyAgICByZXR1cm47CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaAppbmRleCA5MTkxYjJjNjUzNDJjZDFi
NjU3MTI1YTIzMjY0NjE2ZmU4ZGUyMjlhLi41NDVhYzVmZjYxYjdiMmJhZTdkZTM4NzQyZDU2ODg4
ZTVmMDgxNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaApAQCAtNDYsMjMg
KzQ2LDE2IEBAIGNsYXNzIExvY2FsQ29ubmVjdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxDb25uZWN0aW9uKTsKIHB1Ymxp
YzoKLSAgICBlbnVtIGNsYXNzIFVzZXJDb25zZW50IHsKLSAgICAgICAgTm8sCi0gICAgICAgIFll
cwotICAgIH07Ci0KICAgICB1c2luZyBBdHRlc3RhdGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChOU0FycmF5ICosIE5TRXJyb3IgKik+OwotICAgIHVzaW5nIFVzZXJDb25zZW50
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJDb25zZW50KT47Ci0gICAgdXNp
bmcgVXNlckNvbnNlbnRDb250ZXh0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVz
ZXJDb25zZW50LCBMQUNvbnRleHQgKik+OwogCiAgICAgTG9jYWxDb25uZWN0aW9uKCkgPSBkZWZh
dWx0OwogICAgIHZpcnR1YWwgfkxvY2FsQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogICAgIC8v
IE92ZXJyaWRlZCBieSBNb2NrTG9jYWxDb25uZWN0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBnZXRV
c2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNl
ckNvbnNlbnRDb250ZXh0Q2FsbGJhY2smJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzVW5s
b2NrZWQoTEFDb250ZXh0ICopIGNvbnN0OwogICAgIHZpcnR1YWwgUmV0YWluUHRyPFNlY0tleVJl
Zj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRy
b2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNh
dGlvblRhZykgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGdldEF0dGVzdGF0aW9uKFNlY0tleVJl
ZiwgTlNEYXRhICphdXRoRGF0YSwgTlNEYXRhICpoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYp
IGNvbnN0OwotICAgIHZpcnR1YWwgTlNEaWN0aW9uYXJ5ICpzZWxlY3RDcmVkZW50aWFsKGNvbnN0
IE5TQXJyYXkgKikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGZpbHRlclJlc3BvbnNlcyhIYXNo
U2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYpIGNvbnN0
IHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxD
b25uZWN0aW9uLm1tCmluZGV4IDhiYWVlZTcwOWZmYzdkM2NlNWNiOGU4MDE0YzMxM2I4YTBhZTAx
YjQuLjUzZTAxMjNhZDdhZGE1NTc1M2MyMjI5OWZlODllODg0MDJmYzIxZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29u
bmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KQEAgLTM5LDIyICszOSwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0
IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIFVzZXJD
b25zZW50Q29udGV4dENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Citib29sIExv
Y2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZChMQUNvbnRleHQgKmNvbnRleHQpIGNvbnN0CiB7Ci0g
ICAgYXV0byBjb250ZXh0ID0gYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRd
KTsKLSAgICBhdXRvIHJlcGx5ID0gbWFrZUJsb2NrUHRyKFtjb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgICAgIFVzZXJDb25zZW50IGNvbnNlbnQgPSBVc2VyQ29uc2VudDo6WWVzOwotICAgICAg
ICBpZiAoIXN1Y2Nlc3MgfHwgZXJyb3IpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRu
J3QgYXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmljczogJUAiLCBlcnJvcik7Ci0gICAgICAgICAg
ICBjb25zZW50ID0gVXNlckNvbnNlbnQ6Ok5vOwotICAgICAgICB9Ci0gICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgY29uc2VudCwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCldKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb25zZW50LCBjb250ZXh0LmdldCgpKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci0gICAgW2NvbnRleHQgZXZhbHVhdGVBY2Nlc3NDb250cm9s
OmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJhdGlvblVzZUtleVNp
Z24gbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpyZXBseS5nZXQoKV07CisgICAgTlNFcnJv
ciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byByZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVBvbGlj
eTpMQVBvbGljeURldmljZU93bmVyQXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBvcHRpb25z
OkB7IEAoTEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSk6IEBZRVMgfSBlcnJvcjomZXJyb3JdOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdldCB1c2VyIGNvbnNl
bnQ6ICVAIiwgZXJyb3IpOworICAgIHJldHVybiAhIXJlc3VsdDsKIH0KIAogUmV0YWluUHRyPFNl
Y0tleVJlZj4gTG9jYWxDb25uZWN0aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNv
bnRleHQgKmNvbnRleHQsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgY29u
c3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBj
b25zdApAQCAtODgsMTIgKzc5LDYgQEAgTE9DQUxDT05ORUNUSU9OX0FERElUSU9OUwogI2VuZGlm
CiB9CiAKLU5TRGljdGlvbmFyeSAqTG9jYWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsKGNv
bnN0IE5TQXJyYXkgKmNyZWRlbnRpYWxzKSBjb25zdAotewotICAgIC8vIEZJWE1FKHJkYXI6Ly9w
cm9ibGVtLzM1OTAwNTM0KTogV2UgZG9uJ3QgaGF2ZSBhbiBVSSB0byBwcm9tcHQgdXNlcnMgZm9y
IHNlbGVjdGluZyBpbnRlcnNlY3RlZENyZWRlbnRpYWxzLCBhbmQgdGhlcmVmb3JlIHdlIGFsd2F5
cyB1c2UgdGhlIGZpcnN0IG9uZSBmb3Igbm93LgotICAgIHJldHVybiBjcmVkZW50aWFsc1swXTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5oCmluZGV4IDNjNmIzZDdlMDEzY2U2ODA3MjgzOGI5MjY4YWVjYTliZGUyOThlY2YuLmRmM2Q5
NWFlMTA5ZTViZDQyMTI3YTNlNGYwM2M1NDUzYjU4YmMzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3Vs
dCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGNvbnN0IGZpbmFsOwogCiAgICAgX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbCAqbV9wYW5lbDsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbERlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CkBAIC01OCw3ICs1OSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIGJvb2wgcGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsIDog
MTsKICAgICAgICAgYm9vbCBwYW5lbERpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJl
c3VsdCA6IDE7CiAgICAgICAgIGJvb2wgcGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJp
ZXNDb21wbGV0aW9uSGFuZGxlciA6IDE7Ci0gICAgICAgIGJvb2wgcGFuZWxzZWxlY3RBc3NlcnRp
b25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCBwYW5lbFNlbGVj
dEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29sIHBh
bmVsVmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAg
IH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQppbmRleCBkNTE2NjMyYjk4ZDczODgxYzQz
ZTQzMTljMzk3MzNlMDQwMzllYjVlLi40MDgwNjUyZGRkMjgzMjdkMTYzZWRlZGFhZWE3YjljMGM4
ODBhMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQubW0KQEAgLTM4LDYgKzM4LDggQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAorI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlv
blNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKnBhbmVsLCBpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiBk
ZWxlZ2F0ZSkKQEAgLTQ3LDcgKzQ5LDggQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudChfV0tXZWJBdXRoZW50aWNhdGlvblAKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy5wYW5lbFVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDp1cGRhdGVXZWJBdXRoZW50
aWNhdGlvblBhbmVsOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsRGlzbWlzc1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocGFuZWw6ZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0
OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdS
ZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwYW5lbDpyZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6Y29tcGxldGlvbkhh
bmRsZXI6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFu
ZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9u
SGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnZl
cmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0
YWluUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6ZGVsZWdhdGUoKQpAQCAtNjcsNiArNzAsMTIgQEAgc3RhdGlj
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUgd2tXZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlKFdlYkF1dGhlbnQKICAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVQSU5BdXRoQmxvY2tlZDsKICAgICBpZiAoc3RhdHVzID09IFdlYkF1dGhlbnRpY2F0
aW9uU3RhdHVzOjpQaW5JbnZhbGlkKQogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZVBJTkludmFsaWQ7CisgICAgaWYgKHN0YXR1cyA9PSBXZWJBdXRoZW50aWNh
dGlvblN0YXR1czo6TEFFcnJvcikKKyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVMQUVycm9yOworICAgIGlmIChzdGF0dXMgPT0gV2ViQXV0aGVudGljYXRpb25T
dGF0dXM6OkxBRHVwbGljYXRlQ3JlZGVudGlhbCkKKyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw7CisgICAgaWYgKHN0YXR1
cyA9PSBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpCisgICAgICAgIHJl
dHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWw7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVNdWx0aXBsZU5GQ1RhZ3NQcmVzZW50OwogfQpAQCAtMTMzLDcgKzE0Miw3IEBAIHZv
aWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Uo
VmVjdG9yPFJlZjxXZWJDb3JlOjpBCiB7CiAgICAgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgp
KTsKIAotICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5l
bFNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE1OCw2ICsxNjcsMjggQEAgdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkEKICAgICB9KS5nZXQoKV07
CiB9CiAKK3ZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlcihTZWNB
Y2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFD
b250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9kZWxl
Z2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFu
ZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFthbGxvY0xBQ29udGV4
dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5j
ZSgpIGluaXRdKS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNo
ZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0
KCksIEBzZWxlY3RvcihwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlv
bkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgdmVyaWZ5VXNlcldpdGhB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2Vy
ID0gV1RGTW92ZShjaGVja2VyKV0oTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisgICAgfSkuZ2V0KCldOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9N
b2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDcyMDE1OGFjYzI1
NTkxYjczMGZjZTcxY2FmZWRiZTM0MzE5NmRlZDIuLmQwZGQ5YjEwNDlhYTE3ZmJlZWUzYjg0OTJl
NWVjNDFmNzU1MmE4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5o
CkBAIC0zNywxMCArMzcsMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tMb2NhbENvbm5l
Y3Rpb24oY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFz
b24sIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaXNVbmxvY2tlZChMQUNvbnRleHQgKikgY29uc3QgZmluYWw7
CiAgICAgUmV0YWluUHRyPFNlY0tleVJlZj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFD
b250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVs
LCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBn
ZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwg
QXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKLSAgICBOU0RpY3Rpb25hcnkgKnNl
bGVjdENyZWRlbnRpYWwoY29uc3QgTlNBcnJheSAqKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGZp
bHRlclJlc3BvbnNlcyhIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U+PiYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25u
ZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IDkxNWI1OTQ5OWZlN2VjZDI3YmZmNjliMmYw
NjcwZGI3ZDRjZjMwZmYuLjhiOGQ4MjQ1MTRlNThjODQyMDBhYTc4MTY2NzU5YWFlZjdjYzUxNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTMyLDYgKzMy
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogI2ltcG9ydCA8d3RmL1J1
bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNp
bXBvcnQgIkxvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIgpAQCAtNDMsMTcgKzQ0LDkgQEAg
TW9ja0xvY2FsQ29ubmVjdGlvbjo6TW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpN
b2NrV2ViQXV0aGVudGljYXRpb25Db24KIHsKIH0KIAotdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9u
OjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2Vy
Q29uc2VudENvbnRleHRDYWxsYmFjayYmIGNhbGxiYWNrKSBjb25zdAorYm9vbCBNb2NrTG9jYWxD
b25uZWN0aW9uOjppc1VubG9ja2VkKExBQ29udGV4dCAqY29udGV4dCkgY29uc3QKIHsKLSAgICAv
LyBNb2NrIGFzeW5jIG9wZXJhdGlvbnMuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtj
b25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9uLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoY29uZmlndXJhdGlvbi5sb2NhbCk7Ci0g
ICAgICAgIGlmICghY29uZmlndXJhdGlvbi5sb2NhbC0+YWNjZXB0QXV0aGVudGljYXRpb24pIHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKFVzZXJDb25zZW50OjpObywgbmlsKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjYWxsYmFjayhVc2VyQ29uc2VudDo6WWVzLCBh
ZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKLSAgICB9KTsK
KyAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLmxvY2FsLT5hY2NlcHRBdXRoZW50aWNhdGlvbjsK
IH0KIAogUmV0YWluUHRyPFNlY0tleVJlZj4gTW9ja0xvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3Jl
ZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0
IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29u
c3QKQEAgLTExMiwxNSArMTA1LDI0IEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0
ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKiwgTlNEYXRhICosIEF0dGVzdGF0CiAgICAgfSk7
CiB9CiAKLU5TRGljdGlvbmFyeSAqTW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3JlZGVudGlh
bChjb25zdCBOU0FycmF5ICpjcmVkZW50aWFscykgY29uc3QKK3ZvaWQgTW9ja0xvY2FsQ29ubmVj
dGlvbjo6ZmlsdGVyUmVzcG9uc2VzKEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMpIGNvbnN0CiB7Ci0gICAgYXV0byBwcmVmZXJy
ZWRVc2VyaGFuZGxlID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNv
ZGVkU3RyaW5nOm1fY29uZmlndXJhdGlvbi5sb2NhbC0+cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2
NCBvcHRpb25zOjBdKTsKLSAgICBmb3IgKE5TRGljdGlvbmFyeSAqY3JlZGVudGlhbCA6IGNyZWRl
bnRpYWxzKSB7Ci0gICAgICAgIGlmIChbY3JlZGVudGlhbFsoaWQpa1NlY0F0dHJBcHBsaWNhdGlv
blRhZ10gaXNFcXVhbFRvRGF0YTpwcmVmZXJyZWRVc2VyaGFuZGxlLmdldCgpXSkKLSAgICAgICAg
ICAgIHJldHVybiBjcmVkZW50aWFsOworICAgIGNvbnN0IGF1dG8mIHByZWZlcnJlZFVzZXJoYW5k
bGVCYXNlNjQgPSBtX2NvbmZpZ3VyYXRpb24ubG9jYWwtPnByZWZlcnJlZFVzZXJoYW5kbGVCYXNl
NjQ7CisgICAgaWYgKHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGl0ciA9IHJlc3BvbnNlcy5iZWdpbigpOworICAgIGZvciAo
OyBpdHIgIT0gcmVzcG9uc2VzLmVuZCgpOyArK2l0cikgeworICAgICAgICBhdXRvKiB1c2VySGFu
ZGxlID0gaXRyLT5nZXQoKS51c2VySGFuZGxlKCk7CisgICAgICAgIEFTU0VSVCh1c2VySGFuZGxl
KTsKKyAgICAgICAgYXV0byB1c2VyaGFuZGxlQmFzZTY0ID0gYmFzZTY0RW5jb2RlKHVzZXJIYW5k
bGUtPmRhdGEoKSwgdXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgaWYgKHVzZXJo
YW5kbGVCYXNlNjQgPT0gcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCkKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbmlsOwor
ICAgIGF1dG8gcmVzcG9uc2UgPSByZXNwb25zZXMudGFrZShpdHIpOworICAgIEFTU0VSVChyZXNw
b25zZSk7CisgICAgcmVzcG9uc2VzLmNsZWFyKCk7CisgICAgcmVzcG9uc2VzLmFkZChXVEZNb3Zl
KCpyZXNwb25zZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9u
RmxhZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0aW9uRmxhZ3MuaAppbmRleCA1NDg4YTIxMTM5MjkyNmMwYTM2NmZmYTg3Zjc2NTkw
OWQ5MWU1Yjg4Li45NzUxODNkZmQ1Nzc1MmQxMjNmNjUzMzdiNzZiNzk1NTI0NjYxMWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdGlvbkZsYWdzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRpb25GbGFncy5oCkBAIC00NSw3ICs0NSwxMCBAQCBlbnVt
IGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIDogdWludDhfdCB7CiAgICAgTm9DcmVkZW50
aWFsc0ZvdW5kLAogICAgIFBpbkJsb2NrZWQsCiAgICAgUGluQXV0aEJsb2NrZWQsCi0gICAgUGlu
SW52YWxpZAorICAgIFBpbkludmFsaWQsCisgICAgTEFFcnJvciwKKyAgICBMQUR1cGxpY2F0ZUNy
ZWRlbnRpYWwsCisgICAgTEFOb0NyZWRlbnRpYWwsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDJjY2ZiNjVhODRhMjdjZmJlNzY1YmY3NWI5MTZjNjUzMTIzZjYzMjQuLjQ1ZWNjYzU2Nzcx
MGQ3MWJkNjQ3YzE3YzA3MDYwZmM2YzRhYmE0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Niw2ICsxMDk2LDcgQEAKIAkJNTcw
REFBQzYyMzAzN0Y3RjAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERBQUM0MjMwMzdG
N0UwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi87IH07CiAJCTU3MERB
QUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyog
Q3RhcE5mY0RyaXZlci5oICovOyB9OwogCQk1NzJGRDQ0MzIyMjY1Q0UyMDBBMUVDQzMgLyogV2Vi
Vmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0Rp
ZE1vdmVUb1dpbmRvd09ic2VydmVyLmggKi87IH07CisJCTU3NDIxNzkyMjQwMEUyODYwMDJCMzAz
RCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyogTG9jYWxBdXRo
ZW50aWNhdGlvblNQSS5oICovOyB9OwogCQk1NzQ3MjhEMTIzNDU2RTk4MDAxNzAwQUYgLyogX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc0NzI4Q0YyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1NzQ3MjhENDIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzQ3MjhEMzIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bEludGVybmFsLmggKi87IH07CiAJCTU3NTk3RUI5MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlk
RHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oICovOyB9OwpAQCAtMzgx
MSw2ICszODEyLDcgQEAKIAkJNTcwREFBQzgyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ3RhcE5mY0RyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzBEQUFDOTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDdGFwTmZjRHJpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTcyRkQ0NDEyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZpZXdEaWRNb3ZlVG9X
aW5kb3dPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWV3RGlkTW92ZVRvV2luZG93T2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc0MjE3OTEyNDAwRTA5ODAw
MkIzMDNEIC8qIExvY2FsQXV0aGVudGljYXRpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxB
dXRoZW50aWNhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQ3MjhD
RjIzNDU2RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3NDcyOEQwMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0NzI4RDMyMzQ1NzBBRTAwMTcw
MEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTY4MzksNiArNjg0MSw3IEBACiAJCQkJMUE1NzA1MTAxQkU0MTBFNTAwODc0
QUYxIC8qIEJsb2NrU1BJLmggKi8sCiAJCQkJMzdDMjFDQUQxRTk5NEMwQzAwMjlENUY5IC8qIENv
cmVQcmVkaWN0aW9uU1BJLmggKi8sCiAJCQkJMkRBQURBOEUyMjk4QzIxMDAwRTM2QjBDIC8qIERl
dmljZU1hbmFnZW1lbnRTUEkuaCAqLywKKwkJCQk1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyog
TG9jYWxBdXRoZW50aWNhdGlvblNQSS5oICovLAogCQkJCTU3QjgyNjQwMjMwNEVCM0UwMEI3MkVC
MCAvKiBOZWFyRmllbGRTUEkuaCAqLywKIAkJCQkzNzU0RDU0NDFCM0EyOUZEMDAzQTRDN0YgLyog
TlNJbnZvY2F0aW9uU1BJLmggKi8sCiAJCQkJMzdCNDdFMkMxRDY0REI3NjAwNUY0RUZGIC8qIG9i
amNTUEkuaCAqLywKQEAgLTEwMzYyLDYgKzEwMzY1LDcgQEAKIAkJCQk0MTMwNzVCMjFERTg1RjU4
MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQxMDg3NjExRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzQyMTc5MjI0MDBFMjg2MDAyQjMwM0QgLyog
TG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQUMyMTRD
NjAyNzAwMTZCODQ3IC8qIExvY2FsQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdEQ0VEQUQyMTRDNjAyQzAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdEQ0VEQUUyMTRDNjAzMzAwMTZCODQ3IC8qIExvY2FsU2VydmljZS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggODNlZWQwYjgwNDdmZjQ2MDUzOWMwN2RjYmRkMDM2NWYwNjExNWYyNC4uOWJmOWM2NjIx
MGE4OTE2Njg0NGY3OGMxZmVkZDhkNTczZWNmODMyYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTAyLTIxICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJ
bXBsZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBCZXNpZGVzIGFkZGluZyBBUEkgdGVzdHMsIHRoaXMgcGF0Y2ggYWxzbyB0
ZWFjaGVzIFRlc3RXZWJLaXRBUEkgdG8gdXNlIHJlc3RyaWN0ZWQgZW50aXRsZW1lbnRzLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09T
LmVudGl0bGVtZW50czoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rl
c3RXZWJLaXRBUEkueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAo
LVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnVwZGF0ZVdlYkF1dGhl
bnRpY2F0aW9uUGFuZWw6XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVs
RGVsZWdhdGUgcGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFuZWw6
dmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sOiBDb3Bp
ZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxp
Y2F0ZS1jcmVkZW50aWFsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJv
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbDogQWRkZWQuCisKIDIw
MjAtMDItMjEgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQXBwLWJvdW5kIGRvbWFpbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgTmV0d29yayBTZXNz
aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmln
dXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHMKaW5kZXggZWEwYzFmN2M0
NzRhMjVjNzEwYzM4NWRkNjhiYzk0ZTgyMDkwYTcxMC4uYTlmOWNkZjA0YzJmYmJkMDJlM2EyZWVm
MjI2MjQ3YWU2ZWI5NjIzOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cworKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1lbnRz
CkBAIC0yLDYgKzIsMTAgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQg
UExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEu
MC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KKwk8a2V5PmtleWNoYWluLWFj
Y2Vzcy1ncm91cHM8L2tleT4KKwk8YXJyYXk+CisJCTxzdHJpbmc+Y29tLmFwcGxlLlRlc3RXZWJL
aXRBUEk8L3N0cmluZz4KKwk8L2FycmF5PgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBv
cmFyeS1leGNlcHRpb24uc2JwbDwva2V5PgogCTxhcnJheT4KIAkJPHN0cmluZz4oYWxsb3cgbWFj
aC1pc3N1ZS1leHRlbnNpb24gKHJlcXVpcmUtYWxsIChleHRlbnNpb24tY2xhc3MgJnF1b3Q7Y29t
LmFwcGxlLndlYmtpdC5leHRlbnNpb24ubWFjaCZxdW90OykpKTwvc3RyaW5nPgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29u
ZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhj
Y29uZmlnCmluZGV4IDMwYThjYWYwYzI0NzBkNjc2YjZkY2UzNjIxZjA5YjA0YWM3OTBkMzEuLmNh
OGUxNzE1YWNlMWM2M2E2MGQ4YjQ1YzFjMWZiNTcxODBkM2VmZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25m
aWcKQEAgLTY5LDMgKzY5LDEwIEBAIENPREVfU0lHTl9FTlRJVExFTUVOVFNbc2RrPWlwaG9uZSpd
ID0gQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lCiBDT0RFX1NJR05f
RU5USVRMRU1FTlRTW3Nkaz1tYWNvc3gqXSA9IENvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkt
bWFjT1MuZW50aXRsZW1lbnRzOwogCiBTVFJJUF9TVFlMRSA9IGRlYnVnZ2luZzsKKworQ09ERV9T
SUdOX0lERU5USVRZW3Nkaz1tYWNvc3gqXSA9ICQoQ09ERV9TSUdOX0lERU5USVRZXyQoQ09ORklH
VVJBVElPTikpOworQ09ERV9TSUdOX0lERU5USVRZX0RlYnVnID0gJChDT0RFX1NJR05fSURFTlRJ
VFlfJChVU0VfSU5URVJOQUxfU0RLKSk7CitDT0RFX1NJR05fSURFTlRJVFlfUmVsZWFzZSA9ICQo
Q09ERV9TSUdOX0lERU5USVRZXyQoVVNFX0lOVEVSTkFMX1NESykpOworQ09ERV9TSUdOX0lERU5U
SVRZX1lFUyA9ICQoV0tfRU5HSU5FRVJJTkdfQ09ERV9TSUdOX0lERU5USVRZKTsKK0NPREVfU0lH
Tl9JREVOVElUWV9Qcm9kdWN0aW9uID0gJChDT0RFX1NJR05fSURFTlRJVFlfUHJvZHVjdGlvbl8k
KFVTRV9JTlRFUk5BTF9TREspKTsKK0NPREVfU0lHTl9JREVOVElUWV9Qcm9kdWN0aW9uX1lFUyA9
IC07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU0MTU3ZjY4OGQ5ZDBiYjhmZTcxY2RhYjg5
YmM4N2IwZGNmMTNhNDUuLmNmMjUyM2UyYzMwNWNiMjFmYTE4ZmJhYmUyMTI4MjNmNzVlYjM1Y2Ig
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDksNiArMzQ5LDEwIEBACiAJCTU3MzI1NUE1
MjIxMzlCQzcwMDM5NkFFOCAvKiBoZWxsb3dvcmxkLndlYmFyY2hpdmUgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMjU1QTQyMjEzOUI5MDAw
Mzk2QUU4IC8qIGhlbGxvd29ybGQud2ViYXJjaGl2ZSAqLzsgfTsKIAkJNTczMjU1QTYyMjEzOUJD
NzAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzI1NUEyMjIxMzlCOEYwMDM5NkFF
OCAvKiBsb2FkLXdlYi1hcmNoaXZlLTEuaHRtbCAqLzsgfTsKIAkJNTczMjU1QTcyMjEzOUJDNzAw
Mzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzI1NUEzMjIxMzlCOTAwMDM5NkFFOCAv
KiBsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCAqLzsgfTsKKwkJNTc0MjE3ODgyNDAwQUMyNTAwMkIz
MDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQy
MTc4NzI0MDBBQkZEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC1sYS1lcnJvci5odG1sICovOyB9OworCQk1NzQyMTc4QTI0MDBBRUQ4MDAyQjMwM0QgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3NDIxNzg5MjQwMEFFRDAwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgKi87IH07CisJCTU3NDIxNzhDMjQw
MENENDcwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
NDIxNzhCMjQwMENEMkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1sYS5odG1sICovOyB9OworCQk1NzQyMTc4RTI0MDBEMkRGMDAyQjMwM0QgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAv
KiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi87IH07CiAJCTU3
NEY1NUQyMjA0RDQ3RjAwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzRGNTVEMDIwNEQ0NzFDMDAy
OTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovOyB9OwogCQk1NzU4NTk3RjIzQTI1MjdBMDBD
NzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1ODU5N0UyM0EyNTI3QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNw
cCAqLzsgfTsKIAkJNTc1ODU5ODQyM0MzQzNBNDAwQzc0NTcyIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQtcmV0cmllcy1lcnJvci5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTgzMjND
M0MzNjIwMEM3NDU3MiAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1w
aW4tZ2V0LXJldHJpZXMtZXJyb3IuaHRtbCAqLzsgfTsKQEAgLTE1MTcsNiArMTUyMSw3IEBACiAJ
CQkJNTc4REE0NEUyM0VDRDI4QjAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTU3MEQyNkZDMjNDM0Y4NzAwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQtcGluLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc2
NjNERUMyMzRGMUY5MzAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9u
LWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTU3NDIxNzhDMjQwMENENDcwMDJC
MzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCTU3OTgzMzkyMjM2OEZBMzcwMDhFNTU0NyAvKiB3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTU3NjYzREVBMjM0RUE2NkQwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGlj
YXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1
Nzc0NTREMjIzNTlCQjAxMDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24tdTJmLW5vLWNyZWRlbnRpYWxzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNTMx
LDYgKzE1MzYsOSBAQAogCQkJCTU3OERBNDRBMjNFQ0QxODYwMDI0NjAxMCAvKiB3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3MEQyNkY2MjNDM0QzMzAwMEQ1Q0Y2NyAvKiB3
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQk1Nzk4MzM3RTIzNjAxOUE0MDA4RTU1NDcgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJ
CQk1NzQyMTc4QTI0MDBBRUQ4MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAorCQkJCTU3NDIxNzg4MjQwMEFDMjUwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTc0
MjE3OEUyNDAwRDJERjAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4NjFDODkyNTlEMDBB
NTUyOUYgLyogd2ViZm9udC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTUxNzE0RUI0
MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTUxNzE0RUI1MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9j
ZXNzS2lsbElEQkNsZWFudXAtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTk2MSw2
ICsxOTY5LDExIEBACiAJCTU3MzI1NUEzMjIxMzlCOTAwMDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNo
aXZlLTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzI1NUE0MjIxMzlCOTAwMDM5NkFFOCAvKiBoZWxsb3dv
cmxkLndlYmFyY2hpdmUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlLmJwbGlzdDsgcGF0aCA9IGhlbGxvd29ybGQud2ViYXJjaGl2ZTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczNUYwMjUxRjNBNEVBNjAwMEVFODAxIC8qIFRlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gIlRlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLWVycm9yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS1lcnJvci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTc0MjE3ODkyNDAwQUVEMDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTc0MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWxhLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzQyMTc4RjI0MDBENTREMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NEY1NUQwMjA0RDQ3MUMwMDI5
NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5LmZy
YW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJNTc1ODU5N0QyM0EyNTI3QTAwQzc0NTcy
IC8qIEN0YXBQaW5UZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN0YXBQaW5UZXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTg1OTdFMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGlu
VGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdGFwUGluVGVzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zNTc5LDYgKzM1OTIsNyBAQAogCQkJCTU3OERBNDREMjNFQ0Qy
NjEwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLWlu
dmFsaWQtZXJyb3ItcmV0cnkuaHRtbCAqLywKIAkJCQk1NzBEMjZGQjIzQzNGODY1MDBENUNGNjcg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi5odG1sICovLAogCQkJ
CTU3NjYzREVCMjM0RjFGODAwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1oaWQuaHRtbCAqLywKKwkJCQk1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLywKIAkJCQk1Nzk4MzM3QjIzNUVC
NjVDMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRp
cGxlLXRhZ3MuaHRtbCAqLywKIAkJCQk1NzY2M0RFOTIzNEVBNjBCMDBFODVFMDkgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwgKi8sCiAJCQkJNTc3NDU0RDEyMzU5
QkFENTAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLXUyZi1uby1j
cmVkZW50aWFscy5odG1sICovLApAQCAtMzU5Myw2ICszNjA3LDEwIEBACiAJCQkJNTc4REE0NDky
M0VDRDE1NTAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlk
LXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0bWwgKi8sCiAJCQkJNTcwRDI2RjUyM0MzRDMyNzAw
RDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi5odG1s
ICovLAogCQkJCTU3OTgzMzdEMjM2MDE5NkQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWhpZC5odG1sICovLAorCQkJCTU3NDIxNzg5MjQwMEFFRDAwMDJCMzAz
RCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVk
ZW50aWFsLmh0bWwgKi8sCisJCQkJNTc0MjE3ODcyNDAwQUJGRDAwMkIzMDNEIC8qIHdlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCAqLywKKwkJCQk1NzQyMTc4
RDI0MDBEMjZDMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS5odG1sICovLAorCQkJCTU3NDIxNzhGMjQwMEQ1NEQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcy
M0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjMx
Q0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgKi8sCiAJ
CQkJNTEyMEM4M0IxRTY3NEUzNTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRo
cy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDA4MzNj
NDk4OWFiYzNhYTM0YTNjYTY4ODMxZDA0YWY0MDYyZjM2ZTMuLjA2NmU2ODRhNWRlMDU2NzNmMGZi
Zjc5OWY1N2IyZWQzNTYxYTNhNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgor
I2ltcG9ydCA8TG9jYWxBdXRoZW50aWNhdGlvbi9Mb2NhbEF1dGhlbnRpY2F0aW9uLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJ
RGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVy
ZS5oPgpAQCAtMzksNiArNDAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JhbmRv
bU51bWJlci5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogI2ltcG9y
dCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIHN0YXRpYyBib29sIHdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSBmYWxzZTsKQEAgLTQ5LDkgKzUxLDE4IEBAIHN0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVOb0NyZWRlbnRpYWxzRm91bmQgPSBm
YWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5CbG9ja2Vk
ID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlUElOQXV0
aEJsb2NrZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRh
dGVQSU5JbnZhbGlkID0gZmFsc2U7CitzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlTEFFcnJvciA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5l
bFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0
aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFsID0gZmFsc2U7CiBzdGF0aWMgYm9v
bCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKK3N0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyID0gZmFsc2U7CiBzdGF0aWMg
U3RyaW5nIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxQaW47CiBzdGF0aWMgQk9PTCB3ZWJBdXRoZW50
aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUgPSBOTzsKK3N0YXRpYyBTdHJpbmcgdGVzdEVTMjU2
UHJpdmF0ZUtleUJhc2U2NCA9CisgICAgIkJEai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBn
RnBzakYvUW0xNzQ5VkJKUGdxVUl3ZmhXSEo5MW5iN1UiCisgICAgIlBINzZjMCtXRk96WktzbFB5
eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVuZm5CZ0VWRmg1emV2Ky94cEhRSXZ1cTYiCisgICAgIlJR
PT0iOworc3RhdGljIFN0cmluZyB0ZXN0VXNlcmhhbmRsZUJhc2U2NCA9ICJBQUVDQXdRRkJnY0lD
UT09IjsKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDog
TlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4KIEBlbmQKQEAgLTg0
LDYgKzk1LDE4IEBAIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilw
YW5lbCB1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOihfCiAgICAgICAgIHdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICBpZiAodXBkYXRlID09IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVy
cm9yKSB7CisgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodXBkYXRlID09IF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWwpIHsKKyAgICAgICAgd2Vi
QXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCA9IHRydWU7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHVwZGF0ZSA9PSBfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWwpIHsKKyAgICAgICAgd2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFsID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIH0KIAogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVs
IGRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGlj
YXRpb25SZXN1bHQpcmVzdWx0CkBAIC0xMTEsNiArMTM0LDExIEBAIC0gKHZvaWQpcGFuZWw6KF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1Jl
dHJpZXM6CiAKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5l
bCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBpZiAocmVzcG9uc2VzLmNvdW50ID09IDEpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IEVYUEVDVF9FUShyZXNwb25zZXMuY291bnQsIDJ1bCk7CiAgICAgZm9yIChfV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpyZXNwb25zZSBpbiByZXNwb25zZXMpIHsKICAgICAg
ICAgRVhQRUNUX1RSVUUoW3Jlc3BvbnNlLm5hbWUgaXNFcXVhbDpAImpvaG5wc21pdGhAZXhhbXBs
ZS5jb20iXSB8fCBbcmVzcG9uc2UubmFtZSBpc0VxdWFsOkAiIl0pOwpAQCAtMTIzLDYgKzE1MSwx
MyBAQCAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2Vs
ZWN0QXNzZXJ0aW9uUmVzcG9uc2U6KE5TQXJyYQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3Bv
bnNlc1tpbmRleF0pOwogfQogCistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsICopcGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9s
UmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAq
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlV
c2VyID0gdHJ1ZTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFtbTEFDb250ZXh0IGFsbG9j
XSBpbml0XSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dC5nZXQoKSk7Cit9CisKIEBl
bmQKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbEZha2VEZWxlZ2F0ZSA6
IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+CkBAIC0yMzEsNiAr
MjY2LDIyIEBAIHN0YXRpYyBfV0tFeHBlcmltZW50YWxGZWF0dXJlICp3ZWJBdXRoZW50aWNhdGlv
bkV4cGVyaW1lbnRhbEZlYXR1cmUoKQogICAgIHJldHVybiB0aGVGZWF0dXJlLmdldCgpOwogfQog
CitzdGF0aWMgX1dLRXhwZXJpbWVudGFsRmVhdHVyZSAqd2ViQXV0aGVudGljYXRpb25Mb2NhbEF1
dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJlKCkKK3sKKyAgICBzdGF0aWMgUmV0YWluUHRy
PF9XS0V4cGVyaW1lbnRhbEZlYXR1cmU+IHRoZUZlYXR1cmU7CisgICAgaWYgKHRoZUZlYXR1cmUp
CisgICAgICAgIHJldHVybiB0aGVGZWF0dXJlLmdldCgpOworCisgICAgTlNBcnJheSAqZmVhdHVy
ZXMgPSBbV0tQcmVmZXJlbmNlcyBfZXhwZXJpbWVudGFsRmVhdHVyZXNdOworICAgIGZvciAoX1dL
RXhwZXJpbWVudGFsRmVhdHVyZSAqZmVhdHVyZSBpbiBmZWF0dXJlcykgeworICAgICAgICBpZiAo
W2ZlYXR1cmUua2V5IGlzRXF1YWw6QCJXZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRv
ckVuYWJsZWQiXSkgeworICAgICAgICAgICAgdGhlRmVhdHVyZSA9IGZlYXR1cmU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdGhlRmVhdHVyZS5nZXQo
KTsKK30KKwogc3RhdGljIHZvaWQgcmVzZXQoKQogewogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSYW4gPSBmYWxzZTsKQEAgLTI0MSw5ICsyOTIsMTMgQEAgc3RhdGljIHZvaWQgcmVzZXQoKQog
ICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5CbG9ja2VkID0gZmFsc2U7CiAgICAg
d2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkF1dGhCbG9ja2VkID0gZmFsc2U7CiAgICAg
d2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkludmFsaWQgPSBmYWxzZTsKKyAgICB3ZWJB
dXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvciA9IGZhbHNlOworICAgIHdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWwgPSBmYWxzZTsKKyAgICB3ZWJB
dXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWwgPSBmYWxzZTsKICAgICB3ZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKICAgICB3ZWJBdXRo
ZW50aWNhdGlvblBhbmVsUGluID0gZW1wdHlTdHJpbmcoKTsKICAgICB3ZWJBdXRoZW50aWNhdGlv
blBhbmVsTnVsbFVzZXJIYW5kbGUgPSBOTzsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVy
aWZ5VXNlciA9IGZhbHNlOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja1BhbmVsKF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwgKnBhbmVsLCBOU1N0cmluZyAqcmVseWluZ1BhcnR5SUQsIE5TQXJyYXkg
KnRyYW5zcG9ydHMsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSB0eXBlKQpAQCAtMjc3LDYgKzMz
Miw1NiBAQCBzdGF0aWMgdm9pZCBjaGVja0ZyYW1lSW5mbyhXS0ZyYW1lSW5mbyAqZnJhbWUsIGJv
b2wgaXNNYWluRnJhbWUsIE5TU3RyaW5nICp1cmwsCiAgICAgRVhQRUNUX0VRKGZyYW1lLndlYlZp
ZXcsIHdlYlZpZXcpOwogfQogCitib29sIGFkZEtleVRvS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBw
cml2YXRlS2V5QmFzZTY0LCBjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFN0cmluZyYgdXNlckhh
bmRsZUJhc2U2NCkKK3sKKyAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAeworICAgICAgICAo
aWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpa1NlY0F0dHJLZXlUeXBlRUNTRUNQcmltZVJhbmRvbSwK
KyAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0
ZSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5U2l6ZUluQml0czogQDI1NiwKKyAgICB9OworICAg
IENGRXJyb3JSZWYgZXJyb3JSZWYgPSBudWxscHRyOworICAgIGF1dG8ga2V5ID0gYWRvcHRDRihT
ZWNLZXlDcmVhdGVXaXRoRGF0YSgKKyAgICAgICAgKF9fYnJpZGdlIENGRGF0YVJlZilhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6cHJpdmF0ZUtleUJh
c2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNd
KS5nZXQoKSwKKyAgICAgICAgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilvcHRpb25zLAorICAg
ICAgICAmZXJyb3JSZWYKKyAgICApKTsKKyAgICBpZiAoZXJyb3JSZWYpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIE5TRGljdGlvbmFyeSogYWRkUXVlcnkgPSBAeworICAgICAgICAoaWQp
a1NlY1ZhbHVlUmVmOiAoaWQpa2V5LmdldCgpLAorICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQp
a1NlY0NsYXNzS2V5LAorICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogcnBJZCwKKyAgICAgICAg
KGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRX
aXRoQmFzZTY0RW5jb2RlZFN0cmluZzp1c2VySGFuZGxlQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFz
ZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAoaWQp
a1NlY0F0dHJBY2Nlc3NpYmxlOiAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlQWZ0ZXJGaXJzdFVubG9j
aywKKyNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJTikKKyAgICAgICAgKGlkKWtTZWNV
c2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCisjZWxzZQorICAgICAgICAoaWQpa1NlY0F0
dHJOb0xlZ2FjeTogQFlFUworI2VuZGlmCisgICAgfTsKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBT
ZWNJdGVtQWRkKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYWRkUXVlcnksIE5VTEwpOworICAg
IGlmIChzdGF0dXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIGNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcmIHJwSWQpCit7CisgICAgTlNE
aWN0aW9uYXJ5KiBkZWxldGVRdWVyeSA9IEB7CisgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClr
U2VjQ2xhc3NLZXksCisgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBycElkLAorICAgICAgICAo
aWQpa1NlY0F0dHJBY2Nlc3NpYmxlOiAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlQWZ0ZXJGaXJzdFVu
bG9jaywKKyNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJTikKKyAgICAgICAgKGlkKWtT
ZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCisjZWxzZQorICAgICAgICAoaWQpa1Nl
Y0F0dHJOb0xlZ2FjeTogQFlFUworI2VuZGlmCisgICAgfTsKKyAgICBTZWNJdGVtRGVsZXRlKChf
X2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkpOworfQorCiB9IC8vIG5hbWVzYXBj
ZTsKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBOb1BhbmVsVGltZW91dCkKQEAgLTEw
NzYsNiArMTE4MSwxMjQgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBNdWx0aXBsZUFj
Y291bnRzKQogICAgIEVYUEVDVF9FUShbW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAInVzZXJIYW5kbGUiXSBpc0VxdWFsVG9TdHJpbmc6QCI8bnVsbD4iXSwgd2ViQXV0aGVu
dGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlKTsKIH0KIAorLy8gRm9yIG1hY09TLCBvbmx5IGlu
dGVybmFsIGJ1aWxkcyBjYW4gc2lnbiBrZXljaGFpbiBlbnRpdGxlbW5ldHMKKy8vIHdoaWNoIGFy
ZSByZXF1aXJlZCB0byBydW4gbG9jYWwgYXV0aGVudGljYXRvciB0ZXN0cy4KKyNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKSB8fCBQTEFURk9STShJT1MpCisKK1RFU1QoV2ViQXV0aGVudGljYXRp
b25QYW5lbCwgTEFFcnJvcikKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4g
dGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0
aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8g
KmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0
aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFs
cyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVu
dGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVu
dGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlTEFFcnJvcik7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFEdXBs
aWNhdGVDcmVkZW50aWFsKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0
ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90
ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVn
SW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25m
aWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVh
dHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisgICAgW1tjb25m
aWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVh
dHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4cGVyaW1lbnRhbEZlYXR1
cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBBU1NFUlRfVFJVRShhZGRLZXlUb0tleWNoYWluKHRlc3RF
UzI1NlByaXZhdGVLZXlCYXNlNjQsICIiLCB0ZXN0VXNlcmhhbmRsZUJhc2U2NCkpOworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5n
ZXQoKV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVw
bGljYXRlQ3JlZGVudGlhbCk7CisgICAgY2xlYW5VcEtleWNoYWluKCIiKTsKK30KKworVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU5vQ3JlZGVudGlhbCkKK3sKKyAgICByZXNldCgpOwor
ICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYSIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rl
c3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJ
bldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0
dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0
dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVy
ZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5l
bFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVu
dGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFsKTsKK30KKworVEVTVChXZWJBdXRoZW50
aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVkZW50aWFsTnVsbERlbGVnYXRlKQoreworICAgIHJlc2V0
KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nl
c3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAg
W1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVu
dGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisgICAg
W1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVu
dGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4cGVyaW1lbnRh
bEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2RlbGVnYXRlIHNldElzTnVs
bDp0cnVlXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKwor
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVz
dFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJd
OworICAgIGNsZWFuVXBLZXljaGFpbigiIik7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25Q
YW5lbCwgTEFNYWtlQ3JlZGVudGlhbCkKK3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxO
U1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8g
KmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0
aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFs
cyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVu
dGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVu
dGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVs
VmVyaWZ5VXNlcik7CisgICAgY2hlY2tQYW5lbChbZGVsZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRv
cHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRy
YW5zcG9ydFVTQl0pLmdldCgpLCBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50
Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0SW50ZXJuYWxdKS5nZXQoKV0sIF9XS1dlYkF1
dGhlbnRpY2F0aW9uVHlwZUNyZWF0ZSk7CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJT
dWNjZWVkZWQhIl07Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFHZXRBc3Nl
cnRpb24pCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9u
LWdldC1hc3NlcnRpb24tbGEiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNs
YXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JU
ZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxl
ZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRh
bEZlYXR1cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxl
ZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVu
dGljYXRvckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
VGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAg
W3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBBU1NFUlRfVFJV
RShhZGRLZXlUb0tleWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICIiLCB0ZXN0VXNl
cmhhbmRsZUJhc2U2NCkpOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVu
dGljYXRpb25QYW5lbFZlcmlmeVVzZXIpOworICAgIGNoZWNrUGFuZWwoW2RlbGVnYXRlIHBhbmVs
XSwgQCIiLCBAW2Fkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0
aGVudGljYXRpb25UcmFuc3BvcnRVU0JdKS5nZXQoKSwgYWRvcHROUyhbW05TTnVtYmVyIGFsbG9j
XSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsXSkuZ2V0
KCldLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVHZXQpOworICAgIFt3ZWJWaWV3IHdhaXRGb3JN
ZXNzYWdlOkAiU3VjY2VlZGVkISJdOworICAgIGNsZWFuVXBLZXljaGFpbigiIik7Cit9CisKKyNl
bmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSB8fCBQTEFURk9STShJT1MpCisKIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRo
ZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWZhM2M1YmE0NGIwMmZiMTA1MjlkMDE0ZGY1ZGU2NDI4ZDQ5ODBiZgotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2Vi
LWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbApAQCAtMCwwICsxLDIyIEBACis8
aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0
QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1
cmUoKCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcHRpb25z
ID0geworICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVp
bnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgdGltZW91dDogMTAwCisgICAgICAgIH0KKyAgICB9
OworCisgICAgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRp
YWwgPT4geworICAgICAgICAvLyBjb25zb2xlLmxvZygiU3VjY2VlZGVkISIpOworICAgICAgICB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiU3Vj
Y2VlZGVkISIpOworICAgIH0sIGVycm9yID0+IHsKKyAgICAgICAgLy8gY29uc29sZS5sb2coZXJy
b3IubWVzc2FnZSk7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RI
YW5kbGVyLnBvc3RNZXNzYWdlKGVycm9yLm1lc3NhZ2UpOworICAgIH0pOworPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9u
LW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFhYTU5NjUwNmE1MzRiMjVmMGJjNjU4ODk2MWJlM2RkZWI0NGI0MWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNh
dGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbApAQCAtMCww
ICsxLDQzIEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAg
Y29uc3QgdGVzdENyZWRlbnRpYWxJZEhleCA9ICI0OEM0OTcxRTc4MDVFRTExMEVCMDQ5NDBFRjcw
Qjc0NThGQkM2RDFFIjsKKyAgICBmdW5jdGlvbiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoaGV4U3Ry
aW5nKQorICAgIHsKKyAgICAgICAgaWYgKGhleFN0cmluZy5sZW5ndGggJSAyICE9IDApCisgICAg
ICAgICAgICB0aHJvdyAiSW52YWxpZCBoZXhTdHJpbmciOworICAgICAgICB2YXIgYXJyYXlCdWZm
ZXIgPSBuZXcgVWludDhBcnJheShoZXhTdHJpbmcubGVuZ3RoIC8gMik7CisKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBoZXhTdHJpbmcubGVuZ3RoOyBpICs9IDIpIHsKKyAgICAgICAgICAg
IHZhciBieXRlVmFsdWUgPSBwYXJzZUludChoZXhTdHJpbmcuc3Vic3RyKGksIDIpLCAxNik7Cisg
ICAgICAgICAgICBpZiAoYnl0ZVZhbHVlID09IE5hTikKKyAgICAgICAgICAgICAgICB0aHJvdyAi
SW52YWxpZCBoZXhTdHJpbmciOworICAgICAgICAgICAgYXJyYXlCdWZmZXJbaS8yXSA9IGJ5dGVW
YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICB9CisK
KyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0
aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIGludGVy
bmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsKKyAgICB9CisK
KyAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAg
IHJwOiB7CisgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxl
c2VlZCIsCisgICAgICAgICAgICAgICAgaWQ6IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAgICBwdWJLZXlD
cmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAg
ICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGhleFN0cmlu
Z1RvVWludDhBcnJheSh0ZXN0Q3JlZGVudGlhbElkSGV4KSB9XSwKKyAgICAgICAgICAgIHRpbWVv
dXQ6IDEwMCwKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwt
bGEtZXJyb3IuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVmMTYxMjFiYTRjYTJkYjUzM2RmZTVkMmJmMDMzMDRjZGE1MjQ2MmYKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNh
dGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbApAQCAtMCwwICsxLDI1IEBACis8aW5w
dXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0
dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJl
KCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisgICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9
IHsKKyAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICBycDogeworICAgICAgICAgICAg
ICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHVzZXI6
IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAg
ICAgIGlkOiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6
ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3
IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTog
InB1YmxpYy1rZXkiLCBhbGc6IC0zNSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtMjU3
IH1dLCAvLyBFUzM4NCwgUlMyNTYKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMCwKKyAgICAgICAg
fQorICAgIH07CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpOwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyN2UyNWNhMmRhMmJlZDRkODlhODBiMDI3YjZh
MDk1NjBhYjJjNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbApA
QCAtMCwwICsxLDY2IEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+
CisgICAgY29uc3QgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9CisgICAgICAgICJCRGovenhT
a3pLZ2FCdVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pGL1FtMTc0OVZCSlBncVVJd2ZoV0hKOTFuYjdV
IiArCisgICAgICAgICJQSDc2YzArV0ZPelpLc2xQeXlGc2U0Z29HSVcyUjdrOVZITFBFWmw1bmZu
QmdFVkZoNXpldisveHBIUUl2dXE2IiArCisgICAgICAgICJSUT09IjsKKyAgICBjb25zdCB0ZXN0
QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCA9CisgICAgICAgICJNSUlCNmpDQ0FaQ2dBd0lC
QWdJR0FXSEF4Y2p2TUFvR0NDcUdTTTQ5QkFNQ01GTXhKekFsQmdOVkJBTU1Ia0poIiArCisgICAg
ICAgICJjMmxqSUVGMGRHVnpkR0YwYVc5dUlGVnpaWElnVTNWaUlFTkJNVEVUTUJFR0ExVUVDZ3dL
UVhCd2JHVWdTVzVqIiArCisgICAgICAgICJMakVUTUJFR0ExVUVDQXdLUTJGc2FXWnZjbTVwWVRB
ZUZ3MHhPREF5TWpNd016TTNNakphRncweE9EQXlNalF3IiArCisgICAgICAgICJNelEzTWpKYU1H
b3hJakFnQmdOVkJBTU1HVEF3TURBNE1ERXdMVEF3TUVFME9VRXlNekJCTURJeE0wRXhHakFZIiAr
CisgICAgICAgICJCZ05WQkFzTUVVSkJRU0JEWlhKMGFXWnBZMkYwYVc5dU1STXdFUVlEVlFRS0RB
cEJjSEJzWlNCSmJtTXVNUk13IiArCisgICAgICAgICJFUVlEVlFRSURBcERZV3hwWm05eWJtbGhN
Rmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUV2Q2plIiArCisgICAgICAgICJQenI2
U2c3NlhNb0h1R2FiUGFHNnpqcExGTDhaZDgvNzRIaDVQY0wyWnErbytmN0VOWFgrN25FWFhZdDBT
OFV4IiArCisgICAgICAgICI1VElSdzRoZ2JmeFhRYldMRXFNNU1EY3dEQVlEVlIwVEFRSC9CQUl3
QURBT0JnTlZIUThCQWY4RUJBTUNCUEF3IiArCisgICAgICAgICJGd1lKS29aSWh2ZGpaQWdDQkFv
d0NLRUdCQVIwWlhOME1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lBbEs4QThJIiArCisgICAgICAg
ICJrNDNUYnZLdVlHSFpzMURUZ3BUd21LVEJ2SVV3NWJ3Z1p1WW5BaUVBdHVKakRMS2JHTkpBSkZN
aTVkZUVCcW5vIiArCisgICAgICAgICJwQlRDcWJmYkRKY2NmeVFwam5ZPSI7CisgICAgY29uc3Qg
dGVzdEF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQgPQorICAgICAgICAiTUlJ
Q0l6Q0NBYWlnQXdJQkFnSUllTmpoRzl0bkRHZ3dDZ1lJS29aSXpqMEVBd0l3VXpFbk1DVUdBMVVF
QXd3ZSIgKworICAgICAgICAiUW1GemFXTWdRWFIwWlhOMFlYUnBiMjRnVlhObGNpQlNiMjkwSUVO
Qk1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSiIgKworICAgICAgICAiYm1NdU1STXdFUVlEVlFRSURB
cERZV3hwWm05eWJtbGhNQjRYRFRFM01EUXlNREF3TkRJd01Gb1hEVE15TURNeSIgKworICAgICAg
ICAiTWpBd01EQXdNRm93VXpFbk1DVUdBMVVFQXd3ZVFtRnphV01nUVhSMFpYTjBZWFJwYjI0Z1ZY
TmxjaUJUZFdJZyIgKworICAgICAgICAiUTBFeE1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSmJtTXVN
Uk13RVFZRFZRUUlEQXBEWVd4cFptOXlibWxoTUZrdyIgKworICAgICAgICAiRXdZSEtvWkl6ajBD
QVFZSUtvWkl6ajBEQVFjRFFnQUVvU1ovMXQ5ZUJBRVZwNWE4UHJYYWNtYkdiOHpOQzFYMyIgKwor
ICAgICAgICAiU3RMSTlZTzZZMENMN2JsSG1TR21qR1dUd0Q0UStpMEoyQlkzK2JQSFRHUnlBOWpH
QjNNU2JhTm1NR1F3RWdZRCIgKworICAgICAgICAiVlIwVEFRSC9CQWd3QmdFQi93SUJBREFmQmdO
VkhTTUVHREFXZ0JTRDVhTWhuckIwdy9saGtQMlhUaU1RZHFTaiIgKworICAgICAgICAiOGpBZEJn
TlZIUTRFRmdRVTVtV2YxRFlMVFhVZFE5eG1PSC91cWVOU0Q4MHdEZ1lEVlIwUEFRSC9CQVFEQWdF
RyIgKworICAgICAgICAiTUFvR0NDcUdTTTQ5QkFNQ0Eya0FNR1lDTVFDM00zNjBMTHRKUzYwWjlx
M3ZWakp4TWdNY0ZRMXJvR1RVY0txdiIgKworICAgICAgICAiVys0aEo0Q2VKanlTWFRncTZJRUhu
L3lXYWI0Q01RQ201Tm5LNlNPU0srQXFXdW05bEw4N1czRTZBQTFmMlR2SiIgKworICAgICAgICAi
L2hnb2svMzRqcjkzbmhTODd0T1FOZHhEUzh6eWlxdz0iOworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsKKyAgICAgICAgICAgIGxvY2FsOiB7CisgICAgICAgICAgICAgICAgYWNjZXB0QXV0
aGVudGljYXRpb246IHRydWUsCisgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IHRy
dWUsCisgICAgICAgICAgICAgICAgcHJpdmF0ZUtleUJhc2U2NDogdGVzdEVTMjU2UHJpdmF0ZUtl
eUJhc2U2NCwKKyAgICAgICAgICAgICAgICB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRl
c3RhdGlvbkNlcnRpZmljYXRlQmFzZTY0LAorICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZUNB
Q2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlQmFz
ZTY0IH19KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0
LmZvY3VzKCk7IH0pOworICAgIH0KKworICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgIHB1
YmxpY0tleTogeworICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAibG9j
YWxob3N0IiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAg
ICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICBpZDogbmV3IFVp
bnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2
KSwKKyAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
YWxnOiAtNyB9XSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMCwKKyAgICAgICAgfQorICAgIH07
CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVu
dGlhbCA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKCJTdWNjZWVkZWQhIik7CisgICAgICAg
IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJT
dWNjZWVkZWQhIik7CisgICAgfSwgZXJyb3IgPT4geworICAgICAgICAvLyBjb25zb2xlLmxvZyhl
cnJvci5tZXNzYWdlKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVz
dEhhbmRsZXIucG9zdE1lc3NhZ2UoZXJyb3IubWVzc2FnZSk7CisgICAgfSk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391496</attachid>
            <date>2020-02-23 11:51:18 -0800</date>
            <delta_ts>2020-02-23 12:23:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208087-20200223115117.patch</filename>
            <type>text/plain</type>
            <size>99791</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uMmNlMDBiNjNjNTRkNzc4NTMzYjVkYjY5YzgxYTE1
NWQwOGJmNzgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAyLTIxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmhhbmNlcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgdG8gYWNj
b21tb25kYXRlIHJlc3BvbnNlcworICAgICAgICByZXR1cm5lZCBmcm9tIHRoZSBwbGF0Zm9ybSBh
dXRoZW50aWNhdG9yLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRB
dXRoZW50aWNhdG9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGljYXRv
ckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGlzcGxheU5hbWUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpudW1iZXJPZkNyZWRlbnRp
YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZTo6YWNjZXNzQ29udHJvbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldFNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXREaXNwbGF5TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE51bWJlck9m
Q3JlZGVudGlhbHMpOgorCiAyMDIwLTAyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUgYWZ0
ZXIgcjI1NjgwOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1NjEwMmJjYzg4Y2FiN2IwNjhiNGY0ZTJiNTk5MmYwNzdk
ZDRiZTMwLi40ZTUxMGI0MDJjMzU2MGQwYTdhMzdiNzc1NDhjOWMyMzc4YTdmODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0wMi0yMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSBmb3IgdGhlIHBs
YXRmb3JtIGF1dGhlbnRpY2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODA4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNjkzMDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGVyZSBpcyB0
aGUgbmV3bHkgYWRkZWQgU1BJOgorICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CisgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yLAorICAgICAgICAg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCwK
KyAgICAgICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlh
bCwKKyAgICAgICAgfTsKKworICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tX
ZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydCkgeworICAgICAgICAgICAgLi4uCisgICAgICAgICAg
ICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAorICAgICAgICB9OworCisg
ICAgICAgIEBwcm90b2NvbCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2Jq
ZWN0PgorICAgICAgICBAb3B0aW9uYWwKKyAgICAgICAgLi4uCisgICAgICAgIC0gKHZvaWQpcGFu
ZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2VyV2l0aEFjY2Vz
c0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBA
ZW5kCisKKyAgICAgICAgSWxsdXN0cmF0aW9uczoKKyAgICAgICAgMSkgX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbFVwZGF0ZTogdGhyZWUgZXJyb3IgYXJlIGFkZGVkIHRvIGhlbHAgY2xpZW50cyB0
byBpbmZvcm0gdXNlcnMuCisgICAgICAgIGEpIFdLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBRXJyb3I6IEFuIGludGVybmFsIGVycm9yLCBjbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMg
YW5kIHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0KKyAgICAgICAgYXV0aGVudGljYXRpb24gcHJvY2Vz
cy4gVGhpcyBlcnJvciBjYW4gYmUgcmV0dXJuZWQgYXQgYW55IHRpbWUuCisgICAgICAgIGIpIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw6IEl0IG1l
YW5zIGEgY3JlZGVudGlhbCBpcyBmb3VuZCB0byBtYXRjaCBhbiBlbnRyeSBpbiB0aGUKKyAgICAg
ICAgZXhjbHVkZUxpc3QuIENsaWVudHMgc2hvdWxkIGluZm9ybSB1c2VycyBhbmQgdGVybWluYXRl
IHRoZSBwbGF0Zm9ybSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLiBUaGlzIGVycm9yIHdpbGwgb25s
eSBiZQorICAgICAgICByZXR1cm5lZCBkdXJpbmcgbWFrZUNyZWRlbnRpYWwgYW5kIGJlZm9yZSB2
ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2wgZGVsZWdhdGUuCisgICAgICAgIGMpIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlhbDogSXQgbWVhbnMgbm8gY3JlZGVu
dGlhbHMgYXJlIGZvdW5kLiBDbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMgYW5kCisgICAgICAg
IHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRpb24gcHJvY2Vzcy4gVGhpcyBlcnJv
ciB3aWxsIG9ubHkgYmUgcmV0dXJuZWQgZHVyaW5nIGdldEFzc2VydGlvbiBhbmQgYmVmb3JlCisg
ICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbCBkZWxlZ2F0ZS4KKworICAgICAgICAy
KSBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydDogX1dLV2ViQXV0aGVudGljYXRpb25UcmFu
c3BvcnRJbnRlcm5hbCBpcyBhZGRlZCBzdWNoIHRoYXQgY2xpZW50cyBjYW4gbGVhcm4gcGxhdGZv
cm0KKyAgICAgICAgYXV0aGVudGljYXRvciB3aWxsIGJlIHVzZWQgZnJvbSBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLnRyYW5zcG9ydHMuCisKKyAgICAgICAgMykgdmVyaWZ5VXNlcldpdGhBY2Nl
c3NDb250cm9sOiBBIGRlbGVnYXRlIHRoYXQgd2lsbCBiZSBjYWxsZWQgZHVyaW5nIG1ha2VDcmVk
ZW50aWFsIG9yIGdldEFzc2VydGlvbiB3aGVuIHRoZSBwbGF0Zm9ybQorICAgICAgICBhdXRoZW50
aWNhdG9yIGlzIGludm9sdmVkLiBUaGlzIGRlbGVnYXRlIGlzIHVzZWQgdG8gb2J0YWluIHVzZXIg
dmVyaWZpY2F0aW9uIGZyb20gYSBMQUNvbnRleHQuIEluIGFkZGl0aW9uLCB0aGUgTEFDb250ZXh0
CisgICAgICAgIHNob3VsZCBldmFsdWF0ZSB0aGUgcGFzc2VkIGFjY2Vzc0NvbnRyb2wsIHN1Y2gg
dGhhdCB0aGUgU0VQIHByb3RlY3RlZCBjcmVkZW50aWFsIHByaXZhdGUga2V5IGNhbiBiZSB1c2Vk
LiBBIHR5cGljYWwKKyAgICAgICAgZXhhbXBsZSB3aWxsIGJlIFtMQUNvbnRleHQgZXZhbHVhdGVB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJh
dGlvblVzZUtleVNpZ24gbG9jYWxpemVkUmVhc29uOnJlcGx5Ol0uCisgICAgICAgIE5vdGVkLCBm
b3IgZ2V0QXNzZXJ0aW9uLCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZSB3aWxsIGJlIGNhbGxlZCBi
ZWZvcmUgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sLiBTbyB1c2VycyBuZWVkIHRvIGJlCisg
ICAgICAgIHByb21wdGVkIHRvIHNlbGVjdCBhIGNyZWRlbnRpYWwgYmVmb3JlIHRoZSB1c2VyIHZl
cmlmaWNhdGlvbi4KKworICAgICAgICBJbiB0aGUgc2NlbmFyaW8gd2hlbiBib3RoIHRoZSBwbGF0
Zm9ybSBhdXRoZW50aWNhdG9yIGFuZCBleHRlcm5hbCBhdXRoZW50aWNhdG9ycyBhcmUgcmVxdWVz
dGVkLiBDbGllbnRzIGFyZSBhZHZpc2VkIHRvCisgICAgICAgIHdhaXQgdW50aWwgdmVyaWZ5VXNl
cldpdGhBY2Nlc3NDb250cm9sIHRvIHNob3cgdGhlIGNvbWJpbmVkIFVJLiBJZiBhbnkgb2YgdGhl
IExBRXJyb3IgaXMgcmVjZWl2ZWQgYmVmb3JlCisgICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNz
Q29udHJvbCwgY2xpZW50cyBjYW4gdGhlbiBvbmx5IHNob3cgdGhlIGV4dGVybmFsIGF1dGhlbnRp
Y2F0b3IgVUkuIEFsc28sIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IgYW5kCisgICAgICAgIGV4dGVy
bmFsIGF1dGhlbnRpY2F0b3JzIGFyZSBiZWluZyBkaXNjb3ZlcmVkIGF0IHRoZSBzYW1lIHRpbWUs
IHdoaWNoIG1lYW5zLCBhIHVzZXIgY2FuIHBsdWcgaW4gYSBzZWN1cml0eSBrZXkgYXQgYW55dGlt
ZS4KKyAgICAgICAgSWYgYSB2YWxpZCByZXNwb25zZSBpcyByZWNlaXZlZCBmcm9tIHRoZSBzZWN1
cml0eSBrZXksIHRoZSB3aG9sZSBjZXJlbW9ueSB3aWxsIGJlIHRlcm1pbmF0ZWQuCisKKyAgICAg
ICAgQmVzaWRlcyBpbnRyb2R1Y2luZyB0aGUgU1BJLCBhbmQgYWxsIHRoZSBwbHVtYmluZ3MgdG8g
bWFrZSBpdCBoYXBwZW4uIFRoaXMgcGF0Y2ggYWxzbzoKKyAgICAgICAgMSkgYWRkcyBMb2NhbEF1
dGhlbnRpY2F0aW9uU1BJLCB3aGljaCBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBM
QUNvbnRleHQgaXMgdW5sb2NrZWQgb3Igbm90OworICAgICAgICAyKSBpbXByb3ZlcyBNb2NrTG9j
YWxDb25uZWN0aW9uIHN1Y2ggdGhhdCBtb2NrIHRlc3RpbmcgY2FuIHN0aWxsIGJlIHJhbi4KKwor
ICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHA6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06Cisg
ICAgICAgICh3a1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b05TRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TG9j
YWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZCk6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyQXR0ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6
OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2Vu
dGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6Zmls
dGVyUmVzcG9uc2VzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5l
Y3Rpb246OmlzVW5sb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rp
b246OmdldFVzZXJDb25zZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9j
YWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6d2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdl
YktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmZpbHRlclJlc3BvbnNlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3Jl
ZGVudGlhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQg
aGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZS5jcHAKaW5kZXggNWQzMDJmOGI4ZmMzNWRhMWU2Yzk0NmUxMTIxOTY3ZDYyZTAwYTQ5OS4u
NDVlYTFlNWZhNGI0YTZiOGY0MTQ2ODAwZmU5NjE1ZDRhNTJkOGNhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0
ZShSZWY8QQogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAotUmVmPEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50
aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8
dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRh
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB1c2VySGFuZGxlKQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlcmhhbmRsZUJ1ZmZl
cjsKICAgICBpZiAoIXVzZXJIYW5kbGUuaXNFbXB0eSgpKQpAQCAtNDgsNiArNDgsMTYgQEAgUmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVh
dGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhl
bnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZm
ZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1
c2VyaGFuZGxlQnVmZmVyKSwgV1RGOjpudWxsb3B0KTsKIH0KIAorUmVmPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUo
UmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwg
U2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RG
TW92ZSh1c2VySGFuZGxlKSwgYWNjZXNzQ29udHJvbCkpOworfQorCit2b2lkIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6c2V0QXV0aGVudGljYXRvckRhdGEoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSkKK3sKKyAgICBtX2F1dGhlbnRpY2F0b3JEYXRhID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0
b3JEYXRhLnNpemUoKSk7Cit9CisKIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2ln
bmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSkKICAgICA6IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKICAgICAsIG1fYXV0aGVudGljYXRvckRhdGEo
V1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCkBAIC01Niw2ICs2NiwxMyBAQCBBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8
QXJyYXlCdWZmZXI+JgogewogfQogCitBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJl
ZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2wpCisgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCkpCisgICAg
LCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKKyAgICAsIG1fYWNjZXNzQ29udHJv
bChhY2Nlc3NDb250cm9sKQoreworfQorCiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byBkYXRh
ID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjpkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaAppbmRleCBkNzBhOWNjZjhmMzkxYjBkZDYyYzJhMTE0ZTExNTJmOWY2YzBkNmEyLi4x
MWQ1NDYyODg5NzNiM2IzMTRkYWUxMGNhZGE5Mjc4MTVmZjA5OTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmgKQEAgLTI4LDYgKzI4LDggQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSwzMiArMzcsMzggQEAgY2xhc3MgQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0
ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNh
dG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIHVzZXJIYW5kbGUsIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91
dHB1dHM+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
PiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNl
ckhhbmRsZSwgU2VjQWNjZXNzQ29udHJvbFJlZik7CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCi0gICAgQXJyYXlCdWZmZXIqIGF1dGhl
bnRpY2F0b3JEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5wdHIoKTsg
fQotICAgIEFycmF5QnVmZmVyKiBzaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBtX3NpZ25hdHVy
ZS5wdHIoKTsgfQorICAgIEFycmF5QnVmZmVyKiBhdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXV0aGVudGljYXRvckRhdGEuZ2V0KCk7IH0KKyAgICBBcnJheUJ1ZmZlciogc2ln
bmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmUuZ2V0KCk7IH0KICAgICBBcnJheUJ1
ZmZlciogdXNlckhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckhhbmRsZS5nZXQoKTsgfQor
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlOYW1lOyB9
CisgICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX251bWJl
ck9mQ3JlZGVudGlhbHM7IH0KKyAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wo
KSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc0NvbnRyb2wuZ2V0KCk7IH0KIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0QXV0aGVudGljYXRvckRhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7
CisgICAgdm9pZCBzZXRTaWduYXR1cmUoUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSkgeyBt
X3NpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKTsgfQogICAgIHZvaWQgc2V0TmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQotICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZvaWQgc2V0RGlzcGxheU5hbWUoY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSkgeyBtX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7IH0K
LSAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
TmFtZTsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZDcmVkZW50aWFscyhzaXplX3QgbnVtYmVyT2ZD
cmVkZW50aWFscykgeyBtX251bWJlck9mQ3JlZGVudGlhbHMgPSBudW1iZXJPZkNyZWRlbnRpYWxz
OyB9Ci0gICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX251
bWJlck9mQ3JlZGVudGlhbHM7IH0KIAogcHJpdmF0ZToKICAgICBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxB
cnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKKyAgICBBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYs
IFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gVHlwZTo6QXNzZXJ0aW9uOyB9CiAgICAgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBk
YXRhKCkgY29uc3QgZmluYWw7CiAKLSAgICBSZWY8QXJyYXlCdWZmZXI+IG1fYXV0aGVudGljYXRv
ckRhdGE7Ci0gICAgUmVmPEFycmF5QnVmZmVyPiBtX3NpZ25hdHVyZTsKKyAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG1fYXV0aGVudGljYXRvckRhdGE7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBt
X3NpZ25hdHVyZTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fdXNlckhhbmRsZTsKIAogICAg
IFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZGlzcGxheU5hbWU7CiAgICAgc2l6ZV90IG1f
bnVtYmVyT2ZDcmVkZW50aWFscyB7IDAgfTsKKyAgICBSZXRhaW5QdHI8U2VjQWNjZXNzQ29udHJv
bFJlZj4gbV9hY2Nlc3NDb250cm9sOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50aWNh
dGlvblNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50
aWNhdGlvblNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3YTBmNmQwM2YwY2EyNWM3ZTMwNjEyNTU2NDk1N2Y2
MTBhOGFhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9D
b2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxMb2NhbEF1dGhlbnRpY2F0aW9uL0xvY2FsQXV0
aGVudGljYXRpb24uaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQg
PExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxBdXRoZW50aWNhdGlvbl9Qcml2YXRlLmg+CisKKyNl
bHNlCisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIExBT3B0aW9uKSB7CisgICAgTEFPcHRp
b25Ob3RJbnRlcmFjdGl2ZSwKK307CisKK0BpbnRlcmZhY2UgTEFDb250ZXh0KFByaXZhdGUpIDxO
U1NlY3VyZUNvZGluZz4KKworLSAoTlNEaWN0aW9uYXJ5ICopZXZhbHVhdGVQb2xpY3k6KExBUG9s
aWN5KXBvbGljeSBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zIGVycm9yOihOU0Vycm9y
ICoqKWVycm9yOworCitAZW5kCisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuY3BwCmluZGV4IDBjZGRiY2Y0OTc2MzM5ODI0NzU5ZmVlMWEwNTVhZjU2YWI1
ZjRkNTUuLmU1Y2I0NzM4NjliZjE3ZjQwMzBkODNmZWZkYjQ4ZGM0MmEyMzk2NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRp
b25QYW5lbC5jcHAKQEAgLTUzLDYgKzUzLDggQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbDo6V2Vi
QXV0aGVudGljYXRpb25QYW5lbChjb25zdCBBdXRoZW50aWNhdG9yTWFuYWdlciYgbWFuYWcKICAg
ICAgICAgbV90cmFuc3BvcnRzLnVuY2hlY2tlZEFwcGVuZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpVc2IpOwogICAgIGlmICh0cmFuc3BvcnRzLmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ6Ok5mYykpCiAgICAgICAgIG1fdHJhbnNwb3J0cy51bmNoZWNrZWRBcHBlbmQoQXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6TmZjKTsKKyAgICBpZiAodHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkpCisgICAgICAgIG1fdHJhbnNwb3J0cy51bmNoZWNr
ZWRBcHBlbmQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpOwogfQogCiBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsOjp+V2ViQXV0aGVudGljYXRpb25QYW5lbCgpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IDQ1OTY0NGVlM2U2ZWI2NTFjMjkyZWYzZmI0OWIz
YjRhMjZhYzc2OTguLjhjMzY4NTMzZWEwYjIxNGYwMWJhN2NiZDlkZDViNTljYTUyZTE0ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaApAQCAtMzAsOCArMzAsMTEgQEAKICNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQ
SS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitPQkpDX0NMQVNTIExBQ29u
dGV4dDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOwogfQpAQCAtNTIsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpc21pc3NQYW5lbChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KSBjb25zdCB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4mJiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0IHsgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsgY29tcGxldGlvbkhh
bmRsZXIocmVzcG9uc2VzWzBdKTsgfQorICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCmluZGV4IDQz
MWM2MzNiMGZlYjBiNTUyYTZiOWQxODdlYWQzZDZmYjViY2M4YzIuLmY3MmViMGFlYTNmNDQ1ZTE2
MTkwMTM5NDk0OTM1NzIxOGJjZjQ4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaApAQCAt
MzEsNiArMzEsNyBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xhc3MgTEFDb250
ZXh0OwogQGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xh
c3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIApAQCAtNDYsNiArNDcsOSBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CiAg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkJsb2NrZWQsCiAgICAgX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkF1dGhCbG9ja2VkLAogICAgIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVMQUVycm9yLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVM
QUR1cGxpY2F0ZUNyZWRlbnRpYWwsCisgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBTm9DcmVkZW50aWFsLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRo
ZW50aWNhdGlvblJlc3VsdCkgewpAQCAtNTYsNiArNjAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgewogdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnQpIHsKICAgICBfV0tXZWJBdXRo
ZW50aWNhdGlvblRyYW5zcG9ydFVTQiwKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9y
dE5GQywKKyAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAogfSBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKQEAgLTcx
LDYgKzc2LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRp
b25UeXBlKSB7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFu
ZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OihfV0tXZWJBdXRoZW50
aWNhdGlvblJlc3VsdClyZXN1bHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6KE5TVUludGVnZXIpcmV0
cmllcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2Vy
V2l0aEFjY2Vzc0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAyZWIzMWU4MTJjOTU5OGU4OTg4
NDBiOTU1OGNlMzMyZjJlZDY3OWZmLi4xOTczYjBmNTY0ZDI1MWIyMGNmMjZhMzZhM2E2NGQ4YTI1
MjgyMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNzMsNiArNzMsOCBAQCBz
dGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnQgd2tXZWJBdXRoZW50aWNhdGlvblRy
YW5zcG9ydChXZWJDb3JlOjpBdXRoZQogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRp
b25UcmFuc3BvcnRVU0I7CiAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpOZmM6CiAgICAgICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydE5GQzsK
KyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsOgorICAg
ICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRJbnRlcm5hbDsKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIF9X
S1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCmluZGV4IGQx
NmIxN2Q1ZmM2YmM3OTUyMTRiMjdlODI1N2ZkNmYwMGJkNGM3ZTUuLjkxZDk5ZWQ1MmI2ZGIxZGVm
YWIxNTk2MjQzMTA2NzlmM2NhZDY3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKQEAgLTM0LDYgKzM0
LDkgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmg+CisKK09CSkNfQ0xBU1MgTEFDb250ZXh0OwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7CkBAIC01Myw2ICs1Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRh
dGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V1RGOjpTdHJpbmcmKT4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoTEFDb250ZXh0ICopPiYmKSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRp
Y2F0b3IoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5k
ZXggNzM2MjZjYzA1MDI3YWU2ZTIxYjI4MTQzYmM4MDA5YjkyYjFhNzViNC4uODg1OTcxZjE4YjQy
MWM2YjBhNjg0YWNhODk2MjNlY2MzMjExNjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmNwcApAQCAtMjk1LDYgKzI5NSwxNCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShjb25zdCBIYXNoU2V0PFJlZjxBdXRoZW50aWNhdAog
ICAgIH0pOwogfQogCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChM
QUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmV0YWluUHRyPFNlY0Fj
Y2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2wgPSBhY2Nlc3NDb250cm9sUmVmOworICAgIGRp
c3BhdGNoUGFuZWxDbGllbnRDYWxsKFthY2Nlc3NDb250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250
cm9sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNv
bnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYgcGFuZWwpIG11dGFibGUgeworICAgICAg
ICBwYW5lbC5jbGllbnQoKS52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwogVW5pcXVlUmVmPEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlU2VydmljZShB
dXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNl
cnZpY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikgY29uc3QKIHsKICAgICByZXR1cm4gQXV0aGVudGlj
YXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZSh0cmFuc3BvcnQsIG9ic2VydmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IGMxNTFkZDkzMjY1OWY2MjA2YzBmMTVmYmVh
MWU1YzA1NGExYTBmOWUuLmU4ZjJkMmJmZDgwYzEwY2FhY2Y4MzA1ZDQ3M2Q1YmQzZjhhZWFmYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaApAQCAtODMsNiArODMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgYXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRp
b25TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAg
IHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGZpbmFsOwogCiAgICAgLy8gT3ZlcnJpZGVuIGJ5
IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci4KICAgICB2aXJ0dWFsIFVuaXF1ZVJlZjxBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gY3JlYXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNh
dG9yVHJhbnNwb3J0LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRM
aW5rLmgKaW5kZXggMTU1MmIyNzM5MDNhYTY0ODJhMzkzYjhkMzg3OWEwM2Y0OGU2NTVhMi4uZTg0
OTEwMjk1YmYzYTI1YTRiYzA2ZTM1MWRiM2QxNGZiN2ZjZmI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNh
dGlvblNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbXBvcnQgPExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxB
dXRoZW50aWNhdGlvbi5oPgorI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIgogI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURF
UihXZWJLaXQsIExvY2FsQXV0aGVudGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IuaAppbmRleCBkZWQ5OGYyZDc2YWM0ZGU5NTFhNTg5NDBiMzZkMmI2ZTc0YWY0
NGM3Li45YTQ3NTcwZmU3MGIzYjcyNDhjY2UxMDUzMTRlNTBiOGNjOTAwZGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAtMzksMTIgKzM5LDEzIEBAIGNsYXNz
IExvY2FsQXV0aGVudGljYXRvciBmaW5hbCA6IHB1YmxpYyBBdXRoZW50aWNhdG9yIHsKIHB1Ymxp
YzoKICAgICAvLyBIZXJlIGlzIHRoZSBGU00uCiAgICAgLy8gTWFrZUNyZWRlbnRpYWw6IEluaXQg
PT4gUmVxdWVzdFJlY2VpdmVkID0+IFVzZXJDb25zZW50ZWQgPT4gQXR0ZXN0ZWQgPT4gRW5kCi0g
ICAgLy8gR2V0QXNzZXJ0aW9uOiBJbml0ID0+IFJlcXVlc3RSZWNlaXZlZCA9PiBVc2VyQ29uc2Vu
dGVkID0+IEVuZAorICAgIC8vIEdldEFzc2VydGlvbjogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQg
PT4gUmVzcG9uc2VTZWxlY3RlZCA9PiBVc2VyQ29uc2VudGVkID0+IEVuZAogICAgIGVudW0gY2xh
c3MgU3RhdGUgewogICAgICAgICBJbml0LAogICAgICAgICBSZXF1ZXN0UmVjZWl2ZWQsCiAgICAg
ICAgIFVzZXJDb25zZW50ZWQsCiAgICAgICAgIEF0dGVzdGVkLAorICAgICAgICBSZXNwb25zZVNl
bGVjdGVkCiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8TG9jYWxBdXRoZW50aWNhdG9yPiBjcmVh
dGUoVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQpAQCAtNTYsMTQgKzU3
LDE4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJl
ZjxMb2NhbENvbm5lY3Rpb24+JiYpOwogCiAgICAgdm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFs
OwotICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNB
Y2Nlc3NDb250cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50LCBMQUNvbnRleHQg
Kik7CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNl
Y0FjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqKTsKICAgICB2b2lkIGNvbnRpbnVlTWFrZUNy
ZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiwgVmVjdG9yPHVpbnQ4X3Q+JiYgY3JlZGVu
dGlhbElkLCBWZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwgTlNBcnJheSAqY2VydGlmaWNhdGVz
LCBOU0Vycm9yICopOwogCiAgICAgdm9pZCBnZXRBc3NlcnRpb24oKSBmaW5hbDsKLSAgICB2b2lk
IGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6
VXNlckNvbnNlbnQsIExBQ29udGV4dCAqLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRp
YWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFuZGxlKTsKKyAgICB2b2lkIGNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVNlbGVjdGVkKFJlZjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworICAgIHZvaWQgY29udGludWVHZXRBc3NlcnRp
b25BZnRlclVzZXJDb25zZW50ZWQoTEFDb250ZXh0ICosIFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworCisgICAgdm9pZCByZWNlaXZlRXhjZXB0aW9uKFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmJiwgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgPSBXZWJBdXRo
ZW50aWNhdGlvblN0YXR1czo6TEFFcnJvcikgY29uc3Q7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsg
U3RhdGU6OkluaXQgfTsKICAgICBVbmlxdWVSZWY8TG9jYWxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b247CisgICAgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4gbV9hc3NlcnRpb25SZXNwb25zZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCAyNWRkMWM2YWU5
NjgxZjBlZjc4Y2RiMWYzZDRjNDFiYTRlNGJiNWRlLi43OGI3M2RlMWM1MGMxMTQ2N2ZjYWQ1ODFm
NzcxNDZhZmZhNDQ3NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9y
Lm1tCkBAIC04Niw2ICs4NiwxOCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRv
TlNEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKICAgICByZXR1cm4gYWRvcHROUyhb
W05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXpl
KCldKTsKIH0KIAorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNEYXRhPiB0b05TRGF0YShBcnJh
eUJ1ZmZlciogYnVmZmVyKQoreworICAgIEFTU0VSVChidWZmZXIpOworICAgIC8vIEZJWE1FKDE4
MzUzNCk6IENvbnNpZGVyIHVzaW5nIGluaXRXaXRoQnl0ZXNOb0NvcHkuCisgICAgcmV0dXJuIGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3Ro
OmJ1ZmZlci0+Ynl0ZUxlbmd0aCgpXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVm
ZmVyPiB0b0FycmF5QnVmZmVyKE5TRGF0YSAqZGF0YSkKK3sKKyAgICByZXR1cm4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwg
ZGF0YS5sZW5ndGgpOworfQorCiB9IC8vIExvY2FsQXV0aGVudGljYXRvckludGVybmFsCiAKIExv
Y2FsQXV0aGVudGljYXRvcjo6TG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbikKQEAgLTEwOCw3ICsxMjAsNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAgIGlmIChub3RGb3VuZCA9PSBjcmVhdGlvbk9w
dGlvbnMucHViS2V5Q3JlZFBhcmFtcy5maW5kTWF0Y2hpbmcoW10gKGF1dG8mIHB1YktleUNyZWRQ
YXJhbSkgewogICAgICAgICByZXR1cm4gcHViS2V5Q3JlZFBhcmFtLnR5cGUgPT0gUHVibGljS2V5
Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSAmJiBwdWJLZXlDcmVkUGFyYW0uYWxnID09IENPU0U6
OkVTMjU2OwogICAgIH0pKSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEg
eyBOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9y
IGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRl
cnMuIl9zIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55
IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiJfcyB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTMxLDI0ICsxNDMsMjIgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJh
eVJlZiA9IG51bGxwdHI7CiAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0
Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJl
Zik7CiAgICAgICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkg
ewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBz
dGF0dXMpOwotICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25v
d25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICIsIHN0YXR1cykg
fSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3Ry
aW5nKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9
IGFkb3B0Q0YoYXR0cmlidXRlc0FycmF5UmVmKTsKIAotICAgICAgICAvLyBGSVhNRShyZGFyOi8v
cHJvYmxlbS8zNTkwMDU5Myk6IE5lZWQgdG8gb2J0YWluIHVzZXIgY29uc2VudCBhbmQgdGhlbiBy
ZXR1cm4gZGlmZmVyZW50IGVycm9yIGFjY29yZGluZyB0byB0aGUgcmVzdWx0LgorICAgICAgICAv
LyBGSVhNRTogTmVlZCB0byBvYnRhaW4gdXNlciBjb25zZW50IGFuZCB0aGVuIHJldHVybiBkaWZm
ZXJlbnQgZXJyb3IgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQuCiAgICAgICAgIGZvciAoTlNEaWN0
aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgaW4gKE5TQXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlSZWYpIHsK
ICAgICAgICAgICAgIE5TRGF0YSAqbnNDcmVkZW50aWFsSWQgPSBuc0F0dHJpYnV0ZXNbKGlkKWtT
ZWNBdHRyQXBwbGljYXRpb25MYWJlbF07CiAgICAgICAgICAgICBpZiAoZXhjbHVkZUNyZWRlbnRp
YWxJZHMuY29udGFpbnMoU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5zQ3Jl
ZGVudGlhbElkLmJ5dGVzKSwgbnNDcmVkZW50aWFsSWQubGVuZ3RoKSkpIHsKLSAgICAgICAgICAg
ICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiQXQg
bGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRl
bnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0p
OworICAgICAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBOb3RBbGxvd2VkRXJyb3IsICJB
dCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3Jl
ZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3Mg
fSwgV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxBRHVwbGljYXRlQ3JlZGVudGlhbCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAg
ICAgLy8gU3RlcCA2LgotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTAwNTkzKTogVXBk
YXRlIHRvIGEgZm9ybWFsIFVJLgogICAgIC8vIEdldCB1c2VyIGNvbnNlbnQuCiAgICAgUmV0YWlu
UHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2w7CiAgICAgewpAQCAtMTU2LDI3
ICsxNjYsMjUgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAg
ICAgICAgYWNjZXNzQ29udHJvbCA9IGFkb3B0Q0YoU2VjQWNjZXNzQ29udHJvbENyZWF0ZVdpdGhG
bGFncyhOVUxMLCBrU2VjQXR0ckFjY2Vzc2libGVXaGVuUGFzc2NvZGVTZXRUaGlzRGV2aWNlT25s
eSwga1NlY0FjY2Vzc0NvbnRyb2xQcml2YXRlS2V5VXNhZ2UgfCBrU2VjQWNjZXNzQ29udHJvbFVz
ZXJQcmVzZW5jZSwgJmVycm9yUmVmKSk7CiAgICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9w
dENGKGVycm9yUmVmKTsKICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICBMT0df
RVJST1IoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogJUAiLCAoTlNFcnJvciAqKWVy
cm9yUmVmKTsKLSAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtu
b3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogIiwg
U3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7Cisg
ICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJD
b3VsZG4ndCBjcmVhdGUgYWNjZXNzIGNvbnRyb2w6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9y
UmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVm
ID0gYWNjZXNzQ29udHJvbC5nZXQoKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRy
b2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250
ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICgh
d2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0g
dGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2xSZWYgPSBhY2Nlc3NDb250cm9sLmdldCgpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0g
W2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0gKExBQ29udGV4dCAqY29udGV4dCkgeworICAgICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIGNvbnNlbnQsIGNvbnRl
eHQpOwotICAgIH07Ci0gICAgbV9jb25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKLSAgICAgICAg
bWFrZVN0cmluZygiYWxsb3cgIl9zLCBjcmVhdGlvbk9wdGlvbnMucnAuaWQsICIgdG8gY3JlYXRl
IGEgcHVibGljIGtleSBjcmVkZW50aWFsIGZvciAiX3MsIGNyZWF0aW9uT3B0aW9ucy51c2VyLm5h
bWUpLAotICAgICAgICBhY2Nlc3NDb250cm9sUmVmLAotICAgICAgICBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNl
ckNvbnNlbnRlZChhY2Nlc3NDb250cm9sLmdldCgpLCBjb250ZXh0KTsKKyAgICAgICAgfTsKKyAg
ICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIH0KIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFr
ZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3ND
b250cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4
dCAqY29udGV4dCkKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJl
ZiwgTEFDb250ZXh0ICpjb250ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhl
bnRpY2F0b3JJbnRlcm5hbDsKIApAQCAtMTg0LDcgKzE5Miw3IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vz
c0NvbnRyCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOwogICAgIGF1dG8mIGNy
ZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAKLSAgICBpZiAoY29uc2VudCA9PSBMb2NhbENv
bm5lY3Rpb246OlVzZXJDb25zZW50OjpObykgeworICAgIGlmICghbV9jb25uZWN0aW9uLT5pc1Vu
bG9ja2VkKGNvbnRleHQpKSB7CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEg
eyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJfcyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMyw4ICsyMjEsNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nl
c3NDb250cgogICAgIH07CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbURlbGV0ZSgoX19i
cmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKICAgICBpZiAoc3RhdHVzICYmIHN0
YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4n
dCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogJWQiLCBzdGF0dXMpOwotICAgICAgICByZWNlaXZl
UmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4n
dCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2
ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZGVsZXRlIG9s
ZGVyIGNyZWRlbnRpYWw6ICIsIHN0YXR1cykgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTIyMiw3ICsyMjksNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cgogICAgIC8vIFRoZSBh
Ym92ZS10by1jcmVhdGUgcHJpdmF0ZSBrZXkgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIGtleWNoYWlu
IHdoaWxlIHVzaW5nIFNFUC4KICAgICBhdXRvIHByaXZhdGVLZXkgPSBtX2Nvbm5lY3Rpb24tPmNy
ZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KGNvbnRleHQsIGFjY2Vzc0NvbnRyb2xSZWYsIHNlY0F0
dHJMYWJlbCwgc2VjQXR0ckFwcGxpY2F0aW9uVGFnLmdldCgpKTsKICAgICBpZiAoIXByaXZhdGVL
ZXkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJv
ciwgIkNvdWxkbid0IGNyZWF0ZSBwcml2YXRlIGtleS4iX3MgfSk7CisgICAgICAgIHJlY2VpdmVF
eGNlcHRpb24oeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNDMsOCArMjUwLDcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50
ZWQoU2VjQWNjZXNzQ29udHIKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNSZWYgPSBudWxs
cHRyOwogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpY3JlZGVudGlhbElkUXVlcnksICZhdHRyaWJ1dGVzUmVmKTsK
ICAgICAgICAgaWYgKHN0YXR1cykgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBn
ZXQgQ3JlZGVudGlhbCBJRDogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgcmVjZWl2ZVJlc3Bv
bmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0
IENyZWRlbnRpYWwgSUQ6ICIsIHN0YXR1cykgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0
aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZXQgQ3JlZGVudGlhbCBJ
RDogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBhdXRvIHJldGFpbkF0dHJpYnV0ZXMgPSBhZG9wdENGKGF0dHJpYnV0ZXNSZWYpOwpAQCAtMjY4
LDggKzI3NCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyCiAgICAgICAgICAgICBwdWJsaWNL
ZXlEYXRhUmVmID0gYWRvcHRDRihTZWNLZXlDb3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihwdWJs
aWNLZXkuZ2V0KCksICZlcnJvclJlZikpOwogICAgICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9
IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAg
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBleHBvcnQgdGhlIHB1YmxpYyBrZXk6ICVAIiwg
KE5TRXJyb3IqKWVycm9yUmVmKTsKLSAgICAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNl
cHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBleHBvcnQgdGhl
IHB1YmxpYyBrZXk6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNj
cmlwdGlvbikpIH0pOworICAgICAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGV4cG9ydCB0aGUgcHVibGljIGtleTogIiwgU3Ry
aW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKCgo
TlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQoKSkubGVuZ3RoID09ICgxICsgMiAqIEVTMjU2
RmllbGRFbGVtZW50TGVuZ3RoKSk7IC8vIDA0IHwgWCB8IFkKQEAgLTMwOSw4ICszMTQsNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0
ZWQoU2VjS2V5UmVmIHByaXZhdGVLZQogICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6
Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0
aW9ucyk7CiAKICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBh
dHRlc3Q6ICVAIiwgZXJyb3IpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRh
IHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9u
KHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIC8vIEF0dGVzdGF0aW9uIENlcnRpZmljYXRlIGFuZCBBdHRlc3RhdGlvbiBJc3N1aW5nIENB
CkBAIC0zNDQsMTAgKzM0OCw5IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRp
b24oKQogICAgIC8vIFNraXAgU3RlcCA4IGFzIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQg
eWV0LgogICAgIC8vIFN0ZXAgMTIgaXMgaW1wbGljaXRseSBjYXB0dXJlZCBieSBhbGwgVW5rbm93
bkVycm9yIGV4Y2VwdGlvbiBjYWxsYmFja3MuCiAgICAgLy8gU3RlcCAzLTUuIFVubGlrZSB0aGUg
c3BlYywgaWYgYW4gYWxsb3cgbGlzdCBpcyBwcm92aWRlZCBhbmQgdGhlcmUgaXMgbm8gaW50ZXJz
ZWN0aW9uIGJldHdlZW4gZXhpc3Rpbmcgb25lcyBhbmQgdGhlIGFsbG93IGxpc3QsIHdlIGFsd2F5
cyByZXR1cm4gTm90QWxsb3dlZEVycm9yLgotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1
OTAwNTkzKTogTmVlZCB0byBpbmZvcm0gdXNlcnMuCiAgICAgYXV0byBhbGxvd0NyZWRlbnRpYWxJ
ZHMgPSBwcm9kdWNlSGFzaFNldChyZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKTsKICAg
ICBpZiAoIXJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuaXNFbXB0eSgpICYmIGFsbG93
Q3JlZGVudGlhbElkcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZv
dW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAg
ICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVu
dGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJf
cyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0zNjcsOCArMzcwLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0
b3I6OmdldEFzc2VydGlvbigpCiAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51
bGxwdHI7CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKICAgICBpZiAo
c3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBzdGF0dXMpOwotICAgICAgICByZWNl
aXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3Vs
ZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2Vw
dGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46
ICIsIHN0YXR1cykgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byByZXRhaW5B
dHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CkBAIC0zODYsNDEg
KzM4OCw2MSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAg
ICAgaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMgPSByZXN1bHQ7CiAgICAgfQogICAg
IGlmICghaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMuY291bnQpIHsKLSAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNo
ZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50
aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJv
ciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRh
Y2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0Ny
ZWRlbnRpYWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gU3RlcCA2LgotICAg
IGF1dG8gKnNlbGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXMgPSBtX2Nvbm5lY3Rpb24tPnNlbGVj
dENyZWRlbnRpYWwoaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMpOworICAgIGZvciAo
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGUgOiBpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRl
cykgeworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFkZChB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSgKKyAgICAgICAgICAgIHRvQXJy
YXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwKKyAgICAg
ICAgICAgIHRvQXJyYXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFn
XSksCisgICAgICAgICAgICAoX19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVb
KGlkKWtTZWNBdHRyQWNjZXNzQ29udHJvbF0pKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICB9CisgICAgbV9jb25uZWN0aW9uLT5m
aWx0ZXJSZXNwb25zZXMobV9hc3NlcnRpb25SZXNwb25zZXMpOworCisgICAgaWYgKGF1dG8qIG9i
c2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBhdXRvIGNhbGxiYWNrID0gW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29uc3QgQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlJiByZXNwb25zZSkgeworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBhdXRvIHJldHVyblJlc3BvbnNlID0gbV9hc3NlcnRpb25S
ZXNwb25zZXMudGFrZShjb25zdF9jYXN0PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSo+
KCZyZXNwb25zZSkpOworICAgICAgICAgICAgaWYgKCFyZXR1cm5SZXNwb25zZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVz
cG9uc2VTZWxlY3RlZChXVEZNb3ZlKCpyZXR1cm5SZXNwb25zZSkpOworICAgICAgICB9OworICAg
ICAgICBvYnNlcnZlci0+c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UobV9hc3NlcnRpb25SZXNwb25z
ZXMsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9Cit9CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmIHJlc3BvbnNlKQoreworICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOworICAgIG1fc3RhdGUgPSBT
dGF0ZTo6UmVzcG9uc2VTZWxlY3RlZDsKIAogICAgIC8vIFN0ZXAgNy4gR2V0IHVzZXIgY29uc2Vu
dC4KLSAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTkwMDU5Myk6IFVwZGF0ZSB0byBhIGZv
cm1hbCBVSS4KLSAgICBhdXRvIGNhbGxiYWNrID0gWwotICAgICAgICB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwKLSAgICAgICAgY3JlZGVudGlhbElkID0gdG9WZWN0b3Ioc2VsZWN0ZWRD
cmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXSksCi0gICAg
ICAgIHVzZXJoYW5kbGUgPSB0b1ZlY3RvcihzZWxlY3RlZENyZWRlbnRpYWxBdHRyaWJ1dGVzWyhp
ZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSkKLSAgICBdKExvY2FsQ29ubmVjdGlvbjo6VXNlckNv
bnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAg
ICBhdXRvIGFjY2Vzc0NvbnRyb2xSZWYgPSByZXNwb25zZS0+YWNjZXNzQ29udHJvbCgpOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXNw
b25zZSA9IFdURk1vdmUocmVzcG9uc2UpXSAoTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB3ZWFrVGhpcy0+
Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoY29uc2VudCwgY29udGV4dCwg
Y3JlZGVudGlhbElkLCB1c2VyaGFuZGxlKTsKLSAgICB9OwotICAgIE5TRGF0YSAqaWREYXRhID0g
c2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ107
Ci0gICAgU3RyaW5nVmlldyBpZFN0cmluZ1ZpZXcgeyBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+
KFtpZERhdGEgYnl0ZXNdKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFtpZERhdGEgbGVuZ3RoXSkg
fTsKLSAgICBtX2Nvbm5lY3Rpb24tPmdldFVzZXJDb25zZW50KAotICAgICAgICBtYWtlU3RyaW5n
KCJsb2cgaW50byAiLCByZXF1ZXN0T3B0aW9ucy5ycElkLCAiIHdpdGggIiwgaWRTdHJpbmdWaWV3
KSwKLSAgICAgICAgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpc2VsZWN0ZWRDcmVkZW50
aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSwKLSAgICAgICAgV1RGTW92
ZShjYWxsYmFjaykpOworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlR2V0QXNzZXJ0aW9u
QWZ0ZXJVc2VyQ29uc2VudGVkKGNvbnRleHQsIFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICAgICAg
fTsKKyAgICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIH0KIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6VXNlckNv
bnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFuZGxlKQordm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVk
KExBQ29udGV4dCAqY29udGV4dCwgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4mJiByZXNwb25zZSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50
aWNhdG9ySW50ZXJuYWw7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNl
aXZlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlc3BvbnNlU2VsZWN0ZWQpOwog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKIAotICAgIGlmIChjb25zZW50ID09
IExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQ6Ok5vKSB7CisgICAgaWYgKCFtX2Nvbm5lY3Rp
b24tPmlzVW5sb2NrZWQoY29udGV4dCkpIHsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDMyLDI1ICs0NTQsMjcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVk
KExvY2FsQ29ubmVjdGlvbjoKICAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShXVEY6
OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0
aW9ucykucnBJZCwgZ2V0QXNzZXJ0aW9uRmxhZ3MsIGNvdW50ZXIsIHsgfSk7CiAKICAgICAvLyBT
dGVwIDExLgotICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmU7CisgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gc2lnbmF0dXJlOwogICAgIHsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICpxdWVyeSA9
IEB7CisgICAgICAgIGF1dG8gcXVlcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworICAgICAgICBbcXVlcnkgYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OkB7
CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAogICAgICAgICAg
ICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKLSAg
ICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRvTlNEYXRhKGNyZWRlbnRp
YWxJZCkuZ2V0KCksCi0gICAgICAgICAgICAoaWQpa1NlY1VzZUF1dGhlbnRpY2F0aW9uQ29udGV4
dDogY29udGV4dCwKKyAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRv
TlNEYXRhKHJlc3BvbnNlLT5yYXdJZCgpKS5nZXQoKSwKICAgICAgICAgICAgIChpZClrU2VjUmV0
dXJuUmVmOiBAWUVTLAogI2lmIEhBVkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQogICAgICAg
ICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCiAjZWxzZQogICAg
ICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICNlbmRpZgotICAgICAgICB9Owor
ICAgICAgICB9XTsKKyAgICAgICAgLy8gY29udGV4dCBpcyBudWxscHRyIGluIG1vY2sgdGVzdGlu
Zy4KKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICBbcXVlcnkgc2V0T2JqZWN0OmNv
bnRleHQgZm9yS2V5OihpZClrU2VjVXNlQXV0aGVudGljYXRpb25Db250ZXh0XTsKICAgICAgICAg
Q0ZUeXBlUmVmIHByaXZhdGVLZXlSZWYgPSBudWxscHRyOwotICAgICAgICBPU1N0YXR1cyBzdGF0
dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnks
ICZwcml2YXRlS2V5UmVmKTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlN
YXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LmdldCgpLCAmcHJpdmF0ZUtl
eVJlZik7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291
bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICVkIiwgc3RhdHVzKTsKLSAgICAg
ICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VT
dHJpbmcoIkNvdWxkbid0IGdldCB0aGUgcHJpdmF0ZSBrZXkgcmVmZXJlbmNlOiAiLCBzdGF0dXMp
IH0pOworICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0
cmluZygiQ291bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICIsIHN0YXR1cykg
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byBwcml2YXRl
S2V5ID0gYWRvcHRDRihwcml2YXRlS2V5UmVmKTsKQEAgLTQ2MCwxOCArNDg0LDI3IEBAIHZvaWQg
TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRl
ZChMb2NhbENvbm5lY3Rpb246CiAKICAgICAgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxw
dHI7CiAgICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0aW5nIENGVHlwZVJlZiB0byBTZWNLZXlSZWYg
aXMgcXVpdGUgc3VidGxlIGhlcmUuCi0gICAgICAgIGF1dG8gc2lnbmF0dXJlUmVmID0gYWRvcHRD
RihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJlZikoKGlkKXByaXZhdGVL
ZXlSZWYpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNzYWdlWDk2MlNIQTI1Niwg
KF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYpKTsKKyAgICAgICAgc2ln
bmF0dXJlID0gYWRvcHRDRihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJl
ZikoKGlkKXByaXZhdGVLZXlSZWYpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNz
YWdlWDk2MlNIQTI1NiwgKF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYp
KTsKICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAg
ICBpZiAoZXJyb3JSZWYpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2VuZXJh
dGUgdGhlIHNpZ25hdHVyZTogJUAiLCAoTlNFcnJvciopZXJyb3JSZWYpOwotICAgICAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygi
Q291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJy
b3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhj
ZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZW5lcmF0ZSB0aGUg
c2lnbmF0dXJlOiAiLCBTdHJpbmcoKChOU0Vycm9yKillcnJvclJlZikubG9jYWxpemVkRGVzY3Jp
cHRpb24pKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBzaWdu
YXR1cmUgPSB0b1ZlY3RvcigoTlNEYXRhICopc2lnbmF0dXJlUmVmLmdldCgpKTsKICAgICB9CiAK
ICAgICAvLyBTdGVwIDEzLgotICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgdXNl
cmhhbmRsZSkpOworICAgIHJlc3BvbnNlLT5zZXRBdXRoZW50aWNhdG9yRGF0YShhdXRoRGF0YSk7
CisgICAgcmVzcG9uc2UtPnNldFNpZ25hdHVyZSh0b0FycmF5QnVmZmVyKChOU0RhdGEgKilzaWdu
YXR1cmUuZ2V0KCkpKTsKKyAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKHJlc3BvbnNlKSk7Cit9
CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0aW9uKEV4Y2VwdGlvbkRh
dGEmJiBleGNlcHRpb24sIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIHN0YXR1cykgY29uc3QKK3sK
KyAgICBMT0dfRVJST1IoZXhjZXB0aW9uLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgaWYg
KGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkKKyAgICAgICAgb2JzZXJ2ZXItPmF1
dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKHN0YXR1cyk7CisgICAgcmVjZWl2ZVJlc3BvbmQoV1RG
TW92ZShleGNlcHRpb24pKTsKKyAgICByZXR1cm47CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaAppbmRleCA5MTkxYjJjNjUzNDJjZDFi
NjU3MTI1YTIzMjY0NjE2ZmU4ZGUyMjlhLi41NDVhYzVmZjYxYjdiMmJhZTdkZTM4NzQyZDU2ODg4
ZTVmMDgxNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaApAQCAtNDYsMjMg
KzQ2LDE2IEBAIGNsYXNzIExvY2FsQ29ubmVjdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxDb25uZWN0aW9uKTsKIHB1Ymxp
YzoKLSAgICBlbnVtIGNsYXNzIFVzZXJDb25zZW50IHsKLSAgICAgICAgTm8sCi0gICAgICAgIFll
cwotICAgIH07Ci0KICAgICB1c2luZyBBdHRlc3RhdGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChOU0FycmF5ICosIE5TRXJyb3IgKik+OwotICAgIHVzaW5nIFVzZXJDb25zZW50
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJDb25zZW50KT47Ci0gICAgdXNp
bmcgVXNlckNvbnNlbnRDb250ZXh0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVz
ZXJDb25zZW50LCBMQUNvbnRleHQgKik+OwogCiAgICAgTG9jYWxDb25uZWN0aW9uKCkgPSBkZWZh
dWx0OwogICAgIHZpcnR1YWwgfkxvY2FsQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogICAgIC8v
IE92ZXJyaWRlZCBieSBNb2NrTG9jYWxDb25uZWN0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBnZXRV
c2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNl
ckNvbnNlbnRDb250ZXh0Q2FsbGJhY2smJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzVW5s
b2NrZWQoTEFDb250ZXh0ICopIGNvbnN0OwogICAgIHZpcnR1YWwgUmV0YWluUHRyPFNlY0tleVJl
Zj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRy
b2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNh
dGlvblRhZykgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGdldEF0dGVzdGF0aW9uKFNlY0tleVJl
ZiwgTlNEYXRhICphdXRoRGF0YSwgTlNEYXRhICpoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYp
IGNvbnN0OwotICAgIHZpcnR1YWwgTlNEaWN0aW9uYXJ5ICpzZWxlY3RDcmVkZW50aWFsKGNvbnN0
IE5TQXJyYXkgKikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGZpbHRlclJlc3BvbnNlcyhIYXNo
U2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYpIGNvbnN0
IHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxD
b25uZWN0aW9uLm1tCmluZGV4IDhiYWVlZTcwOWZmYzdkM2NlNWNiOGU4MDE0YzMxM2I4YTBhZTAx
YjQuLjUzZTAxMjNhZDdhZGE1NTc1M2MyMjI5OWZlODllODg0MDJmYzIxZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29u
bmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KQEAgLTM5LDIyICszOSwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0
IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIFVzZXJD
b25zZW50Q29udGV4dENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Citib29sIExv
Y2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZChMQUNvbnRleHQgKmNvbnRleHQpIGNvbnN0CiB7Ci0g
ICAgYXV0byBjb250ZXh0ID0gYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRd
KTsKLSAgICBhdXRvIHJlcGx5ID0gbWFrZUJsb2NrUHRyKFtjb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgICAgIFVzZXJDb25zZW50IGNvbnNlbnQgPSBVc2VyQ29uc2VudDo6WWVzOwotICAgICAg
ICBpZiAoIXN1Y2Nlc3MgfHwgZXJyb3IpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRu
J3QgYXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmljczogJUAiLCBlcnJvcik7Ci0gICAgICAgICAg
ICBjb25zZW50ID0gVXNlckNvbnNlbnQ6Ok5vOwotICAgICAgICB9Ci0gICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgY29uc2VudCwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCldKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb25zZW50LCBjb250ZXh0LmdldCgpKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci0gICAgW2NvbnRleHQgZXZhbHVhdGVBY2Nlc3NDb250cm9s
OmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJhdGlvblVzZUtleVNp
Z24gbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpyZXBseS5nZXQoKV07CisgICAgTlNFcnJv
ciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byByZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVBvbGlj
eTpMQVBvbGljeURldmljZU93bmVyQXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBvcHRpb25z
OkB7IEAoTEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSk6IEBZRVMgfSBlcnJvcjomZXJyb3JdOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdldCB1c2VyIGNvbnNl
bnQ6ICVAIiwgZXJyb3IpOworICAgIHJldHVybiAhIXJlc3VsdDsKIH0KIAogUmV0YWluUHRyPFNl
Y0tleVJlZj4gTG9jYWxDb25uZWN0aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNv
bnRleHQgKmNvbnRleHQsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgY29u
c3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBj
b25zdApAQCAtODgsMTIgKzc5LDYgQEAgTE9DQUxDT05ORUNUSU9OX0FERElUSU9OUwogI2VuZGlm
CiB9CiAKLU5TRGljdGlvbmFyeSAqTG9jYWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsKGNv
bnN0IE5TQXJyYXkgKmNyZWRlbnRpYWxzKSBjb25zdAotewotICAgIC8vIEZJWE1FKHJkYXI6Ly9w
cm9ibGVtLzM1OTAwNTM0KTogV2UgZG9uJ3QgaGF2ZSBhbiBVSSB0byBwcm9tcHQgdXNlcnMgZm9y
IHNlbGVjdGluZyBpbnRlcnNlY3RlZENyZWRlbnRpYWxzLCBhbmQgdGhlcmVmb3JlIHdlIGFsd2F5
cyB1c2UgdGhlIGZpcnN0IG9uZSBmb3Igbm93LgotICAgIHJldHVybiBjcmVkZW50aWFsc1swXTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5oCmluZGV4IDNjNmIzZDdlMDEzY2U2ODA3MjgzOGI5MjY4YWVjYTliZGUyOThlY2YuLmRmM2Q5
NWFlMTA5ZTViZDQyMTI3YTNlNGYwM2M1NDUzYjU4YmMzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3Vs
dCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGNvbnN0IGZpbmFsOwogCiAgICAgX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbCAqbV9wYW5lbDsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbERlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CkBAIC01OCw3ICs1OSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIGJvb2wgcGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsIDog
MTsKICAgICAgICAgYm9vbCBwYW5lbERpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJl
c3VsdCA6IDE7CiAgICAgICAgIGJvb2wgcGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJp
ZXNDb21wbGV0aW9uSGFuZGxlciA6IDE7Ci0gICAgICAgIGJvb2wgcGFuZWxzZWxlY3RBc3NlcnRp
b25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCBwYW5lbFNlbGVj
dEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29sIHBh
bmVsVmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAg
IH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQppbmRleCBkNTE2NjMyYjk4ZDczODgxYzQz
ZTQzMTljMzk3MzNlMDQwMzllYjVlLi40MDgwNjUyZGRkMjgzMjdkMTYzZWRlZGFhZWE3YjljMGM4
ODBhMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQubW0KQEAgLTM4LDYgKzM4LDggQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAorI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlv
blNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKnBhbmVsLCBpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiBk
ZWxlZ2F0ZSkKQEAgLTQ3LDcgKzQ5LDggQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudChfV0tXZWJBdXRoZW50aWNhdGlvblAKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy5wYW5lbFVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDp1cGRhdGVXZWJBdXRoZW50
aWNhdGlvblBhbmVsOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsRGlzbWlzc1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocGFuZWw6ZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0
OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdS
ZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwYW5lbDpyZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6Y29tcGxldGlvbkhh
bmRsZXI6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFu
ZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9u
SGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnZl
cmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0
YWluUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6ZGVsZWdhdGUoKQpAQCAtNjcsNiArNzAsMTIgQEAgc3RhdGlj
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUgd2tXZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlKFdlYkF1dGhlbnQKICAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVQSU5BdXRoQmxvY2tlZDsKICAgICBpZiAoc3RhdHVzID09IFdlYkF1dGhlbnRpY2F0
aW9uU3RhdHVzOjpQaW5JbnZhbGlkKQogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZVBJTkludmFsaWQ7CisgICAgaWYgKHN0YXR1cyA9PSBXZWJBdXRoZW50aWNh
dGlvblN0YXR1czo6TEFFcnJvcikKKyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVMQUVycm9yOworICAgIGlmIChzdGF0dXMgPT0gV2ViQXV0aGVudGljYXRpb25T
dGF0dXM6OkxBRHVwbGljYXRlQ3JlZGVudGlhbCkKKyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw7CisgICAgaWYgKHN0YXR1
cyA9PSBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpCisgICAgICAgIHJl
dHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWw7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVNdWx0aXBsZU5GQ1RhZ3NQcmVzZW50OwogfQpAQCAtMTMzLDcgKzE0Miw3IEBAIHZv
aWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Uo
VmVjdG9yPFJlZjxXZWJDb3JlOjpBCiB7CiAgICAgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgp
KTsKIAotICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5l
bFNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE1OCw2ICsxNjcsMjggQEAgdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkEKICAgICB9KS5nZXQoKV07
CiB9CiAKK3ZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlcihTZWNB
Y2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFD
b250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9kZWxl
Z2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFu
ZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFthbGxvY0xBQ29udGV4
dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5j
ZSgpIGluaXRdKS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNo
ZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0
KCksIEBzZWxlY3RvcihwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlv
bkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgdmVyaWZ5VXNlcldpdGhB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2Vy
ID0gV1RGTW92ZShjaGVja2VyKV0oTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisgICAgfSkuZ2V0KCldOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9N
b2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDcyMDE1OGFjYzI1
NTkxYjczMGZjZTcxY2FmZWRiZTM0MzE5NmRlZDIuLmQwZGQ5YjEwNDlhYTE3ZmJlZWUzYjg0OTJl
NWVjNDFmNzU1MmE4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5o
CkBAIC0zNywxMCArMzcsMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tMb2NhbENvbm5l
Y3Rpb24oY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFz
b24sIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaXNVbmxvY2tlZChMQUNvbnRleHQgKikgY29uc3QgZmluYWw7
CiAgICAgUmV0YWluUHRyPFNlY0tleVJlZj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFD
b250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVs
LCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBn
ZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwg
QXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKLSAgICBOU0RpY3Rpb25hcnkgKnNl
bGVjdENyZWRlbnRpYWwoY29uc3QgTlNBcnJheSAqKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGZp
bHRlclJlc3BvbnNlcyhIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U+PiYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25u
ZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IDkxNWI1OTQ5OWZlN2VjZDI3YmZmNjliMmYw
NjcwZGI3ZDRjZjMwZmYuLjhiOGQ4MjQ1MTRlNThjODQyMDBhYTc4MTY2NzU5YWFlZjdjYzUxNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTMyLDYgKzMy
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogI2ltcG9ydCA8d3RmL1J1
bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNp
bXBvcnQgIkxvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIgpAQCAtNDMsMTcgKzQ0LDkgQEAg
TW9ja0xvY2FsQ29ubmVjdGlvbjo6TW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpN
b2NrV2ViQXV0aGVudGljYXRpb25Db24KIHsKIH0KIAotdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9u
OjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2Vy
Q29uc2VudENvbnRleHRDYWxsYmFjayYmIGNhbGxiYWNrKSBjb25zdAorYm9vbCBNb2NrTG9jYWxD
b25uZWN0aW9uOjppc1VubG9ja2VkKExBQ29udGV4dCAqY29udGV4dCkgY29uc3QKIHsKLSAgICAv
LyBNb2NrIGFzeW5jIG9wZXJhdGlvbnMuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtj
b25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9uLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoY29uZmlndXJhdGlvbi5sb2NhbCk7Ci0g
ICAgICAgIGlmICghY29uZmlndXJhdGlvbi5sb2NhbC0+YWNjZXB0QXV0aGVudGljYXRpb24pIHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKFVzZXJDb25zZW50OjpObywgbmlsKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjYWxsYmFjayhVc2VyQ29uc2VudDo6WWVzLCBh
ZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKLSAgICB9KTsK
KyAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLmxvY2FsLT5hY2NlcHRBdXRoZW50aWNhdGlvbjsK
IH0KIAogUmV0YWluUHRyPFNlY0tleVJlZj4gTW9ja0xvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3Jl
ZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0
IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29u
c3QKQEAgLTExMiwxNSArMTA1LDI0IEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0
ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKiwgTlNEYXRhICosIEF0dGVzdGF0CiAgICAgfSk7
CiB9CiAKLU5TRGljdGlvbmFyeSAqTW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3JlZGVudGlh
bChjb25zdCBOU0FycmF5ICpjcmVkZW50aWFscykgY29uc3QKK3ZvaWQgTW9ja0xvY2FsQ29ubmVj
dGlvbjo6ZmlsdGVyUmVzcG9uc2VzKEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMpIGNvbnN0CiB7Ci0gICAgYXV0byBwcmVmZXJy
ZWRVc2VyaGFuZGxlID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNv
ZGVkU3RyaW5nOm1fY29uZmlndXJhdGlvbi5sb2NhbC0+cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2
NCBvcHRpb25zOjBdKTsKLSAgICBmb3IgKE5TRGljdGlvbmFyeSAqY3JlZGVudGlhbCA6IGNyZWRl
bnRpYWxzKSB7Ci0gICAgICAgIGlmIChbY3JlZGVudGlhbFsoaWQpa1NlY0F0dHJBcHBsaWNhdGlv
blRhZ10gaXNFcXVhbFRvRGF0YTpwcmVmZXJyZWRVc2VyaGFuZGxlLmdldCgpXSkKLSAgICAgICAg
ICAgIHJldHVybiBjcmVkZW50aWFsOworICAgIGNvbnN0IGF1dG8mIHByZWZlcnJlZFVzZXJoYW5k
bGVCYXNlNjQgPSBtX2NvbmZpZ3VyYXRpb24ubG9jYWwtPnByZWZlcnJlZFVzZXJoYW5kbGVCYXNl
NjQ7CisgICAgaWYgKHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGl0ciA9IHJlc3BvbnNlcy5iZWdpbigpOworICAgIGZvciAo
OyBpdHIgIT0gcmVzcG9uc2VzLmVuZCgpOyArK2l0cikgeworICAgICAgICBhdXRvKiB1c2VySGFu
ZGxlID0gaXRyLT5nZXQoKS51c2VySGFuZGxlKCk7CisgICAgICAgIEFTU0VSVCh1c2VySGFuZGxl
KTsKKyAgICAgICAgYXV0byB1c2VyaGFuZGxlQmFzZTY0ID0gYmFzZTY0RW5jb2RlKHVzZXJIYW5k
bGUtPmRhdGEoKSwgdXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgaWYgKHVzZXJo
YW5kbGVCYXNlNjQgPT0gcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCkKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbmlsOwor
ICAgIGF1dG8gcmVzcG9uc2UgPSByZXNwb25zZXMudGFrZShpdHIpOworICAgIEFTU0VSVChyZXNw
b25zZSk7CisgICAgcmVzcG9uc2VzLmNsZWFyKCk7CisgICAgcmVzcG9uc2VzLmFkZChXVEZNb3Zl
KCpyZXNwb25zZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9u
RmxhZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0aW9uRmxhZ3MuaAppbmRleCA1NDg4YTIxMTM5MjkyNmMwYTM2NmZmYTg3Zjc2NTkw
OWQ5MWU1Yjg4Li45NzUxODNkZmQ1Nzc1MmQxMjNmNjUzMzdiNzZiNzk1NTI0NjYxMWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdGlvbkZsYWdzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRpb25GbGFncy5oCkBAIC00NSw3ICs0NSwxMCBAQCBlbnVt
IGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIDogdWludDhfdCB7CiAgICAgTm9DcmVkZW50
aWFsc0ZvdW5kLAogICAgIFBpbkJsb2NrZWQsCiAgICAgUGluQXV0aEJsb2NrZWQsCi0gICAgUGlu
SW52YWxpZAorICAgIFBpbkludmFsaWQsCisgICAgTEFFcnJvciwKKyAgICBMQUR1cGxpY2F0ZUNy
ZWRlbnRpYWwsCisgICAgTEFOb0NyZWRlbnRpYWwsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDJjY2ZiNjVhODRhMjdjZmJlNzY1YmY3NWI5MTZjNjUzMTIzZjYzMjQuLjQ1ZWNjYzU2Nzcx
MGQ3MWJkNjQ3YzE3YzA3MDYwZmM2YzRhYmE0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Niw2ICsxMDk2LDcgQEAKIAkJNTcw
REFBQzYyMzAzN0Y3RjAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERBQUM0MjMwMzdG
N0UwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi87IH07CiAJCTU3MERB
QUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyog
Q3RhcE5mY0RyaXZlci5oICovOyB9OwogCQk1NzJGRDQ0MzIyMjY1Q0UyMDBBMUVDQzMgLyogV2Vi
Vmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0Rp
ZE1vdmVUb1dpbmRvd09ic2VydmVyLmggKi87IH07CisJCTU3NDIxNzkyMjQwMEUyODYwMDJCMzAz
RCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyogTG9jYWxBdXRo
ZW50aWNhdGlvblNQSS5oICovOyB9OwogCQk1NzQ3MjhEMTIzNDU2RTk4MDAxNzAwQUYgLyogX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc0NzI4Q0YyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1NzQ3MjhENDIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzQ3MjhEMzIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bEludGVybmFsLmggKi87IH07CiAJCTU3NTk3RUI5MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlk
RHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oICovOyB9OwpAQCAtMzgx
MSw2ICszODEyLDcgQEAKIAkJNTcwREFBQzgyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ3RhcE5mY0RyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzBEQUFDOTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDdGFwTmZjRHJpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTcyRkQ0NDEyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZpZXdEaWRNb3ZlVG9X
aW5kb3dPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWV3RGlkTW92ZVRvV2luZG93T2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc0MjE3OTEyNDAwRTA5ODAw
MkIzMDNEIC8qIExvY2FsQXV0aGVudGljYXRpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxB
dXRoZW50aWNhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQ3MjhD
RjIzNDU2RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3NDcyOEQwMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0NzI4RDMyMzQ1NzBBRTAwMTcw
MEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTY4MzksNiArNjg0MSw3IEBACiAJCQkJMUE1NzA1MTAxQkU0MTBFNTAwODc0
QUYxIC8qIEJsb2NrU1BJLmggKi8sCiAJCQkJMzdDMjFDQUQxRTk5NEMwQzAwMjlENUY5IC8qIENv
cmVQcmVkaWN0aW9uU1BJLmggKi8sCiAJCQkJMkRBQURBOEUyMjk4QzIxMDAwRTM2QjBDIC8qIERl
dmljZU1hbmFnZW1lbnRTUEkuaCAqLywKKwkJCQk1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyog
TG9jYWxBdXRoZW50aWNhdGlvblNQSS5oICovLAogCQkJCTU3QjgyNjQwMjMwNEVCM0UwMEI3MkVC
MCAvKiBOZWFyRmllbGRTUEkuaCAqLywKIAkJCQkzNzU0RDU0NDFCM0EyOUZEMDAzQTRDN0YgLyog
TlNJbnZvY2F0aW9uU1BJLmggKi8sCiAJCQkJMzdCNDdFMkMxRDY0REI3NjAwNUY0RUZGIC8qIG9i
amNTUEkuaCAqLywKQEAgLTEwMzYyLDYgKzEwMzY1LDcgQEAKIAkJCQk0MTMwNzVCMjFERTg1RjU4
MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQxMDg3NjExRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzQyMTc5MjI0MDBFMjg2MDAyQjMwM0QgLyog
TG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQUMyMTRD
NjAyNzAwMTZCODQ3IC8qIExvY2FsQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdEQ0VEQUQyMTRDNjAyQzAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdEQ0VEQUUyMTRDNjAzMzAwMTZCODQ3IC8qIExvY2FsU2VydmljZS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggODNlZWQwYjgwNDdmZjQ2MDUzOWMwN2RjYmRkMDM2NWYwNjExNWYyNC4uOWJmOWM2NjIx
MGE4OTE2Njg0NGY3OGMxZmVkZDhkNTczZWNmODMyYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTAyLTIxICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJ
bXBsZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBCZXNpZGVzIGFkZGluZyBBUEkgdGVzdHMsIHRoaXMgcGF0Y2ggYWxzbyB0
ZWFjaGVzIFRlc3RXZWJLaXRBUEkgdG8gdXNlIHJlc3RyaWN0ZWQgZW50aXRsZW1lbnRzLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09T
LmVudGl0bGVtZW50czoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rl
c3RXZWJLaXRBUEkueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAo
LVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnVwZGF0ZVdlYkF1dGhl
bnRpY2F0aW9uUGFuZWw6XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVs
RGVsZWdhdGUgcGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFuZWw6
dmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sOiBDb3Bp
ZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxp
Y2F0ZS1jcmVkZW50aWFsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJv
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbDogQWRkZWQuCisKIDIw
MjAtMDItMjEgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQXBwLWJvdW5kIGRvbWFpbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgTmV0d29yayBTZXNz
aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmln
dXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHMKaW5kZXggZWEwYzFmN2M0
NzRhMjVjNzEwYzM4NWRkNjhiYzk0ZTgyMDkwYTcxMC4uYTlmOWNkZjA0YzJmYmJkMDJlM2EyZWVm
MjI2MjQ3YWU2ZWI5NjIzOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cworKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1lbnRz
CkBAIC0yLDYgKzIsMTAgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQg
UExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEu
MC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KKwk8a2V5PmtleWNoYWluLWFj
Y2Vzcy1ncm91cHM8L2tleT4KKwk8YXJyYXk+CisJCTxzdHJpbmc+Y29tLmFwcGxlLlRlc3RXZWJL
aXRBUEk8L3N0cmluZz4KKwk8L2FycmF5PgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBv
cmFyeS1leGNlcHRpb24uc2JwbDwva2V5PgogCTxhcnJheT4KIAkJPHN0cmluZz4oYWxsb3cgbWFj
aC1pc3N1ZS1leHRlbnNpb24gKHJlcXVpcmUtYWxsIChleHRlbnNpb24tY2xhc3MgJnF1b3Q7Y29t
LmFwcGxlLndlYmtpdC5leHRlbnNpb24ubWFjaCZxdW90OykpKTwvc3RyaW5nPgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29u
ZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhj
Y29uZmlnCmluZGV4IDMwYThjYWYwYzI0NzBkNjc2YjZkY2UzNjIxZjA5YjA0YWM3OTBkMzEuLmNh
OGUxNzE1YWNlMWM2M2E2MGQ4YjQ1YzFjMWZiNTcxODBkM2VmZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25m
aWcKQEAgLTY5LDMgKzY5LDEwIEBAIENPREVfU0lHTl9FTlRJVExFTUVOVFNbc2RrPWlwaG9uZSpd
ID0gQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lCiBDT0RFX1NJR05f
RU5USVRMRU1FTlRTW3Nkaz1tYWNvc3gqXSA9IENvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkt
bWFjT1MuZW50aXRsZW1lbnRzOwogCiBTVFJJUF9TVFlMRSA9IGRlYnVnZ2luZzsKKworQ09ERV9T
SUdOX0lERU5USVRZW3Nkaz1tYWNvc3gqXSA9ICQoQ09ERV9TSUdOX0lERU5USVRZXyQoQ09ORklH
VVJBVElPTikpOworQ09ERV9TSUdOX0lERU5USVRZX0RlYnVnID0gJChDT0RFX1NJR05fSURFTlRJ
VFlfJChVU0VfSU5URVJOQUxfU0RLKSk7CitDT0RFX1NJR05fSURFTlRJVFlfUmVsZWFzZSA9ICQo
Q09ERV9TSUdOX0lERU5USVRZXyQoVVNFX0lOVEVSTkFMX1NESykpOworQ09ERV9TSUdOX0lERU5U
SVRZX1lFUyA9ICQoV0tfRU5HSU5FRVJJTkdfQ09ERV9TSUdOX0lERU5USVRZKTsKK0NPREVfU0lH
Tl9JREVOVElUWV9Qcm9kdWN0aW9uID0gJChDT0RFX1NJR05fSURFTlRJVFlfUHJvZHVjdGlvbl8k
KFVTRV9JTlRFUk5BTF9TREspKTsKK0NPREVfU0lHTl9JREVOVElUWV9Qcm9kdWN0aW9uX1lFUyA9
IC07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU0MTU3ZjY4OGQ5ZDBiYjhmZTcxY2RhYjg5
YmM4N2IwZGNmMTNhNDUuLmNmMjUyM2UyYzMwNWNiMjFmYTE4ZmJhYmUyMTI4MjNmNzVlYjM1Y2Ig
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDksNiArMzQ5LDEwIEBACiAJCTU3MzI1NUE1
MjIxMzlCQzcwMDM5NkFFOCAvKiBoZWxsb3dvcmxkLndlYmFyY2hpdmUgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMjU1QTQyMjEzOUI5MDAw
Mzk2QUU4IC8qIGhlbGxvd29ybGQud2ViYXJjaGl2ZSAqLzsgfTsKIAkJNTczMjU1QTYyMjEzOUJD
NzAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzI1NUEyMjIxMzlCOEYwMDM5NkFF
OCAvKiBsb2FkLXdlYi1hcmNoaXZlLTEuaHRtbCAqLzsgfTsKIAkJNTczMjU1QTcyMjEzOUJDNzAw
Mzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzI1NUEzMjIxMzlCOTAwMDM5NkFFOCAv
KiBsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCAqLzsgfTsKKwkJNTc0MjE3ODgyNDAwQUMyNTAwMkIz
MDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQy
MTc4NzI0MDBBQkZEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC1sYS1lcnJvci5odG1sICovOyB9OworCQk1NzQyMTc4QTI0MDBBRUQ4MDAyQjMwM0QgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3NDIxNzg5MjQwMEFFRDAwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgKi87IH07CisJCTU3NDIxNzhDMjQw
MENENDcwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
NDIxNzhCMjQwMENEMkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1sYS5odG1sICovOyB9OworCQk1NzQyMTc4RTI0MDBEMkRGMDAyQjMwM0QgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAv
KiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi87IH07CiAJCTU3
NEY1NUQyMjA0RDQ3RjAwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzRGNTVEMDIwNEQ0NzFDMDAy
OTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovOyB9OwogCQk1NzU4NTk3RjIzQTI1MjdBMDBD
NzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1ODU5N0UyM0EyNTI3QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNw
cCAqLzsgfTsKIAkJNTc1ODU5ODQyM0MzQzNBNDAwQzc0NTcyIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQtcmV0cmllcy1lcnJvci5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTgzMjND
M0MzNjIwMEM3NDU3MiAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1w
aW4tZ2V0LXJldHJpZXMtZXJyb3IuaHRtbCAqLzsgfTsKQEAgLTE1MTcsNiArMTUyMSw3IEBACiAJ
CQkJNTc4REE0NEUyM0VDRDI4QjAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTU3MEQyNkZDMjNDM0Y4NzAwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQtcGluLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc2
NjNERUMyMzRGMUY5MzAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9u
LWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTU3NDIxNzhDMjQwMENENDcwMDJC
MzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCTU3OTgzMzkyMjM2OEZBMzcwMDhFNTU0NyAvKiB3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTU3NjYzREVBMjM0RUE2NkQwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGlj
YXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1
Nzc0NTREMjIzNTlCQjAxMDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24tdTJmLW5vLWNyZWRlbnRpYWxzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNTMx
LDYgKzE1MzYsOSBAQAogCQkJCTU3OERBNDRBMjNFQ0QxODYwMDI0NjAxMCAvKiB3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3MEQyNkY2MjNDM0QzMzAwMEQ1Q0Y2NyAvKiB3
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQk1Nzk4MzM3RTIzNjAxOUE0MDA4RTU1NDcgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJ
CQk1NzQyMTc4QTI0MDBBRUQ4MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAorCQkJCTU3NDIxNzg4MjQwMEFDMjUwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTc0
MjE3OEUyNDAwRDJERjAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4NjFDODkyNTlEMDBB
NTUyOUYgLyogd2ViZm9udC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTUxNzE0RUI0
MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTUxNzE0RUI1MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9j
ZXNzS2lsbElEQkNsZWFudXAtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTk2MSw2
ICsxOTY5LDExIEBACiAJCTU3MzI1NUEzMjIxMzlCOTAwMDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNo
aXZlLTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzI1NUE0MjIxMzlCOTAwMDM5NkFFOCAvKiBoZWxsb3dv
cmxkLndlYmFyY2hpdmUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlLmJwbGlzdDsgcGF0aCA9IGhlbGxvd29ybGQud2ViYXJjaGl2ZTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczNUYwMjUxRjNBNEVBNjAwMEVFODAxIC8qIFRlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gIlRlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLWVycm9yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS1lcnJvci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTc0MjE3ODkyNDAwQUVEMDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTc0MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWxhLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzQyMTc4RjI0MDBENTREMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NEY1NUQwMjA0RDQ3MUMwMDI5
NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5LmZy
YW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJNTc1ODU5N0QyM0EyNTI3QTAwQzc0NTcy
IC8qIEN0YXBQaW5UZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN0YXBQaW5UZXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTg1OTdFMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGlu
VGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdGFwUGluVGVzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zNTc5LDYgKzM1OTIsNyBAQAogCQkJCTU3OERBNDREMjNFQ0Qy
NjEwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLWlu
dmFsaWQtZXJyb3ItcmV0cnkuaHRtbCAqLywKIAkJCQk1NzBEMjZGQjIzQzNGODY1MDBENUNGNjcg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi5odG1sICovLAogCQkJ
CTU3NjYzREVCMjM0RjFGODAwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1oaWQuaHRtbCAqLywKKwkJCQk1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLywKIAkJCQk1Nzk4MzM3QjIzNUVC
NjVDMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRp
cGxlLXRhZ3MuaHRtbCAqLywKIAkJCQk1NzY2M0RFOTIzNEVBNjBCMDBFODVFMDkgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwgKi8sCiAJCQkJNTc3NDU0RDEyMzU5
QkFENTAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLXUyZi1uby1j
cmVkZW50aWFscy5odG1sICovLApAQCAtMzU5Myw2ICszNjA3LDEwIEBACiAJCQkJNTc4REE0NDky
M0VDRDE1NTAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlk
LXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0bWwgKi8sCiAJCQkJNTcwRDI2RjUyM0MzRDMyNzAw
RDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi5odG1s
ICovLAogCQkJCTU3OTgzMzdEMjM2MDE5NkQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWhpZC5odG1sICovLAorCQkJCTU3NDIxNzg5MjQwMEFFRDAwMDJCMzAz
RCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVk
ZW50aWFsLmh0bWwgKi8sCisJCQkJNTc0MjE3ODcyNDAwQUJGRDAwMkIzMDNEIC8qIHdlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCAqLywKKwkJCQk1NzQyMTc4
RDI0MDBEMjZDMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS5odG1sICovLAorCQkJCTU3NDIxNzhGMjQwMEQ1NEQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcy
M0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjMx
Q0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgKi8sCiAJ
CQkJNTEyMEM4M0IxRTY3NEUzNTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRo
cy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDA4MzNj
NDk4OWFiYzNhYTM0YTNjYTY4ODMxZDA0YWY0MDYyZjM2ZTMuLjA4YzJlNWVmOGY0MGNhYTU2M2Ni
MmIwYmUzMWZjMWFjZTk2ZDMxNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgor
I2ltcG9ydCA8TG9jYWxBdXRoZW50aWNhdGlvbi9Mb2NhbEF1dGhlbnRpY2F0aW9uLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJ
RGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVy
ZS5oPgpAQCAtMzksNiArNDAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JhbmRv
bU51bWJlci5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogI2ltcG9y
dCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIHN0YXRpYyBib29sIHdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSBmYWxzZTsKQEAgLTQ5LDkgKzUxLDE4IEBAIHN0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVOb0NyZWRlbnRpYWxzRm91bmQgPSBm
YWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5CbG9ja2Vk
ID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlUElOQXV0
aEJsb2NrZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRh
dGVQSU5JbnZhbGlkID0gZmFsc2U7CitzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlTEFFcnJvciA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5l
bFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0
aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFsID0gZmFsc2U7CiBzdGF0aWMgYm9v
bCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKK3N0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyID0gZmFsc2U7CiBzdGF0aWMg
U3RyaW5nIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxQaW47CiBzdGF0aWMgQk9PTCB3ZWJBdXRoZW50
aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUgPSBOTzsKK3N0YXRpYyBTdHJpbmcgdGVzdEVTMjU2
UHJpdmF0ZUtleUJhc2U2NCA9CisgICAgIkJEai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBn
RnBzakYvUW0xNzQ5VkJKUGdxVUl3ZmhXSEo5MW5iN1UiCisgICAgIlBINzZjMCtXRk96WktzbFB5
eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVuZm5CZ0VWRmg1emV2Ky94cEhRSXZ1cTYiCisgICAgIlJR
PT0iOworc3RhdGljIFN0cmluZyB0ZXN0VXNlcmhhbmRsZUJhc2U2NCA9ICJBQUVDQXdRRkJnY0lD
UT09IjsKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDog
TlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4KIEBlbmQKQEAgLTg0
LDYgKzk1LDE4IEBAIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilw
YW5lbCB1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOihfCiAgICAgICAgIHdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICBpZiAodXBkYXRlID09IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVy
cm9yKSB7CisgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodXBkYXRlID09IF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWwpIHsKKyAgICAgICAgd2Vi
QXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCA9IHRydWU7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHVwZGF0ZSA9PSBfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWwpIHsKKyAgICAgICAgd2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFsID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIH0KIAogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVs
IGRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGlj
YXRpb25SZXN1bHQpcmVzdWx0CkBAIC0xMTEsNiArMTM0LDExIEBAIC0gKHZvaWQpcGFuZWw6KF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1Jl
dHJpZXM6CiAKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5l
bCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBpZiAocmVzcG9uc2VzLmNvdW50ID09IDEpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IEVYUEVDVF9FUShyZXNwb25zZXMuY291bnQsIDJ1bCk7CiAgICAgZm9yIChfV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpyZXNwb25zZSBpbiByZXNwb25zZXMpIHsKICAgICAg
ICAgRVhQRUNUX1RSVUUoW3Jlc3BvbnNlLm5hbWUgaXNFcXVhbDpAImpvaG5wc21pdGhAZXhhbXBs
ZS5jb20iXSB8fCBbcmVzcG9uc2UubmFtZSBpc0VxdWFsOkAiIl0pOwpAQCAtMTIzLDYgKzE1MSwx
MyBAQCAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2Vs
ZWN0QXNzZXJ0aW9uUmVzcG9uc2U6KE5TQXJyYQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3Bv
bnNlc1tpbmRleF0pOwogfQogCistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsICopcGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9s
UmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAq
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlV
c2VyID0gdHJ1ZTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFtbTEFDb250ZXh0IGFsbG9j
XSBpbml0XSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dC5nZXQoKSk7Cit9CisKIEBl
bmQKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbEZha2VEZWxlZ2F0ZSA6
IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+CkBAIC0yMzEsNiAr
MjY2LDI0IEBAIHN0YXRpYyBfV0tFeHBlcmltZW50YWxGZWF0dXJlICp3ZWJBdXRoZW50aWNhdGlv
bkV4cGVyaW1lbnRhbEZlYXR1cmUoKQogICAgIHJldHVybiB0aGVGZWF0dXJlLmdldCgpOwogfQog
CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgUExBVEZPUk0oSU9TKQorc3RhdGljIF9X
S0V4cGVyaW1lbnRhbEZlYXR1cmUgKndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9y
RXhwZXJpbWVudGFsRmVhdHVyZSgpCit7CisgICAgc3RhdGljIFJldGFpblB0cjxfV0tFeHBlcmlt
ZW50YWxGZWF0dXJlPiB0aGVGZWF0dXJlOworICAgIGlmICh0aGVGZWF0dXJlKQorICAgICAgICBy
ZXR1cm4gdGhlRmVhdHVyZS5nZXQoKTsKKworICAgIE5TQXJyYXkgKmZlYXR1cmVzID0gW1dLUHJl
ZmVyZW5jZXMgX2V4cGVyaW1lbnRhbEZlYXR1cmVzXTsKKyAgICBmb3IgKF9XS0V4cGVyaW1lbnRh
bEZlYXR1cmUgKmZlYXR1cmUgaW4gZmVhdHVyZXMpIHsKKyAgICAgICAgaWYgKFtmZWF0dXJlLmtl
eSBpc0VxdWFsOkAiV2ViQXV0aGVudGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFbmFibGVkIl0p
IHsKKyAgICAgICAgICAgIHRoZUZlYXR1cmUgPSBmZWF0dXJlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRoZUZlYXR1cmUuZ2V0KCk7Cit9CisjZW5k
aWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgUExBVEZPUk0oSU9TKQorCiBzdGF0aWMg
dm9pZCByZXNldCgpCiB7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbiA9IGZhbHNlOwpA
QCAtMjQxLDkgKzI5NCwxMyBAQCBzdGF0aWMgdm9pZCByZXNldCgpCiAgICAgd2ViQXV0aGVudGlj
YXRpb25QYW5lbFVwZGF0ZVBJTkJsb2NrZWQgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlv
blBhbmVsVXBkYXRlUElOQXV0aEJsb2NrZWQgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlv
blBhbmVsVXBkYXRlUElOSW52YWxpZCA9IGZhbHNlOworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVMQUVycm9yID0gZmFsc2U7CisgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCA9IGZhbHNlOworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVMQU5vQ3JlZGVudGlhbCA9IGZhbHNlOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDYW5jZWxJbW1lZGlhdGVseSA9IGZhbHNlOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxQ
aW4gPSBlbXB0eVN0cmluZygpOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhh
bmRsZSA9IE5POworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyID0gZmFsc2U7
CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrUGFuZWwoX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAq
cGFuZWwsIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJRCwgTlNBcnJheSAqdHJhbnNwb3J0cywgX1dL
V2ViQXV0aGVudGljYXRpb25UeXBlIHR5cGUpCkBAIC0yNzcsNiArMzM0LDU2IEBAIHN0YXRpYyB2
b2lkIGNoZWNrRnJhbWVJbmZvKFdLRnJhbWVJbmZvICpmcmFtZSwgYm9vbCBpc01haW5GcmFtZSwg
TlNTdHJpbmcgKnVybCwKICAgICBFWFBFQ1RfRVEoZnJhbWUud2ViVmlldywgd2ViVmlldyk7CiB9
CiAKK2Jvb2wgYWRkS2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNlNjQs
IGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VySGFuZGxlQmFzZTY0KQorewor
ICAgIE5TRGljdGlvbmFyeSogb3B0aW9ucyA9IEB7CisgICAgICAgIChpZClrU2VjQXR0cktleVR5
cGU6IChpZClrU2VjQXR0cktleVR5cGVFQ1NFQ1ByaW1lUmFuZG9tLAorICAgICAgICAoaWQpa1Nl
Y0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAorICAgICAgICAoaWQp
a1NlY0F0dHJLZXlTaXplSW5CaXRzOiBAMjU2LAorICAgIH07CisgICAgQ0ZFcnJvclJlZiBlcnJv
clJlZiA9IG51bGxwdHI7CisgICAgYXV0byBrZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVdpdGhE
YXRhKAorICAgICAgICAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFkb3B0TlMoW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzpwcml2YXRlS2V5QmFzZTY0IG9wdGlvbnM6TlNE
YXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAg
ICAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKW9wdGlvbnMsCisgICAgICAgICZlcnJvclJlZgor
ICAgICkpOworICAgIGlmIChlcnJvclJlZikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
TlNEaWN0aW9uYXJ5KiBhZGRRdWVyeSA9IEB7CisgICAgICAgIChpZClrU2VjVmFsdWVSZWY6IChp
ZClrZXkuZ2V0KCksCisgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCisg
ICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBycElkLAorICAgICAgICAoaWQpa1NlY0F0dHJBcHBs
aWNhdGlvblRhZzogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVk
U3RyaW5nOnVzZXJIYW5kbGVCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0lnbm9y
ZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0KCksCisgICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc2li
bGU6IChpZClrU2VjQXR0ckFjY2Vzc2libGVBZnRlckZpcnN0VW5sb2NrLAorI2lmIEhBVkUoREFU
QV9QUk9URUNUSU9OX0tFWUNIQUlOKQorICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9u
S2V5Y2hhaW46IEBZRVMKKyNlbHNlCisgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVT
CisjZW5kaWYKKyAgICB9OworICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1BZGQoKF9fYnJp
ZGdlIENGRGljdGlvbmFyeVJlZilhZGRRdWVyeSwgTlVMTCk7CisgICAgaWYgKHN0YXR1cykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgY2xlYW5V
cEtleWNoYWluKGNvbnN0IFN0cmluZyYgcnBJZCkKK3sKKyAgICBOU0RpY3Rpb25hcnkqIGRlbGV0
ZVF1ZXJ5ID0gQHsKKyAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKKyAg
ICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHJwSWQsCisgICAgICAgIChpZClrU2VjQXR0ckFjY2Vz
c2libGU6IChpZClrU2VjQXR0ckFjY2Vzc2libGVBZnRlckZpcnN0VW5sb2NrLAorI2lmIEhBVkUo
REFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQorICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0
aW9uS2V5Y2hhaW46IEBZRVMKKyNlbHNlCisgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBA
WUVTCisjZW5kaWYKKyAgICB9OworICAgIFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdlIENGRGljdGlv
bmFyeVJlZilkZWxldGVRdWVyeSk7Cit9CisKIH0gLy8gbmFtZXNhcGNlOwogCiBURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIE5vUGFuZWxUaW1lb3V0KQpAQCAtMTA3Niw2ICsxMTgzLDEyNCBA
QCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE11bHRpcGxlQWNjb3VudHMpCiAgICAgRVhQ
RUNUX0VRKFtbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlckhhbmRs
ZSJdIGlzRXF1YWxUb1N0cmluZzpAIjxudWxsPiJdLCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVs
bFVzZXJIYW5kbGUpOwogfQogCisvLyBGb3IgbWFjT1MsIG9ubHkgaW50ZXJuYWwgYnVpbGRzIGNh
biBzaWduIGtleWNoYWluIGVudGl0bGVtbmV0cworLy8gd2hpY2ggYXJlIHJlcXVpcmVkIHRvIHJ1
biBsb2NhbCBhdXRoZW50aWNhdG9yIHRlc3RzLgorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
IHx8IFBMQVRGT1JNKElPUykKKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUVycm9y
KQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1tYWtl
LWNyZWRlbnRpYWwtbGEtZXJyb3IiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9
IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJ
bkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NG
b3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5h
YmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1l
bnRhbEZlYXR1cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5h
YmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0
aGVudGljYXRvckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cisg
ICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCld
XTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yKTsK
K30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUR1cGxpY2F0ZUNyZWRlbnRpYWwp
Cit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpj
b25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlv
bldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMi
IGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRp
Y2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRp
Y2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
KworICAgIEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJh
c2U2NCwgIiIsIHRlc3RVc2VyaGFuZGxlQmFzZTY0KSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRp
bDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFEdXBsaWNhdGVDcmVkZW50aWFs
KTsKKyAgICBjbGVhblVwS2V5Y2hhaW4oIiIpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwsIExBTm9DcmVkZW50aWFsKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5T
VVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNv
bmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9u
V2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIg
Y29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGlj
YXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGlj
YXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwor
CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0
ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBk
YXRlTEFOb0NyZWRlbnRpYWwpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExB
TWFrZUNyZWRlbnRpYWxOdWxsRGVsZWdhdGUpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5Q
dHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBh
dXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmln
dXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRl
cm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1
dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1
dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKKyAgICBbZGVsZWdhdGUgc2V0SXNOdWxsOnRydWVdOworICAgIFt3
ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07Cisg
ICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CisgICAgY2xlYW5VcEtl
eWNoYWluKCIiKTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVk
ZW50aWFsKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0g
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9
IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJ
bkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NG
b3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5h
YmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1l
bnRhbEZlYXR1cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5h
YmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0
aGVudGljYXRvckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cisg
ICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCld
XTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyKTsKKyAg
ICBjaGVja1BhbmVsKFtkZWxlZ2F0ZSBwYW5lbF0sIEAiIiwgQFthZG9wdE5TKFtbTlNOdW1iZXIg
YWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCXSkuZ2V0
KCksIGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGlj
YXRpb25UcmFuc3BvcnRJbnRlcm5hbF0pLmdldCgpXSwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBl
Q3JlYXRlKTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKK30K
KworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUdldEFzc2VydGlvbikKK3sKKyAgICBy
ZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1s
YSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJv
Y2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmlt
ZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmlt
ZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhwZXJpbWVu
dGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGlj
YXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hh
aW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIsIHRlc3RVc2VyaGFuZGxlQmFzZTY0KSk7
CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0
ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVy
aWZ5VXNlcik7CisgICAgY2hlY2tQYW5lbChbZGVsZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRvcHRO
UyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5z
cG9ydFVTQl0pLmdldCgpLCBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9X
S1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0SW50ZXJuYWxdKS5nZXQoKV0sIF9XS1dlYkF1dGhl
bnRpY2F0aW9uVHlwZUdldCk7CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVk
ZWQhIl07CisgICAgY2xlYW5VcEtleWNoYWluKCIiKTsKK30KKworI2VuZGlmIC8vIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspIHx8IFBMQVRGT1JNKElPUykKKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1h
c3NlcnRpb24tbGEuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmEz
YzViYTQ0YjAyZmIxMDUyOWQwMTRkZjVkZTY0MjhkNDk4MGJmCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1sYS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0
IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxv
Y2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFs
c2UgfSB9KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0
LmZvY3VzKCk7IH0pOworICAgIH0KKworICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgIHB1
YmxpY0tleTogeworICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCisg
ICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAg
IC8vIGNvbnNvbGUubG9nKCJTdWNjZWVkZWQhIik7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJTdWNjZWVkZWQhIik7CisgICAg
fSwgZXJyb3IgPT4geworICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnJvci5tZXNzYWdlKTsKKyAg
ICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3Nh
Z2UoZXJyb3IubWVzc2FnZSk7CisgICAgfSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFs
LWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFhNTk2NTA2YTUzNGIy
NWYwYmM2NTg4OTYxYmUzZGRlYjQ0YjQxYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzxpbnB1
dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBjb25zdCB0ZXN0Q3JlZGVu
dGlhbElkSGV4ID0gIjQ4QzQ5NzFFNzgwNUVFMTEwRUIwNDk0MEVGNzBCNzQ1OEZCQzZEMUUiOwor
ICAgIGZ1bmN0aW9uIGhleFN0cmluZ1RvVWludDhBcnJheShoZXhTdHJpbmcpCisgICAgeworICAg
ICAgICBpZiAoaGV4U3RyaW5nLmxlbmd0aCAlIDIgIT0gMCkKKyAgICAgICAgICAgIHRocm93ICJJ
bnZhbGlkIGhleFN0cmluZyI7CisgICAgICAgIHZhciBhcnJheUJ1ZmZlciA9IG5ldyBVaW50OEFy
cmF5KGhleFN0cmluZy5sZW5ndGggLyAyKTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGhleFN0cmluZy5sZW5ndGg7IGkgKz0gMikgeworICAgICAgICAgICAgdmFyIGJ5dGVWYWx1ZSA9
IHBhcnNlSW50KGhleFN0cmluZy5zdWJzdHIoaSwgMiksIDE2KTsKKyAgICAgICAgICAgIGlmIChi
eXRlVmFsdWUgPT0gTmFOKQorICAgICAgICAgICAgICAgIHRocm93ICJJbnZhbGlkIGhleFN0cmlu
ZyI7CisgICAgICAgICAgICBhcnJheUJ1ZmZlcltpLzJdID0gYnl0ZVZhbHVlOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIH0KKworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2Nl
cHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2Vz
dHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOworICAgIH0KKworICAgIGNvbnN0IG9wdGlv
bnMgPSB7CisgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgcnA6IHsKKyAgICAgICAg
ICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB1
c2VyOiB7CisgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAg
ICAgICAgICBpZDogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgICAgIGRpc3BsYXlO
YW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBjaGFsbGVuZ2U6
IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5
cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50
aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogaGV4U3RyaW5nVG9VaW50OEFycmF5KHRl
c3RDcmVkZW50aWFsSWRIZXgpIH1dLAorICAgICAgICAgICAgdGltZW91dDogMTAwLAorICAgICAg
ICB9CisgICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyk7
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYxNjEyMWJhNGNhMmRi
NTMzZGZlNWQyYmYwMzMwNGNkYTUyNDYyZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC1sYS1lcnJvci5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBp
ZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAg
ICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2Fs
OiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNl
IH0gfSk7CisgICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5m
b2N1cygpOyB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgbmFtZTogImxvY2Fs
aG9zdCIsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAg
ICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgaWQ6IG5ldyBVaW50
OEFycmF5KDE2KSwKKyAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiks
CisgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFs
ZzogLTM1IH0sIHsgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC0yNTcgfV0sIC8vIEVTMzg0LCBS
UzI1NgorICAgICAgICAgICAgdGltZW91dDogMTAwLAorICAgICAgICB9CisgICAgfTsKKworICAg
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyk7Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTI3ZTI1Y2EyZGEyYmVkNGQ4OWE4MGIwMjdiNmEwOTU2MGFiMmM1NgotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sCkBAIC0wLDAgKzEsNjYgQEAK
KzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBjb25zdCB0ZXN0
RVMyNTZQcml2YXRlS2V5QmFzZTY0ID0KKyAgICAgICAgIkJEai96eFNrektnYUJ1UzNjZFdERjU1
OG9mOEFhSXBnRnBzakYvUW0xNzQ5VkJKUGdxVUl3ZmhXSEo5MW5iN1UiICsKKyAgICAgICAgIlBI
NzZjMCtXRk96WktzbFB5eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVuZm5CZ0VWRmg1emV2Ky94cEhR
SXZ1cTYiICsKKyAgICAgICAgIlJRPT0iOworICAgIGNvbnN0IHRlc3RBdHRlc3RhdGlvbkNlcnRp
ZmljYXRlQmFzZTY0ID0KKyAgICAgICAgIk1JSUI2akNDQVpDZ0F3SUJBZ0lHQVdIQXhjanZNQW9H
Q0NxR1NNNDlCQU1DTUZNeEp6QWxCZ05WQkFNTUhrSmgiICsKKyAgICAgICAgImMybGpJRUYwZEdW
emRHRjBhVzl1SUZWelpYSWdVM1ZpSUVOQk1URVRNQkVHQTFVRUNnd0tRWEJ3YkdVZ1NXNWoiICsK
KyAgICAgICAgIkxqRVRNQkVHQTFVRUNBd0tRMkZzYVdadmNtNXBZVEFlRncweE9EQXlNak13TXpN
M01qSmFGdzB4T0RBeU1qUXciICsKKyAgICAgICAgIk16UTNNakphTUdveElqQWdCZ05WQkFNTUdU
QXdNREE0TURFd0xUQXdNRUUwT1VFeU16QkJNREl4TTBFeEdqQVkiICsKKyAgICAgICAgIkJnTlZC
QXNNRVVKQlFTQkRaWEowYVdacFkyRjBhVzl1TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1S
TXciICsKKyAgICAgICAgIkVRWURWUVFJREFwRFlXeHBabTl5Ym1saE1Ga3dFd1lIS29aSXpqMENB
UVlJS29aSXpqMERBUWNEUWdBRXZDamUiICsKKyAgICAgICAgIlB6cjZTZzc2WE1vSHVHYWJQYUc2
empwTEZMOFpkOC83NEhoNVBjTDJacStvK2Y3RU5YWCs3bkVYWFl0MFM4VXgiICsKKyAgICAgICAg
IjVUSVJ3NGhnYmZ4WFFiV0xFcU01TURjd0RBWURWUjBUQVFIL0JBSXdBREFPQmdOVkhROEJBZjhF
QkFNQ0JQQXciICsKKyAgICAgICAgIkZ3WUpLb1pJaHZkalpBZ0NCQW93Q0tFR0JBUjBaWE4wTUFv
R0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUFsSzhBOEkiICsKKyAgICAgICAgIms0M1Ridkt1WUdIWnMx
RFRncFR3bUtUQnZJVXc1YndnWnVZbkFpRUF0dUpqRExLYkdOSkFKRk1pNWRlRUJxbm8iICsKKyAg
ICAgICAgInBCVENxYmZiREpjY2Z5UXBqblk9IjsKKyAgICBjb25zdCB0ZXN0QXR0ZXN0YXRpb25J
c3N1aW5nQ0FDZXJ0aWZpY2F0ZUJhc2U2NCA9CisgICAgICAgICJNSUlDSXpDQ0FhaWdBd0lCQWdJ
SWVOamhHOXRuREdnd0NnWUlLb1pJemowRUF3SXdVekVuTUNVR0ExVUVBd3dlIiArCisgICAgICAg
ICJRbUZ6YVdNZ1FYUjBaWE4wWVhScGIyNGdWWE5sY2lCU2IyOTBJRU5CTVJNd0VRWURWUVFLREFw
QmNIQnNaU0JKIiArCisgICAgICAgICJibU11TVJNd0VRWURWUVFJREFwRFlXeHBabTl5Ym1saE1C
NFhEVEUzTURReU1EQXdOREl3TUZvWERUTXlNRE15IiArCisgICAgICAgICJNakF3TURBd01Gb3dV
ekVuTUNVR0ExVUVBd3dlUW1GemFXTWdRWFIwWlhOMFlYUnBiMjRnVlhObGNpQlRkV0lnIiArCisg
ICAgICAgICJRMEV4TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1STXdFUVlEVlFRSURBcERZ
V3hwWm05eWJtbGhNRmt3IiArCisgICAgICAgICJFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNE
UWdBRW9TWi8xdDllQkFFVnA1YThQclhhY21iR2I4ek5DMVgzIiArCisgICAgICAgICJTdExJOVlP
NlkwQ0w3YmxIbVNHbWpHV1R3RDRRK2kwSjJCWTMrYlBIVEdSeUE5akdCM01TYmFObU1HUXdFZ1lE
IiArCisgICAgICAgICJWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZCZ05WSFNNRUdEQVdnQlNENWFN
aG5yQjB3L2xoa1AyWFRpTVFkcVNqIiArCisgICAgICAgICI4akFkQmdOVkhRNEVGZ1FVNW1XZjFE
WUxUWFVkUTl4bU9IL3VxZU5TRDgwd0RnWURWUjBQQVFIL0JBUURBZ0VHIiArCisgICAgICAgICJN
QW9HQ0NxR1NNNDlCQU1DQTJrQU1HWUNNUUMzTTM2MExMdEpTNjBaOXEzdlZqSnhNZ01jRlExcm9H
VFVjS3F2IiArCisgICAgICAgICJXKzRoSjRDZUpqeVNYVGdxNklFSG4veVdhYjRDTVFDbTVObks2
U09TSytBcVd1bTlsTDg3VzNFNkFBMWYyVHZKIiArCisgICAgICAgICIvaGdvay8zNGpyOTNuaFM4
N3RPUU5keERTOHp5aXF3PSI7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAg
ICAgICAgbG9jYWw6IHsKKyAgICAgICAgICAgICAgICBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1
ZSwKKyAgICAgICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICBwcml2YXRlS2V5QmFzZTY0OiB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0LAorICAgICAg
ICAgICAgICAgIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0dGVzdGF0aW9uQ2VydGlmaWNh
dGVCYXNlNjQsCisgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2
NDogdGVzdEF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQgfX0pOworICAgICAg
ICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7Cisg
ICAgfQorCisgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7CisgICAg
ICAgICAgICBycDogeworICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAiSm9o
biBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIGlkOiBuZXcgVWludDhBcnJheSgxNiksCisg
ICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAg
cHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAg
ICAgICAgICAgdGltZW91dDogMTAwLAorICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAg
ICAgLy8gY29uc29sZS5sb2coIlN1Y2NlZWRlZCEiKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEiKTsKKyAg
ICB9LCBlcnJvciA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpOwor
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVz
c2FnZShlcnJvci5tZXNzYWdlKTsKKyAgICB9KTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391497</attachid>
            <date>2020-02-23 12:23:21 -0800</date>
            <delta_ts>2020-02-24 10:17:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208087-20200223122320.patch</filename>
            <type>text/plain</type>
            <size>99893</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uMmNlMDBiNjNjNTRkNzc4NTMzYjVkYjY5YzgxYTE1
NWQwOGJmNzgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAyLTIxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmhhbmNlcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgdG8gYWNj
b21tb25kYXRlIHJlc3BvbnNlcworICAgICAgICByZXR1cm5lZCBmcm9tIHRoZSBwbGF0Zm9ybSBh
dXRoZW50aWNhdG9yLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRB
dXRoZW50aWNhdG9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGljYXRv
ckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGlzcGxheU5hbWUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpudW1iZXJPZkNyZWRlbnRp
YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZTo6YWNjZXNzQ29udHJvbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldFNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXREaXNwbGF5TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldE51bWJlck9m
Q3JlZGVudGlhbHMpOgorCiAyMDIwLTAyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUgYWZ0
ZXIgcjI1NjgwOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1NjEwMmJjYzg4Y2FiN2IwNjhiNGY0ZTJiNTk5MmYwNzdk
ZDRiZTMwLi40ZTUxMGI0MDJjMzU2MGQwYTdhMzdiNzc1NDhjOWMyMzc4YTdmODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0wMi0yMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSBmb3IgdGhlIHBs
YXRmb3JtIGF1dGhlbnRpY2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODA4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNjkzMDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGVyZSBpcyB0
aGUgbmV3bHkgYWRkZWQgU1BJOgorICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CisgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yLAorICAgICAgICAg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCwK
KyAgICAgICAgICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlh
bCwKKyAgICAgICAgfTsKKworICAgICAgICB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tX
ZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydCkgeworICAgICAgICAgICAgLi4uCisgICAgICAgICAg
ICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAorICAgICAgICB9OworCisg
ICAgICAgIEBwcm90b2NvbCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2Jq
ZWN0PgorICAgICAgICBAb3B0aW9uYWwKKyAgICAgICAgLi4uCisgICAgICAgIC0gKHZvaWQpcGFu
ZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2VyV2l0aEFjY2Vz
c0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBA
ZW5kCisKKyAgICAgICAgSWxsdXN0cmF0aW9uczoKKyAgICAgICAgMSkgX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbFVwZGF0ZTogdGhyZWUgZXJyb3IgYXJlIGFkZGVkIHRvIGhlbHAgY2xpZW50cyB0
byBpbmZvcm0gdXNlcnMuCisgICAgICAgIGEpIFdLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBRXJyb3I6IEFuIGludGVybmFsIGVycm9yLCBjbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMg
YW5kIHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0KKyAgICAgICAgYXV0aGVudGljYXRpb24gcHJvY2Vz
cy4gVGhpcyBlcnJvciBjYW4gYmUgcmV0dXJuZWQgYXQgYW55IHRpbWUuCisgICAgICAgIGIpIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw6IEl0IG1l
YW5zIGEgY3JlZGVudGlhbCBpcyBmb3VuZCB0byBtYXRjaCBhbiBlbnRyeSBpbiB0aGUKKyAgICAg
ICAgZXhjbHVkZUxpc3QuIENsaWVudHMgc2hvdWxkIGluZm9ybSB1c2VycyBhbmQgdGVybWluYXRl
IHRoZSBwbGF0Zm9ybSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLiBUaGlzIGVycm9yIHdpbGwgb25s
eSBiZQorICAgICAgICByZXR1cm5lZCBkdXJpbmcgbWFrZUNyZWRlbnRpYWwgYW5kIGJlZm9yZSB2
ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2wgZGVsZWdhdGUuCisgICAgICAgIGMpIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlhbDogSXQgbWVhbnMgbm8gY3JlZGVu
dGlhbHMgYXJlIGZvdW5kLiBDbGllbnRzIHNob3VsZCBpbmZvcm0gdXNlcnMgYW5kCisgICAgICAg
IHRlcm1pbmF0ZSB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRpb24gcHJvY2Vzcy4gVGhpcyBlcnJv
ciB3aWxsIG9ubHkgYmUgcmV0dXJuZWQgZHVyaW5nIGdldEFzc2VydGlvbiBhbmQgYmVmb3JlCisg
ICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbCBkZWxlZ2F0ZS4KKworICAgICAgICAy
KSBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydDogX1dLV2ViQXV0aGVudGljYXRpb25UcmFu
c3BvcnRJbnRlcm5hbCBpcyBhZGRlZCBzdWNoIHRoYXQgY2xpZW50cyBjYW4gbGVhcm4gcGxhdGZv
cm0KKyAgICAgICAgYXV0aGVudGljYXRvciB3aWxsIGJlIHVzZWQgZnJvbSBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLnRyYW5zcG9ydHMuCisKKyAgICAgICAgMykgdmVyaWZ5VXNlcldpdGhBY2Nl
c3NDb250cm9sOiBBIGRlbGVnYXRlIHRoYXQgd2lsbCBiZSBjYWxsZWQgZHVyaW5nIG1ha2VDcmVk
ZW50aWFsIG9yIGdldEFzc2VydGlvbiB3aGVuIHRoZSBwbGF0Zm9ybQorICAgICAgICBhdXRoZW50
aWNhdG9yIGlzIGludm9sdmVkLiBUaGlzIGRlbGVnYXRlIGlzIHVzZWQgdG8gb2J0YWluIHVzZXIg
dmVyaWZpY2F0aW9uIGZyb20gYSBMQUNvbnRleHQuIEluIGFkZGl0aW9uLCB0aGUgTEFDb250ZXh0
CisgICAgICAgIHNob3VsZCBldmFsdWF0ZSB0aGUgcGFzc2VkIGFjY2Vzc0NvbnRyb2wsIHN1Y2gg
dGhhdCB0aGUgU0VQIHByb3RlY3RlZCBjcmVkZW50aWFsIHByaXZhdGUga2V5IGNhbiBiZSB1c2Vk
LiBBIHR5cGljYWwKKyAgICAgICAgZXhhbXBsZSB3aWxsIGJlIFtMQUNvbnRleHQgZXZhbHVhdGVB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJh
dGlvblVzZUtleVNpZ24gbG9jYWxpemVkUmVhc29uOnJlcGx5Ol0uCisgICAgICAgIE5vdGVkLCBm
b3IgZ2V0QXNzZXJ0aW9uLCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZSB3aWxsIGJlIGNhbGxlZCBi
ZWZvcmUgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sLiBTbyB1c2VycyBuZWVkIHRvIGJlCisg
ICAgICAgIHByb21wdGVkIHRvIHNlbGVjdCBhIGNyZWRlbnRpYWwgYmVmb3JlIHRoZSB1c2VyIHZl
cmlmaWNhdGlvbi4KKworICAgICAgICBJbiB0aGUgc2NlbmFyaW8gd2hlbiBib3RoIHRoZSBwbGF0
Zm9ybSBhdXRoZW50aWNhdG9yIGFuZCBleHRlcm5hbCBhdXRoZW50aWNhdG9ycyBhcmUgcmVxdWVz
dGVkLiBDbGllbnRzIGFyZSBhZHZpc2VkIHRvCisgICAgICAgIHdhaXQgdW50aWwgdmVyaWZ5VXNl
cldpdGhBY2Nlc3NDb250cm9sIHRvIHNob3cgdGhlIGNvbWJpbmVkIFVJLiBJZiBhbnkgb2YgdGhl
IExBRXJyb3IgaXMgcmVjZWl2ZWQgYmVmb3JlCisgICAgICAgIHZlcmlmeVVzZXJXaXRoQWNjZXNz
Q29udHJvbCwgY2xpZW50cyBjYW4gdGhlbiBvbmx5IHNob3cgdGhlIGV4dGVybmFsIGF1dGhlbnRp
Y2F0b3IgVUkuIEFsc28sIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IgYW5kCisgICAgICAgIGV4dGVy
bmFsIGF1dGhlbnRpY2F0b3JzIGFyZSBiZWluZyBkaXNjb3ZlcmVkIGF0IHRoZSBzYW1lIHRpbWUs
IHdoaWNoIG1lYW5zLCBhIHVzZXIgY2FuIHBsdWcgaW4gYSBzZWN1cml0eSBrZXkgYXQgYW55dGlt
ZS4KKyAgICAgICAgSWYgYSB2YWxpZCByZXNwb25zZSBpcyByZWNlaXZlZCBmcm9tIHRoZSBzZWN1
cml0eSBrZXksIHRoZSB3aG9sZSBjZXJlbW9ueSB3aWxsIGJlIHRlcm1pbmF0ZWQuCisKKyAgICAg
ICAgQmVzaWRlcyBpbnRyb2R1Y2luZyB0aGUgU1BJLCBhbmQgYWxsIHRoZSBwbHVtYmluZ3MgdG8g
bWFrZSBpdCBoYXBwZW4uIFRoaXMgcGF0Y2ggYWxzbzoKKyAgICAgICAgMSkgYWRkcyBMb2NhbEF1
dGhlbnRpY2F0aW9uU1BJLCB3aGljaCBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBM
QUNvbnRleHQgaXMgdW5sb2NrZWQgb3Igbm90OworICAgICAgICAyKSBpbXByb3ZlcyBNb2NrTG9j
YWxDb25uZWN0aW9uIHN1Y2ggdGhhdCBtb2NrIHRlc3RpbmcgY2FuIHN0aWxsIGJlIHJhbi4KKwor
ICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHA6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAoQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06Cisg
ICAgICAgICh3a1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b05TRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0
aGVudGljYXRvckludGVybmFsOjp0b0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TG9j
YWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZCk6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyQXR0ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6
OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2Vu
dGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6Zmls
dGVyUmVzcG9uc2VzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5l
Y3Rpb246OmlzVW5sb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rp
b246OmdldFVzZXJDb25zZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9j
YWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6d2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdl
YktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmZpbHRlclJlc3BvbnNlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3Jl
ZGVudGlhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQg
aGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZS5jcHAKaW5kZXggNWQzMDJmOGI4ZmMzNWRhMWU2Yzk0NmUxMTIxOTY3ZDYyZTAwYTQ5OS4u
NDVlYTFlNWZhNGI0YTZiOGY0MTQ2ODAwZmU5NjE1ZDRhNTJkOGNhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0
ZShSZWY8QQogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAotUmVmPEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50
aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8
dWludDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRh
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB1c2VySGFuZGxlKQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlcmhhbmRsZUJ1ZmZl
cjsKICAgICBpZiAoIXVzZXJIYW5kbGUuaXNFbXB0eSgpKQpAQCAtNDgsNiArNDgsMTYgQEAgUmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVh
dGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhl
bnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZm
ZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1
c2VyaGFuZGxlQnVmZmVyKSwgV1RGOjpudWxsb3B0KTsKIH0KIAorUmVmPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUo
UmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwg
U2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RG
TW92ZSh1c2VySGFuZGxlKSwgYWNjZXNzQ29udHJvbCkpOworfQorCit2b2lkIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6c2V0QXV0aGVudGljYXRvckRhdGEoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSkKK3sKKyAgICBtX2F1dGhlbnRpY2F0b3JEYXRhID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0
b3JEYXRhLnNpemUoKSk7Cit9CisKIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2ln
bmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSkKICAgICA6IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKICAgICAsIG1fYXV0aGVudGljYXRvckRhdGEo
V1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCkBAIC01Niw2ICs2NiwxMyBAQCBBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8
QXJyYXlCdWZmZXI+JgogewogfQogCitBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJl
ZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2wpCisgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShyYXdJZCkpCisgICAg
LCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKKyAgICAsIG1fYWNjZXNzQ29udHJv
bChhY2Nlc3NDb250cm9sKQoreworfQorCiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byBkYXRh
ID0gQXV0aGVudGljYXRvclJlc3BvbnNlOjpkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaAppbmRleCBkNzBhOWNjZjhmMzkxYjBkZDYyYzJhMTE0ZTExNTJmOWY2YzBkNmEyLi4x
MWQ1NDYyODg5NzNiM2IzMTRkYWUxMGNhZGE5Mjc4MTVmZjA5OTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmgKQEAgLTI4LDYgKzI4LDggQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSwzMiArMzcsMzggQEAgY2xhc3MgQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0
ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNh
dG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIHVzZXJIYW5kbGUsIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91
dHB1dHM+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
PiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNl
ckhhbmRsZSwgU2VjQWNjZXNzQ29udHJvbFJlZik7CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCi0gICAgQXJyYXlCdWZmZXIqIGF1dGhl
bnRpY2F0b3JEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5wdHIoKTsg
fQotICAgIEFycmF5QnVmZmVyKiBzaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBtX3NpZ25hdHVy
ZS5wdHIoKTsgfQorICAgIEFycmF5QnVmZmVyKiBhdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXV0aGVudGljYXRvckRhdGEuZ2V0KCk7IH0KKyAgICBBcnJheUJ1ZmZlciogc2ln
bmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmUuZ2V0KCk7IH0KICAgICBBcnJheUJ1
ZmZlciogdXNlckhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckhhbmRsZS5nZXQoKTsgfQor
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlOYW1lOyB9
CisgICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX251bWJl
ck9mQ3JlZGVudGlhbHM7IH0KKyAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wo
KSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc0NvbnRyb2wuZ2V0KCk7IH0KIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0QXV0aGVudGljYXRvckRhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7
CisgICAgdm9pZCBzZXRTaWduYXR1cmUoUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSkgeyBt
X3NpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKTsgfQogICAgIHZvaWQgc2V0TmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQotICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZvaWQgc2V0RGlzcGxheU5hbWUoY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSkgeyBtX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7IH0K
LSAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
TmFtZTsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZDcmVkZW50aWFscyhzaXplX3QgbnVtYmVyT2ZD
cmVkZW50aWFscykgeyBtX251bWJlck9mQ3JlZGVudGlhbHMgPSBudW1iZXJPZkNyZWRlbnRpYWxz
OyB9Ci0gICAgc2l6ZV90IG51bWJlck9mQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX251
bWJlck9mQ3JlZGVudGlhbHM7IH0KIAogcHJpdmF0ZToKICAgICBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxB
cnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKKyAgICBBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYs
IFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gVHlwZTo6QXNzZXJ0aW9uOyB9CiAgICAgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBk
YXRhKCkgY29uc3QgZmluYWw7CiAKLSAgICBSZWY8QXJyYXlCdWZmZXI+IG1fYXV0aGVudGljYXRv
ckRhdGE7Ci0gICAgUmVmPEFycmF5QnVmZmVyPiBtX3NpZ25hdHVyZTsKKyAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG1fYXV0aGVudGljYXRvckRhdGE7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBt
X3NpZ25hdHVyZTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fdXNlckhhbmRsZTsKIAogICAg
IFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZGlzcGxheU5hbWU7CiAgICAgc2l6ZV90IG1f
bnVtYmVyT2ZDcmVkZW50aWFscyB7IDAgfTsKKyAgICBSZXRhaW5QdHI8U2VjQWNjZXNzQ29udHJv
bFJlZj4gbV9hY2Nlc3NDb250cm9sOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50aWNh
dGlvblNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50
aWNhdGlvblNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3YTBmNmQwM2YwY2EyNWM3ZTMwNjEyNTU2NDk1N2Y2
MTBhOGFhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9D
b2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxMb2NhbEF1dGhlbnRpY2F0aW9uL0xvY2FsQXV0
aGVudGljYXRpb24uaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQg
PExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxBdXRoZW50aWNhdGlvbl9Qcml2YXRlLmg+CisKKyNl
bHNlCisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIExBT3B0aW9uKSB7CisgICAgTEFPcHRp
b25Ob3RJbnRlcmFjdGl2ZSwKK307CisKK0BpbnRlcmZhY2UgTEFDb250ZXh0KFByaXZhdGUpIDxO
U1NlY3VyZUNvZGluZz4KKworLSAoTlNEaWN0aW9uYXJ5ICopZXZhbHVhdGVQb2xpY3k6KExBUG9s
aWN5KXBvbGljeSBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zIGVycm9yOihOU0Vycm9y
ICoqKWVycm9yOworCitAZW5kCisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuY3BwCmluZGV4IDBjZGRiY2Y0OTc2MzM5ODI0NzU5ZmVlMWEwNTVhZjU2YWI1
ZjRkNTUuLmU1Y2I0NzM4NjliZjE3ZjQwMzBkODNmZWZkYjQ4ZGM0MmEyMzk2NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRp
b25QYW5lbC5jcHAKQEAgLTUzLDYgKzUzLDggQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbDo6V2Vi
QXV0aGVudGljYXRpb25QYW5lbChjb25zdCBBdXRoZW50aWNhdG9yTWFuYWdlciYgbWFuYWcKICAg
ICAgICAgbV90cmFuc3BvcnRzLnVuY2hlY2tlZEFwcGVuZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpVc2IpOwogICAgIGlmICh0cmFuc3BvcnRzLmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ6Ok5mYykpCiAgICAgICAgIG1fdHJhbnNwb3J0cy51bmNoZWNrZWRBcHBlbmQoQXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6TmZjKTsKKyAgICBpZiAodHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkpCisgICAgICAgIG1fdHJhbnNwb3J0cy51bmNoZWNr
ZWRBcHBlbmQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpOwogfQogCiBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsOjp+V2ViQXV0aGVudGljYXRpb25QYW5lbCgpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IDQ1OTY0NGVlM2U2ZWI2NTFjMjkyZWYzZmI0OWIz
YjRhMjZhYzc2OTguLjhjMzY4NTMzZWEwYjIxNGYwMWJhN2NiZDlkZDViNTljYTUyZTE0ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaApAQCAtMzAsOCArMzAsMTEgQEAKICNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQ
SS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitPQkpDX0NMQVNTIExBQ29u
dGV4dDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOwogfQpAQCAtNTIsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpc21pc3NQYW5lbChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KSBjb25zdCB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4mJiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0IHsgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsgY29tcGxldGlvbkhh
bmRsZXIocmVzcG9uc2VzWzBdKTsgfQorICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCmluZGV4IDQz
MWM2MzNiMGZlYjBiNTUyYTZiOWQxODdlYWQzZDZmYjViY2M4YzIuLmY3MmViMGFlYTNmNDQ1ZTE2
MTkwMTM5NDk0OTM1NzIxOGJjZjQ4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaApAQCAt
MzEsNiArMzEsNyBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xhc3MgTEFDb250
ZXh0OwogQGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xh
c3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIApAQCAtNDYsNiArNDcsOSBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKSB7CiAg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkJsb2NrZWQsCiAgICAgX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkF1dGhCbG9ja2VkLAogICAgIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVMQUVycm9yLAorICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVM
QUR1cGxpY2F0ZUNyZWRlbnRpYWwsCisgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBTm9DcmVkZW50aWFsLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRo
ZW50aWNhdGlvblJlc3VsdCkgewpAQCAtNTYsNiArNjAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgewogdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnQpIHsKICAgICBfV0tXZWJBdXRo
ZW50aWNhdGlvblRyYW5zcG9ydFVTQiwKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9y
dE5GQywKKyAgICBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsLAogfSBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKQEAgLTcx
LDYgKzc2LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRp
b25UeXBlKSB7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFu
ZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OihfV0tXZWJBdXRoZW50
aWNhdGlvblJlc3VsdClyZXN1bHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6KE5TVUludGVnZXIpcmV0
cmllcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2Vy
V2l0aEFjY2Vzc0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAyZWIzMWU4MTJjOTU5OGU4OTg4
NDBiOTU1OGNlMzMyZjJlZDY3OWZmLi4xOTczYjBmNTY0ZDI1MWIyMGNmMjZhMzZhM2E2NGQ4YTI1
MjgyMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNzMsNiArNzMsOCBAQCBz
dGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnQgd2tXZWJBdXRoZW50aWNhdGlvblRy
YW5zcG9ydChXZWJDb3JlOjpBdXRoZQogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRp
b25UcmFuc3BvcnRVU0I7CiAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpOZmM6CiAgICAgICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydE5GQzsK
KyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsOgorICAg
ICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRJbnRlcm5hbDsKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIF9X
S1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCmluZGV4IGQx
NmIxN2Q1ZmM2YmM3OTUyMTRiMjdlODI1N2ZkNmYwMGJkNGM3ZTUuLjkxZDk5ZWQ1MmI2ZGIxZGVm
YWIxNTk2MjQzMTA2NzlmM2NhZDY3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKQEAgLTM0LDYgKzM0
LDkgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmg+CisKK09CSkNfQ0xBU1MgTEFDb250ZXh0OwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7CkBAIC01Myw2ICs1Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRh
dGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V1RGOjpTdHJpbmcmKT4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoTEFDb250ZXh0ICopPiYmKSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRp
Y2F0b3IoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5k
ZXggNzM2MjZjYzA1MDI3YWU2ZTIxYjI4MTQzYmM4MDA5YjkyYjFhNzViNC4uODg1OTcxZjE4YjQy
MWM2YjBhNjg0YWNhODk2MjNlY2MzMjExNjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmNwcApAQCAtMjk1LDYgKzI5NSwxNCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShjb25zdCBIYXNoU2V0PFJlZjxBdXRoZW50aWNhdAog
ICAgIH0pOwogfQogCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChM
QUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmV0YWluUHRyPFNlY0Fj
Y2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2wgPSBhY2Nlc3NDb250cm9sUmVmOworICAgIGRp
c3BhdGNoUGFuZWxDbGllbnRDYWxsKFthY2Nlc3NDb250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250
cm9sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNv
bnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYgcGFuZWwpIG11dGFibGUgeworICAgICAg
ICBwYW5lbC5jbGllbnQoKS52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwogVW5pcXVlUmVmPEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlU2VydmljZShB
dXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNl
cnZpY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikgY29uc3QKIHsKICAgICByZXR1cm4gQXV0aGVudGlj
YXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZSh0cmFuc3BvcnQsIG9ic2VydmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IGMxNTFkZDkzMjY1OWY2MjA2YzBmMTVmYmVh
MWU1YzA1NGExYTBmOWUuLmU4ZjJkMmJmZDgwYzEwY2FhY2Y4MzA1ZDQ3M2Q1YmQzZjhhZWFmYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaApAQCAtODMsNiArODMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgYXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRp
b25TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAg
IHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGZpbmFsOwogCiAgICAgLy8gT3ZlcnJpZGVuIGJ5
IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci4KICAgICB2aXJ0dWFsIFVuaXF1ZVJlZjxBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gY3JlYXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNh
dG9yVHJhbnNwb3J0LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRM
aW5rLmgKaW5kZXggMTU1MmIyNzM5MDNhYTY0ODJhMzkzYjhkMzg3OWEwM2Y0OGU2NTVhMi4uZTg0
OTEwMjk1YmYzYTI1YTRiYzA2ZTM1MWRiM2QxNGZiN2ZjZmI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNh
dGlvblNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbXBvcnQgPExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxB
dXRoZW50aWNhdGlvbi5oPgorI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIgogI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURF
UihXZWJLaXQsIExvY2FsQXV0aGVudGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IuaAppbmRleCBkZWQ5OGYyZDc2YWM0ZGU5NTFhNTg5NDBiMzZkMmI2ZTc0YWY0
NGM3Li45YTQ3NTcwZmU3MGIzYjcyNDhjY2UxMDUzMTRlNTBiOGNjOTAwZGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAtMzksMTIgKzM5LDEzIEBAIGNsYXNz
IExvY2FsQXV0aGVudGljYXRvciBmaW5hbCA6IHB1YmxpYyBBdXRoZW50aWNhdG9yIHsKIHB1Ymxp
YzoKICAgICAvLyBIZXJlIGlzIHRoZSBGU00uCiAgICAgLy8gTWFrZUNyZWRlbnRpYWw6IEluaXQg
PT4gUmVxdWVzdFJlY2VpdmVkID0+IFVzZXJDb25zZW50ZWQgPT4gQXR0ZXN0ZWQgPT4gRW5kCi0g
ICAgLy8gR2V0QXNzZXJ0aW9uOiBJbml0ID0+IFJlcXVlc3RSZWNlaXZlZCA9PiBVc2VyQ29uc2Vu
dGVkID0+IEVuZAorICAgIC8vIEdldEFzc2VydGlvbjogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQg
PT4gUmVzcG9uc2VTZWxlY3RlZCA9PiBVc2VyQ29uc2VudGVkID0+IEVuZAogICAgIGVudW0gY2xh
c3MgU3RhdGUgewogICAgICAgICBJbml0LAogICAgICAgICBSZXF1ZXN0UmVjZWl2ZWQsCiAgICAg
ICAgIFVzZXJDb25zZW50ZWQsCiAgICAgICAgIEF0dGVzdGVkLAorICAgICAgICBSZXNwb25zZVNl
bGVjdGVkCiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8TG9jYWxBdXRoZW50aWNhdG9yPiBjcmVh
dGUoVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQpAQCAtNTYsMTQgKzU3
LDE4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJl
ZjxMb2NhbENvbm5lY3Rpb24+JiYpOwogCiAgICAgdm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFs
OwotICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNB
Y2Nlc3NDb250cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50LCBMQUNvbnRleHQg
Kik7CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNl
Y0FjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqKTsKICAgICB2b2lkIGNvbnRpbnVlTWFrZUNy
ZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiwgVmVjdG9yPHVpbnQ4X3Q+JiYgY3JlZGVu
dGlhbElkLCBWZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwgTlNBcnJheSAqY2VydGlmaWNhdGVz
LCBOU0Vycm9yICopOwogCiAgICAgdm9pZCBnZXRBc3NlcnRpb24oKSBmaW5hbDsKLSAgICB2b2lk
IGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6
VXNlckNvbnNlbnQsIExBQ29udGV4dCAqLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRp
YWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFuZGxlKTsKKyAgICB2b2lkIGNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVNlbGVjdGVkKFJlZjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworICAgIHZvaWQgY29udGludWVHZXRBc3NlcnRp
b25BZnRlclVzZXJDb25zZW50ZWQoTEFDb250ZXh0ICosIFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworCisgICAgdm9pZCByZWNlaXZlRXhjZXB0aW9uKFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmJiwgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgPSBXZWJBdXRo
ZW50aWNhdGlvblN0YXR1czo6TEFFcnJvcikgY29uc3Q7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsg
U3RhdGU6OkluaXQgfTsKICAgICBVbmlxdWVSZWY8TG9jYWxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b247CisgICAgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4gbV9hc3NlcnRpb25SZXNwb25zZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCAyNWRkMWM2YWU5
NjgxZjBlZjc4Y2RiMWYzZDRjNDFiYTRlNGJiNWRlLi43OGI3M2RlMWM1MGMxMTQ2N2ZjYWQ1ODFm
NzcxNDZhZmZhNDQ3NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9y
Lm1tCkBAIC04Niw2ICs4NiwxOCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRv
TlNEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKICAgICByZXR1cm4gYWRvcHROUyhb
W05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXpl
KCldKTsKIH0KIAorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNEYXRhPiB0b05TRGF0YShBcnJh
eUJ1ZmZlciogYnVmZmVyKQoreworICAgIEFTU0VSVChidWZmZXIpOworICAgIC8vIEZJWE1FKDE4
MzUzNCk6IENvbnNpZGVyIHVzaW5nIGluaXRXaXRoQnl0ZXNOb0NvcHkuCisgICAgcmV0dXJuIGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3Ro
OmJ1ZmZlci0+Ynl0ZUxlbmd0aCgpXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVm
ZmVyPiB0b0FycmF5QnVmZmVyKE5TRGF0YSAqZGF0YSkKK3sKKyAgICByZXR1cm4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwg
ZGF0YS5sZW5ndGgpOworfQorCiB9IC8vIExvY2FsQXV0aGVudGljYXRvckludGVybmFsCiAKIExv
Y2FsQXV0aGVudGljYXRvcjo6TG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbikKQEAgLTEwOCw3ICsxMjAsNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAgIGlmIChub3RGb3VuZCA9PSBjcmVhdGlvbk9w
dGlvbnMucHViS2V5Q3JlZFBhcmFtcy5maW5kTWF0Y2hpbmcoW10gKGF1dG8mIHB1YktleUNyZWRQ
YXJhbSkgewogICAgICAgICByZXR1cm4gcHViS2V5Q3JlZFBhcmFtLnR5cGUgPT0gUHVibGljS2V5
Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSAmJiBwdWJLZXlDcmVkUGFyYW0uYWxnID09IENPU0U6
OkVTMjU2OwogICAgIH0pKSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEg
eyBOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9y
IGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRl
cnMuIl9zIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55
IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiJfcyB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTMxLDI0ICsxNDMsMjIgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJh
eVJlZiA9IG51bGxwdHI7CiAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0
Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJl
Zik7CiAgICAgICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkg
ewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBz
dGF0dXMpOwotICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25v
d25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICIsIHN0YXR1cykg
fSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3Ry
aW5nKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9
IGFkb3B0Q0YoYXR0cmlidXRlc0FycmF5UmVmKTsKIAotICAgICAgICAvLyBGSVhNRShyZGFyOi8v
cHJvYmxlbS8zNTkwMDU5Myk6IE5lZWQgdG8gb2J0YWluIHVzZXIgY29uc2VudCBhbmQgdGhlbiBy
ZXR1cm4gZGlmZmVyZW50IGVycm9yIGFjY29yZGluZyB0byB0aGUgcmVzdWx0LgorICAgICAgICAv
LyBGSVhNRTogTmVlZCB0byBvYnRhaW4gdXNlciBjb25zZW50IGFuZCB0aGVuIHJldHVybiBkaWZm
ZXJlbnQgZXJyb3IgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQuCiAgICAgICAgIGZvciAoTlNEaWN0
aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgaW4gKE5TQXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlSZWYpIHsK
ICAgICAgICAgICAgIE5TRGF0YSAqbnNDcmVkZW50aWFsSWQgPSBuc0F0dHJpYnV0ZXNbKGlkKWtT
ZWNBdHRyQXBwbGljYXRpb25MYWJlbF07CiAgICAgICAgICAgICBpZiAoZXhjbHVkZUNyZWRlbnRp
YWxJZHMuY29udGFpbnMoU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5zQ3Jl
ZGVudGlhbElkLmJ5dGVzKSwgbnNDcmVkZW50aWFsSWQubGVuZ3RoKSkpIHsKLSAgICAgICAgICAg
ICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiQXQg
bGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRl
bnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0p
OworICAgICAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBOb3RBbGxvd2VkRXJyb3IsICJB
dCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3Jl
ZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3Mg
fSwgV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxBRHVwbGljYXRlQ3JlZGVudGlhbCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAg
ICAgLy8gU3RlcCA2LgotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTAwNTkzKTogVXBk
YXRlIHRvIGEgZm9ybWFsIFVJLgogICAgIC8vIEdldCB1c2VyIGNvbnNlbnQuCiAgICAgUmV0YWlu
UHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2w7CiAgICAgewpAQCAtMTU2LDI3
ICsxNjYsMjUgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAg
ICAgICAgYWNjZXNzQ29udHJvbCA9IGFkb3B0Q0YoU2VjQWNjZXNzQ29udHJvbENyZWF0ZVdpdGhG
bGFncyhOVUxMLCBrU2VjQXR0ckFjY2Vzc2libGVXaGVuUGFzc2NvZGVTZXRUaGlzRGV2aWNlT25s
eSwga1NlY0FjY2Vzc0NvbnRyb2xQcml2YXRlS2V5VXNhZ2UgfCBrU2VjQWNjZXNzQ29udHJvbFVz
ZXJQcmVzZW5jZSwgJmVycm9yUmVmKSk7CiAgICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9w
dENGKGVycm9yUmVmKTsKICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICBMT0df
RVJST1IoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogJUAiLCAoTlNFcnJvciAqKWVy
cm9yUmVmKTsKLSAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtu
b3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogIiwg
U3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7Cisg
ICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJD
b3VsZG4ndCBjcmVhdGUgYWNjZXNzIGNvbnRyb2w6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9y
UmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVm
ID0gYWNjZXNzQ29udHJvbC5nZXQoKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRy
b2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250
ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICgh
d2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0g
dGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2xSZWYgPSBhY2Nlc3NDb250cm9sLmdldCgpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0g
W2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0gKExBQ29udGV4dCAqY29udGV4dCkgeworICAgICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIGNvbnNlbnQsIGNvbnRl
eHQpOwotICAgIH07Ci0gICAgbV9jb25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKLSAgICAgICAg
bWFrZVN0cmluZygiYWxsb3cgIl9zLCBjcmVhdGlvbk9wdGlvbnMucnAuaWQsICIgdG8gY3JlYXRl
IGEgcHVibGljIGtleSBjcmVkZW50aWFsIGZvciAiX3MsIGNyZWF0aW9uT3B0aW9ucy51c2VyLm5h
bWUpLAotICAgICAgICBhY2Nlc3NDb250cm9sUmVmLAotICAgICAgICBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNl
ckNvbnNlbnRlZChhY2Nlc3NDb250cm9sLmdldCgpLCBjb250ZXh0KTsKKyAgICAgICAgfTsKKyAg
ICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIH0KIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFr
ZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3ND
b250cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4
dCAqY29udGV4dCkKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJl
ZiwgTEFDb250ZXh0ICpjb250ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhl
bnRpY2F0b3JJbnRlcm5hbDsKIApAQCAtMTg0LDcgKzE5Miw3IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vz
c0NvbnRyCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOwogICAgIGF1dG8mIGNy
ZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAKLSAgICBpZiAoY29uc2VudCA9PSBMb2NhbENv
bm5lY3Rpb246OlVzZXJDb25zZW50OjpObykgeworICAgIGlmICghbV9jb25uZWN0aW9uLT5pc1Vu
bG9ja2VkKGNvbnRleHQpKSB7CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEg
eyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJfcyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMyw4ICsyMjEsNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nl
c3NDb250cgogICAgIH07CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbURlbGV0ZSgoX19i
cmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKICAgICBpZiAoc3RhdHVzICYmIHN0
YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4n
dCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogJWQiLCBzdGF0dXMpOwotICAgICAgICByZWNlaXZl
UmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4n
dCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2
ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZGVsZXRlIG9s
ZGVyIGNyZWRlbnRpYWw6ICIsIHN0YXR1cykgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTIyMiw3ICsyMjksNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cgogICAgIC8vIFRoZSBh
Ym92ZS10by1jcmVhdGUgcHJpdmF0ZSBrZXkgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIGtleWNoYWlu
IHdoaWxlIHVzaW5nIFNFUC4KICAgICBhdXRvIHByaXZhdGVLZXkgPSBtX2Nvbm5lY3Rpb24tPmNy
ZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KGNvbnRleHQsIGFjY2Vzc0NvbnRyb2xSZWYsIHNlY0F0
dHJMYWJlbCwgc2VjQXR0ckFwcGxpY2F0aW9uVGFnLmdldCgpKTsKICAgICBpZiAoIXByaXZhdGVL
ZXkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJv
ciwgIkNvdWxkbid0IGNyZWF0ZSBwcml2YXRlIGtleS4iX3MgfSk7CisgICAgICAgIHJlY2VpdmVF
eGNlcHRpb24oeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNDMsOCArMjUwLDcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50
ZWQoU2VjQWNjZXNzQ29udHIKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNSZWYgPSBudWxs
cHRyOwogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpY3JlZGVudGlhbElkUXVlcnksICZhdHRyaWJ1dGVzUmVmKTsK
ICAgICAgICAgaWYgKHN0YXR1cykgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBn
ZXQgQ3JlZGVudGlhbCBJRDogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgcmVjZWl2ZVJlc3Bv
bmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0
IENyZWRlbnRpYWwgSUQ6ICIsIHN0YXR1cykgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0
aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZXQgQ3JlZGVudGlhbCBJ
RDogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBhdXRvIHJldGFpbkF0dHJpYnV0ZXMgPSBhZG9wdENGKGF0dHJpYnV0ZXNSZWYpOwpAQCAtMjY4
LDggKzI3NCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyCiAgICAgICAgICAgICBwdWJsaWNL
ZXlEYXRhUmVmID0gYWRvcHRDRihTZWNLZXlDb3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihwdWJs
aWNLZXkuZ2V0KCksICZlcnJvclJlZikpOwogICAgICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9
IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAg
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBleHBvcnQgdGhlIHB1YmxpYyBrZXk6ICVAIiwg
KE5TRXJyb3IqKWVycm9yUmVmKTsKLSAgICAgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNl
cHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBleHBvcnQgdGhl
IHB1YmxpYyBrZXk6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNj
cmlwdGlvbikpIH0pOworICAgICAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGV4cG9ydCB0aGUgcHVibGljIGtleTogIiwgU3Ry
aW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKCgo
TlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQoKSkubGVuZ3RoID09ICgxICsgMiAqIEVTMjU2
RmllbGRFbGVtZW50TGVuZ3RoKSk7IC8vIDA0IHwgWCB8IFkKQEAgLTMwOSw4ICszMTQsNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0
ZWQoU2VjS2V5UmVmIHByaXZhdGVLZQogICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6
Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0
aW9ucyk7CiAKICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBh
dHRlc3Q6ICVAIiwgZXJyb3IpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRh
IHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9u
KHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIC8vIEF0dGVzdGF0aW9uIENlcnRpZmljYXRlIGFuZCBBdHRlc3RhdGlvbiBJc3N1aW5nIENB
CkBAIC0zNDQsMTAgKzM0OCw5IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRp
b24oKQogICAgIC8vIFNraXAgU3RlcCA4IGFzIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQg
eWV0LgogICAgIC8vIFN0ZXAgMTIgaXMgaW1wbGljaXRseSBjYXB0dXJlZCBieSBhbGwgVW5rbm93
bkVycm9yIGV4Y2VwdGlvbiBjYWxsYmFja3MuCiAgICAgLy8gU3RlcCAzLTUuIFVubGlrZSB0aGUg
c3BlYywgaWYgYW4gYWxsb3cgbGlzdCBpcyBwcm92aWRlZCBhbmQgdGhlcmUgaXMgbm8gaW50ZXJz
ZWN0aW9uIGJldHdlZW4gZXhpc3Rpbmcgb25lcyBhbmQgdGhlIGFsbG93IGxpc3QsIHdlIGFsd2F5
cyByZXR1cm4gTm90QWxsb3dlZEVycm9yLgotICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1
OTAwNTkzKTogTmVlZCB0byBpbmZvcm0gdXNlcnMuCiAgICAgYXV0byBhbGxvd0NyZWRlbnRpYWxJ
ZHMgPSBwcm9kdWNlSGFzaFNldChyZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKTsKICAg
ICBpZiAoIXJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuaXNFbXB0eSgpICYmIGFsbG93
Q3JlZGVudGlhbElkcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZv
dW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAg
ICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVu
dGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJf
cyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0zNjcsOCArMzcwLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0
b3I6OmdldEFzc2VydGlvbigpCiAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51
bGxwdHI7CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKICAgICBpZiAo
c3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBzdGF0dXMpOwotICAgICAgICByZWNl
aXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3Vs
ZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2Vw
dGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46
ICIsIHN0YXR1cykgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byByZXRhaW5B
dHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CkBAIC0zODYsNDEg
KzM4OCw2MSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAg
ICAgaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMgPSByZXN1bHQ7CiAgICAgfQogICAg
IGlmICghaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMuY291bnQpIHsKLSAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNo
ZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50
aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJv
ciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRh
Y2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0Ny
ZWRlbnRpYWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gU3RlcCA2LgotICAg
IGF1dG8gKnNlbGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXMgPSBtX2Nvbm5lY3Rpb24tPnNlbGVj
dENyZWRlbnRpYWwoaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMpOworICAgIGZvciAo
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGUgOiBpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRl
cykgeworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFkZChB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSgKKyAgICAgICAgICAgIHRvQXJy
YXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwKKyAgICAg
ICAgICAgIHRvQXJyYXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFn
XSksCisgICAgICAgICAgICAoX19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVb
KGlkKWtTZWNBdHRyQWNjZXNzQ29udHJvbF0pKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICB9CisgICAgbV9jb25uZWN0aW9uLT5m
aWx0ZXJSZXNwb25zZXMobV9hc3NlcnRpb25SZXNwb25zZXMpOworCisgICAgaWYgKGF1dG8qIG9i
c2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAgICBhdXRvIGNhbGxiYWNrID0gW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoY29uc3QgQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlJiByZXNwb25zZSkgeworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBhdXRvIHJldHVyblJlc3BvbnNlID0gbV9hc3NlcnRpb25S
ZXNwb25zZXMudGFrZShjb25zdF9jYXN0PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSo+
KCZyZXNwb25zZSkpOworICAgICAgICAgICAgaWYgKCFyZXR1cm5SZXNwb25zZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVz
cG9uc2VTZWxlY3RlZChXVEZNb3ZlKCpyZXR1cm5SZXNwb25zZSkpOworICAgICAgICB9OworICAg
ICAgICBvYnNlcnZlci0+c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UobV9hc3NlcnRpb25SZXNwb25z
ZXMsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9Cit9CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmIHJlc3BvbnNlKQoreworICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOworICAgIG1fc3RhdGUgPSBT
dGF0ZTo6UmVzcG9uc2VTZWxlY3RlZDsKIAogICAgIC8vIFN0ZXAgNy4gR2V0IHVzZXIgY29uc2Vu
dC4KLSAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTkwMDU5Myk6IFVwZGF0ZSB0byBhIGZv
cm1hbCBVSS4KLSAgICBhdXRvIGNhbGxiYWNrID0gWwotICAgICAgICB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwKLSAgICAgICAgY3JlZGVudGlhbElkID0gdG9WZWN0b3Ioc2VsZWN0ZWRD
cmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXSksCi0gICAg
ICAgIHVzZXJoYW5kbGUgPSB0b1ZlY3RvcihzZWxlY3RlZENyZWRlbnRpYWxBdHRyaWJ1dGVzWyhp
ZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSkKLSAgICBdKExvY2FsQ29ubmVjdGlvbjo6VXNlckNv
bnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgeworICAgICAg
ICBhdXRvIGFjY2Vzc0NvbnRyb2xSZWYgPSByZXNwb25zZS0+YWNjZXNzQ29udHJvbCgpOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXNw
b25zZSA9IFdURk1vdmUocmVzcG9uc2UpXSAoTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB3ZWFrVGhpcy0+
Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoY29uc2VudCwgY29udGV4dCwg
Y3JlZGVudGlhbElkLCB1c2VyaGFuZGxlKTsKLSAgICB9OwotICAgIE5TRGF0YSAqaWREYXRhID0g
c2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ107
Ci0gICAgU3RyaW5nVmlldyBpZFN0cmluZ1ZpZXcgeyBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+
KFtpZERhdGEgYnl0ZXNdKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFtpZERhdGEgbGVuZ3RoXSkg
fTsKLSAgICBtX2Nvbm5lY3Rpb24tPmdldFVzZXJDb25zZW50KAotICAgICAgICBtYWtlU3RyaW5n
KCJsb2cgaW50byAiLCByZXF1ZXN0T3B0aW9ucy5ycElkLCAiIHdpdGggIiwgaWRTdHJpbmdWaWV3
KSwKLSAgICAgICAgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpc2VsZWN0ZWRDcmVkZW50
aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSwKLSAgICAgICAgV1RGTW92
ZShjYWxsYmFjaykpOworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlR2V0QXNzZXJ0aW9u
QWZ0ZXJVc2VyQ29uc2VudGVkKGNvbnRleHQsIFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICAgICAg
fTsKKyAgICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIH0KIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6VXNlckNv
bnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFuZGxlKQordm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVk
KExBQ29udGV4dCAqY29udGV4dCwgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4mJiByZXNwb25zZSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50
aWNhdG9ySW50ZXJuYWw7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNl
aXZlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlc3BvbnNlU2VsZWN0ZWQpOwog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKIAotICAgIGlmIChjb25zZW50ID09
IExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQ6Ok5vKSB7CisgICAgaWYgKCFtX2Nvbm5lY3Rp
b24tPmlzVW5sb2NrZWQoY29udGV4dCkpIHsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDMyLDI1ICs0NTQsMjcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVk
KExvY2FsQ29ubmVjdGlvbjoKICAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShXVEY6
OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0
aW9ucykucnBJZCwgZ2V0QXNzZXJ0aW9uRmxhZ3MsIGNvdW50ZXIsIHsgfSk7CiAKICAgICAvLyBT
dGVwIDExLgotICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmU7CisgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gc2lnbmF0dXJlOwogICAgIHsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICpxdWVyeSA9
IEB7CisgICAgICAgIGF1dG8gcXVlcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworICAgICAgICBbcXVlcnkgYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OkB7
CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAogICAgICAgICAg
ICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKLSAg
ICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRvTlNEYXRhKGNyZWRlbnRp
YWxJZCkuZ2V0KCksCi0gICAgICAgICAgICAoaWQpa1NlY1VzZUF1dGhlbnRpY2F0aW9uQ29udGV4
dDogY29udGV4dCwKKyAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRv
TlNEYXRhKHJlc3BvbnNlLT5yYXdJZCgpKS5nZXQoKSwKICAgICAgICAgICAgIChpZClrU2VjUmV0
dXJuUmVmOiBAWUVTLAogI2lmIEhBVkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQogICAgICAg
ICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCiAjZWxzZQogICAg
ICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICNlbmRpZgotICAgICAgICB9Owor
ICAgICAgICB9XTsKKyAgICAgICAgLy8gY29udGV4dCBpcyBudWxscHRyIGluIG1vY2sgdGVzdGlu
Zy4KKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICBbcXVlcnkgc2V0T2JqZWN0OmNv
bnRleHQgZm9yS2V5OihpZClrU2VjVXNlQXV0aGVudGljYXRpb25Db250ZXh0XTsKICAgICAgICAg
Q0ZUeXBlUmVmIHByaXZhdGVLZXlSZWYgPSBudWxscHRyOwotICAgICAgICBPU1N0YXR1cyBzdGF0
dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnks
ICZwcml2YXRlS2V5UmVmKTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlN
YXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LmdldCgpLCAmcHJpdmF0ZUtl
eVJlZik7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291
bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICVkIiwgc3RhdHVzKTsKLSAgICAg
ICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VT
dHJpbmcoIkNvdWxkbid0IGdldCB0aGUgcHJpdmF0ZSBrZXkgcmVmZXJlbmNlOiAiLCBzdGF0dXMp
IH0pOworICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0
cmluZygiQ291bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICIsIHN0YXR1cykg
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byBwcml2YXRl
S2V5ID0gYWRvcHRDRihwcml2YXRlS2V5UmVmKTsKQEAgLTQ2MCwxOCArNDg0LDI3IEBAIHZvaWQg
TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRl
ZChMb2NhbENvbm5lY3Rpb246CiAKICAgICAgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxw
dHI7CiAgICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0aW5nIENGVHlwZVJlZiB0byBTZWNLZXlSZWYg
aXMgcXVpdGUgc3VidGxlIGhlcmUuCi0gICAgICAgIGF1dG8gc2lnbmF0dXJlUmVmID0gYWRvcHRD
RihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJlZikoKGlkKXByaXZhdGVL
ZXlSZWYpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNzYWdlWDk2MlNIQTI1Niwg
KF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYpKTsKKyAgICAgICAgc2ln
bmF0dXJlID0gYWRvcHRDRihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJl
ZikoKGlkKXByaXZhdGVLZXlSZWYpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNz
YWdlWDk2MlNIQTI1NiwgKF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYp
KTsKICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAg
ICBpZiAoZXJyb3JSZWYpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2VuZXJh
dGUgdGhlIHNpZ25hdHVyZTogJUAiLCAoTlNFcnJvciopZXJyb3JSZWYpOwotICAgICAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygi
Q291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJy
b3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CisgICAgICAgICAgICByZWNlaXZlRXhj
ZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZW5lcmF0ZSB0aGUg
c2lnbmF0dXJlOiAiLCBTdHJpbmcoKChOU0Vycm9yKillcnJvclJlZikubG9jYWxpemVkRGVzY3Jp
cHRpb24pKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBzaWdu
YXR1cmUgPSB0b1ZlY3RvcigoTlNEYXRhICopc2lnbmF0dXJlUmVmLmdldCgpKTsKICAgICB9CiAK
ICAgICAvLyBTdGVwIDEzLgotICAgIHJlY2VpdmVSZXNwb25kKEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRpYWxJZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgdXNl
cmhhbmRsZSkpOworICAgIHJlc3BvbnNlLT5zZXRBdXRoZW50aWNhdG9yRGF0YShhdXRoRGF0YSk7
CisgICAgcmVzcG9uc2UtPnNldFNpZ25hdHVyZSh0b0FycmF5QnVmZmVyKChOU0RhdGEgKilzaWdu
YXR1cmUuZ2V0KCkpKTsKKyAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKHJlc3BvbnNlKSk7Cit9
CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0aW9uKEV4Y2VwdGlvbkRh
dGEmJiBleGNlcHRpb24sIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIHN0YXR1cykgY29uc3QKK3sK
KyAgICBMT0dfRVJST1IoZXhjZXB0aW9uLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgaWYg
KGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkKKyAgICAgICAgb2JzZXJ2ZXItPmF1
dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKHN0YXR1cyk7CisgICAgcmVjZWl2ZVJlc3BvbmQoV1RG
TW92ZShleGNlcHRpb24pKTsKKyAgICByZXR1cm47CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaAppbmRleCA5MTkxYjJjNjUzNDJjZDFi
NjU3MTI1YTIzMjY0NjE2ZmU4ZGUyMjlhLi41NDVhYzVmZjYxYjdiMmJhZTdkZTM4NzQyZDU2ODg4
ZTVmMDgxNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaApAQCAtNDYsMjMg
KzQ2LDE2IEBAIGNsYXNzIExvY2FsQ29ubmVjdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxDb25uZWN0aW9uKTsKIHB1Ymxp
YzoKLSAgICBlbnVtIGNsYXNzIFVzZXJDb25zZW50IHsKLSAgICAgICAgTm8sCi0gICAgICAgIFll
cwotICAgIH07Ci0KICAgICB1c2luZyBBdHRlc3RhdGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChOU0FycmF5ICosIE5TRXJyb3IgKik+OwotICAgIHVzaW5nIFVzZXJDb25zZW50
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJDb25zZW50KT47Ci0gICAgdXNp
bmcgVXNlckNvbnNlbnRDb250ZXh0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVz
ZXJDb25zZW50LCBMQUNvbnRleHQgKik+OwogCiAgICAgTG9jYWxDb25uZWN0aW9uKCkgPSBkZWZh
dWx0OwogICAgIHZpcnR1YWwgfkxvY2FsQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogICAgIC8v
IE92ZXJyaWRlZCBieSBNb2NrTG9jYWxDb25uZWN0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBnZXRV
c2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNl
ckNvbnNlbnRDb250ZXh0Q2FsbGJhY2smJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzVW5s
b2NrZWQoTEFDb250ZXh0ICopIGNvbnN0OwogICAgIHZpcnR1YWwgUmV0YWluUHRyPFNlY0tleVJl
Zj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRy
b2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNh
dGlvblRhZykgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGdldEF0dGVzdGF0aW9uKFNlY0tleVJl
ZiwgTlNEYXRhICphdXRoRGF0YSwgTlNEYXRhICpoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYp
IGNvbnN0OwotICAgIHZpcnR1YWwgTlNEaWN0aW9uYXJ5ICpzZWxlY3RDcmVkZW50aWFsKGNvbnN0
IE5TQXJyYXkgKikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGZpbHRlclJlc3BvbnNlcyhIYXNo
U2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYpIGNvbnN0
IHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxD
b25uZWN0aW9uLm1tCmluZGV4IDhiYWVlZTcwOWZmYzdkM2NlNWNiOGU4MDE0YzMxM2I4YTBhZTAx
YjQuLjUzZTAxMjNhZDdhZGE1NTc1M2MyMjI5OWZlODllODg0MDJmYzIxZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29u
bmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KQEAgLTM5LDIyICszOSwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0
IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIFVzZXJD
b25zZW50Q29udGV4dENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Citib29sIExv
Y2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZChMQUNvbnRleHQgKmNvbnRleHQpIGNvbnN0CiB7Ci0g
ICAgYXV0byBjb250ZXh0ID0gYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRd
KTsKLSAgICBhdXRvIHJlcGx5ID0gbWFrZUJsb2NrUHRyKFtjb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgICAgIFVzZXJDb25zZW50IGNvbnNlbnQgPSBVc2VyQ29uc2VudDo6WWVzOwotICAgICAg
ICBpZiAoIXN1Y2Nlc3MgfHwgZXJyb3IpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRu
J3QgYXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmljczogJUAiLCBlcnJvcik7Ci0gICAgICAgICAg
ICBjb25zZW50ID0gVXNlckNvbnNlbnQ6Ok5vOwotICAgICAgICB9Ci0gICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgY29uc2VudCwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCldKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb25zZW50LCBjb250ZXh0LmdldCgpKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci0gICAgW2NvbnRleHQgZXZhbHVhdGVBY2Nlc3NDb250cm9s
OmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJhdGlvblVzZUtleVNp
Z24gbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpyZXBseS5nZXQoKV07CisgICAgTlNFcnJv
ciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byByZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVBvbGlj
eTpMQVBvbGljeURldmljZU93bmVyQXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBvcHRpb25z
OkB7IEAoTEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSk6IEBZRVMgfSBlcnJvcjomZXJyb3JdOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdldCB1c2VyIGNvbnNl
bnQ6ICVAIiwgZXJyb3IpOworICAgIHJldHVybiAhIXJlc3VsdDsKIH0KIAogUmV0YWluUHRyPFNl
Y0tleVJlZj4gTG9jYWxDb25uZWN0aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNv
bnRleHQgKmNvbnRleHQsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgY29u
c3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBj
b25zdApAQCAtODgsMTIgKzc5LDYgQEAgTE9DQUxDT05ORUNUSU9OX0FERElUSU9OUwogI2VuZGlm
CiB9CiAKLU5TRGljdGlvbmFyeSAqTG9jYWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsKGNv
bnN0IE5TQXJyYXkgKmNyZWRlbnRpYWxzKSBjb25zdAotewotICAgIC8vIEZJWE1FKHJkYXI6Ly9w
cm9ibGVtLzM1OTAwNTM0KTogV2UgZG9uJ3QgaGF2ZSBhbiBVSSB0byBwcm9tcHQgdXNlcnMgZm9y
IHNlbGVjdGluZyBpbnRlcnNlY3RlZENyZWRlbnRpYWxzLCBhbmQgdGhlcmVmb3JlIHdlIGFsd2F5
cyB1c2UgdGhlIGZpcnN0IG9uZSBmb3Igbm93LgotICAgIHJldHVybiBjcmVkZW50aWFsc1swXTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5oCmluZGV4IDNjNmIzZDdlMDEzY2U2ODA3MjgzOGI5MjY4YWVjYTliZGUyOThlY2YuLmRmM2Q5
NWFlMTA5ZTViZDQyMTI3YTNlNGYwM2M1NDUzYjU4YmMzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3Vs
dCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGNvbnN0IGZpbmFsOwogCiAgICAgX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbCAqbV9wYW5lbDsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbERlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CkBAIC01OCw3ICs1OSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIGJvb2wgcGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsIDog
MTsKICAgICAgICAgYm9vbCBwYW5lbERpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJl
c3VsdCA6IDE7CiAgICAgICAgIGJvb2wgcGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJp
ZXNDb21wbGV0aW9uSGFuZGxlciA6IDE7Ci0gICAgICAgIGJvb2wgcGFuZWxzZWxlY3RBc3NlcnRp
b25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCBwYW5lbFNlbGVj
dEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29sIHBh
bmVsVmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAg
IH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQppbmRleCBkNTE2NjMyYjk4ZDczODgxYzQz
ZTQzMTljMzk3MzNlMDQwMzllYjVlLi40MDgwNjUyZGRkMjgzMjdkMTYzZWRlZGFhZWE3YjljMGM4
ODBhMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQubW0KQEAgLTM4LDYgKzM4LDggQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAorI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlv
blNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKnBhbmVsLCBpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiBk
ZWxlZ2F0ZSkKQEAgLTQ3LDcgKzQ5LDggQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudChfV0tXZWJBdXRoZW50aWNhdGlvblAKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy5wYW5lbFVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDp1cGRhdGVXZWJBdXRoZW50
aWNhdGlvblBhbmVsOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsRGlzbWlzc1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocGFuZWw6ZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0
OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdS
ZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwYW5lbDpyZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6Y29tcGxldGlvbkhh
bmRsZXI6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFu
ZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9u
SGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnZl
cmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0
YWluUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6ZGVsZWdhdGUoKQpAQCAtNjcsNiArNzAsMTIgQEAgc3RhdGlj
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUgd2tXZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlKFdlYkF1dGhlbnQKICAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVQSU5BdXRoQmxvY2tlZDsKICAgICBpZiAoc3RhdHVzID09IFdlYkF1dGhlbnRpY2F0
aW9uU3RhdHVzOjpQaW5JbnZhbGlkKQogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZVBJTkludmFsaWQ7CisgICAgaWYgKHN0YXR1cyA9PSBXZWJBdXRoZW50aWNh
dGlvblN0YXR1czo6TEFFcnJvcikKKyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVcGRhdGVMQUVycm9yOworICAgIGlmIChzdGF0dXMgPT0gV2ViQXV0aGVudGljYXRpb25T
dGF0dXM6OkxBRHVwbGljYXRlQ3JlZGVudGlhbCkKKyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWw7CisgICAgaWYgKHN0YXR1
cyA9PSBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRlbnRpYWwpCisgICAgICAgIHJl
dHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWw7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVNdWx0aXBsZU5GQ1RhZ3NQcmVzZW50OwogfQpAQCAtMTMzLDcgKzE0Miw3IEBAIHZv
aWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Uo
VmVjdG9yPFJlZjxXZWJDb3JlOjpBCiB7CiAgICAgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgp
KTsKIAotICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxzZWxlY3RBc3NlcnRpb25SZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5l
bFNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE1OCw2ICsxNjcsMjggQEAgdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkEKICAgICB9KS5nZXQoKV07
CiB9CiAKK3ZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlcihTZWNB
Y2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFD
b250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9kZWxl
Z2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFu
ZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFthbGxvY0xBQ29udGV4
dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5j
ZSgpIGluaXRdKS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNo
ZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0
KCksIEBzZWxlY3RvcihwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlv
bkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgdmVyaWZ5VXNlcldpdGhB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2Vy
ID0gV1RGTW92ZShjaGVja2VyKV0oTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisgICAgfSkuZ2V0KCldOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9N
b2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDcyMDE1OGFjYzI1
NTkxYjczMGZjZTcxY2FmZWRiZTM0MzE5NmRlZDIuLmQwZGQ5YjEwNDlhYTE3ZmJlZWUzYjg0OTJl
NWVjNDFmNzU1MmE4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5o
CkBAIC0zNywxMCArMzcsMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tMb2NhbENvbm5l
Y3Rpb24oY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFz
b24sIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaXNVbmxvY2tlZChMQUNvbnRleHQgKikgY29uc3QgZmluYWw7
CiAgICAgUmV0YWluUHRyPFNlY0tleVJlZj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFD
b250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVs
LCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBn
ZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwg
QXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKLSAgICBOU0RpY3Rpb25hcnkgKnNl
bGVjdENyZWRlbnRpYWwoY29uc3QgTlNBcnJheSAqKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGZp
bHRlclJlc3BvbnNlcyhIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U+PiYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25u
ZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IDkxNWI1OTQ5OWZlN2VjZDI3YmZmNjliMmYw
NjcwZGI3ZDRjZjMwZmYuLjhiOGQ4MjQ1MTRlNThjODQyMDBhYTc4MTY2NzU5YWFlZjdjYzUxNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTMyLDYgKzMy
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogI2ltcG9ydCA8d3RmL1J1
bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNp
bXBvcnQgIkxvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIgpAQCAtNDMsMTcgKzQ0LDkgQEAg
TW9ja0xvY2FsQ29ubmVjdGlvbjo6TW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpN
b2NrV2ViQXV0aGVudGljYXRpb25Db24KIHsKIH0KIAotdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9u
OjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2Vy
Q29uc2VudENvbnRleHRDYWxsYmFjayYmIGNhbGxiYWNrKSBjb25zdAorYm9vbCBNb2NrTG9jYWxD
b25uZWN0aW9uOjppc1VubG9ja2VkKExBQ29udGV4dCAqY29udGV4dCkgY29uc3QKIHsKLSAgICAv
LyBNb2NrIGFzeW5jIG9wZXJhdGlvbnMuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtj
b25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9uLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoY29uZmlndXJhdGlvbi5sb2NhbCk7Ci0g
ICAgICAgIGlmICghY29uZmlndXJhdGlvbi5sb2NhbC0+YWNjZXB0QXV0aGVudGljYXRpb24pIHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKFVzZXJDb25zZW50OjpObywgbmlsKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjYWxsYmFjayhVc2VyQ29uc2VudDo6WWVzLCBh
ZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKLSAgICB9KTsK
KyAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLmxvY2FsLT5hY2NlcHRBdXRoZW50aWNhdGlvbjsK
IH0KIAogUmV0YWluUHRyPFNlY0tleVJlZj4gTW9ja0xvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3Jl
ZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0
IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29u
c3QKQEAgLTExMiwxNSArMTA1LDI0IEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0
ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKiwgTlNEYXRhICosIEF0dGVzdGF0CiAgICAgfSk7
CiB9CiAKLU5TRGljdGlvbmFyeSAqTW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3JlZGVudGlh
bChjb25zdCBOU0FycmF5ICpjcmVkZW50aWFscykgY29uc3QKK3ZvaWQgTW9ja0xvY2FsQ29ubmVj
dGlvbjo6ZmlsdGVyUmVzcG9uc2VzKEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMpIGNvbnN0CiB7Ci0gICAgYXV0byBwcmVmZXJy
ZWRVc2VyaGFuZGxlID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNv
ZGVkU3RyaW5nOm1fY29uZmlndXJhdGlvbi5sb2NhbC0+cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2
NCBvcHRpb25zOjBdKTsKLSAgICBmb3IgKE5TRGljdGlvbmFyeSAqY3JlZGVudGlhbCA6IGNyZWRl
bnRpYWxzKSB7Ci0gICAgICAgIGlmIChbY3JlZGVudGlhbFsoaWQpa1NlY0F0dHJBcHBsaWNhdGlv
blRhZ10gaXNFcXVhbFRvRGF0YTpwcmVmZXJyZWRVc2VyaGFuZGxlLmdldCgpXSkKLSAgICAgICAg
ICAgIHJldHVybiBjcmVkZW50aWFsOworICAgIGNvbnN0IGF1dG8mIHByZWZlcnJlZFVzZXJoYW5k
bGVCYXNlNjQgPSBtX2NvbmZpZ3VyYXRpb24ubG9jYWwtPnByZWZlcnJlZFVzZXJoYW5kbGVCYXNl
NjQ7CisgICAgaWYgKHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGl0ciA9IHJlc3BvbnNlcy5iZWdpbigpOworICAgIGZvciAo
OyBpdHIgIT0gcmVzcG9uc2VzLmVuZCgpOyArK2l0cikgeworICAgICAgICBhdXRvKiB1c2VySGFu
ZGxlID0gaXRyLT5nZXQoKS51c2VySGFuZGxlKCk7CisgICAgICAgIEFTU0VSVCh1c2VySGFuZGxl
KTsKKyAgICAgICAgYXV0byB1c2VyaGFuZGxlQmFzZTY0ID0gYmFzZTY0RW5jb2RlKHVzZXJIYW5k
bGUtPmRhdGEoKSwgdXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgaWYgKHVzZXJo
YW5kbGVCYXNlNjQgPT0gcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCkKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbmlsOwor
ICAgIGF1dG8gcmVzcG9uc2UgPSByZXNwb25zZXMudGFrZShpdHIpOworICAgIEFTU0VSVChyZXNw
b25zZSk7CisgICAgcmVzcG9uc2VzLmNsZWFyKCk7CisgICAgcmVzcG9uc2VzLmFkZChXVEZNb3Zl
KCpyZXNwb25zZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9u
RmxhZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0aW9uRmxhZ3MuaAppbmRleCA1NDg4YTIxMTM5MjkyNmMwYTM2NmZmYTg3Zjc2NTkw
OWQ5MWU1Yjg4Li45NzUxODNkZmQ1Nzc1MmQxMjNmNjUzMzdiNzZiNzk1NTI0NjYxMWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdGlvbkZsYWdzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRpb25GbGFncy5oCkBAIC00NSw3ICs0NSwxMCBAQCBlbnVt
IGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIDogdWludDhfdCB7CiAgICAgTm9DcmVkZW50
aWFsc0ZvdW5kLAogICAgIFBpbkJsb2NrZWQsCiAgICAgUGluQXV0aEJsb2NrZWQsCi0gICAgUGlu
SW52YWxpZAorICAgIFBpbkludmFsaWQsCisgICAgTEFFcnJvciwKKyAgICBMQUR1cGxpY2F0ZUNy
ZWRlbnRpYWwsCisgICAgTEFOb0NyZWRlbnRpYWwsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDJjY2ZiNjVhODRhMjdjZmJlNzY1YmY3NWI5MTZjNjUzMTIzZjYzMjQuLjQ1ZWNjYzU2Nzcx
MGQ3MWJkNjQ3YzE3YzA3MDYwZmM2YzRhYmE0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Niw2ICsxMDk2LDcgQEAKIAkJNTcw
REFBQzYyMzAzN0Y3RjAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERBQUM0MjMwMzdG
N0UwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi87IH07CiAJCTU3MERB
QUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyog
Q3RhcE5mY0RyaXZlci5oICovOyB9OwogCQk1NzJGRDQ0MzIyMjY1Q0UyMDBBMUVDQzMgLyogV2Vi
Vmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0Rp
ZE1vdmVUb1dpbmRvd09ic2VydmVyLmggKi87IH07CisJCTU3NDIxNzkyMjQwMEUyODYwMDJCMzAz
RCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyogTG9jYWxBdXRo
ZW50aWNhdGlvblNQSS5oICovOyB9OwogCQk1NzQ3MjhEMTIzNDU2RTk4MDAxNzAwQUYgLyogX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc0NzI4Q0YyMzQ1NkU5ODAwMTcwMEFGIC8qIF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1NzQ3MjhENDIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzQ3MjhEMzIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bEludGVybmFsLmggKi87IH07CiAJCTU3NTk3RUI5MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlk
RHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oICovOyB9OwpAQCAtMzgx
MSw2ICszODEyLDcgQEAKIAkJNTcwREFBQzgyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ3RhcE5mY0RyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzBEQUFDOTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDdGFwTmZjRHJpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTcyRkQ0NDEyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZpZXdEaWRNb3ZlVG9X
aW5kb3dPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWV3RGlkTW92ZVRvV2luZG93T2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc0MjE3OTEyNDAwRTA5ODAw
MkIzMDNEIC8qIExvY2FsQXV0aGVudGljYXRpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxB
dXRoZW50aWNhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQ3MjhD
RjIzNDU2RTk4MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3NDcyOEQwMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0NzI4RDMyMzQ1NzBBRTAwMTcw
MEFGIC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTY4MzksNiArNjg0MSw3IEBACiAJCQkJMUE1NzA1MTAxQkU0MTBFNTAwODc0
QUYxIC8qIEJsb2NrU1BJLmggKi8sCiAJCQkJMzdDMjFDQUQxRTk5NEMwQzAwMjlENUY5IC8qIENv
cmVQcmVkaWN0aW9uU1BJLmggKi8sCiAJCQkJMkRBQURBOEUyMjk4QzIxMDAwRTM2QjBDIC8qIERl
dmljZU1hbmFnZW1lbnRTUEkuaCAqLywKKwkJCQk1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyog
TG9jYWxBdXRoZW50aWNhdGlvblNQSS5oICovLAogCQkJCTU3QjgyNjQwMjMwNEVCM0UwMEI3MkVC
MCAvKiBOZWFyRmllbGRTUEkuaCAqLywKIAkJCQkzNzU0RDU0NDFCM0EyOUZEMDAzQTRDN0YgLyog
TlNJbnZvY2F0aW9uU1BJLmggKi8sCiAJCQkJMzdCNDdFMkMxRDY0REI3NjAwNUY0RUZGIC8qIG9i
amNTUEkuaCAqLywKQEAgLTEwMzYyLDYgKzEwMzY1LDcgQEAKIAkJCQk0MTMwNzVCMjFERTg1RjU4
MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQxMDg3NjExRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzQyMTc5MjI0MDBFMjg2MDAyQjMwM0QgLyog
TG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQUMyMTRD
NjAyNzAwMTZCODQ3IC8qIExvY2FsQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdEQ0VEQUQyMTRDNjAyQzAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdEQ0VEQUUyMTRDNjAzMzAwMTZCODQ3IC8qIExvY2FsU2VydmljZS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggODNlZWQwYjgwNDdmZjQ2MDUzOWMwN2RjYmRkMDM2NWYwNjExNWYyNC4uOWJmOWM2NjIx
MGE4OTE2Njg0NGY3OGMxZmVkZDhkNTczZWNmODMyYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTAyLTIxICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJ
bXBsZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBCZXNpZGVzIGFkZGluZyBBUEkgdGVzdHMsIHRoaXMgcGF0Y2ggYWxzbyB0
ZWFjaGVzIFRlc3RXZWJLaXRBUEkgdG8gdXNlIHJlc3RyaWN0ZWQgZW50aXRsZW1lbnRzLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09T
LmVudGl0bGVtZW50czoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rl
c3RXZWJLaXRBUEkueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAo
LVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnVwZGF0ZVdlYkF1dGhl
bnRpY2F0aW9uUGFuZWw6XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVs
RGVsZWdhdGUgcGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFuZWw6
dmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sOiBDb3Bp
ZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLmh0bWwuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxp
Y2F0ZS1jcmVkZW50aWFsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJv
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbDogQWRkZWQuCisKIDIw
MjAtMDItMjEgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQXBwLWJvdW5kIGRvbWFpbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgTmV0d29yayBTZXNz
aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmln
dXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHMKaW5kZXggZWEwYzFmN2M0
NzRhMjVjNzEwYzM4NWRkNjhiYzk0ZTgyMDkwYTcxMC4uYTlmOWNkZjA0YzJmYmJkMDJlM2EyZWVm
MjI2MjQ3YWU2ZWI5NjIzOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cworKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1lbnRz
CkBAIC0yLDYgKzIsMTAgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQg
UExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEu
MC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KKwk8a2V5PmtleWNoYWluLWFj
Y2Vzcy1ncm91cHM8L2tleT4KKwk8YXJyYXk+CisJCTxzdHJpbmc+Y29tLmFwcGxlLlRlc3RXZWJL
aXRBUEk8L3N0cmluZz4KKwk8L2FycmF5PgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBv
cmFyeS1leGNlcHRpb24uc2JwbDwva2V5PgogCTxhcnJheT4KIAkJPHN0cmluZz4oYWxsb3cgbWFj
aC1pc3N1ZS1leHRlbnNpb24gKHJlcXVpcmUtYWxsIChleHRlbnNpb24tY2xhc3MgJnF1b3Q7Y29t
LmFwcGxlLndlYmtpdC5leHRlbnNpb24ubWFjaCZxdW90OykpKTwvc3RyaW5nPgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29u
ZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhj
Y29uZmlnCmluZGV4IDMwYThjYWYwYzI0NzBkNjc2YjZkY2UzNjIxZjA5YjA0YWM3OTBkMzEuLmNh
OGUxNzE1YWNlMWM2M2E2MGQ4YjQ1YzFjMWZiNTcxODBkM2VmZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25m
aWcKQEAgLTY5LDMgKzY5LDEwIEBAIENPREVfU0lHTl9FTlRJVExFTUVOVFNbc2RrPWlwaG9uZSpd
ID0gQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lCiBDT0RFX1NJR05f
RU5USVRMRU1FTlRTW3Nkaz1tYWNvc3gqXSA9IENvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkt
bWFjT1MuZW50aXRsZW1lbnRzOwogCiBTVFJJUF9TVFlMRSA9IGRlYnVnZ2luZzsKKworQ09ERV9T
SUdOX0lERU5USVRZW3Nkaz1tYWNvc3gqXSA9ICQoQ09ERV9TSUdOX0lERU5USVRZXyQoQ09ORklH
VVJBVElPTikpOworQ09ERV9TSUdOX0lERU5USVRZX0RlYnVnID0gJChDT0RFX1NJR05fSURFTlRJ
VFlfJChVU0VfSU5URVJOQUxfU0RLKSk7CitDT0RFX1NJR05fSURFTlRJVFlfUmVsZWFzZSA9ICQo
Q09ERV9TSUdOX0lERU5USVRZXyQoVVNFX0lOVEVSTkFMX1NESykpOworQ09ERV9TSUdOX0lERU5U
SVRZX1lFUyA9ICQoV0tfRU5HSU5FRVJJTkdfQ09ERV9TSUdOX0lERU5USVRZKTsKK0NPREVfU0lH
Tl9JREVOVElUWV9Qcm9kdWN0aW9uID0gJChDT0RFX1NJR05fSURFTlRJVFlfUHJvZHVjdGlvbl8k
KFVTRV9JTlRFUk5BTF9TREspKTsKK0NPREVfU0lHTl9JREVOVElUWV9Qcm9kdWN0aW9uX1lFUyA9
IC07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU0MTU3ZjY4OGQ5ZDBiYjhmZTcxY2RhYjg5
YmM4N2IwZGNmMTNhNDUuLmNmMjUyM2UyYzMwNWNiMjFmYTE4ZmJhYmUyMTI4MjNmNzVlYjM1Y2Ig
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDksNiArMzQ5LDEwIEBACiAJCTU3MzI1NUE1
MjIxMzlCQzcwMDM5NkFFOCAvKiBoZWxsb3dvcmxkLndlYmFyY2hpdmUgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMjU1QTQyMjEzOUI5MDAw
Mzk2QUU4IC8qIGhlbGxvd29ybGQud2ViYXJjaGl2ZSAqLzsgfTsKIAkJNTczMjU1QTYyMjEzOUJD
NzAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzI1NUEyMjIxMzlCOEYwMDM5NkFF
OCAvKiBsb2FkLXdlYi1hcmNoaXZlLTEuaHRtbCAqLzsgfTsKIAkJNTczMjU1QTcyMjEzOUJDNzAw
Mzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzI1NUEzMjIxMzlCOTAwMDM5NkFFOCAv
KiBsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCAqLzsgfTsKKwkJNTc0MjE3ODgyNDAwQUMyNTAwMkIz
MDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQy
MTc4NzI0MDBBQkZEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC1sYS1lcnJvci5odG1sICovOyB9OworCQk1NzQyMTc4QTI0MDBBRUQ4MDAyQjMwM0QgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3NDIxNzg5MjQwMEFFRDAwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgKi87IH07CisJCTU3NDIxNzhDMjQw
MENENDcwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
NDIxNzhCMjQwMENEMkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1sYS5odG1sICovOyB9OworCQk1NzQyMTc4RTI0MDBEMkRGMDAyQjMwM0QgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAv
KiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi87IH07CiAJCTU3
NEY1NUQyMjA0RDQ3RjAwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzRGNTVEMDIwNEQ0NzFDMDAy
OTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovOyB9OwogCQk1NzU4NTk3RjIzQTI1MjdBMDBD
NzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1ODU5N0UyM0EyNTI3QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNw
cCAqLzsgfTsKIAkJNTc1ODU5ODQyM0MzQzNBNDAwQzc0NTcyIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQtcmV0cmllcy1lcnJvci5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTgzMjND
M0MzNjIwMEM3NDU3MiAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1w
aW4tZ2V0LXJldHJpZXMtZXJyb3IuaHRtbCAqLzsgfTsKQEAgLTE1MTcsNiArMTUyMSw3IEBACiAJ
CQkJNTc4REE0NEUyM0VDRDI4QjAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTU3MEQyNkZDMjNDM0Y4NzAwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQtcGluLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc2
NjNERUMyMzRGMUY5MzAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9u
LWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTU3NDIxNzhDMjQwMENENDcwMDJC
MzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCTU3OTgzMzkyMjM2OEZBMzcwMDhFNTU0NyAvKiB3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTU3NjYzREVBMjM0RUE2NkQwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGlj
YXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1
Nzc0NTREMjIzNTlCQjAxMDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24tdTJmLW5vLWNyZWRlbnRpYWxzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNTMx
LDYgKzE1MzYsOSBAQAogCQkJCTU3OERBNDRBMjNFQ0QxODYwMDI0NjAxMCAvKiB3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3MEQyNkY2MjNDM0QzMzAwMEQ1Q0Y2NyAvKiB3
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQk1Nzk4MzM3RTIzNjAxOUE0MDA4RTU1NDcgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJ
CQk1NzQyMTc4QTI0MDBBRUQ4MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAorCQkJCTU3NDIxNzg4MjQwMEFDMjUwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTc0
MjE3OEUyNDAwRDJERjAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4NjFDODkyNTlEMDBB
NTUyOUYgLyogd2ViZm9udC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTUxNzE0RUI0
MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTUxNzE0RUI1MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9j
ZXNzS2lsbElEQkNsZWFudXAtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTk2MSw2
ICsxOTY5LDExIEBACiAJCTU3MzI1NUEzMjIxMzlCOTAwMDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNo
aXZlLTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzI1NUE0MjIxMzlCOTAwMDM5NkFFOCAvKiBoZWxsb3dv
cmxkLndlYmFyY2hpdmUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlLmJwbGlzdDsgcGF0aCA9IGhlbGxvd29ybGQud2ViYXJjaGl2ZTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczNUYwMjUxRjNBNEVBNjAwMEVFODAxIC8qIFRlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gIlRlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLWVycm9yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS1lcnJvci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTc0MjE3ODkyNDAwQUVEMDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTc0MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWxhLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzQyMTc4RjI0MDBENTREMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NEY1NUQwMjA0RDQ3MUMwMDI5
NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5LmZy
YW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJNTc1ODU5N0QyM0EyNTI3QTAwQzc0NTcy
IC8qIEN0YXBQaW5UZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN0YXBQaW5UZXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTg1OTdFMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGlu
VGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdGFwUGluVGVzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zNTc5LDYgKzM1OTIsNyBAQAogCQkJCTU3OERBNDREMjNFQ0Qy
NjEwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLWlu
dmFsaWQtZXJyb3ItcmV0cnkuaHRtbCAqLywKIAkJCQk1NzBEMjZGQjIzQzNGODY1MDBENUNGNjcg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi5odG1sICovLAogCQkJ
CTU3NjYzREVCMjM0RjFGODAwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1oaWQuaHRtbCAqLywKKwkJCQk1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLywKIAkJCQk1Nzk4MzM3QjIzNUVC
NjVDMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRp
cGxlLXRhZ3MuaHRtbCAqLywKIAkJCQk1NzY2M0RFOTIzNEVBNjBCMDBFODVFMDkgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwgKi8sCiAJCQkJNTc3NDU0RDEyMzU5
QkFENTAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLXUyZi1uby1j
cmVkZW50aWFscy5odG1sICovLApAQCAtMzU5Myw2ICszNjA3LDEwIEBACiAJCQkJNTc4REE0NDky
M0VDRDE1NTAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlk
LXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0bWwgKi8sCiAJCQkJNTcwRDI2RjUyM0MzRDMyNzAw
RDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi5odG1s
ICovLAogCQkJCTU3OTgzMzdEMjM2MDE5NkQwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWhpZC5odG1sICovLAorCQkJCTU3NDIxNzg5MjQwMEFFRDAwMDJCMzAz
RCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVk
ZW50aWFsLmh0bWwgKi8sCisJCQkJNTc0MjE3ODcyNDAwQUJGRDAwMkIzMDNEIC8qIHdlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCAqLywKKwkJCQk1NzQyMTc4
RDI0MDBEMjZDMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS5odG1sICovLAorCQkJCTU3NDIxNzhGMjQwMEQ1NEQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcy
M0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjMx
Q0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgKi8sCiAJ
CQkJNTEyMEM4M0IxRTY3NEUzNTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRo
cy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDA4MzNj
NDk4OWFiYzNhYTM0YTNjYTY4ODMxZDA0YWY0MDYyZjM2ZTMuLmJmNzk0NjFjZTcyMjA3YzUxZjlk
M2IyMmQ3MTRkODI3NWEwYTBiODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgor
I2ltcG9ydCA8TG9jYWxBdXRoZW50aWNhdGlvbi9Mb2NhbEF1dGhlbnRpY2F0aW9uLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJ
RGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVy
ZS5oPgpAQCAtMzksNiArNDAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JhbmRv
bU51bWJlci5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogI2ltcG9y
dCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIHN0YXRpYyBib29sIHdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSBmYWxzZTsKQEAgLTQ5LDkgKzUxLDE4IEBAIHN0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVOb0NyZWRlbnRpYWxzRm91bmQgPSBm
YWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5CbG9ja2Vk
ID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlUElOQXV0
aEJsb2NrZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRh
dGVQSU5JbnZhbGlkID0gZmFsc2U7CitzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlTEFFcnJvciA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5l
bFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0
aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFsID0gZmFsc2U7CiBzdGF0aWMgYm9v
bCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKK3N0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyID0gZmFsc2U7CiBzdGF0aWMg
U3RyaW5nIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxQaW47CiBzdGF0aWMgQk9PTCB3ZWJBdXRoZW50
aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUgPSBOTzsKK3N0YXRpYyBTdHJpbmcgdGVzdEVTMjU2
UHJpdmF0ZUtleUJhc2U2NCA9CisgICAgIkJEai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBn
RnBzakYvUW0xNzQ5VkJKUGdxVUl3ZmhXSEo5MW5iN1UiCisgICAgIlBINzZjMCtXRk96WktzbFB5
eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVuZm5CZ0VWRmg1emV2Ky94cEhRSXZ1cTYiCisgICAgIlJR
PT0iOworc3RhdGljIFN0cmluZyB0ZXN0VXNlcmhhbmRsZUJhc2U2NCA9ICJBQUVDQXdRRkJnY0lD
UT09IjsKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDog
TlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4KIEBlbmQKQEAgLTg0
LDYgKzk1LDE4IEBAIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilw
YW5lbCB1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOihfCiAgICAgICAgIHdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxVcGRhdGVQSU5JbnZhbGlkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICBpZiAodXBkYXRlID09IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVy
cm9yKSB7CisgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodXBkYXRlID09IF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWwpIHsKKyAgICAgICAgd2Vi
QXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCA9IHRydWU7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHVwZGF0ZSA9PSBfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWwpIHsKKyAgICAgICAgd2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFsID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIH0KIAogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVs
IGRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGlj
YXRpb25SZXN1bHQpcmVzdWx0CkBAIC0xMTEsNiArMTM0LDExIEBAIC0gKHZvaWQpcGFuZWw6KF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1Jl
dHJpZXM6CiAKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5l
bCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBpZiAocmVzcG9uc2VzLmNvdW50ID09IDEpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IEVYUEVDVF9FUShyZXNwb25zZXMuY291bnQsIDJ1bCk7CiAgICAgZm9yIChfV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpyZXNwb25zZSBpbiByZXNwb25zZXMpIHsKICAgICAg
ICAgRVhQRUNUX1RSVUUoW3Jlc3BvbnNlLm5hbWUgaXNFcXVhbDpAImpvaG5wc21pdGhAZXhhbXBs
ZS5jb20iXSB8fCBbcmVzcG9uc2UubmFtZSBpc0VxdWFsOkAiIl0pOwpAQCAtMTIzLDYgKzE1MSwx
MyBAQCAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2Vs
ZWN0QXNzZXJ0aW9uUmVzcG9uc2U6KE5TQXJyYQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3Bv
bnNlc1tpbmRleF0pOwogfQogCistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsICopcGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9s
UmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAq
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlV
c2VyID0gdHJ1ZTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFtbTEFDb250ZXh0IGFsbG9j
XSBpbml0XSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dC5nZXQoKSk7Cit9CisKIEBl
bmQKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbEZha2VEZWxlZ2F0ZSA6
IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+CkBAIC0yMzEsNiAr
MjY2LDI0IEBAIHN0YXRpYyBfV0tFeHBlcmltZW50YWxGZWF0dXJlICp3ZWJBdXRoZW50aWNhdGlv
bkV4cGVyaW1lbnRhbEZlYXR1cmUoKQogICAgIHJldHVybiB0aGVGZWF0dXJlLmdldCgpOwogfQog
CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgUExBVEZPUk0oSU9TKQorc3RhdGljIF9X
S0V4cGVyaW1lbnRhbEZlYXR1cmUgKndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9y
RXhwZXJpbWVudGFsRmVhdHVyZSgpCit7CisgICAgc3RhdGljIFJldGFpblB0cjxfV0tFeHBlcmlt
ZW50YWxGZWF0dXJlPiB0aGVGZWF0dXJlOworICAgIGlmICh0aGVGZWF0dXJlKQorICAgICAgICBy
ZXR1cm4gdGhlRmVhdHVyZS5nZXQoKTsKKworICAgIE5TQXJyYXkgKmZlYXR1cmVzID0gW1dLUHJl
ZmVyZW5jZXMgX2V4cGVyaW1lbnRhbEZlYXR1cmVzXTsKKyAgICBmb3IgKF9XS0V4cGVyaW1lbnRh
bEZlYXR1cmUgKmZlYXR1cmUgaW4gZmVhdHVyZXMpIHsKKyAgICAgICAgaWYgKFtmZWF0dXJlLmtl
eSBpc0VxdWFsOkAiV2ViQXV0aGVudGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFbmFibGVkIl0p
IHsKKyAgICAgICAgICAgIHRoZUZlYXR1cmUgPSBmZWF0dXJlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRoZUZlYXR1cmUuZ2V0KCk7Cit9CisjZW5k
aWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgUExBVEZPUk0oSU9TKQorCiBzdGF0aWMg
dm9pZCByZXNldCgpCiB7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbiA9IGZhbHNlOwpA
QCAtMjQxLDkgKzI5NCwxMyBAQCBzdGF0aWMgdm9pZCByZXNldCgpCiAgICAgd2ViQXV0aGVudGlj
YXRpb25QYW5lbFVwZGF0ZVBJTkJsb2NrZWQgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlv
blBhbmVsVXBkYXRlUElOQXV0aEJsb2NrZWQgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlv
blBhbmVsVXBkYXRlUElOSW52YWxpZCA9IGZhbHNlOworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVMQUVycm9yID0gZmFsc2U7CisgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZUxBRHVwbGljYXRlQ3JlZGVudGlhbCA9IGZhbHNlOworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGVMQU5vQ3JlZGVudGlhbCA9IGZhbHNlOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDYW5jZWxJbW1lZGlhdGVseSA9IGZhbHNlOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxQ
aW4gPSBlbXB0eVN0cmluZygpOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhh
bmRsZSA9IE5POworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyID0gZmFsc2U7
CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrUGFuZWwoX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAq
cGFuZWwsIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJRCwgTlNBcnJheSAqdHJhbnNwb3J0cywgX1dL
V2ViQXV0aGVudGljYXRpb25UeXBlIHR5cGUpCkBAIC0yNzcsNiArMzM0LDYwIEBAIHN0YXRpYyB2
b2lkIGNoZWNrRnJhbWVJbmZvKFdLRnJhbWVJbmZvICpmcmFtZSwgYm9vbCBpc01haW5GcmFtZSwg
TlNTdHJpbmcgKnVybCwKICAgICBFWFBFQ1RfRVEoZnJhbWUud2ViVmlldywgd2ViVmlldyk7CiB9
CiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSB8fCBQTEFURk9STShJT1MpCisKK2Jvb2wg
YWRkS2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNlNjQsIGNvbnN0IFN0
cmluZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VySGFuZGxlQmFzZTY0KQoreworICAgIE5TRGlj
dGlvbmFyeSogb3B0aW9ucyA9IEB7CisgICAgICAgIChpZClrU2VjQXR0cktleVR5cGU6IChpZClr
U2VjQXR0cktleVR5cGVFQ1NFQ1ByaW1lUmFuZG9tLAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlD
bGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAorICAgICAgICAoaWQpa1NlY0F0dHJL
ZXlTaXplSW5CaXRzOiBAMjU2LAorICAgIH07CisgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51
bGxwdHI7CisgICAgYXV0byBrZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVdpdGhEYXRhKAorICAg
ICAgICAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
QmFzZTY0RW5jb2RlZFN0cmluZzpwcml2YXRlS2V5QmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0
RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKW9wdGlvbnMsCisgICAgICAgICZlcnJvclJlZgorICAgICkpOwor
ICAgIGlmIChlcnJvclJlZikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTlNEaWN0aW9u
YXJ5KiBhZGRRdWVyeSA9IEB7CisgICAgICAgIChpZClrU2VjVmFsdWVSZWY6IChpZClrZXkuZ2V0
KCksCisgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCisgICAgICAgIChp
ZClrU2VjQXR0ckxhYmVsOiBycElkLAorICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRh
ZzogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOnVz
ZXJIYW5kbGVCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0lnbm9yZVVua25vd25D
aGFyYWN0ZXJzXSkuZ2V0KCksCisgICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc2libGU6IChpZClr
U2VjQXR0ckFjY2Vzc2libGVBZnRlckZpcnN0VW5sb2NrLAorI2lmIEhBVkUoREFUQV9QUk9URUNU
SU9OX0tFWUNIQUlOKQorICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46
IEBZRVMKKyNlbHNlCisgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCisjZW5kaWYK
KyAgICB9OworICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1BZGQoKF9fYnJpZGdlIENGRGlj
dGlvbmFyeVJlZilhZGRRdWVyeSwgTlVMTCk7CisgICAgaWYgKHN0YXR1cykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgY2xlYW5VcEtleWNoYWlu
KGNvbnN0IFN0cmluZyYgcnBJZCkKK3sKKyAgICBOU0RpY3Rpb25hcnkqIGRlbGV0ZVF1ZXJ5ID0g
QHsKKyAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKKyAgICAgICAgKGlk
KWtTZWNBdHRyTGFiZWw6IHJwSWQsCisgICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc2libGU6IChp
ZClrU2VjQXR0ckFjY2Vzc2libGVBZnRlckZpcnN0VW5sb2NrLAorI2lmIEhBVkUoREFUQV9QUk9U
RUNUSU9OX0tFWUNIQUlOKQorICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hh
aW46IEBZRVMKKyNlbHNlCisgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCisjZW5k
aWYKKyAgICB9OworICAgIFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilk
ZWxldGVRdWVyeSk7Cit9CisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSB8fCBQ
TEFURk9STShJT1MpCisKIH0gLy8gbmFtZXNhcGNlOwogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwsIE5vUGFuZWxUaW1lb3V0KQpAQCAtMTA3Niw2ICsxMTg3LDEyNCBAQCBURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIE11bHRpcGxlQWNjb3VudHMpCiAgICAgRVhQRUNUX0VRKFtbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXNlckhhbmRsZSJdIGlzRXF1YWxU
b1N0cmluZzpAIjxudWxsPiJdLCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUp
OwogfQogCisvLyBGb3IgbWFjT1MsIG9ubHkgaW50ZXJuYWwgYnVpbGRzIGNhbiBzaWduIGtleWNo
YWluIGVudGl0bGVtbmV0cworLy8gd2hpY2ggYXJlIHJlcXVpcmVkIHRvIHJ1biBsb2NhbCBhdXRo
ZW50aWNhdG9yIHRlc3RzLgorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspIHx8IFBMQVRGT1JN
KElPUykKKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUVycm9yKQoreworICAgIHJl
c2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwt
bGEtZXJyb3IiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpA
IldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllF
U107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9y
RXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUo
KV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9y
RXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4
cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcg
c2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGls
OjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yKTsKK30KKworVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUR1cGxpY2F0ZUNyZWRlbnRpYWwpCit7CisgICAgcmVz
ZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS1kdXBsaWNhdGUtY3JlZGVudGlhbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpT
Q0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRF
bmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJp
bWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRF
bmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxB
dXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3Qg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIEFTU0VS
VF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIsIHRl
c3RVc2VyaGFuZGxlQmFzZTY0KSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJB
dXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFEdXBsaWNhdGVDcmVkZW50aWFsKTsKKyAgICBjbGVh
blVwS2V5Y2hhaW4oIiIpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTm9D
cmVkZW50aWFsKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJM
ID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNh
dGlvbi1nZXQtYXNzZXJ0aW9uLWxhIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24g
PSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVn
SW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlND
Rm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVu
YWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmlt
ZW50YWxGZWF0dXJlKCldOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVu
YWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25Mb2NhbEF1
dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgp
XV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRl
bnRpYWwpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRp
YWxOdWxsRGVsZWdhdGUpCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRl
c3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1
cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhU
ZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZp
Z3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNd
IF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9u
RXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNd
IF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9u
TG9jYWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKKyAgICBbZGVsZWdhdGUgc2V0SXNOdWxsOnRydWVdOworICAgIFt3ZWJWaWV3IHNldFVJ
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgW3dlYlZpZXcg
d2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CisgICAgY2xlYW5VcEtleWNoYWluKCIiKTsK
K30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVkZW50aWFsKQorewor
ICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpA
IldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllF
U107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9y
RXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUo
KV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9y
RXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4
cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcg
c2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGls
OjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyKTsKKyAgICBjaGVja1BhbmVs
KFtkZWxlZ2F0ZSBwYW5lbF0sIEAiIiwgQFthZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRX
aXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCXSkuZ2V0KCksIGFkb3B0TlMo
W1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3Bv
cnRJbnRlcm5hbF0pLmdldCgpXSwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlQ3JlYXRlKTsKKyAg
ICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKK30KKworVEVTVChXZWJB
dXRoZW50aWNhdGlvblBhbmVsLCBMQUdldEFzc2VydGlvbikKK3sKKyAgICByZXNldCgpOworICAg
IFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYSIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisK
KyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3Rf
Y29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldp
dGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJl
OndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKyAgICBbW2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJl
OndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRXhwZXJpbWVudGFsRmVhdHVyZSgp
XTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJ
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKKworICAgIEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2
UHJpdmF0ZUtleUJhc2U2NCwgIiIsIHRlc3RVc2VyaGFuZGxlQmFzZTY0KSk7CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgp
XV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlcik7Cisg
ICAgY2hlY2tQYW5lbChbZGVsZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRvcHROUyhbW05TTnVtYmVy
IGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQl0pLmdl
dCgpLCBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRp
Y2F0aW9uVHJhbnNwb3J0SW50ZXJuYWxdKS5nZXQoKV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlw
ZUdldCk7CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CisgICAg
Y2xlYW5VcEtleWNoYWluKCIiKTsKK30KKworI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspIHx8IFBMQVRGT1JNKElPUykKKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEu
aHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmEzYzViYTQ0YjAyZmIx
MDUyOWQwMTRkZjVkZTY0MjhkNDk4MGJmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1sYS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQi
PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2Vw
dEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAg
ICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0p
OworICAgIH0KKworICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgIHB1YmxpY0tleTogewor
ICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAgICB0
aW1lb3V0OiAxMDAKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUu
bG9nKCJTdWNjZWVkZWQhIik7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJTdWNjZWVkZWQhIik7CisgICAgfSwgZXJyb3IgPT4g
eworICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZXJyb3IubWVz
c2FnZSk7CisgICAgfSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0
ZS1jcmVkZW50aWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFhNTk2NTA2YTUzNGIyNWYwYmM2NTg4OTYx
YmUzZGRlYjQ0YjQxYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBs
aWNhdGUtY3JlZGVudGlhbC5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0
IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBjb25zdCB0ZXN0Q3JlZGVudGlhbElkSGV4ID0g
IjQ4QzQ5NzFFNzgwNUVFMTEwRUIwNDk0MEVGNzBCNzQ1OEZCQzZEMUUiOworICAgIGZ1bmN0aW9u
IGhleFN0cmluZ1RvVWludDhBcnJheShoZXhTdHJpbmcpCisgICAgeworICAgICAgICBpZiAoaGV4
U3RyaW5nLmxlbmd0aCAlIDIgIT0gMCkKKyAgICAgICAgICAgIHRocm93ICJJbnZhbGlkIGhleFN0
cmluZyI7CisgICAgICAgIHZhciBhcnJheUJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KGhleFN0cmlu
Zy5sZW5ndGggLyAyKTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhleFN0cmluZy5s
ZW5ndGg7IGkgKz0gMikgeworICAgICAgICAgICAgdmFyIGJ5dGVWYWx1ZSA9IHBhcnNlSW50KGhl
eFN0cmluZy5zdWJzdHIoaSwgMiksIDE2KTsKKyAgICAgICAgICAgIGlmIChieXRlVmFsdWUgPT0g
TmFOKQorICAgICAgICAgICAgICAgIHRocm93ICJJbnZhbGlkIGhleFN0cmluZyI7CisgICAgICAg
ICAgICBhcnJheUJ1ZmZlcltpLzJdID0gYnl0ZVZhbHVlOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGFycmF5QnVmZmVyOworICAgIH0KKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7
CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlv
bjogZmFsc2UgfSB9KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7
IGlucHV0LmZvY3VzKCk7IH0pOworICAgIH0KKworICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAg
ICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICBuYW1l
OiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB1c2VyOiB7CisgICAg
ICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICBpZDog
bmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVz
ZWVkIiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFy
cmF5KDE2KSwKKyAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBpZDogaGV4U3RyaW5nVG9VaW50OEFycmF5KHRlc3RDcmVkZW50aWFs
SWRIZXgpIH1dLAorICAgICAgICAgICAgdGltZW91dDogMTAwLAorICAgICAgICB9CisgICAgfTsK
KworICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyk7Cis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1
dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50
aWFsLWxhLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYxNjEyMWJhNGNhMmRiNTMzZGZlNWQyYmYw
MzMwNGNkYTUyNDYyZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJv
ci5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgor
PHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1
dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAg
ICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsK
KyAgICB9CisKKyAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6IHsKKyAg
ICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgIG5hbWU6ICJK
b2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgaWQ6IG5ldyBVaW50OEFycmF5KDE2KSwK
KyAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAg
ICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTM1IH0sIHsg
dHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC0yNTcgfV0sIC8vIEVTMzg0LCBSUzI1NgorICAgICAg
ICAgICAgdGltZW91dDogMTAwLAorICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTI3ZTI1Y2EyZGEyYmVkNGQ4OWE4MGIwMjdiNmEwOTU2MGFiMmM1NgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0
aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzxpbnB1dCB0eXBl
PSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBjb25zdCB0ZXN0RVMyNTZQcml2YXRl
S2V5QmFzZTY0ID0KKyAgICAgICAgIkJEai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBnRnBz
akYvUW0xNzQ5VkJKUGdxVUl3ZmhXSEo5MW5iN1UiICsKKyAgICAgICAgIlBINzZjMCtXRk96Wktz
bFB5eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVuZm5CZ0VWRmg1emV2Ky94cEhRSXZ1cTYiICsKKyAg
ICAgICAgIlJRPT0iOworICAgIGNvbnN0IHRlc3RBdHRlc3RhdGlvbkNlcnRpZmljYXRlQmFzZTY0
ID0KKyAgICAgICAgIk1JSUI2akNDQVpDZ0F3SUJBZ0lHQVdIQXhjanZNQW9HQ0NxR1NNNDlCQU1D
TUZNeEp6QWxCZ05WQkFNTUhrSmgiICsKKyAgICAgICAgImMybGpJRUYwZEdWemRHRjBhVzl1SUZW
elpYSWdVM1ZpSUVOQk1URVRNQkVHQTFVRUNnd0tRWEJ3YkdVZ1NXNWoiICsKKyAgICAgICAgIkxq
RVRNQkVHQTFVRUNBd0tRMkZzYVdadmNtNXBZVEFlRncweE9EQXlNak13TXpNM01qSmFGdzB4T0RB
eU1qUXciICsKKyAgICAgICAgIk16UTNNakphTUdveElqQWdCZ05WQkFNTUdUQXdNREE0TURFd0xU
QXdNRUUwT1VFeU16QkJNREl4TTBFeEdqQVkiICsKKyAgICAgICAgIkJnTlZCQXNNRVVKQlFTQkRa
WEowYVdacFkyRjBhVzl1TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1STXciICsKKyAgICAg
ICAgIkVRWURWUVFJREFwRFlXeHBabTl5Ym1saE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERB
UWNEUWdBRXZDamUiICsKKyAgICAgICAgIlB6cjZTZzc2WE1vSHVHYWJQYUc2empwTEZMOFpkOC83
NEhoNVBjTDJacStvK2Y3RU5YWCs3bkVYWFl0MFM4VXgiICsKKyAgICAgICAgIjVUSVJ3NGhnYmZ4
WFFiV0xFcU01TURjd0RBWURWUjBUQVFIL0JBSXdBREFPQmdOVkhROEJBZjhFQkFNQ0JQQXciICsK
KyAgICAgICAgIkZ3WUpLb1pJaHZkalpBZ0NCQW93Q0tFR0JBUjBaWE4wTUFvR0NDcUdTTTQ5QkFN
Q0EwZ0FNRVVDSUFsSzhBOEkiICsKKyAgICAgICAgIms0M1Ridkt1WUdIWnMxRFRncFR3bUtUQnZJ
VXc1YndnWnVZbkFpRUF0dUpqRExLYkdOSkFKRk1pNWRlRUJxbm8iICsKKyAgICAgICAgInBCVENx
YmZiREpjY2Z5UXBqblk9IjsKKyAgICBjb25zdCB0ZXN0QXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0
aWZpY2F0ZUJhc2U2NCA9CisgICAgICAgICJNSUlDSXpDQ0FhaWdBd0lCQWdJSWVOamhHOXRuREdn
d0NnWUlLb1pJemowRUF3SXdVekVuTUNVR0ExVUVBd3dlIiArCisgICAgICAgICJRbUZ6YVdNZ1FY
UjBaWE4wWVhScGIyNGdWWE5sY2lCU2IyOTBJRU5CTVJNd0VRWURWUVFLREFwQmNIQnNaU0JKIiAr
CisgICAgICAgICJibU11TVJNd0VRWURWUVFJREFwRFlXeHBabTl5Ym1saE1CNFhEVEUzTURReU1E
QXdOREl3TUZvWERUTXlNRE15IiArCisgICAgICAgICJNakF3TURBd01Gb3dVekVuTUNVR0ExVUVB
d3dlUW1GemFXTWdRWFIwWlhOMFlYUnBiMjRnVlhObGNpQlRkV0lnIiArCisgICAgICAgICJRMEV4
TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1STXdFUVlEVlFRSURBcERZV3hwWm05eWJtbGhN
Rmt3IiArCisgICAgICAgICJFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW9TWi8xdDll
QkFFVnA1YThQclhhY21iR2I4ek5DMVgzIiArCisgICAgICAgICJTdExJOVlPNlkwQ0w3YmxIbVNH
bWpHV1R3RDRRK2kwSjJCWTMrYlBIVEdSeUE5akdCM01TYmFObU1HUXdFZ1lEIiArCisgICAgICAg
ICJWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZCZ05WSFNNRUdEQVdnQlNENWFNaG5yQjB3L2xoa1Ay
WFRpTVFkcVNqIiArCisgICAgICAgICI4akFkQmdOVkhRNEVGZ1FVNW1XZjFEWUxUWFVkUTl4bU9I
L3VxZU5TRDgwd0RnWURWUjBQQVFIL0JBUURBZ0VHIiArCisgICAgICAgICJNQW9HQ0NxR1NNNDlC
QU1DQTJrQU1HWUNNUUMzTTM2MExMdEpTNjBaOXEzdlZqSnhNZ01jRlExcm9HVFVjS3F2IiArCisg
ICAgICAgICJXKzRoSjRDZUpqeVNYVGdxNklFSG4veVdhYjRDTVFDbTVObks2U09TSytBcVd1bTls
TDg3VzNFNkFBMWYyVHZKIiArCisgICAgICAgICIvaGdvay8zNGpyOTNuaFM4N3RPUU5keERTOHp5
aXF3PSI7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAgICAgICAgbG9jYWw6
IHsKKyAgICAgICAgICAgICAgICBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICBwcml2YXRl
S2V5QmFzZTY0OiB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0LAorICAgICAgICAgICAgICAgIHVz
ZXJDZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0dGVzdGF0aW9uQ2VydGlmaWNhdGVCYXNlNjQsCisg
ICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0dGVz
dGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQgfX0pOworICAgICAgICBpbnRlcm5hbHMu
d2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisgICAgfQorCisgICAg
Y29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICBycDog
eworICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQi
LAorICAgICAgICAgICAgICAgIGlkOiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAgICAg
ICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgcHViS2V5Q3JlZFBh
cmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgdGlt
ZW91dDogMTAwLAorICAgICAgICB9CisgICAgfTsKKworICAgIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgLy8gY29uc29s
ZS5sb2coIlN1Y2NlZWRlZCEiKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxl
cnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEiKTsKKyAgICB9LCBlcnJvciA9
PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpOworICAgICAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShlcnJvci5t
ZXNzYWdlKTsKKyAgICB9KTsKKzwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="407024"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391586</attachid>
            <date>2020-02-24 15:05:42 -0800</date>
            <delta_ts>2020-02-24 15:51:22 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208087-20200224150541.patch</filename>
            <type>text/plain</type>
            <size>99996</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uMDkwYjVmZDNlMmVkNTJjNzlhYjM4MTYzZWE0Y2Yw
YzJlODdlZDI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAyLTIxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81OTM2OTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgor
CisgICAgICAgIEVuaGFuY2VzIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSB0byBhY2Nv
bW1vbmRhdGUgcmVzcG9uc2VzCisgICAgICAgIHJldHVybmVkIGZyb20gdGhlIHBsYXRmb3JtIGF1
dGhlbnRpY2F0b3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldEF1
dGhlbnRpY2F0b3JEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjphdXRoZW50aWNhdG9y
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U6OnNpZ25hdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U6Om5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpkaXNwbGF5TmFtZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6Om51bWJlck9mQ3JlZGVudGlh
bHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlOjphY2Nlc3NDb250cm9sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6c2V0U2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6c2V0TmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnNldERpc3BsYXlOYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6c2V0TnVtYmVyT2ZD
cmVkZW50aWFscyk6CisKIDIwMjAtMDItMjEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFuIHVudXNlZCBsb2NhbCB2YXJpYWJsZSBhZnRl
ciByMjU2ODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU2MTAyYmNjODhjYWI3YjA2OGI0ZjRlMmI1OTkyZjA3N2Rk
NGJlMzAuLmM0NjMxNGUxNWVjODcyMTZhOGJiNjkyOTBkOTQ4N2JhMDFjZDllMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTA2IEBACisyMDIwLTAyLTIxICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQgU1BJIGZvciB0aGUgcGxh
dGZvcm0gYXV0aGVudGljYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA4MDg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTM2OTMwNT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIEhlcmUgaXMgdGhl
IG5ld2x5IGFkZGVkIFNQSToKKyAgICAgICAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZSkgeworICAgICAgICAgICAgLi4uCisgICAgICAg
ICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvciwKKyAgICAgICAgICAg
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUR1cGxpY2F0ZUNyZWRlbnRpYWwsCisg
ICAgICAgICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWws
CisgICAgICAgIH07CisKKyAgICAgICAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2Vi
QXV0aGVudGljYXRpb25UcmFuc3BvcnQpIHsKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRJbnRlcm5hbCwKKyAgICAgICAgfTsKKworICAg
ICAgICBAcHJvdG9jb2wgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDxOU09iamVj
dD4KKyAgICAgICAgQG9wdGlvbmFsCisgICAgICAgIC4uLgorICAgICAgICAtICh2b2lkKXBhbmVs
OihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nlc3ND
b250cm9sOihTZWNBY2Nlc3NDb250cm9sUmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKExBQ29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlcjsKKyAgICAgICAgQGVu
ZAorCisgICAgICAgIElsbHVzdHJhdGlvbnM6CisgICAgICAgIDEpIF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxVcGRhdGU6IFRocmVlIGVycm9ycyBhcmUgYWRkZWQgdG8gaGVscCBjbGllbnRzIHBy
ZXNlbnQgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlcyB0byB1c2Vycy4KKyAgICAgICAgYSkgV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvcjogQW4gaW50ZXJuYWwgZXJyb3IsIGNs
aWVudHMgc2hvdWxkIGluZm9ybSB1c2VycyBhbmQgdGVybWluYXRlIHRoZSBwbGF0Zm9ybQorICAg
ICAgICBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLiBUaGlzIGVycm9yIGNhbiBiZSByZXR1cm5lZCBh
dCBhbnkgdGltZS4KKyAgICAgICAgYikgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxB
RHVwbGljYXRlQ3JlZGVudGlhbDogSXQgbWVhbnMgYSBjcmVkZW50aWFsIGlzIGZvdW5kIHRvIG1h
dGNoIGFuIGVudHJ5IGluIHRoZQorICAgICAgICBleGNsdWRlTGlzdC4gQ2xpZW50cyBzaG91bGQg
aW5mb3JtIHVzZXJzIGFuZCB0ZXJtaW5hdGUgdGhlIHBsYXRmb3JtIGF1dGhlbnRpY2F0aW9uIHBy
b2Nlc3MuIFRoaXMgZXJyb3Igd2lsbCBvbmx5IGJlCisgICAgICAgIHJldHVybmVkIGR1cmluZyBt
YWtlQ3JlZGVudGlhbCBhbmQgYmVmb3JlIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbCBkZWxl
Z2F0ZS4KKyAgICAgICAgYykgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVk
ZW50aWFsOiBJdCBtZWFucyBubyBjcmVkZW50aWFscyBhcmUgZm91bmQuIENsaWVudHMgc2hvdWxk
IGluZm9ybSB1c2VycyBhbmQKKyAgICAgICAgdGVybWluYXRlIHRoZSBwbGF0Zm9ybSBhdXRoZW50
aWNhdGlvbiBwcm9jZXNzLiBUaGlzIGVycm9yIHdpbGwgb25seSBiZSByZXR1cm5lZCBkdXJpbmcg
Z2V0QXNzZXJ0aW9uIGFuZCBiZWZvcmUKKyAgICAgICAgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250
cm9sIGRlbGVnYXRlLgorCisgICAgICAgIDIpIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0
OiBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsIGlzIGFkZGVkIHN1Y2ggdGhh
dCBjbGllbnRzIGNhbiBsZWFybiBwbGF0Zm9ybQorICAgICAgICBhdXRoZW50aWNhdG9yIHdpbGwg
YmUgdXNlZCBmcm9tIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwudHJhbnNwb3J0cy4KKworICAg
ICAgICAzKSB2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6IEEgZGVsZWdhdGUgdGhhdCB3aWxs
IGJlIGNhbGxlZCBkdXJpbmcgbWFrZUNyZWRlbnRpYWwgb3IgZ2V0QXNzZXJ0aW9uIHdoZW4gdGhl
IHBsYXRmb3JtCisgICAgICAgIGF1dGhlbnRpY2F0b3IgaXMgaW52b2x2ZWQuIFRoaXMgZGVsZWdh
dGUgaXMgdXNlZCB0byBvYnRhaW4gdXNlciB2ZXJpZmljYXRpb24gZnJvbSBhIExBQ29udGV4dC4g
SW4gYWRkaXRpb24sIHRoZSBMQUNvbnRleHQKKyAgICAgICAgc2hvdWxkIGV2YWx1YXRlIHRoZSBw
YXNzZWQgYWNjZXNzQ29udHJvbCwgc3VjaCB0aGF0IHRoZSBTRVAgcHJvdGVjdGVkIGNyZWRlbnRp
YWwgcHJpdmF0ZSBrZXkgY2FuIGJlIHVzZWQuIEEgdHlwaWNhbAorICAgICAgICBleGFtcGxlIHdp
bGwgYmUgW0xBQ29udGV4dCBldmFsdWF0ZUFjY2Vzc0NvbnRyb2w6YWNjZXNzQ29udHJvbCBvcGVy
YXRpb246TEFBY2Nlc3NDb250cm9sT3BlcmF0aW9uVXNlS2V5U2lnbiBsb2NhbGl6ZWRSZWFzb246
cmVwbHk6XS4KKyAgICAgICAgTm90ZWQsIGZvciBnZXRBc3NlcnRpb24sIHNlbGVjdEFzc2VydGlv
blJlc3BvbnNlIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRy
b2wuIFNvIHVzZXJzIG5lZWQgdG8gYmUKKyAgICAgICAgcHJvbXB0ZWQgdG8gc2VsZWN0IGEgY3Jl
ZGVudGlhbCBiZWZvcmUgdGhlIHVzZXIgdmVyaWZpY2F0aW9uLgorCisgICAgICAgIEluIHRoZSBz
Y2VuYXJpbyB3aGVuIGJvdGggdGhlIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IgYW5kIGV4dGVybmFs
IGF1dGhlbnRpY2F0b3JzIGFyZSByZXF1ZXN0ZWQuIENsaWVudHMgYXJlIGFkdmlzZWQgdG8KKyAg
ICAgICAgd2FpdCB1bnRpbCB2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2wgdG8gc2hvdyB0aGUg
Y29tYmluZWQgVUkuIElmIGFueSBvZiB0aGUgTEFFcnJvciBzdGF0ZXMgYXJlIHJlY2VpdmVkIGJl
Zm9yZQorICAgICAgICB2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2wsIGNsaWVudHMgc2hvdWxk
IHRoZW4gb25seSBzaG93IHRoZSBleHRlcm5hbCBhdXRoZW50aWNhdG9yIFVJLiBBbHNvLCBwbGF0
Zm9ybSBhdXRoZW50aWNhdG9yIGFuZAorICAgICAgICBleHRlcm5hbCBhdXRoZW50aWNhdG9ycyBh
cmUgYmVpbmcgZGlzY292ZXJlZCBhdCB0aGUgc2FtZSB0aW1lLCB3aGljaCBtZWFucyBhIHVzZXIg
Y2FuIHBsdWcgaW4gYSBzZWN1cml0eSBrZXkgYXQgYW55dGltZS4KKyAgICAgICAgSWYgYSB2YWxp
ZCByZXNwb25zZSBpcyByZWNlaXZlZCBmcm9tIHRoZSBzZWN1cml0eSBrZXksIHRoZSB3aG9sZSBj
ZXJlbW9ueSB3aWxsIGJlIHRlcm1pbmF0ZWQuCisKKyAgICAgICAgQmVzaWRlcyBpbnRyb2R1Y2lu
ZyB0aGUgU1BJLCBhbmQgYWxsIHRoZSBuZWNlc3NhcnkgcGx1bWJpbmcgdG8gbWFrZSBpdCBoYXBw
ZW4uIFRoaXMgcGF0Y2ggYWxzbzoKKyAgICAgICAgMSkgYWRkcyBMb2NhbEF1dGhlbnRpY2F0aW9u
U1BJLCB3aGljaCBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBMQUNvbnRleHQgaXMg
dW5sb2NrZWQgb3Igbm90OworICAgICAgICAyKSBpbXByb3ZlcyBNb2NrTG9jYWxDb25uZWN0aW9u
IHN1Y2ggdGhhdCBtb2NrIHRlc3RpbmcgY2FuIHN0aWxsIGJlIHJhbi4KKworICAgICAgICAqIFBs
YXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRpb25Tb2Z0TGluay5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5jcHA6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgICh3a1dl
YkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGlj
YXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcklu
dGVybmFsOjp0b05TRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcklu
dGVybmFsOjp0b0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNh
dG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRv
cjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0
ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3Nl
cnRpb25BZnRlclJlc3BvbnNlU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKToKKyAgICAg
ICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0aW9uIGNvbnN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0
aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6ZmlsdGVyUmVzcG9uc2Vz
IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rpb246OmlzVW5s
b2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rpb246OmdldFVzZXJD
b25zZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0aW9u
OjpzZWxlY3RDcmVkZW50aWFsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6d2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp2ZXJpZnlV
c2VyIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xv
Y2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tM
b2NhbENvbm5lY3Rpb246OmZpbHRlclJlc3BvbnNlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
Ok1vY2tMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6c2VsZWN0Q3JlZGVudGlhbCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0aW9uRmxhZ3MuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFw
cGxlLmNvbT4KIAogICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQgaGF2ZSBzZXBhcmF0
ZSBOZXR3b3JrIFNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKaW5k
ZXggNWQzMDJmOGI4ZmMzNWRhMWU2Yzk0NmUxMTIxOTY3ZDYyZTAwYTQ5OS4uMzg4OTNlZTM2NjRl
ZWZiOTBlZDdiYTI0ZDNlNzdmODNiMzQzOTI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QQogICAg
IHJldHVybiByZXNwb25zZTsKIH0KIAotUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiByYXdJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsICBjb25zdCBWZWN0b3I8dWludDhfdD4m
IHVzZXJIYW5kbGUpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJh
d0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxl
KQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlcmhhbmRsZUJ1ZmZlcjsKICAgICBpZiAo
IXVzZXJIYW5kbGUuaXNFbXB0eSgpKQpAQCAtNDgsNiArNDgsMTYgQEAgUmVmPEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVh
dGUoY29uc3QKICAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUocmF3SWQuZGF0
YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JEYXRh
LmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShz
aWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1c2VyaGFuZGxlQnVm
ZmVyKSwgV1RGOjpudWxsb3B0KTsKIH0KIAorUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVm
ZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgU2VjQWNjZXNzQ29u
dHJvbFJlZiBhY2Nlc3NDb250cm9sKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJhd0lkKSwgV1RGTW92ZSh1c2VySGFu
ZGxlKSwgYWNjZXNzQ29udHJvbCkpOworfQorCit2b2lkIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZTo6c2V0QXV0aGVudGljYXRvckRhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aGVudGlj
YXRvckRhdGEpCit7CisgICAgbV9hdXRoZW50aWNhdG9yRGF0YSA9IEFycmF5QnVmZmVyOjpjcmVh
dGUoYXV0aGVudGljYXRvckRhdGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5zaXplKCkpOwor
fQorCiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBh
dXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUpCiAgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RG
TW92ZShyYXdJZCkpCiAgICAgLCBtX2F1dGhlbnRpY2F0b3JEYXRhKFdURk1vdmUoYXV0aGVudGlj
YXRvckRhdGEpKQpAQCAtNTYsNiArNjYsMTMgQEAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYKIHsK
IH0KIAorQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYg
dXNlckhhbmRsZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQorICAgIDogQXV0
aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpKQorICAgICwgbV91c2VySGFuZGxlKFdU
Rk1vdmUodXNlckhhbmRsZSkpCisgICAgLCBtX2FjY2Vzc0NvbnRyb2woYWNjZXNzQ29udHJvbCkK
K3sKK30KKwogQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gZGF0YSA9IEF1dGhlbnRpY2F0b3JS
ZXNwb25zZTo6ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKaW5kZXggZDcw
YTljY2Y4ZjM5MWIwZGQ2MmMyYTExNGUxMTUyZjlmNmMwZDZhMi4uMmIzMDljZjkwMmE2NGU1Y2E4
N2E0OTc0ZmJhOThmMjgzYzM1ZGM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5o
CkBAIC0yOCw2ICsyOCw4IEBACiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUgIkF1
dGhlbnRpY2F0b3JSZXNwb25zZS5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzUsMzIgKzM3LDM4IEBAIGNsYXNzIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVy
PiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJh
eUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBP
cHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4g
Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCAg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJh
eUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFNlY0FjY2Vz
c0NvbnRyb2xSZWYpOwogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZSgpID0gZGVmYXVsdDsKIAotICAgIEFycmF5QnVmZmVyKiBhdXRoZW50aWNhdG9yRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fYXV0aGVudGljYXRvckRhdGEucHRyKCk7IH0KLSAgICBBcnJheUJ1ZmZl
ciogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmUucHRyKCk7IH0KKyAgICBB
cnJheUJ1ZmZlciogYXV0aGVudGljYXRvckRhdGEoKSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRp
Y2F0b3JEYXRhLmdldCgpOyB9CisgICAgQXJyYXlCdWZmZXIqIHNpZ25hdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2lnbmF0dXJlLmdldCgpOyB9CiAgICAgQXJyYXlCdWZmZXIqIHVzZXJIYW5kbGUo
KSBjb25zdCB7IHJldHVybiBtX3VzZXJIYW5kbGUuZ2V0KCk7IH0KKyAgICBjb25zdCBTdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQorICAgIHNpemVfdCBudW1i
ZXJPZkNyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZkNyZWRlbnRpYWxzOyB9
CisgICAgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKCkgY29uc3QgeyByZXR1cm4g
bV9hY2Nlc3NDb250cm9sLmdldCgpOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1
dGhlbnRpY2F0b3JEYXRhKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICB2b2lkIHNldFNpZ25hdHVy
ZShSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlKSB7IG1fc2lnbmF0dXJlID0gV1RGTW92ZShz
aWduYXR1cmUpOyB9CiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25h
bWUgPSBuYW1lOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9CiAgICAgdm9pZCBzZXREaXNwbGF5TmFtZShjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
KSB7IG1fZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsgfQotICAgIGNvbnN0IFN0cmluZyYgZGlz
cGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlOYW1lOyB9CiAgICAgdm9pZCBzZXRO
dW1iZXJPZkNyZWRlbnRpYWxzKHNpemVfdCBudW1iZXJPZkNyZWRlbnRpYWxzKSB7IG1fbnVtYmVy
T2ZDcmVkZW50aWFscyA9IG51bWJlck9mQ3JlZGVudGlhbHM7IH0KLSAgICBzaXplX3QgbnVtYmVy
T2ZDcmVkZW50aWFscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZDcmVkZW50aWFsczsgfQog
CiBwcml2YXRlOgogICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlC
dWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYpOworICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8
QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgU2VjQWNjZXNzQ29udHJvbFJlZik7
CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpBc3NlcnRpb247
IH0KICAgICBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKIAot
ICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9hdXRoZW50aWNhdG9yRGF0YTsKLSAgICBSZWY8QXJyYXlC
dWZmZXI+IG1fc2lnbmF0dXJlOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9hdXRoZW50aWNh
dG9yRGF0YTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fc2lnbmF0dXJlOwogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gbV91c2VySGFuZGxlOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBT
dHJpbmcgbV9kaXNwbGF5TmFtZTsKICAgICBzaXplX3QgbV9udW1iZXJPZkNyZWRlbnRpYWxzIHsg
MCB9OworICAgIFJldGFpblB0cjxTZWNBY2Nlc3NDb250cm9sUmVmPiBtX2FjY2Vzc0NvbnRyb2w7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjdhMGY2ZDAzZjBjYTI1YzdlMzA2MTI1NTY0OTU3ZjYxMGE4YWFkZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVudGljYXRp
b25TUEkuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bXBvcnQgPExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxBdXRoZW50aWNhdGlvbi5oPgorCisjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8TG9jYWxBdXRoZW50aWNhdGlvbi9M
b2NhbEF1dGhlbnRpY2F0aW9uX1ByaXZhdGUuaD4KKworI2Vsc2UKKwordHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgTEFPcHRpb24pIHsKKyAgICBMQU9wdGlvbk5vdEludGVyYWN0aXZlLAorfTsK
KworQGludGVyZmFjZSBMQUNvbnRleHQoUHJpdmF0ZSkgPE5TU2VjdXJlQ29kaW5nPgorCistIChO
U0RpY3Rpb25hcnkgKilldmFsdWF0ZVBvbGljeTooTEFQb2xpY3kpcG9saWN5IG9wdGlvbnM6KE5T
RGljdGlvbmFyeSAqKW9wdGlvbnMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7CisKK0BlbmQKKwor
I2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAKaW5kZXgg
MGNkZGJjZjQ5NzYzMzk4MjQ3NTlmZWUxYTA1NWFmNTZhYjVmNGQ1NS4uZTVjYjQ3Mzg2OWJmMTdm
NDAzMGQ4M2ZlZmRiNDhkYzQyYTIzOTY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcApAQCAtNTMsNiAr
NTMsOCBAQCBXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsKGNv
bnN0IEF1dGhlbnRpY2F0b3JNYW5hZ2VyJiBtYW5hZwogICAgICAgICBtX3RyYW5zcG9ydHMudW5j
aGVja2VkQXBwZW5kKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYik7CiAgICAgaWYgKHRyYW5z
cG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKSkKICAgICAgICAgbV90
cmFuc3BvcnRzLnVuY2hlY2tlZEFwcGVuZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOwor
ICAgIGlmICh0cmFuc3BvcnRzLmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVy
bmFsKSkKKyAgICAgICAgbV90cmFuc3BvcnRzLnVuY2hlY2tlZEFwcGVuZChBdXRoZW50aWNhdG9y
VHJhbnNwb3J0OjpJbnRlcm5hbCk7CiB9CiAKIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6On5XZWJB
dXRoZW50aWNhdGlvblBhbmVsKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgK
aW5kZXggNDU5NjQ0ZWUzZTZlYjY1MWMyOTJlZjNmYjQ5YjNiNGEyNmFjNzY5OC4uOGMzNjg1MzNl
YTBiMjE0ZjAxYmE3Y2JkOWRkNWI1OWNhNTJlMTQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5oCkBAIC0zMCw4ICszMCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKK09CSkNfQ0xBU1MgTEFDb250ZXh0OworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7CiB9CkBAIC01Miw2
ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc1BhbmVsKFdlYktpdDo6
V2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlT
dHJpbmcoKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVj
dG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmIHJlc3Bv
bnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBBU1NFUlQo
IXJlc3BvbnNlcy5pc0VtcHR5KCkpOyBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbMF0pOyB9
CisgICAgdmlydHVhbCB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0
IHsgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKaW5kZXggNDMxYzYzM2IwZmViMGI1NTJhNmI5ZDE4
N2VhZDNkNmZiNWJjYzhjMi4uOTc0MWRkNjJjNjFmZThmYmFmMTdlMjg1ZWYxMDFkZmY1YmY4MDhm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCkBAIC0zMSw2ICszMSw3IEBACiAKIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBMQUNvbnRleHQ7CiBAY2xhc3MgX1dLV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTsKIEBjbGFzcyBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsOwogCkBAIC00Niw2ICs0Nyw5IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUpIHsKICAgICBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsVXBkYXRlUElOQmxvY2tlZCwKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBk
YXRlUElOQXV0aEJsb2NrZWQsCiAgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJ
TkludmFsaWQsCisgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRXJyb3IsCisg
ICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRXhjbHVkZUNyZWRlbnRpYWxzTWF0
Y2hlZCwKKyAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRlbnRpYWws
CiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0
KSB7CkBAIC01Niw2ICs2MCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUmVzdWx0KSB7CiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJB
dXRoZW50aWNhdGlvblRyYW5zcG9ydCkgewogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNw
b3J0VVNCLAogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0TkZDLAorICAgIF9XS1dl
YkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0SW50ZXJuYWwsCiB9IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSkgewpAQCAtNzEsNiArNzYsNyBAQCB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKIC0gKHZv
aWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBkaXNtaXNzV2ViQXV0
aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KXJl
c3VsdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVl
c3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczooTlNVSW50ZWdlcilyZXRyaWVzIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClwYW5l
bDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3Bv
bnNlOihOU0FycmF5IDwgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqPiAq
KXJlc3BvbnNlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZSAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClwYW5lbDooX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJv
bDooU2VjQWNjZXNzQ29udHJvbFJlZilhY2Nlc3NDb250cm9sIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShMQUNvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCmluZGV4IDJlYjMxZTgxMmM5NTk4ZTg5ODg0MGI5NTU4Y2UzMzJmMmVk
Njc5ZmYuLjE5NzNiMGY1NjRkMjUxYjIwY2YyNmEzNmEzYTY0ZDhhMjUyODIyZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC03Myw2ICs3Myw4IEBAIHN0YXRpYyBfV0tXZWJBdXRo
ZW50aWNhdGlvblRyYW5zcG9ydCB3a1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0KFdlYkNvcmU6
OkF1dGhlCiAgICAgICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQjsK
ICAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYzoKICAgICAgICAg
cmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0TkZDOworICAgIGNhc2UgV2ViQ29y
ZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWw6CisgICAgICAgIHJldHVybiBfV0tX
ZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRp
b25UcmFuc3BvcnRVU0I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKaW5kZXggZDE2YjE3ZDVmYzZiYzc5NTIx
NGIyN2U4MjU3ZmQ2ZjAwYmQ0YzdlNS4uOTFkOTllZDUyYjZkYjFkZWZhYjE1OTYyNDMxMDY3OWYz
Y2FkNjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaApAQCAtMzQsNiArMzQsOSBAQAogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KKwor
T0JKQ19DTEFTUyBMQUNvbnRleHQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTsKQEAgLTUzLDYgKzU2LDcgQEAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIHZvaWQgYXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGlj
YXRpb25TdGF0dXMpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQaW4odWludDY0
X3QgcmV0cmllcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYm
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShjb25z
dCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlJik+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZlcmlmeVVzZXIo
U2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+
JiYpID0gMDsKICAgICB9OwogCiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvcigpID0gZGVmYXVs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCA3MzYyNmNjMDUwMjdh
ZTZlMjFiMjgxNDNiYzgwMDliOTJiMWE3NWI0Li44ODU5NzFmMThiNDIxYzZiMGE2ODRhY2E4OTYy
M2VjYzMyMTE2MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0y
OTUsNiArMjk1LDE0IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnNlbGVjdEFzc2VydGlv
blJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPEF1dGhlbnRpY2F0CiAgICAgfSk7CiB9CiAKK3Zv
aWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiBh
Y2Nlc3NDb250cm9sUmVmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExBQ29udGV4dCAqKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSZXRhaW5QdHI8U2VjQWNjZXNzQ29udHJvbFJlZj4g
YWNjZXNzQ29udHJvbCA9IGFjY2Vzc0NvbnRyb2xSZWY7CisgICAgZGlzcGF0Y2hQYW5lbENsaWVu
dENhbGwoW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgQVBJOjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsJiBwYW5lbCkgbXV0YWJsZSB7CisgICAgICAgIHBhbmVsLmNsaWVudCgp
LnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbC5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIH0pOworfQorCiBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZp
Y2U+IEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjcmVhdGVTZXJ2aWNlKEF1dGhlbnRpY2F0b3JUcmFu
c3BvcnQgdHJhbnNwb3J0LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXIm
IG9ic2VydmVyKSBjb25zdAogewogICAgIHJldHVybiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vy
dmljZTo6Y3JlYXRlKHRyYW5zcG9ydCwgb2JzZXJ2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmgKaW5kZXggYzE1MWRkOTMyNjU5ZjYyMDZjMGYxNWZiZWExZTVjMDU0YTFhMGY5ZS4u
ZThmMmQyYmZkODBjMTBjYWFjZjgzMDVkNDczZDViZDNmOGFlYWZiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yTWFuYWdlci5oCkBAIC04Myw2ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
dXRoZW50aWNhdG9yU3RhdHVzVXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1cykgZmluYWw7
CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgZmluYWw7CiAgICAgdm9pZCBzZWxlY3RBc3Nl
cnRpb25SZXNwb25zZShjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYpIGZpbmFsOworICAgIHZvaWQgdmVy
aWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExBQ29u
dGV4dCAqKT4mJikgZmluYWw7CiAKICAgICAvLyBPdmVycmlkZW4gYnkgTW9ja0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLgogICAgIHZpcnR1YWwgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRT
ZXJ2aWNlPiBjcmVhdGVTZXJ2aWNlKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIEF1
dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciYpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdGlvblNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaAppbmRleCAxNTUy
YjI3MzkwM2FhNjQ4MmEzOTNiOGQzODc5YTAzZjQ4ZTY1NWEyLi5lODQ5MTAyOTViZjNhMjVhNGJj
MDZlMzUxZGIzZDE0ZmI3ZmNmYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2ltcG9ydCA8TG9jYWxBdXRoZW50aWNhdGlvbi9Mb2NhbEF1dGhlbnRpY2F0aW9uLmg+
CisjaW1wb3J0ICJMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmgiCiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFdlYktpdCwgTG9jYWxB
dXRoZW50aWNhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCmlu
ZGV4IGRlZDk4ZjJkNzZhYzRkZTk1MWE1ODk0MGIzNmQyYjZlNzRhZjQ0YzcuLjlhNDc1NzBmZTcw
YjNiNzI0OGNjZTEwNTMxNGU1MGI4Y2M5MDBkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2Fs
QXV0aGVudGljYXRvci5oCkBAIC0zOSwxMiArMzksMTMgQEAgY2xhc3MgTG9jYWxBdXRoZW50aWNh
dG9yIGZpbmFsIDogcHVibGljIEF1dGhlbnRpY2F0b3IgewogcHVibGljOgogICAgIC8vIEhlcmUg
aXMgdGhlIEZTTS4KICAgICAvLyBNYWtlQ3JlZGVudGlhbDogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2
ZWQgPT4gVXNlckNvbnNlbnRlZCA9PiBBdHRlc3RlZCA9PiBFbmQKLSAgICAvLyBHZXRBc3NlcnRp
b246IEluaXQgPT4gUmVxdWVzdFJlY2VpdmVkID0+IFVzZXJDb25zZW50ZWQgPT4gRW5kCisgICAg
Ly8gR2V0QXNzZXJ0aW9uOiBJbml0ID0+IFJlcXVlc3RSZWNlaXZlZCA9PiBSZXNwb25zZVNlbGVj
dGVkID0+IFVzZXJDb25zZW50ZWQgPT4gRW5kCiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7CiAgICAg
ICAgIEluaXQsCiAgICAgICAgIFJlcXVlc3RSZWNlaXZlZCwKICAgICAgICAgVXNlckNvbnNlbnRl
ZCwKICAgICAgICAgQXR0ZXN0ZWQsCisgICAgICAgIFJlc3BvbnNlU2VsZWN0ZWQKICAgICB9Owog
CiAgICAgc3RhdGljIFJlZjxMb2NhbEF1dGhlbnRpY2F0b3I+IGNyZWF0ZShVbmlxdWVSZWY8TG9j
YWxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCkBAIC01NiwxNCArNTcsMTggQEAgcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBMb2NhbEF1dGhlbnRpY2F0b3IoVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlv
bj4mJik7CiAKICAgICB2b2lkIG1ha2VDcmVkZW50aWFsKCkgZmluYWw7Ci0gICAgdm9pZCBjb250
aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyb2xSZWYs
IExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQsIExBQ29udGV4dCAqKTsKKyAgICB2b2lkIGNv
bnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoU2VjQWNjZXNzQ29udHJvbFJl
ZiwgTEFDb250ZXh0ICopOwogICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0
ZXN0ZWQoU2VjS2V5UmVmLCBWZWN0b3I8dWludDhfdD4mJiBjcmVkZW50aWFsSWQsIFZlY3Rvcjx1
aW50OF90PiYmIGF1dGhEYXRhLCBOU0FycmF5ICpjZXJ0aWZpY2F0ZXMsIE5TRXJyb3IgKik7CiAK
ICAgICB2b2lkIGdldEFzc2VydGlvbigpIGZpbmFsOwotICAgIHZvaWQgY29udGludWVHZXRBc3Nl
cnRpb25BZnRlclVzZXJDb25zZW50ZWQoTG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudCwgTEFD
b250ZXh0ICosIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHVzZXJoYW5kbGUpOworICAgIHZvaWQgY29udGludWVHZXRBc3NlcnRpb25B
ZnRlclJlc3BvbnNlU2VsZWN0ZWQoUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4mJik7CisgICAgdm9pZCBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNl
bnRlZChMQUNvbnRleHQgKiwgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4mJik7CisKKyAgICB2b2lkIHJlY2VpdmVFeGNlcHRpb24oV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYmLCBXZWJBdXRoZW50aWNhdGlvblN0YXR1cyA9IFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVz
OjpMQUVycm9yKSBjb25zdDsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SW5pdCB9Owog
ICAgIFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBIYXNoU2V0
PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiBtX2Fzc2VydGlv
blJlc3BvbnNlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50
aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDI1ZGQxYzZhZTk2ODFmMGVmNzhjZGIxZjNk
NGM0MWJhNGU0YmI1ZGUuLmZmYzYwZWE1OTMwNzdjNjMyMWQyMjI5NjgyN2RlZWY1OTdhNWRlNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTg2LDYgKzg2
LDE4IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TRGF0YT4gdG9OU0RhdGEoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBkYXRhKQogICAgIHJldHVybiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBp
bml0V2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0pOwogfQogCitzdGF0
aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRvTlNEYXRhKEFycmF5QnVmZmVyKiBidWZmZXIp
Cit7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisgICAgLy8gRklYTUUoMTgzNTM0KTogQ29uc2lkZXIg
dXNpbmcgaW5pdFdpdGhCeXRlc05vQ29weS4KKyAgICByZXR1cm4gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5ieXRlTGVu
Z3RoKCldKTsKK30KKworc3RhdGljIGlubGluZSBSZWY8QXJyYXlCdWZmZXI+IHRvQXJyYXlCdWZm
ZXIoTlNEYXRhICpkYXRhKQoreworICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCk7Cit9
CisKIH0gLy8gTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWwKIAogTG9jYWxBdXRoZW50aWNhdG9y
OjpMb2NhbEF1dGhlbnRpY2F0b3IoVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uKQpAQCAtMTA4LDcgKzEyMCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3Jl
ZGVudGlhbCgpCiAgICAgaWYgKG5vdEZvdW5kID09IGNyZWF0aW9uT3B0aW9ucy5wdWJLZXlDcmVk
UGFyYW1zLmZpbmRNYXRjaGluZyhbXSAoYXV0byYgcHViS2V5Q3JlZFBhcmFtKSB7CiAgICAgICAg
IHJldHVybiBwdWJLZXlDcmVkUGFyYW0udHlwZSA9PSBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6
UHVibGljS2V5ICYmIHB1YktleUNyZWRQYXJhbS5hbGcgPT0gQ09TRTo6RVMyNTY7CiAgICAgfSkp
IHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiVGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IgZG9lc24ndCBzdXBwb3J0
IGFueSBwcm92aWRlZCBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVycy4iX3MgfSk7CisgICAg
ICAgIHJlY2VpdmVFeGNlcHRpb24oeyBOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBwbGF0Zm9ybSBh
dHRhY2hlZCBhdXRoZW50aWNhdG9yIGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGlj
S2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMzEsMjQgKzE0MywyMiBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRl
bnRpYWwoKQogICAgICAgICBDRlR5cGVSZWYgYXR0cmlidXRlc0FycmF5UmVmID0gbnVsbHB0cjsK
ICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKICAgICAgICAgaWYg
KHN0YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBM
T0dfRVJST1IoIkNvdWxkbid0IHF1ZXJ5IEtleWNoYWluOiAlZCIsIHN0YXR1cyk7Ci0gICAgICAg
ICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3Ry
aW5nKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgICAg
IHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IHF1
ZXJ5IEtleWNoYWluOiAiLCBzdGF0dXMpIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGF1dG8gcmV0YWluQXR0cmlidXRlc0FycmF5ID0gYWRvcHRDRihhdHRyaWJ1
dGVzQXJyYXlSZWYpOwogCi0gICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTAwNTkz
KTogTmVlZCB0byBvYnRhaW4gdXNlciBjb25zZW50IGFuZCB0aGVuIHJldHVybiBkaWZmZXJlbnQg
ZXJyb3IgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQuCisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRv
IG9idGFpbiB1c2VyIGNvbnNlbnQgYW5kIHRoZW4gcmV0dXJuIGRpZmZlcmVudCBlcnJvciBhY2Nv
cmRpbmcgdG8gdGhlIHJlc3VsdC4KICAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKm5zQXR0cmli
dXRlcyBpbiAoTlNBcnJheSAqKWF0dHJpYnV0ZXNBcnJheVJlZikgewogICAgICAgICAgICAgTlNE
YXRhICpuc0NyZWRlbnRpYWxJZCA9IG5zQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlv
bkxhYmVsXTsKICAgICAgICAgICAgIGlmIChleGNsdWRlQ3JlZGVudGlhbElkcy5jb250YWlucyhT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obnNDcmVkZW50aWFsSWQuYnl0ZXMp
LCBuc0NyZWRlbnRpYWxJZC5sZW5ndGgpKSkgewotICAgICAgICAgICAgICAgIHJlY2VpdmVSZXNw
b25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJBdCBsZWFzdCBvbmUgY3JlZGVu
dGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0
aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSk7CisgICAgICAgICAgICAg
ICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwgIkF0IGxlYXN0IG9uZSBjcmVk
ZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGlu
IHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJBdXRoZW50aWNh
dGlvblN0YXR1czo6TEFFeGNsdWRlQ3JlZGVudGlhbHNNYXRjaGVkKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBTdGVw
IDYuCi0gICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU5MDA1OTMpOiBVcGRhdGUgdG8gYSBm
b3JtYWwgVUkuCiAgICAgLy8gR2V0IHVzZXIgY29uc2VudC4KICAgICBSZXRhaW5QdHI8U2VjQWNj
ZXNzQ29udHJvbFJlZj4gYWNjZXNzQ29udHJvbDsKICAgICB7CkBAIC0xNTYsMjcgKzE2NiwyNSBA
QCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAgICAgICBhY2Nl
c3NDb250cm9sID0gYWRvcHRDRihTZWNBY2Nlc3NDb250cm9sQ3JlYXRlV2l0aEZsYWdzKE5VTEws
IGtTZWNBdHRyQWNjZXNzaWJsZVdoZW5QYXNzY29kZVNldFRoaXNEZXZpY2VPbmx5LCBrU2VjQWNj
ZXNzQ29udHJvbFByaXZhdGVLZXlVc2FnZSB8IGtTZWNBY2Nlc3NDb250cm9sVXNlclByZXNlbmNl
LCAmZXJyb3JSZWYpKTsKICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JS
ZWYpOwogICAgICAgICBpZiAoZXJyb3JSZWYpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291
bGRuJ3QgY3JlYXRlIGFjY2VzcyBjb250cm9sOiAlQCIsIChOU0Vycm9yICopZXJyb3JSZWYpOwot
ICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwg
bWFrZVN0cmluZygiQ291bGRuJ3QgY3JlYXRlIGFjY2VzcyBjb250cm9sOiAiLCBTdHJpbmcoKChO
U0Vycm9yKillcnJvclJlZikubG9jYWxpemVkRGVzY3JpcHRpb24pKSB9KTsKKyAgICAgICAgICAg
IHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGNy
ZWF0ZSBhY2Nlc3MgY29udHJvbDogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2Fs
aXplZERlc2NyaXB0aW9uKSkgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYgPSBhY2Nlc3ND
b250cm9sLmdldCgpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbYWNjZXNzQ29udHJvbCA9IFdURk1v
dmUoYWNjZXNzQ29udHJvbCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoTG9jYWxD
b25uZWN0aW9uOjpVc2VyQ29uc2VudCBjb25zZW50LCBMQUNvbnRleHQgKmNvbnRleHQpIHsKLSAg
ICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSB0aGlzLT5vYnNl
cnZlcigpKSB7CisgICAgICAgIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiA9
IGFjY2Vzc0NvbnRyb2wuZ2V0KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBbYWNjZXNzQ29u
dHJvbCA9IFdURk1vdmUoYWNjZXNzQ29udHJvbCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpXSAoTEFDb250ZXh0ICpjb250ZXh0KSB7CisgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVz
ZXJDb25zZW50ZWQoYWNjZXNzQ29udHJvbC5nZXQoKSwgY29uc2VudCwgY29udGV4dCk7Ci0gICAg
fTsKLSAgICBtX2Nvbm5lY3Rpb24tPmdldFVzZXJDb25zZW50KAotICAgICAgICBtYWtlU3RyaW5n
KCJhbGxvdyAiX3MsIGNyZWF0aW9uT3B0aW9ucy5ycC5pZCwgIiB0byBjcmVhdGUgYSBwdWJsaWMg
a2V5IGNyZWRlbnRpYWwgZm9yICJfcywgY3JlYXRpb25PcHRpb25zLnVzZXIubmFtZSksCi0gICAg
ICAgIGFjY2Vzc0NvbnRyb2xSZWYsCi0gICAgICAgIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAg
ICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVk
KGFjY2Vzc0NvbnRyb2wuZ2V0KCksIGNvbnRleHQpOworICAgICAgICB9OworICAgICAgICBvYnNl
cnZlci0+dmVyaWZ5VXNlcihhY2Nlc3NDb250cm9sUmVmLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cisg
ICAgfQogfQogCi12b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlh
bEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYs
IExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0
KQordm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVz
ZXJDb25zZW50ZWQoU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVmLCBMQUNvbnRl
eHQgKmNvbnRleHQpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvcklu
dGVybmFsOwogCkBAIC0xODQsNyArMTkyLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoU2VjQWNjZXNzQ29udHIKICAg
ICBtX3N0YXRlID0gU3RhdGU6OlVzZXJDb25zZW50ZWQ7CiAgICAgYXV0byYgY3JlYXRpb25PcHRp
b25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVz
dERhdGEoKS5vcHRpb25zKTsKIAotICAgIGlmIChjb25zZW50ID09IExvY2FsQ29ubmVjdGlvbjo6
VXNlckNvbnNlbnQ6Ok5vKSB7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24tPmlzVW5sb2NrZWQoY29u
dGV4dCkpIHsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93
ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjEzLDggKzIyMSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpj
b250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyCiAg
ICAgfTsKICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtRGVsZXRlKChfX2JyaWRnZSBDRkRp
Y3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkpOwogICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVy
clNlY0l0ZW1Ob3RGb3VuZCkgewotICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGRlbGV0ZSBv
bGRlciBjcmVkZW50aWFsOiAlZCIsIHN0YXR1cyk7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4
Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGRlbGV0ZSBv
bGRlciBjcmVkZW50aWFsOiAiLCBzdGF0dXMpIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9u
KHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBkZWxldGUgb2xkZXIgY3JlZGVu
dGlhbDogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjIyLDcg
KzIyOSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyCiAgICAgLy8gVGhlIGFib3ZlLXRvLWNy
ZWF0ZSBwcml2YXRlIGtleSB3aWxsIGJlIGluc2VydGVkIGludG8ga2V5Y2hhaW4gd2hpbGUgdXNp
bmcgU0VQLgogICAgIGF1dG8gcHJpdmF0ZUtleSA9IG1fY29ubmVjdGlvbi0+Y3JlYXRlQ3JlZGVu
dGlhbFByaXZhdGVLZXkoY29udGV4dCwgYWNjZXNzQ29udHJvbFJlZiwgc2VjQXR0ckxhYmVsLCBz
ZWNBdHRyQXBwbGljYXRpb25UYWcuZ2V0KCkpOwogICAgIGlmICghcHJpdmF0ZUtleSkgewotICAg
ICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiQ291bGRu
J3QgY3JlYXRlIHByaXZhdGUga2V5LiJfcyB9KTsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7
IFVua25vd25FcnJvciwgIkNvdWxkbid0IGNyZWF0ZSBwcml2YXRlIGtleS4iX3MgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI0Myw4ICsyNTAsNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nl
c3NDb250cgogICAgICAgICBDRlR5cGVSZWYgYXR0cmlidXRlc1JlZiA9IG51bGxwdHI7CiAgICAg
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGlj
dGlvbmFyeVJlZiljcmVkZW50aWFsSWRRdWVyeSwgJmF0dHJpYnV0ZXNSZWYpOwogICAgICAgICBp
ZiAoc3RhdHVzKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdldCBDcmVkZW50
aWFsIElEOiAlZCIsIHN0YXR1cyk7Ci0gICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRp
b25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZXQgQ3JlZGVudGlh
bCBJRDogIiwgc3RhdHVzKSB9KTsKKyAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtu
b3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGdldCBDcmVkZW50aWFsIElEOiAiLCBzdGF0
dXMpIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gcmV0
YWluQXR0cmlidXRlcyA9IGFkb3B0Q0YoYXR0cmlidXRlc1JlZik7CkBAIC0yNjgsOCArMjc0LDcg
QEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVz
ZXJDb25zZW50ZWQoU2VjQWNjZXNzQ29udHIKICAgICAgICAgICAgIHB1YmxpY0tleURhdGFSZWYg
PSBhZG9wdENGKFNlY0tleUNvcHlFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHB1YmxpY0tleS5nZXQo
KSwgJmVycm9yUmVmKSk7CiAgICAgICAgICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihl
cnJvclJlZik7CiAgICAgICAgICAgICBpZiAoZXJyb3JSZWYpIHsKLSAgICAgICAgICAgICAgICBM
T0dfRVJST1IoIkNvdWxkbid0IGV4cG9ydCB0aGUgcHVibGljIGtleTogJUAiLCAoTlNFcnJvciop
ZXJyb3JSZWYpOwotICAgICAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEg
eyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGV4cG9ydCB0aGUgcHVibGljIGtl
eTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkg
fSk7CisgICAgICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFr
ZVN0cmluZygiQ291bGRuJ3QgZXhwb3J0IHRoZSBwdWJsaWMga2V5OiAiLCBTdHJpbmcoKChOU0Vy
cm9yKillcnJvclJlZikubG9jYWxpemVkRGVzY3JpcHRpb24pKSB9KTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoKChOU0RhdGEgKilw
dWJsaWNLZXlEYXRhUmVmLmdldCgpKS5sZW5ndGggPT0gKDEgKyAyICogRVMyNTZGaWVsZEVsZW1l
bnRMZW5ndGgpKTsgLy8gMDQgfCBYIHwgWQpAQCAtMzA5LDggKzMxNCw3IEBAIHZvaWQgTG9jYWxB
dXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlS
ZWYgcHJpdmF0ZUtlCiAgICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIAog
ICAgIGlmIChlcnJvcikgewotICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGF0dGVzdDogJUAi
LCBlcnJvcik7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGF0dGVzdDogIiwgU3RyaW5nKGVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKSkgfSk7CisgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGF0dGVzdDogIiwgU3RyaW5nKGVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKSkgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gQXR0
ZXN0YXRpb24gQ2VydGlmaWNhdGUgYW5kIEF0dGVzdGF0aW9uIElzc3VpbmcgQ0EKQEAgLTM0NCwx
MCArMzQ4LDkgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiAgICAg
Ly8gU2tpcCBTdGVwIDggYXMgZXh0ZW5zaW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuCiAgICAg
Ly8gU3RlcCAxMiBpcyBpbXBsaWNpdGx5IGNhcHR1cmVkIGJ5IGFsbCBVbmtub3duRXJyb3IgZXhj
ZXB0aW9uIGNhbGxiYWNrcy4KICAgICAvLyBTdGVwIDMtNS4gVW5saWtlIHRoZSBzcGVjLCBpZiBh
biBhbGxvdyBsaXN0IGlzIHByb3ZpZGVkIGFuZCB0aGVyZSBpcyBubyBpbnRlcnNlY3Rpb24gYmV0
d2VlbiBleGlzdGluZyBvbmVzIGFuZCB0aGUgYWxsb3cgbGlzdCwgd2UgYWx3YXlzIHJldHVybiBO
b3RBbGxvd2VkRXJyb3IuCi0gICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU5MDA1OTMpOiBO
ZWVkIHRvIGluZm9ybSB1c2Vycy4KICAgICBhdXRvIGFsbG93Q3JlZGVudGlhbElkcyA9IHByb2R1
Y2VIYXNoU2V0KHJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHMpOwogICAgIGlmICghcmVx
dWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5KCkgJiYgYWxsb3dDcmVkZW50aWFs
SWRzLmlzRW1wdHkoKSkgewotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsg
Tm90QWxsb3dlZEVycm9yLCAiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhl
IHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0pOworICAgICAgICByZWNlaXZl
RXhjZXB0aW9uKHsgTm90QWxsb3dlZEVycm9yLCAiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUg
Zm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0sIFdlYkF1
dGhlbnRpY2F0aW9uU3RhdHVzOjpMQU5vQ3JlZGVudGlhbCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTM2Nyw4ICszNzAsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNz
ZXJ0aW9uKCkKICAgICBDRlR5cGVSZWYgYXR0cmlidXRlc0FycmF5UmVmID0gbnVsbHB0cjsKICAg
ICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rp
b25hcnlSZWYpcXVlcnksICZhdHRyaWJ1dGVzQXJyYXlSZWYpOwogICAgIGlmIChzdGF0dXMgJiYg
c3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkgewotICAgICAgICBMT0dfRVJST1IoIkNvdWxk
bid0IHF1ZXJ5IEtleWNoYWluOiAlZCIsIHN0YXR1cyk7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25k
KEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IHF1ZXJ5
IEtleWNoYWluOiAiLCBzdGF0dXMpIH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5r
bm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVz
KSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNB
cnJheSA9IGFkb3B0Q0YoYXR0cmlidXRlc0FycmF5UmVmKTsKQEAgLTM4Niw0MSArMzg4LDYxIEBA
IHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgICAgICBpbnRlcnNl
Y3RlZENyZWRlbnRpYWxzQXR0cmlidXRlcyA9IHJlc3VsdDsKICAgICB9CiAgICAgaWYgKCFpbnRl
cnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRlcy5jb3VudCkgewotICAgICAgICByZWNlaXZlUmVz
cG9uZChFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiTm8gbWF0Y2hlZCBjcmVkZW50
aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9z
IH0pOworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90QWxsb3dlZEVycm9yLCAiTm8gbWF0
Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhl
bnRpY2F0b3IuIl9zIH0sIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzOjpMQU5vQ3JlZGVudGlhbCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBTdGVwIDYuCi0gICAgYXV0byAqc2Vs
ZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlcyA9IG1fY29ubmVjdGlvbi0+c2VsZWN0Q3JlZGVudGlh
bChpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRlcyk7CisgICAgZm9yIChOU0RpY3Rpb25h
cnkgKmF0dHJpYnV0ZSA6IGludGVyc2VjdGVkQ3JlZGVudGlhbHNBdHRyaWJ1dGVzKSB7CisgICAg
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hc3NlcnRpb25SZXNwb25zZXMuYWRkKEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKAorICAgICAgICAgICAgdG9BcnJheUJ1ZmZlcihh
dHRyaWJ1dGVbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF0pLAorICAgICAgICAgICAgdG9B
cnJheUJ1ZmZlcihhdHRyaWJ1dGVbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWddKSwKKyAgICAg
ICAgICAgIChfX2JyaWRnZSBTZWNBY2Nlc3NDb250cm9sUmVmKWF0dHJpYnV0ZVsoaWQpa1NlY0F0
dHJBY2Nlc3NDb250cm9sXSkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOworICAgIH0KKyAgICBtX2Nvbm5lY3Rpb24tPmZpbHRlclJlc3Bv
bnNlcyhtX2Fzc2VydGlvblJlc3BvbnNlcyk7CisKKyAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSB0
aGlzLT5vYnNlcnZlcigpKSB7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChjb25zdCBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UmIHJlc3BvbnNlKSB7CisgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGF1dG8gcmV0dXJuUmVzcG9uc2UgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy50
YWtlKGNvbnN0X2Nhc3Q8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKj4oJnJlc3BvbnNl
KSk7CisgICAgICAgICAgICBpZiAoIXJldHVyblJlc3BvbnNlKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVNlbGVj
dGVkKFdURk1vdmUoKnJldHVyblJlc3BvbnNlKSk7CisgICAgICAgIH07CisgICAgICAgIG9ic2Vy
dmVyLT5zZWxlY3RBc3NlcnRpb25SZXNwb25zZShtX2Fzc2VydGlvblJlc3BvbnNlcywgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIH0KK30KKwordm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVNlbGVjdGVkKFJlZjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYgcmVzcG9uc2UpCit7CisgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZXNw
b25zZVNlbGVjdGVkOwogCiAgICAgLy8gU3RlcCA3LiBHZXQgdXNlciBjb25zZW50LgotICAgIC8v
IEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTAwNTkzKTogVXBkYXRlIHRvIGEgZm9ybWFsIFVJLgot
ICAgIGF1dG8gY2FsbGJhY2sgPSBbCi0gICAgICAgIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpLAotICAgICAgICBjcmVkZW50aWFsSWQgPSB0b1ZlY3RvcihzZWxlY3RlZENyZWRlbnRpYWxB
dHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwKLSAgICAgICAgdXNlcmhh
bmRsZSA9IHRvVmVjdG9yKHNlbGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRy
QXBwbGljYXRpb25UYWddKQotICAgIF0oTG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudCBjb25z
ZW50LCBMQUNvbnRleHQgKmNvbnRleHQpIHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoYXV0byogb2JzZXJ2ZXIgPSB0aGlzLT5vYnNlcnZlcigpKSB7CisgICAgICAgIGF1dG8gYWNj
ZXNzQ29udHJvbFJlZiA9IHJlc3BvbnNlLT5hY2Nlc3NDb250cm9sKCk7CisgICAgICAgIGF1dG8g
Y2FsbGJhY2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlc3BvbnNlID0gV1RG
TW92ZShyZXNwb25zZSldIChMQUNvbnRleHQgKmNvbnRleHQpIG11dGFibGUgeworICAgICAgICAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUdl
dEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChjb25zZW50LCBjb250ZXh0LCBjcmVkZW50aWFs
SWQsIHVzZXJoYW5kbGUpOwotICAgIH07Ci0gICAgTlNEYXRhICppZERhdGEgPSBzZWxlY3RlZENy
ZWRlbnRpYWxBdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXTsKLSAgICBTdHJp
bmdWaWV3IGlkU3RyaW5nVmlldyB7IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oW2lkRGF0YSBi
eXRlc10pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oW2lkRGF0YSBsZW5ndGhdKSB9OwotICAgIG1f
Y29ubmVjdGlvbi0+Z2V0VXNlckNvbnNlbnQoCi0gICAgICAgIG1ha2VTdHJpbmcoImxvZyBpbnRv
ICIsIHJlcXVlc3RPcHRpb25zLnJwSWQsICIgd2l0aCAiLCBpZFN0cmluZ1ZpZXcpLAotICAgICAg
ICAoX19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilzZWxlY3RlZENyZWRlbnRpYWxBdHRyaWJ1
dGVzWyhpZClrU2VjQXR0ckFjY2Vzc0NvbnRyb2xdLAotICAgICAgICBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJD
b25zZW50ZWQoY29udGV4dCwgV1RGTW92ZShyZXNwb25zZSkpOworICAgICAgICB9OworICAgICAg
ICBvYnNlcnZlci0+dmVyaWZ5VXNlcihhY2Nlc3NDb250cm9sUmVmLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgfQogfQogCi12b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3Nl
cnRpb25BZnRlclVzZXJDb25zZW50ZWQoTG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudCBjb25z
ZW50LCBMQUNvbnRleHQgKmNvbnRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlh
bElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJoYW5kbGUpCit2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoTEFDb250ZXh0
ICpjb250ZXh0LCBSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYm
IHJlc3BvbnNlKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRl
cm5hbDsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVxdWVzdFJlY2VpdmVkKTsKKyAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVzcG9uc2VTZWxlY3RlZCk7CiAgICAgbV9zdGF0
ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOwogCi0gICAgaWYgKGNvbnNlbnQgPT0gTG9jYWxDb25u
ZWN0aW9uOjpVc2VyQ29uc2VudDo6Tm8pIHsKKyAgICBpZiAoIW1fY29ubmVjdGlvbi0+aXNVbmxv
Y2tlZChjb250ZXh0KSkgewogICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsg
Tm90QWxsb3dlZEVycm9yLCAiQ291bGRuJ3QgZ2V0IHVzZXIgY29uc2VudC4iX3MgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC00MzIsMjUgKzQ1NCwyNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoTG9jYWxDb25u
ZWN0aW9uOgogICAgIGF1dG8gYXV0aERhdGEgPSBidWlsZEF1dGhEYXRhKFdURjo6Z2V0PFB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKS5ycElk
LCBnZXRBc3NlcnRpb25GbGFncywgY291bnRlciwgeyB9KTsKIAogICAgIC8vIFN0ZXAgMTEuCi0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBz
aWduYXR1cmU7CiAgICAgewotICAgICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKKyAgICAg
ICAgYXV0byBxdWVyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
XSk7CisgICAgICAgIFtxdWVyeSBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6QHsKICAgICAgICAg
ICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCiAgICAgICAgICAgICAoaWQpa1Nl
Y0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAotICAgICAgICAgICAg
KGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbDogdG9OU0RhdGEoY3JlZGVudGlhbElkKS5nZXQo
KSwKLSAgICAgICAgICAgIChpZClrU2VjVXNlQXV0aGVudGljYXRpb25Db250ZXh0OiBjb250ZXh0
LAorICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbDogdG9OU0RhdGEocmVz
cG9uc2UtPnJhd0lkKCkpLmdldCgpLAogICAgICAgICAgICAgKGlkKWtTZWNSZXR1cm5SZWY6IEBZ
RVMsCiAjaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCiAgICAgICAgICAgICAoaWQp
a1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKICNlbHNlCiAgICAgICAgICAgICAo
aWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogI2VuZGlmCi0gICAgICAgIH07CisgICAgICAgIH1d
OworICAgICAgICAvLyBjb250ZXh0IGlzIG51bGxwdHIgaW4gbW9jayB0ZXN0aW5nLgorICAgICAg
ICBpZiAoY29udGV4dCkKKyAgICAgICAgICAgIFtxdWVyeSBzZXRPYmplY3Q6Y29udGV4dCBmb3JL
ZXk6KGlkKWtTZWNVc2VBdXRoZW50aWNhdGlvbkNvbnRleHRdOwogICAgICAgICBDRlR5cGVSZWYg
cHJpdmF0ZUtleVJlZiA9IG51bGxwdHI7Ci0gICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0
ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJnByaXZhdGVL
ZXlSZWYpOworICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChf
X2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnkuZ2V0KCksICZwcml2YXRlS2V5UmVmKTsKICAg
ICAgICAgaWYgKHN0YXR1cykgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZXQg
dGhlIHByaXZhdGUga2V5IHJlZmVyZW5jZTogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgcmVj
ZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291
bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICIsIHN0YXR1cykgfSk7CisgICAg
ICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3Vs
ZG4ndCBnZXQgdGhlIHByaXZhdGUga2V5IHJlZmVyZW5jZTogIiwgc3RhdHVzKSB9KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIHByaXZhdGVLZXkgPSBhZG9w
dENGKHByaXZhdGVLZXlSZWYpOwpAQCAtNDYwLDE4ICs0ODQsMjcgQEAgdm9pZCBMb2NhbEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29u
bmVjdGlvbjoKIAogICAgICAgICBDRkVycm9yUmVmIGVycm9yUmVmID0gbnVsbHB0cjsKICAgICAg
ICAgLy8gRklYTUU6IENvbnZlcnRpbmcgQ0ZUeXBlUmVmIHRvIFNlY0tleVJlZiBpcyBxdWl0ZSBz
dWJ0bGUgaGVyZS4KLSAgICAgICAgYXV0byBzaWduYXR1cmVSZWYgPSBhZG9wdENGKFNlY0tleUNy
ZWF0ZVNpZ25hdHVyZSgoX19icmlkZ2UgU2VjS2V5UmVmKSgoaWQpcHJpdmF0ZUtleVJlZiksIGtT
ZWNLZXlBbGdvcml0aG1FQ0RTQVNpZ25hdHVyZU1lc3NhZ2VYOTYyU0hBMjU2LCAoX19icmlkZ2Ug
Q0ZEYXRhUmVmKWRhdGFUb1NpZ24sICZlcnJvclJlZikpOworICAgICAgICBzaWduYXR1cmUgPSBh
ZG9wdENGKFNlY0tleUNyZWF0ZVNpZ25hdHVyZSgoX19icmlkZ2UgU2VjS2V5UmVmKSgoaWQpcHJp
dmF0ZUtleVJlZiksIGtTZWNLZXlBbGdvcml0aG1FQ0RTQVNpZ25hdHVyZU1lc3NhZ2VYOTYyU0hB
MjU2LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWRhdGFUb1NpZ24sICZlcnJvclJlZikpOwogICAgICAg
ICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJvclJlZik7CiAgICAgICAgIGlmIChlcnJv
clJlZikgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZW5lcmF0ZSB0aGUgc2ln
bmF0dXJlOiAlQCIsIChOU0Vycm9yKillcnJvclJlZik7Ci0gICAgICAgICAgICByZWNlaXZlUmVz
cG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBn
ZW5lcmF0ZSB0aGUgc2lnbmF0dXJlOiAiLCBTdHJpbmcoKChOU0Vycm9yKillcnJvclJlZikubG9j
YWxpemVkRGVzY3JpcHRpb24pKSB9KTsKKyAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBV
bmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGdlbmVyYXRlIHRoZSBzaWduYXR1cmU6
ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0p
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHNpZ25hdHVyZSA9IHRv
VmVjdG9yKChOU0RhdGEgKilzaWduYXR1cmVSZWYuZ2V0KCkpOwogICAgIH0KIAogICAgIC8vIFN0
ZXAgMTMuCi0gICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
OjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdXRoRGF0YSwgc2lnbmF0dXJlLCB1c2VyaGFuZGxlKSk7
CisgICAgcmVzcG9uc2UtPnNldEF1dGhlbnRpY2F0b3JEYXRhKFdURk1vdmUoYXV0aERhdGEpKTsK
KyAgICByZXNwb25zZS0+c2V0U2lnbmF0dXJlKHRvQXJyYXlCdWZmZXIoKE5TRGF0YSAqKXNpZ25h
dHVyZS5nZXQoKSkpOworICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUocmVzcG9uc2UpKTsKK30K
Kwordm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OnJlY2VpdmVFeGNlcHRpb24oRXhjZXB0aW9uRGF0
YSYmIGV4Y2VwdGlvbiwgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgc3RhdHVzKSBjb25zdAorewor
ICAgIExPR19FUlJPUihleGNlcHRpb24ubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAo
YXV0byogb2JzZXJ2ZXIgPSB0aGlzLT5vYnNlcnZlcigpKQorICAgICAgICBvYnNlcnZlci0+YXV0
aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoc3RhdHVzKTsKKyAgICByZWNlaXZlUmVzcG9uZChXVEZN
b3ZlKGV4Y2VwdGlvbikpOworICAgIHJldHVybjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9Mb2NhbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDkxOTFiMmM2NTM0MmNkMWI2
NTcxMjVhMjMyNjQ2MTZmZThkZTIyOWEuLjU0NWFjNWZmNjFiN2IyYmFlN2RlMzg3NDJkNTY4ODhl
NWYwODE1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCkBAIC00NiwyMyAr
NDYsMTYgQEAgY2xhc3MgTG9jYWxDb25uZWN0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbENvbm5lY3Rpb24pOwogcHVibGlj
OgotICAgIGVudW0gY2xhc3MgVXNlckNvbnNlbnQgewotICAgICAgICBObywKLSAgICAgICAgWWVz
Ci0gICAgfTsKLQogICAgIHVzaW5nIEF0dGVzdGF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE5TQXJyYXkgKiwgTlNFcnJvciAqKT47Ci0gICAgdXNpbmcgVXNlckNvbnNlbnRD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlckNvbnNlbnQpPjsKLSAgICB1c2lu
ZyBVc2VyQ29uc2VudENvbnRleHRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNl
ckNvbnNlbnQsIExBQ29udGV4dCAqKT47CiAKICAgICBMb2NhbENvbm5lY3Rpb24oKSA9IGRlZmF1
bHQ7CiAgICAgdmlydHVhbCB+TG9jYWxDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgLy8g
T3ZlcnJpZGVkIGJ5IE1vY2tMb2NhbENvbm5lY3Rpb24uCi0gICAgdmlydHVhbCB2b2lkIGdldFVz
ZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2Vy
Q29uc2VudENvbnRleHRDYWxsYmFjayYmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNVbmxv
Y2tlZChMQUNvbnRleHQgKikgY29uc3Q7CiAgICAgdmlydHVhbCBSZXRhaW5QdHI8U2VjS2V5UmVm
PiBjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNvbnRleHQgKiwgU2VjQWNjZXNzQ29udHJv
bFJlZiwgY29uc3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0
aW9uVGFnKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0ZXN0YXRpb24oU2VjS2V5UmVm
LCBOU0RhdGEgKmF1dGhEYXRhLCBOU0RhdGEgKmhhc2gsIEF0dGVzdGF0aW9uQ2FsbGJhY2smJikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBOU0RpY3Rpb25hcnkgKnNlbGVjdENyZWRlbnRpYWwoY29uc3Qg
TlNBcnJheSAqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsdGVyUmVzcG9uc2VzKEhhc2hT
ZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JikgY29uc3Qg
eyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENv
bm5lY3Rpb24ubW0KaW5kZXggOGJhZWVlNzA5ZmZjN2QzY2U1Y2I4ZTgwMTRjMzEzYjhhMGFlMDFi
NC4uNTNlMDEyM2FkN2FkYTU1NzUzYzIyMjk5ZmU4OWU4ODQwMmZjMjFmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25u
ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQpAQCAtMzksMjIgKzM5LDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi12b2lkIExvY2FsQ29ubmVjdGlvbjo6Z2V0VXNlckNvbnNlbnQoY29uc3Qg
U3RyaW5nJiByZWFzb24sIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCwgVXNlckNv
bnNlbnRDb250ZXh0Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK2Jvb2wgTG9j
YWxDb25uZWN0aW9uOjppc1VubG9ja2VkKExBQ29udGV4dCAqY29udGV4dCkgY29uc3QKIHsKLSAg
ICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0p
OwotICAgIGF1dG8gcmVwbHkgPSBtYWtlQmxvY2tQdHIoW2NvbnRleHQsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIHN1Y2Nlc3MsIE5TRXJyb3Ig
KmVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0K
LSAgICAgICAgVXNlckNvbnNlbnQgY29uc2VudCA9IFVzZXJDb25zZW50OjpZZXM7Ci0gICAgICAg
IGlmICghc3VjY2VzcyB8fCBlcnJvcikgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4n
dCBhdXRoZW50aWNhdGUgd2l0aCBiaW9tZXRyaWNzOiAlQCIsIGVycm9yKTsKLSAgICAgICAgICAg
IGNvbnNlbnQgPSBVc2VyQ29uc2VudDo6Tm87Ci0gICAgICAgIH0KLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBjb25zZW50LCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnNlbnQsIGNvbnRleHQuZ2V0KCkpOwot
ICAgICAgICB9KTsKLSAgICB9KTsKLSAgICBbY29udGV4dCBldmFsdWF0ZUFjY2Vzc0NvbnRyb2w6
YWNjZXNzQ29udHJvbCBvcGVyYXRpb246TEFBY2Nlc3NDb250cm9sT3BlcmF0aW9uVXNlS2V5U2ln
biBsb2NhbGl6ZWRSZWFzb246cmVhc29uIHJlcGx5OnJlcGx5LmdldCgpXTsKKyAgICBOU0Vycm9y
ICplcnJvciA9IG5pbDsKKyAgICBhdXRvIHJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlUG9saWN5
OkxBUG9saWN5RGV2aWNlT3duZXJBdXRoZW50aWNhdGlvbldpdGhCaW9tZXRyaWNzIG9wdGlvbnM6
QHsgQChMQU9wdGlvbk5vdEludGVyYWN0aXZlKTogQFlFUyB9IGVycm9yOiZlcnJvcl07CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2V0IHVzZXIgY29uc2Vu
dDogJUAiLCBlcnJvcik7CisgICAgcmV0dXJuICEhcmVzdWx0OwogfQogCiBSZXRhaW5QdHI8U2Vj
S2V5UmVmPiBMb2NhbENvbm5lY3Rpb246OmNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29u
dGV4dCAqY29udGV4dCwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVmLCBjb25z
dCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNv
bnN0CkBAIC04OCwxMiArNzksNiBAQCBMT0NBTENPTk5FQ1RJT05fQURESVRJT05TCiAjZW5kaWYK
IH0KIAotTlNEaWN0aW9uYXJ5ICpMb2NhbENvbm5lY3Rpb246OnNlbGVjdENyZWRlbnRpYWwoY29u
c3QgTlNBcnJheSAqY3JlZGVudGlhbHMpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUUocmRhcjovL3By
b2JsZW0vMzU5MDA1MzQpOiBXZSBkb24ndCBoYXZlIGFuIFVJIHRvIHByb21wdCB1c2VycyBmb3Ig
c2VsZWN0aW5nIGludGVyc2VjdGVkQ3JlZGVudGlhbHMsIGFuZCB0aGVyZWZvcmUgd2UgYWx3YXlz
IHVzZSB0aGUgZmlyc3Qgb25lIGZvciBub3cuCi0gICAgcmV0dXJuIGNyZWRlbnRpYWxzWzBdOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
LmgKaW5kZXggM2M2YjNkN2UwMTNjZTY4MDcyODM4YjkyNjhhZWNhOWJkZTI5OGVjZi4uZGYzZDk1
YWUxMDllNWJkNDIxMjdhM2U0ZjAzYzU0NTNiNThiYzM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaApAQCAtNTAsNiArNTAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlzbWlzc1BhbmVsKFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0
KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHJlcXVlc3RQaW4odWludDY0X3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYpIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgdmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKExBQ29udGV4dCAqKT4mJikgY29uc3QgZmluYWw7CiAKICAgICBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsICptX3BhbmVsOwogICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKQEAgLTU4LDcgKzU5LDggQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCBwYW5lbFVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwgOiAx
OwogICAgICAgICBib29sIHBhbmVsRGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVz
dWx0IDogMTsKICAgICAgICAgYm9vbCBwYW5lbFJlcXVlc3RQaW5XaXRoUmVtYWluaW5nUmV0cmll
c0NvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCBwYW5lbHNlbGVjdEFzc2VydGlv
blJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29sIHBhbmVsU2VsZWN0
QXNzZXJ0aW9uUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciA6IDE7CisgICAgICAgIGJvb2wgcGFu
ZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAg
fSBtX2RlbGVnYXRlTWV0aG9kczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCmluZGV4IGQ1MTY2MzJiOThkNzM4ODFjNDNl
NDMxOWMzOTczM2UwNDAzOWViNWUuLjBlOTczZmI5NGZhNjEwOTJkYjQ1YmQ0MDZjNTk3YWM5YWVi
MjEwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5tbQpAQCAtMzgsNiArMzgsOCBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCisjaW1wb3J0ICJMb2NhbEF1dGhlbnRpY2F0aW9u
U29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQoX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbCAqcGFuZWwsIGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+IGRl
bGVnYXRlKQpAQCAtNDcsNyArNDksOCBAQCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRpY2F0aW9uUAogICAgIG1f
ZGVsZWdhdGVNZXRob2RzLnBhbmVsVXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbCA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnVwZGF0ZVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxEaXNtaXNzV2ViQXV0
aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihwYW5lbDpkaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6
KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1Jl
dHJpZXNDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHBhbmVsOnJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczpjb21wbGV0aW9uSGFu
ZGxlcjopXTsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbHNlbGVjdEFzc2VydGlvblJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjopXTsK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5l
bDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKKyAgICBtX2Rl
bGVnYXRlTWV0aG9kcy5wYW5lbFZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbENvbXBsZXRpb25I
YW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6dmVy
aWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOmNvbXBsZXRpb25IYW5kbGVyOildOwogfQogCiBSZXRh
aW5QdHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4gPiBXZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50OjpkZWxlZ2F0ZSgpCkBAIC02Nyw2ICs3MCwxMiBAQCBzdGF0aWMg
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZSB3a1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxV
cGRhdGUoV2ViQXV0aGVudAogICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bFVwZGF0ZVBJTkF1dGhCbG9ja2VkOwogICAgIGlmIChzdGF0dXMgPT0gV2ViQXV0aGVudGljYXRp
b25TdGF0dXM6OlBpbkludmFsaWQpCiAgICAgICAgIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsVXBkYXRlUElOSW52YWxpZDsKKyAgICBpZiAoc3RhdHVzID09IFdlYkF1dGhlbnRpY2F0
aW9uU3RhdHVzOjpMQUVycm9yKQorICAgICAgICByZXR1cm4gX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbFVwZGF0ZUxBRXJyb3I7CisgICAgaWYgKHN0YXR1cyA9PSBXZWJBdXRoZW50aWNhdGlvblN0
YXR1czo6TEFFeGNsdWRlQ3JlZGVudGlhbHNNYXRjaGVkKQorICAgICAgICByZXR1cm4gX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRXhjbHVkZUNyZWRlbnRpYWxzTWF0Y2hlZDsKKyAg
ICBpZiAoc3RhdHVzID09IFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzOjpMQU5vQ3JlZGVudGlhbCkK
KyAgICAgICAgcmV0dXJuIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVu
dGlhbDsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbFVwZGF0ZU11bHRpcGxlTkZDVGFnc1ByZXNlbnQ7CiB9CkBAIC0xMzMsNyAr
MTQyLDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRp
b25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkEKIHsKICAgICBBU1NFUlQoIXJlc3BvbnNl
cy5pc0VtcHR5KCkpOwogCi0gICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbHNlbGVjdEFz
c2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICBpZiAoIW1fZGVsZWdhdGVN
ZXRob2RzLnBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbMF0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMTU4LDYgKzE2NywyOCBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
bGllbnQ6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QQogICAg
IH0pLmdldCgpXTsKIH0KIAordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp2ZXJp
ZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbENv
bXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0TlMoW2Fs
bG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSkuZ2V0KCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFk
ZWxlZ2F0ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFthbGxvY0xBQ29u
dGV4dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShk
ZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHBhbmVsOnZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJv
bDpjb21wbGV0aW9uSGFuZGxlcjopKTsKKyAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCB2ZXJp
ZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6YWNjZXNzQ29udHJvbCBjb21wbGV0aW9uSGFuZGxlcjpt
YWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShMQUNvbnRleHQgKmNvbnRleHQpIG11dGFi
bGUgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVk
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAgICB9
KS5nZXQoKV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKaW5kZXgg
NzIwMTU4YWNjMjU1OTFiNzMwZmNlNzFjYWZlZGJlMzQzMTk2ZGVkMi4uZDBkZDliMTA0OWFhMTdm
YmVlZTNiODQ5MmU1ZWM0MWY3NTUyYThkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxD
b25uZWN0aW9uLmgKQEAgLTM3LDEwICszNywxMCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgTW9j
a0xvY2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBnZXRVc2VyQ29uc2VudChjb25zdCBT
dHJpbmcmIHJlYXNvbiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNlckNvbnNlbnRDb250ZXh0Q2Fs
bGJhY2smJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc1VubG9ja2VkKExBQ29udGV4dCAqKSBj
b25zdCBmaW5hbDsKICAgICBSZXRhaW5QdHI8U2VjS2V5UmVmPiBjcmVhdGVDcmVkZW50aWFsUHJp
dmF0ZUtleShMQUNvbnRleHQgKiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgY29uc3QgU3RyaW5nJiBz
ZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIGdldEF0dGVzdGF0aW9uKFNlY0tleVJlZiwgTlNEYXRhICphdXRoRGF0YSwgTlNE
YXRhICpoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYpIGNvbnN0IGZpbmFsOwotICAgIE5TRGlj
dGlvbmFyeSAqc2VsZWN0Q3JlZGVudGlhbChjb25zdCBOU0FycmF5ICopIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgZmlsdGVyUmVzcG9uc2VzKEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4+JikgY29uc3QgZmluYWw7CiAKICAgICBXZWJDb3JlOjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tMb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KaW5kZXggOTE1YjU5NDk5ZmU3ZWNk
MjdiZmY2OWIyZjA2NzBkYjdkNGNmMzBmZi4uOGI4ZDgyNDUxNGU1OGM4NDIwMGFhNzgxNjY3NTlh
YWVmN2NjNTE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQpA
QCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW1w
b3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5o
PgorI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogI2ltcG9ydCAiTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgiCkBAIC00Mywx
NyArNDQsOSBAQCBNb2NrTG9jYWxDb25uZWN0aW9uOjpNb2NrTG9jYWxDb25uZWN0aW9uKGNvbnN0
IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbgogewogfQogCi12b2lkIE1vY2tMb2Nh
bENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYsIFNlY0FjY2Vzc0NvbnRy
b2xSZWYsIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYgY2FsbGJhY2spIGNvbnN0Citib29s
IE1vY2tMb2NhbENvbm5lY3Rpb246OmlzVW5sb2NrZWQoTEFDb250ZXh0ICpjb250ZXh0KSBjb25z
dAogewotICAgIC8vIE1vY2sgYXN5bmMgb3BlcmF0aW9ucy4KLSAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NvbmZpZ3VyYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24sIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjb25maWd1cmF0aW9u
LmxvY2FsKTsKLSAgICAgICAgaWYgKCFjb25maWd1cmF0aW9uLmxvY2FsLT5hY2NlcHRBdXRoZW50
aWNhdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soVXNlckNvbnNlbnQ6Ok5vLCBuaWwpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxiYWNrKFVzZXJDb25z
ZW50OjpZZXMsIGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSkuZ2V0KCkp
OwotICAgIH0pOworICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24ubG9jYWwtPmFjY2VwdEF1dGhl
bnRpY2F0aW9uOwogfQogCiBSZXRhaW5QdHI8U2VjS2V5UmVmPiBNb2NrTG9jYWxDb25uZWN0aW9u
OjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNvbnRleHQgKiwgU2VjQWNjZXNzQ29udHJv
bFJlZiwgY29uc3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0
aW9uVGFnKSBjb25zdApAQCAtMTEyLDE1ICsxMDUsMjQgQEAgdm9pZCBNb2NrTG9jYWxDb25uZWN0
aW9uOjpnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqLCBOU0RhdGEgKiwgQXR0ZXN0
YXQKICAgICB9KTsKIH0KIAotTlNEaWN0aW9uYXJ5ICpNb2NrTG9jYWxDb25uZWN0aW9uOjpzZWxl
Y3RDcmVkZW50aWFsKGNvbnN0IE5TQXJyYXkgKmNyZWRlbnRpYWxzKSBjb25zdAordm9pZCBNb2Nr
TG9jYWxDb25uZWN0aW9uOjpmaWx0ZXJSZXNwb25zZXMoSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mIHJlc3BvbnNlcykgY29uc3QKIHsKLSAgICBh
dXRvIHByZWZlcnJlZFVzZXJoYW5kbGUgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJhc2U2NEVuY29kZWRTdHJpbmc6bV9jb25maWd1cmF0aW9uLmxvY2FsLT5wcmVmZXJyZWRVc2Vy
aGFuZGxlQmFzZTY0IG9wdGlvbnM6MF0pOwotICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpjcmVkZW50
aWFsIDogY3JlZGVudGlhbHMpIHsKLSAgICAgICAgaWYgKFtjcmVkZW50aWFsWyhpZClrU2VjQXR0
ckFwcGxpY2F0aW9uVGFnXSBpc0VxdWFsVG9EYXRhOnByZWZlcnJlZFVzZXJoYW5kbGUuZ2V0KCld
KQotICAgICAgICAgICAgcmV0dXJuIGNyZWRlbnRpYWw7CisgICAgY29uc3QgYXV0byYgcHJlZmVy
cmVkVXNlcmhhbmRsZUJhc2U2NCA9IG1fY29uZmlndXJhdGlvbi5sb2NhbC0+cHJlZmVycmVkVXNl
cmhhbmRsZUJhc2U2NDsKKyAgICBpZiAocHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXRyID0gcmVzcG9uc2VzLmJlZ2luKCk7
CisgICAgZm9yICg7IGl0ciAhPSByZXNwb25zZXMuZW5kKCk7ICsraXRyKSB7CisgICAgICAgIGF1
dG8qIHVzZXJIYW5kbGUgPSBpdHItPmdldCgpLnVzZXJIYW5kbGUoKTsKKyAgICAgICAgQVNTRVJU
KHVzZXJIYW5kbGUpOworICAgICAgICBhdXRvIHVzZXJoYW5kbGVCYXNlNjQgPSBiYXNlNjRFbmNv
ZGUodXNlckhhbmRsZS0+ZGF0YSgpLCB1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCkpOworICAgICAg
ICBpZiAodXNlcmhhbmRsZUJhc2U2NCA9PSBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0KQorICAg
ICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBuaWw7CisgICAgYXV0byByZXNwb25zZSA9IHJlc3BvbnNlcy50YWtlKGl0cik7CisgICAg
QVNTRVJUKHJlc3BvbnNlKTsKKyAgICByZXNwb25zZXMuY2xlYXIoKTsKKyAgICByZXNwb25zZXMu
YWRkKFdURk1vdmUoKnJlc3BvbnNlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRpb25GbGFncy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRpb25GbGFncy5oCmluZGV4IDU0ODhhMjExMzkyOTI2YzBhMzY2
ZmZhODdmNzY1OTA5ZDkxZTViODguLjUwOTJkOTMzODZlZTNiY2RlYTYyZjRlZmUxMjk1MmUwZTM3
N2E1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvbkZsYWdzLmgKQEAgLTQ1LDcgKzQ1
LDEwIEBAIGVudW0gY2xhc3MgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgOiB1aW50OF90IHsKICAg
ICBOb0NyZWRlbnRpYWxzRm91bmQsCiAgICAgUGluQmxvY2tlZCwKICAgICBQaW5BdXRoQmxvY2tl
ZCwKLSAgICBQaW5JbnZhbGlkCisgICAgUGluSW52YWxpZCwKKyAgICBMQUVycm9yLAorICAgIExB
RXhjbHVkZUNyZWRlbnRpYWxzTWF0Y2hlZCwKKyAgICBMQU5vQ3JlZGVudGlhbCwKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMmNjZmI2NWE4NGEyN2NmYmU3NjViZjc1YjkxNmM2NTMxMjNm
NjMyNC4uNDVlY2NjNTY3NzEwZDcxYmQ2NDdjMTdjMDcwNjBmYzZjNGFiYTQ4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDk2LDYg
KzEwOTYsNyBAQAogCQk1NzBEQUFDNjIzMDM3RjdGMDBFOEZDMDQgLyogV0tORlJlYWRlclNlc3Np
b25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTcwREFBQzQyMzAzN0Y3RTAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUu
aCAqLzsgfTsKIAkJNTcwREFBQ0EyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERBQUM4MjMw
Mzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggKi87IH07CiAJCTU3MkZENDQzMjIyNjVD
RTIwMEExRUNDMyAvKiBXZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkZENDQxMjIyNjVDRTIwMEEx
RUNDMyAvKiBXZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXIuaCAqLzsgfTsKKwkJNTc0MjE3
OTIyNDAwRTI4NjAwMkIzMDNEIC8qIExvY2FsQXV0aGVudGljYXRpb25TUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzkxMjQwMEUwOTgwMDJC
MzAzRCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggKi87IH07CiAJCTU3NDcyOEQxMjM0NTZF
OTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQ3MjhDRjIzNDU2RTk4MDAxNzAwQUYg
LyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3NDcyOEQ0MjM0NTcwQUUwMDE3MDBBRiAvKiBfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDcyOEQzMjM0NTcwQUUwMDE3MDBBRiAvKiBfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCAqLzsgfTsKIAkJNTc1OTdFQjkyMTgxMUQ5QTAw
MzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3NTk3RUI3MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVy
LmggKi87IH07CkBAIC0zODExLDYgKzM4MTIsNyBAQAogCQk1NzBEQUFDODIzMDM4NUZEMDBFOEZD
MDQgLyogQ3RhcE5mY0RyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdGFwTmZjRHJpdmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MERBQUM5MjMwMzg1RkQwMEU4RkMwNCAvKiBD
dGFwTmZjRHJpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN0YXBOZmNEcml2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyog
V2ViVmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZXdE
aWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyogTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3NDcyOENGMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0NzI4RDAyMzQ1NkU5ODAwMTcwMEFGIC8qIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQ3
MjhEMzIzNDU3MEFFMDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjgzOSw2ICs2ODQxLDcgQEAKIAkJCQkxQTU3
MDUxMDFCRTQxMEU1MDA4NzRBRjEgLyogQmxvY2tTUEkuaCAqLywKIAkJCQkzN0MyMUNBRDFFOTk0
QzBDMDAyOUQ1RjkgLyogQ29yZVByZWRpY3Rpb25TUEkuaCAqLywKIAkJCQkyREFBREE4RTIyOThD
MjEwMDBFMzZCMEMgLyogRGV2aWNlTWFuYWdlbWVudFNQSS5oICovLAorCQkJCTU3NDIxNzkxMjQw
MEUwOTgwMDJCMzAzRCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggKi8sCiAJCQkJNTdCODI2
NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oICovLAogCQkJCTM3NTRENTQ0MUIz
QTI5RkQwMDNBNEM3RiAvKiBOU0ludm9jYXRpb25TUEkuaCAqLywKIAkJCQkzN0I0N0UyQzFENjRE
Qjc2MDA1RjRFRkYgLyogb2JqY1NQSS5oICovLApAQCAtMTAzNjIsNiArMTAzNjUsNyBAQAogCQkJ
CTQxMzA3NUIyMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDEwODc2MTFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3OERDMjk4MjE1NUEwMDIwMDc0RTgxNSAvKiBMb2Nh
bEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3NDIxNzkyMjQw
MEUyODYwMDJCMzAzRCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0RDRURBQzIxNEM2MDI3MDAxNkI4NDcgLyogTG9jYWxBdXRoZW50aWNhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1N0RDRURBRDIxNEM2MDJDMDAxNkI4NDcgLyogTG9jYWxDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURBRTIxNEM2MDMzMDAxNkI4NDcgLyogTG9j
YWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4M2VlZDBiODA0N2ZmNDYwNTM5YzA3ZGNiZGQwMzY1ZjA2
MTE1ZjI0Li5kYTIxZTQ4MWEyMzMzZDE1Zjg2MjNmZjVjNmU0YTAxNmMyMWU4ZjBmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMjAtMDItMjEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCBTUEkgZm9yIHRoZSBwbGF0Zm9ybSBhdXRoZW50aWNh
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgw
ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5MzY5MzA1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgQmVzaWRlcyBhZGRpbmcgQVBJIHRlc3RzLCB0
aGlzIHBhdGNoIGFsc28gdGVhY2hlcyBUZXN0V2ViS2l0QVBJIHRvIHVzZSByZXN0cmljdGVkIGVu
dGl0bGVtZW50cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVz
dFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5l
bDp1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOl0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0
aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5l
bERlbGVnYXRlIHBhbmVsOnZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24tbGEuaHRtbDogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi5odG1sLgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtbGEtZXJyb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0
bWw6IEFkZGVkLgorCiAyMDIwLTAyLTIxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIEFwcC1ib3VuZCBkb21haW5zIHNob3VsZCBoYXZlIHNlcGFy
YXRlIE5ldHdvcmsgU2Vzc2lvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHMgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1lbnRz
CmluZGV4IGVhMGMxZjdjNDc0YTI1YzcxMGMzODVkZDY4YmM5NGU4MjA5MGE3MTAuLmE5ZjljZGYw
NGMyZmJiZDAyZTNhMmVlZjIyNjI0N2FlNmViOTYyMzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHMK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1h
Y09TLmVudGl0bGVtZW50cwpAQCAtMiw2ICsyLDEwIEBACiA8IURPQ1RZUEUgcGxpc3QgUFVCTElD
ICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERz
L1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KIDxwbGlzdCB2ZXJzaW9uPSIxLjAiPgogPGRpY3Q+CisJ
PGtleT5rZXljaGFpbi1hY2Nlc3MtZ3JvdXBzPC9rZXk+CisJPGFycmF5PgorCQk8c3RyaW5nPmNv
bS5hcHBsZS5UZXN0V2ViS2l0QVBJPC9zdHJpbmc+CisJPC9hcnJheT4KIAk8a2V5PmNvbS5hcHBs
ZS5zZWN1cml0eS50ZW1wb3JhcnktZXhjZXB0aW9uLnNicGw8L2tleT4KIAk8YXJyYXk+CiAJCTxz
dHJpbmc+KGFsbG93IG1hY2gtaXNzdWUtZXh0ZW5zaW9uIChyZXF1aXJlLWFsbCAoZXh0ZW5zaW9u
LWNsYXNzICZxdW90O2NvbS5hcHBsZS53ZWJraXQuZXh0ZW5zaW9uLm1hY2gmcXVvdDspKSk8L3N0
cmluZz4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVz
dFdlYktpdEFQSS54Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMv
VGVzdFdlYktpdEFQSS54Y2NvbmZpZwppbmRleCAzMGE4Y2FmMGMyNDcwZDY3NmI2ZGNlMzYyMWYw
OWIwNGFjNzkwZDMxLi5jYThlMTcxNWFjZTFjNjNhNjBkOGI0NWMxYzFmYjU3MTgwZDNlZmVhIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRB
UEkueGNjb25maWcKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJLnhjY29uZmlnCkBAIC02OSwzICs2OSwxMCBAQCBDT0RFX1NJR05fRU5USVRMRU1F
TlRTW3Nkaz1pcGhvbmUqXSA9IENvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktaU9TLmVudGl0
bGVtZQogQ09ERV9TSUdOX0VOVElUTEVNRU5UU1tzZGs9bWFjb3N4Kl0gPSBDb25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50czsKIAogU1RSSVBfU1RZTEUgPSBkZWJ1
Z2dpbmc7CisKK0NPREVfU0lHTl9JREVOVElUWVtzZGs9bWFjb3N4Kl0gPSAkKENPREVfU0lHTl9J
REVOVElUWV8kKENPTkZJR1VSQVRJT04pKTsKK0NPREVfU0lHTl9JREVOVElUWV9EZWJ1ZyA9ICQo
Q09ERV9TSUdOX0lERU5USVRZXyQoVVNFX0lOVEVSTkFMX1NESykpOworQ09ERV9TSUdOX0lERU5U
SVRZX1JlbGVhc2UgPSAkKENPREVfU0lHTl9JREVOVElUWV8kKFVTRV9JTlRFUk5BTF9TREspKTsK
K0NPREVfU0lHTl9JREVOVElUWV9ZRVMgPSAkKFdLX0VOR0lORUVSSU5HX0NPREVfU0lHTl9JREVO
VElUWSk7CitDT0RFX1NJR05fSURFTlRJVFlfUHJvZHVjdGlvbiA9ICQoQ09ERV9TSUdOX0lERU5U
SVRZX1Byb2R1Y3Rpb25fJChVU0VfSU5URVJOQUxfU0RLKSk7CitDT0RFX1NJR05fSURFTlRJVFlf
UHJvZHVjdGlvbl9ZRVMgPSAtOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NDE1N2Y2ODhk
OWQwYmI4ZmU3MWNkYWI4OWJjODdiMGRjZjEzYTQ1Li5jZjI1MjNlMmMzMDVjYjIxZmExOGZiYWJl
MjEyODIzZjc1ZWIzNWNiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQ5LDYgKzM0OSwx
MCBAQAogCQk1NzMyNTVBNTIyMTM5QkM3MDAzOTZBRTggLyogaGVsbG93b3JsZC53ZWJhcmNoaXZl
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
MzI1NUE0MjIxMzlCOTAwMDM5NkFFOCAvKiBoZWxsb3dvcmxkLndlYmFyY2hpdmUgKi87IH07CiAJ
CTU3MzI1NUE2MjIxMzlCQzcwMDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNoaXZlLTEuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMyNTVB
MjIyMTM5QjhGMDAzOTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0xLmh0bWwgKi87IH07CiAJCTU3
MzI1NUE3MjIxMzlCQzcwMDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMyNTVBMzIy
MTM5QjkwMDAzOTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0yLmh0bWwgKi87IH07CisJCTU3NDIx
Nzg4MjQwMEFDMjUwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFs
LWxhLWVycm9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTc0MjE3ODcyNDAwQUJGRDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCAqLzsgfTsKKwkJNTc0MjE3OEEyNDAwQUVE
ODAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGlj
YXRlLWNyZWRlbnRpYWwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc4OTI0MDBBRUQwMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sICovOyB9
OworCQk1NzQyMTc4QzI0MDBDRDQ3MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1h
c3NlcnRpb24tbGEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLzsgfTsKKwkJNTc0MjE3OEUyNDAwRDJERjAwMkIz
MDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc4RDI0
MDBEMjZDMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5o
dG1sICovOyB9OwogCQk1NzRGNTVEMjIwNEQ0N0YwMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0
RjU1RDAyMDRENDcxQzAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsgfTsKIAkJNTc1
ODU5N0YyM0EyNTI3QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTdFMjNBMjUyN0EwMEM3NDU3MiAv
KiBDdGFwUGluVGVzdC5jcHAgKi87IH07CiAJCTU3NTg1OTg0MjNDM0MzQTQwMEM3NDU3MiAvKiB3
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4tZ2V0LXJldHJpZXMtZXJy
b3IuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzU4NTk4MzIzQzNDMzYyMDBDNzQ1NzIgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1oaWQtcGluLWdldC1yZXRyaWVzLWVycm9yLmh0bWwgKi87IH07CkBAIC0xNTE3
LDYgKzE1MjEsNyBAQAogCQkJCTU3OERBNDRFMjNFQ0QyOEIwMDI0NjAxMCAvKiB3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLWludmFsaWQtZXJyb3ItcmV0cnkuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzBEMjZGQzIzQzNGODcwMDBENUNGNjcgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTU3NjYzREVDMjM0RjFGOTMwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk1NzQy
MTc4QzI0MDBDRDQ3MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24t
bGEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1Nzk4MzM5MjIzNjhGQTM3MDA4RTU1
NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3Mu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RFQTIzNEVBNjZEMDBFODVFMDkg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJNTc3NDU0RDIyMzU5QkIwMTAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNh
dGlvbi1nZXQtYXNzZXJ0aW9uLXUyZi1uby1jcmVkZW50aWFscy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLApAQCAtMTUzMSw2ICsxNTM2LDkgQEAKIAkJCQk1NzhEQTQ0QTIzRUNEMTg2MDAyNDYw
MTAgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLWludmFsaWQt
ZXJyb3ItcmV0cnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzBEMjZGNjIzQzNE
MzMwMDBENUNGNjcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGlu
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc5ODMzN0UyMzYwMTlBNDAwOEU1NTQ3
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCisJCQkJNTc0MjE3OEEyNDAwQUVEODAwMkIzMDNEIC8qIHdlYi1hdXRoZW50
aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKKwkJCQk1NzQyMTc4ODI0MDBBQzI1MDAyQjMwM0QgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAorCQkJCTU3NDIxNzhFMjQwMEQyREYwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRp
b24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUMy
QjgxODYxQzg5MjU5RDAwQTU1MjlGIC8qIHdlYmZvbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQk1MTcxNEVCNDFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVh
bnVwLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MTcxNEVCNTFDRjhDNzhDMDA0
NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKQEAgLTE5NjEsNiArMTk2OSwxMSBAQAogCQk1NzMyNTVBMzIyMTM5QjkwMDAzOTZBRTgg
LyogbG9hZC13ZWItYXJjaGl2ZS0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG9hZC13ZWItYXJjaGl2ZS0y
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMyNTVBNDIyMTM5QjkwMDAz
OTZBRTggLyogaGVsbG93b3JsZC53ZWJhcmNoaXZlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZS5icGxpc3Q7IHBhdGggPSBoZWxsb3dvcmxkLndl
YmFyY2hpdmU7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzVGMDI1MUYzQTRFQTYw
MDBFRTgwMSAvKiBUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50
czsgcGF0aCA9ICJUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzQyMTc4NzI0MDBBQkZEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU3NDIxNzg5MjQwMEFFRDAwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGlj
YXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3Jl
ZGVudGlhbC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc0MjE3OEIyNDAw
Q0QyRDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAvKiB3
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTc0MjE3OEYyNDAwRDU0RDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNh
dGlvbi1tYWtlLWNyZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzRG
NTVEMDIwNEQ0NzFDMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5h
bWUgPSBTZWN1cml0eS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCTU3NTg1OTdE
MjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdGFwUGlu
VGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzU4NTk3RTIzQTI1MjdBMDBD
NzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3RhcFBpblRlc3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU3OSw2ICszNTkyLDcgQEAKIAkJ
CQk1NzhEQTQ0RDIzRUNEMjYxMDAyNDYwMTAgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24taGlkLXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0bWwgKi8sCiAJCQkJNTcwRDI2RkIy
M0MzRjg2NTAwRDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1w
aW4uaHRtbCAqLywKIAkJCQk1NzY2M0RFQjIzNEYxRjgwMDBFODVFMDkgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgKi8sCisJCQkJNTc0MjE3OEIyNDAwQ0QyRDAw
MkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwgKi8sCiAJ
CQkJNTc5ODMzN0IyMzVFQjY1QzAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdzLmh0bWwgKi8sCiAJCQkJNTc2NjNERTkyMzRFQTYwQjAw
RTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sICovLAog
CQkJCTU3NzQ1NEQxMjM1OUJBRDUwMDhFMUVENyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi11MmYtbm8tY3JlZGVudGlhbHMuaHRtbCAqLywKQEAgLTM1OTMsNiArMzYwNywxMCBA
QAogCQkJCTU3OERBNDQ5MjNFQ0QxNTUwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1sICovLAogCQkJCTU3
MEQyNkY1MjNDM0QzMjcwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50
aWFsLWhpZC1waW4uaHRtbCAqLywKIAkJCQk1Nzk4MzM3RDIzNjAxOTZEMDA4RTU1NDcgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQuaHRtbCAqLywKKwkJCQk1NzQyMTc4
OTI0MDBBRUQwMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sICovLAorCQkJCTU3NDIxNzg3MjQwMEFCRkQwMDJC
MzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwg
Ki8sCisJCQkJNTc0MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1t
YWtlLWNyZWRlbnRpYWwtbGEuaHRtbCAqLywKKwkJCQk1NzQyMTc4RjI0MDBENTREMDAyQjMwM0Qg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC5odG1sICovLAogCQkJCTUxNzE0
RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICov
LAogCQkJCTUxNzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFu
dXAtMi5odG1sICovLAogCQkJCTUxMjBDODNCMUU2NzRFMzUwMDI1QjI1MCAvKiBXZWJzaXRlRGF0
YVN0b3JlQ3VzdG9tUGF0aHMuaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbQppbmRleCAwODMzYzQ5ODlhYmMzYWEzNGEzY2E2ODgzMWQwNGFmNDA2MmYzNmUzLi5mMmZi
NDUyODAwMjRiMGRiNDFlYzI3NjA1NjAxYzdiMTMyZjUyZWU2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJUQ1BTZXJ2ZXIu
aCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3Vy
YXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgPExvY2FsQXV0aGVudGljYXRpb24vTG9jYWxBdXRoZW50
aWNhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0V4
cGVyaW1lbnRhbEZlYXR1cmUuaD4KQEAgLTM5LDYgKzQwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9f
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNp
bXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJp
dHlTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgog
CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuID0gZmFsc2U7CkBAIC00OSw5
ICs1MSwxOCBAQCBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTm9DcmVk
ZW50aWFsc0ZvdW5kID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVs
VXBkYXRlUElOQmxvY2tlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25Q
YW5lbFVwZGF0ZVBJTkF1dGhCbG9ja2VkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50
aWNhdGlvblBhbmVsVXBkYXRlUElOSW52YWxpZCA9IGZhbHNlOworc3RhdGljIGJvb2wgd2ViQXV0
aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRXJyb3IgPSBmYWxzZTsKK3N0YXRpYyBib29sIHdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUV4Y2x1ZGVDcmVkZW50aWFsc01hdGNoZWQgPSBmYWxz
ZTsKK3N0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVudGlh
bCA9IGZhbHNlOwogc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbENhbmNlbEltbWVk
aWF0ZWx5ID0gZmFsc2U7CitzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5
VXNlciA9IGZhbHNlOwogc3RhdGljIFN0cmluZyB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGluOwog
c3RhdGljIEJPT0wgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlID0gTk87Citz
dGF0aWMgU3RyaW5nIHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQgPQorICAgICJCRGovenhTa3pL
Z2FCdVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pGL1FtMTc0OVZCSlBncVVJd2ZoV0hKOTFuYjdVIgor
ICAgICJQSDc2YzArV0ZPelpLc2xQeXlGc2U0Z29HSVcyUjdrOVZITFBFWmw1bmZuQmdFVkZoNXpl
disveHBIUUl2dXE2IgorICAgICJSUT09IjsKK3N0YXRpYyBTdHJpbmcgdGVzdFVzZXJoYW5kbGVC
YXNlNjQgPSAiQUFFQ0F3UUZCZ2NJQ1E9PSI7CiAKIEBpbnRlcmZhY2UgVGVzdFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
RGVsZWdhdGU+CiBAZW5kCkBAIC04NCw2ICs5NSwxOCBAQCAtICh2b2lkKXBhbmVsOihfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbDoo
XwogICAgICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlUElOSW52YWxpZCA9IHRydWU7
CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHVwZGF0ZSA9PSBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvcikgeworICAgICAgICB3ZWJBdXRoZW50aWNhdGlvblBh
bmVsVXBkYXRlTEFFcnJvciA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KHVwZGF0ZSA9PSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFeGNsdWRlQ3JlZGVu
dGlhbHNNYXRjaGVkKSB7CisgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUV4
Y2x1ZGVDcmVkZW50aWFsc01hdGNoZWQgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmICh1cGRhdGUgPT0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVk
ZW50aWFsKSB7CisgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQU5vQ3JlZGVu
dGlhbCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAKIC0gKHZvaWQpcGFuZWw6
KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBkaXNtaXNzV2ViQXV0aGVudGljYXRp
b25QYW5lbFdpdGhSZXN1bHQ6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KXJlc3VsdApAQCAt
MTExLDYgKzEzNCwxMSBAQCAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
ICopcGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOgogCiAtICh2b2lkKXBhbmVs
OihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9u
c2U6KE5TQXJyYXkgPCBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICo+ICop
cmVzcG9uc2VzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgaWYgKHJlc3Bv
bnNlcy5jb3VudCA9PSAxKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlc1sw
XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBFWFBFQ1RfRVEocmVzcG9uc2VzLmNv
dW50LCAydWwpOwogICAgIGZvciAoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZSAqcmVzcG9uc2UgaW4gcmVzcG9uc2VzKSB7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXNwb25z
ZS5uYW1lIGlzRXF1YWw6QCJqb2hucHNtaXRoQGV4YW1wbGUuY29tIl0gfHwgW3Jlc3BvbnNlLm5h
bWUgaXNFcXVhbDpAIiJdKTsKQEAgLTEyMyw2ICsxNTEsMTMgQEAgLSAodm9pZClwYW5lbDooX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlOihO
U0FycmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbaW5kZXhdKTsKIH0KIAorLSAo
dm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHZlcmlmeVVzZXJX
aXRoQWNjZXNzQ29udHJvbDooU2VjQWNjZXNzQ29udHJvbFJlZilhY2Nlc3NDb250cm9sIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShMQUNvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlciA9IHRydWU7CisgICAgYXV0byBj
b250ZXh0ID0gYWRvcHROUyhbW0xBQ29udGV4dCBhbGxvY10gaW5pdF0pOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKGNvbnRleHQuZ2V0KCkpOworfQorCiBAZW5kCiAKIEBpbnRlcmZhY2UgVGVzdFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxGYWtlRGVsZWdhdGUgOiBOU09iamVjdCA8X1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbERlbGVnYXRlPgpAQCAtMjMxLDYgKzI2NiwyNCBAQCBzdGF0aWMgX1dLRXhw
ZXJpbWVudGFsRmVhdHVyZSAqd2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCkK
ICAgICByZXR1cm4gdGhlRmVhdHVyZS5nZXQoKTsKIH0KIAorI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspIHx8IFBMQVRGT1JNKElPUykKK3N0YXRpYyBfV0tFeHBlcmltZW50YWxGZWF0dXJlICp3
ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4cGVyaW1lbnRhbEZlYXR1cmUoKQor
eworICAgIHN0YXRpYyBSZXRhaW5QdHI8X1dLRXhwZXJpbWVudGFsRmVhdHVyZT4gdGhlRmVhdHVy
ZTsKKyAgICBpZiAodGhlRmVhdHVyZSkKKyAgICAgICAgcmV0dXJuIHRoZUZlYXR1cmUuZ2V0KCk7
CisKKyAgICBOU0FycmF5ICpmZWF0dXJlcyA9IFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxG
ZWF0dXJlc107CisgICAgZm9yIChfV0tFeHBlcmltZW50YWxGZWF0dXJlICpmZWF0dXJlIGluIGZl
YXR1cmVzKSB7CisgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbDpAIldlYkF1dGhlbnRp
Y2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRW5hYmxlZCJdKSB7CisgICAgICAgICAgICB0aGVGZWF0
dXJlID0gZmVhdHVyZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiB0aGVGZWF0dXJlLmdldCgpOworfQorI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspIHx8IFBMQVRGT1JNKElPUykKKwogc3RhdGljIHZvaWQgcmVzZXQoKQogewogICAgIHdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSBmYWxzZTsKQEAgLTI0MSw5ICsyOTQsMTMgQEAgc3Rh
dGljIHZvaWQgcmVzZXQoKQogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVQSU5CbG9j
a2VkID0gZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkF1dGhCbG9j
a2VkID0gZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZVBJTkludmFsaWQg
PSBmYWxzZTsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvciA9IGZhbHNl
OworICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUV4Y2x1ZGVDcmVkZW50aWFsc01h
dGNoZWQgPSBmYWxzZTsKKyAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0NyZWRl
bnRpYWwgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2VsSW1tZWRpYXRl
bHkgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGluID0gZW1wdHlTdHJpbmco
KTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUgPSBOTzsKKyAgICB3
ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlciA9IGZhbHNlOwogfQogCiBzdGF0aWMgdm9p
ZCBjaGVja1BhbmVsKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKnBhbmVsLCBOU1N0cmluZyAq
cmVseWluZ1BhcnR5SUQsIE5TQXJyYXkgKnRyYW5zcG9ydHMsIF9XS1dlYkF1dGhlbnRpY2F0aW9u
VHlwZSB0eXBlKQpAQCAtMjc3LDYgKzMzNCw2MCBAQCBzdGF0aWMgdm9pZCBjaGVja0ZyYW1lSW5m
byhXS0ZyYW1lSW5mbyAqZnJhbWUsIGJvb2wgaXNNYWluRnJhbWUsIE5TU3RyaW5nICp1cmwsCiAg
ICAgRVhQRUNUX0VRKGZyYW1lLndlYlZpZXcsIHdlYlZpZXcpOwogfQogCisjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykgfHwgUExBVEZPUk0oSU9TKQorCitib29sIGFkZEtleVRvS2V5Y2hhaW4o
Y29uc3QgU3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0
IFN0cmluZyYgdXNlckhhbmRsZUJhc2U2NCkKK3sKKyAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMg
PSBAeworICAgICAgICAoaWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpa1NlY0F0dHJLZXlUeXBlRUNT
RUNQcmltZVJhbmRvbSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0
cktleUNsYXNzUHJpdmF0ZSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5U2l6ZUluQml0czogQDI1
NiwKKyAgICB9OworICAgIENGRXJyb3JSZWYgZXJyb3JSZWYgPSBudWxscHRyOworICAgIGF1dG8g
a2V5ID0gYWRvcHRDRihTZWNLZXlDcmVhdGVXaXRoRGF0YSgKKyAgICAgICAgKF9fYnJpZGdlIENG
RGF0YVJlZilhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJp
bmc6cHJpdmF0ZUtleUJhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5r
bm93bkNoYXJhY3RlcnNdKS5nZXQoKSwKKyAgICAgICAgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJl
ZilvcHRpb25zLAorICAgICAgICAmZXJyb3JSZWYKKyAgICApKTsKKyAgICBpZiAoZXJyb3JSZWYp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5TRGljdGlvbmFyeSogYWRkUXVlcnkgPSBA
eworICAgICAgICAoaWQpa1NlY1ZhbHVlUmVmOiAoaWQpa2V5LmdldCgpLAorICAgICAgICAoaWQp
a1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAorICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDog
cnBJZCwKKyAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IGFkb3B0TlMoW1tOU0Rh
dGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzp1c2VySGFuZGxlQmFzZTY0IG9w
dGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgp
LAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlOiAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxl
QWZ0ZXJGaXJzdFVubG9jaywKKyNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJTikKKyAg
ICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCisjZWxzZQorICAg
ICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUworI2VuZGlmCisgICAgfTsKKyAgICBPU1N0
YXR1cyBzdGF0dXMgPSBTZWNJdGVtQWRkKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYWRkUXVl
cnksIE5VTEwpOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIGNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcmIHJw
SWQpCit7CisgICAgTlNEaWN0aW9uYXJ5KiBkZWxldGVRdWVyeSA9IEB7CisgICAgICAgIChpZClr
U2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCisgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBy
cElkLAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlOiAoaWQpa1NlY0F0dHJBY2Nlc3Np
YmxlQWZ0ZXJGaXJzdFVubG9jaywKKyNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJTikK
KyAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCisjZWxzZQor
ICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUworI2VuZGlmCisgICAgfTsKKyAgICBT
ZWNJdGVtRGVsZXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkpOworfQor
CisjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgUExBVEZPUk0oSU9TKQorCiB9
IC8vIG5hbWVzYXBjZTsKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBOb1BhbmVsVGlt
ZW91dCkKQEAgLTEwNzYsNiArMTE4NywxMjQgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBNdWx0aXBsZUFjY291bnRzKQogICAgIEVYUEVDVF9FUShbW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAInVzZXJIYW5kbGUiXSBpc0VxdWFsVG9TdHJpbmc6QCI8bnVsbD4i
XSwgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlKTsKIH0KIAorLy8gRm9yIG1h
Y09TLCBvbmx5IGludGVybmFsIGJ1aWxkcyBjYW4gc2lnbiBrZXljaGFpbiBlbnRpdGxlbW5ldHMK
Ky8vIHdoaWNoIGFyZSByZXF1aXJlZCB0byBydW4gbG9jYWwgYXV0aGVudGljYXRvciB0ZXN0cy4K
KyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSB8fCBQTEFURk9STShJT1MpCisKK1RFU1QoV2Vi
QXV0aGVudGljYXRpb25QYW5lbCwgTEFFcnJvcikKK3sKKyAgICByZXNldCgpOworICAgIFJldGFp
blB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsK
KworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVz
dF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0lu
V2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtbY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1
cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworICAgIFtbY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1
cmU6d2ViQXV0aGVudGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxGZWF0dXJl
KCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVs
VUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50
aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvcik7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25Q
YW5lbCwgTEFEdXBsaWNhdGVDcmVkZW50aWFsKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWlu
UHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRl
bnRpYWwiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldl
YlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107
CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhw
ZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07
CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhw
ZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4cGVy
aW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBBU1NFUlRfVFJVRShhZGRLZXlUb0tl
eWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICIiLCB0ZXN0VXNlcmhhbmRsZUJhc2U2
NCkpOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5l
bFVwZGF0ZUxBRXhjbHVkZUNyZWRlbnRpYWxzTWF0Y2hlZCk7CisgICAgY2xlYW5VcEtleWNoYWlu
KCIiKTsKK30KKworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU5vQ3JlZGVudGlhbCkK
K3sKKyAgICByZXNldCgpOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi1sYSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1l
OkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6
WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBm
b3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVy
ZSgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBm
b3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9y
RXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2Vi
QXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmll
dyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0
aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVkZW50aWFsKTsKK30K
KworVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVkZW50aWFsTnVsbERlbGVn
YXRlKQoreworICAgIHJlc2V0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1t
YWtlLWNyZWRlbnRpYWwtbGEiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNs
YXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JU
ZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxl
ZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkV4cGVyaW1lbnRh
bEZlYXR1cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxl
ZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlvbkxvY2FsQXV0aGVu
dGljYXRvckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
VGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAg
W2RlbGVnYXRlIHNldElzTnVsbDp0cnVlXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNz
YWdlOkAiU3VjY2VlZGVkISJdOworICAgIGNsZWFuVXBLZXljaGFpbigiIik7Cit9CisKK1RFU1Qo
V2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFNYWtlQ3JlZGVudGlhbCkKK3sKKyAgICByZXNldCgp
OworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKKworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNz
UGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFtb
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRh
bEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25FeHBlcmltZW50YWxGZWF0dXJlKCldOworICAgIFtb
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRh
bEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFeHBlcmltZW50YWxG
ZWF0dXJlKCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlv
blBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZ3ZWJB
dXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlcik7CisgICAgY2hlY2tQYW5lbChbZGVsZWdhdGUg
cGFuZWxdLCBAIiIsIEBbYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tX
ZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQl0pLmdldCgpLCBhZG9wdE5TKFtbTlNOdW1iZXIg
YWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0SW50ZXJuYWxd
KS5nZXQoKV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZUNyZWF0ZSk7CisgICAgW3dlYlZpZXcg
d2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRp
b25QYW5lbCwgTEFHZXRBc3NlcnRpb24pCit7CisgICAgcmVzZXQoKTsKKyAgICBSZXRhaW5QdHI8
TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAi
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byAq
Y29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxz
IiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50
aWNhdGlvbkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50
aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU1plcm9SZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFs
bG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
CisKKyAgICBBU1NFUlRfVFJVRShhZGRLZXlUb0tleWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlC
YXNlNjQsICIiLCB0ZXN0VXNlcmhhbmRsZUJhc2U2NCkpOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0
aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlmeVVzZXIpOworICAgIGNoZWNrUGFu
ZWwoW2RlbGVnYXRlIHBhbmVsXSwgQCIiLCBAW2Fkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5p
dFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRVU0JdKS5nZXQoKSwgYWRvcHRO
UyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5z
cG9ydEludGVybmFsXSkuZ2V0KCldLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVHZXQpOworICAg
IFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOworICAgIGNsZWFuVXBLZXlj
aGFpbigiIik7Cit9CisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSB8fCBQTEFU
Rk9STShJT1MpCisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQt
YXNzZXJ0aW9uLWxhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZhM2M1YmE0NGIwMmZiMTA1MjlkMDE0ZGY1
ZGU2NDI4ZDQ5ODBiZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbApA
QCAtMCwwICsxLDIyIEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNh
dGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIGludGVy
bmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsKKyAgICB9CisK
KyAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAg
IGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgdGltZW91dDogMTAw
CisgICAgICAgIH0KKyAgICB9OworCisgICAgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRp
b25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAvLyBjb25zb2xlLmxvZygiU3VjY2Vl
ZGVkISIpOworICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxl
ci5wb3N0TWVzc2FnZSgiU3VjY2VlZGVkISIpOworICAgIH0sIGVycm9yID0+IHsKKyAgICAgICAg
Ly8gY29uc29sZS5sb2coZXJyb3IubWVzc2FnZSk7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKGVycm9yLm1lc3NhZ2UpOworICAg
IH0pOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRl
LWNyZWRlbnRpYWwuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
d2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlh
bC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFhYTU5NjUwNmE1MzRiMjVmMGJjNjU4ODk2MWJlM2RkZWI0NGI0
MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRl
bnRpYWwuaHRtbApAQCAtMCwwICsxLDQzIEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0
Ij4KKzxzY3JpcHQ+CisgICAgY29uc3QgdGVzdENyZWRlbnRpYWxJZEhleCA9ICI0OEM0OTcxRTc4
MDVFRTExMEVCMDQ5NDBFRjcwQjc0NThGQkM2RDFFIjsKKyAgICBmdW5jdGlvbiBoZXhTdHJpbmdU
b1VpbnQ4QXJyYXkoaGV4U3RyaW5nKQorICAgIHsKKyAgICAgICAgaWYgKGhleFN0cmluZy5sZW5n
dGggJSAyICE9IDApCisgICAgICAgICAgICB0aHJvdyAiSW52YWxpZCBoZXhTdHJpbmciOworICAg
ICAgICB2YXIgYXJyYXlCdWZmZXIgPSBuZXcgVWludDhBcnJheShoZXhTdHJpbmcubGVuZ3RoIC8g
Mik7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoZXhTdHJpbmcubGVuZ3RoOyBpICs9
IDIpIHsKKyAgICAgICAgICAgIHZhciBieXRlVmFsdWUgPSBwYXJzZUludChoZXhTdHJpbmcuc3Vi
c3RyKGksIDIpLCAxNik7CisgICAgICAgICAgICBpZiAoYnl0ZVZhbHVlID09IE5hTikKKyAgICAg
ICAgICAgICAgICB0aHJvdyAiSW52YWxpZCBoZXhTdHJpbmciOworICAgICAgICAgICAgYXJyYXlC
dWZmZXJbaS8yXSA9IGJ5dGVWYWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhcnJh
eUJ1ZmZlcjsKKyAgICB9CisKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7
IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0g
fSk7CisgICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1
cygpOyB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9z
dCIsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAg
IG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgaWQ6IG5ldyBVaW50OEFy
cmF5KDE2KSwKKyAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCisg
ICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzog
LTcgfV0sCisgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgaWQ6IGhleFN0cmluZ1RvVWludDhBcnJheSh0ZXN0Q3JlZGVudGlhbElkSGV4KSB9XSwK
KyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMCwKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJv
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVmMTYxMjFiYTRjYTJkYjUzM2RmZTVkMmJmMDMzMDRjZGE1MjQ2
MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbApAQCAt
MCwwICsxLDI1IEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij4KKzxzY3JpcHQ+Cisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlv
bjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworICAgICAgICBpbnRlcm5h
bHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisgICAgfQorCisg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICBy
cDogeworICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNl
ZWQiLAorICAgICAgICAgICAgICAgIGlkOiBuZXcgVWludDhBcnJheSgxNiksCisgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgcHViS2V5Q3Jl
ZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC0zNSB9LCB7IHR5cGU6ICJwdWJs
aWMta2V5IiwgYWxnOiAtMjU3IH1dLCAvLyBFUzM4NCwgUlMyNTYKKyAgICAgICAgICAgIHRpbWVv
dXQ6IDEwMCwKKyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwt
bGEuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyN2UyNWNhMmRh
MmJlZDRkODlhODBiMDI3YjZhMDk1NjBhYjJjNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtbGEuaHRtbApAQCAtMCwwICsxLDY2IEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9
ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAgY29uc3QgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9
CisgICAgICAgICJCRGovenhTa3pLZ2FCdVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pGL1FtMTc0OVZC
SlBncVVJd2ZoV0hKOTFuYjdVIiArCisgICAgICAgICJQSDc2YzArV0ZPelpLc2xQeXlGc2U0Z29H
SVcyUjdrOVZITFBFWmw1bmZuQmdFVkZoNXpldisveHBIUUl2dXE2IiArCisgICAgICAgICJSUT09
IjsKKyAgICBjb25zdCB0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCA9CisgICAgICAg
ICJNSUlCNmpDQ0FaQ2dBd0lCQWdJR0FXSEF4Y2p2TUFvR0NDcUdTTTQ5QkFNQ01GTXhKekFsQmdO
VkJBTU1Ia0poIiArCisgICAgICAgICJjMmxqSUVGMGRHVnpkR0YwYVc5dUlGVnpaWElnVTNWaUlF
TkJNVEVUTUJFR0ExVUVDZ3dLUVhCd2JHVWdTVzVqIiArCisgICAgICAgICJMakVUTUJFR0ExVUVD
QXdLUTJGc2FXWnZjbTVwWVRBZUZ3MHhPREF5TWpNd016TTNNakphRncweE9EQXlNalF3IiArCisg
ICAgICAgICJNelEzTWpKYU1Hb3hJakFnQmdOVkJBTU1HVEF3TURBNE1ERXdMVEF3TUVFME9VRXlN
ekJCTURJeE0wRXhHakFZIiArCisgICAgICAgICJCZ05WQkFzTUVVSkJRU0JEWlhKMGFXWnBZMkYw
YVc5dU1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSmJtTXVNUk13IiArCisgICAgICAgICJFUVlEVlFR
SURBcERZV3hwWm05eWJtbGhNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUV2Q2pl
IiArCisgICAgICAgICJQenI2U2c3NlhNb0h1R2FiUGFHNnpqcExGTDhaZDgvNzRIaDVQY0wyWnEr
bytmN0VOWFgrN25FWFhZdDBTOFV4IiArCisgICAgICAgICI1VElSdzRoZ2JmeFhRYldMRXFNNU1E
Y3dEQVlEVlIwVEFRSC9CQUl3QURBT0JnTlZIUThCQWY4RUJBTUNCUEF3IiArCisgICAgICAgICJG
d1lKS29aSWh2ZGpaQWdDQkFvd0NLRUdCQVIwWlhOME1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lB
bEs4QThJIiArCisgICAgICAgICJrNDNUYnZLdVlHSFpzMURUZ3BUd21LVEJ2SVV3NWJ3Z1p1WW5B
aUVBdHVKakRMS2JHTkpBSkZNaTVkZUVCcW5vIiArCisgICAgICAgICJwQlRDcWJmYkRKY2NmeVFw
am5ZPSI7CisgICAgY29uc3QgdGVzdEF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNl
NjQgPQorICAgICAgICAiTUlJQ0l6Q0NBYWlnQXdJQkFnSUllTmpoRzl0bkRHZ3dDZ1lJS29aSXpq
MEVBd0l3VXpFbk1DVUdBMVVFQXd3ZSIgKworICAgICAgICAiUW1GemFXTWdRWFIwWlhOMFlYUnBi
MjRnVlhObGNpQlNiMjkwSUVOQk1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSiIgKworICAgICAgICAi
Ym1NdU1STXdFUVlEVlFRSURBcERZV3hwWm05eWJtbGhNQjRYRFRFM01EUXlNREF3TkRJd01Gb1hE
VE15TURNeSIgKworICAgICAgICAiTWpBd01EQXdNRm93VXpFbk1DVUdBMVVFQXd3ZVFtRnphV01n
UVhSMFpYTjBZWFJwYjI0Z1ZYTmxjaUJUZFdJZyIgKworICAgICAgICAiUTBFeE1STXdFUVlEVlFR
S0RBcEJjSEJzWlNCSmJtTXVNUk13RVFZRFZRUUlEQXBEWVd4cFptOXlibWxoTUZrdyIgKworICAg
ICAgICAiRXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVvU1ovMXQ5ZUJBRVZwNWE4UHJY
YWNtYkdiOHpOQzFYMyIgKworICAgICAgICAiU3RMSTlZTzZZMENMN2JsSG1TR21qR1dUd0Q0UStp
MEoyQlkzK2JQSFRHUnlBOWpHQjNNU2JhTm1NR1F3RWdZRCIgKworICAgICAgICAiVlIwVEFRSC9C
QWd3QmdFQi93SUJBREFmQmdOVkhTTUVHREFXZ0JTRDVhTWhuckIwdy9saGtQMlhUaU1RZHFTaiIg
KworICAgICAgICAiOGpBZEJnTlZIUTRFRmdRVTVtV2YxRFlMVFhVZFE5eG1PSC91cWVOU0Q4MHdE
Z1lEVlIwUEFRSC9CQVFEQWdFRyIgKworICAgICAgICAiTUFvR0NDcUdTTTQ5QkFNQ0Eya0FNR1lD
TVFDM00zNjBMTHRKUzYwWjlxM3ZWakp4TWdNY0ZRMXJvR1RVY0txdiIgKworICAgICAgICAiVys0
aEo0Q2VKanlTWFRncTZJRUhuL3lXYWI0Q01RQ201Tm5LNlNPU0srQXFXdW05bEw4N1czRTZBQTFm
MlR2SiIgKworICAgICAgICAiL2hnb2svMzRqcjkzbmhTODd0T1FOZHhEUzh6eWlxdz0iOworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsKKyAgICAgICAgICAgIGxvY2FsOiB7CisgICAgICAg
ICAgICAgICAgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsCisgICAgICAgICAgICAgICAgYWNj
ZXB0QXR0ZXN0YXRpb246IHRydWUsCisgICAgICAgICAgICAgICAgcHJpdmF0ZUtleUJhc2U2NDog
dGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwKKyAgICAgICAgICAgICAgICB1c2VyQ2VydGlmaWNh
dGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbkNlcnRpZmljYXRlQmFzZTY0LAorICAgICAgICAgICAg
ICAgIGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbklzc3Vp
bmdDQUNlcnRpZmljYXRlQmFzZTY0IH19KTsKKyAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2Vz
dHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOworICAgIH0KKworICAgIGNvbnN0IG9wdGlv
bnMgPSB7CisgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgcnA6IHsKKyAgICAgICAg
ICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB1
c2VyOiB7CisgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAg
ICAgICAgICBpZDogbmV3IFVpbnQ4QXJyYXkoMTYpLAorICAgICAgICAgICAgICAgIGRpc3BsYXlO
YW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBjaGFsbGVuZ2U6
IG5ldyBVaW50OEFycmF5KDE2KSwKKyAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5
cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMCwK
KyAgICAgICAgfQorICAgIH07CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9w
dGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgIC8vIGNvbnNvbGUubG9nKCJTdWNj
ZWVkZWQhIik7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5k
bGVyLnBvc3RNZXNzYWdlKCJTdWNjZWVkZWQhIik7CisgICAgfSwgZXJyb3IgPT4geworICAgICAg
ICAvLyBjb25zb2xlLmxvZyhlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgd2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZXJyb3IubWVzc2FnZSk7Cisg
ICAgfSk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>