<?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>193150</bug_id>
          
          <creation_ts>2019-01-04 12:05:03 -0800</creation_ts>
          <short_desc>[WebAuthN] Import U2F command/response converters from Chromium</short_desc>
          <delta_ts>2019-01-07 08:33:56 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <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>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1491785</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-04 12:05:03 -0800</bug_when>
    <thetext>Import U2F command/response converters from Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491786</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-04 12:06:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/47054028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491847</commentid>
    <comment_count>2</comment_count>
      <attachid>358358</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-04 13:27:35 -0800</bug_when>
    <thetext>Created attachment 358358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491853</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-04 13:30:54 -0800</bug_when>
    <thetext>Attachment 358358 did not pass style-queue:


ERROR: Source/WebCore/Modules/webauthn/WebAuthenticationConstants.h:41:  P_256 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491977</commentid>
    <comment_count>4</comment_count>
      <attachid>358399</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-04 16:55:04 -0800</bug_when>
    <thetext>Created attachment 358399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491981</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-04 17:00:53 -0800</bug_when>
    <thetext>Attachment 358399 did not pass style-queue:


ERROR: Source/WebCore/Modules/webauthn/WebAuthenticationConstants.h:41:  P_256 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492162</commentid>
    <comment_count>6</comment_count>
      <attachid>358399</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-06 16:43:36 -0800</bug_when>
    <thetext>Comment on attachment 358399
Patch

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

R=me

&gt; Source/WebCore/ChangeLog:20
&gt; +        Besides importing stuffs from Chroimum, it also gathers a bunch of constants and helper functions into WebAuthenticationConstants.h

Besides importing stuff from Chromium ...

&gt; Source/WebCore/Modules/webauthn/fido/U2fCommandConstructor.cpp:90
&gt; +        if (parameters.alg == COSE::ES256)

This really seems like something a std::find would work for.  But it’s fine as-is.

&gt; Source/WebCore/Modules/webauthn/fido/U2fCommandConstructor.cpp:114
&gt; +    return constructU2fSignCommand(produceRpIdHash(request.rp.id), clientDataHash, keyHandle.idVector, true /* checkOnly */);

The need for this comment indicates this should be an enumeration! But since this is imported code, land as-is and then post a patch to clean up the interface.

&gt; Source/WebCore/Modules/webauthn/fido/U2fResponseConverter.cpp:71
&gt; +    x.append(u2fData.data() + pos, ES256FieldElementLength);

Can the vector be constructed directly with this data? Or at least sized properly, rather than having a separate allocation event, then a resize as we append.

This is true for all such cases.

&gt; Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.cpp:34
&gt; +#include &quot;GPURenderPipeline.h&quot;

Is this needed as part of this patch? Was it causing a build error for you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492167</commentid>
    <comment_count>7</comment_count>
      <attachid>358399</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-06 17:23:24 -0800</bug_when>
    <thetext>Comment on attachment 358399
Patch

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

Thanks Brent for r+ this patch.

&gt;&gt; Source/WebCore/ChangeLog:20
&gt;&gt; +        Besides importing stuffs from Chroimum, it also gathers a bunch of constants and helper functions into WebAuthenticationConstants.h
&gt; 
&gt; Besides importing stuff from Chromium ...

Fixed.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/U2fCommandConstructor.cpp:90
&gt;&gt; +        if (parameters.alg == COSE::ES256)
&gt; 
&gt; This really seems like something a std::find would work for.  But it’s fine as-is.

You are right! Fixed.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/U2fCommandConstructor.cpp:114
&gt;&gt; +    return constructU2fSignCommand(produceRpIdHash(request.rp.id), clientDataHash, keyHandle.idVector, true /* checkOnly */);
&gt; 
&gt; The need for this comment indicates this should be an enumeration! But since this is imported code, land as-is and then post a patch to clean up the interface.

Sure.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/U2fResponseConverter.cpp:71
&gt;&gt; +    x.append(u2fData.data() + pos, ES256FieldElementLength);
&gt; 
&gt; Can the vector be constructed directly with this data? Or at least sized properly, rather than having a separate allocation event, then a resize as we append.
&gt; 
&gt; This is true for all such cases.

It looks like that the default cntr of Vector does nothing. Therefore we will have only one allocation event when we append.

&gt;&gt; Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.cpp:34
&gt;&gt; +#include &quot;GPURenderPipeline.h&quot;
&gt; 
&gt; Is this needed as part of this patch? Was it causing a build error for you?

Some kind of unified source build magic...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492168</commentid>
    <comment_count>8</comment_count>
      <attachid>358470</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-06 17:31:04 -0800</bug_when>
    <thetext>Created attachment 358470
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492174</commentid>
    <comment_count>9</comment_count>
      <attachid>358470</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-06 18:08:29 -0800</bug_when>
    <thetext>Comment on attachment 358470
Patch for landing

Clearing flags on attachment: 358470

Committed r239665: &lt;https://trac.webkit.org/changeset/239665&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358358</attachid>
            <date>2019-01-04 13:27:35 -0800</date>
            <delta_ts>2019-01-04 16:55:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193150-20190104132734.patch</filename>
            <type>text/plain</type>
            <size>123402</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWYzOGQ3YzJkYTI1Njc1
ZGRjNzhhOGRlNzU0YjI4OTlmMzRlMzNjYi4uNjJlMmZiMTUyZDQzZTM2YjhlNTExNjVjNDA4ZDI1
YTdhMGU2MTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTAxLTA0ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBJbXBv
cnQgVTJGIGNvbW1hbmQvcmVzcG9uc2UgY29udmVydGVycyBmcm9tIENocm9taXVtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMxNTAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ3MDU0MDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wb3J0cyBDaHJvbWl1bSdzIFUyRiBjb21t
YW5kL3Jlc3BvbnNlIGNvbnZlcnRlcnM6CisgICAgICAgIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9y
Zy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRv
ci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWludGVyb3BlcmFiaWxpdHkKKyAg
ICAgICAgMS4gSXQgZGlyZWN0bHkgaW1wb3J0cyB0aGUgZm9sbG93aW5nIGZpbGVzIGFuZCBzdWl0
IHRoZW0gdG8gV2ViS2l0J3MgY29kaW5nIHN0eWxlOgorICAgICAgICBodHRwczovL2NzLmNocm9t
aXVtLm9yZy9jaHJvbWl1bS9zcmMvZGV2aWNlL2ZpZG8vdTJmX2NvbW1hbmRfY29uc3RydWN0b3Iu
Y2M/bD0xJnJjbD1kYjYyNDExMDMxN2QwMWVmYTc4Y2QzMmU3YmUxNTI0MTkwZTFiZWIwCisgICAg
ICAgIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9kZXZpY2UvZmlkby91MmZf
Y29tbWFuZF9jb25zdHJ1Y3Rvci5oP3JjbD1kYjYyNDExMDMxN2QwMWVmYTc4Y2QzMmU3YmUxNTI0
MTkwZTFiZWIwCisgICAgICAgIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9k
ZXZpY2UvZmlkby91MmZfY29tbWFuZF9jb25zdHJ1Y3Rvcl91bml0dGVzdC5jYz9yY2w9ZGI2MjQx
MTAzMTdkMDFlZmE3OGNkMzJlN2JlMTUyNDE5MGUxYmViMAorICAgICAgICAyLiBJdCBnYXRoZXJz
IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbnRvIFUyZlJlc3BvbnNlQ29udmVydGVyOgorICAgICAg
ICBBdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWxSZXNwb25zZTo6Q3JlYXRlRnJvbVUyZlJlZ2lz
dGVyUmVzcG9uc2UoKQorICAgICAgICBBdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uUmVzcG9uc2U6
OkNyZWF0ZUZyb21VMmZTaWduUmVzcG9uc2UoKQorICAgICAgICAzLiBJdCBhbHNvIHVwZGF0ZXMg
Rmlkb0NvbnN0YW50cy5oLCBGaWRvVGVzdERhdGEuaCBhbmQgQ3RhcFJlc3BvbnNlVGVzdC5jcHAg
YWNjb3JkaW5nbHkuCisKKyAgICAgICAgQmVzaWRlcyBpbXBvcnRpbmcgc3R1ZmZzIGZyb20gQ2hy
b2ltdW0sIGl0IGFsc28gZ2F0aGVycyBhIGJ1bmNoIG9mIGNvbnN0YW50cyBhbmQgaGVscGVyIGZ1
bmN0aW9ucyBpbnRvIFdlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKKyAgICAgICAgYW5kIFdl
YkF1dGhlbnRpY2F0aW9uVXRpbHMuaC4gSXQgYWxzbyBmaXhlcyBCdWcgMTgzNTM0OiAyKSBhbmQg
NykuCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDo6cHJvZHVjZUNsaWVudERhdGFKc29u
SGFzaCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0
YW50cy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0NPU0VD
b25zdGFudHMuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9u
VXRpbHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRCeXRlc1RvVmVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnByb2R1Y2VScElkSGFzaCk6CisgICAgICAgIChXZWJDb3Jl
OjplbmNvZGVFUzI1NlB1YmxpY0tleUFzQ0JPUik6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEF0
dGVzdGVkQ3JlZGVudGlhbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBdXRoRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpidWlsZEF0dGVzdGF0aW9uT2JqZWN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQ09TRUNvbnN0YW50cy5oLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHA6CisgICAg
ICAgIChmaWRvOjpnZXRDcmVkZW50aWFsSWQpOgorICAgICAgICAoZmlkbzo6cmVhZENUQVBHZXRJ
bmZvUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3Rh
bnRzLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1
Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoZmlkbzo6V2ViQ29yZTo6Y29uc3RydWN0VTJmUmVn
aXN0ZXJDb21tYW5kKToKKyAgICAgICAgKGZpZG86OldlYkNvcmU6OmNvbnN0cnVjdFUyZlNpZ25D
b21tYW5kKToKKyAgICAgICAgKGZpZG86OmlzQ29udmVydGlibGVUb1UyZlJlZ2lzdGVyQ29tbWFu
ZCk6CisgICAgICAgIChmaWRvOjppc0NvbnZlcnRpYmxlVG9VMmZTaWduQ29tbWFuZCk6CisgICAg
ICAgIChmaWRvOjpjb252ZXJ0VG9VMmZSZWdpc3RlckNvbW1hbmQpOgorICAgICAgICAoZmlkbzo6
Y29udmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmQpOgorICAgICAgICAoZmlkbzo6Y29udmVy
dFRvVTJmU2lnbkNvbW1hbmQpOgorICAgICAgICAoZmlkbzo6Y29uc3RydWN0Qm9ndXNVMmZSZWdp
c3RyYXRpb25Db21tYW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29t
bWFuZENvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlk
by9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoZmlkbzo6V2ViQ29y
ZTo6ZXh0cmFjdEVDUHVibGljS2V5RnJvbVUyZlJlZ2lzdHJhdGlvblJlc3BvbnNlKToKKyAgICAg
ICAgKGZpZG86OldlYkNvcmU6OmV4dHJhY3RDcmVkZW50aWFsSWRGcm9tVTJmUmVnaXN0cmF0aW9u
UmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6V2ViQ29yZTo6Y3JlYXRlQXR0ZXN0ZWRDcmVkZW50
aWFsRGF0YUZyb21VMmZSZWdpc3RlclJlc3BvbnNlKToKKyAgICAgICAgKGZpZG86OldlYkNvcmU6
OnBhcnNlWDUwOUxlbmd0aCk6CisgICAgICAgIChmaWRvOjpXZWJDb3JlOjpjcmVhdGVGaWRvQXR0
ZXN0YXRpb25TdGF0ZW1lbnRGcm9tVTJmUmVnaXN0ZXJSZXNwb25zZSk6CisgICAgICAgIChmaWRv
OjpyZWFkVTJmUmVnaXN0ZXJSZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpyZWFkRnJvbVUyZlNp
Z25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNl
Q29udmVydGVyLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuY3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMi0yMSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFVzaW5nIGZpbGUgdXBsb2FkIGNhbiB0
cmlnZ2VyIGEgY3Jhc2ggdW5kZXIgUmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVwbG9hZEljb25E
ZWNvcmF0aW9ucygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFhMjIyZmM2MmFkYzExNTA3Y2E3ZTA0ZWUxMTU5YTQ5
ZTRmOTY0YjguLjU5Njk3NjE0YjQyZTBlMmQ4ZGU3Zjk4MzVmZTM0YTA1MTViMTEzMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMDEtMDQgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFu
QGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIEltcG9ydCBVMkYgY29tbWFuZC9yZXNw
b25zZSBjb252ZXJ0ZXJzIGZyb20gQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzE1MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDcw
NTQwMjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZXMgaGVscGVyIGZ1bmN0aW9ucyB0byBXZWJBdXRoZW50aWNhdGlvblV0aWxzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRv
ci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6OnByb2R1
Y2VIYXNoU2V0KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDo6YnVpbGRBdXRoRGF0YSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0hpZENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6
ZmVlZFJlcG9ydHMpOgorCiAyMDE4LTEyLTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXhwYW5kIHVzZSBvZiBzb3VyY2VBcHBsaWNhdGlv
bkF1ZGl0RGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IDQzZjE2YjAxYzg3ZGIzNDU4
YTI4ZTNjNDc2OGJlNGRmY2QzOTA3YzQuLjc4MzA3OTkxNjY3ZDA4M2I2YTVmMDZiNTIwYTJkZTkx
Yjk0YmJjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTczLDcgKzczLDYgQEAgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gcHJvZHVjZUNsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBl
IHR5cGUsIGNvbnN0IEJ1ZmZlclMKIAogc3RhdGljIFZlY3Rvcjx1aW50OF90PiBwcm9kdWNlQ2xp
ZW50RGF0YUpzb25IYXNoKGNvbnN0IEFycmF5QnVmZmVyJiBjbGllbnREYXRhSnNvbikKIHsKLSAg
ICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCiAgICAgYXV0byBj
cnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yNTYpOwogICAgIGNyeXB0by0+YWRkQnl0ZXMoY2xpZW50RGF0YUpzb24uZGF0
YSgpLCBjbGllbnREYXRhSnNvbi5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiBjcnlwdG8tPmNv
bXB1dGVIYXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0NPU0VDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQ09TRUNv
bnN0YW50cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDZmYzRjMDNlZTRjY2I2
OTczMjgxODNlNTJlNjg5N2Q1NDEzZTMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQ09TRUNvbnN0
YW50cy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi1uYW1lc3BhY2UgQ09TRSB7Ci0KLS8vIFNlZSBSRkMgODE1MiAtIENCT1IgT2Jq
ZWN0IFNpZ25pbmcgYW5kIEVuY3J5cHRpb24gPGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9y
ZmM4MTUyPgotLy8gTGFiZWxzCi1jb25zdCBpbnQ2NF90IGFsZyA9IDM7Ci1jb25zdCBpbnQ2NF90
IGNydiA9IC0xOwotY29uc3QgaW50NjRfdCBrdHkgPSAxOwotY29uc3QgaW50NjRfdCB4ID0gLTI7
Ci1jb25zdCBpbnQ2NF90IHkgPSAtMzsKLQotLy8gVmFsdWVzCi1jb25zdCBpbnQ2NF90IEVDMiA9
IDI7Ci1jb25zdCBpbnQ2NF90IEVTMjU2ID0gLTc7Ci1jb25zdCBpbnQ2NF90IFBfMjU2ID0gMTsK
LQotfSAvLyBuYW1lc3BhY2UgQ09TRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYxNDUyNjFhYzAyODFhYTNlMGVjY2E3ODMzNjMyYTE2NWY3MjU1MDkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29u
c3RhbnRzLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCitu
YW1lc3BhY2UgQ09TRSB7CisKKy8vIFNlZSBSRkMgODE1MiAtIENCT1IgT2JqZWN0IFNpZ25pbmcg
YW5kIEVuY3J5cHRpb24gPGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MTUyPgorLy8g
TGFiZWxzCitjb25zdCBpbnQ2NF90IGFsZyA9IDM7Citjb25zdCBpbnQ2NF90IGNydiA9IC0xOwor
Y29uc3QgaW50NjRfdCBrdHkgPSAxOworY29uc3QgaW50NjRfdCB4ID0gLTI7Citjb25zdCBpbnQ2
NF90IHkgPSAtMzsKKworLy8gVmFsdWVzCitjb25zdCBpbnQ2NF90IEVDMiA9IDI7Citjb25zdCBp
bnQ2NF90IEVTMjU2ID0gLTc7Citjb25zdCBpbnQ2NF90IFBfMjU2ID0gMTsKKworfSAvLyBuYW1l
c3BhY2UgQ09TRQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIExlbmd0aCBvZiB0aGUgU0hB
LTI1NiBoYXNoIG9mIHRoZSBSUCBJRCBhc3Nzb2NpYXRlZCB3aXRoIHRoZSBjcmVkZW50aWFsOgor
Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNzZWMtYXV0aGVudGljYXRvci1kYXRh
Citjb25zdCBzaXplX3QgcnBJZEhhc2hMZW5ndGggPSAzMjsKKworLy8gTGVuZ3RoIG9mIHRoZSBm
bGFnczoKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jc2VjLWF1dGhlbnRpY2F0
b3ItZGF0YQorY29uc3Qgc2l6ZV90IGZsYWdzTGVuZ3RoID0gMTsKKworLy8gTGVuZ3RoIG9mIHRo
ZSBzaWduYXR1cmUgY291bnRlciwgMzItYml0IHVuc2lnbmVkIGJpZy1lbmRpYW4gaW50ZWdlcjoK
Ky8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jc2VjLWF1dGhlbnRpY2F0b3ItZGF0
YQorY29uc3Qgc2l6ZV90IHNpZ25Db3VudGVyTGVuZ3RoID0gNDsKKworLy8gTGVuZ3RoIG9mIHRo
ZSBBQUdVSUQgb2YgdGhlIGF1dGhlbnRpY2F0b3I6CisvLyBodHRwczovL3d3dy53My5vcmcvVFIv
d2ViYXV0aG4vI3NlYy1hdHRlc3RlZC1jcmVkZW50aWFsLWRhdGEKK2NvbnN0IHNpemVfdCBhYWd1
aWRMZW5ndGggPSAxNjsKKworLy8gTGVuZ3RoIG9mIHRoZSBieXRlIGxlbmd0aCBMIG9mIENyZWRl
bnRpYWwgSUQsIDE2LWJpdCB1bnNpZ25lZCBiaWctZW5kaWFuCisvLyBpbnRlZ2VyOiBodHRwczov
L3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI3NlYy1hdHRlc3RlZC1jcmVkZW50aWFsLWRhdGEKK2Nv
bnN0IHNpemVfdCBjcmVkZW50aWFsSWRMZW5ndGhMZW5ndGggPSAyOworCisvLyBQZXIgU2VjdGlv
biAyLjMuNSBvZiBodHRwOi8vd3d3LnNlY2cub3JnL3NlYzEtdjIucGRmCitjb25zdCBzaXplX3Qg
RVMyNTZGaWVsZEVsZW1lbnRMZW5ndGggPSAzMjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNh
dGlvblV0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVu
dGljYXRpb25VdGlscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMzMjYxOTFhYzJmZTYxMGIwMGQwNDQ2YmI3
YTBkZmZjMzhkNjM5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKQEAgLTAsMCArMSwxMjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRp
b25VdGlscy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkNCT1JXcml0
ZXIuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIgorI2luY2x1ZGUg
PHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRCeXRl
c1RvVmVjdG9yKGNvbnN0IHVpbnQ4X3QgYnl0ZUFycmF5W10sIGNvbnN0IHNpemVfdCBsZW5ndGgp
Cit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKGJ5dGVB
cnJheSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitWZWN0b3I8dWludDhfdD4g
cHJvZHVjZVJwSWRIYXNoKGNvbnN0IFN0cmluZyYgcnBJZCkKK3sKKyAgICBhdXRvIGNyeXB0byA9
IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzI1Nik7CisgICAgYXV0byBycElkVXRmOCA9IHJwSWQudXRmOCgpOworICAgIGNyeXB0by0+
YWRkQnl0ZXMocnBJZFV0ZjguZGF0YSgpLCBycElkVXRmOC5sZW5ndGgoKSk7CisgICAgcmV0dXJu
IGNyeXB0by0+Y29tcHV0ZUhhc2goKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUVTMjU2
UHVibGljS2V5QXNDQk9SKFZlY3Rvcjx1aW50OF90PiYmIHgsIFZlY3Rvcjx1aW50OF90PiYmIHkp
Cit7CisgICAgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBwdWJsaWNLZXlNYXA7CisgICAgcHVi
bGljS2V5TWFwW2Nib3I6OkNCT1JWYWx1ZShDT1NFOjprdHkpXSA9IGNib3I6OkNCT1JWYWx1ZShD
T1NFOjpFQzIpOworICAgIHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6YWxnKV0g
PSBjYm9yOjpDQk9SVmFsdWUoQ09TRTo6RVMyNTYpOworICAgIHB1YmxpY0tleU1hcFtjYm9yOjpD
Qk9SVmFsdWUoQ09TRTo6Y3J2KV0gPSBjYm9yOjpDQk9SVmFsdWUoQ09TRTo6UF8yNTYpOworICAg
IHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6eCldID0gY2Jvcjo6Q0JPUlZhbHVl
KFdURk1vdmUoeCkpOworICAgIHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6eSld
ID0gY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoeSkpOworCisgICAgYXV0byBjb3NlUHVibGljS2V5
ID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUocHVibGlj
S2V5TWFwKSkpOworICAgIEFTU0VSVChjb3NlUHVibGljS2V5KTsKKyAgICByZXR1cm4gKmNvc2VQ
dWJsaWNLZXk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGVkQ3JlZGVudGlhbERh
dGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhYWd1aWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvc2VLZXkpCit7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGF0dGVzdGVkQ3JlZGVudGlhbERhdGE7CisgICAgYXR0ZXN0ZWRDcmVkZW50
aWFsRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFhZ3VpZExlbmd0aCArIGNyZWRlbnRpYWxJ
ZExlbmd0aExlbmd0aCArIGNyZWRlbnRpYWxJZC5zaXplKCkgKyBjb3NlS2V5LnNpemUoKSk7CisK
KyAgICAvLyBhYWd1aWQKKyAgICBBU1NFUlQoYWFndWlkLnNpemUoKSA9PSBhYWd1aWRMZW5ndGgp
OworICAgIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEuYXBwZW5kVmVjdG9yKGFhZ3VpZCk7CisKKyAg
ICAvLyBjcmVkZW50aWFsSWRMZW5ndGgKKyAgICBBU1NFUlQoY3JlZGVudGlhbElkLnNpemUoKSA8
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOworICAgIGF0dGVzdGVkQ3Jl
ZGVudGlhbERhdGEuYXBwZW5kKGNyZWRlbnRpYWxJZC5zaXplKCkgPj4gOCAmIDB4ZmYpOworICAg
IGF0dGVzdGVkQ3JlZGVudGlhbERhdGEuYXBwZW5kKGNyZWRlbnRpYWxJZC5zaXplKCkgJiAweGZm
KTsKKworICAgIC8vIGNyZWRlbnRpYWxJZAorICAgIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEuYXBw
ZW5kVmVjdG9yKGNyZWRlbnRpYWxJZCk7CisKKyAgICAvLyBjcmVkZW50aWFsUHVibGljS2V5Cisg
ICAgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YS5hcHBlbmRWZWN0b3IoY29zZUtleSk7CisKKyAgICBy
ZXR1cm4gYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxk
QXV0aERhdGEoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCB1aW50OF90IGZsYWdzLCBjb25zdCB1
aW50MzJfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG9wdGlvbmFsQXR0ZXN0ZWRD
cmVkZW50aWFsRGF0YSkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gYXV0aERhdGE7CisgICAgYXV0
aERhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShycElkSGFzaExlbmd0aCArIGZsYWdzTGVuZ3Ro
ICsgc2lnbkNvdW50ZXJMZW5ndGggKyBvcHRpb25hbEF0dGVzdGVkQ3JlZGVudGlhbERhdGEuc2l6
ZSgpKTsKKworICAgIC8vIFJQIElEIGhhc2gKKyAgICBhdXRoRGF0YS5hcHBlbmRWZWN0b3IocHJv
ZHVjZVJwSWRIYXNoKHJwSWQpKTsKKworICAgIC8vIEZMQUdTCisgICAgYXV0aERhdGEuYXBwZW5k
KGZsYWdzKTsKKworICAgIC8vIENPVU5URVIKKyAgICBhdXRoRGF0YS5hcHBlbmQoY291bnRlciA+
PiAyNCAmIDB4ZmYpOworICAgIGF1dGhEYXRhLmFwcGVuZChjb3VudGVyID4+IDE2ICYgMHhmZik7
CisgICAgYXV0aERhdGEuYXBwZW5kKGNvdW50ZXIgPj4gOCAmIDB4ZmYpOworICAgIGF1dGhEYXRh
LmFwcGVuZChjb3VudGVyICYgMHhmZik7CisKKyAgICAvLyBBVFRFU1RFRCBDUkVELiBEQVRBCisg
ICAgYXV0aERhdGEuYXBwZW5kVmVjdG9yKG9wdGlvbmFsQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSk7
CisKKyAgICByZXR1cm4gYXV0aERhdGE7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVz
dGF0aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90PiYmIGF1dGhEYXRhLCBTdHJpbmcmJiBmb3JtYXQs
IGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUmJiBzdGF0ZW1lbnRNYXApCit7CisgICAgY2Jvcjo6
Q0JPUlZhbHVlOjpNYXBWYWx1ZSBhdHRlc3RhdGlvbk9iamVjdE1hcDsKKyAgICBhdHRlc3RhdGlv
bk9iamVjdE1hcFtjYm9yOjpDQk9SVmFsdWUoImF1dGhEYXRhIildID0gY2Jvcjo6Q0JPUlZhbHVl
KFdURk1vdmUoYXV0aERhdGEpKTsKKyAgICBhdHRlc3RhdGlvbk9iamVjdE1hcFtjYm9yOjpDQk9S
VmFsdWUoImZtdCIpXSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGZvcm1hdCkpOworICAgIGF0
dGVzdGF0aW9uT2JqZWN0TWFwW2Nib3I6OkNCT1JWYWx1ZSgiYXR0U3RtdCIpXSA9IGNib3I6OkNC
T1JWYWx1ZShXVEZNb3ZlKHN0YXRlbWVudE1hcCkpOworCisgICAgYXV0byBhdHRlc3RhdGlvbk9i
amVjdCA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGF0
dGVzdGF0aW9uT2JqZWN0TWFwKSkpOworICAgIEFTU0VSVChhdHRlc3RhdGlvbk9iamVjdCk7Cisg
ICAgcmV0dXJuICphdHRlc3RhdGlvbk9iamVjdDsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xN2YwMjJlMTYwNzgyMTdiMTkxODAwMTgwN2QzMWJjZjcwOGEyMTcwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlv
blV0aWxzLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkNCT1JWYWx1ZS5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRCeXRlc1RvVmVjdG9yKGNvbnN0IHVpbnQ4X3QgYnl0ZUFy
cmF5W10sIGNvbnN0IHNpemVfdCBsZW5ndGgpOworCisvLyBQcm9kdWNlIGEgU0hBLTI1NiBoYXNo
IG9mIHRoZSBnaXZlbiBSUCBJRC4KK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBwcm9k
dWNlUnBJZEhhc2goY29uc3QgU3RyaW5nJiBycElkKTsKKworV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PHVpbnQ4X3Q+IGVuY29kZUVTMjU2UHVibGljS2V5QXNDQk9SKFZlY3Rvcjx1aW50OF90PiYmIHgs
IFZlY3Rvcjx1aW50OF90PiYmIHkpOworCisvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0
aG4vI2F0dGVzdGVkLWNyZWRlbnRpYWwtZGF0YQorV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IGJ1aWxkQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YShjb25zdCBWZWN0b3I8dWludDhfdD4mIGFh
Z3VpZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgY29zZUtleSk7CisKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8j
c2VjLWF1dGhlbnRpY2F0b3ItZGF0YQorV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGJ1
aWxkQXV0aERhdGEoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCB1aW50OF90IGZsYWdzLCBjb25z
dCB1aW50MzJfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG9wdGlvbmFsQXR0ZXN0
ZWRDcmVkZW50aWFsRGF0YSk7CisKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8j
YXR0ZXN0YXRpb24tb2JqZWN0CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gYnVpbGRB
dHRlc3RhdGlvbk9iamVjdChWZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwgU3RyaW5nJiYgZm9y
bWF0LCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlJiYgc3RhdGVtZW50TWFwKTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNv
bnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNl
UmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IGE0MDRhMTIwY2U0NjEyMTM5NGM3MjQ3ZTMwZTkx
MGY0ZWUzZDNmZGEuLmQwMzY3MTc4NjdkZDFmOGU5OTU2Njc2MjNhYjVmZjc0NTRmNDVhMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNw
b25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zLmgiCiAjaW5jbHVkZSAiQ0JPUlJlYWRl
ci5oIgogI2luY2x1ZGUgIkNCT1JXcml0ZXIuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlv
bkNvbnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKQEAgLTY1LDE3ICs2NiwxNyBAQCBDdGFwRGV2aWNlUmVzcG9uc2VDb2RlIGdldFJl
c3BvbnNlQ29kZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKIAogc3RhdGljIFZlY3Rv
cjx1aW50OF90PiBnZXRDcmVkZW50aWFsSWQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50
aWNhdG9yRGF0YSkKIHsKLSAgICBjb25zdCBzaXplX3QgY3JlZGVudGlhbElkTGVuZ3RoT2Zmc2V0
ID0ga1JwSWRIYXNoTGVuZ3RoICsga0ZsYWdzTGVuZ3RoICsga1NpZ25Db3VudGVyTGVuZ3RoICsg
a0FhZ3VpZExlbmd0aDsKKyAgICBjb25zdCBzaXplX3QgY3JlZGVudGlhbElkTGVuZ3RoT2Zmc2V0
ID0gcnBJZEhhc2hMZW5ndGggKyBmbGFnc0xlbmd0aCArIHNpZ25Db3VudGVyTGVuZ3RoICsgYWFn
dWlkTGVuZ3RoOwogCi0gICAgaWYgKGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSA8IGNyZWRlbnRp
YWxJZExlbmd0aE9mZnNldCArIGtDcmVkZW50aWFsSWRMZW5ndGhMZW5ndGgpCisgICAgaWYgKGF1
dGhlbnRpY2F0b3JEYXRhLnNpemUoKSA8IGNyZWRlbnRpYWxJZExlbmd0aE9mZnNldCArIGNyZWRl
bnRpYWxJZExlbmd0aExlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBzaXplX3QgY3Jl
ZGVudGlhbElkTGVuZ3RoID0gKHN0YXRpY19jYXN0PHNpemVfdD4oYXV0aGVudGljYXRvckRhdGFb
Y3JlZGVudGlhbElkTGVuZ3RoT2Zmc2V0XSkgPDwgOCkgfCBzdGF0aWNfY2FzdDxzaXplX3Q+KGF1
dGhlbnRpY2F0b3JEYXRhW2NyZWRlbnRpYWxJZExlbmd0aE9mZnNldCArIDFdKTsKIAotICAgIGlm
IChhdXRoZW50aWNhdG9yRGF0YS5zaXplKCkgPCBjcmVkZW50aWFsSWRMZW5ndGhPZmZzZXQgKyBr
Q3JlZGVudGlhbElkTGVuZ3RoTGVuZ3RoICsgY3JlZGVudGlhbElkTGVuZ3RoKQorICAgIGlmIChh
dXRoZW50aWNhdG9yRGF0YS5zaXplKCkgPCBjcmVkZW50aWFsSWRMZW5ndGhPZmZzZXQgKyBjcmVk
ZW50aWFsSWRMZW5ndGhMZW5ndGggKyBjcmVkZW50aWFsSWRMZW5ndGgpCiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNyZWRlbnRpYWxJZDsKICAgICBjcmVkZW50aWFs
SWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjcmVkZW50aWFsSWRMZW5ndGgpOwotICAgIGF1dG8g
YmVnaW5JdCA9IGF1dGhlbnRpY2F0b3JEYXRhLmJlZ2luKCkgKyBjcmVkZW50aWFsSWRMZW5ndGhP
ZmZzZXQgKyBrQ3JlZGVudGlhbElkTGVuZ3RoTGVuZ3RoOworICAgIGF1dG8gYmVnaW5JdCA9IGF1
dGhlbnRpY2F0b3JEYXRhLmJlZ2luKCkgKyBjcmVkZW50aWFsSWRMZW5ndGhPZmZzZXQgKyBjcmVk
ZW50aWFsSWRMZW5ndGhMZW5ndGg7CiAgICAgY3JlZGVudGlhbElkLmFwcGVuZFJhbmdlKGJlZ2lu
SXQsIGJlZ2luSXQgKyBjcmVkZW50aWFsSWRMZW5ndGgpOwogICAgIHJldHVybiBjcmVkZW50aWFs
SWQ7CiB9CkBAIC0yMDUsNyArMjA2LDcgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRvckdldEluZm9S
ZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9S
KDMpKTsKLSAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNC
eXRlU3RyaW5nKCkgfHwgaXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCkuc2l6ZSgpICE9IGtBYWd1
aWRMZW5ndGgpCisgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25k
LmlzQnl0ZVN0cmluZygpIHx8IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpLnNpemUoKSAhPSBh
YWd1aWRMZW5ndGgpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBBdXRoZW50
aWNhdG9yR2V0SW5mb1Jlc3BvbnNlIHJlc3BvbnNlKFdURk1vdmUocHJvdG9jb2xWZXJzaW9ucyks
IFZlY3Rvcjx1aW50OF90PihpdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmgKaW5k
ZXggNjliOTE5OTIwNmZhMDY5MWQyNDgwNmNmN2QyNjUzNTY1NjMxNWYyNC4uNTMwYTE3NDg2N2Vh
NTNkYjdjMDAwZTUzMTQ0YjI5Y2ZmNGI2MWMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oCkBAIC00MSwyNSArNDEsMTQg
QEAgZW51bSBjbGFzcyBQcm90b2NvbFZlcnNpb24gewogICAgIGtVbmtub3duLAogfTsKIAotLy8g
TGVuZ3RoIG9mIHRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIFJQIElEIGFzc3NvY2lhdGVkIHdpdGgg
dGhlIGNyZWRlbnRpYWw6Ci0vLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI3NlYy1h
dXRoZW50aWNhdG9yLWRhdGEKLWNvbnN0ZXhwciBzaXplX3Qga1JwSWRIYXNoTGVuZ3RoID0gMzI7
Ci0KLS8vIExlbmd0aCBvZiB0aGUgZmxhZ3M6Ci0vLyBodHRwczovL3d3dy53My5vcmcvVFIvd2Vi
YXV0aG4vI3NlYy1hdXRoZW50aWNhdG9yLWRhdGEKLWNvbnN0ZXhwciBzaXplX3Qga0ZsYWdzTGVu
Z3RoID0gMTsKLQotLy8gTGVuZ3RoIG9mIHRoZSBzaWduYXR1cmUgY291bnRlciwgMzItYml0IHVu
c2lnbmVkIGJpZy1lbmRpYW4gaW50ZWdlcjoKLS8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJh
dXRobi8jc2VjLWF1dGhlbnRpY2F0b3ItZGF0YQotY29uc3RleHByIHNpemVfdCBrU2lnbkNvdW50
ZXJMZW5ndGggPSA0OwotCi0vLyBMZW5ndGggb2YgdGhlIEFBR1VJRCBvZiB0aGUgYXV0aGVudGlj
YXRvcjoKLS8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jc2VjLWF0dGVzdGVkLWNy
ZWRlbnRpYWwtZGF0YQotY29uc3RleHByIHNpemVfdCBrQWFndWlkTGVuZ3RoID0gMTY7Ci0KLS8v
IExlbmd0aCBvZiB0aGUgYnl0ZSBsZW5ndGggTCBvZiBDcmVkZW50aWFsIElELCAxNi1iaXQgdW5z
aWduZWQgYmlnLWVuZGlhbgotLy8gaW50ZWdlcjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1
dGhuLyNzZWMtYXR0ZXN0ZWQtY3JlZGVudGlhbC1kYXRhCi1jb25zdGV4cHIgc2l6ZV90IGtDcmVk
ZW50aWFsSWRMZW5ndGhMZW5ndGggPSAyOworLy8gTGVuZ3RoIG9mIHRoZSBVMkYgY2hhbGxlbmdl
L2FwcGxpY2F0aW9uIHBhcmFtZXRlcjoKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXUyZi12MS4yLXBzLTIwMTcwNDExL2ZpZG8tdTJmLXJhdy1tZXNzYWdlLWZvcm1hdHMt
djEuMi1wcy0yMDE3MDQxMS5odG1sI3JlZ2lzdHJhdGlvbi1yZXF1ZXN0LW1lc3NhZ2UtLS11MmZf
cmVnaXN0ZXIKK2NvbnN0ZXhwciBzaXplX3Qga1UyZkNoYWxsZW5nZVBhcmFtTGVuZ3RoID0gMzI7
Citjb25zdGV4cHIgc2l6ZV90IGtVMmZBcHBsaWNhdGlvblBhcmFtTGVuZ3RoID0gMzI7CisvLyBo
dHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby11MmYtdjEuMi1wcy0yMDE3MDQxMS9m
aWRvLXUyZi1yYXctbWVzc2FnZS1mb3JtYXRzLXYxLjItcHMtMjAxNzA0MTEuaHRtbCNyZWdpc3Ry
YXRpb24tcmVzcG9uc2UtbWVzc2FnZS1zdWNjZXNzCitjb25zdGV4cHIgc2l6ZV90IGtSZXNlcnZl
ZExlbmd0aCA9IDE7Citjb25zdGV4cHIgc2l6ZV90IGtVMmZLZXlIYW5kbGVMZW5ndGhPZmZzZXQg
PSA2NjsKK2NvbnN0ZXhwciBzaXplX3Qga1UyZktleUhhbmRsZU9mZnNldCA9IDY3OwogCiAvLyBD
VEFQIHByb3RvY29sIGRldmljZSByZXNwb25zZSBjb2RlLCBhcyBzcGVjaWZpZWQgaW4KIC8vIGh0
dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1j
bGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjZXJy
b3ItcmVzcG9uc2VzCkBAIC0xMzQsNiArMTIzLDE5IEBAIGVudW0gY2xhc3MgRmlkb0hpZERldmlj
ZUNvbW1hbmQgOiB1aW50OF90IHsKIAogYm9vbCBpc0ZpZG9IaWREZXZpY2VDb21tYW5kKEZpZG9I
aWREZXZpY2VDb21tYW5kKTsKIAorLy8gUGFyYW1ldGVycyBmb3IgZmFrZSBVMkYgcmVnaXN0cmF0
aW9uIHVzZWQgdG8gY2hlY2sgZm9yIHVzZXIgcHJlc2VuY2UuCitjb25zdCB1aW50OF90IGtCb2d1
c0FwcFBhcmFtW10gPSB7CisgICAgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwg
MHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwKKyAgICAweDQxLCAweDQxLCAweDQxLCAweDQx
LCAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQxLAorICAgIDB4NDEsIDB4
NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEKK307CisK
K2NvbnN0IHVpbnQ4X3Qga0JvZ3VzQ2hhbGxlbmdlW10gPSB7CisgICAgMHg0MiwgMHg0MiwgMHg0
MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwKKyAgICAw
eDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQy
LCAweDQyLAorICAgIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4
NDIsIDB4NDIsIDB4NDIKK307CisKIC8vIFN0cmluZyBrZXkgdmFsdWVzIGZvciBDVEFQIHJlcXVl
c3Qgb3B0aW9uYWwgcGFyYW1ldGVycyBhbmQKIC8vIEF1dGhlbnRpY2F0b3JHZXRJbmZvIHJlc3Bv
bnNlLgogY29uc3QgY2hhciBrUmVzaWRlbnRLZXlNYXBLZXlbXSA9ICJyayI7CkBAIC0xNzAsNiAr
MTcyLDE1IEBAIGNvbnN0IHNpemVfdCBrSGlkTWF4TWVzc2FnZVNpemUgPSA3NjA5OwogLy8gQ1RB
UC9VMkYgZGV2aWNlcyBvbmx5IHByb3ZpZGUgYSBzaW5nbGUgcmVwb3J0IHNvIHNwZWNpZnkgYSBy
ZXBvcnQgSUQgb2YgMCBoZXJlLgogY29uc3QgdWludDhfdCBrSGlkUmVwb3J0SWQgPSAweDAwOwog
CisvLyBVMkYgQVBEVSBlbmNvZGluZyBjb25zdGFudHMsIGFzIHNwZWNpZmllZCBpbgorLy8gaHR0
cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdTJmLXYxLjItcHMtMjAxNzA0MTEvZmlk
by11MmYtcmF3LW1lc3NhZ2UtZm9ybWF0cy12MS4yLXBzLTIwMTcwNDExLmh0bWwjYXV0aGVudGlj
YXRpb24tbWVzc2FnZXMKKworLy8gUDEgaW5zdHJ1Y3Rpb25zLgorY29uc3RleHByIHVpbnQ4X3Qg
a1AxRW5mb3JjZVVzZXJQcmVzZW5jZUFuZFNpZ24gPSAweDAzOworY29uc3RleHByIHVpbnQ4X3Qg
a1AxQ2hlY2tPbmx5ID0gMHgwNzsKKworY29uc3RleHByIHNpemVfdCBrTWF4S2V5SGFuZGxlTGVu
Z3RoID0gMjU1OworCiAvLyBBdXRoZW50aWNhdG9yIEFQSSBjb21tYW5kcyBzdXBwb3J0ZWQgYnkg
Q1RBUCBkZXZpY2VzLCBhcyBzcGVjaWZpZWQgaW4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9y
Zy9zcGVjcy9maWRvLXYyLjAtcmQtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRv
ci1wcm90b2NvbC12Mi4wLXJkLTIwMTcwOTI3Lmh0bWwjYXV0aGVudGljYXRvci1hcGkKIGVudW0g
Y2xhc3MgQ3RhcFJlcXVlc3RDb21tYW5kIDogdWludDhfdCB7CkBAIC0xODEsNiArMTkyLDE2IEBA
IGVudW0gY2xhc3MgQ3RhcFJlcXVlc3RDb21tYW5kIDogdWludDhfdCB7CiAgICAga0F1dGhlbnRp
Y2F0b3JSZXNldCA9IDB4MDcsCiB9OwogCisvLyBBUERVIGluc3RydWN0aW9uIGNvZGUgZm9yIFUy
RiByZXF1ZXN0IGVuY29kaW5nLgorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2Zp
ZG8tdTJmLXYxLjItcHMtMjAxNzA0MTEvZmlkby11MmYtcmF3LW1lc3NhZ2UtZm9ybWF0cy12MS4y
LXBzLTIwMTcwNDExLmh0bWwjY29tbWFuZC1hbmQtcGFyYW1ldGVyLXZhbHVlcworZW51bSBjbGFz
cyBVMmZBcGR1SW5zdHJ1Y3Rpb24gOiB1aW50OF90IHsKKyAgICBrUmVnaXN0ZXIgPSAweDAxLAor
ICAgIGtTaWduID0gMHgwMiwKKyAgICBrVmVyc2lvbiA9IDB4MDMsCisgICAga1ZlbmRvckZpcnN0
ID0gMHg0MCwKKyAgICBrVmVuZGVyTGFzdCA9IDB4QkYsCit9OworCiAvLyBTdHJpbmcga2V5IHZh
bHVlcyBmb3IgYXR0ZXN0YXRpb24gb2JqZWN0IGFzIGEgcmVzcG9uc2UgdG8gTWFrZUNyZWRlbnRp
YWwKIC8vIHJlcXVlc3QuCiBjb25zdCBjaGFyIGtGb3JtYXRLZXlbXSA9ICJmbXQiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29t
bWFuZENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmE5NjljMzQzYzU5OTgzY2UwOWRiN2Y5
NjY5ODdkNTRkOTFiZGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMzMg
QEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oIgorCisjaWYg
RU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkFwZHVDb21tYW5kLmgiCisjaW5jbHVkZSAi
Rmlkb0NvbnN0YW50cy5oIgorI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMuaCIKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCIK
KyNpbmNsdWRlICJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJB
dXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uVXRp
bHMuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIGZpZG8gewordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisKK3N0YXRpYyBWZWN0b3I8dWlu
dDhfdD4gY29uc3RydWN0VTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YXBwbGljYXRpb25QYXJhbWV0ZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2hhbGxlbmdlUGFy
YW1ldGVyKQoreworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGRhdGEucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShrVTJmQ2hhbGxlbmdlUGFyYW1MZW5ndGggKyBrVTJmQXBwbGljYXRpb25Q
YXJhbUxlbmd0aCk7CisgICAgZGF0YS5hcHBlbmRWZWN0b3IoY2hhbGxlbmdlUGFyYW1ldGVyKTsK
KyAgICBkYXRhLmFwcGVuZFZlY3RvcihhcHBsaWNhdGlvblBhcmFtZXRlcik7CisKKyAgICBhcGR1
OjpBcGR1Q29tbWFuZCBjb21tYW5kOworICAgIGNvbW1hbmQuc2V0SW5zKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KFUyZkFwZHVJbnN0cnVjdGlvbjo6a1JlZ2lzdGVyKSk7CisgICAgY29tbWFuZC5zZXRE
YXRhKFdURk1vdmUoZGF0YSkpOworICAgIGNvbW1hbmQuc2V0UmVzcG9uc2VMZW5ndGgoYXBkdTo6
QXBkdUNvbW1hbmQ6OmtBcGR1TWF4UmVzcG9uc2VMZW5ndGgpOworICAgIHJldHVybiBjb21tYW5k
LmdldEVuY29kZWRDb21tYW5kKCk7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGNvbnN0cnVjdFUyZlNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXBwbGlj
YXRpb25QYXJhbWV0ZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2hhbGxlbmdlUGFyYW1ldGVy
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgYm9vbCBjaGVja09ubHkpCit7Cisg
ICAgaWYgKGtleUhhbmRsZS5zaXplKCkgPiBrTWF4S2V5SGFuZGxlTGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgZGF0
YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGtVMmZDaGFsbGVuZ2VQYXJhbUxlbmd0aCArIGtVMmZB
cHBsaWNhdGlvblBhcmFtTGVuZ3RoICsgMSArIGtleUhhbmRsZS5zaXplKCkpOworICAgIGRhdGEu
YXBwZW5kVmVjdG9yKGNoYWxsZW5nZVBhcmFtZXRlcik7CisgICAgZGF0YS5hcHBlbmRWZWN0b3Io
YXBwbGljYXRpb25QYXJhbWV0ZXIpOworICAgIGRhdGEuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGtleUhhbmRsZS5zaXplKCkpKTsKKyAgICBkYXRhLmFwcGVuZFZlY3RvcihrZXlIYW5kbGUp
OworCisgICAgYXBkdTo6QXBkdUNvbW1hbmQgY29tbWFuZDsKKyAgICBjb21tYW5kLnNldElucyhz
dGF0aWNfY2FzdDx1aW50OF90PihVMmZBcGR1SW5zdHJ1Y3Rpb246OmtTaWduKSk7CisgICAgY29t
bWFuZC5zZXRQMShjaGVja09ubHkgPyBrUDFDaGVja09ubHkgOiBrUDFFbmZvcmNlVXNlclByZXNl
bmNlQW5kU2lnbik7CisgICAgY29tbWFuZC5zZXREYXRhKFdURk1vdmUoZGF0YSkpOworICAgIGNv
bW1hbmQuc2V0UmVzcG9uc2VMZW5ndGgoYXBkdTo6QXBkdUNvbW1hbmQ6OmtBcGR1TWF4UmVzcG9u
c2VMZW5ndGgpOworICAgIHJldHVybiBjb21tYW5kLmdldEVuY29kZWRDb21tYW5kKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlCisKK2Jvb2wgaXNDb252ZXJ0aWJsZVRvVTJmUmVnaXN0ZXJDb21tYW5k
KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIHJlcXVlc3QpCit7Cisg
ICAgaWYgKHJlcXVlc3QuYXV0aGVudGljYXRvclNlbGVjdGlvbiAmJiAocmVxdWVzdC5hdXRoZW50
aWNhdG9yU2VsZWN0aW9uLT51c2VyVmVyaWZpY2F0aW9uID09IFVzZXJWZXJpZmljYXRpb25SZXF1
aXJlbWVudDo6UmVxdWlyZWQgfHwgcmVxdWVzdC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uLT5yZXF1
aXJlUmVzaWRlbnRLZXkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHBhcmFtZXRlcnMgOiByZXF1ZXN0LnB1YktleUNyZWRQYXJhbXMpIHsKKyAgICAgICAg
aWYgKHBhcmFtZXRlcnMuYWxnID09IENPU0U6OkVTMjU2KQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBpc0NvbnZlcnRpYmxlVG9V
MmZTaWduQ29tbWFuZChjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIHJl
cXVlc3QpCit7CisgICAgcmV0dXJuIChyZXF1ZXN0LnVzZXJWZXJpZmljYXRpb24gIT0gVXNlclZl
cmlmaWNhdGlvblJlcXVpcmVtZW50OjpSZXF1aXJlZCkgJiYgIXJlcXVlc3QuYWxsb3dDcmVkZW50
aWFscy5pc0VtcHR5KCk7Cit9CisKK09wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRv
VTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gs
IGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIHJlcXVlc3QpCit7Cisg
ICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQocmVxdWVzdCkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gY29uc3RydWN0VTJmUmVnaXN0
ZXJDb21tYW5kKHByb2R1Y2VScElkSGFzaChyZXF1ZXN0LnJwLmlkKSwgY2xpZW50RGF0YUhhc2gp
OworfQorCitPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1UyZkNoZWNrT25seVNp
Z25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIHJlcXVlc3QsIGNvbnN0IFB1YmxpY0tl
eUNyZWRlbnRpYWxEZXNjcmlwdG9yJiBrZXlIYW5kbGUpCit7CisgICAgaWYgKGtleUhhbmRsZS50
eXBlICE9IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQocHJv
ZHVjZVJwSWRIYXNoKHJlcXVlc3QucnAuaWQpLCBjbGllbnREYXRhSGFzaCwga2V5SGFuZGxlLmlk
VmVjdG9yLCB0cnVlIC8qIGNoZWNrT25seSAqLyk7Cit9CisKK09wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGll
bnREYXRhSGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiByZXF1
ZXN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgYm9vbCBjaGVja09ubHkpCit7
CisgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZTaWduQ29tbWFuZChyZXF1ZXN0KSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBjb25zdHJ1Y3RVMmZTaWduQ29t
bWFuZChwcm9kdWNlUnBJZEhhc2gocmVxdWVzdC5ycElkKSwgY2xpZW50RGF0YUhhc2gsIGtleUhh
bmRsZSwgY2hlY2tPbmx5KTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGNvbnN0cnVjdEJvZ3VzVTJm
UmVnaXN0cmF0aW9uQ29tbWFuZCgpCit7CisgICAgcmV0dXJuIGNvbnN0cnVjdFUyZlJlZ2lzdGVy
Q29tbWFuZChjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihrQm9ndXNBcHBQYXJhbSwgc2l6ZW9mKGtCb2d1
c0FwcFBhcmFtKSksIGNvbnZlcnRCeXRlc1RvVmVjdG9yKGtCb2d1c0NoYWxsZW5nZSwgc2l6ZW9m
KGtCb2d1c0NoYWxsZW5nZSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgZmlkbworCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
N2UxNmU1Y2Y1NzVhMmU4NDBjOTRiMDUyZTk5YWE1NDU3Yjg2ZWZkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1
Y3Rvci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVu
dGlhbERlc2NyaXB0b3I7CitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
OworfQorCituYW1lc3BhY2UgZmlkbyB7CisKKy8vIENoZWNrcyB3aGV0aGVyIHRoZSByZXF1ZXN0
IGNhbiBiZSB0cmFuc2xhdGVkIHRvIHZhbGlkIFUyRiByZXF1ZXN0CisvLyBwYXJhbWV0ZXIuIE5h
bWVseSwgVTJGIHJlcXVlc3QgZG9lcyBub3Qgc3VwcG9ydCByZXNpZGVudCBrZXkgYW5kCisvLyB1
c2VyIHZlcmlmaWNhdGlvbiwgYW5kIEVTMjU2IGFsZ29yaXRobSBtdXN0IGJlIHVzZWQgZm9yIHB1
YmxpYyBrZXkKKy8vIGNyZWRlbnRpYWwuCisvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3Bl
Y3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJv
dG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5odG1sI3UyZi1hdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRp
YWwtaW50ZXJvcGVyYWJpbGl0eQorV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnZlcnRpYmxlVG9V
MmZSZWdpc3RlckNvbW1hbmQoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyYpOworCisvLyBDaGVja3Mgd2hldGhlciB1c2VyIHZlcmlmaWNhdGlvbiBpcyBu
b3QgcmVxdWlyZWQgYW5kIHRoYXQgYWxsb3cgbGlzdCBpcworLy8gbm90IGVtcHR5LgorLy8gaHR0
cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNs
aWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYt
YXV0aGVudGljYXRvckdldEFzc2VydGlvbi1pbnRlcm9wZXJhYmlsaXR5CitXRUJDT1JFX0VYUE9S
VCBib29sIGlzQ29udmVydGlibGVUb1UyZlNpZ25Db21tYW5kKGNvbnN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYpOworCisvLyBFeHRyYWN0cyBBUERVIGVuY29k
ZWQgVTJGIHJlZ2lzdGVyIGNvbW1hbmQgZnJvbSBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zLgorV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0
VG9VMmZSZWdpc3RlckNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFz
aCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYpOwor
CisvLyBFeHRyYWN0cyBBUERVIGVuY29kZWQgVTJGIGNoZWNrIG9ubHkgc2lnbiBjb21tYW5kIGZy
b20KKy8vIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuIEludm9rZWQgd2hlbiBV
MkYgcmVnaXN0ZXIgb3BlcmF0aW9uIGluY2x1ZGVzIGtleQorLy8gaGFuZGxlcyBpbiBleGNsdWRl
IGxpc3QuCitXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRU
b1UyZkNoZWNrT25seVNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0
YUhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
LCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciYpOworCisvLyBF
eHRyYWN0cyBBUERVIGVuY29kZWQgVTJGIHNpZ24gY29tbWFuZCBmcm9tIFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucy4KK1dFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGll
bnREYXRhSGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGJvb2wgY2hlY2tPbmx5ID0g
ZmFsc2UpOworCitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29uc3RydWN0Qm9ndXNV
MmZSZWdpc3RyYXRpb25Db21tYW5kKCk7CisKK30gLy8gbmFtZXNwYWNlIGZpZG8KKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jNDVhMTcxMTc5OTAyMTM1NmJhNzg1Y2VmMTZjMjhhOTFhMzAxYmUwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29u
dmVydGVyLmNwcApAQCAtMCwwICsxLDE5NCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIENocm9t
aXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVTJmUmVz
cG9uc2VDb252ZXJ0ZXIuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJD
b21tb25DcnlwdG9ERVJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJGaWRvQ29uc3RhbnRzLmgiCisj
aW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaCIKKyNpbmNsdWRlICJXZWJBdXRo
ZW50aWNhdGlvblV0aWxzLmgiCisKK25hbWVzcGFjZSBmaWRvIHsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgeworCisvLyBJbiBhIFUyRiByZWdpc3RyYXRpb24gcmVzcG9u
c2UsIHRoZSBrZXkgaXMgaW4gWDkuNjIgZm9ybWF0OgorLy8gLSBhIGNvbnN0YW50IDB4MDQgcHJl
Zml4IHRvIGluZGljYXRlIGFuIHVuY29tcHJlc3NlZCBrZXkKKy8vIC0gdGhlIDMyLWJ5dGUgeCBj
b29yZGluYXRlCisvLyAtIHRoZSAzMi1ieXRlIHkgY29vcmRpbmF0ZS4KK2NvbnN0IHVpbnQ4X3Qg
dW5jb21wcmVzc2VkS2V5ID0gMHgwNDsKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRo
bi8jZmxhZ3MKK2NvbnN0IHVpbnQ4X3QgbWFrZUNyZWRlbnRpYWxGbGFncyA9IDBiMDEwMDAwMDE7
IC8vIFVQIGFuZCBBVCBhcmUgc2V0LgorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNz
L2ZpZG8tdTJmLXYxLjItcHMtMjAxNzA0MTEvZmlkby11MmYtcmF3LW1lc3NhZ2UtZm9ybWF0cy12
MS4yLXBzLTIwMTcwNDExLmh0bWwjcmVnaXN0cmF0aW9uLXJlc3BvbnNlLW1lc3NhZ2Utc3VjY2Vz
cworY29uc3QgdWludDhfdCBtaW5TaWduYXR1cmVMZW5ndGggPSA3MTsKK2NvbnN0IHVpbnQ4X3Qg
bWF4U2lnbmF0dXJlTGVuZ3RoID0gNzM7CisvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3Bl
Y3MvZmlkby11MmYtdjEuMi1wcy0yMDE3MDQxMS9maWRvLXUyZi1yYXctbWVzc2FnZS1mb3JtYXRz
LXYxLjItcHMtMjAxNzA0MTEuaHRtbCNhdXRoZW50aWNhdGlvbi1yZXNwb25zZS1tZXNzYWdlLXN1
Y2Nlc3MKK2NvbnN0IHNpemVfdCBmbGFnSW5kZXggPSAwOworY29uc3Qgc2l6ZV90IGNvdW50ZXJJ
bmRleCA9IDE7Citjb25zdCBzaXplX3Qgc2lnbmF0dXJlSW5kZXggPSA1OworCitzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGV4dHJhY3RFQ1B1YmxpY0tleUZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25z
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEpCit7CisgICAgc2l6ZV90IHBvcyA9IGtS
ZXNlcnZlZExlbmd0aDsKKyAgICBpZiAodTJmRGF0YS5zaXplKCkgPD0gcG9zIHx8IHUyZkRhdGFb
cG9zXSAhPSB1bmNvbXByZXNzZWRLZXkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcG9zKys7
CisKKyAgICBpZiAodTJmRGF0YS5zaXplKCkgPCBwb3MgKyAyICogRVMyNTZGaWVsZEVsZW1lbnRM
ZW5ndGgpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8dWludDhfdD4geDsKKyAg
ICB4LmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgp
OworICAgIHBvcyArPSBFUzI1NkZpZWxkRWxlbWVudExlbmd0aDsKKworICAgIFZlY3Rvcjx1aW50
OF90PiB5OworICAgIHkuYXBwZW5kKHUyZkRhdGEuZGF0YSgpICsgcG9zLCBFUzI1NkZpZWxkRWxl
bWVudExlbmd0aCk7CisKKyAgICByZXR1cm4gZW5jb2RlRVMyNTZQdWJsaWNLZXlBc0NCT1IoV1RG
TW92ZSh4KSwgV1RGTW92ZSh5KSk7Cit9CisKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gZXh0cmFj
dENyZWRlbnRpYWxJZEZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25zZShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHUyZkRhdGEpCit7CisgICAgc2l6ZV90IHBvcyA9IGtVMmZLZXlIYW5kbGVMZW5ndGhP
ZmZzZXQ7CisgICAgaWYgKHUyZkRhdGEuc2l6ZSgpIDw9IHBvcykKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICBzaXplX3QgY3JlZGVudGlhbElkTGVuZ3RoID0gdTJmRGF0YVtwb3NdOworICAgIHBv
cysrOworCisgICAgaWYgKHUyZkRhdGEuc2l6ZSgpIDwgcG9zICsgY3JlZGVudGlhbElkTGVuZ3Ro
KQorICAgICAgICByZXR1cm4geyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBjcmVkZW50aWFsSWQ7
CisgICAgY3JlZGVudGlhbElkLmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIHBvcywgY3JlZGVudGlh
bElkTGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlZGVudGlhbElkOworfQorCitzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNyZWF0ZUF0dGVzdGVkQ3JlZGVudGlhbERhdGFGcm9tVTJmUmVnaXN0ZXJSZXNw
b25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgcHVibGljS2V5KQoreworICAgIGF1dG8gY3JlZGVudGlhbElkID0gZXh0cmFjdENyZWRlbnRp
YWxJZEZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25zZSh1MmZEYXRhKTsKKyAgICBpZiAoY3JlZGVu
dGlhbElkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBidWls
ZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMCks
IGNyZWRlbnRpYWxJZCwgcHVibGljS2V5KTsKK30KKworc3RhdGljIHNpemVfdCBwYXJzZVg1MDlM
ZW5ndGgoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBzaXplX3Qgb2Zmc2V0KQorewor
ICAgIGlmICh1MmZEYXRhLnNpemUoKSA8PSBvZmZzZXQgfHwgdTJmRGF0YVtvZmZzZXRdICE9IFNl
cXVlbmNlTWFyaykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgb2Zmc2V0Kys7CisKKyAgICBpZiAo
dTJmRGF0YS5zaXplKCkgPD0gb2Zmc2V0KQorICAgICAgICByZXR1cm4gMDsKKyAgICBjb25zdCBh
dXRvIHNlcXVlbmNlTGVuZ3RoTGVuZ3RoID0gYnl0ZXNVc2VkVG9FbmNvZGVkTGVuZ3RoKHUyZkRh
dGFbb2Zmc2V0XSk7CisKKyAgICBpZiAoc2VxdWVuY2VMZW5ndGhMZW5ndGggPiBzaXplb2Yoc2l6
ZV90KSB8fCAodTJmRGF0YS5zaXplKCkgPCBvZmZzZXQgKyBzZXF1ZW5jZUxlbmd0aExlbmd0aCkp
CisgICAgICAgIHJldHVybiAwOworICAgIHNpemVfdCBzZXF1ZW5jZUxlbmd0aCA9IHNlcXVlbmNl
TGVuZ3RoTGVuZ3RoID09IDEgPyB1MmZEYXRhW29mZnNldF0gOiAwOworICAgIG9mZnNldCsrOwor
ICAgIGZvciAoYXV0byBpID0gc2VxdWVuY2VMZW5ndGhMZW5ndGggLSAxOyBpOyBpLS0sIG9mZnNl
dCsrKQorICAgICAgICBzZXF1ZW5jZUxlbmd0aCArPSB1MmZEYXRhW29mZnNldF0gPDwgKGkgLSAx
KSAqIDg7CisKKyAgICByZXR1cm4gc2VxdWVuY2VMZW5ndGggKyBzZXF1ZW5jZUxlbmd0aExlbmd0
aCArIHNpemVvZihTZXF1ZW5jZU1hcmspOworfQorCitzdGF0aWMgY2Jvcjo6Q0JPUlZhbHVlOjpN
YXBWYWx1ZSBjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnRGcm9tVTJmUmVnaXN0ZXJSZXNw
b25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIHNpemVfdCBvZmZzZXQpCit7Cisg
ICAgYXV0byB4NTA5TGVuZ3RoID0gcGFyc2VYNTA5TGVuZ3RoKHUyZkRhdGEsIG9mZnNldCk7Cisg
ICAgaWYgKCF4NTA5TGVuZ3RoIHx8IHUyZkRhdGEuc2l6ZSgpIDwgb2Zmc2V0ICsgeDUwOUxlbmd0
aCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB4NTA5OworICAg
IHg1MDkuYXBwZW5kKHUyZkRhdGEuZGF0YSgpICsgb2Zmc2V0LCB4NTA5TGVuZ3RoKTsKKyAgICBv
ZmZzZXQgKz0geDUwOUxlbmd0aDsKKworICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmU7Cisg
ICAgc2lnbmF0dXJlLmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIG9mZnNldCwgdTJmRGF0YS5zaXpl
KCkgLSBvZmZzZXQpOworICAgIGlmIChzaWduYXR1cmUuc2l6ZSgpIDwgbWluU2lnbmF0dXJlTGVu
Z3RoIHx8IHNpZ25hdHVyZS5zaXplKCkgPiBtYXhTaWduYXR1cmVMZW5ndGgpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGF0dGVzdGF0aW9uU3Rh
dGVtZW50TWFwOworICAgIGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwW2Nib3I6OkNCT1JWYWx1ZSgi
c2lnIildID0gY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoc2lnbmF0dXJlKSk7CisgICAgVmVjdG9y
PGNib3I6OkNCT1JWYWx1ZT4gY2JvckFycmF5OworICAgIGNib3JBcnJheS5hcHBlbmQoY2Jvcjo6
Q0JPUlZhbHVlKFdURk1vdmUoeDUwOSkpKTsKKyAgICBhdHRlc3RhdGlvblN0YXRlbWVudE1hcFtj
Ym9yOjpDQk9SVmFsdWUoIng1YyIpXSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGNib3JBcnJh
eSkpOworCisgICAgcmV0dXJuIGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwOworfQorCit9IC8vIG5h
bWVzcGFjZQorCitPcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVhZFUyZlJlZ2lz
dGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUy
ZkRhdGEpCit7CisgICAgYXV0byBwdWJsaWNLZXkgPSBleHRyYWN0RUNQdWJsaWNLZXlGcm9tVTJm
UmVnaXN0cmF0aW9uUmVzcG9uc2UodTJmRGF0YSk7CisgICAgaWYgKHB1YmxpY0tleS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGF0dGVzdGVkQ3Jl
ZGVudGlhbERhdGEgPSBjcmVhdGVBdHRlc3RlZENyZWRlbnRpYWxEYXRhRnJvbVUyZlJlZ2lzdGVy
UmVzcG9uc2UodTJmRGF0YSwgcHVibGljS2V5KTsKKyAgICBpZiAoYXR0ZXN0ZWRDcmVkZW50aWFs
RGF0YS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyBF
eHRyYWN0IHRoZSBjcmVkZW50aWFsSWQgZm9yIHBhY2tpbmcgaW50byB0aGUgcmVzcG9uc2UgZGF0
YS4KKyAgICBhdXRvIGNyZWRlbnRpYWxJZCA9IGV4dHJhY3RDcmVkZW50aWFsSWRGcm9tVTJmUmVn
aXN0cmF0aW9uUmVzcG9uc2UodTJmRGF0YSk7CisgICAgQVNTRVJUKCFjcmVkZW50aWFsSWQuaXNF
bXB0eSgpKTsKKworICAgIC8vIFRoZSBjb3VudGVyIGlzIHplcm9lZCBvdXQgZm9yIFJlZ2lzdGVy
IHJlcXVlc3RzLgorICAgIGF1dG8gYXV0aERhdGEgPSBidWlsZEF1dGhEYXRhKHJwSWQsIG1ha2VD
cmVkZW50aWFsRmxhZ3MsIDAsIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEpOworCisgICAgYXV0byBm
aWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnQgPSBjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnRG
cm9tVTJmUmVnaXN0ZXJSZXNwb25zZSh1MmZEYXRhLCBrVTJmS2V5SGFuZGxlT2Zmc2V0ICsgY3Jl
ZGVudGlhbElkLnNpemUoKSk7CisgICAgaWYgKGZpZG9BdHRlc3RhdGlvblN0YXRlbWVudC5lbXB0
eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBhdHRlc3RhdGlv
bk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJmaWRv
LXUyZiIsIFdURk1vdmUoZmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50KSk7CisKKyAgICByZXR1cm4g
UHVibGljS2V5Q3JlZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJ
ZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpLCB0cnVlLCBudWxscHRyLCBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3Quc2l6
ZSgpKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworfQorCitPcHRpb25hbDxQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YT4gcmVhZEZyb21VMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBy
cElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiB1MmZEYXRhKQoreworICAgIGlmIChrZXlIYW5kbGUuaXNFbXB0eSgpIHx8IHUyZkRhdGEu
c2l6ZSgpIDw9IHNpZ25hdHVyZUluZGV4KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgLy8gMSBieXRlIGZsYWdzLCA0IGJ5dGVzIGNvdW50ZXIKKyAgICBhdXRvIGZsYWdzID0g
dTJmRGF0YVtmbGFnSW5kZXhdOworICAgIHVpbnQzMl90IGNvdW50ZXIgPSB1MmZEYXRhW2NvdW50
ZXJJbmRleF0gPDwgMjQ7CisgICAgY291bnRlciArPSB1MmZEYXRhW2NvdW50ZXJJbmRleCArIDFd
IDw8IDE2OworICAgIGNvdW50ZXIgKz0gdTJmRGF0YVtjb3VudGVySW5kZXggKyAyXSA8PCA4Owor
ICAgIGNvdW50ZXIgKz0gdTJmRGF0YVtjb3VudGVySW5kZXggKyAzXTsKKyAgICBhdXRvIGF1dGhE
YXRhID0gYnVpbGRBdXRoRGF0YShycElkLCBmbGFncywgY291bnRlciwgeyB9KTsKKworICAgIHJl
dHVybiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoa2V5SGFu
ZGxlLmRhdGEoKSwga2V5SGFuZGxlLnNpemUoKSksIGZhbHNlLCBudWxscHRyLCBudWxscHRyLCBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhEYXRhLmRhdGEoKSwgYXV0aERhdGEuc2l6ZSgpKSwgQXJy
YXlCdWZmZXI6OmNyZWF0ZSh1MmZEYXRhLmRhdGEoKSArIHNpZ25hdHVyZUluZGV4LCB1MmZEYXRh
LnNpemUoKSAtIHNpZ25hdHVyZUluZGV4KSwgbnVsbHB0ciB9OworfQorCit9IC8vIG5hbWVzcGFj
ZSBmaWRvCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNmE0MWY4NzNkOGJiYzRmOWE1YTBmMDdlMzBkNjdmMjdkZjJhYmNjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmgKQEAgLTAsMCArMSw0OSBAQAorLy8gQ29weXJpZ2h0IDIwMTgg
VGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBmaWRvIHsKKworLy8gQ29udmVydHMgYSBV
MkYgcmVnaXN0ZXIgcmVzcG9uc2UgdG8gV2ViQXV0aE4gbWFrZUNyZWRlbnRpYWwgcmVzcG9uc2Uu
CisvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3
L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5o
dG1sI3UyZi1hdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWwtaW50ZXJvcGVyYWJpbGl0eQorV0VC
Q09SRV9FWFBPUlQgT3B0aW9uYWw8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJl
YWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiB1MmZEYXRhKTsKKworLy8gQ29udmVydHMgYSBVMkYgYXV0aGVudGljYXRpb24gcmVz
cG9uc2UgdG8gV2ViQXV0aE4gZ2V0QXNzZXJ0aW9uIHJlc3BvbnNlLgorLy8gaHR0cHM6Ly9maWRv
YWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1h
dXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0aGVudGlj
YXRvckdldEFzc2VydGlvbi1pbnRlcm9wZXJhYmlsaXR5CitXRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVhZEZyb21VMmZTaWduUmVzcG9u
c2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKTsKKworfSAvLyBuYW1lc3BhY2UgZmlkbwor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKaW5kZXggZGJiODAzYmUyNzMy
MWI5YmU2Y2RmNTlkOTExYWZiYzAzMzg0Mjk0Mi4uMDRkZTdkMmE2MmI3ZWMzZDE1OTgxYzYwOTYy
OGU1NTNlMzNhOGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJH
UFVDb21tYW5kQnVmZmVyLmgiCiAjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIK
ICNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIgorI2luY2x1ZGUgIkdQVVJlbmRlclBp
cGVsaW5lLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggZTdkOTM0YWQyN2YxYmZhOTEyMzFlMWQ4NmRmMGI3NDE5ZDgzOGI5MC4u
ZWEyOTU3ODljNWJmYzg4MTgxYTE0ZjMyNTA1N2JhYzA0NWFmODY5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTI1Niw2ICsyNTYsNyBAQCBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3Iu
Y3BwCiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKIE1vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcAogTW9kdWxlcy93
ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmNwcAorTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRo
ZW50aWNhdGlvblV0aWxzLmNwcAogTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21tYW5kLmNw
cAogTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVSZXNwb25zZS5jcHAKIE1vZHVsZXMvd2ViYXV0
aG4vY2Jvci9DQk9SUmVhZGVyLmNwcApAQCAtMjY5LDYgKzI3MCw4IEBAIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9GaWRvQ29uc3RhbnRzLmNwcAogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRN
ZXNzYWdlLmNwcAogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCiBNb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb1BhcnNpbmdVdGlscy5jcHAKK01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwCitNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJm
UmVzcG9uc2VDb252ZXJ0ZXIuY3BwCiAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lv
bldyYXBwZXIuY3BwCiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGRlNDUyYzA2MmE2YmEyNmY0NzMyNzA3N2ZjMWY5OWFjZmNmZDhjZWIuLmQ5MTdiNTgw
YzAzODQ4ZjY0NzY1Y2U3ZTg4Njg0N2E3MWUxYjEyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODMsNiArMTc4Myw5IEBA
CiAJCTU3MTI1MjY5MUU1MjRFQjEwMDhGRjM2OSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzEyNTI2ODFF
NTI0RUIxMDA4RkYzNjkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQi5oICovOyB9OwogCQk1NzE1
MkI1QTIxQ0IzRTg4MDAwQzM3Q0EgLyogQXBkdUNvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjU4MjFDQjJFM0IwMDBDMzdDQSAvKiBB
cGR1Q29tbWFuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTU3MTUyQjVDMjFDQzE5MDIwMDBDMzdDQSAvKiBBcGR1UmVzcG9uc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjU2MjFDQjJFM0Ew
MDBDMzdDQSAvKiBBcGR1UmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1NzE1MkI2RTIxQ0Q5OTVEMDAwQzM3Q0EgLyogVTJmQ29tbWFu
ZENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzE1MkI2QzIxQ0Q5OTVDMDAwQzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTcxNTJC
N0MyMUREOEJBMTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29udmVydGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1MkI3QTIxREQ4QkExMDAwQzM3
Q0EgLyogVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1NzE1MkI4MDIxRERBNTgxMDAwQzM3Q0EgLyogV2ViQXV0
aGVudGljYXRpb25VdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTcxNTJCN0UyMUREQTU4MTAwMEMzN0NBIC8qIFdlYkF1dGhlbnRpY2F0aW9uVXRp
bHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
NzFGMjE4OTFEQTU3QzU0MDA1QzlFRkQgLyogSlNTdWJ0bGVDcnlwdG8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MUYyMTg4MURBNTdDNTQwMDVDOUVG
RCAvKiBKU1N1YnRsZUNyeXB0by5oICovOyB9OwogCQk1NzIwOTNEMzFERENFQjlBMDAzMTBBQjAg
LyogQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzIwOTNEMjFERENFQjlBMDAzMTBBQjAgLyogQ3J5
cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zLmggKi87IH07CiAJCTU3MjFBOTg3MUVDRTUzQjEw
MDgxMjk1QSAvKiBDcnlwdG9EaWdlc3RBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MjFBOTg2MUVDRTUzQjEwMDgxMjk1QSAvKiBDcnlw
dG9EaWdlc3RBbGdvcml0aG0uaCAqLzsgfTsKQEAgLTE4MTYsOCArMTgxOSw4IEBACiAJCTU3MzQ4
OTM5MURBQzZCNkUwMERDMDY2NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM0ODkzODFEQUM2QjZE
MDBEQzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovOyB9OwogCQk1NzM5RTEy
RjFEQUM3Rjc4MDBFMTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM5RTEyRTFEQUM3Rjc4
MDBFMTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggKi87IH07CiAJCTU3M0Y1
MzMyMjE2ODA2RTEwMDQ1NTg3QSAvKiBGaWRvSGlkTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCQUYyOEEyMTY3RDMwMzAwOEU5NTRFIC8q
IEZpZG9IaWRNZXNzYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJNTczRjUzMzcyMTY4MEQxNTAwNDU1ODdBIC8qIEZpZG9QYXJzaW5nVXRpbHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0Y1MzM1
MjE2ODBEMTQwMDQ1NTg3QSAvKiBGaWRvUGFyc2luZ1V0aWxzLmggKi87IH07Ci0JCTU3NEY1NUUx
MjA0RjNCMjMwMDI5NDhDNiAvKiBDT1NFQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzRGNTVEQzIwNEYzNzMyMDAyOTQ4QzYgLyogQ09T
RUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTU3M0Y1MzM3MjE2ODBEMTUwMDQ1NTg3QSAvKiBGaWRvUGFyc2luZ1V0aWxzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzNGNTMzNTIxNjgw
RDE0MDA0NTU4N0EgLyogRmlkb1BhcnNpbmdVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3NEY1NUUxMjA0RjNCMjMwMDI5NDhDNiAvKiBX
ZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTc0RjU1REMyMDRGMzczMjAwMjk0OEM2IC8qIFdlYkF1dGhlbnRp
Y2F0aW9uQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTc1MEE5NzUxRTY4RDAwMDAwNzA1QzRBIC8qIENyeXB0b0tleUVDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzUwQTk3MzFFNjhE
MDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCAqLzsgfTsKIAkJNTc1MEE5N0UxRTZBMTNFRjAw
NzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzUwQTk3RDFFNkExM0VGMDA3MDVDNEEgLyog
Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXMuaCAqLzsgfTsKIAkJNTc1MEE5ODIxRTZBMTUwODAw
NzA1QzRBIC8qIEpTRWNLZXlQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3NTBBOTgwMUU2QTE1MDgwMDcwNUM0QSAvKiBKU0VjS2V5UGFyYW1z
LmggKi87IH07CkBAIC04NTkyLDYgKzg1OTUsMTIgQEAKIAkJNTcxNTJCNTYyMUNCMkUzQTAwMEMz
N0NBIC8qIEFwZHVSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBB
cGR1UmVzcG9uc2UuaDsgcGF0aCA9IE1vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1UmVzcG9uc2Uu
aDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1NzE1MkI1NzIxQ0IyRTNBMDAwQzM3
Q0EgLyogQXBkdUNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQXBkdUNvbW1hbmQuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21t
YW5kLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1NzE1MkI1ODIxQ0IyRTNC
MDAwQzM3Q0EgLyogQXBkdUNvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQXBkdUNvbW1hbmQuaDsgcGF0aCA9IE1vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFu
ZC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTU3MTUyQjZBMjFDRDk5NUMwMDBD
MzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTcxNTJCNkMyMUNEOTk1QzAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25z
dHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVMmZDb21tYW5kQ29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcxNTJCN0EyMUREOEJB
MTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFUyZlJl
c3BvbnNlQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MTUyQjdC
MjFERDhCQTEwMDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU3MTUyQjdFMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50aWNhdGlvblV0aWxz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTcxNTJCN0YyMUREQTU4MTAwMEMzN0NBIC8qIFdlYkF1dGhlbnRp
Y2F0aW9uVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0aGVudGljYXRpb25VdGls
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MUYyMTg4MURBNTdDNTQwMDVD
OUVGRCAvKiBKU1N1YnRsZUNyeXB0by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1N1YnRsZUNyeXB0by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzFGMjE4
QTFEQTU3QzdBMDA1QzlFRkQgLyogSlNTdWJ0bGVDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdWJ0bGVDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzIwOTNEMTFERENFQTRCMDAzMTBBQjAgLyogQWVzQ2JjQ2ZiUGFyYW1z
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBBZXNDYmNDZmJQYXJhbXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODY1OCw3ICs4NjY3LDcgQEAKIAkJNTczRjUzMzYyMTY4MEQxNTAwNDU1ODdBIC8qIEZp
ZG9QYXJzaW5nVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Rmlkb1BhcnNpbmdVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NEFD
NzUzMURBQzM2N0QwMEU5NzQ0QyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0RDQyNzkxRDU5NEZGNjAwMkNGNTBFIC8qIEdsb2Jh
bENyeXB0by5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2xvYmFsQ3J5cHRvLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc0RjU1REMyMDRGMzczMjAwMjk0OEM2IC8qIENP
U0VDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ09TRUNvbnN0
YW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzRGNTVEQzIwNEYzNzMyMDAy
OTQ4QzYgLyogV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTc0RjU1RTIyMDRGM0NCRjAwMjk0OEM2IC8qIExvY2FsQXV0aGVu
dGljYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBMb2NhbEF1dGhlbnRpY2F0aW9u
LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvTG9jYWxBdXRoZW50
aWNhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQk1NzUwQTk3MjFF
NjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ3J5cHRvS2V5RUMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzUwQTk3MzFFNjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvS2V5RUMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE5MzIwLDYgKzE5MzI5LDEwIEBACiAJCQkJNTc4QTRDMEEyMTY3RDI5NjAw
RDA4RjM0IC8qIEZpZG9IaWRQYWNrZXQuaCAqLywKIAkJCQk1NzNGNTMzNjIxNjgwRDE1MDA0NTU4
N0EgLyogRmlkb1BhcnNpbmdVdGlscy5jcHAgKi8sCiAJCQkJNTczRjUzMzUyMTY4MEQxNDAwNDU1
ODdBIC8qIEZpZG9QYXJzaW5nVXRpbHMuaCAqLywKKwkJCQk1NzE1MkI2QTIxQ0Q5OTVDMDAwQzM3
Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk1NzE1MkI2QzIxQ0Q5OTVD
MDAwQzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yLmggKi8sCisJCQkJNTcxNTJCN0IyMURE
OEJBMTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29udmVydGVyLmNwcCAqLywKKwkJCQk1NzE1MkI3
QTIxREQ4QkExMDAwQzM3Q0EgLyogVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gZmlkbzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xOTM3OSw3ICsx
OTM5Miw2IEBACiAJCQkJNTczMDNCRDEyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JS
ZXNwb25zZS5pZGwgKi8sCiAJCQkJNTdEQ0VEOEMyMTQ4N0VEQjAwMTZCODQ3IC8qIEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQuaCAqLywKIAkJCQk1N0RDRUQ4RTIxNDg3RURCMDAxNkI4NDcgLyogQXV0
aGVudGljYXRvclRyYW5zcG9ydC5pZGwgKi8sCi0JCQkJNTc0RjU1REMyMDRGMzczMjAwMjk0OEM2
IC8qIENPU0VDb25zdGFudHMuaCAqLywKIAkJCQk1N0Q4NDYyQzFGRUFGNjhGMDBDQTM2ODIgLyog
UHVibGljS2V5Q3JlZGVudGlhbC5jcHAgKi8sCiAJCQkJNTdEODQ2MkIxRkVBRjY4RjAwQ0EzNjgy
IC8qIFB1YmxpY0tleUNyZWRlbnRpYWwuaCAqLywKIAkJCQk1N0Q4NDYyRDFGRUFGNjhGMDBDQTM2
ODIgLyogUHVibGljS2V5Q3JlZGVudGlhbC5pZGwgKi8sCkBAIC0xOTM5NCw2ICsxOTQwNiw5IEBA
CiAJCQkJNTczMDNCRjAyMDA5ODQ2MTAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxUeXBl
LmlkbCAqLywKIAkJCQk1NzJCNDAyMzIxNzY4RDg1MDAwQUQ0M0UgLyogVXNlclZlcmlmaWNhdGlv
blJlcXVpcmVtZW50LmggKi8sCiAJCQkJNTcyQjQwMjUyMTc2OEQ4NTAwMEFENDNFIC8qIFVzZXJW
ZXJpZmljYXRpb25SZXF1aXJlbWVudC5pZGwgKi8sCisJCQkJNTc0RjU1REMyMDRGMzczMjAwMjk0
OEM2IC8qIFdlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmggKi8sCisJCQkJNTcxNTJCN0YyMURE
QTU4MTAwMEMzN0NBIC8qIFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwICovLAorCQkJCTU3MTUy
QjdFMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50aWNhdGlvblV0aWxzLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IHdlYmF1dGhuOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI4
MjQ2LDcgKzI4MjYxLDYgQEAKIAkJCQkzRjgwMjAzNzFFOUU0N0M1MDBERUM2MUQgLyogQ29yZUF1
ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QUZGNDIyMUVG
QjE0NDkwMEI1NDVCMyAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRDdEMzM0ODFDN0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBp
biBIZWFkZXJzICovLAotCQkJCTU3NEY1NUUxMjA0RjNCMjMwMDI5NDhDNiAvKiBDT1NFQ29uc3Rh
bnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjJGMTI5RTE4QzE1NzZGMDA1QzU0QUYgLyogQ291
bnRlZFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAw
N0ZCOEM1IC8qIENvdW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIw
MEIyNTk2NSAvKiBDb3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTYzMCw2ICsz
MTY0NCw4IEBACiAJCQkJNEJBRkQwRTEyMTkyNDJBMDAwQzBBQjY0IC8qIFR5cGVkT01DU1NVbml0
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCQUZEMEQ5MjE5MjFFQTAwMEMwQUI2NCAvKiBU
eXBlZE9NQ1NTVW5wYXJzZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUEwOTlF
NjQ5MjAwNTZFNTgxIC8qIFR5cGluZ0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MTUy
QjZFMjFDRDk5NUQwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTU3MTUyQjdDMjFERDhCQTEwMDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEUwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRkU3Q0E3MURBOUYxQTcwMDM3MjM3QyAvKiBVSUV2
ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEYwQTQ0RUZDNzAwRjk5MkUwIC8q
IFVJRXZlbnRXaXRoS2V5U3RhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3MzYsNiArMzE3NTIs
OCBAQAogCQkJCTQxN0Y3QUVFMjEzOUJGNjgwMEZCQTdFQyAvKiBXZWJBdWRpb0J1ZmZlckxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxQjJBNjI2MUVGMUJGNkQwMDJCOUQ3QSAvKiBXZWJBdWRp
b1NvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Q2Mzc0MDFCQjBCMTEzMDAy
NTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU3NEY1NUUxMjA0RjNCMjMwMDI5NDhDNiAvKiBXZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcxNTJCODAyMUREQTU4MTAwMEMzN0NBIC8qIFdlYkF1
dGhlbnRpY2F0aW9uVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGMzZFQTlDMUUyMUJBMTcw
MDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1QjgxQ0I1MUZBQTQ0NjIwMDM3RDFFNiAvKiBXZWJDb25zb2xlQWdlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTlCQkEyQ0FCMUY2NzlFMEMwMEZEMUMxRSAvKiBXZWJDb250ZW50UmVhZGVy
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5t
bQppbmRleCAwMjU3YzBkOGE2YmIyMjkwNDlmMzE0YmUwMWRjOTQ5OGQ3MTgyNWY0Li5lZmMzZTE2
MGI0OGJjNmUzYjdkYWU1NDRhNTIyMzQ3Yzk3OGI5MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0zMCwxMSArMzAsMTIgQEAKIAogI2ltcG9ydCA8U2Vj
dXJpdHkvU2VjSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DQk9SV3JpdGVyLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL0NPU0VDb25zdGFudHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uRGF0
YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgorI2ltcG9ydCA8
V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmg+CiAjaW1wb3J0IDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2Vz
dC5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTUwLDUwICs1MSwxMCBAQCBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWwg
ewogLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jZmxhZ3MuCiBjb25zdCB1
aW50OF90IG1ha2VDcmVkZW50aWFsRmxhZ3MgPSAwYjAxMDAwMTAxOyAvLyBVUCwgVVYgYW5kIEFU
IGFyZSBzZXQuCiBjb25zdCB1aW50OF90IGdldEFzc2VydGlvbkZsYWdzID0gMGIwMDAwMDEwMTsg
Ly8gVVAgYW5kIFVWIGFyZSBzZXQuCi0vLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zODMyMDUxMik6
IERlZmluZSBBcHBsZSBBQUdVSUQuCi1jb25zdCB1aW50OF90IEFBR1VJRFtdID0gezB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDB9OyAvLyAxNiBieXRlcwogLy8gQ3JlZGVudGlh
bCBJRCBpcyBjdXJyZW50bHkgU0hBLTEgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcHVibGljIGtleS4K
LS8vIEZJWE1FKDE4MzUzNCk6IEFzc3VtZSBsaXR0bGUgZW5kaWFuIGhlcmUuCi1jb25zdCB1bmlv
biB7Ci0gICAgdWludDE2X3QgaW50ZWdlcjsKLSAgICB1aW50OF90IGJ5dGVzWzJdOwotfSBjcmVk
ZW50aWFsSWRMZW5ndGggPSB7MHgwMDE0fTsKLWNvbnN0IHNpemVfdCBFUzI1NktleVNpemVJbkJ5
dGVzID0gMzI7Ci1jb25zdCBzaXplX3QgYXV0aERhdGFQcmVmaXhGaXhlZFNpemUgPSAzNzsgLy8g
aGFzaCgzMikgKyBmbGFncygxKSArIGNvdW50ZXIoNCkKK2NvbnN0IHVpbnQxNl90IGNyZWRlbnRp
YWxJZExlbmd0aCA9IDIwOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLS8vIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi93ZWJhdXRobi8jc2VjLWF1dGhlbnRpY2F0b3ItZGF0YQotc3RhdGljIFZl
Y3Rvcjx1aW50OF90PiBidWlsZEF1dGhEYXRhKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgdWlu
dDhfdCBmbGFncywgdWludDMyX3QgY291bnRlciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBvcHRp
b25hbEF0dGVzdGVkQ3JlZGVudGlhbERhdGEpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGF1dGhE
YXRhOwotICAgIGF1dGhEYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXV0aERhdGFQcmVmaXhG
aXhlZFNpemUgKyBvcHRpb25hbEF0dGVzdGVkQ3JlZGVudGlhbERhdGEuc2l6ZSgpKTsKLQotICAg
IC8vIFJQIElEIGhhc2gKLSAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVh
dGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7Ci0gICAgLy8gRklYTUUo
MTgzNTM0KTogVGVzdCBJRE4uCi0gICAgQVNTRVJUKHJwSWQuaXNBbGxBU0NJSSgpKTsKLSAgICBh
dXRvIGFzY2lpUnBJZCA9IHJwSWQuYXNjaWkoKTsKLSAgICBjcnlwdG8tPmFkZEJ5dGVzKGFzY2lp
UnBJZC5kYXRhKCksIGFzY2lpUnBJZC5sZW5ndGgoKSk7Ci0gICAgYXV0aERhdGEgPSBjcnlwdG8t
PmNvbXB1dGVIYXNoKCk7Ci0KLSAgICAvLyBGTEFHUwotICAgIGF1dGhEYXRhLmFwcGVuZChmbGFn
cyk7Ci0KLSAgICAvLyBDT1VOVEVSCi0gICAgLy8gRklYTUUoMTgzNTM0KTogQXNzdW1lIGxpdHRs
ZSBlbmRpYW4gaGVyZS4KLSAgICB1bmlvbiB7Ci0gICAgICAgIHVpbnQzMl90IGludGVnZXI7Ci0g
ICAgICAgIHVpbnQ4X3QgYnl0ZXNbNF07Ci0gICAgfSBjb3VudGVyVW5pb247Ci0gICAgY291bnRl
clVuaW9uLmludGVnZXIgPSBjb3VudGVyOwotICAgIGF1dGhEYXRhLmFwcGVuZChjb3VudGVyVW5p
b24uYnl0ZXMsIHNpemVvZihjb3VudGVyVW5pb24uYnl0ZXMpKTsKLQotICAgIC8vIEFUVEVTVEVE
IENSRUQuIERBVEEKLSAgICBhdXRoRGF0YS5hcHBlbmRWZWN0b3Iob3B0aW9uYWxBdHRlc3RlZENy
ZWRlbnRpYWxEYXRhKTsKLQotICAgIHJldHVybiBhdXRoRGF0YTsKLX0KLQogc3RhdGljIGlubGlu
ZSBib29sIGVtcHR5VHJhbnNwb3J0c09yQ29udGFpbihjb25zdCBWZWN0b3I8QXV0aGVudGljYXRv
clRyYW5zcG9ydD4mIHRyYW5zcG9ydHMsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdGFyZ2V0KQog
ewogICAgIHJldHVybiB0cmFuc3BvcnRzLmlzRW1wdHkoKSA/IHRydWUgOiB0cmFuc3BvcnRzLmNv
bnRhaW5zKHRhcmdldCk7CkBAIC0xMDUsNyArNjYsNyBAQCBzdGF0aWMgaW5saW5lIEhhc2hTZXQ8
U3RyaW5nPiBwcm9kdWNlSGFzaFNldChjb25zdCBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbERl
cwogICAgIGZvciAoYXV0byYgY3JlZGVudGlhbERlc2NyaXB0b3IgOiBjcmVkZW50aWFsRGVzY3Jp
cHRvcnMpIHsKICAgICAgICAgaWYgKGVtcHR5VHJhbnNwb3J0c09yQ29udGFpbihjcmVkZW50aWFs
RGVzY3JpcHRvci50cmFuc3BvcnRzLCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkK
ICAgICAgICAgICAgICYmIGNyZWRlbnRpYWxEZXNjcmlwdG9yLnR5cGUgPT0gUHVibGljS2V5Q3Jl
ZGVudGlhbFR5cGU6OlB1YmxpY0tleQotICAgICAgICAgICAgJiYgY3JlZGVudGlhbERlc2NyaXB0
b3IuaWRWZWN0b3Iuc2l6ZSgpID09IGNyZWRlbnRpYWxJZExlbmd0aC5pbnRlZ2VyKQorICAgICAg
ICAgICAgJiYgY3JlZGVudGlhbERlc2NyaXB0b3IuaWRWZWN0b3Iuc2l6ZSgpID09IGNyZWRlbnRp
YWxJZExlbmd0aCkKICAgICAgICAgICAgIHJlc3VsdC5hZGQoU3RyaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGNyZWRlbnRpYWxEZXNjcmlwdG9yLmlkVmVjdG9yLmRhdGEoKSksIGNy
ZWRlbnRpYWxEZXNjcmlwdG9yLmlkVmVjdG9yLnNpemUoKSkpOwogICAgIH0KICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMzA3LDIyICsyNjgsMTAgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiBwcml2YXRlS2UKICAg
ICAvLyBGSVhNRSgxODM1MzMpOiBzdG9yZSB0aGUgY291bnRlci4KICAgICB1aW50MzJfdCBjb3Vu
dGVyID0gMDsKIAotICAgIC8vIEZJWE1FKDE4MzUzNCk6IGF0dGVzdGVkQ3JlZGVudGlhbERhdGEg
Y291bGQgdGhyb3R0bGUuCiAgICAgLy8gU3RlcCAxMS4gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dl
YmF1dGhuLyNhdHRlc3RlZC1jcmVkZW50aWFsLWRhdGEKLSAgICBWZWN0b3I8dWludDhfdD4gYXR0
ZXN0ZWRDcmVkZW50aWFsRGF0YTsKKyAgICAvLyBjcmVkZW50aWFsUHVibGljS2V5CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGNvc2VQdWJsaWNLZXk7CiAgICAgewotICAgICAgICAvLyBhYWd1aWQKLSAg
ICAgICAgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YS5hcHBlbmQoQUFHVUlELCBzaXplb2YoQUFHVUlE
KSk7Ci0KLSAgICAgICAgLy8gY3JlZGVudGlhbElkTGVuZ3RoCi0gICAgICAgIEFTU0VSVChjcmVk
ZW50aWFsSWQuc2l6ZSgpID09IGNyZWRlbnRpYWxJZExlbmd0aC5pbnRlZ2VyKTsKLSAgICAgICAg
Ly8gRklYTUUoMTgzNTM0KTogQXNzdW1lIGxpdHRsZSBlbmRpYW4gaGVyZS4KLSAgICAgICAgYXR0
ZXN0ZWRDcmVkZW50aWFsRGF0YS5hcHBlbmQoY3JlZGVudGlhbElkTGVuZ3RoLmJ5dGVzLCBzaXpl
b2YodWludDE2X3QpKTsKLQotICAgICAgICAvLyBjcmVkZW50aWFsSWQKLSAgICAgICAgYXR0ZXN0
ZWRDcmVkZW50aWFsRGF0YS5hcHBlbmRWZWN0b3IoY3JlZGVudGlhbElkKTsKLQotICAgICAgICAv
LyBjcmVkZW50aWFsUHVibGljS2V5CiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHB1Ymxp
Y0tleURhdGFSZWY7CiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gcHVibGljS2V5ID0gYWRv
cHRDRihTZWNLZXlDb3B5UHVibGljS2V5KHByaXZhdGVLZXkpKTsKQEAgLTMzNCwyOSArMjgzLDE4
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJB
dHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiAgICAgICAgICAgICAgICAgcmVjZWl2ZVJlc3Bv
bmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3Iu
Il9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIEFTU0VSVCgoKE5TRGF0YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0KCkpLmxlbmd0aCA9PSAo
MSArIDIgKiBFUzI1NktleVNpemVJbkJ5dGVzKSk7IC8vIDA0IHwgWCB8IFkKKyAgICAgICAgICAg
IEFTU0VSVCgoKE5TRGF0YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0KCkpLmxlbmd0aCA9PSAoMSAr
IDIgKiBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCkpOyAvLyAwNCB8IFggfCBZCiAgICAgICAgIH0K
IAogICAgICAgICAvLyBDT1NFIEVuY29kaW5nCi0gICAgICAgIC8vIEZJWE1FKDE4MzUzNSk6IElt
cHJvdmUgQ0JPUiBlbmNvZGVyIHRvIHdvcmsgd2l0aCBieXRlcyBkaXJlY3RseS4KLSAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHgoRVMyNTZLZXlTaXplSW5CeXRlcyk7Ci0gICAgICAgIFsoTlNEYXRh
ICopcHVibGljS2V5RGF0YVJlZi5nZXQoKSBnZXRCeXRlczogeC5kYXRhKCkgcmFuZ2U6TlNNYWtl
UmFuZ2UoMSwgRVMyNTZLZXlTaXplSW5CeXRlcyldOwotICAgICAgICBWZWN0b3I8dWludDhfdD4g
eShFUzI1NktleVNpemVJbkJ5dGVzKTsKLSAgICAgICAgWyhOU0RhdGEgKilwdWJsaWNLZXlEYXRh
UmVmLmdldCgpIGdldEJ5dGVzOiB5LmRhdGEoKSByYW5nZTpOU01ha2VSYW5nZSgxICsgRVMyNTZL
ZXlTaXplSW5CeXRlcywgRVMyNTZLZXlTaXplSW5CeXRlcyldOwotICAgICAgICBjYm9yOjpDQk9S
VmFsdWU6Ok1hcFZhbHVlIHB1YmxpY0tleU1hcDsKLSAgICAgICAgcHVibGljS2V5TWFwW2Nib3I6
OkNCT1JWYWx1ZShDT1NFOjprdHkpXSA9IGNib3I6OkNCT1JWYWx1ZShDT1NFOjpFQzIpOwotICAg
ICAgICBwdWJsaWNLZXlNYXBbY2Jvcjo6Q0JPUlZhbHVlKENPU0U6OmFsZyldID0gY2Jvcjo6Q0JP
UlZhbHVlKENPU0U6OkVTMjU2KTsKLSAgICAgICAgcHVibGljS2V5TWFwW2Nib3I6OkNCT1JWYWx1
ZShDT1NFOjpjcnYpXSA9IGNib3I6OkNCT1JWYWx1ZShDT1NFOjpQXzI1Nik7Ci0gICAgICAgIHB1
YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6eCldID0gY2Jvcjo6Q0JPUlZhbHVlKFdU
Rk1vdmUoeCkpOwotICAgICAgICBwdWJsaWNLZXlNYXBbY2Jvcjo6Q0JPUlZhbHVlKENPU0U6Onkp
XSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKHkpKTsKLSAgICAgICAgYXV0byBjb3NlUHVibGlj
S2V5ID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUocHVi
bGljS2V5TWFwKSkpOwotICAgICAgICBpZiAoIWNvc2VQdWJsaWNLZXkpIHsKLSAgICAgICAgICAg
IExPR19FUlJPUigiQ291bGRuJ3QgZW5jb2RlIHRoZSBwdWJsaWMga2V5IGludG8gQ09TRSBiaW5h
cmllcy4iKTsKLSAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtu
b3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBhdHRlc3RlZENyZWRlbnRpYWxEYXRhLmFwcGVuZFZl
Y3Rvcihjb3NlUHVibGljS2V5LnZhbHVlKCkpOworICAgICAgICBWZWN0b3I8dWludDhfdD4geChF
UzI1NkZpZWxkRWxlbWVudExlbmd0aCk7CisgICAgICAgIFsoTlNEYXRhICopcHVibGljS2V5RGF0
YVJlZi5nZXQoKSBnZXRCeXRlczogeC5kYXRhKCkgcmFuZ2U6TlNNYWtlUmFuZ2UoMSwgRVMyNTZG
aWVsZEVsZW1lbnRMZW5ndGgpXTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHkoRVMyNTZGaWVs
ZEVsZW1lbnRMZW5ndGgpOworICAgICAgICBbKE5TRGF0YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0
KCkgZ2V0Qnl0ZXM6IHkuZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEgKyBFUzI1NkZpZWxkRWxl
bWVudExlbmd0aCwgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpXTsKKyAgICAgICAgY29zZVB1Ymxp
Y0tleSA9IGVuY29kZUVTMjU2UHVibGljS2V5QXNDQk9SKFdURk1vdmUoeCksIFdURk1vdmUoeSkp
OwogICAgIH0KKyAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zODMyMDUxMik6IERlZmluZSBB
cHBsZSBBQUdVSUQuCisgICAgYXV0byBhdHRlc3RlZENyZWRlbnRpYWxEYXRhID0gYnVpbGRBdHRl
c3RlZENyZWRlbnRpYWxEYXRhKFZlY3Rvcjx1aW50OF90PihhYWd1aWRMZW5ndGgsIDApLCBjcmVk
ZW50aWFsSWQsIGNvc2VQdWJsaWNLZXkpOwogCiAgICAgLy8gU3RlcCAxMi4KICAgICBhdXRvIGF1
dGhEYXRhID0gYnVpbGRBdXRoRGF0YShyZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5p
ZCwgbWFrZUNyZWRlbnRpYWxGbGFncywgY291bnRlciwgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSk7
CkBAIC0zODYsMTkgKzMyNCw5IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1h
a2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiAgICAgICAgICAg
ICBjYm9yQXJyYXkuYXBwZW5kKGNib3I6OkNCT1JWYWx1ZSh0b1ZlY3RvcigoTlNEYXRhICopYWRv
cHRDRihTZWNDZXJ0aWZpY2F0ZUNvcHlEYXRhKChfX2JyaWRnZSBTZWNDZXJ0aWZpY2F0ZVJlZilj
ZXJ0aWZpY2F0ZXNbaV0pKS5nZXQoKSkpKTsKICAgICAgICAgYXR0ZXN0YXRpb25TdGF0ZW1lbnRN
YXBbY2Jvcjo6Q0JPUlZhbHVlKCJ4NWMiKV0gPSBjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZShjYm9y
QXJyYXkpKTsKICAgICB9CisgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0
YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJBcHBsZSIsIFdURk1vdmUoYXR0ZXN0YXRp
b25TdGF0ZW1lbnRNYXApKTsKIAotICAgIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgYXR0ZXN0
YXRpb25PYmplY3RNYXA7Ci0gICAgYXR0ZXN0YXRpb25PYmplY3RNYXBbY2Jvcjo6Q0JPUlZhbHVl
KCJhdXRoRGF0YSIpXSA9IGNib3I6OkNCT1JWYWx1ZShhdXRoRGF0YSk7Ci0gICAgYXR0ZXN0YXRp
b25PYmplY3RNYXBbY2Jvcjo6Q0JPUlZhbHVlKCJmbXQiKV0gPSBjYm9yOjpDQk9SVmFsdWUoIkFw
cGxlIik7Ci0gICAgYXR0ZXN0YXRpb25PYmplY3RNYXBbY2Jvcjo6Q0JPUlZhbHVlKCJhdHRTdG10
IildID0gY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoYXR0ZXN0YXRpb25TdGF0ZW1lbnRNYXApKTsK
LSAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jv
cjo6Q0JPUlZhbHVlKFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3RNYXApKSk7Ci0gICAgaWYgKCFh
dHRlc3RhdGlvbk9iamVjdCkgewotICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGVuY29kZSB0
aGUgYXR0ZXN0YXRpb24gb2JqZWN0LiIpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRp
b25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByZWNlaXZlUmVzcG9uZChQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3Jl
ZGVudGlhbElkLnNpemUoKSksIHRydWUsIG51bGxwdHIsIEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0
ZXN0YXRpb25PYmplY3QudmFsdWUoKS5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnZhbHVlKCku
c2l6ZSgpKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9KTsKKyAgICByZWNlaXZlUmVzcG9u
ZChQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlh
bElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIHRydWUsIG51bGxwdHIsIEFycmF5QnVm
ZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5z
aXplKCkpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH0pOwogI2VuZGlmIC8vICFQTEFURk9S
TShJT1NfRkFNSUxZKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3Bw
CmluZGV4IGI3ZmM4MDg2MjU4MWE5OWY1MTk2YTcxMmM1N2E0ZmMwY2ExOWEyYzMuLjBiMTc2OTli
ZGRlOTc4NGI0Yzc4NjNkOWQ3YmU5MjQ1NDY1ZjJhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0hpZENvbm5lY3Rpb24uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9B
dXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQk9SUmVh
ZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgogI2luY2x1ZGUgPHd0Zi9CbG9ja1B0
ci5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgdm9pZCBNb2NrSGlkQ29u
bmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQogCiAgICAgT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IG1l
c3NhZ2U7CiAgICAgaWYgKG1fc3RhZ2UgPT0gTW9jazo6U3RhZ2U6OkluZm8gJiYgbV9zdWJTdGFn
ZSA9PSBNb2NrOjpTdWJTdGFnZTo6TXNnKSB7Ci0gICAgICAgIGF1dG8gaW5mb0RhdGEgPSBlbmNv
ZGVBc0NCT1IoQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSh7IFByb3RvY29sVmVyc2lvbjo6
a0N0YXAgfSwgVmVjdG9yPHVpbnQ4X3Q+KGtBYWd1aWRMZW5ndGgsIDB1KSkpOworICAgICAgICBh
dXRvIGluZm9EYXRhID0gZW5jb2RlQXNDQk9SKEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Uo
eyBQcm90b2NvbFZlcnNpb246OmtDdGFwIH0sIFZlY3Rvcjx1aW50OF90PihhYWd1aWRMZW5ndGgs
IDB1KSkpOwogICAgICAgICBpbmZvRGF0YS5pbnNlcnQoMCwgc3RhdGljX2Nhc3Q8dWludDhfdD4o
Q3RhcERldmljZVJlc3BvbnNlQ29kZTo6a1N1Y2Nlc3MpKTsgLy8gUHJlcGVuZCBzdGF0dXMgY29k
ZS4KICAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJy
b3IgPT0gTW9jazo6RXJyb3I6Oldyb25nQ2hhbm5lbElkKQogICAgICAgICAgICAgbWVzc2FnZSA9
IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCAtIDEsIEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprQ2JvciwgaW5mb0RhdGEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA5ZTI2YjlkY2U4NmFiMDhkMTcxMzA0M2RkNjU4NDMz
ZTM4MDYzMDcuLjE3ZDdjMTg1MGM3ZjFlMzRmOTRhYWNhMzJmNTQ1N2U3OTA1NWFiMGMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
OCBAQAorMjAxOS0wMS0wNCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJBdXRoTl0gSW1wb3J0IFUyRiBjb21tYW5kL3Jlc3BvbnNlIGNvbnZlcnRlcnMg
ZnJvbSBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkzMTUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzA1NDAyOD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIEFQSSB0ZXN0cy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVz
cG9uc2VUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmdldFRlc3RBdHRlc3RlZENy
ZWRlbnRpYWxEYXRhQnl0ZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdEF1dGhl
bnRpY2F0b3JEYXRhQnl0ZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdEF0dGVz
dGF0aW9uT2JqZWN0Qnl0ZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdFNpZ25S
ZXNwb25zZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZXRUZXN0VTJmUmVnaXN0ZXJSZXNw
b25zZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmNvbnZlcnRUb1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9VMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3QpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6Y29uc3RydWN0R2V0QXNzZXJ0aW9uUmVxdWVzdCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0xMi0yMSAgSmlld2VuIFRhbiAgPGpp
ZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRoTl0gdXNlclByZXNlbmNlIHNo
b3VsZCBhbHdheXMgYmUgdHJ1ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMzE0MzI4ZmVk
NGVhMTExOWZlMzVkMWE1OWNmNTRkY2FlZWU5MjI3Li5mOGFmNjFhMzY5M2RiYzllNTk5MDE4Mzkz
MWFlYmRhZTgzNWNmZGE4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjU4LDYgKzI1OCw3
IEBACiAJCTU3MTRFQ0JCMUNBOEJGRTQwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5h
bFVSTEZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTcxNEVDQkExQ0E4QkZEMTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9y
aWdpbmFsVVJMRnJhbWUuaHRtbCAqLzsgfTsKIAkJNTcxNEVDQkQxQ0E4QzIyQTAwMDUxQUM4IC8q
IERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTRFQ0JDMUNBOEMyMTgwMDA1MUFDOCAv
KiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTDIuaHRtbCAqLzsgfTsKIAkJNTcxNTJCNUUyMUND
MjA0NTAwMEMzN0NBIC8qIEFwZHVUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjVEMjFDQzIwNDUwMDBDMzdDQSAvKiBBcGR1VGVzdC5j
cHAgKi87IH07CisJCTU3MTUyQjc4MjFERDRFOEQwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3Ry
dWN0b3JUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3RDFENzVFMjFEQ0I3QTgwMDkzRTg2QSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0
LmNwcCAqLzsgfTsKIAkJNTcxRjdGRDAxRjI5NjFGQjAwOTQ2NjQ4IC8qIEluZGV4ZWREQlN0cnVj
dHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXdhbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzFGN0ZDRjFGMjk2MUUx
MDA5NDY2NDggLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5
LnNxbGl0ZTMtd2FsICovOyB9OwogCQk1NzJCNDAzNDIxNzY5QTg4MDAwQUQ0M0UgLyogQ3RhcFJl
cXVlc3RUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3MkI0MDMzMjE3NjlBODgwMDBBRDQzRSAvKiBDdGFwUmVxdWVzdFRlc3QuY3BwICovOyB9
OwogCQk1NzJCNDA0NDIxNzgxQjQzMDAwQUQ0M0UgLyogQ3RhcFJlc3BvbnNlVGVzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJCNDA0MzIxNzgx
QjQyMDAwQUQ0M0UgLyogQ3RhcFJlc3BvbnNlVGVzdC5jcHAgKi87IH07CkBAIC0xNjI5LDYgKzE2
MzAsNyBAQAogCQk1Nzk3RkUyRjFFQjE1QTVGMDBCMkY0QTAgLyogTmF2aWdhdGlvbkNsaWVudERl
ZmF1bHRDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2
aWdhdGlvbkNsaWVudERlZmF1bHRDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Nzk3RkUzMjFFQjE1QTg5MDBCMkY0QTAgLyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVs
dC1jcnlwdG8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJuYXZpZ2F0aW9uLWNs
aWVudC1kZWZhdWx0LWNyeXB0by5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTc5OEUyQUYxQ0FGNUMyODAwQzVDQkEwIC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxVUkxOb3RD
aGFuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RDFENzVFMjFEQ0I3QTgw
MDkzRTg2QSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0YxMEQ5MjFDN0U3QjM4MDBFQ0RGMzAgLyogSXNO
YXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3RjRBQTlGMjA4RkE4M0QwMEE2OEU5RSAvKiBTU0xLZXlHZW5lcmF0b3Iu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTU0xLZXlHZW5lcmF0b3IubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU3RjU2QTVCMUM3RjhBNDAwMEYzMUQ3RSAvKiBJc05hdmlnYXRp
b25BY3Rpb25UcnVzdGVkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJc05hdmln
YXRpb25BY3Rpb25UcnVzdGVkLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NjY4LDYgKzI2NzAsNyBAQAogCQkJCTkzQTI1ODk4MUY5MkZGMTUwMDNFNTEwQyAvKiBUZXh0Q29k
ZWMuY3BwICovLAogCQkJCUNEQzJDNzE0MTc5NzA4OUQwMEU2MjdGQiAvKiBUaW1lUmFuZ2VzLmNw
cCAqLywKIAkJCQk3QUQzRkU4RDFENzVGQjhEMDBCMTY5QTQgLyogVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwICovLAorCQkJCTU3RDFENzVFMjFEQ0I3QTgwMDkzRTg2QSAvKiBVMmZDb21tYW5kQ29u
c3RydWN0b3JUZXN0LmNwcCAqLywKIAkJCQlFM0ExRTc3RTIxQjI1QjM5MDA4QzYwMDcgLyogVVJM
UGFyc2VyVGV4dEVuY29kaW5nLmNwcCAqLywKIAkJCQk5QzY0REMzMTFENzYxOThBMDA0QjU5OEUg
LyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCAqLywKIAkJCSk7CkBAIC00MTgwLDYgKzQx
ODMsNyBAQAogCQkJCUNFMzUyNEY5MUIxNDQxQzQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdp
bkFuZEVuZEVkaXRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFREQxQTQxMUE5MjAw
NDQ3QzRDIC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDMxQTQx
MUE3RTAwNDQ3QzRDIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKKwkJCQk1
NzE1MkI3ODIxREQ0RThEMDAwQzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0I0MEI0RTFGNEI5OEQzMDA3REM3QjkgLyogVUlEZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0Njg0OUJFMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBh
c3RlYm9hcmRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUzQTFFNzdGMjFCMjVCMzkwMDhD
NjAwNyAvKiBVUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5j
cHAKaW5kZXggNWFhYTA1ZGEyMDEyMDA1YWQ2ZTU1ZTljYTIxMmI1ODE1MjJkZTk4Mi4uZGUzZjIw
OTI5MzMwOWM0YmJjMjMyMDA4NmI0YWFmOTYwZGVjNGI4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcApAQCAtMzcs
OCArMzcsMTEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NCT1JXcml0ZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWRv
Q29uc3RhbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VMmZSZXNwb25zZUNvbnZlcnRlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25VdGlscy5oPgogCiBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFj
ZSBmaWRvOwogCiBjb25zdGV4cHIgdWludDhfdCBrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVz
cG9uc2VXaXRoTm9WZXJzaW9uW10gPSB7CkBAIC0yMTYsMTAgKzIxOSwxMDcgQEAgY29uc3RleHBy
IHVpbnQ4X3Qga1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aEluY29ycmVjdEFh
Z3VpZFtdID0gewogICAgIDB4ODEsIDB4MDEsCiB9OwogCisvLyBUaGUgYXR0ZXN0ZWQgY3JlZGVu
dGlhbCBkYXRhLCBleGNsdWRpbmcgdGhlIHB1YmxpYyBrZXkgYnl0ZXMuIEFwcGVuZAorLy8gd2l0
aCBrVGVzdEVDUHVibGljS2V5Q09TRSB0byBnZXQgdGhlIGNvbXBsZXRlIGF0dGVzdGF0aW9uIGRh
dGEuCitjb25zdGV4cHIgdWludDhfdCBrVGVzdEF0dGVzdGVkQ3JlZGVudGlhbERhdGFQcmVmaXhb
XSA9IHsKKyAgICAvLyAxNi1ieXRlIGFhZ3VpZAorICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAvLyAyLWJ5dGUgbGVuZ3RoCisgICAgMHgwMCwgMHg0
MCwKKyAgICAvLyA2NC1ieXRlIGtleSBoYW5kbGUKKyAgICAweDNFLCAweEJELCAweDg5LCAweEJG
LCAweDc3LCAweEVDLCAweDUwLCAweDk3LCAweDU1LCAweEVFLCAweDlDLCAweDI2LAorICAgIDB4
MzUsIDB4RUYsIDB4QUEsIDB4QUMsIDB4N0IsIDB4MkIsIDB4OUMsIDB4NUMsIDB4RUYsIDB4MTcs
IDB4MzYsIDB4QzMsCisgICAgMHg3MSwgMHg3RCwgMHhBNCwgMHg4NSwgMHgzNCwgMHhDOCwgMHhD
NiwgMHhCNiwgMHg1NCwgMHhENywgMHhGRiwgMHg5NCwKKyAgICAweDVGLCAweDUwLCAweEI1LCAw
eENDLCAweDRFLCAweDc4LCAweDA1LCAweDVCLCAweERELCAweDM5LCAweDZCLCAweDY0LAorICAg
IDB4RjcsIDB4OEQsIDB4QTIsIDB4QzUsIDB4RjksIDB4NjIsIDB4MDAsIDB4Q0MsIDB4RDQsIDB4
MTUsIDB4Q0QsIDB4MDgsCisgICAgMHhGRSwgMHg0MiwgMHgwMCwgMHgzOCwKK307CisKKy8vIFRo
ZSBhdXRoZW50aWNhdG9yIGRhdGEsIGV4Y2x1ZGluZyB0aGUgYXR0ZXN0ZWQgY3JlZGVudGlhbCBk
YXRhIGJ5dGVzLiBBcHBlbmQKKy8vIHdpdGggYXR0ZXN0ZWQgY3JlZGVudGlhbCBkYXRhIHRvIGdl
dCB0aGUgY29tcGxldGUgYXV0aGVudGljYXRvciBkYXRhLgorY29uc3RleHByIHVpbnQ4X3Qga1Rl
c3RBdXRoZW50aWNhdG9yRGF0YVByZWZpeFtdID0geworICAgIC8vIHNoYTI1NiBoYXNoIG9mIHJw
IGlkLgorICAgIDB4MTEsIDB4OTQsIDB4MjIsIDB4OEQsIDB4QTgsIDB4RkQsIDB4QkQsIDB4RUUs
IDB4RkQsIDB4MjYsIDB4MUIsIDB4RDcsCisgICAgMHhCNiwgMHg1OSwgMHg1QywgMHhGRCwgMHg3
MCwgMHhBNSwgMHgwRCwgMHg3MCwgMHhDNiwgMHg0MCwgMHg3QiwgMHhDRiwKKyAgICAweDAxLCAw
eDNELCAweEU5LCAweDZELCAweDRFLCAweEZCLCAweDE3LCAweERFLAorICAgIC8vIGZsYWdzIChU
VVAgYW5kIEFUIGJpdHMgc2V0KQorICAgIDB4NDEsCisgICAgLy8gY291bnRlcgorICAgIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAKK307CisKKy8vIENvbXBvbmVudHMgb2YgdGhlIENCT1IgbmVlZGVk
IHRvIGZvcm0gYW4gYXV0aGVudGljYXRvciBvYmplY3QuCisvLyBDb21iaW5lZCBkaWFnbm9zdGlj
IG5vdGF0aW9uOgorLy8geyJmbXQiOiAiZmlkby11MmYiLCAiYXR0U3RtdCI6IHsic2lnIjogaCcz
MC4uLn0sICJhdXRoRGF0YSI6IGgnRDRDOUQ5Li4uJ30KK2NvbnN0ZXhwciB1aW50OF90IGtGb3Jt
YXRGaWRvVTJmQ0JPUltdID0geworICAgIC8vIG1hcCgzKQorICAgIDB4QTMsCisgICAgLy8gdGV4
dCgzKQorICAgIDB4NjMsCisgICAgLy8gImZtdCIKKyAgICAweDY2LCAweDZELCAweDc0LAorICAg
IC8vIHRleHQoOCkKKyAgICAweDY4LAorICAgIC8vICJmaWRvLXUyZiIKKyAgICAweDY2LCAweDY5
LCAweDY0LCAweDZGLCAweDJELCAweDc1LCAweDMyLCAweDY2Cit9OworCitjb25zdGV4cHIgdWlu
dDhfdCBrQXR0U3RtdENCT1JbXSA9IHsKKyAgICAvLyB0ZXh0KDcpCisgICAgMHg2NywKKyAgICAv
LyAiYXR0U3RtdCIKKyAgICAweDYxLCAweDc0LCAweDc0LCAweDUzLCAweDc0LCAweDZELCAweDc0
Cit9OworCitjb25zdGV4cHIgdWludDhfdCBrQXV0aERhdGFDQk9SW10gPSB7CisgICAgLy8gdGV4
dCg4KQorICAgIDB4NjgsCisgICAgLy8gImF1dGhEYXRhIgorICAgIDB4NjEsIDB4NzUsIDB4NzQs
IDB4NjgsIDB4NDQsIDB4NjEsIDB4NzQsIDB4NjEsCisgICAgLy8gYnl0ZXMoMTk2KS4gaS5lLiwg
dGhlIGF1dGhlbnRpY2F0b3JfZGF0YSBieXRlIGFycmF5IGNvcnJlc3BvbmRpbmcgdG8KKyAgICAv
LyBrVGVzdEF1dGhlbnRpY2F0b3JEYXRhUHJlZml4fCwgfGtUZXN0QXR0ZXN0ZWRDcmVkZW50aWFs
RGF0YVByZWZpeHwsCisgICAgLy8gYW5kIHRlc3RfZGF0YTo6a1Rlc3RFQ1B1YmxpY0tleUNPU0Uu
CisgICAgMHg1OCwgMHhDNAorfTsKKwogY29uc3RleHByIHVpbnQ4X3Qga1Rlc3REZXZpY2VBYWd1
aWRbXSA9IHsKICAgICAweEY4LCAweEEwLCAweDExLCAweEYzLCAweDhDLCAweDBBLCAweDRELCAw
eDE1LCAweDgwLCAweDA2LCAweDE3LCAweDExLCAweDFGLCAweDlFLCAweERDLCAweDdECiB9Owog
CitWZWN0b3I8dWludDhfdD4gZ2V0VGVzdEF0dGVzdGVkQ3JlZGVudGlhbERhdGFCeXRlcygpCit7
CisgICAgLy8gQ29tYmluZSBrVGVzdEF0dGVzdGVkQ3JlZGVudGlhbERhdGFQcmVmaXggYW5kIGtU
ZXN0RUNQdWJsaWNLZXlDT1NFLgorICAgIGF1dG8gdGVzdEF0dGVzdGVkRGF0YSA9IGNvbnZlcnRC
eXRlc1RvVmVjdG9yKGtUZXN0QXR0ZXN0ZWRDcmVkZW50aWFsRGF0YVByZWZpeCwgc2l6ZW9mKGtU
ZXN0QXR0ZXN0ZWRDcmVkZW50aWFsRGF0YVByZWZpeCkpOworICAgIHRlc3RBdHRlc3RlZERhdGEu
YXBwZW5kKFRlc3REYXRhOjprVGVzdEVDUHVibGljS2V5Q09TRSwgc2l6ZW9mKFRlc3REYXRhOjpr
VGVzdEVDUHVibGljS2V5Q09TRSkpOworICAgIHJldHVybiB0ZXN0QXR0ZXN0ZWREYXRhOworfQor
CitWZWN0b3I8dWludDhfdD4gZ2V0VGVzdEF1dGhlbnRpY2F0b3JEYXRhQnl0ZXMoKQoreworICAg
IC8vIEJ1aWxkIHRoZSB0ZXN0IGF1dGhlbnRpY2F0b3IgZGF0YS4KKyAgICBhdXRvIHRlc3RBdXRo
ZW50aWNhdG9yRGF0YSA9IGNvbnZlcnRCeXRlc1RvVmVjdG9yKGtUZXN0QXV0aGVudGljYXRvckRh
dGFQcmVmaXgsIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0b3JEYXRhUHJlZml4KSk7CisgICAgYXV0
byB0ZXN0QXR0ZXN0ZWREYXRhID0gZ2V0VGVzdEF0dGVzdGVkQ3JlZGVudGlhbERhdGFCeXRlcygp
OworICAgIHRlc3RBdXRoZW50aWNhdG9yRGF0YS5hcHBlbmRWZWN0b3IodGVzdEF0dGVzdGVkRGF0
YSk7CisgICAgcmV0dXJuIHRlc3RBdXRoZW50aWNhdG9yRGF0YTsKK30KKworVmVjdG9yPHVpbnQ4
X3Q+IGdldFRlc3RBdHRlc3RhdGlvbk9iamVjdEJ5dGVzKCkKK3sKKyAgICBhdXRvIHRlc3RBdXRo
ZW50aWNhdG9yT2JqZWN0ID0gY29udmVydEJ5dGVzVG9WZWN0b3Ioa0Zvcm1hdEZpZG9VMmZDQk9S
LCBzaXplb2Yoa0Zvcm1hdEZpZG9VMmZDQk9SKSk7CisgICAgdGVzdEF1dGhlbnRpY2F0b3JPYmpl
Y3QuYXBwZW5kKGtBdHRTdG10Q0JPUiwgc2l6ZW9mKGtBdHRTdG10Q0JPUikpOworICAgIHRlc3RB
dXRoZW50aWNhdG9yT2JqZWN0LmFwcGVuZChUZXN0RGF0YTo6a1UyZkF0dGVzdGF0aW9uU3RhdGVt
ZW50Q0JPUiwgc2l6ZW9mKFRlc3REYXRhOjprVTJmQXR0ZXN0YXRpb25TdGF0ZW1lbnRDQk9SKSk7
CisgICAgdGVzdEF1dGhlbnRpY2F0b3JPYmplY3QuYXBwZW5kKGtBdXRoRGF0YUNCT1IsIHNpemVv
ZihrQXV0aERhdGFDQk9SKSk7CisgICAgYXV0byB0ZXN0QXV0aGVudGljYXRvckRhdGEgPSBnZXRU
ZXN0QXV0aGVudGljYXRvckRhdGFCeXRlcygpOworICAgIHRlc3RBdXRoZW50aWNhdG9yT2JqZWN0
LmFwcGVuZFZlY3Rvcih0ZXN0QXV0aGVudGljYXRvckRhdGEpOworICAgIHJldHVybiB0ZXN0QXV0
aGVudGljYXRvck9iamVjdDsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGdldFRlc3RTaWduUmVzcG9u
c2UoKQoreworICAgIHJldHVybiBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RV
MmZTaWduUmVzcG9uc2UsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RVMmZTaWduUmVzcG9uc2UpKTsK
K30KKwogLy8gR2V0IGEgc3Vic2V0IG9mIHRoZSByZXNwb25zZSBmb3IgdGVzdGluZyBlcnJvciBo
YW5kbGluZy4KIFZlY3Rvcjx1aW50OF90PiBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3BvbnNlKHNp
emVfdCBsZW5ndGgpCiB7CkBAIC0yMzksMTEgKzMzOSwxMyBAQCBWZWN0b3I8dWludDhfdD4gZ2V0
VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCkKICAgICByZXR1cm4gdGVzdENyZWRlbnRpYWxSYXdJ
ZEJ5dGVzOwogfQogCi1WZWN0b3I8dWludDhfdD4gY29udmVydFRvVmVjdG9yKGNvbnN0IHVpbnQ4
X3QgYnl0ZUFycmF5W10sIGNvbnN0IHNpemVfdCBsZW5ndGgpCisvLyBSZXR1cm4gYSBtYWxmb3Jt
ZWQgVTJmUmVnaXN0ZXJSZXNwb25zZS4KK1ZlY3Rvcjx1aW50OF90PiBnZXRUZXN0VTJmUmVnaXN0
ZXJSZXNwb25zZShzaXplX3QgcHJlZml4U2l6ZSwgY29uc3QgdWludDhfdCBhcHBlbmRpeFtdLCBz
aXplX3QgYXBwZW5kaXhTaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAg
cmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICByZXN1bHQuYXBwZW5k
KGJ5dGVBcnJheSwgbGVuZ3RoKTsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShw
cmVmaXhTaXplICsgYXBwZW5kaXhTaXplKTsKKyAgICByZXN1bHQuYXBwZW5kKFRlc3REYXRhOjpr
VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UsIHByZWZpeFNpemUpOworICAgIHJlc3VsdC5hcHBlbmQo
YXBwZW5kaXgsIGFwcGVuZGl4U2l6ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjUx
LDkgKzM1Myw5IEBAIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0VG9WZWN0b3IoY29uc3QgdWludDhf
dCBieXRlQXJyYXlbXSwgY29uc3Qgc2l6ZV90IGxlbmd0aCkKIC8vIGh0dHBzOi8vZmlkb2FsbGlh
bmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVu
dGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjY29tbWFuZHMKIFRFU1QoQ1RB
UFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKQogewotICAgIGF1
dG8gbWFrZUNyZWRlbnRpYWxSZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25z
ZShjb252ZXJ0VG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25zZSwg
c2l6ZW9mKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpKSk7CisgICAgYXV0
byBtYWtlQ3JlZGVudGlhbFJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNl
KGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9u
c2UsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKSkpOwogICAg
IEFTU0VSVF9UUlVFKG1ha2VDcmVkZW50aWFsUmVzcG9uc2UpOwotICAgIGF1dG8gY2JvckF0dGVz
dGF0aW9uT2JqZWN0ID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChjb252ZXJ0VG9WZWN0b3IocmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4obWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRp
b25PYmplY3QtPmRhdGEoKSksIG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2Jq
ZWN0LT5ieXRlTGVuZ3RoKCkpKTsKKyAgICBhdXRvIGNib3JBdHRlc3RhdGlvbk9iamVjdCA9IGNi
b3I6OkNCT1JSZWFkZXI6OnJlYWQoY29udmVydEJ5dGVzVG9WZWN0b3IocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4obWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRpb25PYmplY3QtPmRh
dGEoKSksIG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVu
Z3RoKCkpKTsKICAgICBBU1NFUlRfVFJVRShjYm9yQXR0ZXN0YXRpb25PYmplY3QpOwogICAgIEFT
U0VSVF9UUlVFKGNib3JBdHRlc3RhdGlvbk9iamVjdC0+aXNNYXAoKSk7CiAKQEAgLTI2Niw3ICsz
NjgsNyBAQCBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkTWFrZUNyZWRlbnRpYWxSZXNw
b25zZSkKICAgICBpdCA9IGF0dGVzdGF0aW9uT2JqZWN0TWFwLmZpbmQoY2Jvcjo6Q0JPUlZhbHVl
KGtBdXRoRGF0YUtleSkpOwogICAgIEFTU0VSVF9UUlVFKGl0ICE9IGF0dGVzdGF0aW9uT2JqZWN0
TWFwLmVuZCgpKTsKICAgICBBU1NFUlRfVFJVRShpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKTsK
LSAgICBFWFBFQ1RfRVEoaXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCksIGNvbnZlcnRUb1ZlY3Rv
cihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxBdXRoRGF0YSwgc2l6ZW9mKFRlc3REYXRh
OjprQ3RhcDJNYWtlQ3JlZGVudGlhbEF1dGhEYXRhKSkpOworICAgIEVYUEVDVF9FUShpdC0+c2Vj
b25kLmdldEJ5dGVTdHJpbmcoKSwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDdGFw
Mk1ha2VDcmVkZW50aWFsQXV0aERhdGEsIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRl
bnRpYWxBdXRoRGF0YSkpKTsKIAogICAgIGl0ID0gYXR0ZXN0YXRpb25PYmplY3RNYXAuZmluZChj
Ym9yOjpDQk9SVmFsdWUoa0F0dGVzdGF0aW9uU3RhdGVtZW50S2V5KSk7CiAgICAgQVNTRVJUX1RS
VUUoaXQgIT0gYXR0ZXN0YXRpb25PYmplY3RNYXAuZW5kKCkpOwpAQCAtMjgyLDcgKzM4NCw3IEBA
IFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKQog
ICAgIGF0dFN0bXRJdCA9IGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwLmZpbmQoY2Jvcjo6Q0JPUlZh
bHVlKCJzaWciKSk7CiAgICAgQVNTRVJUX1RSVUUoYXR0U3RtdEl0ICE9IGF0dGVzdGF0aW9uU3Rh
dGVtZW50TWFwLmVuZCgpKTsKICAgICBBU1NFUlRfVFJVRShhdHRTdG10SXQtPnNlY29uZC5pc0J5
dGVTdHJpbmcoKSk7Ci0gICAgRVhQRUNUX0VRKGF0dFN0bXRJdC0+c2Vjb25kLmdldEJ5dGVTdHJp
bmcoKSwgY29udmVydFRvVmVjdG9yKFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbFNpZ25h
dHVyZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbFNpZ25hdHVyZSkpKTsK
KyAgICBFWFBFQ1RfRVEoYXR0U3RtdEl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpLCBjb252ZXJ0
Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxTaWduYXR1cmUsIHNp
emVvZihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxTaWduYXR1cmUpKSk7CiAKICAgICBh
dHRTdG10SXQgPSBhdHRlc3RhdGlvblN0YXRlbWVudE1hcC5maW5kKGNib3I6OkNCT1JWYWx1ZSgi
eDVjIikpOwogICAgIEFTU0VSVF9UUlVFKGF0dFN0bXRJdCAhPSBhdHRlc3RhdGlvblN0YXRlbWVu
dE1hcC5lbmQoKSk7CkBAIC0yOTAsNyArMzkyLDcgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBU
ZXN0UmVhZE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpCiAgICAgQVNTRVJUX1RSVUUoY2VydGlmaWNh
dGUuaXNBcnJheSgpKTsKICAgICBBU1NFUlRfRVEoY2VydGlmaWNhdGUuZ2V0QXJyYXkoKS5zaXpl
KCksIDF1KTsKICAgICBBU1NFUlRfVFJVRShjZXJ0aWZpY2F0ZS5nZXRBcnJheSgpWzBdLmlzQnl0
ZVN0cmluZygpKTsKLSAgICBFWFBFQ1RfRVEoY2VydGlmaWNhdGUuZ2V0QXJyYXkoKVswXS5nZXRC
eXRlU3RyaW5nKCksIGNvbnZlcnRUb1ZlY3RvcihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRp
YWxDZXJ0aWZpY2F0ZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbENlcnRp
ZmljYXRlKSkpOworICAgIEVYUEVDVF9FUShjZXJ0aWZpY2F0ZS5nZXRBcnJheSgpWzBdLmdldEJ5
dGVTdHJpbmcoKSwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVk
ZW50aWFsQ2VydGlmaWNhdGUsIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxD
ZXJ0aWZpY2F0ZSkpKTsKICAgICBFWFBFQ1RfRVEobWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+cmF3
SWQtPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbENy
ZWRlbnRpYWxJZCkpOwogICAgIEVYUEVDVF9FUShtZW1jbXAobWFrZUNyZWRlbnRpYWxSZXNwb25z
ZS0+cmF3SWQtPmRhdGEoKSwgVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVkZW50aWFsQ3JlZGVudGlh
bElkLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVkZW50aWFsQ3JlZGVudGlhbElkKSks
IDApOwogfQpAQCAtMjk5LDcgKzQwMSw3IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJl
YWRNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKQogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3Nw
ZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXBy
b3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0
UmVhZEdldEFzc2VydGlvblJlc3BvbnNlKQogewotICAgIGF1dG8gZ2V0QXNzZXJ0aW9uUmVzcG9u
c2UgPSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnZlcnRUb1ZlY3RvcihUZXN0RGF0
YTo6a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtEZXZpY2VH
ZXRBc3NlcnRpb25SZXNwb25zZSkpKTsKKyAgICBhdXRvIGdldEFzc2VydGlvblJlc3BvbnNlID0g
cmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0
YTo6a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtEZXZpY2VH
ZXRBc3NlcnRpb25SZXNwb25zZSkpKTsKICAgICBBU1NFUlRfVFJVRShnZXRBc3NlcnRpb25SZXNw
b25zZSk7CiAKICAgICBFWFBFQ1RfRVEoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UtPmF1dGhlbnRpY2F0
b3JEYXRhLT5ieXRlTGVuZ3RoKCksIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyR2V0QXNzZXJ0aW9u
QXV0aERhdGEpKTsKQEAgLTMwOCw5ICs0MTAsMTU2IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwg
VGVzdFJlYWRHZXRBc3NlcnRpb25SZXNwb25zZSkKICAgICBFWFBFQ1RfRVEobWVtY21wKGdldEFz
c2VydGlvblJlc3BvbnNlLT5zaWduYXR1cmUtPmRhdGEoKSwgVGVzdERhdGE6OmtDdGFwMkdldEFz
c2VydGlvblNpZ25hdHVyZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJHZXRBc3NlcnRpb25TaWdu
YXR1cmUpKSwgMCk7CiB9CiAKKy8vIFRlc3QgdGhhdCBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UgaXMg
cHJvcGVybHkgcGFyc2VkLgorVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VSZWdpc3Rl
clJlc3BvbnNlRGF0YSkKK3sKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVz
cG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVz
dERhdGE6OmtUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdFUy
ZlJlZ2lzdGVyUmVzcG9uc2UpKSk7CisgICAgQVNTRVJUX1RSVUUocmVzcG9uc2UpOworICAgIEVY
UEVDVF9FUShyZXNwb25zZS0+cmF3SWQtPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjpr
VTJmU2lnbktleUhhbmRsZSkpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzcG9uc2UtPnJhd0lk
LT5kYXRhKCksIFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjpr
VTJmU2lnbktleUhhbmRsZSkpLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShyZXNwb25zZS0+aXNBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSk7CisgICAgYXV0byBleHBlY3RlZEF0dGVzdGF0
aW9uT2JqZWN0ID0gZ2V0VGVzdEF0dGVzdGF0aW9uT2JqZWN0Qnl0ZXMoKTsKKyAgICBFWFBFQ1Rf
RVEocmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCksIGV4cGVjdGVkQXR0
ZXN0YXRpb25PYmplY3Quc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3BvbnNlLT5h
dHRlc3RhdGlvbk9iamVjdC0+ZGF0YSgpLCBleHBlY3RlZEF0dGVzdGF0aW9uT2JqZWN0LmRhdGEo
KSwgZXhwZWN0ZWRBdHRlc3RhdGlvbk9iamVjdC5zaXplKCkpLCAwKTsKK30KKworLy8gVGVzdCBt
YWxmb3JtZWQgdXNlciBwdWJsaWMga2V5LgorVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFy
c2VJbmNvcnJlY3RSZWdpc3RlclJlc3BvbnNlRGF0YTEpCit7CisgICAgY29uc3QgdWludDhfdCB0
ZXN0RGF0YTFbXSA9IHsgMHgwNSB9OworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0
ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cih0ZXN0RGF0YTEsIHNpemVvZih0ZXN0RGF0YTEpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3Bv
bnNlKTsKKworICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGEyW10gPSB7IDB4MDUsIDB4MDAgfTsK
KyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWlu
Z1BhcnR5SWQsIGNvbnZlcnRCeXRlc1RvVmVjdG9yKHRlc3REYXRhMiwgc2l6ZW9mKHRlc3REYXRh
MikpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOworCisgICAgY29uc3QgdWludDhfdCB0
ZXN0RGF0YTNbXSA9IHsgMHgwNSwgMHgwNCwgMHgwMCB9OworICAgIHJlc3BvbnNlID0gcmVhZFUy
ZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgY29udmVydEJ5dGVz
VG9WZWN0b3IodGVzdERhdGEzLCBzaXplb2YodGVzdERhdGEzKSkpOworICAgIEVYUEVDVF9GQUxT
RShyZXNwb25zZSk7Cit9CisKKy8vIFRlc3QgbWFsZm9ybWVkIGtleSBoYW5kbGUuCitURVNUKENU
QVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhMikK
K3sKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6
OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2Uoa1UyZktleUhhbmRs
ZUxlbmd0aE9mZnNldCwgbnVsbHB0ciwgMCkpOworICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7
CisKKyAgICBjb25zdCB1aW50OF90IHRlc3REYXRhW10gPSB7IDB4NDAgfTsKKyAgICByZXNwb25z
ZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdl
dFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKGtVMmZLZXlIYW5kbGVMZW5ndGhPZmZzZXQsIHRlc3RE
YXRhLCBzaXplb2YodGVzdERhdGEpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKK30K
KworLy8gVGVzdCBtYWxmb3JtZWQgWC41MDkuCitURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQ
YXJzZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhMykKK3sKKyAgICBjb25zdCBhdXRvIHBy
ZWZpeCA9IGtVMmZLZXlIYW5kbGVPZmZzZXQgKyA2NDsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVh
ZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUy
ZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4LCBudWxscHRyLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHJlc3BvbnNlKTsKKworICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGExW10gPSB7IDB4NDAgfTsK
KyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWlu
Z1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgdGVzdERhdGExLCBz
aXplb2YodGVzdERhdGExKSkpOworICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CisKKyAgICBj
b25zdCB1aW50OF90IHRlc3REYXRhMltdID0geyAweDMwIH07CisgICAgcmVzcG9uc2UgPSByZWFk
VTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJm
UmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3REYXRhMiwgc2l6ZW9mKHRlc3REYXRhMikpKTsK
KyAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOworCisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0
YTNbXSA9IHsgMHgzMCwgMHg4MiB9OworICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVz
cG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9u
c2UocHJlZml4LCB0ZXN0RGF0YTMsIHNpemVvZih0ZXN0RGF0YTMpKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHJlc3BvbnNlKTsKKworICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGE0W10gPSB7IDB4MzAs
IDB4QzEgfTsKKyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRh
OjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgdGVz
dERhdGE0LCBzaXplb2YodGVzdERhdGE0KSkpOworICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7
CisKKyAgICBjb25zdCB1aW50OF90IHRlc3REYXRhNVtdID0geyAweDMwLCAweDgyLCAweDAyLCAw
eDRBIH07CisgICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6
a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3RE
YXRhNSwgc2l6ZW9mKHRlc3REYXRhNSkpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwor
fQorCisvLyBUZXN0IG1hbGZvcm1lZCBzaWduYXR1cmUuCitURVNUKENUQVBSZXNwb25zZVRlc3Qs
IFRlc3RQYXJzZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhNCkKK3sKKyAgICBjb25zdCBh
dXRvIHByZWZpeCA9IHNpemVvZihUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlKTsK
KyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtS
ZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4IC0gNzEsIG51
bGxwdHIsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOworCisgICAgY29uc3QgdWlu
dDhfdCB0ZXN0RGF0YVtdID0geyAweDQwLCAweDQwLCAweDQwIH07CisgICAgcmVzcG9uc2UgPSBy
ZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0
VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3REYXRhLCBzaXplb2YodGVzdERhdGEpKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKK30KKworLy8gVGVzdCBtYWxmb3JtZWQgWC41
MDkgYnV0IHBhc3MuCitURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZUluY29ycmVjdFJl
Z2lzdGVyUmVzcG9uc2VEYXRhNSkKK3sKKyAgICBjb25zdCBhdXRvIHByZWZpeCA9IGtVMmZLZXlI
YW5kbGVPZmZzZXQgKyA2NDsKKyAgICBjb25zdCBhdXRvIHNpZ25hdHVyZVNpemUgPSA3MTsKKyAg
ICBjb25zdCBhdXRvIHN1ZmZpeCA9IHNpemVvZihUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJl
c3BvbnNlKSAtIHNpZ25hdHVyZVNpemU7CisKKyAgICBWZWN0b3I8dWludDhfdD4gdGVzdERhdGEx
OworICAgIHRlc3REYXRhMS5hcHBlbmQoVGVzdERhdGE6OmtUZXN0VTJmUmVnaXN0ZXJSZXNwb25z
ZSwgcHJlZml4KTsKKyAgICB0ZXN0RGF0YTEuYXBwZW5kKDB4MzApOworICAgIHRlc3REYXRhMS5h
cHBlbmQoMHgwMSk7CisgICAgdGVzdERhdGExLmFwcGVuZCgweDAwKTsKKyAgICB0ZXN0RGF0YTEu
YXBwZW5kKFRlc3REYXRhOjprVGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UgKyBzdWZmaXgsIHNpZ25h
dHVyZVNpemUpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShU
ZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCB0ZXN0RGF0YTEpOworICAgIEVYUEVDVF9UUlVFKHJl
c3BvbnNlKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB0ZXN0RGF0YTI7CisgICAgdGVzdERhdGEy
LmFwcGVuZChUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlLCBwcmVmaXgpOworICAg
IHRlc3REYXRhMi5hcHBlbmQoMHgzMCk7CisgICAgdGVzdERhdGEyLmFwcGVuZCgweDgxKTsKKyAg
ICB0ZXN0RGF0YTIuYXBwZW5kKDB4MDEpOworICAgIHRlc3REYXRhMi5hcHBlbmQoMHgwMCk7Cisg
ICAgdGVzdERhdGEyLmFwcGVuZChUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlICsg
c3VmZml4LCBzaWduYXR1cmVTaXplKTsKKyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJl
c3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIHRlc3REYXRhMik7CisgICAgRVhQRUNU
X1RSVUUocmVzcG9uc2UpOworfQorCisvLyBUZXN0cyB0aGF0IFUyRiBhdXRoZW50aWNhdG9yIGRh
dGEgaXMgcHJvcGVybHkgc2VyaWFsaXplZC4KK1RFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBh
cnNlU2lnblJlc3BvbnNlRGF0YSkKK3sKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZEZyb21VMmZT
aWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxS
YXdJZEJ5dGVzKCksIGdldFRlc3RTaWduUmVzcG9uc2UoKSk7CisgICAgQVNTRVJUX1RSVUUocmVz
cG9uc2UpOworICAgIEVYUEVDVF9FUShyZXNwb25zZS0+cmF3SWQtPmJ5dGVMZW5ndGgoKSwgc2l6
ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOworICAgIEVYUEVDVF9FUShtZW1jbXAo
cmVzcG9uc2UtPnJhd0lkLT5kYXRhKCksIFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6
ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpLCAwKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
cmVzcG9uc2UtPmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOworICAgIEVYUEVD
VF9FUShyZXNwb25zZS0+YXV0aGVudGljYXRvckRhdGEtPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRl
c3REYXRhOjprVGVzdFNpZ25BdXRoZW50aWNhdG9yRGF0YSkpOworICAgIEVYUEVDVF9FUShtZW1j
bXAocmVzcG9uc2UtPmF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCksIFRlc3REYXRhOjprVGVzdFNp
Z25BdXRoZW50aWNhdG9yRGF0YSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdFNpZ25BdXRoZW50aWNh
dG9yRGF0YSkpLCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzcG9uc2UtPnNpZ25hdHVyZS0+Ynl0ZUxl
bmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduYXR1cmUpKTsKKyAgICBFWFBFQ1RfRVEo
bWVtY21wKHJlc3BvbnNlLT5zaWduYXR1cmUtPmRhdGEoKSwgVGVzdERhdGE6OmtVMmZTaWduYXR1
cmUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25hdHVyZSkpLCAwKTsKK30KKworVEVTVChDVEFQ
UmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0aE51bGxLZXlIYW5kbGUpCit7CisgICAg
YXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWlu
Z1BhcnR5SWQsIFZlY3Rvcjx1aW50OF90PigpLCBnZXRUZXN0U2lnblJlc3BvbnNlKCkpOworICAg
IEVYUEVDVF9GQUxTRShyZXNwb25zZSk7Cit9CisKK1RFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVz
dFBhcnNlVTJmU2lnbldpdGhOdWxsUmVzcG9uc2UpCit7CisgICAgYXV0byByZXNwb25zZSA9IHJl
YWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RD
cmVkZW50aWFsUmF3SWRCeXRlcygpLCBWZWN0b3I8dWludDhfdD4oKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHJlc3BvbnNlKTsKK30KKworVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZT
aWduV2l0aENvcnJ1cHRlZENvdW50ZXIpCit7CisgICAgLy8gQSBzaWduIHJlc3BvbnNlIG9mIGxl
c3MgdGhhbiA1IGJ5dGVzLgorICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkRnJvbVUyZlNpZ25SZXNw
b25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0
ZXMoKSwgZ2V0VGVzdENvcnJ1cHRlZFNpZ25SZXNwb25zZSgzKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHJlc3BvbnNlKTsKK30KKworVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWdu
V2l0aENvcnJ1cHRlZFNpZ25hdHVyZSkKK3sKKyAgICAvLyBBIHNpZ24gcmVzcG9uc2Ugbm8gbW9y
ZSB0aGFuIDUgYnl0ZXMuCisgICAgYXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3Bv
bnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRl
cygpLCBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3BvbnNlKDUpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
cmVzcG9uc2UpOworfQorCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkR2V0SW5mb1Jl
c3BvbnNlKQogewotICAgIGF1dG8gZ2V0SW5mb1Jlc3BvbnNlID0gcmVhZENUQVBHZXRJbmZvUmVz
cG9uc2UoY29udmVydFRvVmVjdG9yKFRlc3REYXRhOjprVGVzdEdldEluZm9SZXNwb25zZVBsYXRm
b3JtRGV2aWNlLCBzaXplb2YoVGVzdERhdGE6OmtUZXN0R2V0SW5mb1Jlc3BvbnNlUGxhdGZvcm1E
ZXZpY2UpKSk7CisgICAgYXV0byBnZXRJbmZvUmVzcG9uc2UgPSByZWFkQ1RBUEdldEluZm9SZXNw
b25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RHZXRJbmZvUmVzcG9uc2VQ
bGF0Zm9ybURldmljZSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdEdldEluZm9SZXNwb25zZVBsYXRm
b3JtRGV2aWNlKSkpOwogICAgIEFTU0VSVF9UUlVFKGdldEluZm9SZXNwb25zZSk7CiAgICAgQVNT
RVJUX1RSVUUoZ2V0SW5mb1Jlc3BvbnNlLT5tYXhNc2dTaXplKCkpOwogICAgIEVYUEVDVF9FUSgq
Z2V0SW5mb1Jlc3BvbnNlLT5tYXhNc2dTaXplKCksIDEyMDB1KTsKQEAgLTMyNSwxNCArNTc0LDE0
IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRHZXRJbmZvUmVzcG9uc2UpCiAKIFRF
U1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRHZXRJbmZvUmVzcG9uc2VXaXRoSW5jb3JyZWN0
Rm9ybWF0KQogewotICAgIEVYUEVDVF9GQUxTRShyZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb252
ZXJ0VG9WZWN0b3Ioa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aE5vVmVyc2lv
biwgc2l6ZW9mKGtUZXN0QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZVdpdGhOb1ZlcnNpb24p
KSkpOwotICAgIEVYUEVDVF9GQUxTRShyZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb252ZXJ0VG9W
ZWN0b3Ioa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aER1cGxpY2F0ZVZlcnNp
b24sIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VXaXRoRHVwbGljYXRl
VmVyc2lvbikpKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNv
bnZlcnRUb1ZlY3RvcihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VXaXRoSW5jb3Jy
ZWN0QWFndWlkLCBzaXplb2Yoa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aElu
Y29ycmVjdEFhZ3VpZCkpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlYWRDVEFQR2V0SW5mb1Jlc3Bv
bnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKGtUZXN0QXV0aGVudGljYXRvckdldEluZm9SZXNwb25z
ZVdpdGhOb1ZlcnNpb24sIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VX
aXRoTm9WZXJzaW9uKSkpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVhZENUQVBHZXRJbmZvUmVzcG9u
c2UoY29udmVydEJ5dGVzVG9WZWN0b3Ioa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNl
V2l0aER1cGxpY2F0ZVZlcnNpb24sIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVz
cG9uc2VXaXRoRHVwbGljYXRlVmVyc2lvbikpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlYWRDVEFQ
R2V0SW5mb1Jlc3BvbnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKGtUZXN0QXV0aGVudGljYXRvckdl
dEluZm9SZXNwb25zZVdpdGhJbmNvcnJlY3RBYWd1aWQsIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0
b3JHZXRJbmZvUmVzcG9uc2VXaXRoSW5jb3JyZWN0QWFndWlkKSkpKTsKIH0KIAogVEVTVChDVEFQ
UmVzcG9uc2VUZXN0LCBUZXN0U2VyaWFsaXplR2V0SW5mb1Jlc3BvbnNlKQogewotICAgIEF1dGhl
bnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UgcmVzcG9uc2UoeyBQcm90b2NvbFZlcnNpb246OmtDdGFw
LCBQcm90b2NvbFZlcnNpb246OmtVMmYgfSwgY29udmVydFRvVmVjdG9yKGtUZXN0RGV2aWNlQWFn
dWlkLCBzaXplb2Yoa1Rlc3REZXZpY2VBYWd1aWQpKSk7CisgICAgQXV0aGVudGljYXRvckdldElu
Zm9SZXNwb25zZSByZXNwb25zZSh7IFByb3RvY29sVmVyc2lvbjo6a0N0YXAsIFByb3RvY29sVmVy
c2lvbjo6a1UyZiB9LCBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihrVGVzdERldmljZUFhZ3VpZCwgc2l6
ZW9mKGtUZXN0RGV2aWNlQWFndWlkKSkpOwogICAgIHJlc3BvbnNlLnNldEV4dGVuc2lvbnMoeyAi
dXZtIiwgImhtYWMtc2VjcmV0IiB9KTsKICAgICBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9u
cyBvcHRpb25zOwogICAgIG9wdGlvbnMuc2V0U3VwcG9ydHNSZXNpZGVudEtleSh0cnVlKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEu
aCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaAppbmRl
eCA2MGQzN2Y1YTdhOWMwNDY4ZjE5MDk0YjE3OWE2Nzk0MGY3YzQ4ZDFkLi4zOGUwM2M4ODZiNTk2
OWFjYWRlYThkM2U1MDE3MGJjZTI2ZDA3ZDhjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCkBAIC00MiwxMCArNDIsMzAgQEAgbmFtZXNw
YWNlIFRlc3REYXRhIHsKIGNvbnN0ZXhwciB1aW50OF90IGtDbGllbnREYXRhSGFzaFtdID0gewog
ICAgIDB4NjgsIDB4NzEsIDB4MzQsIDB4OTYsIDB4ODIsIDB4MjIsIDB4ZWMsIDB4MTcsIDB4MjAs
IDB4MmUsIDB4NDIsCiAgICAgMHg1MCwgMHg1ZiwgMHg4ZSwgMHhkMiwgMHhiMSwgMHg2YSwgMHhl
MiwgMHgyZiwgMHgxNiwgMHhiYiwgMHgwNSwKLSAgICAweGI4LCAweDhjLCAweDI1LCAweGRiLCAw
eDllLCAweDYwLCAweDI2LCAweDQ1LCAweGYxLCAweDQxfTsKKyAgICAweGI4LCAweDhjLCAweDI1
LCAweGRiLCAweDllLCAweDYwLCAweDI2LCAweDQ1LCAweGYxLCAweDQxCit9OwogCiBjb25zdGV4
cHIgdWludDhfdCBrVXNlcklkW10gPSB7MHgxMCwgMHg5OCwgMHgyMywgMHg3MiwgMHgzNSwgMHg0
MCwgMHg5OCwgMHg3Mn07CiAKK2NvbnN0ZXhwciBjaGFyIGtSZWx5aW5nUGFydHlJZFtdID0gImFj
bWUuY29tIjsKKworY29uc3RleHByIHVpbnQ4X3Qga1UyZlJlZ2lzdGVyQ29tbWFuZEFwZHVbXSA9
IHsKKyAgICAvLyBDTEEsIElOUywgUDEsIFAyIEFQRFUgaW5zdHJ1Y3Rpb25zCisgICAgMHgwMCwg
MHgwMSwgMHgwMCwgMHgwMCwKKyAgICAvLyBEYXRhIGxlbmd0aCBpbiAzIGJ5dGVzIGluIGJpZyBl
bmRpYW4gb3JkZXIuCisgICAgMHgwMCwgMHgwMCwgMHg0MCwKKyAgICAvLyBDaGFsbGVuZ2UgcGFy
YW1ldGVyIC0tIHNlZSBrQ2xpZW50RGF0YUhhc2gKKyAgICAweDY4LCAweDcxLCAweDM0LCAweDk2
LCAweDgyLCAweDIyLCAweGVjLCAweDE3LCAweDIwLCAweDJlLCAweDQyLAorICAgIDB4NTAsIDB4
NWYsIDB4OGUsIDB4ZDIsIDB4YjEsIDB4NmEsIDB4ZTIsIDB4MmYsIDB4MTYsIDB4YmIsIDB4MDUs
CisgICAgMHhiOCwgMHg4YywgMHgyNSwgMHhkYiwgMHg5ZSwgMHg2MCwgMHgyNiwgMHg0NSwgMHhm
MSwgMHg0MSwKKyAgICAvLyBBcHBsaWNhdGlvbiBwYXJhbWV0ZXIKKyAgICAweDExLCAweDk0LCAw
eDIyLCAweDhELCAweEE4LCAweEZELCAweEJELCAweEVFLCAweEZELCAweDI2LCAweDFCLCAweEQ3
LAorICAgIDB4QjYsIDB4NTksIDB4NUMsIDB4RkQsIDB4NzAsIDB4QTUsIDB4MEQsIDB4NzAsIDB4
QzYsIDB4NDAsIDB4N0IsIDB4Q0YsCisgICAgMHgwMSwgMHgzRCwgMHhFOSwgMHg2RCwgMHg0RSwg
MHhGQiwgMHgxNywgMHhERSwKKyAgICAvLyBNYXggcmVzcG9uc2UgbGVuZ3RoCisgICAgMHgwMCwg
MHgwMCwKK307CisKIC8vIFNhbXBsZSBVMkYgc2lnbiByZXF1ZXN0IHBhcmFtZXRlcnMgdXNlZCBp
biBleGFtcGxlIDcgb2YgdGhlIENUQVAgc3BlYy4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9y
Zy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRv
ci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjdXNpbmctdGhlLWN0YXAyLWF1dGhlbnRp
Y2F0b3JtYWtlY3JlZGVudGlhbC1jb21tYW5kLXdpdGgtY3RhcDEtdTJmLWF1dGhlbnRpY2F0b3Jz
CiBjb25zdGV4cHIgdWludDhfdCBrVTJmU2lnbktleUhhbmRsZVtdID0gewpAQCAtNTcsOCArNzcs
MTY5IEBAIGNvbnN0ZXhwciB1aW50OF90IGtVMmZTaWduS2V5SGFuZGxlW10gPSB7CiAgICAgMHhD
QywgMHhENCwgMHgxNSwgMHhDRCwgMHgwOCwgMHhGRSwgMHg0MiwgMHgwMCwgMHgzOCwKIH07CiAK
Ky8vIFNpZ25lZCBzaWduYXR1cmUgb2YgYWJvdmUgfGtVMmZTaWduS2V5SGFuZGxlfC4KK2NvbnN0
ZXhwciB1aW50OF90IGtVMmZTaWduYXR1cmVbXSA9IHsKKyAgICAweDMwLCAweDQ0LCAweDAyLCAw
eDIwLCAweDdCLCAweERFLCAweDBBLCAweDUyLCAweEFDLCAweDFGLCAweDRDLCAweDhCLAorICAg
IDB4MjcsIDB4RTAsIDB4MDMsIDB4QTMsIDB4NzAsIDB4Q0QsIDB4NjYsIDB4QTQsIDB4QzcsIDB4
MTEsIDB4OEQsIDB4RDIsCisgICAgMHgyRCwgMHg1NCwgMHg0NywgMHg4MywgMHg1RiwgMHg0NSwg
MHhCOSwgMHg5QywgMHg2OCwgMHg0MiwgMHgzRiwgMHhGNywKKyAgICAweDAyLCAweDIwLCAweDND
LCAweDUxLCAweDdCLCAweDQ3LCAweDg3LCAweDdGLCAweDg1LCAweDc4LCAweDJELCAweEUxLAor
ICAgIDB4MDAsIDB4ODYsIDB4QTcsIDB4ODMsIDB4RDEsIDB4RTcsIDB4REYsIDB4NEUsIDB4MzYs
IDB4MzksIDB4RTcsIDB4NzEsCisgICAgMHhGNSwgMHhGNiwgMHhBRiwgMHhBMywgMHg1QSwgMHhB
RCwgMHg1MywgMHg3MywgMHg4NSwgMHg4RSwKK307CisKK2NvbnN0ZXhwciB1aW50OF90IGtVMmZT
aWduQ29tbWFuZEFwZHVbXSA9IHsKKyAgICAvLyBDTEEsIElOUywgUDEsIFAyIEFQRFUgaW5zdHJ1
Y3Rpb24gcGFyYW1ldGVycworICAgIDB4MDAsIDB4MDIsIDB4MDMsIDB4MDAsCisgICAgLy8gRGF0
YSBMZW5ndGggKDMgYnl0ZXMgaW4gYmlnIGVuZGlhbiBvcmRlcikKKyAgICAweDAwLCAweDAwLCAw
eDgxLAorICAgIC8vIENoYWxsZW5nZSBwYXJhbWV0ZXIgLS0gc2VlIGtDbGllbnREYXRhSGFzaAor
ICAgIDB4NjgsIDB4NzEsIDB4MzQsIDB4OTYsIDB4ODIsIDB4MjIsIDB4ZWMsIDB4MTcsIDB4MjAs
IDB4MmUsIDB4NDIsCisgICAgMHg1MCwgMHg1ZiwgMHg4ZSwgMHhkMiwgMHhiMSwgMHg2YSwgMHhl
MiwgMHgyZiwgMHgxNiwgMHhiYiwgMHgwNSwKKyAgICAweGI4LCAweDhjLCAweDI1LCAweGRiLCAw
eDllLCAweDYwLCAweDI2LCAweDQ1LCAweGYxLCAweDQxLAorICAgIC8vIEFwcGxpY2F0aW9uIHBh
cmFtZXRlcgorICAgIDB4MTEsIDB4OTQsIDB4MjIsIDB4OEQsIDB4QTgsIDB4RkQsIDB4QkQsIDB4
RUUsIDB4RkQsIDB4MjYsIDB4MUIsIDB4RDcsCisgICAgMHhCNiwgMHg1OSwgMHg1QywgMHhGRCwg
MHg3MCwgMHhBNSwgMHgwRCwgMHg3MCwgMHhDNiwgMHg0MCwgMHg3QiwgMHhDRiwKKyAgICAweDAx
LCAweDNELCAweEU5LCAweDZELCAweDRFLCAweEZCLCAweDE3LCAweERFLAorICAgIC8vIEtleSBo
YW5kbGUgbGVuZ3RoCisgICAgMHg0MCwKKyAgICAvLyBLZXkgaGFuZGxlCisgICAgMHgzRSwgMHhC
RCwgMHg4OSwgMHhCRiwgMHg3NywgMHhFQywgMHg1MCwgMHg5NywgMHg1NSwgMHhFRSwgMHg5Qywg
MHgyNiwKKyAgICAweDM1LCAweEVGLCAweEFBLCAweEFDLCAweDdCLCAweDJCLCAweDlDLCAweDVD
LCAweEVGLCAweDE3LCAweDM2LCAweEMzLAorICAgIDB4NzEsIDB4N0QsIDB4QTQsIDB4ODUsIDB4
MzQsIDB4QzgsIDB4QzYsIDB4QjYsIDB4NTQsIDB4RDcsIDB4RkYsIDB4OTQsCisgICAgMHg1Riwg
MHg1MCwgMHhCNSwgMHhDQywgMHg0RSwgMHg3OCwgMHgwNSwgMHg1QiwgMHhERCwgMHgzOSwgMHg2
QiwgMHg2NCwKKyAgICAweEY3LCAweDhELCAweEEyLCAweEM1LCAweEY5LCAweDYyLCAweDAwLCAw
eENDLCAweEQ0LCAweDE1LCAweENELCAweDA4LAorICAgIDB4RkUsIDB4NDIsIDB4MDAsIDB4Mzgs
CisgICAgLy8gTWF4IHJlc3BvbnNlIGxlbmd0aAorICAgIDB4MDAsIDB4MDAsCit9OworCitjb25z
dGV4cHIgdWludDhfdCBrVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmRBcGR1W10gPSB7CisgICAgLy8g
Q0xBLCBJTlMsIFAxLCBQMiBBUERVIGluc3RydWN0aW9uIHBhcmFtZXRlcnMKKyAgICAweDAwLCAw
eDAyLCAweDA3LCAweDAwLAorICAgIC8vIERhdGEgTGVuZ3RoICgzIGJ5dGVzIGluIGJpZyBlbmRp
YW4gb3JkZXIpLgorICAgIDB4MDAsIDB4MDAsIDB4ODEsCisgICAgLy8gQ2hhbGxlbmdlIHBhcmFt
ZXRlciAtLSBzZWUga0NsaWVudERhdGFIYXNoCisgICAgMHg2OCwgMHg3MSwgMHgzNCwgMHg5Niwg
MHg4MiwgMHgyMiwgMHhlYywgMHgxNywgMHgyMCwgMHgyZSwgMHg0MiwKKyAgICAweDUwLCAweDVm
LCAweDhlLCAweGQyLCAweGIxLCAweDZhLCAweGUyLCAweDJmLCAweDE2LCAweGJiLCAweDA1LAor
ICAgIDB4YjgsIDB4OGMsIDB4MjUsIDB4ZGIsIDB4OWUsIDB4NjAsIDB4MjYsIDB4NDUsIDB4ZjEs
IDB4NDEsCisgICAgLy8gQXBwbGljYXRpb24gcGFyYW1ldGVyCisgICAgMHgxMSwgMHg5NCwgMHgy
MiwgMHg4RCwgMHhBOCwgMHhGRCwgMHhCRCwgMHhFRSwgMHhGRCwgMHgyNiwgMHgxQiwgMHhENywK
KyAgICAweEI2LCAweDU5LCAweDVDLCAweEZELCAweDcwLCAweEE1LCAweDBELCAweDcwLCAweEM2
LCAweDQwLCAweDdCLCAweENGLAorICAgIDB4MDEsIDB4M0QsIDB4RTksIDB4NkQsIDB4NEUsIDB4
RkIsIDB4MTcsIDB4REUsCisgICAgLy8gS2V5IGhhbmRsZSBsZW5ndGgKKyAgICAweDQwLAorICAg
IC8vIEtleSBoYW5kbGUKKyAgICAweDNFLCAweEJELCAweDg5LCAweEJGLCAweDc3LCAweEVDLCAw
eDUwLCAweDk3LCAweDU1LCAweEVFLCAweDlDLCAweDI2LAorICAgIDB4MzUsIDB4RUYsIDB4QUEs
IDB4QUMsIDB4N0IsIDB4MkIsIDB4OUMsIDB4NUMsIDB4RUYsIDB4MTcsIDB4MzYsIDB4QzMsCisg
ICAgMHg3MSwgMHg3RCwgMHhBNCwgMHg4NSwgMHgzNCwgMHhDOCwgMHhDNiwgMHhCNiwgMHg1NCwg
MHhENywgMHhGRiwgMHg5NCwKKyAgICAweDVGLCAweDUwLCAweEI1LCAweENDLCAweDRFLCAweDc4
LCAweDA1LCAweDVCLCAweERELCAweDM5LCAweDZCLCAweDY0LAorICAgIDB4RjcsIDB4OEQsIDB4
QTIsIDB4QzUsIDB4RjksIDB4NjIsIDB4MDAsIDB4Q0MsIDB4RDQsIDB4MTUsIDB4Q0QsIDB4MDgs
CisgICAgMHhGRSwgMHg0MiwgMHgwMCwgMHgzOCwKKyAgICAvLyBNYXggcmVzcG9uc2UgbGVuZ3Ro
CisgICAgMHgwMCwgMHgwMCwKK307CisKK2NvbnN0ZXhwciB1aW50OF90IGtVMmZGYWtlUmVnaXN0
ZXJDb21tYW5kW10gPSB7CisgICAgLy8gQ0xBLCBJTlMsIFAxLCBQMiBBUERVIGluc3RydWN0aW9u
cworICAgIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsCisgICAgLy8gRGF0YSBsZW5ndGggaW4gMyBi
eXRlcyBpbiBiaWcgZW5kaWFuIG9yZGVyLgorICAgIDB4MDAsIDB4MDAsIDB4NDAsCisgICAgLy8g
Qm9ndXMgY2hhbGxlbmdlIHBhcmFtZXRlcgorICAgIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4
NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsCisgICAgMHg0Miwg
MHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0
MiwgMHg0MiwKKyAgICAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAw
eDQyLAorICAgIC8vIEJvZ3VzIGFwcGxpY2F0aW9uIHBhcmFtZXRlcgorICAgIDB4NDEsIDB4NDEs
IDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4
NDEsCisgICAgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwg
MHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwKKyAgICAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQx
LCAweDQxLCAweDQxLCAweDQxLAorICAgIC8vIE1heGltdW0gcmVzcG9uc2UgbGVuZ3RoCisgICAg
MHgwMCwgMHgwMCwKK307CisKIC8vIFUyRiByZXNwb25zZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy8vIFUyRiByZXNw
b25zZSBibG9iIHByb2R1Y2VkIGJ5IGEgVTJGIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IHVzZWQgaW4g
ZXhhbXBsZSA2CisvLyBvZiB0aGUgQ1RBUCBzcGVjLgorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uu
b3JnL3NwZWNzL2ZpZG8tdjIuMC1yZC0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNh
dG9yLXByb3RvY29sLXYyLjAtcmQtMjAxNzA5MjcuaHRtbAorY29uc3RleHByIHVpbnQ4X3Qga1Rl
c3RVMmZSZWdpc3RlclJlc3BvbnNlW10gPSB7CisgICAgLy8gUmVzZXJ2ZWQgYnl0ZQorICAgIDB4
MDUsCisgICAgLy8gVXNlciBwdWJsaWMga2V5CisgICAgMHgwNCwgMHhFOCwgMHg3NiwgMHgyNSwg
MHg4OSwgMHg2RSwgMHhFNCwgMHhFNCwgMHg2RCwgMHhDMCwgMHgzMiwgMHg3NiwKKyAgICAweDZF
LCAweDgwLCAweDg3LCAweDk2LCAweDJGLCAweDM2LCAweERGLCAweDlELCAweEZFLCAweDhCLCAw
eDU2LCAweDdGLAorICAgIDB4MzcsIDB4NjMsIDB4MDEsIDB4NUIsIDB4MTksIDB4OTAsIDB4QTYs
IDB4MEUsIDB4MTQsIDB4MjcsIDB4REUsIDB4NjEsCisgICAgMHgyRCwgMHg2NiwgMHg0MSwgMHg4
QiwgMHhEQSwgMHgxOSwgMHg1MCwgMHg1OCwgMHgxRSwgMHhCQywgMHg1QywgMHg4QywKKyAgICAw
eDFELCAweEFELCAweDcxLCAweDBDLCAweEIxLCAweDRDLCAweDIyLCAweEY4LCAweEM5LCAweDcw
LCAweDQ1LCAweEY0LAorICAgIDB4NjEsIDB4MkYsIDB4QjIsIDB4MEMsIDB4OTEsCisgICAgLy8g
S2V5IGhhbmRsZSBsZW5ndGgKKyAgICAweDQwLAorICAgIC8vIEtleSBoYW5kbGUKKyAgICAweDNF
LCAweEJELCAweDg5LCAweEJGLCAweDc3LCAweEVDLCAweDUwLCAweDk3LCAweDU1LCAweEVFLCAw
eDlDLCAweDI2LAorICAgIDB4MzUsIDB4RUYsIDB4QUEsIDB4QUMsIDB4N0IsIDB4MkIsIDB4OUMs
IDB4NUMsIDB4RUYsIDB4MTcsIDB4MzYsIDB4QzMsCisgICAgMHg3MSwgMHg3RCwgMHhBNCwgMHg4
NSwgMHgzNCwgMHhDOCwgMHhDNiwgMHhCNiwgMHg1NCwgMHhENywgMHhGRiwgMHg5NCwKKyAgICAw
eDVGLCAweDUwLCAweEI1LCAweENDLCAweDRFLCAweDc4LCAweDA1LCAweDVCLCAweERELCAweDM5
LCAweDZCLCAweDY0LAorICAgIDB4RjcsIDB4OEQsIDB4QTIsIDB4QzUsIDB4RjksIDB4NjIsIDB4
MDAsIDB4Q0MsIDB4RDQsIDB4MTUsIDB4Q0QsIDB4MDgsCisgICAgMHhGRSwgMHg0MiwgMHgwMCwg
MHgzOCwKKyAgICAvLyBYLjUwOSBDZXJ0aWZpY2F0ZQorICAgIDB4MzAsIDB4ODIsIDB4MDIsIDB4
NEEsIDB4MzAsIDB4ODIsIDB4MDEsIDB4MzIsIDB4QTAsIDB4MDMsCisgICAgMHgwMiwgMHgwMSwg
MHgwMiwgMHgwMiwgMHgwNCwgMHgwNCwgMHg2QywgMHg4OCwgMHgyMiwgMHgzMCwgMHgwRCwgMHgw
NiwKKyAgICAweDA5LCAweDJBLCAweDg2LCAweDQ4LCAweDg2LCAweEY3LCAweDBELCAweDAxLCAw
eDAxLCAweDBCLCAweDA1LCAweDAwLAorICAgIDB4MzAsIDB4MkUsIDB4MzEsIDB4MkMsIDB4MzAs
IDB4MkEsIDB4MDYsIDB4MDMsIDB4NTUsIDB4MDQsIDB4MDMsIDB4MTMsCisgICAgMHgyMywgMHg1
OSwgMHg3NSwgMHg2MiwgMHg2OSwgMHg2MywgMHg2RiwgMHgyMCwgMHg1NSwgMHgzMiwgMHg0Niwg
MHgyMCwKKyAgICAweDUyLCAweDZGLCAweDZGLCAweDc0LCAweDIwLCAweDQzLCAweDQxLCAweDIw
LCAweDUzLCAweDY1LCAweDcyLCAweDY5LAorICAgIDB4NjEsIDB4NkMsIDB4MjAsIDB4MzQsIDB4
MzUsIDB4MzcsIDB4MzIsIDB4MzAsIDB4MzAsIDB4MzYsIDB4MzMsIDB4MzEsCisgICAgMHgzMCwg
MHgyMCwgMHgxNywgMHgwRCwgMHgzMSwgMHgzNCwgMHgzMCwgMHgzOCwgMHgzMCwgMHgzMSwgMHgz
MCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDVBLCAweDE4LCAweDBGLCAw
eDMyLCAweDMwLCAweDM1LCAweDMwLCAweDMwLAorICAgIDB4MzksIDB4MzAsIDB4MzQsIDB4MzAs
IDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4NUEsIDB4MzAsIDB4MkMsCisgICAgMHgz
MSwgMHgyQSwgMHgzMCwgMHgyOCwgMHgwNiwgMHgwMywgMHg1NSwgMHgwNCwgMHgwMywgMHgwQywg
MHgyMSwgMHg1OSwKKyAgICAweDc1LCAweDYyLCAweDY5LCAweDYzLCAweDZGLCAweDIwLCAweDU1
LCAweDMyLCAweDQ2LCAweDIwLCAweDQ1LCAweDQ1LAorICAgIDB4MjAsIDB4NTMsIDB4NjUsIDB4
NzIsIDB4NjksIDB4NjEsIDB4NkMsIDB4MjAsIDB4MzIsIDB4MzQsIDB4MzksIDB4MzEsCisgICAg
MHgzOCwgMHgzMiwgMHgzMywgMHgzMiwgMHgzNCwgMHgzNywgMHgzNywgMHgzMCwgMHgzMCwgMHg1
OSwgMHgzMCwgMHgxMywKKyAgICAweDA2LCAweDA3LCAweDJBLCAweDg2LCAweDQ4LCAweENFLCAw
eDNELCAweDAyLCAweDAxLCAweDA2LCAweDA4LCAweDJBLAorICAgIDB4ODYsIDB4NDgsIDB4Q0Us
IDB4M0QsIDB4MDMsIDB4MDEsIDB4MDcsIDB4MDMsIDB4NDIsIDB4MDAsIDB4MDQsIDB4M0MsCisg
ICAgMHhDQSwgMHhCOSwgMHgyQywgMHhDQiwgMHg5NywgMHgyOCwgMHg3RSwgMHhFOCwgMHhFNiwg
MHgzOSwgMHg0MywgMHg3RSwKKyAgICAweDIxLCAweEZDLCAweEQ2LCAweEI2LCAweEYxLCAweDY1
LCAweEIyLCAweEQ1LCAweEEzLCAweEYzLCAweERCLCAweDEzLAorICAgIDB4MUQsIDB4MzEsIDB4
QzEsIDB4NkIsIDB4NzQsIDB4MkIsIDB4QjQsIDB4NzYsIDB4RDgsIDB4RDEsIDB4RTksIDB4OTAs
CisgICAgMHg4MCwgMHhFQiwgMHg1NCwgMHg2QywgMHg5QiwgMHhCRCwgMHhGNSwgMHg1NiwgMHhF
NiwgMHgyMSwgMHgwRiwgMHhENCwKKyAgICAweDI3LCAweDg1LCAweDg5LCAweDlFLCAweDc4LCAw
eENDLCAweDU4LCAweDlFLCAweEJFLCAweDMxLCAweDBGLCAweDZDLAorICAgIDB4REIsIDB4OUYs
IDB4RjQsIDB4QTMsIDB4M0IsIDB4MzAsIDB4MzksIDB4MzAsIDB4MjIsIDB4MDYsIDB4MDksIDB4
MkIsCisgICAgMHgwNiwgMHgwMSwgMHgwNCwgMHgwMSwgMHg4MiwgMHhDNCwgMHgwQSwgMHgwMiwg
MHgwNCwgMHgxNSwgMHgzMSwgMHgyRSwKKyAgICAweDMzLCAweDJFLCAweDM2LCAweDJFLCAweDMx
LCAweDJFLCAweDM0LCAweDJFLCAweDMxLCAweDJFLCAweDM0LCAweDMxLAorICAgIDB4MzQsIDB4
MzgsIDB4MzIsIDB4MkUsIDB4MzEsIDB4MkUsIDB4MzIsIDB4MzAsIDB4MTMsIDB4MDYsIDB4MEIs
IDB4MkIsCisgICAgMHgwNiwgMHgwMSwgMHgwNCwgMHgwMSwgMHg4MiwgMHhFNSwgMHgxQywgMHgw
MiwgMHgwMSwgMHgwMSwgMHgwNCwgMHgwNCwKKyAgICAweDAzLCAweDAyLCAweDA0LCAweDMwLCAw
eDMwLCAweDBELCAweDA2LCAweDA5LCAweDJBLCAweDg2LCAweDQ4LCAweDg2LAorICAgIDB4Rjcs
IDB4MEQsIDB4MDEsIDB4MDEsIDB4MEIsIDB4MDUsIDB4MDAsIDB4MDMsIDB4ODIsIDB4MDEsIDB4
MDEsIDB4MDAsCisgICAgMHg5RiwgMHg5QiwgMHgwNSwgMHgyMiwgMHg0OCwgMHhCQywgMHg0Qywg
MHhGNCwgMHgyQywgMHhDNSwgMHg5OSwgMHgxRiwKKyAgICAweENBLCAweEFCLCAweEFDLCAweDlC
LCAweDY1LCAweDFCLCAweEJFLCAweDVCLCAweERDLCAweERDLCAweDhFLCAweEYwLAorICAgIDB4
QUQsIDB4MkMsIDB4MUMsIDB4MUYsIDB4RkIsIDB4MzYsIDB4RDEsIDB4ODcsIDB4MTUsIDB4RDQs
IDB4MkUsIDB4NzgsCisgICAgMHhCMiwgMHg0OSwgMHgyMiwgMHg0RiwgMHg5MiwgMHhDNywgMHhF
NiwgMHhFNywgMHhBMCwgMHg1QywgMHg0OSwgMHhGMCwKKyAgICAweEU3LCAweEU0LCAweEM4LCAw
eDgxLCAweEJGLCAweDJFLCAweDk0LCAweEY0LCAweDVFLCAweDRBLCAweDIxLCAweDgzLAorICAg
IDB4M0QsIDB4NzQsIDB4NTYsIDB4ODUsIDB4MUQsIDB4MEYsIDB4NkMsIDB4MTQsIDB4NUEsIDB4
MjksIDB4NTQsIDB4MEMsCisgICAgMHg4NywgMHg0RiwgMHgzMCwgMHg5MiwgMHhDOSwgMHgzNCwg
MHhCNCwgMHgzRCwgMHgyMiwgMHgyQiwgMHg4OSwgMHg2MiwKKyAgICAweEMwLCAweEY0LCAweDEw
LCAweENFLCAweEYxLCAweERCLCAweDc1LCAweDg5LCAweDJBLCAweEYxLCAweDE2LCAweEI0LAor
ICAgIDB4NEEsIDB4OTYsIDB4RjUsIDB4RDMsIDB4NUEsIDB4REUsIDB4QTMsIDB4ODIsIDB4MkYs
IDB4QzcsIDB4MTQsIDB4NkYsCisgICAgMHg2MCwgMHgwNCwgMHgzOCwgMHg1QiwgMHhDQiwgMHg2
OSwgMHhCNiwgMHg1QywgMHg5OSwgMHhFNywgMHhFQiwgMHg2OSwKKyAgICAweDE5LCAweDc4LCAw
eDY3LCAweDAzLCAweEMwLCAweEQ4LCAweENELCAweDQxLCAweEU4LCAweEY3LCAweDVDLCAweENB
LAorICAgIDB4NDQsIDB4QUEsIDB4OEEsIDB4QjcsIDB4MjUsIDB4QUQsIDB4OEUsIDB4NzksIDB4
OUYsIDB4RjMsIDB4QTgsIDB4NjksCisgICAgMHg2QSwgMHg2RiwgMHgxQiwgMHgyNiwgMHg1Niwg
MHhFNiwgMHgzMSwgMHhCMSwgMHhFNCwgMHgwMSwgMHg4MywgMHhDMCwKKyAgICAweDhGLCAweERB
LCAweDUzLCAweEZBLCAweDRBLCAweDhGLCAweDg1LCAweEEwLCAweDU2LCAweDkzLCAweDk0LCAw
eDRBLAorICAgIDB4RTEsIDB4NzksIDB4QTEsIDB4MzMsIDB4OUQsIDB4MDAsIDB4MkQsIDB4MTUs
IDB4Q0EsIDB4QkQsIDB4ODEsIDB4MDAsCisgICAgMHg5MCwgMHhFQywgMHg3MiwgMHgyRSwgMHhG
NSwgMHhERSwgMHhGOSwgMHg5NiwgMHg1QSwgMHgzNywgMHgxRCwgMHg0MSwKKyAgICAweDVELCAw
eDYyLCAweDRCLCAweDY4LCAweEEyLCAweDcwLCAweDdDLCAweEFELCAweDk3LCAweEJDLCAweERE
LCAweDE3LAorICAgIDB4ODUsIDB4QUYsIDB4OTcsIDB4RTIsIDB4NTgsIDB4RjMsIDB4M0QsIDB4
RjUsIDB4NkEsIDB4MDMsIDB4MUEsIDB4QTAsCisgICAgMHgzNSwgMHg2RCwgMHg4RSwgMHg4RCwg
MHg1RSwgMHhCQywgMHhBRCwgMHhDNywgMHg0RSwgMHgwNywgMHgxNiwgMHgzNiwKKyAgICAweEM2
LCAweEIxLCAweDEwLCAweEFDLCAweEU1LCAweENDLCAweDlCLCAweDkwLCAweERGLCAweEVBLCAw
eENBLCAweEU2LAorICAgIDB4NDAsIDB4RkYsIDB4MUIsIDB4QjAsIDB4RjEsIDB4RkUsIDB4NUQs
IDB4QjQsIDB4RUYsIDB4RjcsIDB4QTksIDB4NUYsCisgICAgMHgwNiwgMHgwNywgMHgzMywgMHhG
NSwKKyAgICAvLyBTaWduYXR1cmUKKyAgICAweDMwLCAweDQ1LCAweDAyLCAweDIwLCAweDMyLCAw
eDQ3LCAweDc5LCAweEM2LCAweDhGLCAweDMzLCAweDgwLCAweDI4LAorICAgIDB4OEEsIDB4MTEs
IDB4OTcsIDB4QjYsIDB4MDksIDB4NUYsIDB4N0EsIDB4NkUsIDB4QjksIDB4QjEsIDB4QjEsIDB4
QzEsCisgICAgMHgyNywgMHhGNiwgMHg2QSwgMHhFMSwgMHgyQSwgMHg5OSwgMHhGRSwgMHg4NSwg
MHgzMiwgMHhFQywgMHgyMywgMHhCOSwKKyAgICAweDAyLCAweDIxLCAweDAwLCAweEUzLCAweDk1
LCAweDE2LCAweEFDLCAweDRELCAweDYxLCAweEVFLCAweDY0LCAweDA0LAorICAgIDB4NEQsIDB4
NTAsIDB4QjQsIDB4MTUsIDB4QTYsIDB4QTQsIDB4RDQsIDB4RDgsIDB4NEIsIDB4QTYsIDB4RDgs
IDB4OTUsCisgICAgMHhDQiwgMHg1QSwgMHhCNywgMHhBMSwgMHhBQSwgMHg3RCwgMHgwOCwgMHgx
RCwgMHhFMywgMHg0MSwgMHhGQSwKK307CisKIC8vIEVDIHB1YmxpYyBrZXkgZW5jb2RlZCBpbiBD
T1NFX0tleSBmb3JtYXQgZXh0cmFjdGVkIGZyb20gYWJvdmUKIC8vIHxrVGVzdFUyZlJlZ2lzdGVy
UmVzcG9uc2V8LgogY29uc3RleHByIHVpbnQ4X3Qga1Rlc3RFQ1B1YmxpY0tleUNPU0VbXSA9IHsK
QEAgLTIwNCw2ICszODUsMTkgQEAgY29uc3RleHByIHVpbnQ4X3Qga1Rlc3RVMmZTaWduUmVzcG9u
c2VbXSA9IHsKICAgICAweEY1LCAweEY2LCAweEFGLCAweEEzLCAweDVBLCAweEFELCAweDUzLCAw
eDczLCAweDg1LCAweDhFLAogfTsKIAorLy8gVGhlIGF1dGhlbnRpY2F0b3IgZGF0YSBmb3Igc2ln
biByZXNwb25zZXMgZXh0cmFjdGVkIGZyb20gYWJvdmUKKy8vIHxrVGVzdFUyZlNpZ25SZXNwb25z
ZXwuCitjb25zdGV4cHIgdWludDhfdCBrVGVzdFNpZ25BdXRoZW50aWNhdG9yRGF0YVtdID0gewor
ICAgIC8vIFNIQTI1NiBoYXNoIG9mIGtUZXN0UmVseWluZ1BhcnR5SWQKKyAgICAweDExLCAweDk0
LCAweDIyLCAweDhELCAweEE4LCAweEZELCAweEJELCAweEVFLCAweEZELCAweDI2LCAweDFCLCAw
eEQ3LAorICAgIDB4QjYsIDB4NTksIDB4NUMsIDB4RkQsIDB4NzAsIDB4QTUsIDB4MEQsIDB4NzAs
IDB4QzYsIDB4NDAsIDB4N0IsIDB4Q0YsCisgICAgMHgwMSwgMHgzRCwgMHhFOSwgMHg2RCwgMHg0
RSwgMHhGQiwgMHgxNywgMHhERSwKKyAgICAvLyBGbGFncyAoVFVQIGJpdCBzZXQpCisgICAgMHgw
MSwKKyAgICAvLyBDb3VudGVyCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgzQiwKK307CisKIC8v
IENUQVAgcmVxdWVzdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBjb25zdGV4cHIgdWludDhfdCBrQ3RhcE1ha2VDcmVkZW50
aWFsUmVxdWVzdFtdID0gewogICAgIC8vIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBjb21t
YW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVTJmQ29t
bWFuZENvbnN0cnVjdG9yVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q3NDVmOWJiYzY0
YWUxZTE2NmUyMjNiNjMyYjczYjE4OTY5OTNlYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcApA
QCAtMCwwICsxLDIyNiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIENocm9taXVtIEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisj
aW5jbHVkZSAiRmlkb1Rlc3REYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKKworUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBjb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVl
c3QoKQoreworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlJwRW50aXR5
IHJwOworICAgIHJwLmlkID0gImFjbWUuY29tIjsKKyAgICBycC5uYW1lID0gImFjbWUuY29tIjsK
KworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlVzZXJFbnRpdHkgdXNl
cjsKKyAgICB1c2VyLmlkVmVjdG9yID0gY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtV
c2VySWQsIHNpemVvZihUZXN0RGF0YTo6a1VzZXJJZCkpOworICAgIHVzZXIubmFtZSA9ICJqb2hu
cHNtaXRoQGV4YW1wbGUuY29tIjsKKyAgICB1c2VyLmRpc3BsYXlOYW1lID0gIkpvaG4gUC4gU21p
dGgiOworICAgIHVzZXIuaWNvbiA9ICJodHRwczovL3BpY3MuYWNtZS5jb20vMDAvcC9hQmpqanBx
UGIucG5nIjsKKworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFt
ZXRlcnMgcGFyYW1zOworICAgIHBhcmFtcy50eXBlID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6
OlB1YmxpY0tleTsKKyAgICBwYXJhbXMuYWxnID0gQ09TRTo6RVMyNTY7CisKKyAgICBQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnM7CisgICAgb3B0aW9ucy5ycCA9IFdU
Rk1vdmUocnApOworICAgIG9wdGlvbnMudXNlciA9IFdURk1vdmUodXNlcik7CisgICAgb3B0aW9u
cy5wdWJLZXlDcmVkUGFyYW1zLmFwcGVuZChXVEZNb3ZlKHBhcmFtcykpOworCisgICAgcmV0dXJu
IG9wdGlvbnM7Cit9CisKK1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBjb25zdHJ1
Y3RHZXRBc3NlcnRpb25SZXF1ZXN0KCkKK3sKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMgb3B0aW9uczsKKyAgICBvcHRpb25zLnJwSWQgPSAiYWNtZS5jb20iOworICAgIHJl
dHVybiBvcHRpb25zOworfQorCitURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RD
b252ZXJ0Q3RhcE1ha2VDcmVkZW50aWFsVG9VMmZSZWdpc3RlcikKK3sKKyAgICBjb25zdCBhdXRv
IG1ha2VDcmVkZW50aWFsUGFyYW0gPSBjb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3QoKTsK
KworICAgIEVYUEVDVF9UUlVFKGlzQ29udmVydGlibGVUb1UyZlJlZ2lzdGVyQ29tbWFuZChtYWtl
Q3JlZGVudGlhbFBhcmFtKSk7CisKKyAgICBjb25zdCBhdXRvIHUyZlJlZ2lzdGVyQ29tbWFuZCA9
IGNvbnZlcnRUb1UyZlJlZ2lzdGVyQ29tbWFuZChjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0
YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCkpLCBt
YWtlQ3JlZGVudGlhbFBhcmFtKTsKKyAgICBBU1NFUlRfVFJVRSh1MmZSZWdpc3RlckNvbW1hbmQp
OworICAgIEVYUEVDVF9FUSgqdTJmUmVnaXN0ZXJDb21tYW5kLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihUZXN0RGF0YTo6a1UyZlJlZ2lzdGVyQ29tbWFuZEFwZHUsIHNpemVvZihUZXN0RGF0YTo6a1Uy
ZlJlZ2lzdGVyQ29tbWFuZEFwZHUpKSk7Cit9CisKK1RFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9y
VGVzdCwgVGVzdENvbnZlcnRDdGFwTWFrZUNyZWRlbnRpYWxUb1UyZkNoZWNrT25seVNpZ24pCit7
CisgICAgYXV0byBtYWtlQ3JlZGVudGlhbFBhcmFtID0gY29uc3RydWN0TWFrZUNyZWRlbnRpYWxS
ZXF1ZXN0KCk7CisgICAgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgY3JlZGVudGlhbERl
c2NyaXB0b3I7CisgICAgY3JlZGVudGlhbERlc2NyaXB0b3IudHlwZSA9IFB1YmxpY0tleUNyZWRl
bnRpYWxUeXBlOjpQdWJsaWNLZXk7CisgICAgY3JlZGVudGlhbERlc2NyaXB0b3IuaWRWZWN0b3Ig
PSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVv
ZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsKKyAgICBWZWN0b3I8UHVibGljS2V5Q3Jl
ZGVudGlhbERlc2NyaXB0b3I+IGV4Y2x1ZGVMaXN0OworICAgIGV4Y2x1ZGVMaXN0LmFwcGVuZChj
cmVkZW50aWFsRGVzY3JpcHRvcik7CisgICAgbWFrZUNyZWRlbnRpYWxQYXJhbS5leGNsdWRlQ3Jl
ZGVudGlhbHMgPSBXVEZNb3ZlKGV4Y2x1ZGVMaXN0KTsKKyAgICBFWFBFQ1RfVFJVRShpc0NvbnZl
cnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQobWFrZUNyZWRlbnRpYWxQYXJhbSkpOworCisgICAg
Y29uc3QgYXV0byB1MmZDaGVja09ubHlTaWduID0gY29udmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNv
bW1hbmQoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6
ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKSwgbWFrZUNyZWRlbnRpYWxQYXJhbSwgY3Jl
ZGVudGlhbERlc2NyaXB0b3IpOworICAgIEFTU0VSVF9UUlVFKHUyZkNoZWNrT25seVNpZ24pOwor
ICAgIEVYUEVDVF9FUSgqdTJmQ2hlY2tPbmx5U2lnbiwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVz
dERhdGE6OmtVMmZDaGVja09ubHlTaWduQ29tbWFuZEFwZHUsIHNpemVvZihUZXN0RGF0YTo6a1Uy
ZkNoZWNrT25seVNpZ25Db21tYW5kQXBkdSkpKTsKK30KKworVEVTVChVMmZDb21tYW5kQ29uc3Ry
dWN0b3JUZXN0LCBUZXN0Q29udmVydEN0YXBNYWtlQ3JlZGVudGlhbFRvVTJmQ2hlY2tPbmx5U2ln
bldpdGhJbnZhbGlkQ3JlZGVudGlhbFR5cGUpCit7CisgICAgYXV0byBtYWtlQ3JlZGVudGlhbFBh
cmFtID0gY29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0KCk7CisgICAgUHVibGljS2V5Q3Jl
ZGVudGlhbERlc2NyaXB0b3IgY3JlZGVudGlhbERlc2NyaXB0b3I7CisgICAgY3JlZGVudGlhbERl
c2NyaXB0b3IudHlwZSA9IHN0YXRpY19jYXN0PFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlPigtMSk7
CisgICAgY3JlZGVudGlhbERlc2NyaXB0b3IuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25L
ZXlIYW5kbGUpKTsKKyAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+IGV4
Y2x1ZGVMaXN0OworICAgIGV4Y2x1ZGVMaXN0LmFwcGVuZChjcmVkZW50aWFsRGVzY3JpcHRvcik7
CisgICAgbWFrZUNyZWRlbnRpYWxQYXJhbS5leGNsdWRlQ3JlZGVudGlhbHMgPSBXVEZNb3ZlKGV4
Y2x1ZGVMaXN0KTsKKyAgICBFWFBFQ1RfVFJVRShpc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNv
bW1hbmQobWFrZUNyZWRlbnRpYWxQYXJhbSkpOworCisgICAgY29uc3QgYXV0byB1MmZDaGVja09u
bHlTaWduID0gY29udmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmQoY29udmVydEJ5dGVzVG9W
ZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50
RGF0YUhhc2gpKSwgbWFrZUNyZWRlbnRpYWxQYXJhbSwgY3JlZGVudGlhbERlc2NyaXB0b3IpOwor
ICAgIEVYUEVDVF9GQUxTRSh1MmZDaGVja09ubHlTaWduKTsKK30KKworVEVTVChVMmZDb21tYW5k
Q29uc3RydWN0b3JUZXN0LCBUZXN0VTJmUmVnaXN0ZXJDcmVkZW50aWFsQWxnb3JpdGhtUmVxdWly
ZW1lbnQpCit7CisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UnBFbnRp
dHkgcnA7CisgICAgcnAuaWQgPSAiYWNtZS5jb20iOworICAgIHJwLm5hbWUgPSAiYWNtZS5jb20i
OworCisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6VXNlckVudGl0eSB1
c2VyOworICAgIHVzZXIuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6
a1VzZXJJZCwgc2l6ZW9mKFRlc3REYXRhOjprVXNlcklkKSk7CisgICAgdXNlci5uYW1lID0gImpv
aG5wc21pdGhAZXhhbXBsZS5jb20iOworICAgIHVzZXIuZGlzcGxheU5hbWUgPSAiSm9obiBQLiBT
bWl0aCI7CisgICAgdXNlci5pY29uID0gImh0dHBzOi8vcGljcy5hY21lLmNvbS8wMC9wL2FCampq
cHFQYi5wbmciOworCisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UGFy
YW1ldGVycyBwYXJhbXM7CisgICAgcGFyYW1zLnR5cGUgPSBQdWJsaWNLZXlDcmVkZW50aWFsVHlw
ZTo6UHVibGljS2V5OworICAgIHBhcmFtcy5hbGcgPSAtMjU3OworCisgICAgUHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyBtYWtlQ3JlZGVudGlhbFBhcmFtOworICAgIG1ha2VDcmVk
ZW50aWFsUGFyYW0ucnAgPSBXVEZNb3ZlKHJwKTsKKyAgICBtYWtlQ3JlZGVudGlhbFBhcmFtLnVz
ZXIgPSBXVEZNb3ZlKHVzZXIpOworICAgIG1ha2VDcmVkZW50aWFsUGFyYW0ucHViS2V5Q3JlZFBh
cmFtcy5hcHBlbmQoV1RGTW92ZShwYXJhbXMpKTsKKworICAgIEVYUEVDVF9GQUxTRShpc0NvbnZl
cnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQobWFrZUNyZWRlbnRpYWxQYXJhbSkpOworfQorCitU
RVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RVMmZSZWdpc3RlclVzZXJWZXJpZmlj
YXRpb25SZXF1aXJlbWVudCkKK3sKKyAgICBhdXRvIG1ha2VDcmVkZW50aWFsUGFyYW0gPSBjb25z
dHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3QoKTsKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgc2VsZWN0aW9uOwor
ICAgIHNlbGVjdGlvbi51c2VyVmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNhdGlvblJlcXVpcmVt
ZW50OjpSZXF1aXJlZDsKKyAgICBtYWtlQ3JlZGVudGlhbFBhcmFtLmF1dGhlbnRpY2F0b3JTZWxl
Y3Rpb24gPSBXVEZNb3ZlKHNlbGVjdGlvbik7CisKKyAgICBFWFBFQ1RfRkFMU0UoaXNDb252ZXJ0
aWJsZVRvVTJmUmVnaXN0ZXJDb21tYW5kKG1ha2VDcmVkZW50aWFsUGFyYW0pKTsKK30KKworVEVT
VChVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LCBUZXN0VTJmUmVnaXN0ZXJSZXNpZGVudEtleVJl
cXVpcmVtZW50KQoreworICAgIGF1dG8gbWFrZUNyZWRlbnRpYWxQYXJhbSA9IGNvbnN0cnVjdE1h
a2VDcmVkZW50aWFsUmVxdWVzdCgpOworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnM6OkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYSBzZWxlY3Rpb247CisgICAgc2Vs
ZWN0aW9uLnJlcXVpcmVSZXNpZGVudEtleSA9IHRydWU7CisgICAgbWFrZUNyZWRlbnRpYWxQYXJh
bS5hdXRoZW50aWNhdG9yU2VsZWN0aW9uID0gV1RGTW92ZShzZWxlY3Rpb24pOworCisgICAgRVhQ
RUNUX0ZBTFNFKGlzQ29udmVydGlibGVUb1UyZlJlZ2lzdGVyQ29tbWFuZChtYWtlQ3JlZGVudGlh
bFBhcmFtKSk7Cit9CisKK1RFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdCwgVGVzdENvbnZl
cnRDdGFwR2V0QXNzZXJ0aW9uVG9VMmZTaWduUmVxdWVzdCkKK3sKKyAgICBhdXRvIGdldEFzc2Vy
dGlvblJlcSA9IGNvbnN0cnVjdEdldEFzc2VydGlvblJlcXVlc3QoKTsKKyAgICBQdWJsaWNLZXlD
cmVkZW50aWFsRGVzY3JpcHRvciBjcmVkZW50aWFsRGVzY3JpcHRvcjsKKyAgICBjcmVkZW50aWFs
RGVzY3JpcHRvci50eXBlID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleTsKKyAg
ICBjcmVkZW50aWFsRGVzY3JpcHRvci5pZFZlY3RvciA9IGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRl
c3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhh
bmRsZSkpOworICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gYWxsb3dl
ZExpc3Q7CisgICAgYWxsb3dlZExpc3QuYXBwZW5kKFdURk1vdmUoY3JlZGVudGlhbERlc2NyaXB0
b3IpKTsKKyAgICBnZXRBc3NlcnRpb25SZXEuYWxsb3dDcmVkZW50aWFscyA9IFdURk1vdmUoYWxs
b3dlZExpc3QpOworICAgIEVYUEVDVF9UUlVFKGlzQ29udmVydGlibGVUb1UyZlNpZ25Db21tYW5k
KGdldEFzc2VydGlvblJlcSkpOworCisgICAgY29uc3QgYXV0byB1MmZTaWduQ29tbWFuZCA9IGNv
bnZlcnRUb1UyZlNpZ25Db21tYW5kKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprQ2xp
ZW50RGF0YUhhc2gsIHNpemVvZihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoKSksIGdldEFzc2Vy
dGlvblJlcSwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxl
LCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSkpOworICAgIEFTU0VSVF9UUlVF
KHUyZlNpZ25Db21tYW5kKTsKKyAgICBFWFBFQ1RfRVEoKnUyZlNpZ25Db21tYW5kLCBjb252ZXJ0
Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1UyZlNpZ25Db21tYW5kQXBkdSwgc2l6ZW9mKFRlc3RE
YXRhOjprVTJmU2lnbkNvbW1hbmRBcGR1KSkpOworfQorCitURVNUKFUyZkNvbW1hbmRDb25zdHJ1
Y3RvclRlc3QsIFRlc3RVMmZTaWduQWxsb3dMaXN0UmVxdWlyZW1lbnQpCit7CisgICAgYXV0byBn
ZXRBc3NlcnRpb25SZXEgPSBjb25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0KCk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzQ29udmVydGlibGVUb1UyZlNpZ25Db21tYW5kKGdldEFzc2VydGlvblJlcSkp
OworfQorCitURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RVMmZTaWduVXNlclZl
cmlmaWNhdGlvblJlcXVpcmVtZW50KQoreworICAgIGF1dG8gZ2V0QXNzZXJ0aW9uUmVxID0gY29u
c3RydWN0R2V0QXNzZXJ0aW9uUmVxdWVzdCgpOworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNj
cmlwdG9yIGNyZWRlbnRpYWxEZXNjcmlwdG9yOworICAgIGNyZWRlbnRpYWxEZXNjcmlwdG9yLnR5
cGUgPSBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5OworICAgIGNyZWRlbnRpYWxE
ZXNjcmlwdG9yLmlkVmVjdG9yID0gY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVMmZT
aWduS2V5SGFuZGxlLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSk7CisgICAg
VmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yPiBhbGxvd2VkTGlzdDsKKyAgICBh
bGxvd2VkTGlzdC5hcHBlbmQoV1RGTW92ZShjcmVkZW50aWFsRGVzY3JpcHRvcikpOworICAgIGdl
dEFzc2VydGlvblJlcS5hbGxvd0NyZWRlbnRpYWxzID0gV1RGTW92ZShhbGxvd2VkTGlzdCk7Cisg
ICAgZ2V0QXNzZXJ0aW9uUmVxLnVzZXJWZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uUmVx
dWlyZW1lbnQ6OlJlcXVpcmVkOworCisgICAgRVhQRUNUX0ZBTFNFKGlzQ29udmVydGlibGVUb1Uy
ZlNpZ25Db21tYW5kKGdldEFzc2VydGlvblJlcSkpOworfQorCitURVNUKFUyZkNvbW1hbmRDb25z
dHJ1Y3RvclRlc3QsIFRlc3RDcmVhdGVTaWduV2l0aEluY29ycmVjdEtleUhhbmRsZSkKK3sKKyAg
ICBhdXRvIGdldEFzc2VydGlvblJlcSA9IGNvbnN0cnVjdEdldEFzc2VydGlvblJlcXVlc3QoKTsK
KyAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciBjcmVkZW50aWFsRGVzY3JpcHRvcjsK
KyAgICBjcmVkZW50aWFsRGVzY3JpcHRvci50eXBlID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6
OlB1YmxpY0tleTsKKyAgICBjcmVkZW50aWFsRGVzY3JpcHRvci5pZFZlY3RvciA9IGNvbnZlcnRC
eXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRh
OjprVTJmU2lnbktleUhhbmRsZSkpOworICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVz
Y3JpcHRvcj4gYWxsb3dlZExpc3Q7CisgICAgYWxsb3dlZExpc3QuYXBwZW5kKFdURk1vdmUoY3Jl
ZGVudGlhbERlc2NyaXB0b3IpKTsKKyAgICBnZXRBc3NlcnRpb25SZXEuYWxsb3dDcmVkZW50aWFs
cyA9IFdURk1vdmUoYWxsb3dlZExpc3QpOworICAgIEFTU0VSVF9UUlVFKGlzQ29udmVydGlibGVU
b1UyZlNpZ25Db21tYW5kKGdldEFzc2VydGlvblJlcSkpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGtleUhhbmRsZShrTWF4S2V5SGFuZGxlTGVuZ3RoLCAweGZmKTsKKyAgICBjb25zdCBhdXRvIHZh
bGlkU2lnbkNvbW1hbmQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChjb252ZXJ0Qnl0ZXNUb1Zl
Y3RvcihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnRE
YXRhSGFzaCkpLCBnZXRBc3NlcnRpb25SZXEsIGtleUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUo
dmFsaWRTaWduQ29tbWFuZCk7CisKKyAgICBrZXlIYW5kbGUuYXBwZW5kKDB4ZmYpOworICAgIGNv
bnN0IGF1dG8gaW52YWxpZFNpZ25Db21tYW5kID0gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29u
dmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3RE
YXRhOjprQ2xpZW50RGF0YUhhc2gpKSwgZ2V0QXNzZXJ0aW9uUmVxLCBrZXlIYW5kbGUpOworICAg
IEVYUEVDVF9GQUxTRShpbnZhbGlkU2lnbkNvbW1hbmQpOworfQorCitURVNUKFUyZkNvbW1hbmRD
b25zdHJ1Y3RvclRlc3QsIFRlc3RDb25zdHJ1Y3RCb2d1c1UyZlJlZ2lzdHJhdGlvbkNvbW1hbmQp
Cit7CisgICAgRVhQRUNUX0VRKGNvbnN0cnVjdEJvZ3VzVTJmUmVnaXN0cmF0aW9uQ29tbWFuZCgp
LCBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1UyZkZha2VSZWdpc3RlckNvbW1hbmQs
IHNpemVvZihUZXN0RGF0YTo6a1UyZkZha2VSZWdpc3RlckNvbW1hbmQpKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZDk0YzQ1NThlYjQ4NTNjYmM4NzQxZGM1NThhODczYmUyOTRlZWYwNS4uMDEwMzkzOWVk
YjllMTY5NDJhNzNhOGNhOGY4NDM2ZmFjNWVlMTk0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDE5LTAxLTA0ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dlYkF1dGhOXSBJbXBvcnQgVTJGIGNvbW1hbmQvcmVzcG9uc2UgY29udmVydGVycyBmcm9tIENo
cm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTMxNTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3MDU0MDI4PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVzIEJ1ZyAxODM1MzQ6CisgICAg
ICAgIDcpIENoYW5nZSBsaXR0bGUgZW5kaWFuIGJ5dGVzIChBUk0gYW5kIHg4NiBkZWZhdWx0KSB0
byBiaWcgZW5kaWFuIGFzIHJlcXVlc3RlZCBieSB0aGUgc3BlYy4KKworICAgICAgICAqIGh0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0
cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0
aG4vcmVzb3VyY2VzL3V0aWwuanM6CisKIDIwMTgtMTItMjEgIEp1c3RpbiBNaWNoYXVkICA8anVz
dGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIENTUyB2YXJpYWJsZXMgZG9uJ3Qgd29y
ayBmb3IgY29sb3JzIGluICJib3JkZXIiIHByb3BlcnR5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
aGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKaW5kZXggOTU3YzI3NGQ1
NDRlOWRkN2FlNzNlYTIyYWUyNzc0NGU3ZTg1NWY3ZS4uNWQ5M2I4MDdhNDRjNTM3MzRhN2Y1ZDgx
MWRmNjAxMzU2MmMwNWM3YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtMjIsNyArMjIsNyBAQAogICAgICAgICBj
b25zdCBhdHRlc3RhdGlvbk9iamVjdCA9IENCT1IuZGVjb2RlKGNyZWRlbnRpYWwucmVzcG9uc2Uu
YXR0ZXN0YXRpb25PYmplY3QpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2Jq
ZWN0LmZtdCwgInBhY2tlZCIpOwogICAgICAgICAvLyBDaGVjayBhdXRoRGF0YQotICAgICAgICBj
b25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKGF0dGVzdGF0aW9uT2JqZWN0LmF1dGhEYXRh
LCBmYWxzZSk7CisgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0
YXRpb25PYmplY3QuYXV0aERhdGEpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhT
dHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDZjYzdmYjk2NzlkNTViMmRiOTA5MmUxYzhkOWU1
ZTFkMDJiNzU4MGYwYjQ4MTJjNzcwOTYyZTFlNDhmNWFkOCIpOwogICAgICAgICBhc3NlcnRfZXF1
YWxzKGF1dGhEYXRhLmZsYWdzLCA2NSk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEu
Y291bnRlciwgNzgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNz
LWhpZC5odHRwcy5odG1sCmluZGV4IDFmMTNkZWQ4Mzg0ODliYWNmMDhhNzczNDc2Mjg0ZTY0ZmNm
MjQwMTEuLjY3ZGI4MzEwMDdmN2EyYzUwNDVkNzJkYWUzZTFjZDgwMDFjYzI0ZDAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKQEAg
LTE4LDcgKzE4LDcgQEAKICAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnJlc3BvbnNl
LnVzZXJIYW5kbGUsIG51bGwpOwogCiAgICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCi0gICAgICAg
IGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlh
bC5yZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSksIGZhbHNlKTsKKyAgICAgICAgY29uc3QgYXV0
aERhdGEgPSBkZWNvZGVBdXRoRGF0YShuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJlc3BvbnNl
LmF1dGhlbnRpY2F0b3JEYXRhKSk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0
cmluZyhhdXRoRGF0YS5ycElkSGFzaCksICI0NmNjN2ZiOTY3OWQ1NWIyZGI5MDkyZTFjOGQ5ZTVl
MWQwMmI3NTgwZjBiNDgxMmM3NzA5NjJlMWU0OGY1YWQ4Iik7CiAgICAgICAgIGFzc2VydF9lcXVh
bHMoYXV0aERhdGEuZmxhZ3MsIDEpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmNv
dW50ZXIsIDgwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jl
c291cmNlcy91dGlsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2Vz
L3V0aWwuanMKaW5kZXggY2Q1OTgwZDk2Yzc2ODJmZTgzMmU2Nzc5NDg3ODEwMTc1NDczYjc2NS4u
ODNmNGI0OGFkY2YyNWI3MDA0ZTk3MDFmNDdmMDEzZjhhMDU5YWZhYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKQEAgLTEzNCw3ICsxMzQs
NyBAQCBmdW5jdGlvbiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoaGV4U3RyaW5nKQogICAgIHJldHVy
biBhcnJheUJ1ZmZlcjsKIH0KIAotZnVuY3Rpb24gZGVjb2RlQXV0aERhdGEoYXV0aERhdGFVaW50
OEFycmF5LCBsaXR0bGVFbmRpYW4gPSB0cnVlKQorZnVuY3Rpb24gZGVjb2RlQXV0aERhdGEoYXV0
aERhdGFVaW50OEFycmF5KQogewogICAgIGxldCBhdXRoRGF0YU9iamVjdCA9IHsgfTsKICAgICBs
ZXQgcG9zID0gMDsKQEAgLTE1OCwxMCArMTU4LDcgQEAgZnVuY3Rpb24gZGVjb2RlQXV0aERhdGEo
YXV0aERhdGFVaW50OEFycmF5LCBsaXR0bGVFbmRpYW4gPSB0cnVlKQogICAgIHNpemUgPSA0Owog
ICAgIGlmIChwb3MgKyBzaXplID4gYXV0aERhdGFVaW50OEFycmF5LmJ5dGVMZW5ndGgpCiAgICAg
ICAgIHJldHVybiB7IH07Ci0gICAgaWYgKGxpdHRsZUVuZGlhbikKLSAgICAgICAgYXV0aERhdGFP
YmplY3QuY291bnRlciA9IG5ldyBVaW50MzJBcnJheShhdXRoRGF0YVVpbnQ4QXJyYXkuc2xpY2Uo
cG9zLCBwb3MgKyBzaXplKSlbMF07Ci0gICAgZWxzZQotICAgICAgICBhdXRoRGF0YU9iamVjdC5j
b3VudGVyID0gKGF1dGhEYXRhVWludDhBcnJheVtwb3NdIDw8IDI0KSArIChhdXRoRGF0YVVpbnQ4
QXJyYXlbcG9zICsgMV0gPDwgMTYpICsgKGF1dGhEYXRhVWludDhBcnJheVtwb3MgKyAyXSA8PCA4
KSArIGF1dGhEYXRhVWludDhBcnJheVtwb3MgKyAzXTsKKyAgICBhdXRoRGF0YU9iamVjdC5jb3Vu
dGVyID0gKGF1dGhEYXRhVWludDhBcnJheVtwb3NdIDw8IDI0KSArIChhdXRoRGF0YVVpbnQ4QXJy
YXlbcG9zICsgMV0gPDwgMTYpICsgKGF1dGhEYXRhVWludDhBcnJheVtwb3MgKyAyXSA8PCA4KSAr
IGF1dGhEYXRhVWludDhBcnJheVtwb3MgKyAzXTsKICAgICBwb3MgPSBwb3MgKyBzaXplOwogCiAg
ICAgaWYgKHBvcyA9PSBhdXRoRGF0YVVpbnQ4QXJyYXkuYnl0ZUxlbmd0aCkKQEAgLTE3OCwxMCAr
MTc1LDcgQEAgZnVuY3Rpb24gZGVjb2RlQXV0aERhdGEoYXV0aERhdGFVaW50OEFycmF5LCBsaXR0
bGVFbmRpYW4gPSB0cnVlKQogICAgIHNpemUgPSAyOwogICAgIGlmIChwb3MgKyBzaXplID4gYXV0
aERhdGFVaW50OEFycmF5LmJ5dGVMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgaWYg
KGxpdHRsZUVuZGlhbikKLSAgICAgICAgYXV0aERhdGFPYmplY3QubCA9IG5ldyBVaW50MTZBcnJh
eShhdXRoRGF0YVVpbnQ4QXJyYXkuc2xpY2UocG9zLCBwb3MgKyBzaXplKSlbMF07Ci0gICAgZWxz
ZQotICAgICAgICBhdXRoRGF0YU9iamVjdC5sID0gKGF1dGhEYXRhVWludDhBcnJheVtwb3NdIDw8
IDgpICsgYXV0aERhdGFVaW50OEFycmF5W3BvcyArIDFdOworICAgIGF1dGhEYXRhT2JqZWN0Lmwg
PSAoYXV0aERhdGFVaW50OEFycmF5W3Bvc10gPDwgOCkgKyBhdXRoRGF0YVVpbnQ4QXJyYXlbcG9z
ICsgMV07CiAgICAgcG9zID0gcG9zICsgc2l6ZTsKIAogICAgIC8vIENyZWRlbnRpYWwgSUQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358399</attachid>
            <date>2019-01-04 16:55:04 -0800</date>
            <delta_ts>2019-01-06 16:43:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193150-20190104165503.patch</filename>
            <type>text/plain</type>
            <size>123402</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWYzOGQ3YzJkYTI1Njc1
ZGRjNzhhOGRlNzU0YjI4OTlmMzRlMzNjYi4uNjJlMmZiMTUyZDQzZTM2YjhlNTExNjVjNDA4ZDI1
YTdhMGU2MTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTAxLTA0ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBJbXBv
cnQgVTJGIGNvbW1hbmQvcmVzcG9uc2UgY29udmVydGVycyBmcm9tIENocm9taXVtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMxNTAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ3MDU0MDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wb3J0cyBDaHJvbWl1bSdzIFUyRiBjb21t
YW5kL3Jlc3BvbnNlIGNvbnZlcnRlcnM6CisgICAgICAgIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9y
Zy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRv
ci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWludGVyb3BlcmFiaWxpdHkKKyAg
ICAgICAgMS4gSXQgZGlyZWN0bHkgaW1wb3J0cyB0aGUgZm9sbG93aW5nIGZpbGVzIGFuZCBzdWl0
IHRoZW0gdG8gV2ViS2l0J3MgY29kaW5nIHN0eWxlOgorICAgICAgICBodHRwczovL2NzLmNocm9t
aXVtLm9yZy9jaHJvbWl1bS9zcmMvZGV2aWNlL2ZpZG8vdTJmX2NvbW1hbmRfY29uc3RydWN0b3Iu
Y2M/bD0xJnJjbD1kYjYyNDExMDMxN2QwMWVmYTc4Y2QzMmU3YmUxNTI0MTkwZTFiZWIwCisgICAg
ICAgIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9kZXZpY2UvZmlkby91MmZf
Y29tbWFuZF9jb25zdHJ1Y3Rvci5oP3JjbD1kYjYyNDExMDMxN2QwMWVmYTc4Y2QzMmU3YmUxNTI0
MTkwZTFiZWIwCisgICAgICAgIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9k
ZXZpY2UvZmlkby91MmZfY29tbWFuZF9jb25zdHJ1Y3Rvcl91bml0dGVzdC5jYz9yY2w9ZGI2MjQx
MTAzMTdkMDFlZmE3OGNkMzJlN2JlMTUyNDE5MGUxYmViMAorICAgICAgICAyLiBJdCBnYXRoZXJz
IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbnRvIFUyZlJlc3BvbnNlQ29udmVydGVyOgorICAgICAg
ICBBdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWxSZXNwb25zZTo6Q3JlYXRlRnJvbVUyZlJlZ2lz
dGVyUmVzcG9uc2UoKQorICAgICAgICBBdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uUmVzcG9uc2U6
OkNyZWF0ZUZyb21VMmZTaWduUmVzcG9uc2UoKQorICAgICAgICAzLiBJdCBhbHNvIHVwZGF0ZXMg
Rmlkb0NvbnN0YW50cy5oLCBGaWRvVGVzdERhdGEuaCBhbmQgQ3RhcFJlc3BvbnNlVGVzdC5jcHAg
YWNjb3JkaW5nbHkuCisKKyAgICAgICAgQmVzaWRlcyBpbXBvcnRpbmcgc3R1ZmZzIGZyb20gQ2hy
b2ltdW0sIGl0IGFsc28gZ2F0aGVycyBhIGJ1bmNoIG9mIGNvbnN0YW50cyBhbmQgaGVscGVyIGZ1
bmN0aW9ucyBpbnRvIFdlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKKyAgICAgICAgYW5kIFdl
YkF1dGhlbnRpY2F0aW9uVXRpbHMuaC4gSXQgYWxzbyBmaXhlcyBCdWcgMTgzNTM0OiAyKSBhbmQg
NykuCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDo6cHJvZHVjZUNsaWVudERhdGFKc29u
SGFzaCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0
YW50cy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0NPU0VD
b25zdGFudHMuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9u
VXRpbHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRCeXRlc1RvVmVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnByb2R1Y2VScElkSGFzaCk6CisgICAgICAgIChXZWJDb3Jl
OjplbmNvZGVFUzI1NlB1YmxpY0tleUFzQ0JPUik6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEF0
dGVzdGVkQ3JlZGVudGlhbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBdXRoRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpidWlsZEF0dGVzdGF0aW9uT2JqZWN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQ09TRUNvbnN0YW50cy5oLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHA6CisgICAg
ICAgIChmaWRvOjpnZXRDcmVkZW50aWFsSWQpOgorICAgICAgICAoZmlkbzo6cmVhZENUQVBHZXRJ
bmZvUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3Rh
bnRzLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1
Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoZmlkbzo6V2ViQ29yZTo6Y29uc3RydWN0VTJmUmVn
aXN0ZXJDb21tYW5kKToKKyAgICAgICAgKGZpZG86OldlYkNvcmU6OmNvbnN0cnVjdFUyZlNpZ25D
b21tYW5kKToKKyAgICAgICAgKGZpZG86OmlzQ29udmVydGlibGVUb1UyZlJlZ2lzdGVyQ29tbWFu
ZCk6CisgICAgICAgIChmaWRvOjppc0NvbnZlcnRpYmxlVG9VMmZTaWduQ29tbWFuZCk6CisgICAg
ICAgIChmaWRvOjpjb252ZXJ0VG9VMmZSZWdpc3RlckNvbW1hbmQpOgorICAgICAgICAoZmlkbzo6
Y29udmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmQpOgorICAgICAgICAoZmlkbzo6Y29udmVy
dFRvVTJmU2lnbkNvbW1hbmQpOgorICAgICAgICAoZmlkbzo6Y29uc3RydWN0Qm9ndXNVMmZSZWdp
c3RyYXRpb25Db21tYW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29t
bWFuZENvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlk
by9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoZmlkbzo6V2ViQ29y
ZTo6ZXh0cmFjdEVDUHVibGljS2V5RnJvbVUyZlJlZ2lzdHJhdGlvblJlc3BvbnNlKToKKyAgICAg
ICAgKGZpZG86OldlYkNvcmU6OmV4dHJhY3RDcmVkZW50aWFsSWRGcm9tVTJmUmVnaXN0cmF0aW9u
UmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6V2ViQ29yZTo6Y3JlYXRlQXR0ZXN0ZWRDcmVkZW50
aWFsRGF0YUZyb21VMmZSZWdpc3RlclJlc3BvbnNlKToKKyAgICAgICAgKGZpZG86OldlYkNvcmU6
OnBhcnNlWDUwOUxlbmd0aCk6CisgICAgICAgIChmaWRvOjpXZWJDb3JlOjpjcmVhdGVGaWRvQXR0
ZXN0YXRpb25TdGF0ZW1lbnRGcm9tVTJmUmVnaXN0ZXJSZXNwb25zZSk6CisgICAgICAgIChmaWRv
OjpyZWFkVTJmUmVnaXN0ZXJSZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpyZWFkRnJvbVUyZlNp
Z25SZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNl
Q29udmVydGVyLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuY3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMi0yMSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFVzaW5nIGZpbGUgdXBsb2FkIGNhbiB0
cmlnZ2VyIGEgY3Jhc2ggdW5kZXIgUmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVwbG9hZEljb25E
ZWNvcmF0aW9ucygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFhMjIyZmM2MmFkYzExNTA3Y2E3ZTA0ZWUxMTU5YTQ5
ZTRmOTY0YjguLjU5Njk3NjE0YjQyZTBlMmQ4ZGU3Zjk4MzVmZTM0YTA1MTViMTEzMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMDEtMDQgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFu
QGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIEltcG9ydCBVMkYgY29tbWFuZC9yZXNw
b25zZSBjb252ZXJ0ZXJzIGZyb20gQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzE1MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDcw
NTQwMjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZXMgaGVscGVyIGZ1bmN0aW9ucyB0byBXZWJBdXRoZW50aWNhdGlvblV0aWxzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRv
ci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6OnByb2R1
Y2VIYXNoU2V0KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDo6YnVpbGRBdXRoRGF0YSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0hpZENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6
ZmVlZFJlcG9ydHMpOgorCiAyMDE4LTEyLTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXhwYW5kIHVzZSBvZiBzb3VyY2VBcHBsaWNhdGlv
bkF1ZGl0RGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IDQzZjE2YjAxYzg3ZGIzNDU4
YTI4ZTNjNDc2OGJlNGRmY2QzOTA3YzQuLjc4MzA3OTkxNjY3ZDA4M2I2YTVmMDZiNTIwYTJkZTkx
Yjk0YmJjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTczLDcgKzczLDYgQEAgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gcHJvZHVjZUNsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBl
IHR5cGUsIGNvbnN0IEJ1ZmZlclMKIAogc3RhdGljIFZlY3Rvcjx1aW50OF90PiBwcm9kdWNlQ2xp
ZW50RGF0YUpzb25IYXNoKGNvbnN0IEFycmF5QnVmZmVyJiBjbGllbnREYXRhSnNvbikKIHsKLSAg
ICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCiAgICAgYXV0byBj
cnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yNTYpOwogICAgIGNyeXB0by0+YWRkQnl0ZXMoY2xpZW50RGF0YUpzb24uZGF0
YSgpLCBjbGllbnREYXRhSnNvbi5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiBjcnlwdG8tPmNv
bXB1dGVIYXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0NPU0VDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQ09TRUNv
bnN0YW50cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDZmYzRjMDNlZTRjY2I2
OTczMjgxODNlNTJlNjg5N2Q1NDEzZTMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQ09TRUNvbnN0
YW50cy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi1uYW1lc3BhY2UgQ09TRSB7Ci0KLS8vIFNlZSBSRkMgODE1MiAtIENCT1IgT2Jq
ZWN0IFNpZ25pbmcgYW5kIEVuY3J5cHRpb24gPGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9y
ZmM4MTUyPgotLy8gTGFiZWxzCi1jb25zdCBpbnQ2NF90IGFsZyA9IDM7Ci1jb25zdCBpbnQ2NF90
IGNydiA9IC0xOwotY29uc3QgaW50NjRfdCBrdHkgPSAxOwotY29uc3QgaW50NjRfdCB4ID0gLTI7
Ci1jb25zdCBpbnQ2NF90IHkgPSAtMzsKLQotLy8gVmFsdWVzCi1jb25zdCBpbnQ2NF90IEVDMiA9
IDI7Ci1jb25zdCBpbnQ2NF90IEVTMjU2ID0gLTc7Ci1jb25zdCBpbnQ2NF90IFBfMjU2ID0gMTsK
LQotfSAvLyBuYW1lc3BhY2UgQ09TRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYxNDUyNjFhYzAyODFhYTNlMGVjY2E3ODMzNjMyYTE2NWY3MjU1MDkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29u
c3RhbnRzLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCitu
YW1lc3BhY2UgQ09TRSB7CisKKy8vIFNlZSBSRkMgODE1MiAtIENCT1IgT2JqZWN0IFNpZ25pbmcg
YW5kIEVuY3J5cHRpb24gPGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MTUyPgorLy8g
TGFiZWxzCitjb25zdCBpbnQ2NF90IGFsZyA9IDM7Citjb25zdCBpbnQ2NF90IGNydiA9IC0xOwor
Y29uc3QgaW50NjRfdCBrdHkgPSAxOworY29uc3QgaW50NjRfdCB4ID0gLTI7Citjb25zdCBpbnQ2
NF90IHkgPSAtMzsKKworLy8gVmFsdWVzCitjb25zdCBpbnQ2NF90IEVDMiA9IDI7Citjb25zdCBp
bnQ2NF90IEVTMjU2ID0gLTc7Citjb25zdCBpbnQ2NF90IFBfMjU2ID0gMTsKKworfSAvLyBuYW1l
c3BhY2UgQ09TRQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIExlbmd0aCBvZiB0aGUgU0hB
LTI1NiBoYXNoIG9mIHRoZSBSUCBJRCBhc3Nzb2NpYXRlZCB3aXRoIHRoZSBjcmVkZW50aWFsOgor
Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNzZWMtYXV0aGVudGljYXRvci1kYXRh
Citjb25zdCBzaXplX3QgcnBJZEhhc2hMZW5ndGggPSAzMjsKKworLy8gTGVuZ3RoIG9mIHRoZSBm
bGFnczoKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jc2VjLWF1dGhlbnRpY2F0
b3ItZGF0YQorY29uc3Qgc2l6ZV90IGZsYWdzTGVuZ3RoID0gMTsKKworLy8gTGVuZ3RoIG9mIHRo
ZSBzaWduYXR1cmUgY291bnRlciwgMzItYml0IHVuc2lnbmVkIGJpZy1lbmRpYW4gaW50ZWdlcjoK
Ky8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jc2VjLWF1dGhlbnRpY2F0b3ItZGF0
YQorY29uc3Qgc2l6ZV90IHNpZ25Db3VudGVyTGVuZ3RoID0gNDsKKworLy8gTGVuZ3RoIG9mIHRo
ZSBBQUdVSUQgb2YgdGhlIGF1dGhlbnRpY2F0b3I6CisvLyBodHRwczovL3d3dy53My5vcmcvVFIv
d2ViYXV0aG4vI3NlYy1hdHRlc3RlZC1jcmVkZW50aWFsLWRhdGEKK2NvbnN0IHNpemVfdCBhYWd1
aWRMZW5ndGggPSAxNjsKKworLy8gTGVuZ3RoIG9mIHRoZSBieXRlIGxlbmd0aCBMIG9mIENyZWRl
bnRpYWwgSUQsIDE2LWJpdCB1bnNpZ25lZCBiaWctZW5kaWFuCisvLyBpbnRlZ2VyOiBodHRwczov
L3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI3NlYy1hdHRlc3RlZC1jcmVkZW50aWFsLWRhdGEKK2Nv
bnN0IHNpemVfdCBjcmVkZW50aWFsSWRMZW5ndGhMZW5ndGggPSAyOworCisvLyBQZXIgU2VjdGlv
biAyLjMuNSBvZiBodHRwOi8vd3d3LnNlY2cub3JnL3NlYzEtdjIucGRmCitjb25zdCBzaXplX3Qg
RVMyNTZGaWVsZEVsZW1lbnRMZW5ndGggPSAzMjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNh
dGlvblV0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVu
dGljYXRpb25VdGlscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMzMjYxOTFhYzJmZTYxMGIwMGQwNDQ2YmI3
YTBkZmZjMzhkNjM5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKQEAgLTAsMCArMSwxMjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRp
b25VdGlscy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkNCT1JXcml0
ZXIuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIgorI2luY2x1ZGUg
PHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRCeXRl
c1RvVmVjdG9yKGNvbnN0IHVpbnQ4X3QgYnl0ZUFycmF5W10sIGNvbnN0IHNpemVfdCBsZW5ndGgp
Cit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKGJ5dGVB
cnJheSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitWZWN0b3I8dWludDhfdD4g
cHJvZHVjZVJwSWRIYXNoKGNvbnN0IFN0cmluZyYgcnBJZCkKK3sKKyAgICBhdXRvIGNyeXB0byA9
IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzI1Nik7CisgICAgYXV0byBycElkVXRmOCA9IHJwSWQudXRmOCgpOworICAgIGNyeXB0by0+
YWRkQnl0ZXMocnBJZFV0ZjguZGF0YSgpLCBycElkVXRmOC5sZW5ndGgoKSk7CisgICAgcmV0dXJu
IGNyeXB0by0+Y29tcHV0ZUhhc2goKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUVTMjU2
UHVibGljS2V5QXNDQk9SKFZlY3Rvcjx1aW50OF90PiYmIHgsIFZlY3Rvcjx1aW50OF90PiYmIHkp
Cit7CisgICAgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBwdWJsaWNLZXlNYXA7CisgICAgcHVi
bGljS2V5TWFwW2Nib3I6OkNCT1JWYWx1ZShDT1NFOjprdHkpXSA9IGNib3I6OkNCT1JWYWx1ZShD
T1NFOjpFQzIpOworICAgIHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6YWxnKV0g
PSBjYm9yOjpDQk9SVmFsdWUoQ09TRTo6RVMyNTYpOworICAgIHB1YmxpY0tleU1hcFtjYm9yOjpD
Qk9SVmFsdWUoQ09TRTo6Y3J2KV0gPSBjYm9yOjpDQk9SVmFsdWUoQ09TRTo6UF8yNTYpOworICAg
IHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6eCldID0gY2Jvcjo6Q0JPUlZhbHVl
KFdURk1vdmUoeCkpOworICAgIHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6eSld
ID0gY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoeSkpOworCisgICAgYXV0byBjb3NlUHVibGljS2V5
ID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUocHVibGlj
S2V5TWFwKSkpOworICAgIEFTU0VSVChjb3NlUHVibGljS2V5KTsKKyAgICByZXR1cm4gKmNvc2VQ
dWJsaWNLZXk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGVkQ3JlZGVudGlhbERh
dGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhYWd1aWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvc2VLZXkpCit7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGF0dGVzdGVkQ3JlZGVudGlhbERhdGE7CisgICAgYXR0ZXN0ZWRDcmVkZW50
aWFsRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFhZ3VpZExlbmd0aCArIGNyZWRlbnRpYWxJ
ZExlbmd0aExlbmd0aCArIGNyZWRlbnRpYWxJZC5zaXplKCkgKyBjb3NlS2V5LnNpemUoKSk7CisK
KyAgICAvLyBhYWd1aWQKKyAgICBBU1NFUlQoYWFndWlkLnNpemUoKSA9PSBhYWd1aWRMZW5ndGgp
OworICAgIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEuYXBwZW5kVmVjdG9yKGFhZ3VpZCk7CisKKyAg
ICAvLyBjcmVkZW50aWFsSWRMZW5ndGgKKyAgICBBU1NFUlQoY3JlZGVudGlhbElkLnNpemUoKSA8
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOworICAgIGF0dGVzdGVkQ3Jl
ZGVudGlhbERhdGEuYXBwZW5kKGNyZWRlbnRpYWxJZC5zaXplKCkgPj4gOCAmIDB4ZmYpOworICAg
IGF0dGVzdGVkQ3JlZGVudGlhbERhdGEuYXBwZW5kKGNyZWRlbnRpYWxJZC5zaXplKCkgJiAweGZm
KTsKKworICAgIC8vIGNyZWRlbnRpYWxJZAorICAgIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEuYXBw
ZW5kVmVjdG9yKGNyZWRlbnRpYWxJZCk7CisKKyAgICAvLyBjcmVkZW50aWFsUHVibGljS2V5Cisg
ICAgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YS5hcHBlbmRWZWN0b3IoY29zZUtleSk7CisKKyAgICBy
ZXR1cm4gYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxk
QXV0aERhdGEoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCB1aW50OF90IGZsYWdzLCBjb25zdCB1
aW50MzJfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG9wdGlvbmFsQXR0ZXN0ZWRD
cmVkZW50aWFsRGF0YSkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gYXV0aERhdGE7CisgICAgYXV0
aERhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShycElkSGFzaExlbmd0aCArIGZsYWdzTGVuZ3Ro
ICsgc2lnbkNvdW50ZXJMZW5ndGggKyBvcHRpb25hbEF0dGVzdGVkQ3JlZGVudGlhbERhdGEuc2l6
ZSgpKTsKKworICAgIC8vIFJQIElEIGhhc2gKKyAgICBhdXRoRGF0YS5hcHBlbmRWZWN0b3IocHJv
ZHVjZVJwSWRIYXNoKHJwSWQpKTsKKworICAgIC8vIEZMQUdTCisgICAgYXV0aERhdGEuYXBwZW5k
KGZsYWdzKTsKKworICAgIC8vIENPVU5URVIKKyAgICBhdXRoRGF0YS5hcHBlbmQoY291bnRlciA+
PiAyNCAmIDB4ZmYpOworICAgIGF1dGhEYXRhLmFwcGVuZChjb3VudGVyID4+IDE2ICYgMHhmZik7
CisgICAgYXV0aERhdGEuYXBwZW5kKGNvdW50ZXIgPj4gOCAmIDB4ZmYpOworICAgIGF1dGhEYXRh
LmFwcGVuZChjb3VudGVyICYgMHhmZik7CisKKyAgICAvLyBBVFRFU1RFRCBDUkVELiBEQVRBCisg
ICAgYXV0aERhdGEuYXBwZW5kVmVjdG9yKG9wdGlvbmFsQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSk7
CisKKyAgICByZXR1cm4gYXV0aERhdGE7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVz
dGF0aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90PiYmIGF1dGhEYXRhLCBTdHJpbmcmJiBmb3JtYXQs
IGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUmJiBzdGF0ZW1lbnRNYXApCit7CisgICAgY2Jvcjo6
Q0JPUlZhbHVlOjpNYXBWYWx1ZSBhdHRlc3RhdGlvbk9iamVjdE1hcDsKKyAgICBhdHRlc3RhdGlv
bk9iamVjdE1hcFtjYm9yOjpDQk9SVmFsdWUoImF1dGhEYXRhIildID0gY2Jvcjo6Q0JPUlZhbHVl
KFdURk1vdmUoYXV0aERhdGEpKTsKKyAgICBhdHRlc3RhdGlvbk9iamVjdE1hcFtjYm9yOjpDQk9S
VmFsdWUoImZtdCIpXSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGZvcm1hdCkpOworICAgIGF0
dGVzdGF0aW9uT2JqZWN0TWFwW2Nib3I6OkNCT1JWYWx1ZSgiYXR0U3RtdCIpXSA9IGNib3I6OkNC
T1JWYWx1ZShXVEZNb3ZlKHN0YXRlbWVudE1hcCkpOworCisgICAgYXV0byBhdHRlc3RhdGlvbk9i
amVjdCA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGF0
dGVzdGF0aW9uT2JqZWN0TWFwKSkpOworICAgIEFTU0VSVChhdHRlc3RhdGlvbk9iamVjdCk7Cisg
ICAgcmV0dXJuICphdHRlc3RhdGlvbk9iamVjdDsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xN2YwMjJlMTYwNzgyMTdiMTkxODAwMTgwN2QzMWJjZjcwOGEyMTcwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlv
blV0aWxzLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkNCT1JWYWx1ZS5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRCeXRlc1RvVmVjdG9yKGNvbnN0IHVpbnQ4X3QgYnl0ZUFy
cmF5W10sIGNvbnN0IHNpemVfdCBsZW5ndGgpOworCisvLyBQcm9kdWNlIGEgU0hBLTI1NiBoYXNo
IG9mIHRoZSBnaXZlbiBSUCBJRC4KK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBwcm9k
dWNlUnBJZEhhc2goY29uc3QgU3RyaW5nJiBycElkKTsKKworV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PHVpbnQ4X3Q+IGVuY29kZUVTMjU2UHVibGljS2V5QXNDQk9SKFZlY3Rvcjx1aW50OF90PiYmIHgs
IFZlY3Rvcjx1aW50OF90PiYmIHkpOworCisvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0
aG4vI2F0dGVzdGVkLWNyZWRlbnRpYWwtZGF0YQorV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IGJ1aWxkQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YShjb25zdCBWZWN0b3I8dWludDhfdD4mIGFh
Z3VpZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgY29zZUtleSk7CisKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8j
c2VjLWF1dGhlbnRpY2F0b3ItZGF0YQorV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGJ1
aWxkQXV0aERhdGEoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCB1aW50OF90IGZsYWdzLCBjb25z
dCB1aW50MzJfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG9wdGlvbmFsQXR0ZXN0
ZWRDcmVkZW50aWFsRGF0YSk7CisKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8j
YXR0ZXN0YXRpb24tb2JqZWN0CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gYnVpbGRB
dHRlc3RhdGlvbk9iamVjdChWZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwgU3RyaW5nJiYgZm9y
bWF0LCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlJiYgc3RhdGVtZW50TWFwKTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNv
bnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNl
UmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IGE0MDRhMTIwY2U0NjEyMTM5NGM3MjQ3ZTMwZTkx
MGY0ZWUzZDNmZGEuLmQwMzY3MTc4NjdkZDFmOGU5OTU2Njc2MjNhYjVmZjc0NTRmNDVhMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNw
b25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zLmgiCiAjaW5jbHVkZSAiQ0JPUlJlYWRl
ci5oIgogI2luY2x1ZGUgIkNCT1JXcml0ZXIuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlv
bkNvbnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKQEAgLTY1LDE3ICs2NiwxNyBAQCBDdGFwRGV2aWNlUmVzcG9uc2VDb2RlIGdldFJl
c3BvbnNlQ29kZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKIAogc3RhdGljIFZlY3Rv
cjx1aW50OF90PiBnZXRDcmVkZW50aWFsSWQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50
aWNhdG9yRGF0YSkKIHsKLSAgICBjb25zdCBzaXplX3QgY3JlZGVudGlhbElkTGVuZ3RoT2Zmc2V0
ID0ga1JwSWRIYXNoTGVuZ3RoICsga0ZsYWdzTGVuZ3RoICsga1NpZ25Db3VudGVyTGVuZ3RoICsg
a0FhZ3VpZExlbmd0aDsKKyAgICBjb25zdCBzaXplX3QgY3JlZGVudGlhbElkTGVuZ3RoT2Zmc2V0
ID0gcnBJZEhhc2hMZW5ndGggKyBmbGFnc0xlbmd0aCArIHNpZ25Db3VudGVyTGVuZ3RoICsgYWFn
dWlkTGVuZ3RoOwogCi0gICAgaWYgKGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSA8IGNyZWRlbnRp
YWxJZExlbmd0aE9mZnNldCArIGtDcmVkZW50aWFsSWRMZW5ndGhMZW5ndGgpCisgICAgaWYgKGF1
dGhlbnRpY2F0b3JEYXRhLnNpemUoKSA8IGNyZWRlbnRpYWxJZExlbmd0aE9mZnNldCArIGNyZWRl
bnRpYWxJZExlbmd0aExlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBzaXplX3QgY3Jl
ZGVudGlhbElkTGVuZ3RoID0gKHN0YXRpY19jYXN0PHNpemVfdD4oYXV0aGVudGljYXRvckRhdGFb
Y3JlZGVudGlhbElkTGVuZ3RoT2Zmc2V0XSkgPDwgOCkgfCBzdGF0aWNfY2FzdDxzaXplX3Q+KGF1
dGhlbnRpY2F0b3JEYXRhW2NyZWRlbnRpYWxJZExlbmd0aE9mZnNldCArIDFdKTsKIAotICAgIGlm
IChhdXRoZW50aWNhdG9yRGF0YS5zaXplKCkgPCBjcmVkZW50aWFsSWRMZW5ndGhPZmZzZXQgKyBr
Q3JlZGVudGlhbElkTGVuZ3RoTGVuZ3RoICsgY3JlZGVudGlhbElkTGVuZ3RoKQorICAgIGlmIChh
dXRoZW50aWNhdG9yRGF0YS5zaXplKCkgPCBjcmVkZW50aWFsSWRMZW5ndGhPZmZzZXQgKyBjcmVk
ZW50aWFsSWRMZW5ndGhMZW5ndGggKyBjcmVkZW50aWFsSWRMZW5ndGgpCiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNyZWRlbnRpYWxJZDsKICAgICBjcmVkZW50aWFs
SWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjcmVkZW50aWFsSWRMZW5ndGgpOwotICAgIGF1dG8g
YmVnaW5JdCA9IGF1dGhlbnRpY2F0b3JEYXRhLmJlZ2luKCkgKyBjcmVkZW50aWFsSWRMZW5ndGhP
ZmZzZXQgKyBrQ3JlZGVudGlhbElkTGVuZ3RoTGVuZ3RoOworICAgIGF1dG8gYmVnaW5JdCA9IGF1
dGhlbnRpY2F0b3JEYXRhLmJlZ2luKCkgKyBjcmVkZW50aWFsSWRMZW5ndGhPZmZzZXQgKyBjcmVk
ZW50aWFsSWRMZW5ndGhMZW5ndGg7CiAgICAgY3JlZGVudGlhbElkLmFwcGVuZFJhbmdlKGJlZ2lu
SXQsIGJlZ2luSXQgKyBjcmVkZW50aWFsSWRMZW5ndGgpOwogICAgIHJldHVybiBjcmVkZW50aWFs
SWQ7CiB9CkBAIC0yMDUsNyArMjA2LDcgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRvckdldEluZm9S
ZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9S
KDMpKTsKLSAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNC
eXRlU3RyaW5nKCkgfHwgaXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCkuc2l6ZSgpICE9IGtBYWd1
aWRMZW5ndGgpCisgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25k
LmlzQnl0ZVN0cmluZygpIHx8IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpLnNpemUoKSAhPSBh
YWd1aWRMZW5ndGgpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBBdXRoZW50
aWNhdG9yR2V0SW5mb1Jlc3BvbnNlIHJlc3BvbnNlKFdURk1vdmUocHJvdG9jb2xWZXJzaW9ucyks
IFZlY3Rvcjx1aW50OF90PihpdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmgKaW5k
ZXggNjliOTE5OTIwNmZhMDY5MWQyNDgwNmNmN2QyNjUzNTY1NjMxNWYyNC4uNTMwYTE3NDg2N2Vh
NTNkYjdjMDAwZTUzMTQ0YjI5Y2ZmNGI2MWMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oCkBAIC00MSwyNSArNDEsMTQg
QEAgZW51bSBjbGFzcyBQcm90b2NvbFZlcnNpb24gewogICAgIGtVbmtub3duLAogfTsKIAotLy8g
TGVuZ3RoIG9mIHRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIFJQIElEIGFzc3NvY2lhdGVkIHdpdGgg
dGhlIGNyZWRlbnRpYWw6Ci0vLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI3NlYy1h
dXRoZW50aWNhdG9yLWRhdGEKLWNvbnN0ZXhwciBzaXplX3Qga1JwSWRIYXNoTGVuZ3RoID0gMzI7
Ci0KLS8vIExlbmd0aCBvZiB0aGUgZmxhZ3M6Ci0vLyBodHRwczovL3d3dy53My5vcmcvVFIvd2Vi
YXV0aG4vI3NlYy1hdXRoZW50aWNhdG9yLWRhdGEKLWNvbnN0ZXhwciBzaXplX3Qga0ZsYWdzTGVu
Z3RoID0gMTsKLQotLy8gTGVuZ3RoIG9mIHRoZSBzaWduYXR1cmUgY291bnRlciwgMzItYml0IHVu
c2lnbmVkIGJpZy1lbmRpYW4gaW50ZWdlcjoKLS8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJh
dXRobi8jc2VjLWF1dGhlbnRpY2F0b3ItZGF0YQotY29uc3RleHByIHNpemVfdCBrU2lnbkNvdW50
ZXJMZW5ndGggPSA0OwotCi0vLyBMZW5ndGggb2YgdGhlIEFBR1VJRCBvZiB0aGUgYXV0aGVudGlj
YXRvcjoKLS8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jc2VjLWF0dGVzdGVkLWNy
ZWRlbnRpYWwtZGF0YQotY29uc3RleHByIHNpemVfdCBrQWFndWlkTGVuZ3RoID0gMTY7Ci0KLS8v
IExlbmd0aCBvZiB0aGUgYnl0ZSBsZW5ndGggTCBvZiBDcmVkZW50aWFsIElELCAxNi1iaXQgdW5z
aWduZWQgYmlnLWVuZGlhbgotLy8gaW50ZWdlcjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1
dGhuLyNzZWMtYXR0ZXN0ZWQtY3JlZGVudGlhbC1kYXRhCi1jb25zdGV4cHIgc2l6ZV90IGtDcmVk
ZW50aWFsSWRMZW5ndGhMZW5ndGggPSAyOworLy8gTGVuZ3RoIG9mIHRoZSBVMkYgY2hhbGxlbmdl
L2FwcGxpY2F0aW9uIHBhcmFtZXRlcjoKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXUyZi12MS4yLXBzLTIwMTcwNDExL2ZpZG8tdTJmLXJhdy1tZXNzYWdlLWZvcm1hdHMt
djEuMi1wcy0yMDE3MDQxMS5odG1sI3JlZ2lzdHJhdGlvbi1yZXF1ZXN0LW1lc3NhZ2UtLS11MmZf
cmVnaXN0ZXIKK2NvbnN0ZXhwciBzaXplX3Qga1UyZkNoYWxsZW5nZVBhcmFtTGVuZ3RoID0gMzI7
Citjb25zdGV4cHIgc2l6ZV90IGtVMmZBcHBsaWNhdGlvblBhcmFtTGVuZ3RoID0gMzI7CisvLyBo
dHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby11MmYtdjEuMi1wcy0yMDE3MDQxMS9m
aWRvLXUyZi1yYXctbWVzc2FnZS1mb3JtYXRzLXYxLjItcHMtMjAxNzA0MTEuaHRtbCNyZWdpc3Ry
YXRpb24tcmVzcG9uc2UtbWVzc2FnZS1zdWNjZXNzCitjb25zdGV4cHIgc2l6ZV90IGtSZXNlcnZl
ZExlbmd0aCA9IDE7Citjb25zdGV4cHIgc2l6ZV90IGtVMmZLZXlIYW5kbGVMZW5ndGhPZmZzZXQg
PSA2NjsKK2NvbnN0ZXhwciBzaXplX3Qga1UyZktleUhhbmRsZU9mZnNldCA9IDY3OwogCiAvLyBD
VEFQIHByb3RvY29sIGRldmljZSByZXNwb25zZSBjb2RlLCBhcyBzcGVjaWZpZWQgaW4KIC8vIGh0
dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1j
bGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjZXJy
b3ItcmVzcG9uc2VzCkBAIC0xMzQsNiArMTIzLDE5IEBAIGVudW0gY2xhc3MgRmlkb0hpZERldmlj
ZUNvbW1hbmQgOiB1aW50OF90IHsKIAogYm9vbCBpc0ZpZG9IaWREZXZpY2VDb21tYW5kKEZpZG9I
aWREZXZpY2VDb21tYW5kKTsKIAorLy8gUGFyYW1ldGVycyBmb3IgZmFrZSBVMkYgcmVnaXN0cmF0
aW9uIHVzZWQgdG8gY2hlY2sgZm9yIHVzZXIgcHJlc2VuY2UuCitjb25zdCB1aW50OF90IGtCb2d1
c0FwcFBhcmFtW10gPSB7CisgICAgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwg
MHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwKKyAgICAweDQxLCAweDQxLCAweDQxLCAweDQx
LCAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQxLAorICAgIDB4NDEsIDB4
NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEKK307CisK
K2NvbnN0IHVpbnQ4X3Qga0JvZ3VzQ2hhbGxlbmdlW10gPSB7CisgICAgMHg0MiwgMHg0MiwgMHg0
MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwKKyAgICAw
eDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQy
LCAweDQyLAorICAgIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4
NDIsIDB4NDIsIDB4NDIKK307CisKIC8vIFN0cmluZyBrZXkgdmFsdWVzIGZvciBDVEFQIHJlcXVl
c3Qgb3B0aW9uYWwgcGFyYW1ldGVycyBhbmQKIC8vIEF1dGhlbnRpY2F0b3JHZXRJbmZvIHJlc3Bv
bnNlLgogY29uc3QgY2hhciBrUmVzaWRlbnRLZXlNYXBLZXlbXSA9ICJyayI7CkBAIC0xNzAsNiAr
MTcyLDE1IEBAIGNvbnN0IHNpemVfdCBrSGlkTWF4TWVzc2FnZVNpemUgPSA3NjA5OwogLy8gQ1RB
UC9VMkYgZGV2aWNlcyBvbmx5IHByb3ZpZGUgYSBzaW5nbGUgcmVwb3J0IHNvIHNwZWNpZnkgYSBy
ZXBvcnQgSUQgb2YgMCBoZXJlLgogY29uc3QgdWludDhfdCBrSGlkUmVwb3J0SWQgPSAweDAwOwog
CisvLyBVMkYgQVBEVSBlbmNvZGluZyBjb25zdGFudHMsIGFzIHNwZWNpZmllZCBpbgorLy8gaHR0
cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdTJmLXYxLjItcHMtMjAxNzA0MTEvZmlk
by11MmYtcmF3LW1lc3NhZ2UtZm9ybWF0cy12MS4yLXBzLTIwMTcwNDExLmh0bWwjYXV0aGVudGlj
YXRpb24tbWVzc2FnZXMKKworLy8gUDEgaW5zdHJ1Y3Rpb25zLgorY29uc3RleHByIHVpbnQ4X3Qg
a1AxRW5mb3JjZVVzZXJQcmVzZW5jZUFuZFNpZ24gPSAweDAzOworY29uc3RleHByIHVpbnQ4X3Qg
a1AxQ2hlY2tPbmx5ID0gMHgwNzsKKworY29uc3RleHByIHNpemVfdCBrTWF4S2V5SGFuZGxlTGVu
Z3RoID0gMjU1OworCiAvLyBBdXRoZW50aWNhdG9yIEFQSSBjb21tYW5kcyBzdXBwb3J0ZWQgYnkg
Q1RBUCBkZXZpY2VzLCBhcyBzcGVjaWZpZWQgaW4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9y
Zy9zcGVjcy9maWRvLXYyLjAtcmQtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRv
ci1wcm90b2NvbC12Mi4wLXJkLTIwMTcwOTI3Lmh0bWwjYXV0aGVudGljYXRvci1hcGkKIGVudW0g
Y2xhc3MgQ3RhcFJlcXVlc3RDb21tYW5kIDogdWludDhfdCB7CkBAIC0xODEsNiArMTkyLDE2IEBA
IGVudW0gY2xhc3MgQ3RhcFJlcXVlc3RDb21tYW5kIDogdWludDhfdCB7CiAgICAga0F1dGhlbnRp
Y2F0b3JSZXNldCA9IDB4MDcsCiB9OwogCisvLyBBUERVIGluc3RydWN0aW9uIGNvZGUgZm9yIFUy
RiByZXF1ZXN0IGVuY29kaW5nLgorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2Zp
ZG8tdTJmLXYxLjItcHMtMjAxNzA0MTEvZmlkby11MmYtcmF3LW1lc3NhZ2UtZm9ybWF0cy12MS4y
LXBzLTIwMTcwNDExLmh0bWwjY29tbWFuZC1hbmQtcGFyYW1ldGVyLXZhbHVlcworZW51bSBjbGFz
cyBVMmZBcGR1SW5zdHJ1Y3Rpb24gOiB1aW50OF90IHsKKyAgICBrUmVnaXN0ZXIgPSAweDAxLAor
ICAgIGtTaWduID0gMHgwMiwKKyAgICBrVmVyc2lvbiA9IDB4MDMsCisgICAga1ZlbmRvckZpcnN0
ID0gMHg0MCwKKyAgICBrVmVuZGVyTGFzdCA9IDB4QkYsCit9OworCiAvLyBTdHJpbmcga2V5IHZh
bHVlcyBmb3IgYXR0ZXN0YXRpb24gb2JqZWN0IGFzIGEgcmVzcG9uc2UgdG8gTWFrZUNyZWRlbnRp
YWwKIC8vIHJlcXVlc3QuCiBjb25zdCBjaGFyIGtGb3JtYXRLZXlbXSA9ICJmbXQiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29t
bWFuZENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjIyYWQ5NDJjNDA5NGU1MGZiM2UzYzNl
Njg0Njg0ZWJhYzFmMzU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMzIg
QEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oIgorCisjaWYg
RU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkFwZHVDb21tYW5kLmgiCisjaW5jbHVkZSAi
Rmlkb0NvbnN0YW50cy5oIgorI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMuaCIKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCIK
KyNpbmNsdWRlICJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJB
dXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uVXRp
bHMuaCIKKworbmFtZXNwYWNlIGZpZG8gewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSB7CisKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29uc3RydWN0VTJmUmVnaXN0ZXJD
b21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXBwbGljYXRpb25QYXJhbWV0ZXIsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgY2hhbGxlbmdlUGFyYW1ldGVyKQoreworICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOworICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShrVTJmQ2hhbGxlbmdl
UGFyYW1MZW5ndGggKyBrVTJmQXBwbGljYXRpb25QYXJhbUxlbmd0aCk7CisgICAgZGF0YS5hcHBl
bmRWZWN0b3IoY2hhbGxlbmdlUGFyYW1ldGVyKTsKKyAgICBkYXRhLmFwcGVuZFZlY3RvcihhcHBs
aWNhdGlvblBhcmFtZXRlcik7CisKKyAgICBhcGR1OjpBcGR1Q29tbWFuZCBjb21tYW5kOworICAg
IGNvbW1hbmQuc2V0SW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFUyZkFwZHVJbnN0cnVjdGlvbjo6
a1JlZ2lzdGVyKSk7CisgICAgY29tbWFuZC5zZXREYXRhKFdURk1vdmUoZGF0YSkpOworICAgIGNv
bW1hbmQuc2V0UmVzcG9uc2VMZW5ndGgoYXBkdTo6QXBkdUNvbW1hbmQ6OmtBcGR1TWF4UmVzcG9u
c2VMZW5ndGgpOworICAgIHJldHVybiBjb21tYW5kLmdldEVuY29kZWRDb21tYW5kKCk7Cit9CisK
K3N0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnN0cnVjdFUyZlNpZ25Db21tYW5k
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXBwbGljYXRpb25QYXJhbWV0ZXIsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgY2hhbGxlbmdlUGFyYW1ldGVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtl
eUhhbmRsZSwgYm9vbCBjaGVja09ubHkpCit7CisgICAgaWYgKGtleUhhbmRsZS5zaXplKCkgPiBr
TWF4S2V5SGFuZGxlTGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGtV
MmZDaGFsbGVuZ2VQYXJhbUxlbmd0aCArIGtVMmZBcHBsaWNhdGlvblBhcmFtTGVuZ3RoICsgMSAr
IGtleUhhbmRsZS5zaXplKCkpOworICAgIGRhdGEuYXBwZW5kVmVjdG9yKGNoYWxsZW5nZVBhcmFt
ZXRlcik7CisgICAgZGF0YS5hcHBlbmRWZWN0b3IoYXBwbGljYXRpb25QYXJhbWV0ZXIpOworICAg
IGRhdGEuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGtleUhhbmRsZS5zaXplKCkpKTsKKyAg
ICBkYXRhLmFwcGVuZFZlY3RvcihrZXlIYW5kbGUpOworCisgICAgYXBkdTo6QXBkdUNvbW1hbmQg
Y29tbWFuZDsKKyAgICBjb21tYW5kLnNldElucyhzdGF0aWNfY2FzdDx1aW50OF90PihVMmZBcGR1
SW5zdHJ1Y3Rpb246OmtTaWduKSk7CisgICAgY29tbWFuZC5zZXRQMShjaGVja09ubHkgPyBrUDFD
aGVja09ubHkgOiBrUDFFbmZvcmNlVXNlclByZXNlbmNlQW5kU2lnbik7CisgICAgY29tbWFuZC5z
ZXREYXRhKFdURk1vdmUoZGF0YSkpOworICAgIGNvbW1hbmQuc2V0UmVzcG9uc2VMZW5ndGgoYXBk
dTo6QXBkdUNvbW1hbmQ6OmtBcGR1TWF4UmVzcG9uc2VMZW5ndGgpOworICAgIHJldHVybiBjb21t
YW5kLmdldEVuY29kZWRDb21tYW5kKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKK2Jvb2wgaXND
b252ZXJ0aWJsZVRvVTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMmIHJlcXVlc3QpCit7CisgICAgaWYgKHJlcXVlc3QuYXV0aGVudGljYXRv
clNlbGVjdGlvbiAmJiAocmVxdWVzdC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uLT51c2VyVmVyaWZp
Y2F0aW9uID09IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UmVxdWlyZWQgfHwgcmVxdWVz
dC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uLT5yZXF1aXJlUmVzaWRlbnRLZXkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhcmFtZXRlcnMgOiByZXF1ZXN0
LnB1YktleUNyZWRQYXJhbXMpIHsKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMuYWxnID09IENPU0U6
OkVTMjU2KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBpc0NvbnZlcnRpYmxlVG9VMmZTaWduQ29tbWFuZChjb25zdCBQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIChyZXF1
ZXN0LnVzZXJWZXJpZmljYXRpb24gIT0gVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50OjpSZXF1
aXJlZCkgJiYgIXJlcXVlc3QuYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5KCk7Cit9CisKK09wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMmIHJlcXVlc3QpCit7CisgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZS
ZWdpc3RlckNvbW1hbmQocmVxdWVzdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gY29uc3RydWN0VTJmUmVnaXN0ZXJDb21tYW5kKHByb2R1Y2VScElkSGFzaChy
ZXF1ZXN0LnJwLmlkKSwgY2xpZW50RGF0YUhhc2gpOworfQorCitPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGNvbnZlcnRUb1UyZkNoZWNrT25seVNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMmIHJlcXVlc3QsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yJiBrZXlI
YW5kbGUpCit7CisgICAgaWYgKGtleUhhbmRsZS50eXBlICE9IFB1YmxpY0tleUNyZWRlbnRpYWxU
eXBlOjpQdWJsaWNLZXkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQocHJvZHVjZVJwSWRIYXNoKHJlcXVlc3QucnAuaWQp
LCBjbGllbnREYXRhSGFzaCwga2V5SGFuZGxlLmlkVmVjdG9yLCB0cnVlIC8qIGNoZWNrT25seSAq
Lyk7Cit9CisKK09wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmU2lnbkNvbW1h
bmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCwgY29uc3QgUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleUhhbmRsZSwgYm9vbCBjaGVja09ubHkpCit7CisgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9V
MmZTaWduQ29tbWFuZChyZXF1ZXN0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiBjb25zdHJ1Y3RVMmZTaWduQ29tbWFuZChwcm9kdWNlUnBJZEhhc2gocmVxdWVz
dC5ycElkKSwgY2xpZW50RGF0YUhhc2gsIGtleUhhbmRsZSwgY2hlY2tPbmx5KTsKK30KKworVmVj
dG9yPHVpbnQ4X3Q+IGNvbnN0cnVjdEJvZ3VzVTJmUmVnaXN0cmF0aW9uQ29tbWFuZCgpCit7Cisg
ICAgcmV0dXJuIGNvbnN0cnVjdFUyZlJlZ2lzdGVyQ29tbWFuZChjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihrQm9ndXNBcHBQYXJhbSwgc2l6ZW9mKGtCb2d1c0FwcFBhcmFtKSksIGNvbnZlcnRCeXRlc1Rv
VmVjdG9yKGtCb2d1c0NoYWxsZW5nZSwgc2l6ZW9mKGtCb2d1c0NoYWxsZW5nZSkpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgZmlkbworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21t
YW5kQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWFiMzY1ODQwZWMzOWE5MmVjMGYyMWZmMjIw
ZDQ2Njg0MWRiMmM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNzIgQEAKKy8v
IENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVu
dGlhbERlc2NyaXB0b3I7CitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
OworfQorCituYW1lc3BhY2UgZmlkbyB7CisKKy8vIENoZWNrcyB3aGV0aGVyIHRoZSByZXF1ZXN0
IGNhbiBiZSB0cmFuc2xhdGVkIHRvIHZhbGlkIFUyRiByZXF1ZXN0CisvLyBwYXJhbWV0ZXIuIE5h
bWVseSwgVTJGIHJlcXVlc3QgZG9lcyBub3Qgc3VwcG9ydCByZXNpZGVudCBrZXkgYW5kCisvLyB1
c2VyIHZlcmlmaWNhdGlvbiwgYW5kIEVTMjU2IGFsZ29yaXRobSBtdXN0IGJlIHVzZWQgZm9yIHB1
YmxpYyBrZXkKKy8vIGNyZWRlbnRpYWwuCisvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3Bl
Y3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJv
dG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5odG1sI3UyZi1hdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRp
YWwtaW50ZXJvcGVyYWJpbGl0eQorV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnZlcnRpYmxlVG9V
MmZSZWdpc3RlckNvbW1hbmQoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyYpOworCisvLyBDaGVja3Mgd2hldGhlciB1c2VyIHZlcmlmaWNhdGlvbiBpcyBu
b3QgcmVxdWlyZWQgYW5kIHRoYXQgYWxsb3cgbGlzdCBpcworLy8gbm90IGVtcHR5LgorLy8gaHR0
cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNs
aWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYt
YXV0aGVudGljYXRvckdldEFzc2VydGlvbi1pbnRlcm9wZXJhYmlsaXR5CitXRUJDT1JFX0VYUE9S
VCBib29sIGlzQ29udmVydGlibGVUb1UyZlNpZ25Db21tYW5kKGNvbnN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYpOworCisvLyBFeHRyYWN0cyBBUERVIGVuY29k
ZWQgVTJGIHJlZ2lzdGVyIGNvbW1hbmQgZnJvbSBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zLgorV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0
VG9VMmZSZWdpc3RlckNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFz
aCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYpOwor
CisvLyBFeHRyYWN0cyBBUERVIGVuY29kZWQgVTJGIGNoZWNrIG9ubHkgc2lnbiBjb21tYW5kIGZy
b20KKy8vIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuIEludm9rZWQgd2hlbiBV
MkYgcmVnaXN0ZXIgb3BlcmF0aW9uIGluY2x1ZGVzIGtleQorLy8gaGFuZGxlcyBpbiBleGNsdWRl
IGxpc3QuCitXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRU
b1UyZkNoZWNrT25seVNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0
YUhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
LCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciYpOworCisvLyBF
eHRyYWN0cyBBUERVIGVuY29kZWQgVTJGIHNpZ24gY29tbWFuZCBmcm9tIFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucy4KK1dFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGll
bnREYXRhSGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGJvb2wgY2hlY2tPbmx5ID0g
ZmFsc2UpOworCitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29uc3RydWN0Qm9ndXNV
MmZSZWdpc3RyYXRpb25Db21tYW5kKCk7CisKK30gLy8gbmFtZXNwYWNlIGZpZG8KKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jNDVhMTcxMTc5OTAyMTM1NmJhNzg1Y2VmMTZjMjhhOTFhMzAxYmUwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29u
dmVydGVyLmNwcApAQCAtMCwwICsxLDE5NCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIENocm9t
aXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVTJmUmVz
cG9uc2VDb252ZXJ0ZXIuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJD
b21tb25DcnlwdG9ERVJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJGaWRvQ29uc3RhbnRzLmgiCisj
aW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaCIKKyNpbmNsdWRlICJXZWJBdXRo
ZW50aWNhdGlvblV0aWxzLmgiCisKK25hbWVzcGFjZSBmaWRvIHsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgeworCisvLyBJbiBhIFUyRiByZWdpc3RyYXRpb24gcmVzcG9u
c2UsIHRoZSBrZXkgaXMgaW4gWDkuNjIgZm9ybWF0OgorLy8gLSBhIGNvbnN0YW50IDB4MDQgcHJl
Zml4IHRvIGluZGljYXRlIGFuIHVuY29tcHJlc3NlZCBrZXkKKy8vIC0gdGhlIDMyLWJ5dGUgeCBj
b29yZGluYXRlCisvLyAtIHRoZSAzMi1ieXRlIHkgY29vcmRpbmF0ZS4KK2NvbnN0IHVpbnQ4X3Qg
dW5jb21wcmVzc2VkS2V5ID0gMHgwNDsKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRo
bi8jZmxhZ3MKK2NvbnN0IHVpbnQ4X3QgbWFrZUNyZWRlbnRpYWxGbGFncyA9IDBiMDEwMDAwMDE7
IC8vIFVQIGFuZCBBVCBhcmUgc2V0LgorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNz
L2ZpZG8tdTJmLXYxLjItcHMtMjAxNzA0MTEvZmlkby11MmYtcmF3LW1lc3NhZ2UtZm9ybWF0cy12
MS4yLXBzLTIwMTcwNDExLmh0bWwjcmVnaXN0cmF0aW9uLXJlc3BvbnNlLW1lc3NhZ2Utc3VjY2Vz
cworY29uc3QgdWludDhfdCBtaW5TaWduYXR1cmVMZW5ndGggPSA3MTsKK2NvbnN0IHVpbnQ4X3Qg
bWF4U2lnbmF0dXJlTGVuZ3RoID0gNzM7CisvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3Bl
Y3MvZmlkby11MmYtdjEuMi1wcy0yMDE3MDQxMS9maWRvLXUyZi1yYXctbWVzc2FnZS1mb3JtYXRz
LXYxLjItcHMtMjAxNzA0MTEuaHRtbCNhdXRoZW50aWNhdGlvbi1yZXNwb25zZS1tZXNzYWdlLXN1
Y2Nlc3MKK2NvbnN0IHNpemVfdCBmbGFnSW5kZXggPSAwOworY29uc3Qgc2l6ZV90IGNvdW50ZXJJ
bmRleCA9IDE7Citjb25zdCBzaXplX3Qgc2lnbmF0dXJlSW5kZXggPSA1OworCitzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGV4dHJhY3RFQ1B1YmxpY0tleUZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25z
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEpCit7CisgICAgc2l6ZV90IHBvcyA9IGtS
ZXNlcnZlZExlbmd0aDsKKyAgICBpZiAodTJmRGF0YS5zaXplKCkgPD0gcG9zIHx8IHUyZkRhdGFb
cG9zXSAhPSB1bmNvbXByZXNzZWRLZXkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcG9zKys7
CisKKyAgICBpZiAodTJmRGF0YS5zaXplKCkgPCBwb3MgKyAyICogRVMyNTZGaWVsZEVsZW1lbnRM
ZW5ndGgpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8dWludDhfdD4geDsKKyAg
ICB4LmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgp
OworICAgIHBvcyArPSBFUzI1NkZpZWxkRWxlbWVudExlbmd0aDsKKworICAgIFZlY3Rvcjx1aW50
OF90PiB5OworICAgIHkuYXBwZW5kKHUyZkRhdGEuZGF0YSgpICsgcG9zLCBFUzI1NkZpZWxkRWxl
bWVudExlbmd0aCk7CisKKyAgICByZXR1cm4gZW5jb2RlRVMyNTZQdWJsaWNLZXlBc0NCT1IoV1RG
TW92ZSh4KSwgV1RGTW92ZSh5KSk7Cit9CisKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gZXh0cmFj
dENyZWRlbnRpYWxJZEZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25zZShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHUyZkRhdGEpCit7CisgICAgc2l6ZV90IHBvcyA9IGtVMmZLZXlIYW5kbGVMZW5ndGhP
ZmZzZXQ7CisgICAgaWYgKHUyZkRhdGEuc2l6ZSgpIDw9IHBvcykKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICBzaXplX3QgY3JlZGVudGlhbElkTGVuZ3RoID0gdTJmRGF0YVtwb3NdOworICAgIHBv
cysrOworCisgICAgaWYgKHUyZkRhdGEuc2l6ZSgpIDwgcG9zICsgY3JlZGVudGlhbElkTGVuZ3Ro
KQorICAgICAgICByZXR1cm4geyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBjcmVkZW50aWFsSWQ7
CisgICAgY3JlZGVudGlhbElkLmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIHBvcywgY3JlZGVudGlh
bElkTGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlZGVudGlhbElkOworfQorCitzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNyZWF0ZUF0dGVzdGVkQ3JlZGVudGlhbERhdGFGcm9tVTJmUmVnaXN0ZXJSZXNw
b25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgcHVibGljS2V5KQoreworICAgIGF1dG8gY3JlZGVudGlhbElkID0gZXh0cmFjdENyZWRlbnRp
YWxJZEZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25zZSh1MmZEYXRhKTsKKyAgICBpZiAoY3JlZGVu
dGlhbElkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBidWls
ZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMCks
IGNyZWRlbnRpYWxJZCwgcHVibGljS2V5KTsKK30KKworc3RhdGljIHNpemVfdCBwYXJzZVg1MDlM
ZW5ndGgoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBzaXplX3Qgb2Zmc2V0KQorewor
ICAgIGlmICh1MmZEYXRhLnNpemUoKSA8PSBvZmZzZXQgfHwgdTJmRGF0YVtvZmZzZXRdICE9IFNl
cXVlbmNlTWFyaykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgb2Zmc2V0Kys7CisKKyAgICBpZiAo
dTJmRGF0YS5zaXplKCkgPD0gb2Zmc2V0KQorICAgICAgICByZXR1cm4gMDsKKyAgICBjb25zdCBh
dXRvIHNlcXVlbmNlTGVuZ3RoTGVuZ3RoID0gYnl0ZXNVc2VkVG9FbmNvZGVkTGVuZ3RoKHUyZkRh
dGFbb2Zmc2V0XSk7CisKKyAgICBpZiAoc2VxdWVuY2VMZW5ndGhMZW5ndGggPiBzaXplb2Yoc2l6
ZV90KSB8fCAodTJmRGF0YS5zaXplKCkgPCBvZmZzZXQgKyBzZXF1ZW5jZUxlbmd0aExlbmd0aCkp
CisgICAgICAgIHJldHVybiAwOworICAgIHNpemVfdCBzZXF1ZW5jZUxlbmd0aCA9IHNlcXVlbmNl
TGVuZ3RoTGVuZ3RoID09IDEgPyB1MmZEYXRhW29mZnNldF0gOiAwOworICAgIG9mZnNldCsrOwor
ICAgIGZvciAoYXV0byBpID0gc2VxdWVuY2VMZW5ndGhMZW5ndGggLSAxOyBpOyBpLS0sIG9mZnNl
dCsrKQorICAgICAgICBzZXF1ZW5jZUxlbmd0aCArPSB1MmZEYXRhW29mZnNldF0gPDwgKGkgLSAx
KSAqIDg7CisKKyAgICByZXR1cm4gc2VxdWVuY2VMZW5ndGggKyBzZXF1ZW5jZUxlbmd0aExlbmd0
aCArIHNpemVvZihTZXF1ZW5jZU1hcmspOworfQorCitzdGF0aWMgY2Jvcjo6Q0JPUlZhbHVlOjpN
YXBWYWx1ZSBjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnRGcm9tVTJmUmVnaXN0ZXJSZXNw
b25zZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIHNpemVfdCBvZmZzZXQpCit7Cisg
ICAgYXV0byB4NTA5TGVuZ3RoID0gcGFyc2VYNTA5TGVuZ3RoKHUyZkRhdGEsIG9mZnNldCk7Cisg
ICAgaWYgKCF4NTA5TGVuZ3RoIHx8IHUyZkRhdGEuc2l6ZSgpIDwgb2Zmc2V0ICsgeDUwOUxlbmd0
aCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB4NTA5OworICAg
IHg1MDkuYXBwZW5kKHUyZkRhdGEuZGF0YSgpICsgb2Zmc2V0LCB4NTA5TGVuZ3RoKTsKKyAgICBv
ZmZzZXQgKz0geDUwOUxlbmd0aDsKKworICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmU7Cisg
ICAgc2lnbmF0dXJlLmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIG9mZnNldCwgdTJmRGF0YS5zaXpl
KCkgLSBvZmZzZXQpOworICAgIGlmIChzaWduYXR1cmUuc2l6ZSgpIDwgbWluU2lnbmF0dXJlTGVu
Z3RoIHx8IHNpZ25hdHVyZS5zaXplKCkgPiBtYXhTaWduYXR1cmVMZW5ndGgpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGF0dGVzdGF0aW9uU3Rh
dGVtZW50TWFwOworICAgIGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwW2Nib3I6OkNCT1JWYWx1ZSgi
c2lnIildID0gY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoc2lnbmF0dXJlKSk7CisgICAgVmVjdG9y
PGNib3I6OkNCT1JWYWx1ZT4gY2JvckFycmF5OworICAgIGNib3JBcnJheS5hcHBlbmQoY2Jvcjo6
Q0JPUlZhbHVlKFdURk1vdmUoeDUwOSkpKTsKKyAgICBhdHRlc3RhdGlvblN0YXRlbWVudE1hcFtj
Ym9yOjpDQk9SVmFsdWUoIng1YyIpXSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGNib3JBcnJh
eSkpOworCisgICAgcmV0dXJuIGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwOworfQorCit9IC8vIG5h
bWVzcGFjZQorCitPcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVhZFUyZlJlZ2lz
dGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUy
ZkRhdGEpCit7CisgICAgYXV0byBwdWJsaWNLZXkgPSBleHRyYWN0RUNQdWJsaWNLZXlGcm9tVTJm
UmVnaXN0cmF0aW9uUmVzcG9uc2UodTJmRGF0YSk7CisgICAgaWYgKHB1YmxpY0tleS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGF0dGVzdGVkQ3Jl
ZGVudGlhbERhdGEgPSBjcmVhdGVBdHRlc3RlZENyZWRlbnRpYWxEYXRhRnJvbVUyZlJlZ2lzdGVy
UmVzcG9uc2UodTJmRGF0YSwgcHVibGljS2V5KTsKKyAgICBpZiAoYXR0ZXN0ZWRDcmVkZW50aWFs
RGF0YS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyBF
eHRyYWN0IHRoZSBjcmVkZW50aWFsSWQgZm9yIHBhY2tpbmcgaW50byB0aGUgcmVzcG9uc2UgZGF0
YS4KKyAgICBhdXRvIGNyZWRlbnRpYWxJZCA9IGV4dHJhY3RDcmVkZW50aWFsSWRGcm9tVTJmUmVn
aXN0cmF0aW9uUmVzcG9uc2UodTJmRGF0YSk7CisgICAgQVNTRVJUKCFjcmVkZW50aWFsSWQuaXNF
bXB0eSgpKTsKKworICAgIC8vIFRoZSBjb3VudGVyIGlzIHplcm9lZCBvdXQgZm9yIFJlZ2lzdGVy
IHJlcXVlc3RzLgorICAgIGF1dG8gYXV0aERhdGEgPSBidWlsZEF1dGhEYXRhKHJwSWQsIG1ha2VD
cmVkZW50aWFsRmxhZ3MsIDAsIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEpOworCisgICAgYXV0byBm
aWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnQgPSBjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnRG
cm9tVTJmUmVnaXN0ZXJSZXNwb25zZSh1MmZEYXRhLCBrVTJmS2V5SGFuZGxlT2Zmc2V0ICsgY3Jl
ZGVudGlhbElkLnNpemUoKSk7CisgICAgaWYgKGZpZG9BdHRlc3RhdGlvblN0YXRlbWVudC5lbXB0
eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBhdHRlc3RhdGlv
bk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJmaWRv
LXUyZiIsIFdURk1vdmUoZmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50KSk7CisKKyAgICByZXR1cm4g
UHVibGljS2V5Q3JlZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJ
ZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpLCB0cnVlLCBudWxscHRyLCBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3Quc2l6
ZSgpKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworfQorCitPcHRpb25hbDxQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YT4gcmVhZEZyb21VMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBy
cElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiB1MmZEYXRhKQoreworICAgIGlmIChrZXlIYW5kbGUuaXNFbXB0eSgpIHx8IHUyZkRhdGEu
c2l6ZSgpIDw9IHNpZ25hdHVyZUluZGV4KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgLy8gMSBieXRlIGZsYWdzLCA0IGJ5dGVzIGNvdW50ZXIKKyAgICBhdXRvIGZsYWdzID0g
dTJmRGF0YVtmbGFnSW5kZXhdOworICAgIHVpbnQzMl90IGNvdW50ZXIgPSB1MmZEYXRhW2NvdW50
ZXJJbmRleF0gPDwgMjQ7CisgICAgY291bnRlciArPSB1MmZEYXRhW2NvdW50ZXJJbmRleCArIDFd
IDw8IDE2OworICAgIGNvdW50ZXIgKz0gdTJmRGF0YVtjb3VudGVySW5kZXggKyAyXSA8PCA4Owor
ICAgIGNvdW50ZXIgKz0gdTJmRGF0YVtjb3VudGVySW5kZXggKyAzXTsKKyAgICBhdXRvIGF1dGhE
YXRhID0gYnVpbGRBdXRoRGF0YShycElkLCBmbGFncywgY291bnRlciwgeyB9KTsKKworICAgIHJl
dHVybiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoa2V5SGFu
ZGxlLmRhdGEoKSwga2V5SGFuZGxlLnNpemUoKSksIGZhbHNlLCBudWxscHRyLCBudWxscHRyLCBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhEYXRhLmRhdGEoKSwgYXV0aERhdGEuc2l6ZSgpKSwgQXJy
YXlCdWZmZXI6OmNyZWF0ZSh1MmZEYXRhLmRhdGEoKSArIHNpZ25hdHVyZUluZGV4LCB1MmZEYXRh
LnNpemUoKSAtIHNpZ25hdHVyZUluZGV4KSwgbnVsbHB0ciB9OworfQorCit9IC8vIG5hbWVzcGFj
ZSBmaWRvCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNmE0MWY4NzNkOGJiYzRmOWE1YTBmMDdlMzBkNjdmMjdkZjJhYmNjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmgKQEAgLTAsMCArMSw0OSBAQAorLy8gQ29weXJpZ2h0IDIwMTgg
VGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBmaWRvIHsKKworLy8gQ29udmVydHMgYSBV
MkYgcmVnaXN0ZXIgcmVzcG9uc2UgdG8gV2ViQXV0aE4gbWFrZUNyZWRlbnRpYWwgcmVzcG9uc2Uu
CisvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3
L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5o
dG1sI3UyZi1hdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWwtaW50ZXJvcGVyYWJpbGl0eQorV0VC
Q09SRV9FWFBPUlQgT3B0aW9uYWw8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJl
YWRVMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiB1MmZEYXRhKTsKKworLy8gQ29udmVydHMgYSBVMkYgYXV0aGVudGljYXRpb24gcmVz
cG9uc2UgdG8gV2ViQXV0aE4gZ2V0QXNzZXJ0aW9uIHJlc3BvbnNlLgorLy8gaHR0cHM6Ly9maWRv
YWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1h
dXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0aGVudGlj
YXRvckdldEFzc2VydGlvbi1pbnRlcm9wZXJhYmlsaXR5CitXRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVhZEZyb21VMmZTaWduUmVzcG9u
c2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKTsKKworfSAvLyBuYW1lc3BhY2UgZmlkbwor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKaW5kZXggZGJiODAzYmUyNzMy
MWI5YmU2Y2RmNTlkOTExYWZiYzAzMzg0Mjk0Mi4uMDRkZTdkMmE2MmI3ZWMzZDE1OTgxYzYwOTYy
OGU1NTNlMzNhOGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJH
UFVDb21tYW5kQnVmZmVyLmgiCiAjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIK
ICNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIgorI2luY2x1ZGUgIkdQVVJlbmRlclBp
cGVsaW5lLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggZTdkOTM0YWQyN2YxYmZhOTEyMzFlMWQ4NmRmMGI3NDE5ZDgzOGI5MC4u
ZWEyOTU3ODljNWJmYzg4MTgxYTE0ZjMyNTA1N2JhYzA0NWFmODY5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTI1Niw2ICsyNTYsNyBAQCBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3Iu
Y3BwCiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKIE1vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcAogTW9kdWxlcy93
ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmNwcAorTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRo
ZW50aWNhdGlvblV0aWxzLmNwcAogTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21tYW5kLmNw
cAogTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVSZXNwb25zZS5jcHAKIE1vZHVsZXMvd2ViYXV0
aG4vY2Jvci9DQk9SUmVhZGVyLmNwcApAQCAtMjY5LDYgKzI3MCw4IEBAIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9GaWRvQ29uc3RhbnRzLmNwcAogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRN
ZXNzYWdlLmNwcAogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCiBNb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb1BhcnNpbmdVdGlscy5jcHAKK01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwCitNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJm
UmVzcG9uc2VDb252ZXJ0ZXIuY3BwCiAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lv
bldyYXBwZXIuY3BwCiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGRlNDUyYzA2MmE2YmEyNmY0NzMyNzA3N2ZjMWY5OWFjZmNmZDhjZWIuLmQ5MTdiNTgw
YzAzODQ4ZjY0NzY1Y2U3ZTg4Njg0N2E3MWUxYjEyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODMsNiArMTc4Myw5IEBA
CiAJCTU3MTI1MjY5MUU1MjRFQjEwMDhGRjM2OSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzEyNTI2ODFF
NTI0RUIxMDA4RkYzNjkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQi5oICovOyB9OwogCQk1NzE1
MkI1QTIxQ0IzRTg4MDAwQzM3Q0EgLyogQXBkdUNvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjU4MjFDQjJFM0IwMDBDMzdDQSAvKiBB
cGR1Q29tbWFuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTU3MTUyQjVDMjFDQzE5MDIwMDBDMzdDQSAvKiBBcGR1UmVzcG9uc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjU2MjFDQjJFM0Ew
MDBDMzdDQSAvKiBBcGR1UmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1NzE1MkI2RTIxQ0Q5OTVEMDAwQzM3Q0EgLyogVTJmQ29tbWFu
ZENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzE1MkI2QzIxQ0Q5OTVDMDAwQzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTcxNTJC
N0MyMUREOEJBMTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29udmVydGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1MkI3QTIxREQ4QkExMDAwQzM3
Q0EgLyogVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1NzE1MkI4MDIxRERBNTgxMDAwQzM3Q0EgLyogV2ViQXV0
aGVudGljYXRpb25VdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTcxNTJCN0UyMUREQTU4MTAwMEMzN0NBIC8qIFdlYkF1dGhlbnRpY2F0aW9uVXRp
bHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
NzFGMjE4OTFEQTU3QzU0MDA1QzlFRkQgLyogSlNTdWJ0bGVDcnlwdG8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MUYyMTg4MURBNTdDNTQwMDVDOUVG
RCAvKiBKU1N1YnRsZUNyeXB0by5oICovOyB9OwogCQk1NzIwOTNEMzFERENFQjlBMDAzMTBBQjAg
LyogQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzIwOTNEMjFERENFQjlBMDAzMTBBQjAgLyogQ3J5
cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zLmggKi87IH07CiAJCTU3MjFBOTg3MUVDRTUzQjEw
MDgxMjk1QSAvKiBDcnlwdG9EaWdlc3RBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MjFBOTg2MUVDRTUzQjEwMDgxMjk1QSAvKiBDcnlw
dG9EaWdlc3RBbGdvcml0aG0uaCAqLzsgfTsKQEAgLTE4MTYsOCArMTgxOSw4IEBACiAJCTU3MzQ4
OTM5MURBQzZCNkUwMERDMDY2NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM0ODkzODFEQUM2QjZE
MDBEQzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovOyB9OwogCQk1NzM5RTEy
RjFEQUM3Rjc4MDBFMTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM5RTEyRTFEQUM3Rjc4
MDBFMTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggKi87IH07CiAJCTU3M0Y1
MzMyMjE2ODA2RTEwMDQ1NTg3QSAvKiBGaWRvSGlkTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCQUYyOEEyMTY3RDMwMzAwOEU5NTRFIC8q
IEZpZG9IaWRNZXNzYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJNTczRjUzMzcyMTY4MEQxNTAwNDU1ODdBIC8qIEZpZG9QYXJzaW5nVXRpbHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0Y1MzM1
MjE2ODBEMTQwMDQ1NTg3QSAvKiBGaWRvUGFyc2luZ1V0aWxzLmggKi87IH07Ci0JCTU3NEY1NUUx
MjA0RjNCMjMwMDI5NDhDNiAvKiBDT1NFQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzRGNTVEQzIwNEYzNzMyMDAyOTQ4QzYgLyogQ09T
RUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTU3M0Y1MzM3MjE2ODBEMTUwMDQ1NTg3QSAvKiBGaWRvUGFyc2luZ1V0aWxzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzNGNTMzNTIxNjgw
RDE0MDA0NTU4N0EgLyogRmlkb1BhcnNpbmdVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3NEY1NUUxMjA0RjNCMjMwMDI5NDhDNiAvKiBX
ZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTc0RjU1REMyMDRGMzczMjAwMjk0OEM2IC8qIFdlYkF1dGhlbnRp
Y2F0aW9uQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTc1MEE5NzUxRTY4RDAwMDAwNzA1QzRBIC8qIENyeXB0b0tleUVDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzUwQTk3MzFFNjhE
MDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCAqLzsgfTsKIAkJNTc1MEE5N0UxRTZBMTNFRjAw
NzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzUwQTk3RDFFNkExM0VGMDA3MDVDNEEgLyog
Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXMuaCAqLzsgfTsKIAkJNTc1MEE5ODIxRTZBMTUwODAw
NzA1QzRBIC8qIEpTRWNLZXlQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3NTBBOTgwMUU2QTE1MDgwMDcwNUM0QSAvKiBKU0VjS2V5UGFyYW1z
LmggKi87IH07CkBAIC04NTkyLDYgKzg1OTUsMTIgQEAKIAkJNTcxNTJCNTYyMUNCMkUzQTAwMEMz
N0NBIC8qIEFwZHVSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBB
cGR1UmVzcG9uc2UuaDsgcGF0aCA9IE1vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1UmVzcG9uc2Uu
aDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1NzE1MkI1NzIxQ0IyRTNBMDAwQzM3
Q0EgLyogQXBkdUNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQXBkdUNvbW1hbmQuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21t
YW5kLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1NzE1MkI1ODIxQ0IyRTNC
MDAwQzM3Q0EgLyogQXBkdUNvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQXBkdUNvbW1hbmQuaDsgcGF0aCA9IE1vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFu
ZC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTU3MTUyQjZBMjFDRDk5NUMwMDBD
MzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTcxNTJCNkMyMUNEOTk1QzAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25z
dHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVMmZDb21tYW5kQ29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcxNTJCN0EyMUREOEJB
MTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFUyZlJl
c3BvbnNlQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MTUyQjdC
MjFERDhCQTEwMDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU3MTUyQjdFMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50aWNhdGlvblV0aWxz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTcxNTJCN0YyMUREQTU4MTAwMEMzN0NBIC8qIFdlYkF1dGhlbnRp
Y2F0aW9uVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0aGVudGljYXRpb25VdGls
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MUYyMTg4MURBNTdDNTQwMDVD
OUVGRCAvKiBKU1N1YnRsZUNyeXB0by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1N1YnRsZUNyeXB0by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzFGMjE4
QTFEQTU3QzdBMDA1QzlFRkQgLyogSlNTdWJ0bGVDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdWJ0bGVDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzIwOTNEMTFERENFQTRCMDAzMTBBQjAgLyogQWVzQ2JjQ2ZiUGFyYW1z
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBBZXNDYmNDZmJQYXJhbXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODY1OCw3ICs4NjY3LDcgQEAKIAkJNTczRjUzMzYyMTY4MEQxNTAwNDU1ODdBIC8qIEZp
ZG9QYXJzaW5nVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Rmlkb1BhcnNpbmdVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NEFD
NzUzMURBQzM2N0QwMEU5NzQ0QyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0RDQyNzkxRDU5NEZGNjAwMkNGNTBFIC8qIEdsb2Jh
bENyeXB0by5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2xvYmFsQ3J5cHRvLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc0RjU1REMyMDRGMzczMjAwMjk0OEM2IC8qIENP
U0VDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ09TRUNvbnN0
YW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzRGNTVEQzIwNEYzNzMyMDAy
OTQ4QzYgLyogV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTc0RjU1RTIyMDRGM0NCRjAwMjk0OEM2IC8qIExvY2FsQXV0aGVu
dGljYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBMb2NhbEF1dGhlbnRpY2F0aW9u
LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvTG9jYWxBdXRoZW50
aWNhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQk1NzUwQTk3MjFF
NjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ3J5cHRvS2V5RUMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzUwQTk3MzFFNjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvS2V5RUMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE5MzIwLDYgKzE5MzI5LDEwIEBACiAJCQkJNTc4QTRDMEEyMTY3RDI5NjAw
RDA4RjM0IC8qIEZpZG9IaWRQYWNrZXQuaCAqLywKIAkJCQk1NzNGNTMzNjIxNjgwRDE1MDA0NTU4
N0EgLyogRmlkb1BhcnNpbmdVdGlscy5jcHAgKi8sCiAJCQkJNTczRjUzMzUyMTY4MEQxNDAwNDU1
ODdBIC8qIEZpZG9QYXJzaW5nVXRpbHMuaCAqLywKKwkJCQk1NzE1MkI2QTIxQ0Q5OTVDMDAwQzM3
Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk1NzE1MkI2QzIxQ0Q5OTVD
MDAwQzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yLmggKi8sCisJCQkJNTcxNTJCN0IyMURE
OEJBMTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29udmVydGVyLmNwcCAqLywKKwkJCQk1NzE1MkI3
QTIxREQ4QkExMDAwQzM3Q0EgLyogVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gZmlkbzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xOTM3OSw3ICsx
OTM5Miw2IEBACiAJCQkJNTczMDNCRDEyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JS
ZXNwb25zZS5pZGwgKi8sCiAJCQkJNTdEQ0VEOEMyMTQ4N0VEQjAwMTZCODQ3IC8qIEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQuaCAqLywKIAkJCQk1N0RDRUQ4RTIxNDg3RURCMDAxNkI4NDcgLyogQXV0
aGVudGljYXRvclRyYW5zcG9ydC5pZGwgKi8sCi0JCQkJNTc0RjU1REMyMDRGMzczMjAwMjk0OEM2
IC8qIENPU0VDb25zdGFudHMuaCAqLywKIAkJCQk1N0Q4NDYyQzFGRUFGNjhGMDBDQTM2ODIgLyog
UHVibGljS2V5Q3JlZGVudGlhbC5jcHAgKi8sCiAJCQkJNTdEODQ2MkIxRkVBRjY4RjAwQ0EzNjgy
IC8qIFB1YmxpY0tleUNyZWRlbnRpYWwuaCAqLywKIAkJCQk1N0Q4NDYyRDFGRUFGNjhGMDBDQTM2
ODIgLyogUHVibGljS2V5Q3JlZGVudGlhbC5pZGwgKi8sCkBAIC0xOTM5NCw2ICsxOTQwNiw5IEBA
CiAJCQkJNTczMDNCRjAyMDA5ODQ2MTAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxUeXBl
LmlkbCAqLywKIAkJCQk1NzJCNDAyMzIxNzY4RDg1MDAwQUQ0M0UgLyogVXNlclZlcmlmaWNhdGlv
blJlcXVpcmVtZW50LmggKi8sCiAJCQkJNTcyQjQwMjUyMTc2OEQ4NTAwMEFENDNFIC8qIFVzZXJW
ZXJpZmljYXRpb25SZXF1aXJlbWVudC5pZGwgKi8sCisJCQkJNTc0RjU1REMyMDRGMzczMjAwMjk0
OEM2IC8qIFdlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmggKi8sCisJCQkJNTcxNTJCN0YyMURE
QTU4MTAwMEMzN0NBIC8qIFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwICovLAorCQkJCTU3MTUy
QjdFMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50aWNhdGlvblV0aWxzLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IHdlYmF1dGhuOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI4
MjQ2LDcgKzI4MjYxLDYgQEAKIAkJCQkzRjgwMjAzNzFFOUU0N0M1MDBERUM2MUQgLyogQ29yZUF1
ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QUZGNDIyMUVG
QjE0NDkwMEI1NDVCMyAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRDdEMzM0ODFDN0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBp
biBIZWFkZXJzICovLAotCQkJCTU3NEY1NUUxMjA0RjNCMjMwMDI5NDhDNiAvKiBDT1NFQ29uc3Rh
bnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjJGMTI5RTE4QzE1NzZGMDA1QzU0QUYgLyogQ291
bnRlZFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAw
N0ZCOEM1IC8qIENvdW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIw
MEIyNTk2NSAvKiBDb3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTYzMCw2ICsz
MTY0NCw4IEBACiAJCQkJNEJBRkQwRTEyMTkyNDJBMDAwQzBBQjY0IC8qIFR5cGVkT01DU1NVbml0
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCQUZEMEQ5MjE5MjFFQTAwMEMwQUI2NCAvKiBU
eXBlZE9NQ1NTVW5wYXJzZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUEwOTlF
NjQ5MjAwNTZFNTgxIC8qIFR5cGluZ0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MTUy
QjZFMjFDRDk5NUQwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTU3MTUyQjdDMjFERDhCQTEwMDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEUwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRkU3Q0E3MURBOUYxQTcwMDM3MjM3QyAvKiBVSUV2
ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEYwQTQ0RUZDNzAwRjk5MkUwIC8q
IFVJRXZlbnRXaXRoS2V5U3RhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3MzYsNiArMzE3NTIs
OCBAQAogCQkJCTQxN0Y3QUVFMjEzOUJGNjgwMEZCQTdFQyAvKiBXZWJBdWRpb0J1ZmZlckxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxQjJBNjI2MUVGMUJGNkQwMDJCOUQ3QSAvKiBXZWJBdWRp
b1NvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Q2Mzc0MDFCQjBCMTEzMDAy
NTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU3NEY1NUUxMjA0RjNCMjMwMDI5NDhDNiAvKiBXZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcxNTJCODAyMUREQTU4MTAwMEMzN0NBIC8qIFdlYkF1
dGhlbnRpY2F0aW9uVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGMzZFQTlDMUUyMUJBMTcw
MDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1QjgxQ0I1MUZBQTQ0NjIwMDM3RDFFNiAvKiBXZWJDb25zb2xlQWdlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTlCQkEyQ0FCMUY2NzlFMEMwMEZEMUMxRSAvKiBXZWJDb250ZW50UmVhZGVy
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5t
bQppbmRleCAwMjU3YzBkOGE2YmIyMjkwNDlmMzE0YmUwMWRjOTQ5OGQ3MTgyNWY0Li5lZmMzZTE2
MGI0OGJjNmUzYjdkYWU1NDRhNTIyMzQ3Yzk3OGI5MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0zMCwxMSArMzAsMTIgQEAKIAogI2ltcG9ydCA8U2Vj
dXJpdHkvU2VjSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DQk9SV3JpdGVyLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL0NPU0VDb25zdGFudHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uRGF0
YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgorI2ltcG9ydCA8
V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmg+CiAjaW1wb3J0IDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2Vz
dC5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTUwLDUwICs1MSwxMCBAQCBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWwg
ewogLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jZmxhZ3MuCiBjb25zdCB1
aW50OF90IG1ha2VDcmVkZW50aWFsRmxhZ3MgPSAwYjAxMDAwMTAxOyAvLyBVUCwgVVYgYW5kIEFU
IGFyZSBzZXQuCiBjb25zdCB1aW50OF90IGdldEFzc2VydGlvbkZsYWdzID0gMGIwMDAwMDEwMTsg
Ly8gVVAgYW5kIFVWIGFyZSBzZXQuCi0vLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zODMyMDUxMik6
IERlZmluZSBBcHBsZSBBQUdVSUQuCi1jb25zdCB1aW50OF90IEFBR1VJRFtdID0gezB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDB9OyAvLyAxNiBieXRlcwogLy8gQ3JlZGVudGlh
bCBJRCBpcyBjdXJyZW50bHkgU0hBLTEgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcHVibGljIGtleS4K
LS8vIEZJWE1FKDE4MzUzNCk6IEFzc3VtZSBsaXR0bGUgZW5kaWFuIGhlcmUuCi1jb25zdCB1bmlv
biB7Ci0gICAgdWludDE2X3QgaW50ZWdlcjsKLSAgICB1aW50OF90IGJ5dGVzWzJdOwotfSBjcmVk
ZW50aWFsSWRMZW5ndGggPSB7MHgwMDE0fTsKLWNvbnN0IHNpemVfdCBFUzI1NktleVNpemVJbkJ5
dGVzID0gMzI7Ci1jb25zdCBzaXplX3QgYXV0aERhdGFQcmVmaXhGaXhlZFNpemUgPSAzNzsgLy8g
aGFzaCgzMikgKyBmbGFncygxKSArIGNvdW50ZXIoNCkKK2NvbnN0IHVpbnQxNl90IGNyZWRlbnRp
YWxJZExlbmd0aCA9IDIwOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLS8vIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi93ZWJhdXRobi8jc2VjLWF1dGhlbnRpY2F0b3ItZGF0YQotc3RhdGljIFZl
Y3Rvcjx1aW50OF90PiBidWlsZEF1dGhEYXRhKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgdWlu
dDhfdCBmbGFncywgdWludDMyX3QgY291bnRlciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBvcHRp
b25hbEF0dGVzdGVkQ3JlZGVudGlhbERhdGEpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGF1dGhE
YXRhOwotICAgIGF1dGhEYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXV0aERhdGFQcmVmaXhG
aXhlZFNpemUgKyBvcHRpb25hbEF0dGVzdGVkQ3JlZGVudGlhbERhdGEuc2l6ZSgpKTsKLQotICAg
IC8vIFJQIElEIGhhc2gKLSAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVh
dGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7Ci0gICAgLy8gRklYTUUo
MTgzNTM0KTogVGVzdCBJRE4uCi0gICAgQVNTRVJUKHJwSWQuaXNBbGxBU0NJSSgpKTsKLSAgICBh
dXRvIGFzY2lpUnBJZCA9IHJwSWQuYXNjaWkoKTsKLSAgICBjcnlwdG8tPmFkZEJ5dGVzKGFzY2lp
UnBJZC5kYXRhKCksIGFzY2lpUnBJZC5sZW5ndGgoKSk7Ci0gICAgYXV0aERhdGEgPSBjcnlwdG8t
PmNvbXB1dGVIYXNoKCk7Ci0KLSAgICAvLyBGTEFHUwotICAgIGF1dGhEYXRhLmFwcGVuZChmbGFn
cyk7Ci0KLSAgICAvLyBDT1VOVEVSCi0gICAgLy8gRklYTUUoMTgzNTM0KTogQXNzdW1lIGxpdHRs
ZSBlbmRpYW4gaGVyZS4KLSAgICB1bmlvbiB7Ci0gICAgICAgIHVpbnQzMl90IGludGVnZXI7Ci0g
ICAgICAgIHVpbnQ4X3QgYnl0ZXNbNF07Ci0gICAgfSBjb3VudGVyVW5pb247Ci0gICAgY291bnRl
clVuaW9uLmludGVnZXIgPSBjb3VudGVyOwotICAgIGF1dGhEYXRhLmFwcGVuZChjb3VudGVyVW5p
b24uYnl0ZXMsIHNpemVvZihjb3VudGVyVW5pb24uYnl0ZXMpKTsKLQotICAgIC8vIEFUVEVTVEVE
IENSRUQuIERBVEEKLSAgICBhdXRoRGF0YS5hcHBlbmRWZWN0b3Iob3B0aW9uYWxBdHRlc3RlZENy
ZWRlbnRpYWxEYXRhKTsKLQotICAgIHJldHVybiBhdXRoRGF0YTsKLX0KLQogc3RhdGljIGlubGlu
ZSBib29sIGVtcHR5VHJhbnNwb3J0c09yQ29udGFpbihjb25zdCBWZWN0b3I8QXV0aGVudGljYXRv
clRyYW5zcG9ydD4mIHRyYW5zcG9ydHMsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdGFyZ2V0KQog
ewogICAgIHJldHVybiB0cmFuc3BvcnRzLmlzRW1wdHkoKSA/IHRydWUgOiB0cmFuc3BvcnRzLmNv
bnRhaW5zKHRhcmdldCk7CkBAIC0xMDUsNyArNjYsNyBAQCBzdGF0aWMgaW5saW5lIEhhc2hTZXQ8
U3RyaW5nPiBwcm9kdWNlSGFzaFNldChjb25zdCBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbERl
cwogICAgIGZvciAoYXV0byYgY3JlZGVudGlhbERlc2NyaXB0b3IgOiBjcmVkZW50aWFsRGVzY3Jp
cHRvcnMpIHsKICAgICAgICAgaWYgKGVtcHR5VHJhbnNwb3J0c09yQ29udGFpbihjcmVkZW50aWFs
RGVzY3JpcHRvci50cmFuc3BvcnRzLCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkK
ICAgICAgICAgICAgICYmIGNyZWRlbnRpYWxEZXNjcmlwdG9yLnR5cGUgPT0gUHVibGljS2V5Q3Jl
ZGVudGlhbFR5cGU6OlB1YmxpY0tleQotICAgICAgICAgICAgJiYgY3JlZGVudGlhbERlc2NyaXB0
b3IuaWRWZWN0b3Iuc2l6ZSgpID09IGNyZWRlbnRpYWxJZExlbmd0aC5pbnRlZ2VyKQorICAgICAg
ICAgICAgJiYgY3JlZGVudGlhbERlc2NyaXB0b3IuaWRWZWN0b3Iuc2l6ZSgpID09IGNyZWRlbnRp
YWxJZExlbmd0aCkKICAgICAgICAgICAgIHJlc3VsdC5hZGQoU3RyaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGNyZWRlbnRpYWxEZXNjcmlwdG9yLmlkVmVjdG9yLmRhdGEoKSksIGNy
ZWRlbnRpYWxEZXNjcmlwdG9yLmlkVmVjdG9yLnNpemUoKSkpOwogICAgIH0KICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMzA3LDIyICsyNjgsMTAgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiBwcml2YXRlS2UKICAg
ICAvLyBGSVhNRSgxODM1MzMpOiBzdG9yZSB0aGUgY291bnRlci4KICAgICB1aW50MzJfdCBjb3Vu
dGVyID0gMDsKIAotICAgIC8vIEZJWE1FKDE4MzUzNCk6IGF0dGVzdGVkQ3JlZGVudGlhbERhdGEg
Y291bGQgdGhyb3R0bGUuCiAgICAgLy8gU3RlcCAxMS4gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dl
YmF1dGhuLyNhdHRlc3RlZC1jcmVkZW50aWFsLWRhdGEKLSAgICBWZWN0b3I8dWludDhfdD4gYXR0
ZXN0ZWRDcmVkZW50aWFsRGF0YTsKKyAgICAvLyBjcmVkZW50aWFsUHVibGljS2V5CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGNvc2VQdWJsaWNLZXk7CiAgICAgewotICAgICAgICAvLyBhYWd1aWQKLSAg
ICAgICAgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YS5hcHBlbmQoQUFHVUlELCBzaXplb2YoQUFHVUlE
KSk7Ci0KLSAgICAgICAgLy8gY3JlZGVudGlhbElkTGVuZ3RoCi0gICAgICAgIEFTU0VSVChjcmVk
ZW50aWFsSWQuc2l6ZSgpID09IGNyZWRlbnRpYWxJZExlbmd0aC5pbnRlZ2VyKTsKLSAgICAgICAg
Ly8gRklYTUUoMTgzNTM0KTogQXNzdW1lIGxpdHRsZSBlbmRpYW4gaGVyZS4KLSAgICAgICAgYXR0
ZXN0ZWRDcmVkZW50aWFsRGF0YS5hcHBlbmQoY3JlZGVudGlhbElkTGVuZ3RoLmJ5dGVzLCBzaXpl
b2YodWludDE2X3QpKTsKLQotICAgICAgICAvLyBjcmVkZW50aWFsSWQKLSAgICAgICAgYXR0ZXN0
ZWRDcmVkZW50aWFsRGF0YS5hcHBlbmRWZWN0b3IoY3JlZGVudGlhbElkKTsKLQotICAgICAgICAv
LyBjcmVkZW50aWFsUHVibGljS2V5CiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHB1Ymxp
Y0tleURhdGFSZWY7CiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gcHVibGljS2V5ID0gYWRv
cHRDRihTZWNLZXlDb3B5UHVibGljS2V5KHByaXZhdGVLZXkpKTsKQEAgLTMzNCwyOSArMjgzLDE4
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJB
dHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiAgICAgICAgICAgICAgICAgcmVjZWl2ZVJlc3Bv
bmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3Iu
Il9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIEFTU0VSVCgoKE5TRGF0YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0KCkpLmxlbmd0aCA9PSAo
MSArIDIgKiBFUzI1NktleVNpemVJbkJ5dGVzKSk7IC8vIDA0IHwgWCB8IFkKKyAgICAgICAgICAg
IEFTU0VSVCgoKE5TRGF0YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0KCkpLmxlbmd0aCA9PSAoMSAr
IDIgKiBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCkpOyAvLyAwNCB8IFggfCBZCiAgICAgICAgIH0K
IAogICAgICAgICAvLyBDT1NFIEVuY29kaW5nCi0gICAgICAgIC8vIEZJWE1FKDE4MzUzNSk6IElt
cHJvdmUgQ0JPUiBlbmNvZGVyIHRvIHdvcmsgd2l0aCBieXRlcyBkaXJlY3RseS4KLSAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHgoRVMyNTZLZXlTaXplSW5CeXRlcyk7Ci0gICAgICAgIFsoTlNEYXRh
ICopcHVibGljS2V5RGF0YVJlZi5nZXQoKSBnZXRCeXRlczogeC5kYXRhKCkgcmFuZ2U6TlNNYWtl
UmFuZ2UoMSwgRVMyNTZLZXlTaXplSW5CeXRlcyldOwotICAgICAgICBWZWN0b3I8dWludDhfdD4g
eShFUzI1NktleVNpemVJbkJ5dGVzKTsKLSAgICAgICAgWyhOU0RhdGEgKilwdWJsaWNLZXlEYXRh
UmVmLmdldCgpIGdldEJ5dGVzOiB5LmRhdGEoKSByYW5nZTpOU01ha2VSYW5nZSgxICsgRVMyNTZL
ZXlTaXplSW5CeXRlcywgRVMyNTZLZXlTaXplSW5CeXRlcyldOwotICAgICAgICBjYm9yOjpDQk9S
VmFsdWU6Ok1hcFZhbHVlIHB1YmxpY0tleU1hcDsKLSAgICAgICAgcHVibGljS2V5TWFwW2Nib3I6
OkNCT1JWYWx1ZShDT1NFOjprdHkpXSA9IGNib3I6OkNCT1JWYWx1ZShDT1NFOjpFQzIpOwotICAg
ICAgICBwdWJsaWNLZXlNYXBbY2Jvcjo6Q0JPUlZhbHVlKENPU0U6OmFsZyldID0gY2Jvcjo6Q0JP
UlZhbHVlKENPU0U6OkVTMjU2KTsKLSAgICAgICAgcHVibGljS2V5TWFwW2Nib3I6OkNCT1JWYWx1
ZShDT1NFOjpjcnYpXSA9IGNib3I6OkNCT1JWYWx1ZShDT1NFOjpQXzI1Nik7Ci0gICAgICAgIHB1
YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6eCldID0gY2Jvcjo6Q0JPUlZhbHVlKFdU
Rk1vdmUoeCkpOwotICAgICAgICBwdWJsaWNLZXlNYXBbY2Jvcjo6Q0JPUlZhbHVlKENPU0U6Onkp
XSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKHkpKTsKLSAgICAgICAgYXV0byBjb3NlUHVibGlj
S2V5ID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUocHVi
bGljS2V5TWFwKSkpOwotICAgICAgICBpZiAoIWNvc2VQdWJsaWNLZXkpIHsKLSAgICAgICAgICAg
IExPR19FUlJPUigiQ291bGRuJ3QgZW5jb2RlIHRoZSBwdWJsaWMga2V5IGludG8gQ09TRSBiaW5h
cmllcy4iKTsKLSAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtu
b3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBhdHRlc3RlZENyZWRlbnRpYWxEYXRhLmFwcGVuZFZl
Y3Rvcihjb3NlUHVibGljS2V5LnZhbHVlKCkpOworICAgICAgICBWZWN0b3I8dWludDhfdD4geChF
UzI1NkZpZWxkRWxlbWVudExlbmd0aCk7CisgICAgICAgIFsoTlNEYXRhICopcHVibGljS2V5RGF0
YVJlZi5nZXQoKSBnZXRCeXRlczogeC5kYXRhKCkgcmFuZ2U6TlNNYWtlUmFuZ2UoMSwgRVMyNTZG
aWVsZEVsZW1lbnRMZW5ndGgpXTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHkoRVMyNTZGaWVs
ZEVsZW1lbnRMZW5ndGgpOworICAgICAgICBbKE5TRGF0YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0
KCkgZ2V0Qnl0ZXM6IHkuZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEgKyBFUzI1NkZpZWxkRWxl
bWVudExlbmd0aCwgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpXTsKKyAgICAgICAgY29zZVB1Ymxp
Y0tleSA9IGVuY29kZUVTMjU2UHVibGljS2V5QXNDQk9SKFdURk1vdmUoeCksIFdURk1vdmUoeSkp
OwogICAgIH0KKyAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zODMyMDUxMik6IERlZmluZSBB
cHBsZSBBQUdVSUQuCisgICAgYXV0byBhdHRlc3RlZENyZWRlbnRpYWxEYXRhID0gYnVpbGRBdHRl
c3RlZENyZWRlbnRpYWxEYXRhKFZlY3Rvcjx1aW50OF90PihhYWd1aWRMZW5ndGgsIDApLCBjcmVk
ZW50aWFsSWQsIGNvc2VQdWJsaWNLZXkpOwogCiAgICAgLy8gU3RlcCAxMi4KICAgICBhdXRvIGF1
dGhEYXRhID0gYnVpbGRBdXRoRGF0YShyZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5p
ZCwgbWFrZUNyZWRlbnRpYWxGbGFncywgY291bnRlciwgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSk7
CkBAIC0zODYsMTkgKzMyNCw5IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1h
a2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiAgICAgICAgICAg
ICBjYm9yQXJyYXkuYXBwZW5kKGNib3I6OkNCT1JWYWx1ZSh0b1ZlY3RvcigoTlNEYXRhICopYWRv
cHRDRihTZWNDZXJ0aWZpY2F0ZUNvcHlEYXRhKChfX2JyaWRnZSBTZWNDZXJ0aWZpY2F0ZVJlZilj
ZXJ0aWZpY2F0ZXNbaV0pKS5nZXQoKSkpKTsKICAgICAgICAgYXR0ZXN0YXRpb25TdGF0ZW1lbnRN
YXBbY2Jvcjo6Q0JPUlZhbHVlKCJ4NWMiKV0gPSBjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZShjYm9y
QXJyYXkpKTsKICAgICB9CisgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0
YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJBcHBsZSIsIFdURk1vdmUoYXR0ZXN0YXRp
b25TdGF0ZW1lbnRNYXApKTsKIAotICAgIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgYXR0ZXN0
YXRpb25PYmplY3RNYXA7Ci0gICAgYXR0ZXN0YXRpb25PYmplY3RNYXBbY2Jvcjo6Q0JPUlZhbHVl
KCJhdXRoRGF0YSIpXSA9IGNib3I6OkNCT1JWYWx1ZShhdXRoRGF0YSk7Ci0gICAgYXR0ZXN0YXRp
b25PYmplY3RNYXBbY2Jvcjo6Q0JPUlZhbHVlKCJmbXQiKV0gPSBjYm9yOjpDQk9SVmFsdWUoIkFw
cGxlIik7Ci0gICAgYXR0ZXN0YXRpb25PYmplY3RNYXBbY2Jvcjo6Q0JPUlZhbHVlKCJhdHRTdG10
IildID0gY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoYXR0ZXN0YXRpb25TdGF0ZW1lbnRNYXApKTsK
LSAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jv
cjo6Q0JPUlZhbHVlKFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3RNYXApKSk7Ci0gICAgaWYgKCFh
dHRlc3RhdGlvbk9iamVjdCkgewotICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGVuY29kZSB0
aGUgYXR0ZXN0YXRpb24gb2JqZWN0LiIpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRp
b25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByZWNlaXZlUmVzcG9uZChQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3Jl
ZGVudGlhbElkLnNpemUoKSksIHRydWUsIG51bGxwdHIsIEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0
ZXN0YXRpb25PYmplY3QudmFsdWUoKS5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnZhbHVlKCku
c2l6ZSgpKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9KTsKKyAgICByZWNlaXZlUmVzcG9u
ZChQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlh
bElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIHRydWUsIG51bGxwdHIsIEFycmF5QnVm
ZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5z
aXplKCkpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH0pOwogI2VuZGlmIC8vICFQTEFURk9S
TShJT1NfRkFNSUxZKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3Bw
CmluZGV4IGI3ZmM4MDg2MjU4MWE5OWY1MTk2YTcxMmM1N2E0ZmMwY2ExOWEyYzMuLjBiMTc2OTli
ZGRlOTc4NGI0Yzc4NjNkOWQ3YmU5MjQ1NDY1ZjJhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0hpZENvbm5lY3Rpb24uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9B
dXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQk9SUmVh
ZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgogI2luY2x1ZGUgPHd0Zi9CbG9ja1B0
ci5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgdm9pZCBNb2NrSGlkQ29u
bmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQogCiAgICAgT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IG1l
c3NhZ2U7CiAgICAgaWYgKG1fc3RhZ2UgPT0gTW9jazo6U3RhZ2U6OkluZm8gJiYgbV9zdWJTdGFn
ZSA9PSBNb2NrOjpTdWJTdGFnZTo6TXNnKSB7Ci0gICAgICAgIGF1dG8gaW5mb0RhdGEgPSBlbmNv
ZGVBc0NCT1IoQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSh7IFByb3RvY29sVmVyc2lvbjo6
a0N0YXAgfSwgVmVjdG9yPHVpbnQ4X3Q+KGtBYWd1aWRMZW5ndGgsIDB1KSkpOworICAgICAgICBh
dXRvIGluZm9EYXRhID0gZW5jb2RlQXNDQk9SKEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Uo
eyBQcm90b2NvbFZlcnNpb246OmtDdGFwIH0sIFZlY3Rvcjx1aW50OF90PihhYWd1aWRMZW5ndGgs
IDB1KSkpOwogICAgICAgICBpbmZvRGF0YS5pbnNlcnQoMCwgc3RhdGljX2Nhc3Q8dWludDhfdD4o
Q3RhcERldmljZVJlc3BvbnNlQ29kZTo6a1N1Y2Nlc3MpKTsgLy8gUHJlcGVuZCBzdGF0dXMgY29k
ZS4KICAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJy
b3IgPT0gTW9jazo6RXJyb3I6Oldyb25nQ2hhbm5lbElkKQogICAgICAgICAgICAgbWVzc2FnZSA9
IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCAtIDEsIEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprQ2JvciwgaW5mb0RhdGEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA5ZTI2YjlkY2U4NmFiMDhkMTcxMzA0M2RkNjU4NDMz
ZTM4MDYzMDcuLjE3ZDdjMTg1MGM3ZjFlMzRmOTRhYWNhMzJmNTQ1N2U3OTA1NWFiMGMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
OCBAQAorMjAxOS0wMS0wNCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJBdXRoTl0gSW1wb3J0IFUyRiBjb21tYW5kL3Jlc3BvbnNlIGNvbnZlcnRlcnMg
ZnJvbSBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkzMTUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzA1NDAyOD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIEFQSSB0ZXN0cy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVz
cG9uc2VUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmdldFRlc3RBdHRlc3RlZENy
ZWRlbnRpYWxEYXRhQnl0ZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdEF1dGhl
bnRpY2F0b3JEYXRhQnl0ZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdEF0dGVz
dGF0aW9uT2JqZWN0Qnl0ZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdFNpZ25S
ZXNwb25zZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZXRUZXN0VTJmUmVnaXN0ZXJSZXNw
b25zZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmNvbnZlcnRUb1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9VMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3QpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6Y29uc3RydWN0R2V0QXNzZXJ0aW9uUmVxdWVzdCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0xMi0yMSAgSmlld2VuIFRhbiAgPGpp
ZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRoTl0gdXNlclByZXNlbmNlIHNo
b3VsZCBhbHdheXMgYmUgdHJ1ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMzE0MzI4ZmVk
NGVhMTExOWZlMzVkMWE1OWNmNTRkY2FlZWU5MjI3Li5mOGFmNjFhMzY5M2RiYzllNTk5MDE4Mzkz
MWFlYmRhZTgzNWNmZGE4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjU4LDYgKzI1OCw3
IEBACiAJCTU3MTRFQ0JCMUNBOEJGRTQwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5h
bFVSTEZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTcxNEVDQkExQ0E4QkZEMTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9y
aWdpbmFsVVJMRnJhbWUuaHRtbCAqLzsgfTsKIAkJNTcxNEVDQkQxQ0E4QzIyQTAwMDUxQUM4IC8q
IERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTRFQ0JDMUNBOEMyMTgwMDA1MUFDOCAv
KiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTDIuaHRtbCAqLzsgfTsKIAkJNTcxNTJCNUUyMUND
MjA0NTAwMEMzN0NBIC8qIEFwZHVUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjVEMjFDQzIwNDUwMDBDMzdDQSAvKiBBcGR1VGVzdC5j
cHAgKi87IH07CisJCTU3MTUyQjc4MjFERDRFOEQwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3Ry
dWN0b3JUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3RDFENzVFMjFEQ0I3QTgwMDkzRTg2QSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0
LmNwcCAqLzsgfTsKIAkJNTcxRjdGRDAxRjI5NjFGQjAwOTQ2NjQ4IC8qIEluZGV4ZWREQlN0cnVj
dHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXdhbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzFGN0ZDRjFGMjk2MUUx
MDA5NDY2NDggLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5
LnNxbGl0ZTMtd2FsICovOyB9OwogCQk1NzJCNDAzNDIxNzY5QTg4MDAwQUQ0M0UgLyogQ3RhcFJl
cXVlc3RUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3MkI0MDMzMjE3NjlBODgwMDBBRDQzRSAvKiBDdGFwUmVxdWVzdFRlc3QuY3BwICovOyB9
OwogCQk1NzJCNDA0NDIxNzgxQjQzMDAwQUQ0M0UgLyogQ3RhcFJlc3BvbnNlVGVzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJCNDA0MzIxNzgx
QjQyMDAwQUQ0M0UgLyogQ3RhcFJlc3BvbnNlVGVzdC5jcHAgKi87IH07CkBAIC0xNjI5LDYgKzE2
MzAsNyBAQAogCQk1Nzk3RkUyRjFFQjE1QTVGMDBCMkY0QTAgLyogTmF2aWdhdGlvbkNsaWVudERl
ZmF1bHRDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2
aWdhdGlvbkNsaWVudERlZmF1bHRDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Nzk3RkUzMjFFQjE1QTg5MDBCMkY0QTAgLyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVs
dC1jcnlwdG8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJuYXZpZ2F0aW9uLWNs
aWVudC1kZWZhdWx0LWNyeXB0by5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTc5OEUyQUYxQ0FGNUMyODAwQzVDQkEwIC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxVUkxOb3RD
aGFuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RDFENzVFMjFEQ0I3QTgw
MDkzRTg2QSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0YxMEQ5MjFDN0U3QjM4MDBFQ0RGMzAgLyogSXNO
YXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3RjRBQTlGMjA4RkE4M0QwMEE2OEU5RSAvKiBTU0xLZXlHZW5lcmF0b3Iu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTU0xLZXlHZW5lcmF0b3IubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU3RjU2QTVCMUM3RjhBNDAwMEYzMUQ3RSAvKiBJc05hdmlnYXRp
b25BY3Rpb25UcnVzdGVkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJc05hdmln
YXRpb25BY3Rpb25UcnVzdGVkLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NjY4LDYgKzI2NzAsNyBAQAogCQkJCTkzQTI1ODk4MUY5MkZGMTUwMDNFNTEwQyAvKiBUZXh0Q29k
ZWMuY3BwICovLAogCQkJCUNEQzJDNzE0MTc5NzA4OUQwMEU2MjdGQiAvKiBUaW1lUmFuZ2VzLmNw
cCAqLywKIAkJCQk3QUQzRkU4RDFENzVGQjhEMDBCMTY5QTQgLyogVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwICovLAorCQkJCTU3RDFENzVFMjFEQ0I3QTgwMDkzRTg2QSAvKiBVMmZDb21tYW5kQ29u
c3RydWN0b3JUZXN0LmNwcCAqLywKIAkJCQlFM0ExRTc3RTIxQjI1QjM5MDA4QzYwMDcgLyogVVJM
UGFyc2VyVGV4dEVuY29kaW5nLmNwcCAqLywKIAkJCQk5QzY0REMzMTFENzYxOThBMDA0QjU5OEUg
LyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCAqLywKIAkJCSk7CkBAIC00MTgwLDYgKzQx
ODMsNyBAQAogCQkJCUNFMzUyNEY5MUIxNDQxQzQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdp
bkFuZEVuZEVkaXRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFREQxQTQxMUE5MjAw
NDQ3QzRDIC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDMxQTQx
MUE3RTAwNDQ3QzRDIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKKwkJCQk1
NzE1MkI3ODIxREQ0RThEMDAwQzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0I0MEI0RTFGNEI5OEQzMDA3REM3QjkgLyogVUlEZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0Njg0OUJFMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBh
c3RlYm9hcmRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUzQTFFNzdGMjFCMjVCMzkwMDhD
NjAwNyAvKiBVUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5j
cHAKaW5kZXggNWFhYTA1ZGEyMDEyMDA1YWQ2ZTU1ZTljYTIxMmI1ODE1MjJkZTk4Mi4uZGUzZjIw
OTI5MzMwOWM0YmJjMjMyMDA4NmI0YWFmOTYwZGVjNGI4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcApAQCAtMzcs
OCArMzcsMTEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NCT1JXcml0ZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWRv
Q29uc3RhbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VMmZSZXNwb25zZUNvbnZlcnRlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25VdGlscy5oPgogCiBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFj
ZSBmaWRvOwogCiBjb25zdGV4cHIgdWludDhfdCBrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVz
cG9uc2VXaXRoTm9WZXJzaW9uW10gPSB7CkBAIC0yMTYsMTAgKzIxOSwxMDcgQEAgY29uc3RleHBy
IHVpbnQ4X3Qga1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aEluY29ycmVjdEFh
Z3VpZFtdID0gewogICAgIDB4ODEsIDB4MDEsCiB9OwogCisvLyBUaGUgYXR0ZXN0ZWQgY3JlZGVu
dGlhbCBkYXRhLCBleGNsdWRpbmcgdGhlIHB1YmxpYyBrZXkgYnl0ZXMuIEFwcGVuZAorLy8gd2l0
aCBrVGVzdEVDUHVibGljS2V5Q09TRSB0byBnZXQgdGhlIGNvbXBsZXRlIGF0dGVzdGF0aW9uIGRh
dGEuCitjb25zdGV4cHIgdWludDhfdCBrVGVzdEF0dGVzdGVkQ3JlZGVudGlhbERhdGFQcmVmaXhb
XSA9IHsKKyAgICAvLyAxNi1ieXRlIGFhZ3VpZAorICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAvLyAyLWJ5dGUgbGVuZ3RoCisgICAgMHgwMCwgMHg0
MCwKKyAgICAvLyA2NC1ieXRlIGtleSBoYW5kbGUKKyAgICAweDNFLCAweEJELCAweDg5LCAweEJG
LCAweDc3LCAweEVDLCAweDUwLCAweDk3LCAweDU1LCAweEVFLCAweDlDLCAweDI2LAorICAgIDB4
MzUsIDB4RUYsIDB4QUEsIDB4QUMsIDB4N0IsIDB4MkIsIDB4OUMsIDB4NUMsIDB4RUYsIDB4MTcs
IDB4MzYsIDB4QzMsCisgICAgMHg3MSwgMHg3RCwgMHhBNCwgMHg4NSwgMHgzNCwgMHhDOCwgMHhD
NiwgMHhCNiwgMHg1NCwgMHhENywgMHhGRiwgMHg5NCwKKyAgICAweDVGLCAweDUwLCAweEI1LCAw
eENDLCAweDRFLCAweDc4LCAweDA1LCAweDVCLCAweERELCAweDM5LCAweDZCLCAweDY0LAorICAg
IDB4RjcsIDB4OEQsIDB4QTIsIDB4QzUsIDB4RjksIDB4NjIsIDB4MDAsIDB4Q0MsIDB4RDQsIDB4
MTUsIDB4Q0QsIDB4MDgsCisgICAgMHhGRSwgMHg0MiwgMHgwMCwgMHgzOCwKK307CisKKy8vIFRo
ZSBhdXRoZW50aWNhdG9yIGRhdGEsIGV4Y2x1ZGluZyB0aGUgYXR0ZXN0ZWQgY3JlZGVudGlhbCBk
YXRhIGJ5dGVzLiBBcHBlbmQKKy8vIHdpdGggYXR0ZXN0ZWQgY3JlZGVudGlhbCBkYXRhIHRvIGdl
dCB0aGUgY29tcGxldGUgYXV0aGVudGljYXRvciBkYXRhLgorY29uc3RleHByIHVpbnQ4X3Qga1Rl
c3RBdXRoZW50aWNhdG9yRGF0YVByZWZpeFtdID0geworICAgIC8vIHNoYTI1NiBoYXNoIG9mIHJw
IGlkLgorICAgIDB4MTEsIDB4OTQsIDB4MjIsIDB4OEQsIDB4QTgsIDB4RkQsIDB4QkQsIDB4RUUs
IDB4RkQsIDB4MjYsIDB4MUIsIDB4RDcsCisgICAgMHhCNiwgMHg1OSwgMHg1QywgMHhGRCwgMHg3
MCwgMHhBNSwgMHgwRCwgMHg3MCwgMHhDNiwgMHg0MCwgMHg3QiwgMHhDRiwKKyAgICAweDAxLCAw
eDNELCAweEU5LCAweDZELCAweDRFLCAweEZCLCAweDE3LCAweERFLAorICAgIC8vIGZsYWdzIChU
VVAgYW5kIEFUIGJpdHMgc2V0KQorICAgIDB4NDEsCisgICAgLy8gY291bnRlcgorICAgIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAKK307CisKKy8vIENvbXBvbmVudHMgb2YgdGhlIENCT1IgbmVlZGVk
IHRvIGZvcm0gYW4gYXV0aGVudGljYXRvciBvYmplY3QuCisvLyBDb21iaW5lZCBkaWFnbm9zdGlj
IG5vdGF0aW9uOgorLy8geyJmbXQiOiAiZmlkby11MmYiLCAiYXR0U3RtdCI6IHsic2lnIjogaCcz
MC4uLn0sICJhdXRoRGF0YSI6IGgnRDRDOUQ5Li4uJ30KK2NvbnN0ZXhwciB1aW50OF90IGtGb3Jt
YXRGaWRvVTJmQ0JPUltdID0geworICAgIC8vIG1hcCgzKQorICAgIDB4QTMsCisgICAgLy8gdGV4
dCgzKQorICAgIDB4NjMsCisgICAgLy8gImZtdCIKKyAgICAweDY2LCAweDZELCAweDc0LAorICAg
IC8vIHRleHQoOCkKKyAgICAweDY4LAorICAgIC8vICJmaWRvLXUyZiIKKyAgICAweDY2LCAweDY5
LCAweDY0LCAweDZGLCAweDJELCAweDc1LCAweDMyLCAweDY2Cit9OworCitjb25zdGV4cHIgdWlu
dDhfdCBrQXR0U3RtdENCT1JbXSA9IHsKKyAgICAvLyB0ZXh0KDcpCisgICAgMHg2NywKKyAgICAv
LyAiYXR0U3RtdCIKKyAgICAweDYxLCAweDc0LCAweDc0LCAweDUzLCAweDc0LCAweDZELCAweDc0
Cit9OworCitjb25zdGV4cHIgdWludDhfdCBrQXV0aERhdGFDQk9SW10gPSB7CisgICAgLy8gdGV4
dCg4KQorICAgIDB4NjgsCisgICAgLy8gImF1dGhEYXRhIgorICAgIDB4NjEsIDB4NzUsIDB4NzQs
IDB4NjgsIDB4NDQsIDB4NjEsIDB4NzQsIDB4NjEsCisgICAgLy8gYnl0ZXMoMTk2KS4gaS5lLiwg
dGhlIGF1dGhlbnRpY2F0b3JfZGF0YSBieXRlIGFycmF5IGNvcnJlc3BvbmRpbmcgdG8KKyAgICAv
LyBrVGVzdEF1dGhlbnRpY2F0b3JEYXRhUHJlZml4fCwgfGtUZXN0QXR0ZXN0ZWRDcmVkZW50aWFs
RGF0YVByZWZpeHwsCisgICAgLy8gYW5kIHRlc3RfZGF0YTo6a1Rlc3RFQ1B1YmxpY0tleUNPU0Uu
CisgICAgMHg1OCwgMHhDNAorfTsKKwogY29uc3RleHByIHVpbnQ4X3Qga1Rlc3REZXZpY2VBYWd1
aWRbXSA9IHsKICAgICAweEY4LCAweEEwLCAweDExLCAweEYzLCAweDhDLCAweDBBLCAweDRELCAw
eDE1LCAweDgwLCAweDA2LCAweDE3LCAweDExLCAweDFGLCAweDlFLCAweERDLCAweDdECiB9Owog
CitWZWN0b3I8dWludDhfdD4gZ2V0VGVzdEF0dGVzdGVkQ3JlZGVudGlhbERhdGFCeXRlcygpCit7
CisgICAgLy8gQ29tYmluZSBrVGVzdEF0dGVzdGVkQ3JlZGVudGlhbERhdGFQcmVmaXggYW5kIGtU
ZXN0RUNQdWJsaWNLZXlDT1NFLgorICAgIGF1dG8gdGVzdEF0dGVzdGVkRGF0YSA9IGNvbnZlcnRC
eXRlc1RvVmVjdG9yKGtUZXN0QXR0ZXN0ZWRDcmVkZW50aWFsRGF0YVByZWZpeCwgc2l6ZW9mKGtU
ZXN0QXR0ZXN0ZWRDcmVkZW50aWFsRGF0YVByZWZpeCkpOworICAgIHRlc3RBdHRlc3RlZERhdGEu
YXBwZW5kKFRlc3REYXRhOjprVGVzdEVDUHVibGljS2V5Q09TRSwgc2l6ZW9mKFRlc3REYXRhOjpr
VGVzdEVDUHVibGljS2V5Q09TRSkpOworICAgIHJldHVybiB0ZXN0QXR0ZXN0ZWREYXRhOworfQor
CitWZWN0b3I8dWludDhfdD4gZ2V0VGVzdEF1dGhlbnRpY2F0b3JEYXRhQnl0ZXMoKQoreworICAg
IC8vIEJ1aWxkIHRoZSB0ZXN0IGF1dGhlbnRpY2F0b3IgZGF0YS4KKyAgICBhdXRvIHRlc3RBdXRo
ZW50aWNhdG9yRGF0YSA9IGNvbnZlcnRCeXRlc1RvVmVjdG9yKGtUZXN0QXV0aGVudGljYXRvckRh
dGFQcmVmaXgsIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0b3JEYXRhUHJlZml4KSk7CisgICAgYXV0
byB0ZXN0QXR0ZXN0ZWREYXRhID0gZ2V0VGVzdEF0dGVzdGVkQ3JlZGVudGlhbERhdGFCeXRlcygp
OworICAgIHRlc3RBdXRoZW50aWNhdG9yRGF0YS5hcHBlbmRWZWN0b3IodGVzdEF0dGVzdGVkRGF0
YSk7CisgICAgcmV0dXJuIHRlc3RBdXRoZW50aWNhdG9yRGF0YTsKK30KKworVmVjdG9yPHVpbnQ4
X3Q+IGdldFRlc3RBdHRlc3RhdGlvbk9iamVjdEJ5dGVzKCkKK3sKKyAgICBhdXRvIHRlc3RBdXRo
ZW50aWNhdG9yT2JqZWN0ID0gY29udmVydEJ5dGVzVG9WZWN0b3Ioa0Zvcm1hdEZpZG9VMmZDQk9S
LCBzaXplb2Yoa0Zvcm1hdEZpZG9VMmZDQk9SKSk7CisgICAgdGVzdEF1dGhlbnRpY2F0b3JPYmpl
Y3QuYXBwZW5kKGtBdHRTdG10Q0JPUiwgc2l6ZW9mKGtBdHRTdG10Q0JPUikpOworICAgIHRlc3RB
dXRoZW50aWNhdG9yT2JqZWN0LmFwcGVuZChUZXN0RGF0YTo6a1UyZkF0dGVzdGF0aW9uU3RhdGVt
ZW50Q0JPUiwgc2l6ZW9mKFRlc3REYXRhOjprVTJmQXR0ZXN0YXRpb25TdGF0ZW1lbnRDQk9SKSk7
CisgICAgdGVzdEF1dGhlbnRpY2F0b3JPYmplY3QuYXBwZW5kKGtBdXRoRGF0YUNCT1IsIHNpemVv
ZihrQXV0aERhdGFDQk9SKSk7CisgICAgYXV0byB0ZXN0QXV0aGVudGljYXRvckRhdGEgPSBnZXRU
ZXN0QXV0aGVudGljYXRvckRhdGFCeXRlcygpOworICAgIHRlc3RBdXRoZW50aWNhdG9yT2JqZWN0
LmFwcGVuZFZlY3Rvcih0ZXN0QXV0aGVudGljYXRvckRhdGEpOworICAgIHJldHVybiB0ZXN0QXV0
aGVudGljYXRvck9iamVjdDsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGdldFRlc3RTaWduUmVzcG9u
c2UoKQoreworICAgIHJldHVybiBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RV
MmZTaWduUmVzcG9uc2UsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RVMmZTaWduUmVzcG9uc2UpKTsK
K30KKwogLy8gR2V0IGEgc3Vic2V0IG9mIHRoZSByZXNwb25zZSBmb3IgdGVzdGluZyBlcnJvciBo
YW5kbGluZy4KIFZlY3Rvcjx1aW50OF90PiBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3BvbnNlKHNp
emVfdCBsZW5ndGgpCiB7CkBAIC0yMzksMTEgKzMzOSwxMyBAQCBWZWN0b3I8dWludDhfdD4gZ2V0
VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCkKICAgICByZXR1cm4gdGVzdENyZWRlbnRpYWxSYXdJ
ZEJ5dGVzOwogfQogCi1WZWN0b3I8dWludDhfdD4gY29udmVydFRvVmVjdG9yKGNvbnN0IHVpbnQ4
X3QgYnl0ZUFycmF5W10sIGNvbnN0IHNpemVfdCBsZW5ndGgpCisvLyBSZXR1cm4gYSBtYWxmb3Jt
ZWQgVTJmUmVnaXN0ZXJSZXNwb25zZS4KK1ZlY3Rvcjx1aW50OF90PiBnZXRUZXN0VTJmUmVnaXN0
ZXJSZXNwb25zZShzaXplX3QgcHJlZml4U2l6ZSwgY29uc3QgdWludDhfdCBhcHBlbmRpeFtdLCBz
aXplX3QgYXBwZW5kaXhTaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAg
cmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICByZXN1bHQuYXBwZW5k
KGJ5dGVBcnJheSwgbGVuZ3RoKTsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShw
cmVmaXhTaXplICsgYXBwZW5kaXhTaXplKTsKKyAgICByZXN1bHQuYXBwZW5kKFRlc3REYXRhOjpr
VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UsIHByZWZpeFNpemUpOworICAgIHJlc3VsdC5hcHBlbmQo
YXBwZW5kaXgsIGFwcGVuZGl4U2l6ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjUx
LDkgKzM1Myw5IEBAIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0VG9WZWN0b3IoY29uc3QgdWludDhf
dCBieXRlQXJyYXlbXSwgY29uc3Qgc2l6ZV90IGxlbmd0aCkKIC8vIGh0dHBzOi8vZmlkb2FsbGlh
bmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVu
dGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjY29tbWFuZHMKIFRFU1QoQ1RB
UFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKQogewotICAgIGF1
dG8gbWFrZUNyZWRlbnRpYWxSZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25z
ZShjb252ZXJ0VG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25zZSwg
c2l6ZW9mKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpKSk7CisgICAgYXV0
byBtYWtlQ3JlZGVudGlhbFJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNl
KGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9u
c2UsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKSkpOwogICAg
IEFTU0VSVF9UUlVFKG1ha2VDcmVkZW50aWFsUmVzcG9uc2UpOwotICAgIGF1dG8gY2JvckF0dGVz
dGF0aW9uT2JqZWN0ID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChjb252ZXJ0VG9WZWN0b3IocmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4obWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRp
b25PYmplY3QtPmRhdGEoKSksIG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2Jq
ZWN0LT5ieXRlTGVuZ3RoKCkpKTsKKyAgICBhdXRvIGNib3JBdHRlc3RhdGlvbk9iamVjdCA9IGNi
b3I6OkNCT1JSZWFkZXI6OnJlYWQoY29udmVydEJ5dGVzVG9WZWN0b3IocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4obWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRpb25PYmplY3QtPmRh
dGEoKSksIG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVu
Z3RoKCkpKTsKICAgICBBU1NFUlRfVFJVRShjYm9yQXR0ZXN0YXRpb25PYmplY3QpOwogICAgIEFT
U0VSVF9UUlVFKGNib3JBdHRlc3RhdGlvbk9iamVjdC0+aXNNYXAoKSk7CiAKQEAgLTI2Niw3ICsz
NjgsNyBAQCBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkTWFrZUNyZWRlbnRpYWxSZXNw
b25zZSkKICAgICBpdCA9IGF0dGVzdGF0aW9uT2JqZWN0TWFwLmZpbmQoY2Jvcjo6Q0JPUlZhbHVl
KGtBdXRoRGF0YUtleSkpOwogICAgIEFTU0VSVF9UUlVFKGl0ICE9IGF0dGVzdGF0aW9uT2JqZWN0
TWFwLmVuZCgpKTsKICAgICBBU1NFUlRfVFJVRShpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKTsK
LSAgICBFWFBFQ1RfRVEoaXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCksIGNvbnZlcnRUb1ZlY3Rv
cihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxBdXRoRGF0YSwgc2l6ZW9mKFRlc3REYXRh
OjprQ3RhcDJNYWtlQ3JlZGVudGlhbEF1dGhEYXRhKSkpOworICAgIEVYUEVDVF9FUShpdC0+c2Vj
b25kLmdldEJ5dGVTdHJpbmcoKSwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDdGFw
Mk1ha2VDcmVkZW50aWFsQXV0aERhdGEsIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRl
bnRpYWxBdXRoRGF0YSkpKTsKIAogICAgIGl0ID0gYXR0ZXN0YXRpb25PYmplY3RNYXAuZmluZChj
Ym9yOjpDQk9SVmFsdWUoa0F0dGVzdGF0aW9uU3RhdGVtZW50S2V5KSk7CiAgICAgQVNTRVJUX1RS
VUUoaXQgIT0gYXR0ZXN0YXRpb25PYmplY3RNYXAuZW5kKCkpOwpAQCAtMjgyLDcgKzM4NCw3IEBA
IFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKQog
ICAgIGF0dFN0bXRJdCA9IGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwLmZpbmQoY2Jvcjo6Q0JPUlZh
bHVlKCJzaWciKSk7CiAgICAgQVNTRVJUX1RSVUUoYXR0U3RtdEl0ICE9IGF0dGVzdGF0aW9uU3Rh
dGVtZW50TWFwLmVuZCgpKTsKICAgICBBU1NFUlRfVFJVRShhdHRTdG10SXQtPnNlY29uZC5pc0J5
dGVTdHJpbmcoKSk7Ci0gICAgRVhQRUNUX0VRKGF0dFN0bXRJdC0+c2Vjb25kLmdldEJ5dGVTdHJp
bmcoKSwgY29udmVydFRvVmVjdG9yKFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbFNpZ25h
dHVyZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbFNpZ25hdHVyZSkpKTsK
KyAgICBFWFBFQ1RfRVEoYXR0U3RtdEl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpLCBjb252ZXJ0
Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxTaWduYXR1cmUsIHNp
emVvZihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxTaWduYXR1cmUpKSk7CiAKICAgICBh
dHRTdG10SXQgPSBhdHRlc3RhdGlvblN0YXRlbWVudE1hcC5maW5kKGNib3I6OkNCT1JWYWx1ZSgi
eDVjIikpOwogICAgIEFTU0VSVF9UUlVFKGF0dFN0bXRJdCAhPSBhdHRlc3RhdGlvblN0YXRlbWVu
dE1hcC5lbmQoKSk7CkBAIC0yOTAsNyArMzkyLDcgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBU
ZXN0UmVhZE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpCiAgICAgQVNTRVJUX1RSVUUoY2VydGlmaWNh
dGUuaXNBcnJheSgpKTsKICAgICBBU1NFUlRfRVEoY2VydGlmaWNhdGUuZ2V0QXJyYXkoKS5zaXpl
KCksIDF1KTsKICAgICBBU1NFUlRfVFJVRShjZXJ0aWZpY2F0ZS5nZXRBcnJheSgpWzBdLmlzQnl0
ZVN0cmluZygpKTsKLSAgICBFWFBFQ1RfRVEoY2VydGlmaWNhdGUuZ2V0QXJyYXkoKVswXS5nZXRC
eXRlU3RyaW5nKCksIGNvbnZlcnRUb1ZlY3RvcihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRp
YWxDZXJ0aWZpY2F0ZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbENlcnRp
ZmljYXRlKSkpOworICAgIEVYUEVDVF9FUShjZXJ0aWZpY2F0ZS5nZXRBcnJheSgpWzBdLmdldEJ5
dGVTdHJpbmcoKSwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVk
ZW50aWFsQ2VydGlmaWNhdGUsIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxD
ZXJ0aWZpY2F0ZSkpKTsKICAgICBFWFBFQ1RfRVEobWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+cmF3
SWQtPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbENy
ZWRlbnRpYWxJZCkpOwogICAgIEVYUEVDVF9FUShtZW1jbXAobWFrZUNyZWRlbnRpYWxSZXNwb25z
ZS0+cmF3SWQtPmRhdGEoKSwgVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVkZW50aWFsQ3JlZGVudGlh
bElkLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVkZW50aWFsQ3JlZGVudGlhbElkKSks
IDApOwogfQpAQCAtMjk5LDcgKzQwMSw3IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJl
YWRNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKQogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3Nw
ZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXBy
b3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0
UmVhZEdldEFzc2VydGlvblJlc3BvbnNlKQogewotICAgIGF1dG8gZ2V0QXNzZXJ0aW9uUmVzcG9u
c2UgPSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnZlcnRUb1ZlY3RvcihUZXN0RGF0
YTo6a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtEZXZpY2VH
ZXRBc3NlcnRpb25SZXNwb25zZSkpKTsKKyAgICBhdXRvIGdldEFzc2VydGlvblJlc3BvbnNlID0g
cmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0
YTo6a0RldmljZUdldEFzc2VydGlvblJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtEZXZpY2VH
ZXRBc3NlcnRpb25SZXNwb25zZSkpKTsKICAgICBBU1NFUlRfVFJVRShnZXRBc3NlcnRpb25SZXNw
b25zZSk7CiAKICAgICBFWFBFQ1RfRVEoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UtPmF1dGhlbnRpY2F0
b3JEYXRhLT5ieXRlTGVuZ3RoKCksIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyR2V0QXNzZXJ0aW9u
QXV0aERhdGEpKTsKQEAgLTMwOCw5ICs0MTAsMTU2IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwg
VGVzdFJlYWRHZXRBc3NlcnRpb25SZXNwb25zZSkKICAgICBFWFBFQ1RfRVEobWVtY21wKGdldEFz
c2VydGlvblJlc3BvbnNlLT5zaWduYXR1cmUtPmRhdGEoKSwgVGVzdERhdGE6OmtDdGFwMkdldEFz
c2VydGlvblNpZ25hdHVyZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJHZXRBc3NlcnRpb25TaWdu
YXR1cmUpKSwgMCk7CiB9CiAKKy8vIFRlc3QgdGhhdCBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UgaXMg
cHJvcGVybHkgcGFyc2VkLgorVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VSZWdpc3Rl
clJlc3BvbnNlRGF0YSkKK3sKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVz
cG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVz
dERhdGE6OmtUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdFUy
ZlJlZ2lzdGVyUmVzcG9uc2UpKSk7CisgICAgQVNTRVJUX1RSVUUocmVzcG9uc2UpOworICAgIEVY
UEVDVF9FUShyZXNwb25zZS0+cmF3SWQtPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjpr
VTJmU2lnbktleUhhbmRsZSkpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzcG9uc2UtPnJhd0lk
LT5kYXRhKCksIFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjpr
VTJmU2lnbktleUhhbmRsZSkpLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShyZXNwb25zZS0+aXNBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSk7CisgICAgYXV0byBleHBlY3RlZEF0dGVzdGF0
aW9uT2JqZWN0ID0gZ2V0VGVzdEF0dGVzdGF0aW9uT2JqZWN0Qnl0ZXMoKTsKKyAgICBFWFBFQ1Rf
RVEocmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCksIGV4cGVjdGVkQXR0
ZXN0YXRpb25PYmplY3Quc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3BvbnNlLT5h
dHRlc3RhdGlvbk9iamVjdC0+ZGF0YSgpLCBleHBlY3RlZEF0dGVzdGF0aW9uT2JqZWN0LmRhdGEo
KSwgZXhwZWN0ZWRBdHRlc3RhdGlvbk9iamVjdC5zaXplKCkpLCAwKTsKK30KKworLy8gVGVzdCBt
YWxmb3JtZWQgdXNlciBwdWJsaWMga2V5LgorVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFy
c2VJbmNvcnJlY3RSZWdpc3RlclJlc3BvbnNlRGF0YTEpCit7CisgICAgY29uc3QgdWludDhfdCB0
ZXN0RGF0YTFbXSA9IHsgMHgwNSB9OworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0
ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cih0ZXN0RGF0YTEsIHNpemVvZih0ZXN0RGF0YTEpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3Bv
bnNlKTsKKworICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGEyW10gPSB7IDB4MDUsIDB4MDAgfTsK
KyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWlu
Z1BhcnR5SWQsIGNvbnZlcnRCeXRlc1RvVmVjdG9yKHRlc3REYXRhMiwgc2l6ZW9mKHRlc3REYXRh
MikpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOworCisgICAgY29uc3QgdWludDhfdCB0
ZXN0RGF0YTNbXSA9IHsgMHgwNSwgMHgwNCwgMHgwMCB9OworICAgIHJlc3BvbnNlID0gcmVhZFUy
ZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgY29udmVydEJ5dGVz
VG9WZWN0b3IodGVzdERhdGEzLCBzaXplb2YodGVzdERhdGEzKSkpOworICAgIEVYUEVDVF9GQUxT
RShyZXNwb25zZSk7Cit9CisKKy8vIFRlc3QgbWFsZm9ybWVkIGtleSBoYW5kbGUuCitURVNUKENU
QVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhMikK
K3sKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6
OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2Uoa1UyZktleUhhbmRs
ZUxlbmd0aE9mZnNldCwgbnVsbHB0ciwgMCkpOworICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7
CisKKyAgICBjb25zdCB1aW50OF90IHRlc3REYXRhW10gPSB7IDB4NDAgfTsKKyAgICByZXNwb25z
ZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdl
dFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKGtVMmZLZXlIYW5kbGVMZW5ndGhPZmZzZXQsIHRlc3RE
YXRhLCBzaXplb2YodGVzdERhdGEpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKK30K
KworLy8gVGVzdCBtYWxmb3JtZWQgWC41MDkuCitURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQ
YXJzZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhMykKK3sKKyAgICBjb25zdCBhdXRvIHBy
ZWZpeCA9IGtVMmZLZXlIYW5kbGVPZmZzZXQgKyA2NDsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVh
ZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUy
ZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4LCBudWxscHRyLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHJlc3BvbnNlKTsKKworICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGExW10gPSB7IDB4NDAgfTsK
KyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWlu
Z1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgdGVzdERhdGExLCBz
aXplb2YodGVzdERhdGExKSkpOworICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CisKKyAgICBj
b25zdCB1aW50OF90IHRlc3REYXRhMltdID0geyAweDMwIH07CisgICAgcmVzcG9uc2UgPSByZWFk
VTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJm
UmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3REYXRhMiwgc2l6ZW9mKHRlc3REYXRhMikpKTsK
KyAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOworCisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0
YTNbXSA9IHsgMHgzMCwgMHg4MiB9OworICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVz
cG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9u
c2UocHJlZml4LCB0ZXN0RGF0YTMsIHNpemVvZih0ZXN0RGF0YTMpKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHJlc3BvbnNlKTsKKworICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGE0W10gPSB7IDB4MzAs
IDB4QzEgfTsKKyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRh
OjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgdGVz
dERhdGE0LCBzaXplb2YodGVzdERhdGE0KSkpOworICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7
CisKKyAgICBjb25zdCB1aW50OF90IHRlc3REYXRhNVtdID0geyAweDMwLCAweDgyLCAweDAyLCAw
eDRBIH07CisgICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6
a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3RE
YXRhNSwgc2l6ZW9mKHRlc3REYXRhNSkpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwor
fQorCisvLyBUZXN0IG1hbGZvcm1lZCBzaWduYXR1cmUuCitURVNUKENUQVBSZXNwb25zZVRlc3Qs
IFRlc3RQYXJzZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhNCkKK3sKKyAgICBjb25zdCBh
dXRvIHByZWZpeCA9IHNpemVvZihUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlKTsK
KyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtS
ZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4IC0gNzEsIG51
bGxwdHIsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOworCisgICAgY29uc3QgdWlu
dDhfdCB0ZXN0RGF0YVtdID0geyAweDQwLCAweDQwLCAweDQwIH07CisgICAgcmVzcG9uc2UgPSBy
ZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0
VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3REYXRhLCBzaXplb2YodGVzdERhdGEpKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKK30KKworLy8gVGVzdCBtYWxmb3JtZWQgWC41
MDkgYnV0IHBhc3MuCitURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZUluY29ycmVjdFJl
Z2lzdGVyUmVzcG9uc2VEYXRhNSkKK3sKKyAgICBjb25zdCBhdXRvIHByZWZpeCA9IGtVMmZLZXlI
YW5kbGVPZmZzZXQgKyA2NDsKKyAgICBjb25zdCBhdXRvIHNpZ25hdHVyZVNpemUgPSA3MTsKKyAg
ICBjb25zdCBhdXRvIHN1ZmZpeCA9IHNpemVvZihUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJl
c3BvbnNlKSAtIHNpZ25hdHVyZVNpemU7CisKKyAgICBWZWN0b3I8dWludDhfdD4gdGVzdERhdGEx
OworICAgIHRlc3REYXRhMS5hcHBlbmQoVGVzdERhdGE6OmtUZXN0VTJmUmVnaXN0ZXJSZXNwb25z
ZSwgcHJlZml4KTsKKyAgICB0ZXN0RGF0YTEuYXBwZW5kKDB4MzApOworICAgIHRlc3REYXRhMS5h
cHBlbmQoMHgwMSk7CisgICAgdGVzdERhdGExLmFwcGVuZCgweDAwKTsKKyAgICB0ZXN0RGF0YTEu
YXBwZW5kKFRlc3REYXRhOjprVGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UgKyBzdWZmaXgsIHNpZ25h
dHVyZVNpemUpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShU
ZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCB0ZXN0RGF0YTEpOworICAgIEVYUEVDVF9UUlVFKHJl
c3BvbnNlKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB0ZXN0RGF0YTI7CisgICAgdGVzdERhdGEy
LmFwcGVuZChUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlLCBwcmVmaXgpOworICAg
IHRlc3REYXRhMi5hcHBlbmQoMHgzMCk7CisgICAgdGVzdERhdGEyLmFwcGVuZCgweDgxKTsKKyAg
ICB0ZXN0RGF0YTIuYXBwZW5kKDB4MDEpOworICAgIHRlc3REYXRhMi5hcHBlbmQoMHgwMCk7Cisg
ICAgdGVzdERhdGEyLmFwcGVuZChUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlICsg
c3VmZml4LCBzaWduYXR1cmVTaXplKTsKKyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJl
c3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIHRlc3REYXRhMik7CisgICAgRVhQRUNU
X1RSVUUocmVzcG9uc2UpOworfQorCisvLyBUZXN0cyB0aGF0IFUyRiBhdXRoZW50aWNhdG9yIGRh
dGEgaXMgcHJvcGVybHkgc2VyaWFsaXplZC4KK1RFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBh
cnNlU2lnblJlc3BvbnNlRGF0YSkKK3sKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZEZyb21VMmZT
aWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxS
YXdJZEJ5dGVzKCksIGdldFRlc3RTaWduUmVzcG9uc2UoKSk7CisgICAgQVNTRVJUX1RSVUUocmVz
cG9uc2UpOworICAgIEVYUEVDVF9FUShyZXNwb25zZS0+cmF3SWQtPmJ5dGVMZW5ndGgoKSwgc2l6
ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOworICAgIEVYUEVDVF9FUShtZW1jbXAo
cmVzcG9uc2UtPnJhd0lkLT5kYXRhKCksIFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6
ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpLCAwKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
cmVzcG9uc2UtPmlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOworICAgIEVYUEVD
VF9FUShyZXNwb25zZS0+YXV0aGVudGljYXRvckRhdGEtPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRl
c3REYXRhOjprVGVzdFNpZ25BdXRoZW50aWNhdG9yRGF0YSkpOworICAgIEVYUEVDVF9FUShtZW1j
bXAocmVzcG9uc2UtPmF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCksIFRlc3REYXRhOjprVGVzdFNp
Z25BdXRoZW50aWNhdG9yRGF0YSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdFNpZ25BdXRoZW50aWNh
dG9yRGF0YSkpLCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzcG9uc2UtPnNpZ25hdHVyZS0+Ynl0ZUxl
bmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduYXR1cmUpKTsKKyAgICBFWFBFQ1RfRVEo
bWVtY21wKHJlc3BvbnNlLT5zaWduYXR1cmUtPmRhdGEoKSwgVGVzdERhdGE6OmtVMmZTaWduYXR1
cmUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25hdHVyZSkpLCAwKTsKK30KKworVEVTVChDVEFQ
UmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0aE51bGxLZXlIYW5kbGUpCit7CisgICAg
YXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWlu
Z1BhcnR5SWQsIFZlY3Rvcjx1aW50OF90PigpLCBnZXRUZXN0U2lnblJlc3BvbnNlKCkpOworICAg
IEVYUEVDVF9GQUxTRShyZXNwb25zZSk7Cit9CisKK1RFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVz
dFBhcnNlVTJmU2lnbldpdGhOdWxsUmVzcG9uc2UpCit7CisgICAgYXV0byByZXNwb25zZSA9IHJl
YWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RD
cmVkZW50aWFsUmF3SWRCeXRlcygpLCBWZWN0b3I8dWludDhfdD4oKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHJlc3BvbnNlKTsKK30KKworVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZT
aWduV2l0aENvcnJ1cHRlZENvdW50ZXIpCit7CisgICAgLy8gQSBzaWduIHJlc3BvbnNlIG9mIGxl
c3MgdGhhbiA1IGJ5dGVzLgorICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkRnJvbVUyZlNpZ25SZXNw
b25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0
ZXMoKSwgZ2V0VGVzdENvcnJ1cHRlZFNpZ25SZXNwb25zZSgzKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHJlc3BvbnNlKTsKK30KKworVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWdu
V2l0aENvcnJ1cHRlZFNpZ25hdHVyZSkKK3sKKyAgICAvLyBBIHNpZ24gcmVzcG9uc2Ugbm8gbW9y
ZSB0aGFuIDUgYnl0ZXMuCisgICAgYXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3Bv
bnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRl
cygpLCBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3BvbnNlKDUpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
cmVzcG9uc2UpOworfQorCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkR2V0SW5mb1Jl
c3BvbnNlKQogewotICAgIGF1dG8gZ2V0SW5mb1Jlc3BvbnNlID0gcmVhZENUQVBHZXRJbmZvUmVz
cG9uc2UoY29udmVydFRvVmVjdG9yKFRlc3REYXRhOjprVGVzdEdldEluZm9SZXNwb25zZVBsYXRm
b3JtRGV2aWNlLCBzaXplb2YoVGVzdERhdGE6OmtUZXN0R2V0SW5mb1Jlc3BvbnNlUGxhdGZvcm1E
ZXZpY2UpKSk7CisgICAgYXV0byBnZXRJbmZvUmVzcG9uc2UgPSByZWFkQ1RBUEdldEluZm9SZXNw
b25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RHZXRJbmZvUmVzcG9uc2VQ
bGF0Zm9ybURldmljZSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdEdldEluZm9SZXNwb25zZVBsYXRm
b3JtRGV2aWNlKSkpOwogICAgIEFTU0VSVF9UUlVFKGdldEluZm9SZXNwb25zZSk7CiAgICAgQVNT
RVJUX1RSVUUoZ2V0SW5mb1Jlc3BvbnNlLT5tYXhNc2dTaXplKCkpOwogICAgIEVYUEVDVF9FUSgq
Z2V0SW5mb1Jlc3BvbnNlLT5tYXhNc2dTaXplKCksIDEyMDB1KTsKQEAgLTMyNSwxNCArNTc0LDE0
IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRHZXRJbmZvUmVzcG9uc2UpCiAKIFRF
U1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRHZXRJbmZvUmVzcG9uc2VXaXRoSW5jb3JyZWN0
Rm9ybWF0KQogewotICAgIEVYUEVDVF9GQUxTRShyZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb252
ZXJ0VG9WZWN0b3Ioa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aE5vVmVyc2lv
biwgc2l6ZW9mKGtUZXN0QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZVdpdGhOb1ZlcnNpb24p
KSkpOwotICAgIEVYUEVDVF9GQUxTRShyZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb252ZXJ0VG9W
ZWN0b3Ioa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aER1cGxpY2F0ZVZlcnNp
b24sIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VXaXRoRHVwbGljYXRl
VmVyc2lvbikpKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNv
bnZlcnRUb1ZlY3RvcihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VXaXRoSW5jb3Jy
ZWN0QWFndWlkLCBzaXplb2Yoa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aElu
Y29ycmVjdEFhZ3VpZCkpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlYWRDVEFQR2V0SW5mb1Jlc3Bv
bnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKGtUZXN0QXV0aGVudGljYXRvckdldEluZm9SZXNwb25z
ZVdpdGhOb1ZlcnNpb24sIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VX
aXRoTm9WZXJzaW9uKSkpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVhZENUQVBHZXRJbmZvUmVzcG9u
c2UoY29udmVydEJ5dGVzVG9WZWN0b3Ioa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNl
V2l0aER1cGxpY2F0ZVZlcnNpb24sIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVz
cG9uc2VXaXRoRHVwbGljYXRlVmVyc2lvbikpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlYWRDVEFQ
R2V0SW5mb1Jlc3BvbnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKGtUZXN0QXV0aGVudGljYXRvckdl
dEluZm9SZXNwb25zZVdpdGhJbmNvcnJlY3RBYWd1aWQsIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0
b3JHZXRJbmZvUmVzcG9uc2VXaXRoSW5jb3JyZWN0QWFndWlkKSkpKTsKIH0KIAogVEVTVChDVEFQ
UmVzcG9uc2VUZXN0LCBUZXN0U2VyaWFsaXplR2V0SW5mb1Jlc3BvbnNlKQogewotICAgIEF1dGhl
bnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UgcmVzcG9uc2UoeyBQcm90b2NvbFZlcnNpb246OmtDdGFw
LCBQcm90b2NvbFZlcnNpb246OmtVMmYgfSwgY29udmVydFRvVmVjdG9yKGtUZXN0RGV2aWNlQWFn
dWlkLCBzaXplb2Yoa1Rlc3REZXZpY2VBYWd1aWQpKSk7CisgICAgQXV0aGVudGljYXRvckdldElu
Zm9SZXNwb25zZSByZXNwb25zZSh7IFByb3RvY29sVmVyc2lvbjo6a0N0YXAsIFByb3RvY29sVmVy
c2lvbjo6a1UyZiB9LCBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihrVGVzdERldmljZUFhZ3VpZCwgc2l6
ZW9mKGtUZXN0RGV2aWNlQWFndWlkKSkpOwogICAgIHJlc3BvbnNlLnNldEV4dGVuc2lvbnMoeyAi
dXZtIiwgImhtYWMtc2VjcmV0IiB9KTsKICAgICBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9u
cyBvcHRpb25zOwogICAgIG9wdGlvbnMuc2V0U3VwcG9ydHNSZXNpZGVudEtleSh0cnVlKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEu
aCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaAppbmRl
eCA2MGQzN2Y1YTdhOWMwNDY4ZjE5MDk0YjE3OWE2Nzk0MGY3YzQ4ZDFkLi4zOGUwM2M4ODZiNTk2
OWFjYWRlYThkM2U1MDE3MGJjZTI2ZDA3ZDhjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCkBAIC00MiwxMCArNDIsMzAgQEAgbmFtZXNw
YWNlIFRlc3REYXRhIHsKIGNvbnN0ZXhwciB1aW50OF90IGtDbGllbnREYXRhSGFzaFtdID0gewog
ICAgIDB4NjgsIDB4NzEsIDB4MzQsIDB4OTYsIDB4ODIsIDB4MjIsIDB4ZWMsIDB4MTcsIDB4MjAs
IDB4MmUsIDB4NDIsCiAgICAgMHg1MCwgMHg1ZiwgMHg4ZSwgMHhkMiwgMHhiMSwgMHg2YSwgMHhl
MiwgMHgyZiwgMHgxNiwgMHhiYiwgMHgwNSwKLSAgICAweGI4LCAweDhjLCAweDI1LCAweGRiLCAw
eDllLCAweDYwLCAweDI2LCAweDQ1LCAweGYxLCAweDQxfTsKKyAgICAweGI4LCAweDhjLCAweDI1
LCAweGRiLCAweDllLCAweDYwLCAweDI2LCAweDQ1LCAweGYxLCAweDQxCit9OwogCiBjb25zdGV4
cHIgdWludDhfdCBrVXNlcklkW10gPSB7MHgxMCwgMHg5OCwgMHgyMywgMHg3MiwgMHgzNSwgMHg0
MCwgMHg5OCwgMHg3Mn07CiAKK2NvbnN0ZXhwciBjaGFyIGtSZWx5aW5nUGFydHlJZFtdID0gImFj
bWUuY29tIjsKKworY29uc3RleHByIHVpbnQ4X3Qga1UyZlJlZ2lzdGVyQ29tbWFuZEFwZHVbXSA9
IHsKKyAgICAvLyBDTEEsIElOUywgUDEsIFAyIEFQRFUgaW5zdHJ1Y3Rpb25zCisgICAgMHgwMCwg
MHgwMSwgMHgwMCwgMHgwMCwKKyAgICAvLyBEYXRhIGxlbmd0aCBpbiAzIGJ5dGVzIGluIGJpZyBl
bmRpYW4gb3JkZXIuCisgICAgMHgwMCwgMHgwMCwgMHg0MCwKKyAgICAvLyBDaGFsbGVuZ2UgcGFy
YW1ldGVyIC0tIHNlZSBrQ2xpZW50RGF0YUhhc2gKKyAgICAweDY4LCAweDcxLCAweDM0LCAweDk2
LCAweDgyLCAweDIyLCAweGVjLCAweDE3LCAweDIwLCAweDJlLCAweDQyLAorICAgIDB4NTAsIDB4
NWYsIDB4OGUsIDB4ZDIsIDB4YjEsIDB4NmEsIDB4ZTIsIDB4MmYsIDB4MTYsIDB4YmIsIDB4MDUs
CisgICAgMHhiOCwgMHg4YywgMHgyNSwgMHhkYiwgMHg5ZSwgMHg2MCwgMHgyNiwgMHg0NSwgMHhm
MSwgMHg0MSwKKyAgICAvLyBBcHBsaWNhdGlvbiBwYXJhbWV0ZXIKKyAgICAweDExLCAweDk0LCAw
eDIyLCAweDhELCAweEE4LCAweEZELCAweEJELCAweEVFLCAweEZELCAweDI2LCAweDFCLCAweEQ3
LAorICAgIDB4QjYsIDB4NTksIDB4NUMsIDB4RkQsIDB4NzAsIDB4QTUsIDB4MEQsIDB4NzAsIDB4
QzYsIDB4NDAsIDB4N0IsIDB4Q0YsCisgICAgMHgwMSwgMHgzRCwgMHhFOSwgMHg2RCwgMHg0RSwg
MHhGQiwgMHgxNywgMHhERSwKKyAgICAvLyBNYXggcmVzcG9uc2UgbGVuZ3RoCisgICAgMHgwMCwg
MHgwMCwKK307CisKIC8vIFNhbXBsZSBVMkYgc2lnbiByZXF1ZXN0IHBhcmFtZXRlcnMgdXNlZCBp
biBleGFtcGxlIDcgb2YgdGhlIENUQVAgc3BlYy4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9y
Zy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRv
ci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjdXNpbmctdGhlLWN0YXAyLWF1dGhlbnRp
Y2F0b3JtYWtlY3JlZGVudGlhbC1jb21tYW5kLXdpdGgtY3RhcDEtdTJmLWF1dGhlbnRpY2F0b3Jz
CiBjb25zdGV4cHIgdWludDhfdCBrVTJmU2lnbktleUhhbmRsZVtdID0gewpAQCAtNTcsOCArNzcs
MTY5IEBAIGNvbnN0ZXhwciB1aW50OF90IGtVMmZTaWduS2V5SGFuZGxlW10gPSB7CiAgICAgMHhD
QywgMHhENCwgMHgxNSwgMHhDRCwgMHgwOCwgMHhGRSwgMHg0MiwgMHgwMCwgMHgzOCwKIH07CiAK
Ky8vIFNpZ25lZCBzaWduYXR1cmUgb2YgYWJvdmUgfGtVMmZTaWduS2V5SGFuZGxlfC4KK2NvbnN0
ZXhwciB1aW50OF90IGtVMmZTaWduYXR1cmVbXSA9IHsKKyAgICAweDMwLCAweDQ0LCAweDAyLCAw
eDIwLCAweDdCLCAweERFLCAweDBBLCAweDUyLCAweEFDLCAweDFGLCAweDRDLCAweDhCLAorICAg
IDB4MjcsIDB4RTAsIDB4MDMsIDB4QTMsIDB4NzAsIDB4Q0QsIDB4NjYsIDB4QTQsIDB4QzcsIDB4
MTEsIDB4OEQsIDB4RDIsCisgICAgMHgyRCwgMHg1NCwgMHg0NywgMHg4MywgMHg1RiwgMHg0NSwg
MHhCOSwgMHg5QywgMHg2OCwgMHg0MiwgMHgzRiwgMHhGNywKKyAgICAweDAyLCAweDIwLCAweDND
LCAweDUxLCAweDdCLCAweDQ3LCAweDg3LCAweDdGLCAweDg1LCAweDc4LCAweDJELCAweEUxLAor
ICAgIDB4MDAsIDB4ODYsIDB4QTcsIDB4ODMsIDB4RDEsIDB4RTcsIDB4REYsIDB4NEUsIDB4MzYs
IDB4MzksIDB4RTcsIDB4NzEsCisgICAgMHhGNSwgMHhGNiwgMHhBRiwgMHhBMywgMHg1QSwgMHhB
RCwgMHg1MywgMHg3MywgMHg4NSwgMHg4RSwKK307CisKK2NvbnN0ZXhwciB1aW50OF90IGtVMmZT
aWduQ29tbWFuZEFwZHVbXSA9IHsKKyAgICAvLyBDTEEsIElOUywgUDEsIFAyIEFQRFUgaW5zdHJ1
Y3Rpb24gcGFyYW1ldGVycworICAgIDB4MDAsIDB4MDIsIDB4MDMsIDB4MDAsCisgICAgLy8gRGF0
YSBMZW5ndGggKDMgYnl0ZXMgaW4gYmlnIGVuZGlhbiBvcmRlcikKKyAgICAweDAwLCAweDAwLCAw
eDgxLAorICAgIC8vIENoYWxsZW5nZSBwYXJhbWV0ZXIgLS0gc2VlIGtDbGllbnREYXRhSGFzaAor
ICAgIDB4NjgsIDB4NzEsIDB4MzQsIDB4OTYsIDB4ODIsIDB4MjIsIDB4ZWMsIDB4MTcsIDB4MjAs
IDB4MmUsIDB4NDIsCisgICAgMHg1MCwgMHg1ZiwgMHg4ZSwgMHhkMiwgMHhiMSwgMHg2YSwgMHhl
MiwgMHgyZiwgMHgxNiwgMHhiYiwgMHgwNSwKKyAgICAweGI4LCAweDhjLCAweDI1LCAweGRiLCAw
eDllLCAweDYwLCAweDI2LCAweDQ1LCAweGYxLCAweDQxLAorICAgIC8vIEFwcGxpY2F0aW9uIHBh
cmFtZXRlcgorICAgIDB4MTEsIDB4OTQsIDB4MjIsIDB4OEQsIDB4QTgsIDB4RkQsIDB4QkQsIDB4
RUUsIDB4RkQsIDB4MjYsIDB4MUIsIDB4RDcsCisgICAgMHhCNiwgMHg1OSwgMHg1QywgMHhGRCwg
MHg3MCwgMHhBNSwgMHgwRCwgMHg3MCwgMHhDNiwgMHg0MCwgMHg3QiwgMHhDRiwKKyAgICAweDAx
LCAweDNELCAweEU5LCAweDZELCAweDRFLCAweEZCLCAweDE3LCAweERFLAorICAgIC8vIEtleSBo
YW5kbGUgbGVuZ3RoCisgICAgMHg0MCwKKyAgICAvLyBLZXkgaGFuZGxlCisgICAgMHgzRSwgMHhC
RCwgMHg4OSwgMHhCRiwgMHg3NywgMHhFQywgMHg1MCwgMHg5NywgMHg1NSwgMHhFRSwgMHg5Qywg
MHgyNiwKKyAgICAweDM1LCAweEVGLCAweEFBLCAweEFDLCAweDdCLCAweDJCLCAweDlDLCAweDVD
LCAweEVGLCAweDE3LCAweDM2LCAweEMzLAorICAgIDB4NzEsIDB4N0QsIDB4QTQsIDB4ODUsIDB4
MzQsIDB4QzgsIDB4QzYsIDB4QjYsIDB4NTQsIDB4RDcsIDB4RkYsIDB4OTQsCisgICAgMHg1Riwg
MHg1MCwgMHhCNSwgMHhDQywgMHg0RSwgMHg3OCwgMHgwNSwgMHg1QiwgMHhERCwgMHgzOSwgMHg2
QiwgMHg2NCwKKyAgICAweEY3LCAweDhELCAweEEyLCAweEM1LCAweEY5LCAweDYyLCAweDAwLCAw
eENDLCAweEQ0LCAweDE1LCAweENELCAweDA4LAorICAgIDB4RkUsIDB4NDIsIDB4MDAsIDB4Mzgs
CisgICAgLy8gTWF4IHJlc3BvbnNlIGxlbmd0aAorICAgIDB4MDAsIDB4MDAsCit9OworCitjb25z
dGV4cHIgdWludDhfdCBrVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmRBcGR1W10gPSB7CisgICAgLy8g
Q0xBLCBJTlMsIFAxLCBQMiBBUERVIGluc3RydWN0aW9uIHBhcmFtZXRlcnMKKyAgICAweDAwLCAw
eDAyLCAweDA3LCAweDAwLAorICAgIC8vIERhdGEgTGVuZ3RoICgzIGJ5dGVzIGluIGJpZyBlbmRp
YW4gb3JkZXIpLgorICAgIDB4MDAsIDB4MDAsIDB4ODEsCisgICAgLy8gQ2hhbGxlbmdlIHBhcmFt
ZXRlciAtLSBzZWUga0NsaWVudERhdGFIYXNoCisgICAgMHg2OCwgMHg3MSwgMHgzNCwgMHg5Niwg
MHg4MiwgMHgyMiwgMHhlYywgMHgxNywgMHgyMCwgMHgyZSwgMHg0MiwKKyAgICAweDUwLCAweDVm
LCAweDhlLCAweGQyLCAweGIxLCAweDZhLCAweGUyLCAweDJmLCAweDE2LCAweGJiLCAweDA1LAor
ICAgIDB4YjgsIDB4OGMsIDB4MjUsIDB4ZGIsIDB4OWUsIDB4NjAsIDB4MjYsIDB4NDUsIDB4ZjEs
IDB4NDEsCisgICAgLy8gQXBwbGljYXRpb24gcGFyYW1ldGVyCisgICAgMHgxMSwgMHg5NCwgMHgy
MiwgMHg4RCwgMHhBOCwgMHhGRCwgMHhCRCwgMHhFRSwgMHhGRCwgMHgyNiwgMHgxQiwgMHhENywK
KyAgICAweEI2LCAweDU5LCAweDVDLCAweEZELCAweDcwLCAweEE1LCAweDBELCAweDcwLCAweEM2
LCAweDQwLCAweDdCLCAweENGLAorICAgIDB4MDEsIDB4M0QsIDB4RTksIDB4NkQsIDB4NEUsIDB4
RkIsIDB4MTcsIDB4REUsCisgICAgLy8gS2V5IGhhbmRsZSBsZW5ndGgKKyAgICAweDQwLAorICAg
IC8vIEtleSBoYW5kbGUKKyAgICAweDNFLCAweEJELCAweDg5LCAweEJGLCAweDc3LCAweEVDLCAw
eDUwLCAweDk3LCAweDU1LCAweEVFLCAweDlDLCAweDI2LAorICAgIDB4MzUsIDB4RUYsIDB4QUEs
IDB4QUMsIDB4N0IsIDB4MkIsIDB4OUMsIDB4NUMsIDB4RUYsIDB4MTcsIDB4MzYsIDB4QzMsCisg
ICAgMHg3MSwgMHg3RCwgMHhBNCwgMHg4NSwgMHgzNCwgMHhDOCwgMHhDNiwgMHhCNiwgMHg1NCwg
MHhENywgMHhGRiwgMHg5NCwKKyAgICAweDVGLCAweDUwLCAweEI1LCAweENDLCAweDRFLCAweDc4
LCAweDA1LCAweDVCLCAweERELCAweDM5LCAweDZCLCAweDY0LAorICAgIDB4RjcsIDB4OEQsIDB4
QTIsIDB4QzUsIDB4RjksIDB4NjIsIDB4MDAsIDB4Q0MsIDB4RDQsIDB4MTUsIDB4Q0QsIDB4MDgs
CisgICAgMHhGRSwgMHg0MiwgMHgwMCwgMHgzOCwKKyAgICAvLyBNYXggcmVzcG9uc2UgbGVuZ3Ro
CisgICAgMHgwMCwgMHgwMCwKK307CisKK2NvbnN0ZXhwciB1aW50OF90IGtVMmZGYWtlUmVnaXN0
ZXJDb21tYW5kW10gPSB7CisgICAgLy8gQ0xBLCBJTlMsIFAxLCBQMiBBUERVIGluc3RydWN0aW9u
cworICAgIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsCisgICAgLy8gRGF0YSBsZW5ndGggaW4gMyBi
eXRlcyBpbiBiaWcgZW5kaWFuIG9yZGVyLgorICAgIDB4MDAsIDB4MDAsIDB4NDAsCisgICAgLy8g
Qm9ndXMgY2hhbGxlbmdlIHBhcmFtZXRlcgorICAgIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4
NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsCisgICAgMHg0Miwg
MHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0
MiwgMHg0MiwKKyAgICAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAw
eDQyLAorICAgIC8vIEJvZ3VzIGFwcGxpY2F0aW9uIHBhcmFtZXRlcgorICAgIDB4NDEsIDB4NDEs
IDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4
NDEsCisgICAgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwg
MHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwKKyAgICAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQx
LCAweDQxLCAweDQxLCAweDQxLAorICAgIC8vIE1heGltdW0gcmVzcG9uc2UgbGVuZ3RoCisgICAg
MHgwMCwgMHgwMCwKK307CisKIC8vIFUyRiByZXNwb25zZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy8vIFUyRiByZXNw
b25zZSBibG9iIHByb2R1Y2VkIGJ5IGEgVTJGIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IHVzZWQgaW4g
ZXhhbXBsZSA2CisvLyBvZiB0aGUgQ1RBUCBzcGVjLgorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uu
b3JnL3NwZWNzL2ZpZG8tdjIuMC1yZC0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNh
dG9yLXByb3RvY29sLXYyLjAtcmQtMjAxNzA5MjcuaHRtbAorY29uc3RleHByIHVpbnQ4X3Qga1Rl
c3RVMmZSZWdpc3RlclJlc3BvbnNlW10gPSB7CisgICAgLy8gUmVzZXJ2ZWQgYnl0ZQorICAgIDB4
MDUsCisgICAgLy8gVXNlciBwdWJsaWMga2V5CisgICAgMHgwNCwgMHhFOCwgMHg3NiwgMHgyNSwg
MHg4OSwgMHg2RSwgMHhFNCwgMHhFNCwgMHg2RCwgMHhDMCwgMHgzMiwgMHg3NiwKKyAgICAweDZF
LCAweDgwLCAweDg3LCAweDk2LCAweDJGLCAweDM2LCAweERGLCAweDlELCAweEZFLCAweDhCLCAw
eDU2LCAweDdGLAorICAgIDB4MzcsIDB4NjMsIDB4MDEsIDB4NUIsIDB4MTksIDB4OTAsIDB4QTYs
IDB4MEUsIDB4MTQsIDB4MjcsIDB4REUsIDB4NjEsCisgICAgMHgyRCwgMHg2NiwgMHg0MSwgMHg4
QiwgMHhEQSwgMHgxOSwgMHg1MCwgMHg1OCwgMHgxRSwgMHhCQywgMHg1QywgMHg4QywKKyAgICAw
eDFELCAweEFELCAweDcxLCAweDBDLCAweEIxLCAweDRDLCAweDIyLCAweEY4LCAweEM5LCAweDcw
LCAweDQ1LCAweEY0LAorICAgIDB4NjEsIDB4MkYsIDB4QjIsIDB4MEMsIDB4OTEsCisgICAgLy8g
S2V5IGhhbmRsZSBsZW5ndGgKKyAgICAweDQwLAorICAgIC8vIEtleSBoYW5kbGUKKyAgICAweDNF
LCAweEJELCAweDg5LCAweEJGLCAweDc3LCAweEVDLCAweDUwLCAweDk3LCAweDU1LCAweEVFLCAw
eDlDLCAweDI2LAorICAgIDB4MzUsIDB4RUYsIDB4QUEsIDB4QUMsIDB4N0IsIDB4MkIsIDB4OUMs
IDB4NUMsIDB4RUYsIDB4MTcsIDB4MzYsIDB4QzMsCisgICAgMHg3MSwgMHg3RCwgMHhBNCwgMHg4
NSwgMHgzNCwgMHhDOCwgMHhDNiwgMHhCNiwgMHg1NCwgMHhENywgMHhGRiwgMHg5NCwKKyAgICAw
eDVGLCAweDUwLCAweEI1LCAweENDLCAweDRFLCAweDc4LCAweDA1LCAweDVCLCAweERELCAweDM5
LCAweDZCLCAweDY0LAorICAgIDB4RjcsIDB4OEQsIDB4QTIsIDB4QzUsIDB4RjksIDB4NjIsIDB4
MDAsIDB4Q0MsIDB4RDQsIDB4MTUsIDB4Q0QsIDB4MDgsCisgICAgMHhGRSwgMHg0MiwgMHgwMCwg
MHgzOCwKKyAgICAvLyBYLjUwOSBDZXJ0aWZpY2F0ZQorICAgIDB4MzAsIDB4ODIsIDB4MDIsIDB4
NEEsIDB4MzAsIDB4ODIsIDB4MDEsIDB4MzIsIDB4QTAsIDB4MDMsCisgICAgMHgwMiwgMHgwMSwg
MHgwMiwgMHgwMiwgMHgwNCwgMHgwNCwgMHg2QywgMHg4OCwgMHgyMiwgMHgzMCwgMHgwRCwgMHgw
NiwKKyAgICAweDA5LCAweDJBLCAweDg2LCAweDQ4LCAweDg2LCAweEY3LCAweDBELCAweDAxLCAw
eDAxLCAweDBCLCAweDA1LCAweDAwLAorICAgIDB4MzAsIDB4MkUsIDB4MzEsIDB4MkMsIDB4MzAs
IDB4MkEsIDB4MDYsIDB4MDMsIDB4NTUsIDB4MDQsIDB4MDMsIDB4MTMsCisgICAgMHgyMywgMHg1
OSwgMHg3NSwgMHg2MiwgMHg2OSwgMHg2MywgMHg2RiwgMHgyMCwgMHg1NSwgMHgzMiwgMHg0Niwg
MHgyMCwKKyAgICAweDUyLCAweDZGLCAweDZGLCAweDc0LCAweDIwLCAweDQzLCAweDQxLCAweDIw
LCAweDUzLCAweDY1LCAweDcyLCAweDY5LAorICAgIDB4NjEsIDB4NkMsIDB4MjAsIDB4MzQsIDB4
MzUsIDB4MzcsIDB4MzIsIDB4MzAsIDB4MzAsIDB4MzYsIDB4MzMsIDB4MzEsCisgICAgMHgzMCwg
MHgyMCwgMHgxNywgMHgwRCwgMHgzMSwgMHgzNCwgMHgzMCwgMHgzOCwgMHgzMCwgMHgzMSwgMHgz
MCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDVBLCAweDE4LCAweDBGLCAw
eDMyLCAweDMwLCAweDM1LCAweDMwLCAweDMwLAorICAgIDB4MzksIDB4MzAsIDB4MzQsIDB4MzAs
IDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4NUEsIDB4MzAsIDB4MkMsCisgICAgMHgz
MSwgMHgyQSwgMHgzMCwgMHgyOCwgMHgwNiwgMHgwMywgMHg1NSwgMHgwNCwgMHgwMywgMHgwQywg
MHgyMSwgMHg1OSwKKyAgICAweDc1LCAweDYyLCAweDY5LCAweDYzLCAweDZGLCAweDIwLCAweDU1
LCAweDMyLCAweDQ2LCAweDIwLCAweDQ1LCAweDQ1LAorICAgIDB4MjAsIDB4NTMsIDB4NjUsIDB4
NzIsIDB4NjksIDB4NjEsIDB4NkMsIDB4MjAsIDB4MzIsIDB4MzQsIDB4MzksIDB4MzEsCisgICAg
MHgzOCwgMHgzMiwgMHgzMywgMHgzMiwgMHgzNCwgMHgzNywgMHgzNywgMHgzMCwgMHgzMCwgMHg1
OSwgMHgzMCwgMHgxMywKKyAgICAweDA2LCAweDA3LCAweDJBLCAweDg2LCAweDQ4LCAweENFLCAw
eDNELCAweDAyLCAweDAxLCAweDA2LCAweDA4LCAweDJBLAorICAgIDB4ODYsIDB4NDgsIDB4Q0Us
IDB4M0QsIDB4MDMsIDB4MDEsIDB4MDcsIDB4MDMsIDB4NDIsIDB4MDAsIDB4MDQsIDB4M0MsCisg
ICAgMHhDQSwgMHhCOSwgMHgyQywgMHhDQiwgMHg5NywgMHgyOCwgMHg3RSwgMHhFOCwgMHhFNiwg
MHgzOSwgMHg0MywgMHg3RSwKKyAgICAweDIxLCAweEZDLCAweEQ2LCAweEI2LCAweEYxLCAweDY1
LCAweEIyLCAweEQ1LCAweEEzLCAweEYzLCAweERCLCAweDEzLAorICAgIDB4MUQsIDB4MzEsIDB4
QzEsIDB4NkIsIDB4NzQsIDB4MkIsIDB4QjQsIDB4NzYsIDB4RDgsIDB4RDEsIDB4RTksIDB4OTAs
CisgICAgMHg4MCwgMHhFQiwgMHg1NCwgMHg2QywgMHg5QiwgMHhCRCwgMHhGNSwgMHg1NiwgMHhF
NiwgMHgyMSwgMHgwRiwgMHhENCwKKyAgICAweDI3LCAweDg1LCAweDg5LCAweDlFLCAweDc4LCAw
eENDLCAweDU4LCAweDlFLCAweEJFLCAweDMxLCAweDBGLCAweDZDLAorICAgIDB4REIsIDB4OUYs
IDB4RjQsIDB4QTMsIDB4M0IsIDB4MzAsIDB4MzksIDB4MzAsIDB4MjIsIDB4MDYsIDB4MDksIDB4
MkIsCisgICAgMHgwNiwgMHgwMSwgMHgwNCwgMHgwMSwgMHg4MiwgMHhDNCwgMHgwQSwgMHgwMiwg
MHgwNCwgMHgxNSwgMHgzMSwgMHgyRSwKKyAgICAweDMzLCAweDJFLCAweDM2LCAweDJFLCAweDMx
LCAweDJFLCAweDM0LCAweDJFLCAweDMxLCAweDJFLCAweDM0LCAweDMxLAorICAgIDB4MzQsIDB4
MzgsIDB4MzIsIDB4MkUsIDB4MzEsIDB4MkUsIDB4MzIsIDB4MzAsIDB4MTMsIDB4MDYsIDB4MEIs
IDB4MkIsCisgICAgMHgwNiwgMHgwMSwgMHgwNCwgMHgwMSwgMHg4MiwgMHhFNSwgMHgxQywgMHgw
MiwgMHgwMSwgMHgwMSwgMHgwNCwgMHgwNCwKKyAgICAweDAzLCAweDAyLCAweDA0LCAweDMwLCAw
eDMwLCAweDBELCAweDA2LCAweDA5LCAweDJBLCAweDg2LCAweDQ4LCAweDg2LAorICAgIDB4Rjcs
IDB4MEQsIDB4MDEsIDB4MDEsIDB4MEIsIDB4MDUsIDB4MDAsIDB4MDMsIDB4ODIsIDB4MDEsIDB4
MDEsIDB4MDAsCisgICAgMHg5RiwgMHg5QiwgMHgwNSwgMHgyMiwgMHg0OCwgMHhCQywgMHg0Qywg
MHhGNCwgMHgyQywgMHhDNSwgMHg5OSwgMHgxRiwKKyAgICAweENBLCAweEFCLCAweEFDLCAweDlC
LCAweDY1LCAweDFCLCAweEJFLCAweDVCLCAweERDLCAweERDLCAweDhFLCAweEYwLAorICAgIDB4
QUQsIDB4MkMsIDB4MUMsIDB4MUYsIDB4RkIsIDB4MzYsIDB4RDEsIDB4ODcsIDB4MTUsIDB4RDQs
IDB4MkUsIDB4NzgsCisgICAgMHhCMiwgMHg0OSwgMHgyMiwgMHg0RiwgMHg5MiwgMHhDNywgMHhF
NiwgMHhFNywgMHhBMCwgMHg1QywgMHg0OSwgMHhGMCwKKyAgICAweEU3LCAweEU0LCAweEM4LCAw
eDgxLCAweEJGLCAweDJFLCAweDk0LCAweEY0LCAweDVFLCAweDRBLCAweDIxLCAweDgzLAorICAg
IDB4M0QsIDB4NzQsIDB4NTYsIDB4ODUsIDB4MUQsIDB4MEYsIDB4NkMsIDB4MTQsIDB4NUEsIDB4
MjksIDB4NTQsIDB4MEMsCisgICAgMHg4NywgMHg0RiwgMHgzMCwgMHg5MiwgMHhDOSwgMHgzNCwg
MHhCNCwgMHgzRCwgMHgyMiwgMHgyQiwgMHg4OSwgMHg2MiwKKyAgICAweEMwLCAweEY0LCAweDEw
LCAweENFLCAweEYxLCAweERCLCAweDc1LCAweDg5LCAweDJBLCAweEYxLCAweDE2LCAweEI0LAor
ICAgIDB4NEEsIDB4OTYsIDB4RjUsIDB4RDMsIDB4NUEsIDB4REUsIDB4QTMsIDB4ODIsIDB4MkYs
IDB4QzcsIDB4MTQsIDB4NkYsCisgICAgMHg2MCwgMHgwNCwgMHgzOCwgMHg1QiwgMHhDQiwgMHg2
OSwgMHhCNiwgMHg1QywgMHg5OSwgMHhFNywgMHhFQiwgMHg2OSwKKyAgICAweDE5LCAweDc4LCAw
eDY3LCAweDAzLCAweEMwLCAweEQ4LCAweENELCAweDQxLCAweEU4LCAweEY3LCAweDVDLCAweENB
LAorICAgIDB4NDQsIDB4QUEsIDB4OEEsIDB4QjcsIDB4MjUsIDB4QUQsIDB4OEUsIDB4NzksIDB4
OUYsIDB4RjMsIDB4QTgsIDB4NjksCisgICAgMHg2QSwgMHg2RiwgMHgxQiwgMHgyNiwgMHg1Niwg
MHhFNiwgMHgzMSwgMHhCMSwgMHhFNCwgMHgwMSwgMHg4MywgMHhDMCwKKyAgICAweDhGLCAweERB
LCAweDUzLCAweEZBLCAweDRBLCAweDhGLCAweDg1LCAweEEwLCAweDU2LCAweDkzLCAweDk0LCAw
eDRBLAorICAgIDB4RTEsIDB4NzksIDB4QTEsIDB4MzMsIDB4OUQsIDB4MDAsIDB4MkQsIDB4MTUs
IDB4Q0EsIDB4QkQsIDB4ODEsIDB4MDAsCisgICAgMHg5MCwgMHhFQywgMHg3MiwgMHgyRSwgMHhG
NSwgMHhERSwgMHhGOSwgMHg5NiwgMHg1QSwgMHgzNywgMHgxRCwgMHg0MSwKKyAgICAweDVELCAw
eDYyLCAweDRCLCAweDY4LCAweEEyLCAweDcwLCAweDdDLCAweEFELCAweDk3LCAweEJDLCAweERE
LCAweDE3LAorICAgIDB4ODUsIDB4QUYsIDB4OTcsIDB4RTIsIDB4NTgsIDB4RjMsIDB4M0QsIDB4
RjUsIDB4NkEsIDB4MDMsIDB4MUEsIDB4QTAsCisgICAgMHgzNSwgMHg2RCwgMHg4RSwgMHg4RCwg
MHg1RSwgMHhCQywgMHhBRCwgMHhDNywgMHg0RSwgMHgwNywgMHgxNiwgMHgzNiwKKyAgICAweEM2
LCAweEIxLCAweDEwLCAweEFDLCAweEU1LCAweENDLCAweDlCLCAweDkwLCAweERGLCAweEVBLCAw
eENBLCAweEU2LAorICAgIDB4NDAsIDB4RkYsIDB4MUIsIDB4QjAsIDB4RjEsIDB4RkUsIDB4NUQs
IDB4QjQsIDB4RUYsIDB4RjcsIDB4QTksIDB4NUYsCisgICAgMHgwNiwgMHgwNywgMHgzMywgMHhG
NSwKKyAgICAvLyBTaWduYXR1cmUKKyAgICAweDMwLCAweDQ1LCAweDAyLCAweDIwLCAweDMyLCAw
eDQ3LCAweDc5LCAweEM2LCAweDhGLCAweDMzLCAweDgwLCAweDI4LAorICAgIDB4OEEsIDB4MTEs
IDB4OTcsIDB4QjYsIDB4MDksIDB4NUYsIDB4N0EsIDB4NkUsIDB4QjksIDB4QjEsIDB4QjEsIDB4
QzEsCisgICAgMHgyNywgMHhGNiwgMHg2QSwgMHhFMSwgMHgyQSwgMHg5OSwgMHhGRSwgMHg4NSwg
MHgzMiwgMHhFQywgMHgyMywgMHhCOSwKKyAgICAweDAyLCAweDIxLCAweDAwLCAweEUzLCAweDk1
LCAweDE2LCAweEFDLCAweDRELCAweDYxLCAweEVFLCAweDY0LCAweDA0LAorICAgIDB4NEQsIDB4
NTAsIDB4QjQsIDB4MTUsIDB4QTYsIDB4QTQsIDB4RDQsIDB4RDgsIDB4NEIsIDB4QTYsIDB4RDgs
IDB4OTUsCisgICAgMHhDQiwgMHg1QSwgMHhCNywgMHhBMSwgMHhBQSwgMHg3RCwgMHgwOCwgMHgx
RCwgMHhFMywgMHg0MSwgMHhGQSwKK307CisKIC8vIEVDIHB1YmxpYyBrZXkgZW5jb2RlZCBpbiBD
T1NFX0tleSBmb3JtYXQgZXh0cmFjdGVkIGZyb20gYWJvdmUKIC8vIHxrVGVzdFUyZlJlZ2lzdGVy
UmVzcG9uc2V8LgogY29uc3RleHByIHVpbnQ4X3Qga1Rlc3RFQ1B1YmxpY0tleUNPU0VbXSA9IHsK
QEAgLTIwNCw2ICszODUsMTkgQEAgY29uc3RleHByIHVpbnQ4X3Qga1Rlc3RVMmZTaWduUmVzcG9u
c2VbXSA9IHsKICAgICAweEY1LCAweEY2LCAweEFGLCAweEEzLCAweDVBLCAweEFELCAweDUzLCAw
eDczLCAweDg1LCAweDhFLAogfTsKIAorLy8gVGhlIGF1dGhlbnRpY2F0b3IgZGF0YSBmb3Igc2ln
biByZXNwb25zZXMgZXh0cmFjdGVkIGZyb20gYWJvdmUKKy8vIHxrVGVzdFUyZlNpZ25SZXNwb25z
ZXwuCitjb25zdGV4cHIgdWludDhfdCBrVGVzdFNpZ25BdXRoZW50aWNhdG9yRGF0YVtdID0gewor
ICAgIC8vIFNIQTI1NiBoYXNoIG9mIGtUZXN0UmVseWluZ1BhcnR5SWQKKyAgICAweDExLCAweDk0
LCAweDIyLCAweDhELCAweEE4LCAweEZELCAweEJELCAweEVFLCAweEZELCAweDI2LCAweDFCLCAw
eEQ3LAorICAgIDB4QjYsIDB4NTksIDB4NUMsIDB4RkQsIDB4NzAsIDB4QTUsIDB4MEQsIDB4NzAs
IDB4QzYsIDB4NDAsIDB4N0IsIDB4Q0YsCisgICAgMHgwMSwgMHgzRCwgMHhFOSwgMHg2RCwgMHg0
RSwgMHhGQiwgMHgxNywgMHhERSwKKyAgICAvLyBGbGFncyAoVFVQIGJpdCBzZXQpCisgICAgMHgw
MSwKKyAgICAvLyBDb3VudGVyCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgzQiwKK307CisKIC8v
IENUQVAgcmVxdWVzdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBjb25zdGV4cHIgdWludDhfdCBrQ3RhcE1ha2VDcmVkZW50
aWFsUmVxdWVzdFtdID0gewogICAgIC8vIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBjb21t
YW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVTJmQ29t
bWFuZENvbnN0cnVjdG9yVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q3NDVmOWJiYzY0
YWUxZTE2NmUyMjNiNjMyYjczYjE4OTY5OTNlYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcApA
QCAtMCwwICsxLDIyNiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIENocm9taXVtIEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisj
aW5jbHVkZSAiRmlkb1Rlc3REYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKKworUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBjb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVl
c3QoKQoreworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlJwRW50aXR5
IHJwOworICAgIHJwLmlkID0gImFjbWUuY29tIjsKKyAgICBycC5uYW1lID0gImFjbWUuY29tIjsK
KworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlVzZXJFbnRpdHkgdXNl
cjsKKyAgICB1c2VyLmlkVmVjdG9yID0gY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtV
c2VySWQsIHNpemVvZihUZXN0RGF0YTo6a1VzZXJJZCkpOworICAgIHVzZXIubmFtZSA9ICJqb2hu
cHNtaXRoQGV4YW1wbGUuY29tIjsKKyAgICB1c2VyLmRpc3BsYXlOYW1lID0gIkpvaG4gUC4gU21p
dGgiOworICAgIHVzZXIuaWNvbiA9ICJodHRwczovL3BpY3MuYWNtZS5jb20vMDAvcC9hQmpqanBx
UGIucG5nIjsKKworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFt
ZXRlcnMgcGFyYW1zOworICAgIHBhcmFtcy50eXBlID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6
OlB1YmxpY0tleTsKKyAgICBwYXJhbXMuYWxnID0gQ09TRTo6RVMyNTY7CisKKyAgICBQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnM7CisgICAgb3B0aW9ucy5ycCA9IFdU
Rk1vdmUocnApOworICAgIG9wdGlvbnMudXNlciA9IFdURk1vdmUodXNlcik7CisgICAgb3B0aW9u
cy5wdWJLZXlDcmVkUGFyYW1zLmFwcGVuZChXVEZNb3ZlKHBhcmFtcykpOworCisgICAgcmV0dXJu
IG9wdGlvbnM7Cit9CisKK1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBjb25zdHJ1
Y3RHZXRBc3NlcnRpb25SZXF1ZXN0KCkKK3sKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMgb3B0aW9uczsKKyAgICBvcHRpb25zLnJwSWQgPSAiYWNtZS5jb20iOworICAgIHJl
dHVybiBvcHRpb25zOworfQorCitURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RD
b252ZXJ0Q3RhcE1ha2VDcmVkZW50aWFsVG9VMmZSZWdpc3RlcikKK3sKKyAgICBjb25zdCBhdXRv
IG1ha2VDcmVkZW50aWFsUGFyYW0gPSBjb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3QoKTsK
KworICAgIEVYUEVDVF9UUlVFKGlzQ29udmVydGlibGVUb1UyZlJlZ2lzdGVyQ29tbWFuZChtYWtl
Q3JlZGVudGlhbFBhcmFtKSk7CisKKyAgICBjb25zdCBhdXRvIHUyZlJlZ2lzdGVyQ29tbWFuZCA9
IGNvbnZlcnRUb1UyZlJlZ2lzdGVyQ29tbWFuZChjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0
YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCkpLCBt
YWtlQ3JlZGVudGlhbFBhcmFtKTsKKyAgICBBU1NFUlRfVFJVRSh1MmZSZWdpc3RlckNvbW1hbmQp
OworICAgIEVYUEVDVF9FUSgqdTJmUmVnaXN0ZXJDb21tYW5kLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihUZXN0RGF0YTo6a1UyZlJlZ2lzdGVyQ29tbWFuZEFwZHUsIHNpemVvZihUZXN0RGF0YTo6a1Uy
ZlJlZ2lzdGVyQ29tbWFuZEFwZHUpKSk7Cit9CisKK1RFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9y
VGVzdCwgVGVzdENvbnZlcnRDdGFwTWFrZUNyZWRlbnRpYWxUb1UyZkNoZWNrT25seVNpZ24pCit7
CisgICAgYXV0byBtYWtlQ3JlZGVudGlhbFBhcmFtID0gY29uc3RydWN0TWFrZUNyZWRlbnRpYWxS
ZXF1ZXN0KCk7CisgICAgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgY3JlZGVudGlhbERl
c2NyaXB0b3I7CisgICAgY3JlZGVudGlhbERlc2NyaXB0b3IudHlwZSA9IFB1YmxpY0tleUNyZWRl
bnRpYWxUeXBlOjpQdWJsaWNLZXk7CisgICAgY3JlZGVudGlhbERlc2NyaXB0b3IuaWRWZWN0b3Ig
PSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVv
ZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsKKyAgICBWZWN0b3I8UHVibGljS2V5Q3Jl
ZGVudGlhbERlc2NyaXB0b3I+IGV4Y2x1ZGVMaXN0OworICAgIGV4Y2x1ZGVMaXN0LmFwcGVuZChj
cmVkZW50aWFsRGVzY3JpcHRvcik7CisgICAgbWFrZUNyZWRlbnRpYWxQYXJhbS5leGNsdWRlQ3Jl
ZGVudGlhbHMgPSBXVEZNb3ZlKGV4Y2x1ZGVMaXN0KTsKKyAgICBFWFBFQ1RfVFJVRShpc0NvbnZl
cnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQobWFrZUNyZWRlbnRpYWxQYXJhbSkpOworCisgICAg
Y29uc3QgYXV0byB1MmZDaGVja09ubHlTaWduID0gY29udmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNv
bW1hbmQoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6
ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKSwgbWFrZUNyZWRlbnRpYWxQYXJhbSwgY3Jl
ZGVudGlhbERlc2NyaXB0b3IpOworICAgIEFTU0VSVF9UUlVFKHUyZkNoZWNrT25seVNpZ24pOwor
ICAgIEVYUEVDVF9FUSgqdTJmQ2hlY2tPbmx5U2lnbiwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVz
dERhdGE6OmtVMmZDaGVja09ubHlTaWduQ29tbWFuZEFwZHUsIHNpemVvZihUZXN0RGF0YTo6a1Uy
ZkNoZWNrT25seVNpZ25Db21tYW5kQXBkdSkpKTsKK30KKworVEVTVChVMmZDb21tYW5kQ29uc3Ry
dWN0b3JUZXN0LCBUZXN0Q29udmVydEN0YXBNYWtlQ3JlZGVudGlhbFRvVTJmQ2hlY2tPbmx5U2ln
bldpdGhJbnZhbGlkQ3JlZGVudGlhbFR5cGUpCit7CisgICAgYXV0byBtYWtlQ3JlZGVudGlhbFBh
cmFtID0gY29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0KCk7CisgICAgUHVibGljS2V5Q3Jl
ZGVudGlhbERlc2NyaXB0b3IgY3JlZGVudGlhbERlc2NyaXB0b3I7CisgICAgY3JlZGVudGlhbERl
c2NyaXB0b3IudHlwZSA9IHN0YXRpY19jYXN0PFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlPigtMSk7
CisgICAgY3JlZGVudGlhbERlc2NyaXB0b3IuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25L
ZXlIYW5kbGUpKTsKKyAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+IGV4
Y2x1ZGVMaXN0OworICAgIGV4Y2x1ZGVMaXN0LmFwcGVuZChjcmVkZW50aWFsRGVzY3JpcHRvcik7
CisgICAgbWFrZUNyZWRlbnRpYWxQYXJhbS5leGNsdWRlQ3JlZGVudGlhbHMgPSBXVEZNb3ZlKGV4
Y2x1ZGVMaXN0KTsKKyAgICBFWFBFQ1RfVFJVRShpc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNv
bW1hbmQobWFrZUNyZWRlbnRpYWxQYXJhbSkpOworCisgICAgY29uc3QgYXV0byB1MmZDaGVja09u
bHlTaWduID0gY29udmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmQoY29udmVydEJ5dGVzVG9W
ZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50
RGF0YUhhc2gpKSwgbWFrZUNyZWRlbnRpYWxQYXJhbSwgY3JlZGVudGlhbERlc2NyaXB0b3IpOwor
ICAgIEVYUEVDVF9GQUxTRSh1MmZDaGVja09ubHlTaWduKTsKK30KKworVEVTVChVMmZDb21tYW5k
Q29uc3RydWN0b3JUZXN0LCBUZXN0VTJmUmVnaXN0ZXJDcmVkZW50aWFsQWxnb3JpdGhtUmVxdWly
ZW1lbnQpCit7CisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UnBFbnRp
dHkgcnA7CisgICAgcnAuaWQgPSAiYWNtZS5jb20iOworICAgIHJwLm5hbWUgPSAiYWNtZS5jb20i
OworCisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6VXNlckVudGl0eSB1
c2VyOworICAgIHVzZXIuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6
a1VzZXJJZCwgc2l6ZW9mKFRlc3REYXRhOjprVXNlcklkKSk7CisgICAgdXNlci5uYW1lID0gImpv
aG5wc21pdGhAZXhhbXBsZS5jb20iOworICAgIHVzZXIuZGlzcGxheU5hbWUgPSAiSm9obiBQLiBT
bWl0aCI7CisgICAgdXNlci5pY29uID0gImh0dHBzOi8vcGljcy5hY21lLmNvbS8wMC9wL2FCampq
cHFQYi5wbmciOworCisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UGFy
YW1ldGVycyBwYXJhbXM7CisgICAgcGFyYW1zLnR5cGUgPSBQdWJsaWNLZXlDcmVkZW50aWFsVHlw
ZTo6UHVibGljS2V5OworICAgIHBhcmFtcy5hbGcgPSAtMjU3OworCisgICAgUHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyBtYWtlQ3JlZGVudGlhbFBhcmFtOworICAgIG1ha2VDcmVk
ZW50aWFsUGFyYW0ucnAgPSBXVEZNb3ZlKHJwKTsKKyAgICBtYWtlQ3JlZGVudGlhbFBhcmFtLnVz
ZXIgPSBXVEZNb3ZlKHVzZXIpOworICAgIG1ha2VDcmVkZW50aWFsUGFyYW0ucHViS2V5Q3JlZFBh
cmFtcy5hcHBlbmQoV1RGTW92ZShwYXJhbXMpKTsKKworICAgIEVYUEVDVF9GQUxTRShpc0NvbnZl
cnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQobWFrZUNyZWRlbnRpYWxQYXJhbSkpOworfQorCitU
RVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RVMmZSZWdpc3RlclVzZXJWZXJpZmlj
YXRpb25SZXF1aXJlbWVudCkKK3sKKyAgICBhdXRvIG1ha2VDcmVkZW50aWFsUGFyYW0gPSBjb25z
dHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3QoKTsKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgc2VsZWN0aW9uOwor
ICAgIHNlbGVjdGlvbi51c2VyVmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNhdGlvblJlcXVpcmVt
ZW50OjpSZXF1aXJlZDsKKyAgICBtYWtlQ3JlZGVudGlhbFBhcmFtLmF1dGhlbnRpY2F0b3JTZWxl
Y3Rpb24gPSBXVEZNb3ZlKHNlbGVjdGlvbik7CisKKyAgICBFWFBFQ1RfRkFMU0UoaXNDb252ZXJ0
aWJsZVRvVTJmUmVnaXN0ZXJDb21tYW5kKG1ha2VDcmVkZW50aWFsUGFyYW0pKTsKK30KKworVEVT
VChVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LCBUZXN0VTJmUmVnaXN0ZXJSZXNpZGVudEtleVJl
cXVpcmVtZW50KQoreworICAgIGF1dG8gbWFrZUNyZWRlbnRpYWxQYXJhbSA9IGNvbnN0cnVjdE1h
a2VDcmVkZW50aWFsUmVxdWVzdCgpOworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnM6OkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYSBzZWxlY3Rpb247CisgICAgc2Vs
ZWN0aW9uLnJlcXVpcmVSZXNpZGVudEtleSA9IHRydWU7CisgICAgbWFrZUNyZWRlbnRpYWxQYXJh
bS5hdXRoZW50aWNhdG9yU2VsZWN0aW9uID0gV1RGTW92ZShzZWxlY3Rpb24pOworCisgICAgRVhQ
RUNUX0ZBTFNFKGlzQ29udmVydGlibGVUb1UyZlJlZ2lzdGVyQ29tbWFuZChtYWtlQ3JlZGVudGlh
bFBhcmFtKSk7Cit9CisKK1RFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdCwgVGVzdENvbnZl
cnRDdGFwR2V0QXNzZXJ0aW9uVG9VMmZTaWduUmVxdWVzdCkKK3sKKyAgICBhdXRvIGdldEFzc2Vy
dGlvblJlcSA9IGNvbnN0cnVjdEdldEFzc2VydGlvblJlcXVlc3QoKTsKKyAgICBQdWJsaWNLZXlD
cmVkZW50aWFsRGVzY3JpcHRvciBjcmVkZW50aWFsRGVzY3JpcHRvcjsKKyAgICBjcmVkZW50aWFs
RGVzY3JpcHRvci50eXBlID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleTsKKyAg
ICBjcmVkZW50aWFsRGVzY3JpcHRvci5pZFZlY3RvciA9IGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRl
c3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhh
bmRsZSkpOworICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gYWxsb3dl
ZExpc3Q7CisgICAgYWxsb3dlZExpc3QuYXBwZW5kKFdURk1vdmUoY3JlZGVudGlhbERlc2NyaXB0
b3IpKTsKKyAgICBnZXRBc3NlcnRpb25SZXEuYWxsb3dDcmVkZW50aWFscyA9IFdURk1vdmUoYWxs
b3dlZExpc3QpOworICAgIEVYUEVDVF9UUlVFKGlzQ29udmVydGlibGVUb1UyZlNpZ25Db21tYW5k
KGdldEFzc2VydGlvblJlcSkpOworCisgICAgY29uc3QgYXV0byB1MmZTaWduQ29tbWFuZCA9IGNv
bnZlcnRUb1UyZlNpZ25Db21tYW5kKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprQ2xp
ZW50RGF0YUhhc2gsIHNpemVvZihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoKSksIGdldEFzc2Vy
dGlvblJlcSwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxl
LCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSkpOworICAgIEFTU0VSVF9UUlVF
KHUyZlNpZ25Db21tYW5kKTsKKyAgICBFWFBFQ1RfRVEoKnUyZlNpZ25Db21tYW5kLCBjb252ZXJ0
Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1UyZlNpZ25Db21tYW5kQXBkdSwgc2l6ZW9mKFRlc3RE
YXRhOjprVTJmU2lnbkNvbW1hbmRBcGR1KSkpOworfQorCitURVNUKFUyZkNvbW1hbmRDb25zdHJ1
Y3RvclRlc3QsIFRlc3RVMmZTaWduQWxsb3dMaXN0UmVxdWlyZW1lbnQpCit7CisgICAgYXV0byBn
ZXRBc3NlcnRpb25SZXEgPSBjb25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0KCk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzQ29udmVydGlibGVUb1UyZlNpZ25Db21tYW5kKGdldEFzc2VydGlvblJlcSkp
OworfQorCitURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RVMmZTaWduVXNlclZl
cmlmaWNhdGlvblJlcXVpcmVtZW50KQoreworICAgIGF1dG8gZ2V0QXNzZXJ0aW9uUmVxID0gY29u
c3RydWN0R2V0QXNzZXJ0aW9uUmVxdWVzdCgpOworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNj
cmlwdG9yIGNyZWRlbnRpYWxEZXNjcmlwdG9yOworICAgIGNyZWRlbnRpYWxEZXNjcmlwdG9yLnR5
cGUgPSBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5OworICAgIGNyZWRlbnRpYWxE
ZXNjcmlwdG9yLmlkVmVjdG9yID0gY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVMmZT
aWduS2V5SGFuZGxlLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSk7CisgICAg
VmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yPiBhbGxvd2VkTGlzdDsKKyAgICBh
bGxvd2VkTGlzdC5hcHBlbmQoV1RGTW92ZShjcmVkZW50aWFsRGVzY3JpcHRvcikpOworICAgIGdl
dEFzc2VydGlvblJlcS5hbGxvd0NyZWRlbnRpYWxzID0gV1RGTW92ZShhbGxvd2VkTGlzdCk7Cisg
ICAgZ2V0QXNzZXJ0aW9uUmVxLnVzZXJWZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uUmVx
dWlyZW1lbnQ6OlJlcXVpcmVkOworCisgICAgRVhQRUNUX0ZBTFNFKGlzQ29udmVydGlibGVUb1Uy
ZlNpZ25Db21tYW5kKGdldEFzc2VydGlvblJlcSkpOworfQorCitURVNUKFUyZkNvbW1hbmRDb25z
dHJ1Y3RvclRlc3QsIFRlc3RDcmVhdGVTaWduV2l0aEluY29ycmVjdEtleUhhbmRsZSkKK3sKKyAg
ICBhdXRvIGdldEFzc2VydGlvblJlcSA9IGNvbnN0cnVjdEdldEFzc2VydGlvblJlcXVlc3QoKTsK
KyAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciBjcmVkZW50aWFsRGVzY3JpcHRvcjsK
KyAgICBjcmVkZW50aWFsRGVzY3JpcHRvci50eXBlID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6
OlB1YmxpY0tleTsKKyAgICBjcmVkZW50aWFsRGVzY3JpcHRvci5pZFZlY3RvciA9IGNvbnZlcnRC
eXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRh
OjprVTJmU2lnbktleUhhbmRsZSkpOworICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVz
Y3JpcHRvcj4gYWxsb3dlZExpc3Q7CisgICAgYWxsb3dlZExpc3QuYXBwZW5kKFdURk1vdmUoY3Jl
ZGVudGlhbERlc2NyaXB0b3IpKTsKKyAgICBnZXRBc3NlcnRpb25SZXEuYWxsb3dDcmVkZW50aWFs
cyA9IFdURk1vdmUoYWxsb3dlZExpc3QpOworICAgIEFTU0VSVF9UUlVFKGlzQ29udmVydGlibGVU
b1UyZlNpZ25Db21tYW5kKGdldEFzc2VydGlvblJlcSkpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGtleUhhbmRsZShrTWF4S2V5SGFuZGxlTGVuZ3RoLCAweGZmKTsKKyAgICBjb25zdCBhdXRvIHZh
bGlkU2lnbkNvbW1hbmQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChjb252ZXJ0Qnl0ZXNUb1Zl
Y3RvcihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnRE
YXRhSGFzaCkpLCBnZXRBc3NlcnRpb25SZXEsIGtleUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUo
dmFsaWRTaWduQ29tbWFuZCk7CisKKyAgICBrZXlIYW5kbGUuYXBwZW5kKDB4ZmYpOworICAgIGNv
bnN0IGF1dG8gaW52YWxpZFNpZ25Db21tYW5kID0gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29u
dmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3RE
YXRhOjprQ2xpZW50RGF0YUhhc2gpKSwgZ2V0QXNzZXJ0aW9uUmVxLCBrZXlIYW5kbGUpOworICAg
IEVYUEVDVF9GQUxTRShpbnZhbGlkU2lnbkNvbW1hbmQpOworfQorCitURVNUKFUyZkNvbW1hbmRD
b25zdHJ1Y3RvclRlc3QsIFRlc3RDb25zdHJ1Y3RCb2d1c1UyZlJlZ2lzdHJhdGlvbkNvbW1hbmQp
Cit7CisgICAgRVhQRUNUX0VRKGNvbnN0cnVjdEJvZ3VzVTJmUmVnaXN0cmF0aW9uQ29tbWFuZCgp
LCBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1UyZkZha2VSZWdpc3RlckNvbW1hbmQs
IHNpemVvZihUZXN0RGF0YTo6a1UyZkZha2VSZWdpc3RlckNvbW1hbmQpKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZDk0YzQ1NThlYjQ4NTNjYmM4NzQxZGM1NThhODczYmUyOTRlZWYwNS4uMDEwMzkzOWVk
YjllMTY5NDJhNzNhOGNhOGY4NDM2ZmFjNWVlMTk0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDE5LTAxLTA0ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dlYkF1dGhOXSBJbXBvcnQgVTJGIGNvbW1hbmQvcmVzcG9uc2UgY29udmVydGVycyBmcm9tIENo
cm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTMxNTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3MDU0MDI4PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVzIEJ1ZyAxODM1MzQ6CisgICAg
ICAgIDcpIENoYW5nZSBsaXR0bGUgZW5kaWFuIGJ5dGVzIChBUk0gYW5kIHg4NiBkZWZhdWx0KSB0
byBiaWcgZW5kaWFuIGFzIHJlcXVlc3RlZCBieSB0aGUgc3BlYy4KKworICAgICAgICAqIGh0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0
cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0
aG4vcmVzb3VyY2VzL3V0aWwuanM6CisKIDIwMTgtMTItMjEgIEp1c3RpbiBNaWNoYXVkICA8anVz
dGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIENTUyB2YXJpYWJsZXMgZG9uJ3Qgd29y
ayBmb3IgY29sb3JzIGluICJib3JkZXIiIHByb3BlcnR5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
aGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKaW5kZXggOTU3YzI3NGQ1
NDRlOWRkN2FlNzNlYTIyYWUyNzc0NGU3ZTg1NWY3ZS4uNWQ5M2I4MDdhNDRjNTM3MzRhN2Y1ZDgx
MWRmNjAxMzU2MmMwNWM3YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtMjIsNyArMjIsNyBAQAogICAgICAgICBj
b25zdCBhdHRlc3RhdGlvbk9iamVjdCA9IENCT1IuZGVjb2RlKGNyZWRlbnRpYWwucmVzcG9uc2Uu
YXR0ZXN0YXRpb25PYmplY3QpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2Jq
ZWN0LmZtdCwgInBhY2tlZCIpOwogICAgICAgICAvLyBDaGVjayBhdXRoRGF0YQotICAgICAgICBj
b25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKGF0dGVzdGF0aW9uT2JqZWN0LmF1dGhEYXRh
LCBmYWxzZSk7CisgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0
YXRpb25PYmplY3QuYXV0aERhdGEpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhT
dHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDZjYzdmYjk2NzlkNTViMmRiOTA5MmUxYzhkOWU1
ZTFkMDJiNzU4MGYwYjQ4MTJjNzcwOTYyZTFlNDhmNWFkOCIpOwogICAgICAgICBhc3NlcnRfZXF1
YWxzKGF1dGhEYXRhLmZsYWdzLCA2NSk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEu
Y291bnRlciwgNzgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNz
LWhpZC5odHRwcy5odG1sCmluZGV4IDFmMTNkZWQ4Mzg0ODliYWNmMDhhNzczNDc2Mjg0ZTY0ZmNm
MjQwMTEuLjY3ZGI4MzEwMDdmN2EyYzUwNDVkNzJkYWUzZTFjZDgwMDFjYzI0ZDAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKQEAg
LTE4LDcgKzE4LDcgQEAKICAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnJlc3BvbnNl
LnVzZXJIYW5kbGUsIG51bGwpOwogCiAgICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCi0gICAgICAg
IGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlh
bC5yZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSksIGZhbHNlKTsKKyAgICAgICAgY29uc3QgYXV0
aERhdGEgPSBkZWNvZGVBdXRoRGF0YShuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJlc3BvbnNl
LmF1dGhlbnRpY2F0b3JEYXRhKSk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0
cmluZyhhdXRoRGF0YS5ycElkSGFzaCksICI0NmNjN2ZiOTY3OWQ1NWIyZGI5MDkyZTFjOGQ5ZTVl
MWQwMmI3NTgwZjBiNDgxMmM3NzA5NjJlMWU0OGY1YWQ4Iik7CiAgICAgICAgIGFzc2VydF9lcXVh
bHMoYXV0aERhdGEuZmxhZ3MsIDEpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmNv
dW50ZXIsIDgwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jl
c291cmNlcy91dGlsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2Vz
L3V0aWwuanMKaW5kZXggY2Q1OTgwZDk2Yzc2ODJmZTgzMmU2Nzc5NDg3ODEwMTc1NDczYjc2NS4u
ODNmNGI0OGFkY2YyNWI3MDA0ZTk3MDFmNDdmMDEzZjhhMDU5YWZhYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKQEAgLTEzNCw3ICsxMzQs
NyBAQCBmdW5jdGlvbiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoaGV4U3RyaW5nKQogICAgIHJldHVy
biBhcnJheUJ1ZmZlcjsKIH0KIAotZnVuY3Rpb24gZGVjb2RlQXV0aERhdGEoYXV0aERhdGFVaW50
OEFycmF5LCBsaXR0bGVFbmRpYW4gPSB0cnVlKQorZnVuY3Rpb24gZGVjb2RlQXV0aERhdGEoYXV0
aERhdGFVaW50OEFycmF5KQogewogICAgIGxldCBhdXRoRGF0YU9iamVjdCA9IHsgfTsKICAgICBs
ZXQgcG9zID0gMDsKQEAgLTE1OCwxMCArMTU4LDcgQEAgZnVuY3Rpb24gZGVjb2RlQXV0aERhdGEo
YXV0aERhdGFVaW50OEFycmF5LCBsaXR0bGVFbmRpYW4gPSB0cnVlKQogICAgIHNpemUgPSA0Owog
ICAgIGlmIChwb3MgKyBzaXplID4gYXV0aERhdGFVaW50OEFycmF5LmJ5dGVMZW5ndGgpCiAgICAg
ICAgIHJldHVybiB7IH07Ci0gICAgaWYgKGxpdHRsZUVuZGlhbikKLSAgICAgICAgYXV0aERhdGFP
YmplY3QuY291bnRlciA9IG5ldyBVaW50MzJBcnJheShhdXRoRGF0YVVpbnQ4QXJyYXkuc2xpY2Uo
cG9zLCBwb3MgKyBzaXplKSlbMF07Ci0gICAgZWxzZQotICAgICAgICBhdXRoRGF0YU9iamVjdC5j
b3VudGVyID0gKGF1dGhEYXRhVWludDhBcnJheVtwb3NdIDw8IDI0KSArIChhdXRoRGF0YVVpbnQ4
QXJyYXlbcG9zICsgMV0gPDwgMTYpICsgKGF1dGhEYXRhVWludDhBcnJheVtwb3MgKyAyXSA8PCA4
KSArIGF1dGhEYXRhVWludDhBcnJheVtwb3MgKyAzXTsKKyAgICBhdXRoRGF0YU9iamVjdC5jb3Vu
dGVyID0gKGF1dGhEYXRhVWludDhBcnJheVtwb3NdIDw8IDI0KSArIChhdXRoRGF0YVVpbnQ4QXJy
YXlbcG9zICsgMV0gPDwgMTYpICsgKGF1dGhEYXRhVWludDhBcnJheVtwb3MgKyAyXSA8PCA4KSAr
IGF1dGhEYXRhVWludDhBcnJheVtwb3MgKyAzXTsKICAgICBwb3MgPSBwb3MgKyBzaXplOwogCiAg
ICAgaWYgKHBvcyA9PSBhdXRoRGF0YVVpbnQ4QXJyYXkuYnl0ZUxlbmd0aCkKQEAgLTE3OCwxMCAr
MTc1LDcgQEAgZnVuY3Rpb24gZGVjb2RlQXV0aERhdGEoYXV0aERhdGFVaW50OEFycmF5LCBsaXR0
bGVFbmRpYW4gPSB0cnVlKQogICAgIHNpemUgPSAyOwogICAgIGlmIChwb3MgKyBzaXplID4gYXV0
aERhdGFVaW50OEFycmF5LmJ5dGVMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgaWYg
KGxpdHRsZUVuZGlhbikKLSAgICAgICAgYXV0aERhdGFPYmplY3QubCA9IG5ldyBVaW50MTZBcnJh
eShhdXRoRGF0YVVpbnQ4QXJyYXkuc2xpY2UocG9zLCBwb3MgKyBzaXplKSlbMF07Ci0gICAgZWxz
ZQotICAgICAgICBhdXRoRGF0YU9iamVjdC5sID0gKGF1dGhEYXRhVWludDhBcnJheVtwb3NdIDw8
IDgpICsgYXV0aERhdGFVaW50OEFycmF5W3BvcyArIDFdOworICAgIGF1dGhEYXRhT2JqZWN0Lmwg
PSAoYXV0aERhdGFVaW50OEFycmF5W3Bvc10gPDwgOCkgKyBhdXRoRGF0YVVpbnQ4QXJyYXlbcG9z
ICsgMV07CiAgICAgcG9zID0gcG9zICsgc2l6ZTsKIAogICAgIC8vIENyZWRlbnRpYWwgSUQK
</data>
<flag name="review"
          id="375240"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358470</attachid>
            <date>2019-01-06 17:31:04 -0800</date>
            <delta_ts>2019-01-06 18:08:29 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-193150-20190106173103.patch</filename>
            <type>text/plain</type>
            <size>123389</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWYzOGQ3YzJkYTI1Njc1
ZGRjNzhhOGRlNzU0YjI4OTlmMzRlMzNjYi4uMjJmMDAzYTBlOWI0Y2E1NWVjMzgyYzA5NmNlZmJk
ZGNjODM2ODA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTAxLTA0ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBJbXBv
cnQgVTJGIGNvbW1hbmQvcmVzcG9uc2UgY29udmVydGVycyBmcm9tIENocm9taXVtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMxNTAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ3MDU0MDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1
bGdoYW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBvcnRzIENocm9taXVtJ3MgVTJGIGNvbW1h
bmQvcmVzcG9uc2UgY29udmVydGVyczoKKyAgICAgICAgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3Jn
L3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9y
LXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtaW50ZXJvcGVyYWJpbGl0eQorICAg
ICAgICAxLiBJdCBkaXJlY3RseSBpbXBvcnRzIHRoZSBmb2xsb3dpbmcgZmlsZXMgYW5kIHN1aXQg
dGhlbSB0byBXZWJLaXQncyBjb2Rpbmcgc3R5bGU6CisgICAgICAgIGh0dHBzOi8vY3MuY2hyb21p
dW0ub3JnL2Nocm9taXVtL3NyYy9kZXZpY2UvZmlkby91MmZfY29tbWFuZF9jb25zdHJ1Y3Rvci5j
Yz9sPTEmcmNsPWRiNjI0MTEwMzE3ZDAxZWZhNzhjZDMyZTdiZTE1MjQxOTBlMWJlYjAKKyAgICAg
ICAgaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL2RldmljZS9maWRvL3UyZl9j
b21tYW5kX2NvbnN0cnVjdG9yLmg/cmNsPWRiNjI0MTEwMzE3ZDAxZWZhNzhjZDMyZTdiZTE1MjQx
OTBlMWJlYjAKKyAgICAgICAgaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL2Rl
dmljZS9maWRvL3UyZl9jb21tYW5kX2NvbnN0cnVjdG9yX3VuaXR0ZXN0LmNjP3JjbD1kYjYyNDEx
MDMxN2QwMWVmYTc4Y2QzMmU3YmUxNTI0MTkwZTFiZWIwCisgICAgICAgIDIuIEl0IGdhdGhlcnMg
dGhlIGZvbGxvd2luZyBtZXRob2RzIGludG8gVTJmUmVzcG9uc2VDb252ZXJ0ZXI6CisgICAgICAg
IEF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbFJlc3BvbnNlOjpDcmVhdGVGcm9tVTJmUmVnaXN0
ZXJSZXNwb25zZSgpCisgICAgICAgIEF1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb25SZXNwb25zZTo6
Q3JlYXRlRnJvbVUyZlNpZ25SZXNwb25zZSgpCisgICAgICAgIDMuIEl0IGFsc28gdXBkYXRlcyBG
aWRvQ29uc3RhbnRzLmgsIEZpZG9UZXN0RGF0YS5oIGFuZCBDdGFwUmVzcG9uc2VUZXN0LmNwcCBh
Y2NvcmRpbmdseS4KKworICAgICAgICBCZXNpZGVzIGltcG9ydGluZyBzdHVmZiBmcm9tIENocm9p
bXVtLCBpdCBhbHNvIGdhdGhlcnMgYSBidW5jaCBvZiBjb25zdGFudHMgYW5kIGhlbHBlciBmdW5j
dGlvbnMgaW50byBXZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCisgICAgICAgIGFuZCBXZWJB
dXRoZW50aWNhdGlvblV0aWxzLmguIEl0IGFsc28gZml4ZXMgQnVnIDE4MzUzNDogMikgYW5kIDcp
LgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw6OnByb2R1Y2VDbGllbnREYXRhSnNvbkhh
c2gpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFu
dHMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9DT1NFQ29u
c3RhbnRzLmguCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0
aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpwcm9kdWNlUnBJZEhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6
ZW5jb2RlRVMyNTZQdWJsaWNLZXlBc0NCT1IpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBdHRl
c3RlZENyZWRlbnRpYWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQXV0aERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6YnVpbGRBdHRlc3RhdGlvbk9iamVjdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0NPU0VDb25zdGFudHMuaC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwOgorICAgICAg
ICAoZmlkbzo6Z2V0Q3JlZGVudGlhbElkKToKKyAgICAgICAgKGZpZG86OnJlYWRDVEFQR2V0SW5m
b1Jlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50
cy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0
b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKGZpZG86OldlYkNvcmU6OmNvbnN0cnVjdFUyZlJlZ2lz
dGVyQ29tbWFuZCk6CisgICAgICAgIChmaWRvOjpXZWJDb3JlOjpjb25zdHJ1Y3RVMmZTaWduQ29t
bWFuZCk6CisgICAgICAgIChmaWRvOjppc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQp
OgorICAgICAgICAoZmlkbzo6aXNDb252ZXJ0aWJsZVRvVTJmU2lnbkNvbW1hbmQpOgorICAgICAg
ICAoZmlkbzo6Y29udmVydFRvVTJmUmVnaXN0ZXJDb21tYW5kKToKKyAgICAgICAgKGZpZG86OmNv
bnZlcnRUb1UyZkNoZWNrT25seVNpZ25Db21tYW5kKToKKyAgICAgICAgKGZpZG86OmNvbnZlcnRU
b1UyZlNpZ25Db21tYW5kKToKKyAgICAgICAgKGZpZG86OmNvbnN0cnVjdEJvZ3VzVTJmUmVnaXN0
cmF0aW9uQ29tbWFuZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1h
bmRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
VTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGZpZG86OldlYkNvcmU6
OmV4dHJhY3RFQ1B1YmxpY0tleUZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25zZSk6CisgICAgICAg
IChmaWRvOjpXZWJDb3JlOjpleHRyYWN0Q3JlZGVudGlhbElkRnJvbVUyZlJlZ2lzdHJhdGlvblJl
c3BvbnNlKToKKyAgICAgICAgKGZpZG86OldlYkNvcmU6OmNyZWF0ZUF0dGVzdGVkQ3JlZGVudGlh
bERhdGFGcm9tVTJmUmVnaXN0ZXJSZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpXZWJDb3JlOjpw
YXJzZVg1MDlMZW5ndGgpOgorICAgICAgICAoZmlkbzo6V2ViQ29yZTo6Y3JlYXRlRmlkb0F0dGVz
dGF0aW9uU3RhdGVtZW50RnJvbVUyZlJlZ2lzdGVyUmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6
cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6cmVhZEZyb21VMmZTaWdu
UmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNv
bnZlcnRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmNwcDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMTItMjEgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBVc2luZyBmaWxlIHVwbG9hZCBjYW4gdHJp
Z2dlciBhIGNyYXNoIHVuZGVyIFJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVVcGxvYWRJY29uRGVj
b3JhdGlvbnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxYTIyMmZjNjJhZGMxMTUwN2NhN2UwNGVlMTE1OWE0OWU0
Zjk2NGI4Li42ZTZlNzg5NjIzZThjNTA4OWI3MDE3ZTU1OThhNmYyZjA0NzM0MDJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTAxLTA0ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBJbXBvcnQgVTJGIGNvbW1hbmQvcmVzcG9u
c2UgY29udmVydGVycyBmcm9tIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMxNTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3MDU0
MDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgTW92
ZXMgaGVscGVyIGZ1bmN0aW9ucyB0byBXZWJBdXRoZW50aWNhdGlvblV0aWxzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5t
bToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6OnByb2R1Y2VI
YXNoU2V0KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1h
a2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDo6YnVpbGRBdXRoRGF0YSk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hp
ZENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6ZmVl
ZFJlcG9ydHMpOgorCiAyMDE4LTEyLTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXhwYW5kIHVzZSBvZiBzb3VyY2VBcHBsaWNhdGlvbkF1
ZGl0RGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IDQzZjE2YjAxYzg3ZGIzNDU4YTI4
ZTNjNDc2OGJlNGRmY2QzOTA3YzQuLjc4MzA3OTkxNjY3ZDA4M2I2YTVmMDZiNTIwYTJkZTkxYjk0
YmJjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTczLDcgKzczLDYgQEAgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gcHJvZHVjZUNsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlIHR5
cGUsIGNvbnN0IEJ1ZmZlclMKIAogc3RhdGljIFZlY3Rvcjx1aW50OF90PiBwcm9kdWNlQ2xpZW50
RGF0YUpzb25IYXNoKGNvbnN0IEFycmF5QnVmZmVyJiBjbGllbnREYXRhSnNvbikKIHsKLSAgICAv
LyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCiAgICAgYXV0byBjcnlw
dG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yNTYpOwogICAgIGNyeXB0by0+YWRkQnl0ZXMoY2xpZW50RGF0YUpzb24uZGF0YSgp
LCBjbGllbnREYXRhSnNvbi5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiBjcnlwdG8tPmNvbXB1
dGVIYXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0NP
U0VDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQ09TRUNvbnN0
YW50cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDZmYzRjMDNlZTRjY2I2OTcz
MjgxODNlNTJlNjg5N2Q1NDEzZTMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQ09TRUNvbnN0YW50
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi1uYW1lc3BhY2UgQ09TRSB7Ci0KLS8vIFNlZSBSRkMgODE1MiAtIENCT1IgT2JqZWN0
IFNpZ25pbmcgYW5kIEVuY3J5cHRpb24gPGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4
MTUyPgotLy8gTGFiZWxzCi1jb25zdCBpbnQ2NF90IGFsZyA9IDM7Ci1jb25zdCBpbnQ2NF90IGNy
diA9IC0xOwotY29uc3QgaW50NjRfdCBrdHkgPSAxOwotY29uc3QgaW50NjRfdCB4ID0gLTI7Ci1j
b25zdCBpbnQ2NF90IHkgPSAtMzsKLQotLy8gVmFsdWVzCi1jb25zdCBpbnQ2NF90IEVDMiA9IDI7
Ci1jb25zdCBpbnQ2NF90IEVTMjU2ID0gLTc7Ci1jb25zdCBpbnQ2NF90IFBfMjU2ID0gMTsKLQot
fSAvLyBuYW1lc3BhY2UgQ09TRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYx
NDUyNjFhYzAyODFhYTNlMGVjY2E3ODMzNjMyYTE2NWY3MjU1MDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3Rh
bnRzLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1l
c3BhY2UgQ09TRSB7CisKKy8vIFNlZSBSRkMgODE1MiAtIENCT1IgT2JqZWN0IFNpZ25pbmcgYW5k
IEVuY3J5cHRpb24gPGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MTUyPgorLy8gTGFi
ZWxzCitjb25zdCBpbnQ2NF90IGFsZyA9IDM7Citjb25zdCBpbnQ2NF90IGNydiA9IC0xOworY29u
c3QgaW50NjRfdCBrdHkgPSAxOworY29uc3QgaW50NjRfdCB4ID0gLTI7Citjb25zdCBpbnQ2NF90
IHkgPSAtMzsKKworLy8gVmFsdWVzCitjb25zdCBpbnQ2NF90IEVDMiA9IDI7Citjb25zdCBpbnQ2
NF90IEVTMjU2ID0gLTc7Citjb25zdCBpbnQ2NF90IFBfMjU2ID0gMTsKKworfSAvLyBuYW1lc3Bh
Y2UgQ09TRQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIExlbmd0aCBvZiB0aGUgU0hBLTI1
NiBoYXNoIG9mIHRoZSBSUCBJRCBhc3Nzb2NpYXRlZCB3aXRoIHRoZSBjcmVkZW50aWFsOgorLy8g
aHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNzZWMtYXV0aGVudGljYXRvci1kYXRhCitj
b25zdCBzaXplX3QgcnBJZEhhc2hMZW5ndGggPSAzMjsKKworLy8gTGVuZ3RoIG9mIHRoZSBmbGFn
czoKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jc2VjLWF1dGhlbnRpY2F0b3It
ZGF0YQorY29uc3Qgc2l6ZV90IGZsYWdzTGVuZ3RoID0gMTsKKworLy8gTGVuZ3RoIG9mIHRoZSBz
aWduYXR1cmUgY291bnRlciwgMzItYml0IHVuc2lnbmVkIGJpZy1lbmRpYW4gaW50ZWdlcjoKKy8v
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jc2VjLWF1dGhlbnRpY2F0b3ItZGF0YQor
Y29uc3Qgc2l6ZV90IHNpZ25Db3VudGVyTGVuZ3RoID0gNDsKKworLy8gTGVuZ3RoIG9mIHRoZSBB
QUdVSUQgb2YgdGhlIGF1dGhlbnRpY2F0b3I6CisvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2Vi
YXV0aG4vI3NlYy1hdHRlc3RlZC1jcmVkZW50aWFsLWRhdGEKK2NvbnN0IHNpemVfdCBhYWd1aWRM
ZW5ndGggPSAxNjsKKworLy8gTGVuZ3RoIG9mIHRoZSBieXRlIGxlbmd0aCBMIG9mIENyZWRlbnRp
YWwgSUQsIDE2LWJpdCB1bnNpZ25lZCBiaWctZW5kaWFuCisvLyBpbnRlZ2VyOiBodHRwczovL3d3
dy53My5vcmcvVFIvd2ViYXV0aG4vI3NlYy1hdHRlc3RlZC1jcmVkZW50aWFsLWRhdGEKK2NvbnN0
IHNpemVfdCBjcmVkZW50aWFsSWRMZW5ndGhMZW5ndGggPSAyOworCisvLyBQZXIgU2VjdGlvbiAy
LjMuNSBvZiBodHRwOi8vd3d3LnNlY2cub3JnL3NlYzEtdjIucGRmCitjb25zdCBzaXplX3QgRVMy
NTZGaWVsZEVsZW1lbnRMZW5ndGggPSAzMjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlv
blV0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGlj
YXRpb25VdGlscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMzMjYxOTFhYzJmZTYxMGIwMGQwNDQ2YmI3YTBk
ZmZjMzhkNjM5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKQEAgLTAsMCArMSwxMjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25V
dGlscy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkNCT1JXcml0ZXIu
aCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIgorI2luY2x1ZGUgPHBh
bC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRCeXRlc1Rv
VmVjdG9yKGNvbnN0IHVpbnQ4X3QgYnl0ZUFycmF5W10sIGNvbnN0IHNpemVfdCBsZW5ndGgpCit7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKGJ5dGVBcnJh
eSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitWZWN0b3I8dWludDhfdD4gcHJv
ZHVjZVJwSWRIYXNoKGNvbnN0IFN0cmluZyYgcnBJZCkKK3sKKyAgICBhdXRvIGNyeXB0byA9IFBB
TDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzI1Nik7CisgICAgYXV0byBycElkVXRmOCA9IHJwSWQudXRmOCgpOworICAgIGNyeXB0by0+YWRk
Qnl0ZXMocnBJZFV0ZjguZGF0YSgpLCBycElkVXRmOC5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGNy
eXB0by0+Y29tcHV0ZUhhc2goKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUVTMjU2UHVi
bGljS2V5QXNDQk9SKFZlY3Rvcjx1aW50OF90PiYmIHgsIFZlY3Rvcjx1aW50OF90PiYmIHkpCit7
CisgICAgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBwdWJsaWNLZXlNYXA7CisgICAgcHVibGlj
S2V5TWFwW2Nib3I6OkNCT1JWYWx1ZShDT1NFOjprdHkpXSA9IGNib3I6OkNCT1JWYWx1ZShDT1NF
OjpFQzIpOworICAgIHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6YWxnKV0gPSBj
Ym9yOjpDQk9SVmFsdWUoQ09TRTo6RVMyNTYpOworICAgIHB1YmxpY0tleU1hcFtjYm9yOjpDQk9S
VmFsdWUoQ09TRTo6Y3J2KV0gPSBjYm9yOjpDQk9SVmFsdWUoQ09TRTo6UF8yNTYpOworICAgIHB1
YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6eCldID0gY2Jvcjo6Q0JPUlZhbHVlKFdU
Rk1vdmUoeCkpOworICAgIHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6eSldID0g
Y2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoeSkpOworCisgICAgYXV0byBjb3NlUHVibGljS2V5ID0g
Y2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUocHVibGljS2V5
TWFwKSkpOworICAgIEFTU0VSVChjb3NlUHVibGljS2V5KTsKKyAgICByZXR1cm4gKmNvc2VQdWJs
aWNLZXk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhYWd1aWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3Jl
ZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvc2VLZXkpCit7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IGF0dGVzdGVkQ3JlZGVudGlhbERhdGE7CisgICAgYXR0ZXN0ZWRDcmVkZW50aWFs
RGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFhZ3VpZExlbmd0aCArIGNyZWRlbnRpYWxJZExl
bmd0aExlbmd0aCArIGNyZWRlbnRpYWxJZC5zaXplKCkgKyBjb3NlS2V5LnNpemUoKSk7CisKKyAg
ICAvLyBhYWd1aWQKKyAgICBBU1NFUlQoYWFndWlkLnNpemUoKSA9PSBhYWd1aWRMZW5ndGgpOwor
ICAgIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEuYXBwZW5kVmVjdG9yKGFhZ3VpZCk7CisKKyAgICAv
LyBjcmVkZW50aWFsSWRMZW5ndGgKKyAgICBBU1NFUlQoY3JlZGVudGlhbElkLnNpemUoKSA8PSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOworICAgIGF0dGVzdGVkQ3JlZGVu
dGlhbERhdGEuYXBwZW5kKGNyZWRlbnRpYWxJZC5zaXplKCkgPj4gOCAmIDB4ZmYpOworICAgIGF0
dGVzdGVkQ3JlZGVudGlhbERhdGEuYXBwZW5kKGNyZWRlbnRpYWxJZC5zaXplKCkgJiAweGZmKTsK
KworICAgIC8vIGNyZWRlbnRpYWxJZAorICAgIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEuYXBwZW5k
VmVjdG9yKGNyZWRlbnRpYWxJZCk7CisKKyAgICAvLyBjcmVkZW50aWFsUHVibGljS2V5CisgICAg
YXR0ZXN0ZWRDcmVkZW50aWFsRGF0YS5hcHBlbmRWZWN0b3IoY29zZUtleSk7CisKKyAgICByZXR1
cm4gYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQXV0
aERhdGEoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCB1aW50OF90IGZsYWdzLCBjb25zdCB1aW50
MzJfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG9wdGlvbmFsQXR0ZXN0ZWRDcmVk
ZW50aWFsRGF0YSkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gYXV0aERhdGE7CisgICAgYXV0aERh
dGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShycElkSGFzaExlbmd0aCArIGZsYWdzTGVuZ3RoICsg
c2lnbkNvdW50ZXJMZW5ndGggKyBvcHRpb25hbEF0dGVzdGVkQ3JlZGVudGlhbERhdGEuc2l6ZSgp
KTsKKworICAgIC8vIFJQIElEIGhhc2gKKyAgICBhdXRoRGF0YS5hcHBlbmRWZWN0b3IocHJvZHVj
ZVJwSWRIYXNoKHJwSWQpKTsKKworICAgIC8vIEZMQUdTCisgICAgYXV0aERhdGEuYXBwZW5kKGZs
YWdzKTsKKworICAgIC8vIENPVU5URVIKKyAgICBhdXRoRGF0YS5hcHBlbmQoY291bnRlciA+PiAy
NCAmIDB4ZmYpOworICAgIGF1dGhEYXRhLmFwcGVuZChjb3VudGVyID4+IDE2ICYgMHhmZik7Cisg
ICAgYXV0aERhdGEuYXBwZW5kKGNvdW50ZXIgPj4gOCAmIDB4ZmYpOworICAgIGF1dGhEYXRhLmFw
cGVuZChjb3VudGVyICYgMHhmZik7CisKKyAgICAvLyBBVFRFU1RFRCBDUkVELiBEQVRBCisgICAg
YXV0aERhdGEuYXBwZW5kVmVjdG9yKG9wdGlvbmFsQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSk7CisK
KyAgICByZXR1cm4gYXV0aERhdGE7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGF0
aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90PiYmIGF1dGhEYXRhLCBTdHJpbmcmJiBmb3JtYXQsIGNi
b3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUmJiBzdGF0ZW1lbnRNYXApCit7CisgICAgY2Jvcjo6Q0JP
UlZhbHVlOjpNYXBWYWx1ZSBhdHRlc3RhdGlvbk9iamVjdE1hcDsKKyAgICBhdHRlc3RhdGlvbk9i
amVjdE1hcFtjYm9yOjpDQk9SVmFsdWUoImF1dGhEYXRhIildID0gY2Jvcjo6Q0JPUlZhbHVlKFdU
Rk1vdmUoYXV0aERhdGEpKTsKKyAgICBhdHRlc3RhdGlvbk9iamVjdE1hcFtjYm9yOjpDQk9SVmFs
dWUoImZtdCIpXSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGZvcm1hdCkpOworICAgIGF0dGVz
dGF0aW9uT2JqZWN0TWFwW2Nib3I6OkNCT1JWYWx1ZSgiYXR0U3RtdCIpXSA9IGNib3I6OkNCT1JW
YWx1ZShXVEZNb3ZlKHN0YXRlbWVudE1hcCkpOworCisgICAgYXV0byBhdHRlc3RhdGlvbk9iamVj
dCA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGF0dGVz
dGF0aW9uT2JqZWN0TWFwKSkpOworICAgIEFTU0VSVChhdHRlc3RhdGlvbk9iamVjdCk7CisgICAg
cmV0dXJuICphdHRlc3RhdGlvbk9iamVjdDsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xN2YwMjJlMTYwNzgyMTdiMTkxODAwMTgwN2QzMWJjZjcwOGEyMTcwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0
aWxzLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkNCT1JWYWx1ZS5oIgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPHVpbnQ4X3Q+IGNvbnZlcnRCeXRlc1RvVmVjdG9yKGNvbnN0IHVpbnQ4X3QgYnl0ZUFycmF5
W10sIGNvbnN0IHNpemVfdCBsZW5ndGgpOworCisvLyBQcm9kdWNlIGEgU0hBLTI1NiBoYXNoIG9m
IHRoZSBnaXZlbiBSUCBJRC4KK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBwcm9kdWNl
UnBJZEhhc2goY29uc3QgU3RyaW5nJiBycElkKTsKKworV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVp
bnQ4X3Q+IGVuY29kZUVTMjU2UHVibGljS2V5QXNDQk9SKFZlY3Rvcjx1aW50OF90PiYmIHgsIFZl
Y3Rvcjx1aW50OF90PiYmIHkpOworCisvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4v
I2F0dGVzdGVkLWNyZWRlbnRpYWwtZGF0YQorV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+
IGJ1aWxkQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YShjb25zdCBWZWN0b3I8dWludDhfdD4mIGFhZ3Vp
ZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgY29zZUtleSk7CisKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jc2Vj
LWF1dGhlbnRpY2F0b3ItZGF0YQorV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxk
QXV0aERhdGEoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCB1aW50OF90IGZsYWdzLCBjb25zdCB1
aW50MzJfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG9wdGlvbmFsQXR0ZXN0ZWRD
cmVkZW50aWFsRGF0YSk7CisKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jYXR0
ZXN0YXRpb24tb2JqZWN0CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gYnVpbGRBdHRl
c3RhdGlvbk9iamVjdChWZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwgU3RyaW5nJiYgZm9ybWF0
LCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlJiYgc3RhdGVtZW50TWFwKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZl
cnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVz
cG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IGE0MDRhMTIwY2U0NjEyMTM5NGM3MjQ3ZTMwZTkxMGY0
ZWUzZDNmZGEuLmQwMzY3MTc4NjdkZDFmOGU5OTU2Njc2MjNhYjVmZjc0NTRmNDVhMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25z
ZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zLmgiCiAjaW5jbHVkZSAiQ0JPUlJlYWRlci5o
IgogI2luY2x1ZGUgIkNCT1JXcml0ZXIuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlvbkNv
bnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKQEAgLTY1LDE3ICs2NiwxNyBAQCBDdGFwRGV2aWNlUmVzcG9uc2VDb2RlIGdldFJlc3Bv
bnNlQ29kZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKIAogc3RhdGljIFZlY3Rvcjx1
aW50OF90PiBnZXRDcmVkZW50aWFsSWQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNh
dG9yRGF0YSkKIHsKLSAgICBjb25zdCBzaXplX3QgY3JlZGVudGlhbElkTGVuZ3RoT2Zmc2V0ID0g
a1JwSWRIYXNoTGVuZ3RoICsga0ZsYWdzTGVuZ3RoICsga1NpZ25Db3VudGVyTGVuZ3RoICsga0Fh
Z3VpZExlbmd0aDsKKyAgICBjb25zdCBzaXplX3QgY3JlZGVudGlhbElkTGVuZ3RoT2Zmc2V0ID0g
cnBJZEhhc2hMZW5ndGggKyBmbGFnc0xlbmd0aCArIHNpZ25Db3VudGVyTGVuZ3RoICsgYWFndWlk
TGVuZ3RoOwogCi0gICAgaWYgKGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSA8IGNyZWRlbnRpYWxJ
ZExlbmd0aE9mZnNldCArIGtDcmVkZW50aWFsSWRMZW5ndGhMZW5ndGgpCisgICAgaWYgKGF1dGhl
bnRpY2F0b3JEYXRhLnNpemUoKSA8IGNyZWRlbnRpYWxJZExlbmd0aE9mZnNldCArIGNyZWRlbnRp
YWxJZExlbmd0aExlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBzaXplX3QgY3JlZGVu
dGlhbElkTGVuZ3RoID0gKHN0YXRpY19jYXN0PHNpemVfdD4oYXV0aGVudGljYXRvckRhdGFbY3Jl
ZGVudGlhbElkTGVuZ3RoT2Zmc2V0XSkgPDwgOCkgfCBzdGF0aWNfY2FzdDxzaXplX3Q+KGF1dGhl
bnRpY2F0b3JEYXRhW2NyZWRlbnRpYWxJZExlbmd0aE9mZnNldCArIDFdKTsKIAotICAgIGlmIChh
dXRoZW50aWNhdG9yRGF0YS5zaXplKCkgPCBjcmVkZW50aWFsSWRMZW5ndGhPZmZzZXQgKyBrQ3Jl
ZGVudGlhbElkTGVuZ3RoTGVuZ3RoICsgY3JlZGVudGlhbElkTGVuZ3RoKQorICAgIGlmIChhdXRo
ZW50aWNhdG9yRGF0YS5zaXplKCkgPCBjcmVkZW50aWFsSWRMZW5ndGhPZmZzZXQgKyBjcmVkZW50
aWFsSWRMZW5ndGhMZW5ndGggKyBjcmVkZW50aWFsSWRMZW5ndGgpCiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNyZWRlbnRpYWxJZDsKICAgICBjcmVkZW50aWFsSWQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjcmVkZW50aWFsSWRMZW5ndGgpOwotICAgIGF1dG8gYmVn
aW5JdCA9IGF1dGhlbnRpY2F0b3JEYXRhLmJlZ2luKCkgKyBjcmVkZW50aWFsSWRMZW5ndGhPZmZz
ZXQgKyBrQ3JlZGVudGlhbElkTGVuZ3RoTGVuZ3RoOworICAgIGF1dG8gYmVnaW5JdCA9IGF1dGhl
bnRpY2F0b3JEYXRhLmJlZ2luKCkgKyBjcmVkZW50aWFsSWRMZW5ndGhPZmZzZXQgKyBjcmVkZW50
aWFsSWRMZW5ndGhMZW5ndGg7CiAgICAgY3JlZGVudGlhbElkLmFwcGVuZFJhbmdlKGJlZ2luSXQs
IGJlZ2luSXQgKyBjcmVkZW50aWFsSWRMZW5ndGgpOwogICAgIHJldHVybiBjcmVkZW50aWFsSWQ7
CiB9CkBAIC0yMDUsNyArMjA2LDcgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRvckdldEluZm9SZXNw
b25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDMp
KTsKLSAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNCeXRl
U3RyaW5nKCkgfHwgaXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCkuc2l6ZSgpICE9IGtBYWd1aWRM
ZW5ndGgpCisgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlz
Qnl0ZVN0cmluZygpIHx8IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpLnNpemUoKSAhPSBhYWd1
aWRMZW5ndGgpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBBdXRoZW50aWNh
dG9yR2V0SW5mb1Jlc3BvbnNlIHJlc3BvbnNlKFdURk1vdmUocHJvdG9jb2xWZXJzaW9ucyksIFZl
Y3Rvcjx1aW50OF90PihpdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmgKaW5kZXgg
NjliOTE5OTIwNmZhMDY5MWQyNDgwNmNmN2QyNjUzNTY1NjMxNWYyNC4uNTMwYTE3NDg2N2VhNTNk
YjdjMDAwZTUzMTQ0YjI5Y2ZmNGI2MWMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oCkBAIC00MSwyNSArNDEsMTQgQEAg
ZW51bSBjbGFzcyBQcm90b2NvbFZlcnNpb24gewogICAgIGtVbmtub3duLAogfTsKIAotLy8gTGVu
Z3RoIG9mIHRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIFJQIElEIGFzc3NvY2lhdGVkIHdpdGggdGhl
IGNyZWRlbnRpYWw6Ci0vLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI3NlYy1hdXRo
ZW50aWNhdG9yLWRhdGEKLWNvbnN0ZXhwciBzaXplX3Qga1JwSWRIYXNoTGVuZ3RoID0gMzI7Ci0K
LS8vIExlbmd0aCBvZiB0aGUgZmxhZ3M6Ci0vLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0
aG4vI3NlYy1hdXRoZW50aWNhdG9yLWRhdGEKLWNvbnN0ZXhwciBzaXplX3Qga0ZsYWdzTGVuZ3Ro
ID0gMTsKLQotLy8gTGVuZ3RoIG9mIHRoZSBzaWduYXR1cmUgY291bnRlciwgMzItYml0IHVuc2ln
bmVkIGJpZy1lbmRpYW4gaW50ZWdlcjoKLS8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRo
bi8jc2VjLWF1dGhlbnRpY2F0b3ItZGF0YQotY29uc3RleHByIHNpemVfdCBrU2lnbkNvdW50ZXJM
ZW5ndGggPSA0OwotCi0vLyBMZW5ndGggb2YgdGhlIEFBR1VJRCBvZiB0aGUgYXV0aGVudGljYXRv
cjoKLS8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jc2VjLWF0dGVzdGVkLWNyZWRl
bnRpYWwtZGF0YQotY29uc3RleHByIHNpemVfdCBrQWFndWlkTGVuZ3RoID0gMTY7Ci0KLS8vIExl
bmd0aCBvZiB0aGUgYnl0ZSBsZW5ndGggTCBvZiBDcmVkZW50aWFsIElELCAxNi1iaXQgdW5zaWdu
ZWQgYmlnLWVuZGlhbgotLy8gaW50ZWdlcjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhu
LyNzZWMtYXR0ZXN0ZWQtY3JlZGVudGlhbC1kYXRhCi1jb25zdGV4cHIgc2l6ZV90IGtDcmVkZW50
aWFsSWRMZW5ndGhMZW5ndGggPSAyOworLy8gTGVuZ3RoIG9mIHRoZSBVMkYgY2hhbGxlbmdlL2Fw
cGxpY2F0aW9uIHBhcmFtZXRlcjoKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9m
aWRvLXUyZi12MS4yLXBzLTIwMTcwNDExL2ZpZG8tdTJmLXJhdy1tZXNzYWdlLWZvcm1hdHMtdjEu
Mi1wcy0yMDE3MDQxMS5odG1sI3JlZ2lzdHJhdGlvbi1yZXF1ZXN0LW1lc3NhZ2UtLS11MmZfcmVn
aXN0ZXIKK2NvbnN0ZXhwciBzaXplX3Qga1UyZkNoYWxsZW5nZVBhcmFtTGVuZ3RoID0gMzI7Citj
b25zdGV4cHIgc2l6ZV90IGtVMmZBcHBsaWNhdGlvblBhcmFtTGVuZ3RoID0gMzI7CisvLyBodHRw
czovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby11MmYtdjEuMi1wcy0yMDE3MDQxMS9maWRv
LXUyZi1yYXctbWVzc2FnZS1mb3JtYXRzLXYxLjItcHMtMjAxNzA0MTEuaHRtbCNyZWdpc3RyYXRp
b24tcmVzcG9uc2UtbWVzc2FnZS1zdWNjZXNzCitjb25zdGV4cHIgc2l6ZV90IGtSZXNlcnZlZExl
bmd0aCA9IDE7Citjb25zdGV4cHIgc2l6ZV90IGtVMmZLZXlIYW5kbGVMZW5ndGhPZmZzZXQgPSA2
NjsKK2NvbnN0ZXhwciBzaXplX3Qga1UyZktleUhhbmRsZU9mZnNldCA9IDY3OwogCiAvLyBDVEFQ
IHByb3RvY29sIGRldmljZSByZXNwb25zZSBjb2RlLCBhcyBzcGVjaWZpZWQgaW4KIC8vIGh0dHBz
Oi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGll
bnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjZXJyb3It
cmVzcG9uc2VzCkBAIC0xMzQsNiArMTIzLDE5IEBAIGVudW0gY2xhc3MgRmlkb0hpZERldmljZUNv
bW1hbmQgOiB1aW50OF90IHsKIAogYm9vbCBpc0ZpZG9IaWREZXZpY2VDb21tYW5kKEZpZG9IaWRE
ZXZpY2VDb21tYW5kKTsKIAorLy8gUGFyYW1ldGVycyBmb3IgZmFrZSBVMkYgcmVnaXN0cmF0aW9u
IHVzZWQgdG8gY2hlY2sgZm9yIHVzZXIgcHJlc2VuY2UuCitjb25zdCB1aW50OF90IGtCb2d1c0Fw
cFBhcmFtW10gPSB7CisgICAgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0
MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwKKyAgICAweDQxLCAweDQxLCAweDQxLCAweDQxLCAw
eDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQxLAorICAgIDB4NDEsIDB4NDEs
IDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEKK307CisKK2Nv
bnN0IHVpbnQ4X3Qga0JvZ3VzQ2hhbGxlbmdlW10gPSB7CisgICAgMHg0MiwgMHg0MiwgMHg0Miwg
MHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwKKyAgICAweDQy
LCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAw
eDQyLAorICAgIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIs
IDB4NDIsIDB4NDIKK307CisKIC8vIFN0cmluZyBrZXkgdmFsdWVzIGZvciBDVEFQIHJlcXVlc3Qg
b3B0aW9uYWwgcGFyYW1ldGVycyBhbmQKIC8vIEF1dGhlbnRpY2F0b3JHZXRJbmZvIHJlc3BvbnNl
LgogY29uc3QgY2hhciBrUmVzaWRlbnRLZXlNYXBLZXlbXSA9ICJyayI7CkBAIC0xNzAsNiArMTcy
LDE1IEBAIGNvbnN0IHNpemVfdCBrSGlkTWF4TWVzc2FnZVNpemUgPSA3NjA5OwogLy8gQ1RBUC9V
MkYgZGV2aWNlcyBvbmx5IHByb3ZpZGUgYSBzaW5nbGUgcmVwb3J0IHNvIHNwZWNpZnkgYSByZXBv
cnQgSUQgb2YgMCBoZXJlLgogY29uc3QgdWludDhfdCBrSGlkUmVwb3J0SWQgPSAweDAwOwogCisv
LyBVMkYgQVBEVSBlbmNvZGluZyBjb25zdGFudHMsIGFzIHNwZWNpZmllZCBpbgorLy8gaHR0cHM6
Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdTJmLXYxLjItcHMtMjAxNzA0MTEvZmlkby11
MmYtcmF3LW1lc3NhZ2UtZm9ybWF0cy12MS4yLXBzLTIwMTcwNDExLmh0bWwjYXV0aGVudGljYXRp
b24tbWVzc2FnZXMKKworLy8gUDEgaW5zdHJ1Y3Rpb25zLgorY29uc3RleHByIHVpbnQ4X3Qga1Ax
RW5mb3JjZVVzZXJQcmVzZW5jZUFuZFNpZ24gPSAweDAzOworY29uc3RleHByIHVpbnQ4X3Qga1Ax
Q2hlY2tPbmx5ID0gMHgwNzsKKworY29uc3RleHByIHNpemVfdCBrTWF4S2V5SGFuZGxlTGVuZ3Ro
ID0gMjU1OworCiAvLyBBdXRoZW50aWNhdG9yIEFQSSBjb21tYW5kcyBzdXBwb3J0ZWQgYnkgQ1RB
UCBkZXZpY2VzLCBhcyBzcGVjaWZpZWQgaW4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9z
cGVjcy9maWRvLXYyLjAtcmQtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1w
cm90b2NvbC12Mi4wLXJkLTIwMTcwOTI3Lmh0bWwjYXV0aGVudGljYXRvci1hcGkKIGVudW0gY2xh
c3MgQ3RhcFJlcXVlc3RDb21tYW5kIDogdWludDhfdCB7CkBAIC0xODEsNiArMTkyLDE2IEBAIGVu
dW0gY2xhc3MgQ3RhcFJlcXVlc3RDb21tYW5kIDogdWludDhfdCB7CiAgICAga0F1dGhlbnRpY2F0
b3JSZXNldCA9IDB4MDcsCiB9OwogCisvLyBBUERVIGluc3RydWN0aW9uIGNvZGUgZm9yIFUyRiBy
ZXF1ZXN0IGVuY29kaW5nLgorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8t
dTJmLXYxLjItcHMtMjAxNzA0MTEvZmlkby11MmYtcmF3LW1lc3NhZ2UtZm9ybWF0cy12MS4yLXBz
LTIwMTcwNDExLmh0bWwjY29tbWFuZC1hbmQtcGFyYW1ldGVyLXZhbHVlcworZW51bSBjbGFzcyBV
MmZBcGR1SW5zdHJ1Y3Rpb24gOiB1aW50OF90IHsKKyAgICBrUmVnaXN0ZXIgPSAweDAxLAorICAg
IGtTaWduID0gMHgwMiwKKyAgICBrVmVyc2lvbiA9IDB4MDMsCisgICAga1ZlbmRvckZpcnN0ID0g
MHg0MCwKKyAgICBrVmVuZGVyTGFzdCA9IDB4QkYsCit9OworCiAvLyBTdHJpbmcga2V5IHZhbHVl
cyBmb3IgYXR0ZXN0YXRpb24gb2JqZWN0IGFzIGEgcmVzcG9uc2UgdG8gTWFrZUNyZWRlbnRpYWwK
IC8vIHJlcXVlc3QuCiBjb25zdCBjaGFyIGtGb3JtYXRLZXlbXSA9ICJmbXQiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFu
ZENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjA2YWIwZDEzNDg4YThhMDhlNWViMzA0YWRi
NjMwZDM0MzVlMGM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMjkgQEAK
Ky8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8v
IGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oIgorCisjaWYgRU5B
QkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkFwZHVDb21tYW5kLmgiCisjaW5jbHVkZSAiRmlk
b0NvbnN0YW50cy5oIgorI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMuaCIKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCIKKyNp
bmNsdWRlICJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJBdXRo
ZW50aWNhdGlvbkNvbnN0YW50cy5oIgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uVXRpbHMu
aCIKKworbmFtZXNwYWNlIGZpZG8gewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSB7CisKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29uc3RydWN0VTJmUmVnaXN0ZXJDb21t
YW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXBwbGljYXRpb25QYXJhbWV0ZXIsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgY2hhbGxlbmdlUGFyYW1ldGVyKQoreworICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOworICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShrVTJmQ2hhbGxlbmdlUGFy
YW1MZW5ndGggKyBrVTJmQXBwbGljYXRpb25QYXJhbUxlbmd0aCk7CisgICAgZGF0YS5hcHBlbmRW
ZWN0b3IoY2hhbGxlbmdlUGFyYW1ldGVyKTsKKyAgICBkYXRhLmFwcGVuZFZlY3RvcihhcHBsaWNh
dGlvblBhcmFtZXRlcik7CisKKyAgICBhcGR1OjpBcGR1Q29tbWFuZCBjb21tYW5kOworICAgIGNv
bW1hbmQuc2V0SW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFUyZkFwZHVJbnN0cnVjdGlvbjo6a1Jl
Z2lzdGVyKSk7CisgICAgY29tbWFuZC5zZXREYXRhKFdURk1vdmUoZGF0YSkpOworICAgIGNvbW1h
bmQuc2V0UmVzcG9uc2VMZW5ndGgoYXBkdTo6QXBkdUNvbW1hbmQ6OmtBcGR1TWF4UmVzcG9uc2VM
ZW5ndGgpOworICAgIHJldHVybiBjb21tYW5kLmdldEVuY29kZWRDb21tYW5kKCk7Cit9CisKK3N0
YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnN0cnVjdFUyZlNpZ25Db21tYW5kKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYXBwbGljYXRpb25QYXJhbWV0ZXIsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgY2hhbGxlbmdlUGFyYW1ldGVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhh
bmRsZSwgYm9vbCBjaGVja09ubHkpCit7CisgICAgaWYgKGtleUhhbmRsZS5zaXplKCkgPiBrTWF4
S2V5SGFuZGxlTGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGtVMmZD
aGFsbGVuZ2VQYXJhbUxlbmd0aCArIGtVMmZBcHBsaWNhdGlvblBhcmFtTGVuZ3RoICsgMSArIGtl
eUhhbmRsZS5zaXplKCkpOworICAgIGRhdGEuYXBwZW5kVmVjdG9yKGNoYWxsZW5nZVBhcmFtZXRl
cik7CisgICAgZGF0YS5hcHBlbmRWZWN0b3IoYXBwbGljYXRpb25QYXJhbWV0ZXIpOworICAgIGRh
dGEuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGtleUhhbmRsZS5zaXplKCkpKTsKKyAgICBk
YXRhLmFwcGVuZFZlY3RvcihrZXlIYW5kbGUpOworCisgICAgYXBkdTo6QXBkdUNvbW1hbmQgY29t
bWFuZDsKKyAgICBjb21tYW5kLnNldElucyhzdGF0aWNfY2FzdDx1aW50OF90PihVMmZBcGR1SW5z
dHJ1Y3Rpb246OmtTaWduKSk7CisgICAgY29tbWFuZC5zZXRQMShjaGVja09ubHkgPyBrUDFDaGVj
a09ubHkgOiBrUDFFbmZvcmNlVXNlclByZXNlbmNlQW5kU2lnbik7CisgICAgY29tbWFuZC5zZXRE
YXRhKFdURk1vdmUoZGF0YSkpOworICAgIGNvbW1hbmQuc2V0UmVzcG9uc2VMZW5ndGgoYXBkdTo6
QXBkdUNvbW1hbmQ6OmtBcGR1TWF4UmVzcG9uc2VMZW5ndGgpOworICAgIHJldHVybiBjb21tYW5k
LmdldEVuY29kZWRDb21tYW5kKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKK2Jvb2wgaXNDb252
ZXJ0aWJsZVRvVTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMmIHJlcXVlc3QpCit7CisgICAgaWYgKHJlcXVlc3QuYXV0aGVudGljYXRvclNl
bGVjdGlvbiAmJiAocmVxdWVzdC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uLT51c2VyVmVyaWZpY2F0
aW9uID09IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UmVxdWlyZWQgfHwgcmVxdWVzdC5h
dXRoZW50aWNhdG9yU2VsZWN0aW9uLT5yZXF1aXJlUmVzaWRlbnRLZXkpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKHJlcXVlc3QucHViS2V5Q3JlZFBhcmFtcy5maW5kTWF0Y2hpbmco
W10oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5hbGcgPT0gQ09TRTo6RVMyNTY7IH0pID09IG5v
dEZvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgaXNDb252ZXJ0aWJsZVRvVTJmU2lnbkNvbW1hbmQoY29uc3QgUHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zJiByZXF1ZXN0KQoreworICAgIHJldHVybiAocmVxdWVzdC51c2VyVmVy
aWZpY2F0aW9uICE9IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UmVxdWlyZWQpICYmICFy
ZXF1ZXN0LmFsbG93Q3JlZGVudGlhbHMuaXNFbXB0eSgpOworfQorCitPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGNvbnZlcnRUb1UyZlJlZ2lzdGVyQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zJiByZXF1ZXN0KQoreworICAgIGlmICghaXNDb252ZXJ0aWJsZVRvVTJmUmVnaXN0ZXJDb21t
YW5kKHJlcXVlc3QpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJu
IGNvbnN0cnVjdFUyZlJlZ2lzdGVyQ29tbWFuZChwcm9kdWNlUnBJZEhhc2gocmVxdWVzdC5ycC5p
ZCksIGNsaWVudERhdGFIYXNoKTsKK30KKworT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252
ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVu
dERhdGFIYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiByZXF1
ZXN0LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciYga2V5SGFuZGxlKQorewor
ICAgIGlmIChrZXlIYW5kbGUudHlwZSAhPSBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGlj
S2V5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGNvbnN0cnVj
dFUyZlNpZ25Db21tYW5kKHByb2R1Y2VScElkSGFzaChyZXF1ZXN0LnJwLmlkKSwgY2xpZW50RGF0
YUhhc2gsIGtleUhhbmRsZS5pZFZlY3RvciwgdHJ1ZSAvKiBjaGVja09ubHkgKi8pOworfQorCitP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1UyZlNpZ25Db21tYW5kKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucyYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUs
IGJvb2wgY2hlY2tPbmx5KQoreworICAgIGlmICghaXNDb252ZXJ0aWJsZVRvVTJmU2lnbkNvbW1h
bmQocmVxdWVzdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
Y29uc3RydWN0VTJmU2lnbkNvbW1hbmQocHJvZHVjZVJwSWRIYXNoKHJlcXVlc3QucnBJZCksIGNs
aWVudERhdGFIYXNoLCBrZXlIYW5kbGUsIGNoZWNrT25seSk7Cit9CisKK1ZlY3Rvcjx1aW50OF90
PiBjb25zdHJ1Y3RCb2d1c1UyZlJlZ2lzdHJhdGlvbkNvbW1hbmQoKQoreworICAgIHJldHVybiBj
b25zdHJ1Y3RVMmZSZWdpc3RlckNvbW1hbmQoY29udmVydEJ5dGVzVG9WZWN0b3Ioa0JvZ3VzQXBw
UGFyYW0sIHNpemVvZihrQm9ndXNBcHBQYXJhbSkpLCBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihrQm9n
dXNDaGFsbGVuZ2UsIHNpemVvZihrQm9ndXNDaGFsbGVuZ2UpKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIGZpZG8KKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVj
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDVhYjM2NTg0MGVjMzlhOTJlYzBmMjFmZjIyMGQ0NjY4NDFkYjJj
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9VMmZDb21tYW5kQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDcyIEBACisvLyBDb3B5cmlnaHQg
MjAxOCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zOworc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlw
dG9yOworc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKK30KKworbmFt
ZXNwYWNlIGZpZG8geworCisvLyBDaGVja3Mgd2hldGhlciB0aGUgcmVxdWVzdCBjYW4gYmUgdHJh
bnNsYXRlZCB0byB2YWxpZCBVMkYgcmVxdWVzdAorLy8gcGFyYW1ldGVyLiBOYW1lbHksIFUyRiBy
ZXF1ZXN0IGRvZXMgbm90IHN1cHBvcnQgcmVzaWRlbnQga2V5IGFuZAorLy8gdXNlciB2ZXJpZmlj
YXRpb24sIGFuZCBFUzI1NiBhbGdvcml0aG0gbXVzdCBiZSB1c2VkIGZvciBwdWJsaWMga2V5Cisv
LyBjcmVkZW50aWFsLgorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIu
MC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAt
aWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsLWludGVyb3Bl
cmFiaWxpdHkKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb252ZXJ0aWJsZVRvVTJmUmVnaXN0ZXJD
b21tYW5kKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
KTsKKworLy8gQ2hlY2tzIHdoZXRoZXIgdXNlciB2ZXJpZmljYXRpb24gaXMgbm90IHJlcXVpcmVk
IGFuZCB0aGF0IGFsbG93IGxpc3QgaXMKKy8vIG5vdCBlbXB0eS4KKy8vIGh0dHBzOi8vZmlkb2Fs
bGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0
aGVudGljYXRvci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWF1dGhlbnRpY2F0
b3JHZXRBc3NlcnRpb24taW50ZXJvcGVyYWJpbGl0eQorV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Nv
bnZlcnRpYmxlVG9VMmZTaWduQ29tbWFuZChjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMmKTsKKworLy8gRXh0cmFjdHMgQVBEVSBlbmNvZGVkIFUyRiByZWdp
c3RlciBjb21tYW5kIGZyb20gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy4KK1dF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0
ZXJDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmKTsKKworLy8gRXh0cmFj
dHMgQVBEVSBlbmNvZGVkIFUyRiBjaGVjayBvbmx5IHNpZ24gY29tbWFuZCBmcm9tCisvLyBQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLiBJbnZva2VkIHdoZW4gVTJGIHJlZ2lzdGVy
IG9wZXJhdGlvbiBpbmNsdWRlcyBrZXkKKy8vIGhhbmRsZXMgaW4gZXhjbHVkZSBsaXN0LgorV0VC
Q09SRV9FWFBPUlQgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZDaGVja09u
bHlTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25z
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgY29uc3QgV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3ImKTsKKworLy8gRXh0cmFjdHMgQVBE
VSBlbmNvZGVkIFUyRiBzaWduIGNvbW1hbmQgZnJvbSBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMuCitXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZl
cnRUb1UyZlNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gs
IGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBib29sIGNoZWNrT25seSA9IGZhbHNlKTsKKwor
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvbnN0cnVjdEJvZ3VzVTJmUmVnaXN0cmF0
aW9uQ29tbWFuZCgpOworCit9IC8vIG5hbWVzcGFjZSBmaWRvCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1YTE3MTE3
OTkwMjEzNTZiYTc4NWNlZjE2YzI4YTkxYTMwMWJlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAK
QEAgLTAsMCArMSwxOTQgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlUyZlJlc3BvbnNlQ29udmVy
dGVyLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiQ29tbW9uQ3J5cHRv
REVSVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRmlkb0NvbnN0YW50cy5oIgorI2luY2x1ZGUgIldl
YkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25V
dGlscy5oIgorCituYW1lc3BhY2UgZmlkbyB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIHsKKworLy8gSW4gYSBVMkYgcmVnaXN0cmF0aW9uIHJlc3BvbnNlLCB0aGUga2V5
IGlzIGluIFg5LjYyIGZvcm1hdDoKKy8vIC0gYSBjb25zdGFudCAweDA0IHByZWZpeCB0byBpbmRp
Y2F0ZSBhbiB1bmNvbXByZXNzZWQga2V5CisvLyAtIHRoZSAzMi1ieXRlIHggY29vcmRpbmF0ZQor
Ly8gLSB0aGUgMzItYnl0ZSB5IGNvb3JkaW5hdGUuCitjb25zdCB1aW50OF90IHVuY29tcHJlc3Nl
ZEtleSA9IDB4MDQ7CisvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2ZsYWdzCitj
b25zdCB1aW50OF90IG1ha2VDcmVkZW50aWFsRmxhZ3MgPSAwYjAxMDAwMDAxOyAvLyBVUCBhbmQg
QVQgYXJlIHNldC4KKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXUyZi12
MS4yLXBzLTIwMTcwNDExL2ZpZG8tdTJmLXJhdy1tZXNzYWdlLWZvcm1hdHMtdjEuMi1wcy0yMDE3
MDQxMS5odG1sI3JlZ2lzdHJhdGlvbi1yZXNwb25zZS1tZXNzYWdlLXN1Y2Nlc3MKK2NvbnN0IHVp
bnQ4X3QgbWluU2lnbmF0dXJlTGVuZ3RoID0gNzE7Citjb25zdCB1aW50OF90IG1heFNpZ25hdHVy
ZUxlbmd0aCA9IDczOworLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdTJm
LXYxLjItcHMtMjAxNzA0MTEvZmlkby11MmYtcmF3LW1lc3NhZ2UtZm9ybWF0cy12MS4yLXBzLTIw
MTcwNDExLmh0bWwjYXV0aGVudGljYXRpb24tcmVzcG9uc2UtbWVzc2FnZS1zdWNjZXNzCitjb25z
dCBzaXplX3QgZmxhZ0luZGV4ID0gMDsKK2NvbnN0IHNpemVfdCBjb3VudGVySW5kZXggPSAxOwor
Y29uc3Qgc2l6ZV90IHNpZ25hdHVyZUluZGV4ID0gNTsKKworc3RhdGljIFZlY3Rvcjx1aW50OF90
PiBleHRyYWN0RUNQdWJsaWNLZXlGcm9tVTJmUmVnaXN0cmF0aW9uUmVzcG9uc2UoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKQoreworICAgIHNpemVfdCBwb3MgPSBrUmVzZXJ2ZWRMZW5n
dGg7CisgICAgaWYgKHUyZkRhdGEuc2l6ZSgpIDw9IHBvcyB8fCB1MmZEYXRhW3Bvc10gIT0gdW5j
b21wcmVzc2VkS2V5KQorICAgICAgICByZXR1cm4geyB9OworICAgIHBvcysrOworCisgICAgaWYg
KHUyZkRhdGEuc2l6ZSgpIDwgcG9zICsgMiAqIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHg7CisgICAgeC5hcHBlbmQo
dTJmRGF0YS5kYXRhKCkgKyBwb3MsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKTsKKyAgICBwb3Mg
Kz0gRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGg7CisKKyAgICBWZWN0b3I8dWludDhfdD4geTsKKyAg
ICB5LmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgp
OworCisgICAgcmV0dXJuIGVuY29kZUVTMjU2UHVibGljS2V5QXNDQk9SKFdURk1vdmUoeCksIFdU
Rk1vdmUoeSkpOworfQorCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RDcmVkZW50aWFs
SWRGcm9tVTJmUmVnaXN0cmF0aW9uUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZE
YXRhKQoreworICAgIHNpemVfdCBwb3MgPSBrVTJmS2V5SGFuZGxlTGVuZ3RoT2Zmc2V0OworICAg
IGlmICh1MmZEYXRhLnNpemUoKSA8PSBwb3MpCisgICAgICAgIHJldHVybiB7IH07CisgICAgc2l6
ZV90IGNyZWRlbnRpYWxJZExlbmd0aCA9IHUyZkRhdGFbcG9zXTsKKyAgICBwb3MrKzsKKworICAg
IGlmICh1MmZEYXRhLnNpemUoKSA8IHBvcyArIGNyZWRlbnRpYWxJZExlbmd0aCkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkOworICAgIGNyZWRl
bnRpYWxJZC5hcHBlbmQodTJmRGF0YS5kYXRhKCkgKyBwb3MsIGNyZWRlbnRpYWxJZExlbmd0aCk7
CisgICAgcmV0dXJuIGNyZWRlbnRpYWxJZDsKK30KKworc3RhdGljIFZlY3Rvcjx1aW50OF90PiBj
cmVhdGVBdHRlc3RlZENyZWRlbnRpYWxEYXRhRnJvbVUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHB1YmxpY0tl
eSkKK3sKKyAgICBhdXRvIGNyZWRlbnRpYWxJZCA9IGV4dHJhY3RDcmVkZW50aWFsSWRGcm9tVTJm
UmVnaXN0cmF0aW9uUmVzcG9uc2UodTJmRGF0YSk7CisgICAgaWYgKGNyZWRlbnRpYWxJZC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gYnVpbGRBdHRlc3RlZENy
ZWRlbnRpYWxEYXRhKFZlY3Rvcjx1aW50OF90PihhYWd1aWRMZW5ndGgsIDApLCBjcmVkZW50aWFs
SWQsIHB1YmxpY0tleSk7Cit9CisKK3N0YXRpYyBzaXplX3QgcGFyc2VYNTA5TGVuZ3RoKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgc2l6ZV90IG9mZnNldCkKK3sKKyAgICBpZiAodTJm
RGF0YS5zaXplKCkgPD0gb2Zmc2V0IHx8IHUyZkRhdGFbb2Zmc2V0XSAhPSBTZXF1ZW5jZU1hcmsp
CisgICAgICAgIHJldHVybiAwOworICAgIG9mZnNldCsrOworCisgICAgaWYgKHUyZkRhdGEuc2l6
ZSgpIDw9IG9mZnNldCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY29uc3QgYXV0byBzZXF1ZW5j
ZUxlbmd0aExlbmd0aCA9IGJ5dGVzVXNlZFRvRW5jb2RlZExlbmd0aCh1MmZEYXRhW29mZnNldF0p
OworCisgICAgaWYgKHNlcXVlbmNlTGVuZ3RoTGVuZ3RoID4gc2l6ZW9mKHNpemVfdCkgfHwgKHUy
ZkRhdGEuc2l6ZSgpIDwgb2Zmc2V0ICsgc2VxdWVuY2VMZW5ndGhMZW5ndGgpKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICBzaXplX3Qgc2VxdWVuY2VMZW5ndGggPSBzZXF1ZW5jZUxlbmd0aExlbmd0
aCA9PSAxID8gdTJmRGF0YVtvZmZzZXRdIDogMDsKKyAgICBvZmZzZXQrKzsKKyAgICBmb3IgKGF1
dG8gaSA9IHNlcXVlbmNlTGVuZ3RoTGVuZ3RoIC0gMTsgaTsgaS0tLCBvZmZzZXQrKykKKyAgICAg
ICAgc2VxdWVuY2VMZW5ndGggKz0gdTJmRGF0YVtvZmZzZXRdIDw8IChpIC0gMSkgKiA4OworCisg
ICAgcmV0dXJuIHNlcXVlbmNlTGVuZ3RoICsgc2VxdWVuY2VMZW5ndGhMZW5ndGggKyBzaXplb2Yo
U2VxdWVuY2VNYXJrKTsKK30KKworc3RhdGljIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgY3Jl
YXRlRmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50RnJvbVUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBzaXplX3Qgb2Zmc2V0KQoreworICAgIGF1dG8geDUw
OUxlbmd0aCA9IHBhcnNlWDUwOUxlbmd0aCh1MmZEYXRhLCBvZmZzZXQpOworICAgIGlmICgheDUw
OUxlbmd0aCB8fCB1MmZEYXRhLnNpemUoKSA8IG9mZnNldCArIHg1MDlMZW5ndGgpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8dWludDhfdD4geDUwOTsKKyAgICB4NTA5LmFwcGVu
ZCh1MmZEYXRhLmRhdGEoKSArIG9mZnNldCwgeDUwOUxlbmd0aCk7CisgICAgb2Zmc2V0ICs9IHg1
MDlMZW5ndGg7CisKKyAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlOworICAgIHNpZ25hdHVy
ZS5hcHBlbmQodTJmRGF0YS5kYXRhKCkgKyBvZmZzZXQsIHUyZkRhdGEuc2l6ZSgpIC0gb2Zmc2V0
KTsKKyAgICBpZiAoc2lnbmF0dXJlLnNpemUoKSA8IG1pblNpZ25hdHVyZUxlbmd0aCB8fCBzaWdu
YXR1cmUuc2l6ZSgpID4gbWF4U2lnbmF0dXJlTGVuZ3RoKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBhdHRlc3RhdGlvblN0YXRlbWVudE1hcDsK
KyAgICBhdHRlc3RhdGlvblN0YXRlbWVudE1hcFtjYm9yOjpDQk9SVmFsdWUoInNpZyIpXSA9IGNi
b3I6OkNCT1JWYWx1ZShXVEZNb3ZlKHNpZ25hdHVyZSkpOworICAgIFZlY3RvcjxjYm9yOjpDQk9S
VmFsdWU+IGNib3JBcnJheTsKKyAgICBjYm9yQXJyYXkuYXBwZW5kKGNib3I6OkNCT1JWYWx1ZShX
VEZNb3ZlKHg1MDkpKSk7CisgICAgYXR0ZXN0YXRpb25TdGF0ZW1lbnRNYXBbY2Jvcjo6Q0JPUlZh
bHVlKCJ4NWMiKV0gPSBjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZShjYm9yQXJyYXkpKTsKKworICAg
IHJldHVybiBhdHRlc3RhdGlvblN0YXRlbWVudE1hcDsKK30KKworfSAvLyBuYW1lc3BhY2UKKwor
T3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNl
KGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKQorewor
ICAgIGF1dG8gcHVibGljS2V5ID0gZXh0cmFjdEVDUHVibGljS2V5RnJvbVUyZlJlZ2lzdHJhdGlv
blJlc3BvbnNlKHUyZkRhdGEpOworICAgIGlmIChwdWJsaWNLZXkuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBhdHRlc3RlZENyZWRlbnRpYWxEYXRh
ID0gY3JlYXRlQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YUZyb21VMmZSZWdpc3RlclJlc3BvbnNlKHUy
ZkRhdGEsIHB1YmxpY0tleSk7CisgICAgaWYgKGF0dGVzdGVkQ3JlZGVudGlhbERhdGEuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgLy8gRXh0cmFjdCB0aGUg
Y3JlZGVudGlhbElkIGZvciBwYWNraW5nIGludG8gdGhlIHJlc3BvbnNlIGRhdGEuCisgICAgYXV0
byBjcmVkZW50aWFsSWQgPSBleHRyYWN0Q3JlZGVudGlhbElkRnJvbVUyZlJlZ2lzdHJhdGlvblJl
c3BvbnNlKHUyZkRhdGEpOworICAgIEFTU0VSVCghY3JlZGVudGlhbElkLmlzRW1wdHkoKSk7CisK
KyAgICAvLyBUaGUgY291bnRlciBpcyB6ZXJvZWQgb3V0IGZvciBSZWdpc3RlciByZXF1ZXN0cy4K
KyAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShycElkLCBtYWtlQ3JlZGVudGlhbEZs
YWdzLCAwLCBhdHRlc3RlZENyZWRlbnRpYWxEYXRhKTsKKworICAgIGF1dG8gZmlkb0F0dGVzdGF0
aW9uU3RhdGVtZW50ID0gY3JlYXRlRmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50RnJvbVUyZlJlZ2lz
dGVyUmVzcG9uc2UodTJmRGF0YSwga1UyZktleUhhbmRsZU9mZnNldCArIGNyZWRlbnRpYWxJZC5z
aXplKCkpOworICAgIGlmIChmaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnQuZW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBi
dWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCAiZmlkby11MmYiLCBXVEZN
b3ZlKGZpZG9BdHRlc3RhdGlvblN0YXRlbWVudCkpOworCisgICAgcmV0dXJuIFB1YmxpY0tleUNy
ZWRlbnRpYWxEYXRhIHsgQXJyYXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQuZGF0YSgpLCBj
cmVkZW50aWFsSWQuc2l6ZSgpKSwgdHJ1ZSwgbnVsbHB0ciwgQXJyYXlCdWZmZXI6OmNyZWF0ZShh
dHRlc3RhdGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSksIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIgfTsKK30KKworT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlh
bERhdGE+IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0
YSkKK3sKKyAgICBpZiAoa2V5SGFuZGxlLmlzRW1wdHkoKSB8fCB1MmZEYXRhLnNpemUoKSA8PSBz
aWduYXR1cmVJbmRleCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIC8vIDEg
Ynl0ZSBmbGFncywgNCBieXRlcyBjb3VudGVyCisgICAgYXV0byBmbGFncyA9IHUyZkRhdGFbZmxh
Z0luZGV4XTsKKyAgICB1aW50MzJfdCBjb3VudGVyID0gdTJmRGF0YVtjb3VudGVySW5kZXhdIDw8
IDI0OworICAgIGNvdW50ZXIgKz0gdTJmRGF0YVtjb3VudGVySW5kZXggKyAxXSA8PCAxNjsKKyAg
ICBjb3VudGVyICs9IHUyZkRhdGFbY291bnRlckluZGV4ICsgMl0gPDwgODsKKyAgICBjb3VudGVy
ICs9IHUyZkRhdGFbY291bnRlckluZGV4ICsgM107CisgICAgYXV0byBhdXRoRGF0YSA9IGJ1aWxk
QXV0aERhdGEocnBJZCwgZmxhZ3MsIGNvdW50ZXIsIHsgfSk7CisKKyAgICByZXR1cm4gUHVibGlj
S2V5Q3JlZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGtleUhhbmRsZS5kYXRhKCks
IGtleUhhbmRsZS5zaXplKCkpLCBmYWxzZSwgbnVsbHB0ciwgbnVsbHB0ciwgQXJyYXlCdWZmZXI6
OmNyZWF0ZShhdXRoRGF0YS5kYXRhKCksIGF1dGhEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpj
cmVhdGUodTJmRGF0YS5kYXRhKCkgKyBzaWduYXR1cmVJbmRleCwgdTJmRGF0YS5zaXplKCkgLSBz
aWduYXR1cmVJbmRleCksIG51bGxwdHIgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgZmlkbworCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDZhNDFmODczZDhiYmM0ZjlhNWEwZjA3ZTMwZDY3ZjI3ZGYyYWJjYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNv
bnZlcnRlci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1
bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQor
CisjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorCituYW1lc3BhY2UgZmlkbyB7CisKKy8vIENvbnZlcnRzIGEgVTJGIHJlZ2lzdGVy
IHJlc3BvbnNlIHRvIFdlYkF1dGhOIG1ha2VDcmVkZW50aWFsIHJlc3BvbnNlLgorLy8gaHR0cHM6
Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVu
dC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0
aGVudGljYXRvck1ha2VDcmVkZW50aWFsLWludGVyb3BlcmFiaWxpdHkKK1dFQkNPUkVfRVhQT1JU
IE9wdGlvbmFsPFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkVTJmUmVnaXN0
ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJm
RGF0YSk7CisKKy8vIENvbnZlcnRzIGEgVTJGIGF1dGhlbnRpY2F0aW9uIHJlc3BvbnNlIHRvIFdl
YkF1dGhOIGdldEFzc2VydGlvbiByZXNwb25zZS4KKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9y
Zy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRv
ci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWF1dGhlbnRpY2F0b3JHZXRBc3Nl
cnRpb24taW50ZXJvcGVyYWJpbGl0eQorV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8V2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0
cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgdTJmRGF0YSk7CisKK30gLy8gbmFtZXNwYWNlIGZpZG8KKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCmluZGV4IGRiYjgwM2JlMjczMjFiOWJlNmNkZjU5
ZDkxMWFmYmMwMzM4NDI5NDIuLjA0ZGU3ZDJhNjJiN2VjM2QxNTk4MWM2MDk2MjhlNTUzZTMzYThi
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRCdWZmZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR1BVQ29tbWFuZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAi
R1BVUmVuZGVyUGFzc0VuY29kZXIuaCIKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5oIgogI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cmlu
ZGV4IGU3ZDkzNGFkMjdmMWJmYTkxMjMxZTFkODZkZjBiNzQxOWQ4MzhiOTAuLmVhMjk1Nzg5YzVi
ZmM4ODE4MWExNGYzMjUwNTdiYWMwNDVhZjg2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNTYsNiAr
MjU2LDcgQEAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAogTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vUHVi
bGljS2V5Q3JlZGVudGlhbC5jcHAKK01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25V
dGlscy5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFuZC5jcHAKIE1vZHVsZXMv
d2ViYXV0aG4vYXBkdS9BcGR1UmVzcG9uc2UuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JP
UlJlYWRlci5jcHAKQEAgLTI2OSw2ICsyNzAsOCBAQCBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlk
b0NvbnN0YW50cy5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAK
IE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcAogTW9kdWxlcy93ZWJhdXRo
bi9maWRvL0ZpZG9QYXJzaW5nVXRpbHMuY3BwCitNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29t
bWFuZENvbnN0cnVjdG9yLmNwcAorTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29u
dmVydGVyLmNwcAogCiBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNw
cAogTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZTQ1
MmMwNjJhNmJhMjZmNDczMjcwNzdmYzFmOTlhY2ZjZmQ4Y2ViLi5kOTE3YjU4MGMwMzg0OGY2NDc2
NWNlN2U4ODY4NDdhNzFlMWIxMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzgzLDYgKzE3ODMsOSBAQAogCQk1NzEyNTI2
OTFFNTI0RUIxMDA4RkYzNjkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxMjUyNjgxRTUyNEVCMTAwOEZG
MzY5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DRkIuaCAqLzsgfTsKIAkJNTcxNTJCNUEyMUNCM0U4
ODAwMEMzN0NBIC8qIEFwZHVDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzE1MkI1ODIxQ0IyRTNCMDAwQzM3Q0EgLyogQXBkdUNvbW1hbmQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzE1
MkI1QzIxQ0MxOTAyMDAwQzM3Q0EgLyogQXBkdVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1MkI1NjIxQ0IyRTNBMDAwQzM3Q0EgLyog
QXBkdVJlc3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNTcxNTJCNkUyMUNEOTk1RDAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNTJC
NkMyMUNEOTk1QzAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3MTUyQjdDMjFERDhCQTEw
MDBDMzdDQSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNTJCN0EyMUREOEJBMTAwMEMzN0NBIC8qIFUyZlJl
c3BvbnNlQ29udmVydGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNTcxNTJCODAyMUREQTU4MTAwMEMzN0NBIC8qIFdlYkF1dGhlbnRpY2F0aW9u
VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
MTUyQjdFMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50aWNhdGlvblV0aWxzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcxRjIxODkxREE1
N0M1NDAwNUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzFGMjE4ODFEQTU3QzU0MDA1QzlFRkQgLyogSlNTdWJ0
bGVDcnlwdG8uaCAqLzsgfTsKIAkJNTcyMDkzRDMxRERDRUI5QTAwMzEwQUIwIC8qIENyeXB0b0Fs
Z29yaXRobUFlc0NiY0NmYlBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTcyMDkzRDIxRERDRUI5QTAwMzEwQUIwIC8qIENyeXB0b0FsZ29yaXRo
bUFlc0NiY0NmYlBhcmFtcy5oICovOyB9OwogCQk1NzIxQTk4NzFFQ0U1M0IxMDA4MTI5NUEgLyog
Q3J5cHRvRGlnZXN0QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzIxQTk4NjFFQ0U1M0IxMDA4MTI5NUEgLyogQ3J5cHRvRGlnZXN0QWxn
b3JpdGhtLmggKi87IH07CkBAIC0xODE2LDggKzE4MTksOCBAQAogCQk1NzM0ODkzOTFEQUM2QjZF
MDBEQzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczNDg5MzgxREFDNkI2RDAwREMwNjY3IC8q
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNTczOUUxMkYxREFDN0Y3ODAw
RTE0MzgzIC8qIEpTQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczOUUxMkUxREFDN0Y3ODAwRTE0MzgzIC8q
IEpTQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovOyB9OwogCQk1NzNGNTMzMjIxNjgwNkUx
MDA0NTU4N0EgLyogRmlkb0hpZE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3QkFGMjhBMjE2N0QzMDMwMDhFOTU0RSAvKiBGaWRvSGlkTWVz
c2FnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTU3M0Y1MzM3MjE2ODBEMTUwMDQ1NTg3QSAvKiBGaWRvUGFyc2luZ1V0aWxzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzNGNTMzNTIxNjgwRDE0MDA0
NTU4N0EgLyogRmlkb1BhcnNpbmdVdGlscy5oICovOyB9OwotCQk1NzRGNTVFMTIwNEYzQjIzMDAy
OTQ4QzYgLyogQ09TRUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc0RjU1REMyMDRGMzczMjAwMjk0OEM2IC8qIENPU0VDb25zdGFudHMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NzNG
NTMzNzIxNjgwRDE1MDA0NTU4N0EgLyogRmlkb1BhcnNpbmdVdGlscy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczRjUzMzUyMTY4MEQxNDAwNDU1ODdB
IC8qIEZpZG9QYXJzaW5nVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk1NzRGNTVFMTIwNEYzQjIzMDAyOTQ4QzYgLyogV2ViQXV0aGVudGlj
YXRpb25Db25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3NEY1NURDMjA0RjM3MzIwMDI5NDhDNiAvKiBXZWJBdXRoZW50aWNhdGlvbkNvbnN0
YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTU3NTBBOTc1MUU2OEQwMDAwMDcwNUM0QSAvKiBDcnlwdG9LZXlFQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5NzMxRTY4RDAwMDAwNzA1QzRB
IC8qIENyeXB0b0tleUVDLmggKi87IH07CiAJCTU3NTBBOTdFMUU2QTEzRUYwMDcwNUM0QSAvKiBD
cnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5N0QxRTZBMTNFRjAwNzA1QzRBIC8qIENyeXB0b0FsZ29y
aXRobUVjS2V5UGFyYW1zLmggKi87IH07CiAJCTU3NTBBOTgyMUU2QTE1MDgwMDcwNUM0QSAvKiBK
U0VjS2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzUwQTk4MDFFNkExNTA4MDA3MDVDNEEgLyogSlNFY0tleVBhcmFtcy5oICovOyB9OwpA
QCAtODU5Miw2ICs4NTk1LDEyIEBACiAJCTU3MTUyQjU2MjFDQjJFM0EwMDBDMzdDQSAvKiBBcGR1
UmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXBkdVJlc3BvbnNl
Lmg7IHBhdGggPSBNb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdVJlc3BvbnNlLmg7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNTcxNTJCNTcyMUNCMkUzQTAwMEMzN0NBIC8qIEFwZHVD
b21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFwZHVDb21t
YW5kLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFuZC5jcHA7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNTcxNTJCNTgyMUNCMkUzQjAwMEMzN0NBIC8q
IEFwZHVDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFwZHVDb21t
YW5kLmg7IHBhdGggPSBNb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdUNvbW1hbmQuaDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk1NzE1MkI2QTIxQ0Q5OTVDMDAwQzM3Q0EgLyogVTJm
Q29tbWFuZENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU3MTUyQjZDMjFDRDk5NUMwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVTJmQ29tbWFuZENvbnN0cnVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MTUyQjdBMjFERDhCQTEwMDBDMzdDQSAv
KiBVMmZSZXNwb25zZUNvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVMmZSZXNwb25zZUNvbnZl
cnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzE1MkI3QjIxREQ4QkExMDAw
QzM3Q0EgLyogVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVTJm
UmVzcG9uc2VDb252ZXJ0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzE1
MkI3RTIxRERBNTgxMDAwQzM3Q0EgLyogV2ViQXV0aGVudGljYXRpb25VdGlscy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJBdXRoZW50aWNhdGlvblV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU3MTUyQjdGMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50aWNhdGlvblV0aWxz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzFGMjE4ODFEQTU3QzU0MDA1QzlFRkQgLyogSlNT
dWJ0bGVDcnlwdG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdWJ0bGVD
cnlwdG8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxRjIxOEExREE1N0M3QTAw
NUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU3VidGxlQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTcyMDkzRDExRERDRUE0QjAwMzEwQUIwIC8qIEFlc0NiY0NmYlBhcmFtcy5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
QWVzQ2JjQ2ZiUGFyYW1zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2NTgs
NyArODY2Nyw3IEBACiAJCTU3M0Y1MzM2MjE2ODBEMTUwMDQ1NTg3QSAvKiBGaWRvUGFyc2luZ1V0
aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpZG9QYXJzaW5n
VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzRBQzc1MzFEQUMzNjdE
MDBFOTc0NEMgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3NEQ0Mjc5MUQ1OTRGRjYwMDJDRjUwRSAvKiBHbG9iYWxDcnlwdG8uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdsb2JhbENyeXB0by5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTU3NEY1NURDMjA0RjM3MzIwMDI5NDhDNiAvKiBDT1NFQ29uc3RhbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENPU0VDb25zdGFudHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc0RjU1REMyMDRGMzczMjAwMjk0OEM2IC8qIFdl
YkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3NEY1NUUyMjA0RjNDQkYwMDI5NDhDNiAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcms7
IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0xvY2FsQXV0aGVudGljYXRpb24uZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJNTc1MEE5NzIxRTY4RDAwMDAwNzA1
QzRBIC8qIENyeXB0b0tleUVDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENyeXB0b0tleUVDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc1MEE5
NzMxRTY4RDAwMDAwNzA1QzRBIC8qIENyeXB0b0tleUVDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENyeXB0b0tleUVDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xOTMyMCw2ICsxOTMyOSwxMCBAQAogCQkJCTU3OEE0QzBBMjE2N0QyOTYwMEQwOEYzNCAvKiBG
aWRvSGlkUGFja2V0LmggKi8sCiAJCQkJNTczRjUzMzYyMTY4MEQxNTAwNDU1ODdBIC8qIEZpZG9Q
YXJzaW5nVXRpbHMuY3BwICovLAogCQkJCTU3M0Y1MzM1MjE2ODBEMTQwMDQ1NTg3QSAvKiBGaWRv
UGFyc2luZ1V0aWxzLmggKi8sCisJCQkJNTcxNTJCNkEyMUNEOTk1QzAwMEMzN0NBIC8qIFUyZkNv
bW1hbmRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJNTcxNTJCNkMyMUNEOTk1QzAwMEMzN0NBIC8q
IFUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oICovLAorCQkJCTU3MTUyQjdCMjFERDhCQTEwMDBDMzdD
QSAvKiBVMmZSZXNwb25zZUNvbnZlcnRlci5jcHAgKi8sCisJCQkJNTcxNTJCN0EyMUREOEJBMTAw
MEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29udmVydGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGZp
ZG87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTkzNzksNyArMTkzOTIsNiBAQAog
CQkJCTU3MzAzQkQxMjAwODdBODMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaWRs
ICovLAogCQkJCTU3RENFRDhDMjE0ODdFREIwMDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yVHJhbnNw
b3J0LmggKi8sCiAJCQkJNTdEQ0VEOEUyMTQ4N0VEQjAwMTZCODQ3IC8qIEF1dGhlbnRpY2F0b3JU
cmFuc3BvcnQuaWRsICovLAotCQkJCTU3NEY1NURDMjA0RjM3MzIwMDI5NDhDNiAvKiBDT1NFQ29u
c3RhbnRzLmggKi8sCiAJCQkJNTdEODQ2MkMxRkVBRjY4RjAwQ0EzNjgyIC8qIFB1YmxpY0tleUNy
ZWRlbnRpYWwuY3BwICovLAogCQkJCTU3RDg0NjJCMUZFQUY2OEYwMENBMzY4MiAvKiBQdWJsaWNL
ZXlDcmVkZW50aWFsLmggKi8sCiAJCQkJNTdEODQ2MkQxRkVBRjY4RjAwQ0EzNjgyIC8qIFB1Ymxp
Y0tleUNyZWRlbnRpYWwuaWRsICovLApAQCAtMTkzOTQsNiArMTk0MDYsOSBAQAogCQkJCTU3MzAz
QkYwMjAwOTg0NjEwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZS5pZGwgKi8sCiAJ
CQkJNTcyQjQwMjMyMTc2OEQ4NTAwMEFENDNFIC8qIFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVu
dC5oICovLAogCQkJCTU3MkI0MDI1MjE3NjhEODUwMDBBRDQzRSAvKiBVc2VyVmVyaWZpY2F0aW9u
UmVxdWlyZW1lbnQuaWRsICovLAorCQkJCTU3NEY1NURDMjA0RjM3MzIwMDI5NDhDNiAvKiBXZWJB
dXRoZW50aWNhdGlvbkNvbnN0YW50cy5oICovLAorCQkJCTU3MTUyQjdGMjFEREE1ODEwMDBDMzdD
QSAvKiBXZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcCAqLywKKwkJCQk1NzE1MkI3RTIxRERBNTgx
MDAwQzM3Q0EgLyogV2ViQXV0aGVudGljYXRpb25VdGlscy5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSB3ZWJhdXRobjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yODI0Niw3ICsyODI2
MSw2IEBACiAJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0FGRjQyMjFFRkIxNDQ5MDBCNTQ1
QjMgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q3
RDMzNDgxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1NzRGNTVFMTIwNEYzQjIzMDAyOTQ4QzYgLyogQ09TRUNvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODYyRjEyOUUxOEMxNTc2RjAwNUM1NEFGIC8qIENvdW50ZWRVc2VyQWN0
aXZpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDA0MEExOTg5Q0EwMDdGQjhDNSAvKiBD
b3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjk3OTBFODIwNjkyMDBCMjU5NjUgLyog
Q291bnRlckNvbnRlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzE2MzAsNiArMzE2NDQsOCBAQAog
CQkJCTRCQUZEMEUxMjE5MjQyQTAwMEMwQUI2NCAvKiBUeXBlZE9NQ1NTVW5pdFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QkFGRDBEOTIxOTIxRUEwMDBDMEFCNjQgLyogVHlwZWRPTUNTU1Vu
cGFyc2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFBMDk5RTY0OTIwMDU2RTU4
MSAvKiBUeXBpbmdDb21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzE1MkI2RTIxQ0Q5OTVE
MDAwQzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
NzE1MkI3QzIxREQ4QkExMDAwQzM3Q0EgLyogVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MDMxQjRFMEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4M0ZFN0NBNzFEQTlGMUE3MDAzNzIzN0MgLyogVUlFdmVudEluaXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRGMEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50V2l0
aEtleVN0YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxNzM2LDYgKzMxNzUyLDggQEAKIAkJCQk0
MTdGN0FFRTIxMzlCRjY4MDBGQkE3RUMgLyogV2ViQXVkaW9CdWZmZXJMaXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MUIyQTYyNjFFRjFCRjZEMDAyQjlEN0EgLyogV2ViQXVkaW9Tb3VyY2VQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdENjM3NDAxQkIwQjExMzAwMjU2Q0U5IC8qIFdl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzRGNTVF
MTIwNEYzQjIzMDAyOTQ4QzYgLyogV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU3MTUyQjgwMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50aWNhdGlv
blV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjM2RUE5QzFFMjFCQTE3MDA2MjFFMjUgLyog
V2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUI4MUNC
NTFGQUE0NDYyMDAzN0QxRTYgLyogV2ViQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5QkJBMkNBQjFGNjc5RTBDMDBGRDFDMUUgLyogV2ViQ29udGVudFJlYWRlci5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggMDI1
N2MwZDhhNmJiMjI5MDQ5ZjMxNGJlMDFkYzk0OThkNzE4MjVmNC4uZWZjM2UxNjBiNDhiYzZlM2I3
ZGFlNTQ0YTUyMjM0N2M5NzhiOTMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRvci5tbQpAQCAtMzAsMTEgKzMwLDEyIEBACiAKICNpbXBvcnQgPFNlY3VyaXR5L1NlY0l0
ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0JPUldyaXRlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9D
T1NFQ29uc3RhbnRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V4Y2VwdGlvbkRhdGEuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2Vi
QXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViQXV0aGVudGlj
YXRpb25VdGlscy5oPgogI2ltcG9ydCA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbXBv
cnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC01MCw1MCAr
NTEsMTAgQEAgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsIHsKIC8vIFNlZSBo
dHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2ZsYWdzLgogY29uc3QgdWludDhfdCBtYWtl
Q3JlZGVudGlhbEZsYWdzID0gMGIwMTAwMDEwMTsgLy8gVVAsIFVWIGFuZCBBVCBhcmUgc2V0Lgog
Y29uc3QgdWludDhfdCBnZXRBc3NlcnRpb25GbGFncyA9IDBiMDAwMDAxMDE7IC8vIFVQIGFuZCBV
ViBhcmUgc2V0LgotLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzgzMjA1MTIpOiBEZWZpbmUgQXBw
bGUgQUFHVUlELgotY29uc3QgdWludDhfdCBBQUdVSURbXSA9IHsweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwfTsgLy8gMTYgYnl0ZXMKIC8vIENyZWRlbnRpYWwgSUQgaXMgY3Vy
cmVudGx5IFNIQS0xIG9mIHRoZSBjb3JyZXNwb25kaW5nIHB1YmxpYyBrZXkuCi0vLyBGSVhNRSgx
ODM1MzQpOiBBc3N1bWUgbGl0dGxlIGVuZGlhbiBoZXJlLgotY29uc3QgdW5pb24gewotICAgIHVp
bnQxNl90IGludGVnZXI7Ci0gICAgdWludDhfdCBieXRlc1syXTsKLX0gY3JlZGVudGlhbElkTGVu
Z3RoID0gezB4MDAxNH07Ci1jb25zdCBzaXplX3QgRVMyNTZLZXlTaXplSW5CeXRlcyA9IDMyOwot
Y29uc3Qgc2l6ZV90IGF1dGhEYXRhUHJlZml4Rml4ZWRTaXplID0gMzc7IC8vIGhhc2goMzIpICsg
ZmxhZ3MoMSkgKyBjb3VudGVyKDQpCitjb25zdCB1aW50MTZfdCBjcmVkZW50aWFsSWRMZW5ndGgg
PSAyMDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0vLyBodHRwczovL3d3dy53My5vcmcv
VFIvd2ViYXV0aG4vI3NlYy1hdXRoZW50aWNhdG9yLWRhdGEKLXN0YXRpYyBWZWN0b3I8dWludDhf
dD4gYnVpbGRBdXRoRGF0YShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IHVpbnQ4X3QgZmxhZ3Ms
IHVpbnQzMl90IGNvdW50ZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgb3B0aW9uYWxBdHRlc3Rl
ZENyZWRlbnRpYWxEYXRhKQotewotICAgIFZlY3Rvcjx1aW50OF90PiBhdXRoRGF0YTsKLSAgICBh
dXRoRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGF1dGhEYXRhUHJlZml4Rml4ZWRTaXplICsg
b3B0aW9uYWxBdHRlc3RlZENyZWRlbnRpYWxEYXRhLnNpemUoKSk7Ci0KLSAgICAvLyBSUCBJRCBo
YXNoCi0gICAgYXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwotICAgIC8vIEZJWE1FKDE4MzUzNCk6IFRl
c3QgSUROLgotICAgIEFTU0VSVChycElkLmlzQWxsQVNDSUkoKSk7Ci0gICAgYXV0byBhc2NpaVJw
SWQgPSBycElkLmFzY2lpKCk7Ci0gICAgY3J5cHRvLT5hZGRCeXRlcyhhc2NpaVJwSWQuZGF0YSgp
LCBhc2NpaVJwSWQubGVuZ3RoKCkpOwotICAgIGF1dGhEYXRhID0gY3J5cHRvLT5jb21wdXRlSGFz
aCgpOwotCi0gICAgLy8gRkxBR1MKLSAgICBhdXRoRGF0YS5hcHBlbmQoZmxhZ3MpOwotCi0gICAg
Ly8gQ09VTlRFUgotICAgIC8vIEZJWE1FKDE4MzUzNCk6IEFzc3VtZSBsaXR0bGUgZW5kaWFuIGhl
cmUuCi0gICAgdW5pb24gewotICAgICAgICB1aW50MzJfdCBpbnRlZ2VyOwotICAgICAgICB1aW50
OF90IGJ5dGVzWzRdOwotICAgIH0gY291bnRlclVuaW9uOwotICAgIGNvdW50ZXJVbmlvbi5pbnRl
Z2VyID0gY291bnRlcjsKLSAgICBhdXRoRGF0YS5hcHBlbmQoY291bnRlclVuaW9uLmJ5dGVzLCBz
aXplb2YoY291bnRlclVuaW9uLmJ5dGVzKSk7Ci0KLSAgICAvLyBBVFRFU1RFRCBDUkVELiBEQVRB
Ci0gICAgYXV0aERhdGEuYXBwZW5kVmVjdG9yKG9wdGlvbmFsQXR0ZXN0ZWRDcmVkZW50aWFsRGF0
YSk7Ci0KLSAgICByZXR1cm4gYXV0aERhdGE7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBlbXB0
eVRyYW5zcG9ydHNPckNvbnRhaW4oY29uc3QgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+
JiB0cmFuc3BvcnRzLCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRhcmdldCkKIHsKICAgICByZXR1
cm4gdHJhbnNwb3J0cy5pc0VtcHR5KCkgPyB0cnVlIDogdHJhbnNwb3J0cy5jb250YWlucyh0YXJn
ZXQpOwpAQCAtMTA1LDcgKzY2LDcgQEAgc3RhdGljIGlubGluZSBIYXNoU2V0PFN0cmluZz4gcHJv
ZHVjZUhhc2hTZXQoY29uc3QgVmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXMKICAgICBmb3Ig
KGF1dG8mIGNyZWRlbnRpYWxEZXNjcmlwdG9yIDogY3JlZGVudGlhbERlc2NyaXB0b3JzKSB7CiAg
ICAgICAgIGlmIChlbXB0eVRyYW5zcG9ydHNPckNvbnRhaW4oY3JlZGVudGlhbERlc2NyaXB0b3Iu
dHJhbnNwb3J0cywgQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpCiAgICAgICAgICAg
ICAmJiBjcmVkZW50aWFsRGVzY3JpcHRvci50eXBlID09IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBl
OjpQdWJsaWNLZXkKLSAgICAgICAgICAgICYmIGNyZWRlbnRpYWxEZXNjcmlwdG9yLmlkVmVjdG9y
LnNpemUoKSA9PSBjcmVkZW50aWFsSWRMZW5ndGguaW50ZWdlcikKKyAgICAgICAgICAgICYmIGNy
ZWRlbnRpYWxEZXNjcmlwdG9yLmlkVmVjdG9yLnNpemUoKSA9PSBjcmVkZW50aWFsSWRMZW5ndGgp
CiAgICAgICAgICAgICByZXN1bHQuYWRkKFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihjcmVkZW50aWFsRGVzY3JpcHRvci5pZFZlY3Rvci5kYXRhKCkpLCBjcmVkZW50aWFsRGVz
Y3JpcHRvci5pZFZlY3Rvci5zaXplKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAg
LTMwNywyMiArMjY4LDEwIEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiAgICAgLy8gRklYTUUo
MTgzNTMzKTogc3RvcmUgdGhlIGNvdW50ZXIuCiAgICAgdWludDMyX3QgY291bnRlciA9IDA7CiAK
LSAgICAvLyBGSVhNRSgxODM1MzQpOiBhdHRlc3RlZENyZWRlbnRpYWxEYXRhIGNvdWxkIHRocm90
dGxlLgogICAgIC8vIFN0ZXAgMTEuIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jYXR0
ZXN0ZWQtY3JlZGVudGlhbC1kYXRhCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGF0dGVzdGVkQ3JlZGVu
dGlhbERhdGE7CisgICAgLy8gY3JlZGVudGlhbFB1YmxpY0tleQorICAgIFZlY3Rvcjx1aW50OF90
PiBjb3NlUHVibGljS2V5OwogICAgIHsKLSAgICAgICAgLy8gYWFndWlkCi0gICAgICAgIGF0dGVz
dGVkQ3JlZGVudGlhbERhdGEuYXBwZW5kKEFBR1VJRCwgc2l6ZW9mKEFBR1VJRCkpOwotCi0gICAg
ICAgIC8vIGNyZWRlbnRpYWxJZExlbmd0aAotICAgICAgICBBU1NFUlQoY3JlZGVudGlhbElkLnNp
emUoKSA9PSBjcmVkZW50aWFsSWRMZW5ndGguaW50ZWdlcik7Ci0gICAgICAgIC8vIEZJWE1FKDE4
MzUzNCk6IEFzc3VtZSBsaXR0bGUgZW5kaWFuIGhlcmUuCi0gICAgICAgIGF0dGVzdGVkQ3JlZGVu
dGlhbERhdGEuYXBwZW5kKGNyZWRlbnRpYWxJZExlbmd0aC5ieXRlcywgc2l6ZW9mKHVpbnQxNl90
KSk7Ci0KLSAgICAgICAgLy8gY3JlZGVudGlhbElkCi0gICAgICAgIGF0dGVzdGVkQ3JlZGVudGlh
bERhdGEuYXBwZW5kVmVjdG9yKGNyZWRlbnRpYWxJZCk7Ci0KLSAgICAgICAgLy8gY3JlZGVudGlh
bFB1YmxpY0tleQogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwdWJsaWNLZXlEYXRhUmVm
OwogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIHB1YmxpY0tleSA9IGFkb3B0Q0YoU2VjS2V5
Q29weVB1YmxpY0tleShwcml2YXRlS2V5KSk7CkBAIC0zMzQsMjkgKzI4MywxOCBAQCB2b2lkIExv
Y2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQoU2Vj
S2V5UmVmIHByaXZhdGVLZQogICAgICAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlv
bkRhdGEgeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQo
KChOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVmLmdldCgpKS5sZW5ndGggPT0gKDEgKyAyICogRVMy
NTZLZXlTaXplSW5CeXRlcykpOyAvLyAwNCB8IFggfCBZCisgICAgICAgICAgICBBU1NFUlQoKChO
U0RhdGEgKilwdWJsaWNLZXlEYXRhUmVmLmdldCgpKS5sZW5ndGggPT0gKDEgKyAyICogRVMyNTZG
aWVsZEVsZW1lbnRMZW5ndGgpKTsgLy8gMDQgfCBYIHwgWQogICAgICAgICB9CiAKICAgICAgICAg
Ly8gQ09TRSBFbmNvZGluZwotICAgICAgICAvLyBGSVhNRSgxODM1MzUpOiBJbXByb3ZlIENCT1Ig
ZW5jb2RlciB0byB3b3JrIHdpdGggYnl0ZXMgZGlyZWN0bHkuCi0gICAgICAgIFZlY3Rvcjx1aW50
OF90PiB4KEVTMjU2S2V5U2l6ZUluQnl0ZXMpOwotICAgICAgICBbKE5TRGF0YSAqKXB1YmxpY0tl
eURhdGFSZWYuZ2V0KCkgZ2V0Qnl0ZXM6IHguZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEsIEVT
MjU2S2V5U2l6ZUluQnl0ZXMpXTsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHkoRVMyNTZLZXlT
aXplSW5CeXRlcyk7Ci0gICAgICAgIFsoTlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQoKSBn
ZXRCeXRlczogeS5kYXRhKCkgcmFuZ2U6TlNNYWtlUmFuZ2UoMSArIEVTMjU2S2V5U2l6ZUluQnl0
ZXMsIEVTMjU2S2V5U2l6ZUluQnl0ZXMpXTsKLSAgICAgICAgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBW
YWx1ZSBwdWJsaWNLZXlNYXA7Ci0gICAgICAgIHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUo
Q09TRTo6a3R5KV0gPSBjYm9yOjpDQk9SVmFsdWUoQ09TRTo6RUMyKTsKLSAgICAgICAgcHVibGlj
S2V5TWFwW2Nib3I6OkNCT1JWYWx1ZShDT1NFOjphbGcpXSA9IGNib3I6OkNCT1JWYWx1ZShDT1NF
OjpFUzI1Nik7Ci0gICAgICAgIHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6Y3J2
KV0gPSBjYm9yOjpDQk9SVmFsdWUoQ09TRTo6UF8yNTYpOwotICAgICAgICBwdWJsaWNLZXlNYXBb
Y2Jvcjo6Q0JPUlZhbHVlKENPU0U6OngpXSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKHgpKTsK
LSAgICAgICAgcHVibGljS2V5TWFwW2Nib3I6OkNCT1JWYWx1ZShDT1NFOjp5KV0gPSBjYm9yOjpD
Qk9SVmFsdWUoV1RGTW92ZSh5KSk7Ci0gICAgICAgIGF1dG8gY29zZVB1YmxpY0tleSA9IGNib3I6
OkNCT1JXcml0ZXI6OndyaXRlKGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKHB1YmxpY0tleU1hcCkp
KTsKLSAgICAgICAgaWYgKCFjb3NlUHVibGljS2V5KSB7Ci0gICAgICAgICAgICBMT0dfRVJST1Io
IkNvdWxkbid0IGVuY29kZSB0aGUgcHVibGljIGtleSBpbnRvIENPU0UgYmluYXJpZXMuIik7Ci0g
ICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAi
VW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YS5hcHBlbmRWZWN0b3IoY29zZVB1
YmxpY0tleS52YWx1ZSgpKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHgoRVMyNTZGaWVsZEVs
ZW1lbnRMZW5ndGgpOworICAgICAgICBbKE5TRGF0YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0KCkg
Z2V0Qnl0ZXM6IHguZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEsIEVTMjU2RmllbGRFbGVtZW50
TGVuZ3RoKV07CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB5KEVTMjU2RmllbGRFbGVtZW50TGVu
Z3RoKTsKKyAgICAgICAgWyhOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVmLmdldCgpIGdldEJ5dGVz
OiB5LmRhdGEoKSByYW5nZTpOU01ha2VSYW5nZSgxICsgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgs
IEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKV07CisgICAgICAgIGNvc2VQdWJsaWNLZXkgPSBlbmNv
ZGVFUzI1NlB1YmxpY0tleUFzQ0JPUihXVEZNb3ZlKHgpLCBXVEZNb3ZlKHkpKTsKICAgICB9Cisg
ICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzgzMjA1MTIpOiBEZWZpbmUgQXBwbGUgQUFHVUlE
LgorICAgIGF1dG8gYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSA9IGJ1aWxkQXR0ZXN0ZWRDcmVkZW50
aWFsRGF0YShWZWN0b3I8dWludDhfdD4oYWFndWlkTGVuZ3RoLCAwKSwgY3JlZGVudGlhbElkLCBj
b3NlUHVibGljS2V5KTsKIAogICAgIC8vIFN0ZXAgMTIuCiAgICAgYXV0byBhdXRoRGF0YSA9IGJ1
aWxkQXV0aERhdGEocmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMucnAuaWQsIG1ha2VDcmVk
ZW50aWFsRmxhZ3MsIGNvdW50ZXIsIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEpOwpAQCAtMzg2LDE5
ICszMjQsOSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlh
bEFmdGVyQXR0ZXN0ZWQoU2VjS2V5UmVmIHByaXZhdGVLZQogICAgICAgICAgICAgY2JvckFycmF5
LmFwcGVuZChjYm9yOjpDQk9SVmFsdWUodG9WZWN0b3IoKE5TRGF0YSAqKWFkb3B0Q0YoU2VjQ2Vy
dGlmaWNhdGVDb3B5RGF0YSgoX19icmlkZ2UgU2VjQ2VydGlmaWNhdGVSZWYpY2VydGlmaWNhdGVz
W2ldKSkuZ2V0KCkpKSk7CiAgICAgICAgIGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwW2Nib3I6OkNC
T1JWYWx1ZSgieDVjIildID0gY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoY2JvckFycmF5KSk7CiAg
ICAgfQorICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0
KFdURk1vdmUoYXV0aERhdGEpLCAiQXBwbGUiLCBXVEZNb3ZlKGF0dGVzdGF0aW9uU3RhdGVtZW50
TWFwKSk7CiAKLSAgICBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGF0dGVzdGF0aW9uT2JqZWN0
TWFwOwotICAgIGF0dGVzdGF0aW9uT2JqZWN0TWFwW2Nib3I6OkNCT1JWYWx1ZSgiYXV0aERhdGEi
KV0gPSBjYm9yOjpDQk9SVmFsdWUoYXV0aERhdGEpOwotICAgIGF0dGVzdGF0aW9uT2JqZWN0TWFw
W2Nib3I6OkNCT1JWYWx1ZSgiZm10IildID0gY2Jvcjo6Q0JPUlZhbHVlKCJBcHBsZSIpOwotICAg
IGF0dGVzdGF0aW9uT2JqZWN0TWFwW2Nib3I6OkNCT1JWYWx1ZSgiYXR0U3RtdCIpXSA9IGNib3I6
OkNCT1JWYWx1ZShXVEZNb3ZlKGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwKSk7Ci0gICAgYXV0byBh
dHRlc3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKGNib3I6OkNCT1JWYWx1
ZShXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0TWFwKSkpOwotICAgIGlmICghYXR0ZXN0YXRpb25P
YmplY3QpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBlbmNvZGUgdGhlIGF0dGVzdGF0
aW9uIG9iamVjdC4iKTsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVu
a25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgcmVjZWl2ZVJlc3BvbmQoUHVibGljS2V5Q3JlZGVudGlhbERhdGEg
eyBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5z
aXplKCkpLCB0cnVlLCBudWxscHRyLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0dGVzdGF0aW9uT2Jq
ZWN0LnZhbHVlKCkuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC52YWx1ZSgpLnNpemUoKSksIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfSk7CisgICAgcmVjZWl2ZVJlc3BvbmQoUHVibGljS2V5
Q3JlZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRhKCks
IGNyZWRlbnRpYWxJZC5zaXplKCkpLCB0cnVlLCBudWxscHRyLCBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3Quc2l6ZSgpKSwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9KTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcAppbmRleCBiN2Zj
ODA4NjI1ODFhOTlmNTE5NmE3MTJjNTdhNGZjMGNhMTlhMmMzLi4wYjE3Njk5YmRkZTk3ODRiNGM3
ODYzZDlkN2JlOTI0NTQ2NWYyYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0
aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRv
ckdldEluZm9SZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0JPUlJlYWRlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXV0
aGVudGljYXRpb25Db25zdGFudHMuaD4KICNpbmNsdWRlIDx3dGYvQmxvY2tQdHIuaD4KICNpbmNs
dWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgpAQCAtMjAyLDcgKzIwMyw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZl
ZWRSZXBvcnRzKCkKIAogICAgIE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBtZXNzYWdlOwogICAg
IGlmIChtX3N0YWdlID09IE1vY2s6OlN0YWdlOjpJbmZvICYmIG1fc3ViU3RhZ2UgPT0gTW9jazo6
U3ViU3RhZ2U6Ok1zZykgewotICAgICAgICBhdXRvIGluZm9EYXRhID0gZW5jb2RlQXNDQk9SKEF1
dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UoeyBQcm90b2NvbFZlcnNpb246OmtDdGFwIH0sIFZl
Y3Rvcjx1aW50OF90PihrQWFndWlkTGVuZ3RoLCAwdSkpKTsKKyAgICAgICAgYXV0byBpbmZvRGF0
YSA9IGVuY29kZUFzQ0JPUihBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlKHsgUHJvdG9jb2xW
ZXJzaW9uOjprQ3RhcCB9LCBWZWN0b3I8dWludDhfdD4oYWFndWlkTGVuZ3RoLCAwdSkpKTsKICAg
ICAgICAgaW5mb0RhdGEuaW5zZXJ0KDAsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEN0YXBEZXZpY2VS
ZXNwb25zZUNvZGU6OmtTdWNjZXNzKSk7IC8vIFByZXBlbmQgc3RhdHVzIGNvZGUuCiAgICAgICAg
IGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2s6
OkVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKICAgICAgICAgICAgIG1lc3NhZ2UgPSBGaWRvSGlkTWVz
c2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwgLSAxLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6
a0Nib3IsIGluZm9EYXRhKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAwOWUyNmI5ZGNlODZhYjA4ZDE3MTMwNDNkZDY1ODQzM2UzODA2MzA3Li4y
MDVkYzBjMzZhYTIzOWU3ZGZlMDE0ZGQwOTY5NGZjNTVjNTI2ZDY2IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTkt
MDEtMDQgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2Vi
QXV0aE5dIEltcG9ydCBVMkYgY29tbWFuZC9yZXNwb25zZSBjb252ZXJ0ZXJzIGZyb20gQ2hyb21p
dW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzE1
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDcwNTQwMjg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBBZGRzIEFQSSB0ZXN0cy4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmdldFRlc3RBdHRlc3RlZENyZWRlbnRpYWxEYXRh
Qnl0ZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdEF1dGhlbnRpY2F0b3JEYXRh
Qnl0ZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdEF0dGVzdGF0aW9uT2JqZWN0
Qnl0ZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdFNpZ25SZXNwb25zZSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNvbnZl
cnRUb1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpZG9UZXN0RGF0YS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9VMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpjb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6Y29uc3RydWN0R2V0QXNzZXJ0aW9uUmVxdWVzdCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAxOC0xMi0yMSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRoTl0gdXNlclByZXNlbmNlIHNob3VsZCBhbHdheXMg
YmUgdHJ1ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMzE0MzI4ZmVkNGVhMTExOWZlMzVk
MWE1OWNmNTRkY2FlZWU5MjI3Li5mOGFmNjFhMzY5M2RiYzllNTk5MDE4MzkzMWFlYmRhZTgzNWNm
ZGE4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjU4LDYgKzI1OCw3IEBACiAJCTU3MTRF
Q0JCMUNBOEJGRTQwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTcxNEVDQkExQ0E4QkZEMTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJh
bWUuaHRtbCAqLzsgfTsKIAkJNTcxNEVDQkQxQ0E4QzIyQTAwMDUxQUM4IC8qIERvd25sb2FkUmVx
dWVzdE9yaWdpbmFsVVJMMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTRFQ0JDMUNBOEMyMTgwMDA1MUFDOCAvKiBEb3dubG9hZFJl
cXVlc3RPcmlnaW5hbFVSTDIuaHRtbCAqLzsgfTsKIAkJNTcxNTJCNUUyMUNDMjA0NTAwMEMzN0NB
IC8qIEFwZHVUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3MTUyQjVEMjFDQzIwNDUwMDBDMzdDQSAvKiBBcGR1VGVzdC5jcHAgKi87IH07CisJ
CTU3MTUyQjc4MjFERDRFOEQwMDBDMzdDQSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RDFENzVF
MjFEQ0I3QTgwMDkzRTg2QSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcCAqLzsgfTsK
IAkJNTcxRjdGRDAxRjI5NjFGQjAwOTQ2NjQ4IC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJh
Y2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXdhbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzFGN0ZDRjFGMjk2MUUxMDA5NDY2NDggLyog
SW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMtd2Fs
ICovOyB9OwogCQk1NzJCNDAzNDIxNzY5QTg4MDAwQUQ0M0UgLyogQ3RhcFJlcXVlc3RUZXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkI0MDMz
MjE3NjlBODgwMDBBRDQzRSAvKiBDdGFwUmVxdWVzdFRlc3QuY3BwICovOyB9OwogCQk1NzJCNDA0
NDIxNzgxQjQzMDAwQUQ0M0UgLyogQ3RhcFJlc3BvbnNlVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJCNDA0MzIxNzgxQjQyMDAwQUQ0M0Ug
LyogQ3RhcFJlc3BvbnNlVGVzdC5jcHAgKi87IH07CkBAIC0xNjI5LDYgKzE2MzAsNyBAQAogCQk1
Nzk3RkUyRjFFQjE1QTVGMDBCMkY0QTAgLyogTmF2aWdhdGlvbkNsaWVudERlZmF1bHRDcnlwdG8u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvbkNsaWVu
dERlZmF1bHRDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Nzk3RkUz
MjFFQjE1QTg5MDBCMkY0QTAgLyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJuYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0
LWNyeXB0by5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc5OEUyQUYxQ0FG
NUMyODAwQzVDQkEwIC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RDFENzVFMjFEQ0I3QTgwMDkzRTg2QSAvKiBV
MmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0YxMEQ5MjFDN0U3QjM4MDBFQ0RGMzAgLyogSXNOYXZpZ2F0aW9uQWN0
aW9uVHJ1c3RlZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElz
TmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3RjRBQTlGMjA4RkE4M0QwMEE2OEU5RSAvKiBTU0xLZXlHZW5lcmF0b3IubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTU0xLZXlHZW5lcmF0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3RjU2QTVCMUM3RjhBNDAwMEYzMUQ3RSAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVz
dGVkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJc05hdmlnYXRpb25BY3Rpb25U
cnVzdGVkLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjY4LDYgKzI2NzAs
NyBAQAogCQkJCTkzQTI1ODk4MUY5MkZGMTUwMDNFNTEwQyAvKiBUZXh0Q29kZWMuY3BwICovLAog
CQkJCUNEQzJDNzE0MTc5NzA4OUQwMEU2MjdGQiAvKiBUaW1lUmFuZ2VzLmNwcCAqLywKIAkJCQk3
QUQzRkU4RDFENzVGQjhEMDBCMTY5QTQgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwICovLAor
CQkJCTU3RDFENzVFMjFEQ0I3QTgwMDkzRTg2QSAvKiBVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0
LmNwcCAqLywKIAkJCQlFM0ExRTc3RTIxQjI1QjM5MDA4QzYwMDcgLyogVVJMUGFyc2VyVGV4dEVu
Y29kaW5nLmNwcCAqLywKIAkJCQk5QzY0REMzMTFENzYxOThBMDA0QjU5OEUgLyogWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcCAqLywKIAkJCSk7CkBAIC00MTgwLDYgKzQxODMsNyBAQAogCQkJ
CUNFMzUyNEY5MUIxNDQxQzQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFREQxQTQxMUE5MjAwNDQ3QzRDIC8qIFRp
bWVSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDMxQTQxMUE3RTAwNDQ3QzRD
IC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKKwkJCQk1NzE1MkI3ODIxREQ0
RThEMDAwQzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0I0MEI0RTFGNEI5OEQzMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUY0Njg0OUJFMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUzQTFFNzdGMjFCMjVCMzkwMDhDNjAwNyAvKiBVUkxQ
YXJzZXJUZXh0RW5jb2RpbmcuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHAKaW5kZXggNWFh
YTA1ZGEyMDEyMDA1YWQ2ZTU1ZTljYTIxMmI1ODE1MjJkZTk4Mi4uZGUzZjIwOTI5MzMwOWM0YmJj
MjMyMDA4NmI0YWFmOTYwZGVjNGI4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcApAQCAtMzcsOCArMzcsMTEgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0NCT1JXcml0ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rldmlj
ZVJlc3BvbnNlQ29udmVydGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9VMmZSZXNwb25zZUNvbnZlcnRlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvV2ViQXV0aGVudGljYXRpb25VdGlscy5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBmaWRvOwogCiBj
b25zdGV4cHIgdWludDhfdCBrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VXaXRoTm9W
ZXJzaW9uW10gPSB7CkBAIC0yMTYsMTAgKzIxOSwxMDcgQEAgY29uc3RleHByIHVpbnQ4X3Qga1Rl
c3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aEluY29ycmVjdEFhZ3VpZFtdID0gewog
ICAgIDB4ODEsIDB4MDEsCiB9OwogCisvLyBUaGUgYXR0ZXN0ZWQgY3JlZGVudGlhbCBkYXRhLCBl
eGNsdWRpbmcgdGhlIHB1YmxpYyBrZXkgYnl0ZXMuIEFwcGVuZAorLy8gd2l0aCBrVGVzdEVDUHVi
bGljS2V5Q09TRSB0byBnZXQgdGhlIGNvbXBsZXRlIGF0dGVzdGF0aW9uIGRhdGEuCitjb25zdGV4
cHIgdWludDhfdCBrVGVzdEF0dGVzdGVkQ3JlZGVudGlhbERhdGFQcmVmaXhbXSA9IHsKKyAgICAv
LyAxNi1ieXRlIGFhZ3VpZAorICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwKKyAgICAvLyAyLWJ5dGUgbGVuZ3RoCisgICAgMHgwMCwgMHg0MCwKKyAgICAvLyA2
NC1ieXRlIGtleSBoYW5kbGUKKyAgICAweDNFLCAweEJELCAweDg5LCAweEJGLCAweDc3LCAweEVD
LCAweDUwLCAweDk3LCAweDU1LCAweEVFLCAweDlDLCAweDI2LAorICAgIDB4MzUsIDB4RUYsIDB4
QUEsIDB4QUMsIDB4N0IsIDB4MkIsIDB4OUMsIDB4NUMsIDB4RUYsIDB4MTcsIDB4MzYsIDB4QzMs
CisgICAgMHg3MSwgMHg3RCwgMHhBNCwgMHg4NSwgMHgzNCwgMHhDOCwgMHhDNiwgMHhCNiwgMHg1
NCwgMHhENywgMHhGRiwgMHg5NCwKKyAgICAweDVGLCAweDUwLCAweEI1LCAweENDLCAweDRFLCAw
eDc4LCAweDA1LCAweDVCLCAweERELCAweDM5LCAweDZCLCAweDY0LAorICAgIDB4RjcsIDB4OEQs
IDB4QTIsIDB4QzUsIDB4RjksIDB4NjIsIDB4MDAsIDB4Q0MsIDB4RDQsIDB4MTUsIDB4Q0QsIDB4
MDgsCisgICAgMHhGRSwgMHg0MiwgMHgwMCwgMHgzOCwKK307CisKKy8vIFRoZSBhdXRoZW50aWNh
dG9yIGRhdGEsIGV4Y2x1ZGluZyB0aGUgYXR0ZXN0ZWQgY3JlZGVudGlhbCBkYXRhIGJ5dGVzLiBB
cHBlbmQKKy8vIHdpdGggYXR0ZXN0ZWQgY3JlZGVudGlhbCBkYXRhIHRvIGdldCB0aGUgY29tcGxl
dGUgYXV0aGVudGljYXRvciBkYXRhLgorY29uc3RleHByIHVpbnQ4X3Qga1Rlc3RBdXRoZW50aWNh
dG9yRGF0YVByZWZpeFtdID0geworICAgIC8vIHNoYTI1NiBoYXNoIG9mIHJwIGlkLgorICAgIDB4
MTEsIDB4OTQsIDB4MjIsIDB4OEQsIDB4QTgsIDB4RkQsIDB4QkQsIDB4RUUsIDB4RkQsIDB4MjYs
IDB4MUIsIDB4RDcsCisgICAgMHhCNiwgMHg1OSwgMHg1QywgMHhGRCwgMHg3MCwgMHhBNSwgMHgw
RCwgMHg3MCwgMHhDNiwgMHg0MCwgMHg3QiwgMHhDRiwKKyAgICAweDAxLCAweDNELCAweEU5LCAw
eDZELCAweDRFLCAweEZCLCAweDE3LCAweERFLAorICAgIC8vIGZsYWdzIChUVVAgYW5kIEFUIGJp
dHMgc2V0KQorICAgIDB4NDEsCisgICAgLy8gY291bnRlcgorICAgIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAKK307CisKKy8vIENvbXBvbmVudHMgb2YgdGhlIENCT1IgbmVlZGVkIHRvIGZvcm0gYW4g
YXV0aGVudGljYXRvciBvYmplY3QuCisvLyBDb21iaW5lZCBkaWFnbm9zdGljIG5vdGF0aW9uOgor
Ly8geyJmbXQiOiAiZmlkby11MmYiLCAiYXR0U3RtdCI6IHsic2lnIjogaCczMC4uLn0sICJhdXRo
RGF0YSI6IGgnRDRDOUQ5Li4uJ30KK2NvbnN0ZXhwciB1aW50OF90IGtGb3JtYXRGaWRvVTJmQ0JP
UltdID0geworICAgIC8vIG1hcCgzKQorICAgIDB4QTMsCisgICAgLy8gdGV4dCgzKQorICAgIDB4
NjMsCisgICAgLy8gImZtdCIKKyAgICAweDY2LCAweDZELCAweDc0LAorICAgIC8vIHRleHQoOCkK
KyAgICAweDY4LAorICAgIC8vICJmaWRvLXUyZiIKKyAgICAweDY2LCAweDY5LCAweDY0LCAweDZG
LCAweDJELCAweDc1LCAweDMyLCAweDY2Cit9OworCitjb25zdGV4cHIgdWludDhfdCBrQXR0U3Rt
dENCT1JbXSA9IHsKKyAgICAvLyB0ZXh0KDcpCisgICAgMHg2NywKKyAgICAvLyAiYXR0U3RtdCIK
KyAgICAweDYxLCAweDc0LCAweDc0LCAweDUzLCAweDc0LCAweDZELCAweDc0Cit9OworCitjb25z
dGV4cHIgdWludDhfdCBrQXV0aERhdGFDQk9SW10gPSB7CisgICAgLy8gdGV4dCg4KQorICAgIDB4
NjgsCisgICAgLy8gImF1dGhEYXRhIgorICAgIDB4NjEsIDB4NzUsIDB4NzQsIDB4NjgsIDB4NDQs
IDB4NjEsIDB4NzQsIDB4NjEsCisgICAgLy8gYnl0ZXMoMTk2KS4gaS5lLiwgdGhlIGF1dGhlbnRp
Y2F0b3JfZGF0YSBieXRlIGFycmF5IGNvcnJlc3BvbmRpbmcgdG8KKyAgICAvLyBrVGVzdEF1dGhl
bnRpY2F0b3JEYXRhUHJlZml4fCwgfGtUZXN0QXR0ZXN0ZWRDcmVkZW50aWFsRGF0YVByZWZpeHws
CisgICAgLy8gYW5kIHRlc3RfZGF0YTo6a1Rlc3RFQ1B1YmxpY0tleUNPU0UuCisgICAgMHg1OCwg
MHhDNAorfTsKKwogY29uc3RleHByIHVpbnQ4X3Qga1Rlc3REZXZpY2VBYWd1aWRbXSA9IHsKICAg
ICAweEY4LCAweEEwLCAweDExLCAweEYzLCAweDhDLCAweDBBLCAweDRELCAweDE1LCAweDgwLCAw
eDA2LCAweDE3LCAweDExLCAweDFGLCAweDlFLCAweERDLCAweDdECiB9OwogCitWZWN0b3I8dWlu
dDhfdD4gZ2V0VGVzdEF0dGVzdGVkQ3JlZGVudGlhbERhdGFCeXRlcygpCit7CisgICAgLy8gQ29t
YmluZSBrVGVzdEF0dGVzdGVkQ3JlZGVudGlhbERhdGFQcmVmaXggYW5kIGtUZXN0RUNQdWJsaWNL
ZXlDT1NFLgorICAgIGF1dG8gdGVzdEF0dGVzdGVkRGF0YSA9IGNvbnZlcnRCeXRlc1RvVmVjdG9y
KGtUZXN0QXR0ZXN0ZWRDcmVkZW50aWFsRGF0YVByZWZpeCwgc2l6ZW9mKGtUZXN0QXR0ZXN0ZWRD
cmVkZW50aWFsRGF0YVByZWZpeCkpOworICAgIHRlc3RBdHRlc3RlZERhdGEuYXBwZW5kKFRlc3RE
YXRhOjprVGVzdEVDUHVibGljS2V5Q09TRSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdEVDUHVibGlj
S2V5Q09TRSkpOworICAgIHJldHVybiB0ZXN0QXR0ZXN0ZWREYXRhOworfQorCitWZWN0b3I8dWlu
dDhfdD4gZ2V0VGVzdEF1dGhlbnRpY2F0b3JEYXRhQnl0ZXMoKQoreworICAgIC8vIEJ1aWxkIHRo
ZSB0ZXN0IGF1dGhlbnRpY2F0b3IgZGF0YS4KKyAgICBhdXRvIHRlc3RBdXRoZW50aWNhdG9yRGF0
YSA9IGNvbnZlcnRCeXRlc1RvVmVjdG9yKGtUZXN0QXV0aGVudGljYXRvckRhdGFQcmVmaXgsIHNp
emVvZihrVGVzdEF1dGhlbnRpY2F0b3JEYXRhUHJlZml4KSk7CisgICAgYXV0byB0ZXN0QXR0ZXN0
ZWREYXRhID0gZ2V0VGVzdEF0dGVzdGVkQ3JlZGVudGlhbERhdGFCeXRlcygpOworICAgIHRlc3RB
dXRoZW50aWNhdG9yRGF0YS5hcHBlbmRWZWN0b3IodGVzdEF0dGVzdGVkRGF0YSk7CisgICAgcmV0
dXJuIHRlc3RBdXRoZW50aWNhdG9yRGF0YTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGdldFRlc3RB
dHRlc3RhdGlvbk9iamVjdEJ5dGVzKCkKK3sKKyAgICBhdXRvIHRlc3RBdXRoZW50aWNhdG9yT2Jq
ZWN0ID0gY29udmVydEJ5dGVzVG9WZWN0b3Ioa0Zvcm1hdEZpZG9VMmZDQk9SLCBzaXplb2Yoa0Zv
cm1hdEZpZG9VMmZDQk9SKSk7CisgICAgdGVzdEF1dGhlbnRpY2F0b3JPYmplY3QuYXBwZW5kKGtB
dHRTdG10Q0JPUiwgc2l6ZW9mKGtBdHRTdG10Q0JPUikpOworICAgIHRlc3RBdXRoZW50aWNhdG9y
T2JqZWN0LmFwcGVuZChUZXN0RGF0YTo6a1UyZkF0dGVzdGF0aW9uU3RhdGVtZW50Q0JPUiwgc2l6
ZW9mKFRlc3REYXRhOjprVTJmQXR0ZXN0YXRpb25TdGF0ZW1lbnRDQk9SKSk7CisgICAgdGVzdEF1
dGhlbnRpY2F0b3JPYmplY3QuYXBwZW5kKGtBdXRoRGF0YUNCT1IsIHNpemVvZihrQXV0aERhdGFD
Qk9SKSk7CisgICAgYXV0byB0ZXN0QXV0aGVudGljYXRvckRhdGEgPSBnZXRUZXN0QXV0aGVudGlj
YXRvckRhdGFCeXRlcygpOworICAgIHRlc3RBdXRoZW50aWNhdG9yT2JqZWN0LmFwcGVuZFZlY3Rv
cih0ZXN0QXV0aGVudGljYXRvckRhdGEpOworICAgIHJldHVybiB0ZXN0QXV0aGVudGljYXRvck9i
amVjdDsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGdldFRlc3RTaWduUmVzcG9uc2UoKQoreworICAg
IHJldHVybiBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RVMmZTaWduUmVzcG9u
c2UsIHNpemVvZihUZXN0RGF0YTo6a1Rlc3RVMmZTaWduUmVzcG9uc2UpKTsKK30KKwogLy8gR2V0
IGEgc3Vic2V0IG9mIHRoZSByZXNwb25zZSBmb3IgdGVzdGluZyBlcnJvciBoYW5kbGluZy4KIFZl
Y3Rvcjx1aW50OF90PiBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3BvbnNlKHNpemVfdCBsZW5ndGgp
CiB7CkBAIC0yMzksMTEgKzMzOSwxMyBAQCBWZWN0b3I8dWludDhfdD4gZ2V0VGVzdENyZWRlbnRp
YWxSYXdJZEJ5dGVzKCkKICAgICByZXR1cm4gdGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzOwogfQog
Ci1WZWN0b3I8dWludDhfdD4gY29udmVydFRvVmVjdG9yKGNvbnN0IHVpbnQ4X3QgYnl0ZUFycmF5
W10sIGNvbnN0IHNpemVfdCBsZW5ndGgpCisvLyBSZXR1cm4gYSBtYWxmb3JtZWQgVTJmUmVnaXN0
ZXJSZXNwb25zZS4KK1ZlY3Rvcjx1aW50OF90PiBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShz
aXplX3QgcHJlZml4U2l6ZSwgY29uc3QgdWludDhfdCBhcHBlbmRpeFtdLCBzaXplX3QgYXBwZW5k
aXhTaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICByZXN1bHQuYXBwZW5kKGJ5dGVBcnJheSwg
bGVuZ3RoKTsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwcmVmaXhTaXplICsg
YXBwZW5kaXhTaXplKTsKKyAgICByZXN1bHQuYXBwZW5kKFRlc3REYXRhOjprVGVzdFUyZlJlZ2lz
dGVyUmVzcG9uc2UsIHByZWZpeFNpemUpOworICAgIHJlc3VsdC5hcHBlbmQoYXBwZW5kaXgsIGFw
cGVuZGl4U2l6ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjUxLDkgKzM1Myw5IEBA
IFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0VG9WZWN0b3IoY29uc3QgdWludDhfdCBieXRlQXJyYXlb
XSwgY29uc3Qgc2l6ZV90IGxlbmd0aCkKIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjY29tbWFuZHMKIFRFU1QoQ1RBUFJlc3BvbnNlVGVz
dCwgVGVzdFJlYWRNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKQogewotICAgIGF1dG8gbWFrZUNyZWRl
bnRpYWxSZXNwb25zZSA9IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb252ZXJ0VG9W
ZWN0b3IoVGVzdERhdGE6OmtUZXN0TWFrZUNyZWRlbnRpYWxSZXNwb25zZSwgc2l6ZW9mKFRlc3RE
YXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9uc2UpKSk7CisgICAgYXV0byBtYWtlQ3JlZGVu
dGlhbFJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKGNvbnZlcnRCeXRl
c1RvVmVjdG9yKFRlc3REYXRhOjprVGVzdE1ha2VDcmVkZW50aWFsUmVzcG9uc2UsIHNpemVvZihU
ZXN0RGF0YTo6a1Rlc3RNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKSkpOwogICAgIEFTU0VSVF9UUlVF
KG1ha2VDcmVkZW50aWFsUmVzcG9uc2UpOwotICAgIGF1dG8gY2JvckF0dGVzdGF0aW9uT2JqZWN0
ID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChjb252ZXJ0VG9WZWN0b3IocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4obWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRpb25PYmplY3QtPmRh
dGEoKSksIG1ha2VDcmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVu
Z3RoKCkpKTsKKyAgICBhdXRvIGNib3JBdHRlc3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JSZWFk
ZXI6OnJlYWQoY29udmVydEJ5dGVzVG9WZWN0b3IocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
bWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+YXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSksIG1ha2VD
cmVkZW50aWFsUmVzcG9uc2UtPmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCkpKTsKICAg
ICBBU1NFUlRfVFJVRShjYm9yQXR0ZXN0YXRpb25PYmplY3QpOwogICAgIEFTU0VSVF9UUlVFKGNi
b3JBdHRlc3RhdGlvbk9iamVjdC0+aXNNYXAoKSk7CiAKQEAgLTI2Niw3ICszNjgsNyBAQCBURVNU
KENUQVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkTWFrZUNyZWRlbnRpYWxSZXNwb25zZSkKICAgICBp
dCA9IGF0dGVzdGF0aW9uT2JqZWN0TWFwLmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKGtBdXRoRGF0YUtl
eSkpOwogICAgIEFTU0VSVF9UUlVFKGl0ICE9IGF0dGVzdGF0aW9uT2JqZWN0TWFwLmVuZCgpKTsK
ICAgICBBU1NFUlRfVFJVRShpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKTsKLSAgICBFWFBFQ1Rf
RVEoaXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCksIGNvbnZlcnRUb1ZlY3RvcihUZXN0RGF0YTo6
a0N0YXAyTWFrZUNyZWRlbnRpYWxBdXRoRGF0YSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJNYWtl
Q3JlZGVudGlhbEF1dGhEYXRhKSkpOworICAgIEVYUEVDVF9FUShpdC0+c2Vjb25kLmdldEJ5dGVT
dHJpbmcoKSwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVkZW50
aWFsQXV0aERhdGEsIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxBdXRoRGF0
YSkpKTsKIAogICAgIGl0ID0gYXR0ZXN0YXRpb25PYmplY3RNYXAuZmluZChjYm9yOjpDQk9SVmFs
dWUoa0F0dGVzdGF0aW9uU3RhdGVtZW50S2V5KSk7CiAgICAgQVNTRVJUX1RSVUUoaXQgIT0gYXR0
ZXN0YXRpb25PYmplY3RNYXAuZW5kKCkpOwpAQCAtMjgyLDcgKzM4NCw3IEBAIFRFU1QoQ1RBUFJl
c3BvbnNlVGVzdCwgVGVzdFJlYWRNYWtlQ3JlZGVudGlhbFJlc3BvbnNlKQogICAgIGF0dFN0bXRJ
dCA9IGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwLmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJzaWciKSk7
CiAgICAgQVNTRVJUX1RSVUUoYXR0U3RtdEl0ICE9IGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwLmVu
ZCgpKTsKICAgICBBU1NFUlRfVFJVRShhdHRTdG10SXQtPnNlY29uZC5pc0J5dGVTdHJpbmcoKSk7
Ci0gICAgRVhQRUNUX0VRKGF0dFN0bXRJdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKSwgY29udmVy
dFRvVmVjdG9yKFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbFNpZ25hdHVyZSwgc2l6ZW9m
KFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbFNpZ25hdHVyZSkpKTsKKyAgICBFWFBFQ1Rf
RVEoYXR0U3RtdEl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxTaWduYXR1cmUsIHNpemVvZihUZXN0RGF0
YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxTaWduYXR1cmUpKSk7CiAKICAgICBhdHRTdG10SXQgPSBh
dHRlc3RhdGlvblN0YXRlbWVudE1hcC5maW5kKGNib3I6OkNCT1JWYWx1ZSgieDVjIikpOwogICAg
IEFTU0VSVF9UUlVFKGF0dFN0bXRJdCAhPSBhdHRlc3RhdGlvblN0YXRlbWVudE1hcC5lbmQoKSk7
CkBAIC0yOTAsNyArMzkyLDcgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UmVhZE1ha2VD
cmVkZW50aWFsUmVzcG9uc2UpCiAgICAgQVNTRVJUX1RSVUUoY2VydGlmaWNhdGUuaXNBcnJheSgp
KTsKICAgICBBU1NFUlRfRVEoY2VydGlmaWNhdGUuZ2V0QXJyYXkoKS5zaXplKCksIDF1KTsKICAg
ICBBU1NFUlRfVFJVRShjZXJ0aWZpY2F0ZS5nZXRBcnJheSgpWzBdLmlzQnl0ZVN0cmluZygpKTsK
LSAgICBFWFBFQ1RfRVEoY2VydGlmaWNhdGUuZ2V0QXJyYXkoKVswXS5nZXRCeXRlU3RyaW5nKCks
IGNvbnZlcnRUb1ZlY3RvcihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxDZXJ0aWZpY2F0
ZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbENlcnRpZmljYXRlKSkpOwor
ICAgIEVYUEVDVF9FUShjZXJ0aWZpY2F0ZS5nZXRBcnJheSgpWzBdLmdldEJ5dGVTdHJpbmcoKSwg
Y29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVkZW50aWFsQ2VydGlm
aWNhdGUsIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyTWFrZUNyZWRlbnRpYWxDZXJ0aWZpY2F0ZSkp
KTsKICAgICBFWFBFQ1RfRVEobWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+cmF3SWQtPmJ5dGVMZW5n
dGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJNYWtlQ3JlZGVudGlhbENyZWRlbnRpYWxJZCkp
OwogICAgIEVYUEVDVF9FUShtZW1jbXAobWFrZUNyZWRlbnRpYWxSZXNwb25zZS0+cmF3SWQtPmRh
dGEoKSwgVGVzdERhdGE6OmtDdGFwMk1ha2VDcmVkZW50aWFsQ3JlZGVudGlhbElkLCBzaXplb2Yo
VGVzdERhdGE6OmtDdGFwMk1ha2VDcmVkZW50aWFsQ3JlZGVudGlhbElkKSksIDApOwogfQpAQCAt
Mjk5LDcgKzQwMSw3IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRNYWtlQ3JlZGVu
dGlhbFJlc3BvbnNlKQogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIu
MC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAt
cHMtMjAxNzA5MjcuaHRtbAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UmVhZEdldEFzc2Vy
dGlvblJlc3BvbnNlKQogewotICAgIGF1dG8gZ2V0QXNzZXJ0aW9uUmVzcG9uc2UgPSByZWFkQ1RB
UEdldEFzc2VydGlvblJlc3BvbnNlKGNvbnZlcnRUb1ZlY3RvcihUZXN0RGF0YTo6a0RldmljZUdl
dEFzc2VydGlvblJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtEZXZpY2VHZXRBc3NlcnRpb25S
ZXNwb25zZSkpKTsKKyAgICBhdXRvIGdldEFzc2VydGlvblJlc3BvbnNlID0gcmVhZENUQVBHZXRB
c3NlcnRpb25SZXNwb25zZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0RldmljZUdl
dEFzc2VydGlvblJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtEZXZpY2VHZXRBc3NlcnRpb25S
ZXNwb25zZSkpKTsKICAgICBBU1NFUlRfVFJVRShnZXRBc3NlcnRpb25SZXNwb25zZSk7CiAKICAg
ICBFWFBFQ1RfRVEoZ2V0QXNzZXJ0aW9uUmVzcG9uc2UtPmF1dGhlbnRpY2F0b3JEYXRhLT5ieXRl
TGVuZ3RoKCksIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyR2V0QXNzZXJ0aW9uQXV0aERhdGEpKTsK
QEAgLTMwOCw5ICs0MTAsMTU2IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRHZXRB
c3NlcnRpb25SZXNwb25zZSkKICAgICBFWFBFQ1RfRVEobWVtY21wKGdldEFzc2VydGlvblJlc3Bv
bnNlLT5zaWduYXR1cmUtPmRhdGEoKSwgVGVzdERhdGE6OmtDdGFwMkdldEFzc2VydGlvblNpZ25h
dHVyZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJHZXRBc3NlcnRpb25TaWduYXR1cmUpKSwgMCk7
CiB9CiAKKy8vIFRlc3QgdGhhdCBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UgaXMgcHJvcGVybHkgcGFy
c2VkLgorVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VSZWdpc3RlclJlc3BvbnNlRGF0
YSkKK3sKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERh
dGE6OmtSZWx5aW5nUGFydHlJZCwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtUZXN0
VTJmUmVnaXN0ZXJSZXNwb25zZSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdFUyZlJlZ2lzdGVyUmVz
cG9uc2UpKSk7CisgICAgQVNTRVJUX1RSVUUocmVzcG9uc2UpOworICAgIEVYUEVDVF9FUShyZXNw
b25zZS0+cmF3SWQtPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhh
bmRsZSkpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzcG9uc2UtPnJhd0lkLT5kYXRhKCksIFRl
c3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhh
bmRsZSkpLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShyZXNwb25zZS0+aXNBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZSk7CisgICAgYXV0byBleHBlY3RlZEF0dGVzdGF0aW9uT2JqZWN0ID0g
Z2V0VGVzdEF0dGVzdGF0aW9uT2JqZWN0Qnl0ZXMoKTsKKyAgICBFWFBFQ1RfRVEocmVzcG9uc2Ut
PmF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCksIGV4cGVjdGVkQXR0ZXN0YXRpb25PYmpl
Y3Quc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3BvbnNlLT5hdHRlc3RhdGlvbk9i
amVjdC0+ZGF0YSgpLCBleHBlY3RlZEF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgZXhwZWN0ZWRB
dHRlc3RhdGlvbk9iamVjdC5zaXplKCkpLCAwKTsKK30KKworLy8gVGVzdCBtYWxmb3JtZWQgdXNl
ciBwdWJsaWMga2V5LgorVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VJbmNvcnJlY3RS
ZWdpc3RlclJlc3BvbnNlRGF0YTEpCit7CisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YTFbXSA9
IHsgMHgwNSB9OworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShU
ZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcih0ZXN0RGF0YTEs
IHNpemVvZih0ZXN0RGF0YTEpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKKworICAg
IGNvbnN0IHVpbnQ4X3QgdGVzdERhdGEyW10gPSB7IDB4MDUsIDB4MDAgfTsKKyAgICByZXNwb25z
ZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGNv
bnZlcnRCeXRlc1RvVmVjdG9yKHRlc3REYXRhMiwgc2l6ZW9mKHRlc3REYXRhMikpKTsKKyAgICBF
WFBFQ1RfRkFMU0UocmVzcG9uc2UpOworCisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YTNbXSA9
IHsgMHgwNSwgMHgwNCwgMHgwMCB9OworICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVz
cG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgY29udmVydEJ5dGVzVG9WZWN0b3IodGVz
dERhdGEzLCBzaXplb2YodGVzdERhdGEzKSkpOworICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7
Cit9CisKKy8vIFRlc3QgbWFsZm9ybWVkIGtleSBoYW5kbGUuCitURVNUKENUQVBSZXNwb25zZVRl
c3QsIFRlc3RQYXJzZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhMikKK3sKKyAgICBhdXRv
IHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFy
dHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2Uoa1UyZktleUhhbmRsZUxlbmd0aE9mZnNl
dCwgbnVsbHB0ciwgMCkpOworICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CisKKyAgICBjb25z
dCB1aW50OF90IHRlc3REYXRhW10gPSB7IDB4NDAgfTsKKyAgICByZXNwb25zZSA9IHJlYWRVMmZS
ZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RVMmZSZWdp
c3RlclJlc3BvbnNlKGtVMmZLZXlIYW5kbGVMZW5ndGhPZmZzZXQsIHRlc3REYXRhLCBzaXplb2Yo
dGVzdERhdGEpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKK30KKworLy8gVGVzdCBt
YWxmb3JtZWQgWC41MDkuCitURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZUluY29ycmVj
dFJlZ2lzdGVyUmVzcG9uc2VEYXRhMykKK3sKKyAgICBjb25zdCBhdXRvIHByZWZpeCA9IGtVMmZL
ZXlIYW5kbGVPZmZzZXQgKyA2NDsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVy
UmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVz
cG9uc2UocHJlZml4LCBudWxscHRyLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsK
KworICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGExW10gPSB7IDB4NDAgfTsKKyAgICByZXNwb25z
ZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdl
dFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgdGVzdERhdGExLCBzaXplb2YodGVzdERh
dGExKSkpOworICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CisKKyAgICBjb25zdCB1aW50OF90
IHRlc3REYXRhMltdID0geyAweDMwIH07CisgICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJS
ZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNw
b25zZShwcmVmaXgsIHRlc3REYXRhMiwgc2l6ZW9mKHRlc3REYXRhMikpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UocmVzcG9uc2UpOworCisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YTNbXSA9IHsgMHgz
MCwgMHg4MiB9OworICAgIHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERh
dGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4LCB0
ZXN0RGF0YTMsIHNpemVvZih0ZXN0RGF0YTMpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNl
KTsKKworICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGE0W10gPSB7IDB4MzAsIDB4QzEgfTsKKyAg
ICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1Bh
cnR5SWQsIGdldFRlc3RVMmZSZWdpc3RlclJlc3BvbnNlKHByZWZpeCwgdGVzdERhdGE0LCBzaXpl
b2YodGVzdERhdGE0KSkpOworICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CisKKyAgICBjb25z
dCB1aW50OF90IHRlc3REYXRhNVtdID0geyAweDMwLCAweDgyLCAweDAyLCAweDRBIH07CisgICAg
cmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0
eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZShwcmVmaXgsIHRlc3REYXRhNSwgc2l6ZW9m
KHRlc3REYXRhNSkpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOworfQorCisvLyBUZXN0
IG1hbGZvcm1lZCBzaWduYXR1cmUuCitURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZUlu
Y29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhNCkKK3sKKyAgICBjb25zdCBhdXRvIHByZWZpeCA9
IHNpemVvZihUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlKTsKKyAgICBhdXRvIHJl
c3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJ
ZCwgZ2V0VGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UocHJlZml4IC0gNzEsIG51bGxwdHIsIDApKTsK
KyAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOworCisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0
YVtdID0geyAweDQwLCAweDQwLCAweDQwIH07CisgICAgcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0
ZXJSZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0VTJmUmVnaXN0ZXJS
ZXNwb25zZShwcmVmaXgsIHRlc3REYXRhLCBzaXplb2YodGVzdERhdGEpKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHJlc3BvbnNlKTsKK30KKworLy8gVGVzdCBtYWxmb3JtZWQgWC41MDkgYnV0IHBhc3Mu
CitURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9u
c2VEYXRhNSkKK3sKKyAgICBjb25zdCBhdXRvIHByZWZpeCA9IGtVMmZLZXlIYW5kbGVPZmZzZXQg
KyA2NDsKKyAgICBjb25zdCBhdXRvIHNpZ25hdHVyZVNpemUgPSA3MTsKKyAgICBjb25zdCBhdXRv
IHN1ZmZpeCA9IHNpemVvZihUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlKSAtIHNp
Z25hdHVyZVNpemU7CisKKyAgICBWZWN0b3I8dWludDhfdD4gdGVzdERhdGExOworICAgIHRlc3RE
YXRhMS5hcHBlbmQoVGVzdERhdGE6OmtUZXN0VTJmUmVnaXN0ZXJSZXNwb25zZSwgcHJlZml4KTsK
KyAgICB0ZXN0RGF0YTEuYXBwZW5kKDB4MzApOworICAgIHRlc3REYXRhMS5hcHBlbmQoMHgwMSk7
CisgICAgdGVzdERhdGExLmFwcGVuZCgweDAwKTsKKyAgICB0ZXN0RGF0YTEuYXBwZW5kKFRlc3RE
YXRhOjprVGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UgKyBzdWZmaXgsIHNpZ25hdHVyZVNpemUpOwor
ICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShUZXN0RGF0YTo6a1Jl
bHlpbmdQYXJ0eUlkLCB0ZXN0RGF0YTEpOworICAgIEVYUEVDVF9UUlVFKHJlc3BvbnNlKTsKKwor
ICAgIFZlY3Rvcjx1aW50OF90PiB0ZXN0RGF0YTI7CisgICAgdGVzdERhdGEyLmFwcGVuZChUZXN0
RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlLCBwcmVmaXgpOworICAgIHRlc3REYXRhMi5h
cHBlbmQoMHgzMCk7CisgICAgdGVzdERhdGEyLmFwcGVuZCgweDgxKTsKKyAgICB0ZXN0RGF0YTIu
YXBwZW5kKDB4MDEpOworICAgIHRlc3REYXRhMi5hcHBlbmQoMHgwMCk7CisgICAgdGVzdERhdGEy
LmFwcGVuZChUZXN0RGF0YTo6a1Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlICsgc3VmZml4LCBzaWdu
YXR1cmVTaXplKTsKKyAgICByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJlc3BvbnNlKFRlc3RE
YXRhOjprUmVseWluZ1BhcnR5SWQsIHRlc3REYXRhMik7CisgICAgRVhQRUNUX1RSVUUocmVzcG9u
c2UpOworfQorCisvLyBUZXN0cyB0aGF0IFUyRiBhdXRoZW50aWNhdG9yIGRhdGEgaXMgcHJvcGVy
bHkgc2VyaWFsaXplZC4KK1RFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlU2lnblJlc3Bv
bnNlRGF0YSkKK3sKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZEZyb21VMmZTaWduUmVzcG9uc2Uo
VGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCks
IGdldFRlc3RTaWduUmVzcG9uc2UoKSk7CisgICAgQVNTRVJUX1RSVUUocmVzcG9uc2UpOworICAg
IEVYUEVDVF9FUShyZXNwb25zZS0+cmF3SWQtPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRh
OjprVTJmU2lnbktleUhhbmRsZSkpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzcG9uc2UtPnJh
d0lkLT5kYXRhKCksIFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRh
OjprVTJmU2lnbktleUhhbmRsZSkpLCAwKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UtPmlz
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOworICAgIEVYUEVDVF9FUShyZXNwb25z
ZS0+YXV0aGVudGljYXRvckRhdGEtPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprVGVz
dFNpZ25BdXRoZW50aWNhdG9yRGF0YSkpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzcG9uc2Ut
PmF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCksIFRlc3REYXRhOjprVGVzdFNpZ25BdXRoZW50aWNh
dG9yRGF0YSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdFNpZ25BdXRoZW50aWNhdG9yRGF0YSkpLCAw
KTsKKyAgICBFWFBFQ1RfRVEocmVzcG9uc2UtPnNpZ25hdHVyZS0+Ynl0ZUxlbmd0aCgpLCBzaXpl
b2YoVGVzdERhdGE6OmtVMmZTaWduYXR1cmUpKTsKKyAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3Bv
bnNlLT5zaWduYXR1cmUtPmRhdGEoKSwgVGVzdERhdGE6OmtVMmZTaWduYXR1cmUsIHNpemVvZihU
ZXN0RGF0YTo6a1UyZlNpZ25hdHVyZSkpLCAwKTsKK30KKworVEVTVChDVEFQUmVzcG9uc2VUZXN0
LCBUZXN0UGFyc2VVMmZTaWduV2l0aE51bGxLZXlIYW5kbGUpCit7CisgICAgYXV0byByZXNwb25z
ZSA9IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIFZl
Y3Rvcjx1aW50OF90PigpLCBnZXRUZXN0U2lnblJlc3BvbnNlKCkpOworICAgIEVYUEVDVF9GQUxT
RShyZXNwb25zZSk7Cit9CisKK1RFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlVTJmU2ln
bldpdGhOdWxsUmVzcG9uc2UpCit7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2ln
blJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3
SWRCeXRlcygpLCBWZWN0b3I8dWludDhfdD4oKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNl
KTsKK30KKworVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0aENvcnJ1
cHRlZENvdW50ZXIpCit7CisgICAgLy8gQSBzaWduIHJlc3BvbnNlIG9mIGxlc3MgdGhhbiA1IGJ5
dGVzLgorICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkRnJvbVUyZlNpZ25SZXNwb25zZShUZXN0RGF0
YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0VGVz
dENvcnJ1cHRlZFNpZ25SZXNwb25zZSgzKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsK
K30KKworVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0aENvcnJ1cHRl
ZFNpZ25hdHVyZSkKK3sKKyAgICAvLyBBIHNpZ24gcmVzcG9uc2Ugbm8gbW9yZSB0aGFuIDUgYnl0
ZXMuCisgICAgYXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRh
OjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0
Q29ycnVwdGVkU2lnblJlc3BvbnNlKDUpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwor
fQorCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RSZWFkR2V0SW5mb1Jlc3BvbnNlKQogewot
ICAgIGF1dG8gZ2V0SW5mb1Jlc3BvbnNlID0gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29udmVy
dFRvVmVjdG9yKFRlc3REYXRhOjprVGVzdEdldEluZm9SZXNwb25zZVBsYXRmb3JtRGV2aWNlLCBz
aXplb2YoVGVzdERhdGE6OmtUZXN0R2V0SW5mb1Jlc3BvbnNlUGxhdGZvcm1EZXZpY2UpKSk7Cisg
ICAgYXV0byBnZXRJbmZvUmVzcG9uc2UgPSByZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb252ZXJ0
Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Rlc3RHZXRJbmZvUmVzcG9uc2VQbGF0Zm9ybURldmlj
ZSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdEdldEluZm9SZXNwb25zZVBsYXRmb3JtRGV2aWNlKSkp
OwogICAgIEFTU0VSVF9UUlVFKGdldEluZm9SZXNwb25zZSk7CiAgICAgQVNTRVJUX1RSVUUoZ2V0
SW5mb1Jlc3BvbnNlLT5tYXhNc2dTaXplKCkpOwogICAgIEVYUEVDVF9FUSgqZ2V0SW5mb1Jlc3Bv
bnNlLT5tYXhNc2dTaXplKCksIDEyMDB1KTsKQEAgLTMyNSwxNCArNTc0LDE0IEBAIFRFU1QoQ1RB
UFJlc3BvbnNlVGVzdCwgVGVzdFJlYWRHZXRJbmZvUmVzcG9uc2UpCiAKIFRFU1QoQ1RBUFJlc3Bv
bnNlVGVzdCwgVGVzdFJlYWRHZXRJbmZvUmVzcG9uc2VXaXRoSW5jb3JyZWN0Rm9ybWF0KQogewot
ICAgIEVYUEVDVF9GQUxTRShyZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb252ZXJ0VG9WZWN0b3Io
a1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aE5vVmVyc2lvbiwgc2l6ZW9mKGtU
ZXN0QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZVdpdGhOb1ZlcnNpb24pKSkpOwotICAgIEVY
UEVDVF9GQUxTRShyZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb252ZXJ0VG9WZWN0b3Ioa1Rlc3RB
dXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aER1cGxpY2F0ZVZlcnNpb24sIHNpemVvZihr
VGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VXaXRoRHVwbGljYXRlVmVyc2lvbikpKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnZlcnRUb1ZlY3Rv
cihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VXaXRoSW5jb3JyZWN0QWFndWlkLCBz
aXplb2Yoa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aEluY29ycmVjdEFhZ3Vp
ZCkpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnZlcnRC
eXRlc1RvVmVjdG9yKGtUZXN0QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZVdpdGhOb1ZlcnNp
b24sIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VXaXRoTm9WZXJzaW9u
KSkpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29udmVydEJ5
dGVzVG9WZWN0b3Ioa1Rlc3RBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlV2l0aER1cGxpY2F0
ZVZlcnNpb24sIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2VXaXRoRHVw
bGljYXRlVmVyc2lvbikpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlYWRDVEFQR2V0SW5mb1Jlc3Bv
bnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKGtUZXN0QXV0aGVudGljYXRvckdldEluZm9SZXNwb25z
ZVdpdGhJbmNvcnJlY3RBYWd1aWQsIHNpemVvZihrVGVzdEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVz
cG9uc2VXaXRoSW5jb3JyZWN0QWFndWlkKSkpKTsKIH0KIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0
LCBUZXN0U2VyaWFsaXplR2V0SW5mb1Jlc3BvbnNlKQogewotICAgIEF1dGhlbnRpY2F0b3JHZXRJ
bmZvUmVzcG9uc2UgcmVzcG9uc2UoeyBQcm90b2NvbFZlcnNpb246OmtDdGFwLCBQcm90b2NvbFZl
cnNpb246OmtVMmYgfSwgY29udmVydFRvVmVjdG9yKGtUZXN0RGV2aWNlQWFndWlkLCBzaXplb2Yo
a1Rlc3REZXZpY2VBYWd1aWQpKSk7CisgICAgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSBy
ZXNwb25zZSh7IFByb3RvY29sVmVyc2lvbjo6a0N0YXAsIFByb3RvY29sVmVyc2lvbjo6a1UyZiB9
LCBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihrVGVzdERldmljZUFhZ3VpZCwgc2l6ZW9mKGtUZXN0RGV2
aWNlQWFndWlkKSkpOwogICAgIHJlc3BvbnNlLnNldEV4dGVuc2lvbnMoeyAidXZtIiwgImhtYWMt
c2VjcmV0IiB9KTsKICAgICBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9ucyBvcHRpb25zOwog
ICAgIG9wdGlvbnMuc2V0U3VwcG9ydHNSZXNpZGVudEtleSh0cnVlKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaAppbmRleCA2MGQzN2Y1YTdh
OWMwNDY4ZjE5MDk0YjE3OWE2Nzk0MGY3YzQ4ZDFkLi4zOGUwM2M4ODZiNTk2OWFjYWRlYThkM2U1
MDE3MGJjZTI2ZDA3ZDhjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRmlkb1Rlc3REYXRhLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpZG9UZXN0RGF0YS5oCkBAIC00MiwxMCArNDIsMzAgQEAgbmFtZXNwYWNlIFRlc3REYXRh
IHsKIGNvbnN0ZXhwciB1aW50OF90IGtDbGllbnREYXRhSGFzaFtdID0gewogICAgIDB4NjgsIDB4
NzEsIDB4MzQsIDB4OTYsIDB4ODIsIDB4MjIsIDB4ZWMsIDB4MTcsIDB4MjAsIDB4MmUsIDB4NDIs
CiAgICAgMHg1MCwgMHg1ZiwgMHg4ZSwgMHhkMiwgMHhiMSwgMHg2YSwgMHhlMiwgMHgyZiwgMHgx
NiwgMHhiYiwgMHgwNSwKLSAgICAweGI4LCAweDhjLCAweDI1LCAweGRiLCAweDllLCAweDYwLCAw
eDI2LCAweDQ1LCAweGYxLCAweDQxfTsKKyAgICAweGI4LCAweDhjLCAweDI1LCAweGRiLCAweDll
LCAweDYwLCAweDI2LCAweDQ1LCAweGYxLCAweDQxCit9OwogCiBjb25zdGV4cHIgdWludDhfdCBr
VXNlcklkW10gPSB7MHgxMCwgMHg5OCwgMHgyMywgMHg3MiwgMHgzNSwgMHg0MCwgMHg5OCwgMHg3
Mn07CiAKK2NvbnN0ZXhwciBjaGFyIGtSZWx5aW5nUGFydHlJZFtdID0gImFjbWUuY29tIjsKKwor
Y29uc3RleHByIHVpbnQ4X3Qga1UyZlJlZ2lzdGVyQ29tbWFuZEFwZHVbXSA9IHsKKyAgICAvLyBD
TEEsIElOUywgUDEsIFAyIEFQRFUgaW5zdHJ1Y3Rpb25zCisgICAgMHgwMCwgMHgwMSwgMHgwMCwg
MHgwMCwKKyAgICAvLyBEYXRhIGxlbmd0aCBpbiAzIGJ5dGVzIGluIGJpZyBlbmRpYW4gb3JkZXIu
CisgICAgMHgwMCwgMHgwMCwgMHg0MCwKKyAgICAvLyBDaGFsbGVuZ2UgcGFyYW1ldGVyIC0tIHNl
ZSBrQ2xpZW50RGF0YUhhc2gKKyAgICAweDY4LCAweDcxLCAweDM0LCAweDk2LCAweDgyLCAweDIy
LCAweGVjLCAweDE3LCAweDIwLCAweDJlLCAweDQyLAorICAgIDB4NTAsIDB4NWYsIDB4OGUsIDB4
ZDIsIDB4YjEsIDB4NmEsIDB4ZTIsIDB4MmYsIDB4MTYsIDB4YmIsIDB4MDUsCisgICAgMHhiOCwg
MHg4YywgMHgyNSwgMHhkYiwgMHg5ZSwgMHg2MCwgMHgyNiwgMHg0NSwgMHhmMSwgMHg0MSwKKyAg
ICAvLyBBcHBsaWNhdGlvbiBwYXJhbWV0ZXIKKyAgICAweDExLCAweDk0LCAweDIyLCAweDhELCAw
eEE4LCAweEZELCAweEJELCAweEVFLCAweEZELCAweDI2LCAweDFCLCAweEQ3LAorICAgIDB4QjYs
IDB4NTksIDB4NUMsIDB4RkQsIDB4NzAsIDB4QTUsIDB4MEQsIDB4NzAsIDB4QzYsIDB4NDAsIDB4
N0IsIDB4Q0YsCisgICAgMHgwMSwgMHgzRCwgMHhFOSwgMHg2RCwgMHg0RSwgMHhGQiwgMHgxNywg
MHhERSwKKyAgICAvLyBNYXggcmVzcG9uc2UgbGVuZ3RoCisgICAgMHgwMCwgMHgwMCwKK307CisK
IC8vIFNhbXBsZSBVMkYgc2lnbiByZXF1ZXN0IHBhcmFtZXRlcnMgdXNlZCBpbiBleGFtcGxlIDcg
b2YgdGhlIENUQVAgc3BlYy4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRv
LXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12
Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjdXNpbmctdGhlLWN0YXAyLWF1dGhlbnRpY2F0b3JtYWtlY3Jl
ZGVudGlhbC1jb21tYW5kLXdpdGgtY3RhcDEtdTJmLWF1dGhlbnRpY2F0b3JzCiBjb25zdGV4cHIg
dWludDhfdCBrVTJmU2lnbktleUhhbmRsZVtdID0gewpAQCAtNTcsOCArNzcsMTY5IEBAIGNvbnN0
ZXhwciB1aW50OF90IGtVMmZTaWduS2V5SGFuZGxlW10gPSB7CiAgICAgMHhDQywgMHhENCwgMHgx
NSwgMHhDRCwgMHgwOCwgMHhGRSwgMHg0MiwgMHgwMCwgMHgzOCwKIH07CiAKKy8vIFNpZ25lZCBz
aWduYXR1cmUgb2YgYWJvdmUgfGtVMmZTaWduS2V5SGFuZGxlfC4KK2NvbnN0ZXhwciB1aW50OF90
IGtVMmZTaWduYXR1cmVbXSA9IHsKKyAgICAweDMwLCAweDQ0LCAweDAyLCAweDIwLCAweDdCLCAw
eERFLCAweDBBLCAweDUyLCAweEFDLCAweDFGLCAweDRDLCAweDhCLAorICAgIDB4MjcsIDB4RTAs
IDB4MDMsIDB4QTMsIDB4NzAsIDB4Q0QsIDB4NjYsIDB4QTQsIDB4QzcsIDB4MTEsIDB4OEQsIDB4
RDIsCisgICAgMHgyRCwgMHg1NCwgMHg0NywgMHg4MywgMHg1RiwgMHg0NSwgMHhCOSwgMHg5Qywg
MHg2OCwgMHg0MiwgMHgzRiwgMHhGNywKKyAgICAweDAyLCAweDIwLCAweDNDLCAweDUxLCAweDdC
LCAweDQ3LCAweDg3LCAweDdGLCAweDg1LCAweDc4LCAweDJELCAweEUxLAorICAgIDB4MDAsIDB4
ODYsIDB4QTcsIDB4ODMsIDB4RDEsIDB4RTcsIDB4REYsIDB4NEUsIDB4MzYsIDB4MzksIDB4RTcs
IDB4NzEsCisgICAgMHhGNSwgMHhGNiwgMHhBRiwgMHhBMywgMHg1QSwgMHhBRCwgMHg1MywgMHg3
MywgMHg4NSwgMHg4RSwKK307CisKK2NvbnN0ZXhwciB1aW50OF90IGtVMmZTaWduQ29tbWFuZEFw
ZHVbXSA9IHsKKyAgICAvLyBDTEEsIElOUywgUDEsIFAyIEFQRFUgaW5zdHJ1Y3Rpb24gcGFyYW1l
dGVycworICAgIDB4MDAsIDB4MDIsIDB4MDMsIDB4MDAsCisgICAgLy8gRGF0YSBMZW5ndGggKDMg
Ynl0ZXMgaW4gYmlnIGVuZGlhbiBvcmRlcikKKyAgICAweDAwLCAweDAwLCAweDgxLAorICAgIC8v
IENoYWxsZW5nZSBwYXJhbWV0ZXIgLS0gc2VlIGtDbGllbnREYXRhSGFzaAorICAgIDB4NjgsIDB4
NzEsIDB4MzQsIDB4OTYsIDB4ODIsIDB4MjIsIDB4ZWMsIDB4MTcsIDB4MjAsIDB4MmUsIDB4NDIs
CisgICAgMHg1MCwgMHg1ZiwgMHg4ZSwgMHhkMiwgMHhiMSwgMHg2YSwgMHhlMiwgMHgyZiwgMHgx
NiwgMHhiYiwgMHgwNSwKKyAgICAweGI4LCAweDhjLCAweDI1LCAweGRiLCAweDllLCAweDYwLCAw
eDI2LCAweDQ1LCAweGYxLCAweDQxLAorICAgIC8vIEFwcGxpY2F0aW9uIHBhcmFtZXRlcgorICAg
IDB4MTEsIDB4OTQsIDB4MjIsIDB4OEQsIDB4QTgsIDB4RkQsIDB4QkQsIDB4RUUsIDB4RkQsIDB4
MjYsIDB4MUIsIDB4RDcsCisgICAgMHhCNiwgMHg1OSwgMHg1QywgMHhGRCwgMHg3MCwgMHhBNSwg
MHgwRCwgMHg3MCwgMHhDNiwgMHg0MCwgMHg3QiwgMHhDRiwKKyAgICAweDAxLCAweDNELCAweEU5
LCAweDZELCAweDRFLCAweEZCLCAweDE3LCAweERFLAorICAgIC8vIEtleSBoYW5kbGUgbGVuZ3Ro
CisgICAgMHg0MCwKKyAgICAvLyBLZXkgaGFuZGxlCisgICAgMHgzRSwgMHhCRCwgMHg4OSwgMHhC
RiwgMHg3NywgMHhFQywgMHg1MCwgMHg5NywgMHg1NSwgMHhFRSwgMHg5QywgMHgyNiwKKyAgICAw
eDM1LCAweEVGLCAweEFBLCAweEFDLCAweDdCLCAweDJCLCAweDlDLCAweDVDLCAweEVGLCAweDE3
LCAweDM2LCAweEMzLAorICAgIDB4NzEsIDB4N0QsIDB4QTQsIDB4ODUsIDB4MzQsIDB4QzgsIDB4
QzYsIDB4QjYsIDB4NTQsIDB4RDcsIDB4RkYsIDB4OTQsCisgICAgMHg1RiwgMHg1MCwgMHhCNSwg
MHhDQywgMHg0RSwgMHg3OCwgMHgwNSwgMHg1QiwgMHhERCwgMHgzOSwgMHg2QiwgMHg2NCwKKyAg
ICAweEY3LCAweDhELCAweEEyLCAweEM1LCAweEY5LCAweDYyLCAweDAwLCAweENDLCAweEQ0LCAw
eDE1LCAweENELCAweDA4LAorICAgIDB4RkUsIDB4NDIsIDB4MDAsIDB4MzgsCisgICAgLy8gTWF4
IHJlc3BvbnNlIGxlbmd0aAorICAgIDB4MDAsIDB4MDAsCit9OworCitjb25zdGV4cHIgdWludDhf
dCBrVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmRBcGR1W10gPSB7CisgICAgLy8gQ0xBLCBJTlMsIFAx
LCBQMiBBUERVIGluc3RydWN0aW9uIHBhcmFtZXRlcnMKKyAgICAweDAwLCAweDAyLCAweDA3LCAw
eDAwLAorICAgIC8vIERhdGEgTGVuZ3RoICgzIGJ5dGVzIGluIGJpZyBlbmRpYW4gb3JkZXIpLgor
ICAgIDB4MDAsIDB4MDAsIDB4ODEsCisgICAgLy8gQ2hhbGxlbmdlIHBhcmFtZXRlciAtLSBzZWUg
a0NsaWVudERhdGFIYXNoCisgICAgMHg2OCwgMHg3MSwgMHgzNCwgMHg5NiwgMHg4MiwgMHgyMiwg
MHhlYywgMHgxNywgMHgyMCwgMHgyZSwgMHg0MiwKKyAgICAweDUwLCAweDVmLCAweDhlLCAweGQy
LCAweGIxLCAweDZhLCAweGUyLCAweDJmLCAweDE2LCAweGJiLCAweDA1LAorICAgIDB4YjgsIDB4
OGMsIDB4MjUsIDB4ZGIsIDB4OWUsIDB4NjAsIDB4MjYsIDB4NDUsIDB4ZjEsIDB4NDEsCisgICAg
Ly8gQXBwbGljYXRpb24gcGFyYW1ldGVyCisgICAgMHgxMSwgMHg5NCwgMHgyMiwgMHg4RCwgMHhB
OCwgMHhGRCwgMHhCRCwgMHhFRSwgMHhGRCwgMHgyNiwgMHgxQiwgMHhENywKKyAgICAweEI2LCAw
eDU5LCAweDVDLCAweEZELCAweDcwLCAweEE1LCAweDBELCAweDcwLCAweEM2LCAweDQwLCAweDdC
LCAweENGLAorICAgIDB4MDEsIDB4M0QsIDB4RTksIDB4NkQsIDB4NEUsIDB4RkIsIDB4MTcsIDB4
REUsCisgICAgLy8gS2V5IGhhbmRsZSBsZW5ndGgKKyAgICAweDQwLAorICAgIC8vIEtleSBoYW5k
bGUKKyAgICAweDNFLCAweEJELCAweDg5LCAweEJGLCAweDc3LCAweEVDLCAweDUwLCAweDk3LCAw
eDU1LCAweEVFLCAweDlDLCAweDI2LAorICAgIDB4MzUsIDB4RUYsIDB4QUEsIDB4QUMsIDB4N0Is
IDB4MkIsIDB4OUMsIDB4NUMsIDB4RUYsIDB4MTcsIDB4MzYsIDB4QzMsCisgICAgMHg3MSwgMHg3
RCwgMHhBNCwgMHg4NSwgMHgzNCwgMHhDOCwgMHhDNiwgMHhCNiwgMHg1NCwgMHhENywgMHhGRiwg
MHg5NCwKKyAgICAweDVGLCAweDUwLCAweEI1LCAweENDLCAweDRFLCAweDc4LCAweDA1LCAweDVC
LCAweERELCAweDM5LCAweDZCLCAweDY0LAorICAgIDB4RjcsIDB4OEQsIDB4QTIsIDB4QzUsIDB4
RjksIDB4NjIsIDB4MDAsIDB4Q0MsIDB4RDQsIDB4MTUsIDB4Q0QsIDB4MDgsCisgICAgMHhGRSwg
MHg0MiwgMHgwMCwgMHgzOCwKKyAgICAvLyBNYXggcmVzcG9uc2UgbGVuZ3RoCisgICAgMHgwMCwg
MHgwMCwKK307CisKK2NvbnN0ZXhwciB1aW50OF90IGtVMmZGYWtlUmVnaXN0ZXJDb21tYW5kW10g
PSB7CisgICAgLy8gQ0xBLCBJTlMsIFAxLCBQMiBBUERVIGluc3RydWN0aW9ucworICAgIDB4MDAs
IDB4MDEsIDB4MDAsIDB4MDAsCisgICAgLy8gRGF0YSBsZW5ndGggaW4gMyBieXRlcyBpbiBiaWcg
ZW5kaWFuIG9yZGVyLgorICAgIDB4MDAsIDB4MDAsIDB4NDAsCisgICAgLy8gQm9ndXMgY2hhbGxl
bmdlIHBhcmFtZXRlcgorICAgIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4
NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsIDB4NDIsCisgICAgMHg0MiwgMHg0MiwgMHg0Miwg
MHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwgMHg0MiwKKyAg
ICAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLCAweDQyLAorICAgIC8v
IEJvZ3VzIGFwcGxpY2F0aW9uIHBhcmFtZXRlcgorICAgIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEs
IDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsIDB4NDEsCisgICAgMHg0
MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwg
MHg0MSwgMHg0MSwKKyAgICAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQxLCAweDQx
LCAweDQxLAorICAgIC8vIE1heGltdW0gcmVzcG9uc2UgbGVuZ3RoCisgICAgMHgwMCwgMHgwMCwK
K307CisKIC8vIFUyRiByZXNwb25zZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy8vIFUyRiByZXNwb25zZSBibG9iIHBy
b2R1Y2VkIGJ5IGEgVTJGIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IHVzZWQgaW4gZXhhbXBsZSA2Cisv
LyBvZiB0aGUgQ1RBUCBzcGVjLgorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2Zp
ZG8tdjIuMC1yZC0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29s
LXYyLjAtcmQtMjAxNzA5MjcuaHRtbAorY29uc3RleHByIHVpbnQ4X3Qga1Rlc3RVMmZSZWdpc3Rl
clJlc3BvbnNlW10gPSB7CisgICAgLy8gUmVzZXJ2ZWQgYnl0ZQorICAgIDB4MDUsCisgICAgLy8g
VXNlciBwdWJsaWMga2V5CisgICAgMHgwNCwgMHhFOCwgMHg3NiwgMHgyNSwgMHg4OSwgMHg2RSwg
MHhFNCwgMHhFNCwgMHg2RCwgMHhDMCwgMHgzMiwgMHg3NiwKKyAgICAweDZFLCAweDgwLCAweDg3
LCAweDk2LCAweDJGLCAweDM2LCAweERGLCAweDlELCAweEZFLCAweDhCLCAweDU2LCAweDdGLAor
ICAgIDB4MzcsIDB4NjMsIDB4MDEsIDB4NUIsIDB4MTksIDB4OTAsIDB4QTYsIDB4MEUsIDB4MTQs
IDB4MjcsIDB4REUsIDB4NjEsCisgICAgMHgyRCwgMHg2NiwgMHg0MSwgMHg4QiwgMHhEQSwgMHgx
OSwgMHg1MCwgMHg1OCwgMHgxRSwgMHhCQywgMHg1QywgMHg4QywKKyAgICAweDFELCAweEFELCAw
eDcxLCAweDBDLCAweEIxLCAweDRDLCAweDIyLCAweEY4LCAweEM5LCAweDcwLCAweDQ1LCAweEY0
LAorICAgIDB4NjEsIDB4MkYsIDB4QjIsIDB4MEMsIDB4OTEsCisgICAgLy8gS2V5IGhhbmRsZSBs
ZW5ndGgKKyAgICAweDQwLAorICAgIC8vIEtleSBoYW5kbGUKKyAgICAweDNFLCAweEJELCAweDg5
LCAweEJGLCAweDc3LCAweEVDLCAweDUwLCAweDk3LCAweDU1LCAweEVFLCAweDlDLCAweDI2LAor
ICAgIDB4MzUsIDB4RUYsIDB4QUEsIDB4QUMsIDB4N0IsIDB4MkIsIDB4OUMsIDB4NUMsIDB4RUYs
IDB4MTcsIDB4MzYsIDB4QzMsCisgICAgMHg3MSwgMHg3RCwgMHhBNCwgMHg4NSwgMHgzNCwgMHhD
OCwgMHhDNiwgMHhCNiwgMHg1NCwgMHhENywgMHhGRiwgMHg5NCwKKyAgICAweDVGLCAweDUwLCAw
eEI1LCAweENDLCAweDRFLCAweDc4LCAweDA1LCAweDVCLCAweERELCAweDM5LCAweDZCLCAweDY0
LAorICAgIDB4RjcsIDB4OEQsIDB4QTIsIDB4QzUsIDB4RjksIDB4NjIsIDB4MDAsIDB4Q0MsIDB4
RDQsIDB4MTUsIDB4Q0QsIDB4MDgsCisgICAgMHhGRSwgMHg0MiwgMHgwMCwgMHgzOCwKKyAgICAv
LyBYLjUwOSBDZXJ0aWZpY2F0ZQorICAgIDB4MzAsIDB4ODIsIDB4MDIsIDB4NEEsIDB4MzAsIDB4
ODIsIDB4MDEsIDB4MzIsIDB4QTAsIDB4MDMsCisgICAgMHgwMiwgMHgwMSwgMHgwMiwgMHgwMiwg
MHgwNCwgMHgwNCwgMHg2QywgMHg4OCwgMHgyMiwgMHgzMCwgMHgwRCwgMHgwNiwKKyAgICAweDA5
LCAweDJBLCAweDg2LCAweDQ4LCAweDg2LCAweEY3LCAweDBELCAweDAxLCAweDAxLCAweDBCLCAw
eDA1LCAweDAwLAorICAgIDB4MzAsIDB4MkUsIDB4MzEsIDB4MkMsIDB4MzAsIDB4MkEsIDB4MDYs
IDB4MDMsIDB4NTUsIDB4MDQsIDB4MDMsIDB4MTMsCisgICAgMHgyMywgMHg1OSwgMHg3NSwgMHg2
MiwgMHg2OSwgMHg2MywgMHg2RiwgMHgyMCwgMHg1NSwgMHgzMiwgMHg0NiwgMHgyMCwKKyAgICAw
eDUyLCAweDZGLCAweDZGLCAweDc0LCAweDIwLCAweDQzLCAweDQxLCAweDIwLCAweDUzLCAweDY1
LCAweDcyLCAweDY5LAorICAgIDB4NjEsIDB4NkMsIDB4MjAsIDB4MzQsIDB4MzUsIDB4MzcsIDB4
MzIsIDB4MzAsIDB4MzAsIDB4MzYsIDB4MzMsIDB4MzEsCisgICAgMHgzMCwgMHgyMCwgMHgxNywg
MHgwRCwgMHgzMSwgMHgzNCwgMHgzMCwgMHgzOCwgMHgzMCwgMHgzMSwgMHgzMCwgMHgzMCwKKyAg
ICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDVBLCAweDE4LCAweDBGLCAweDMyLCAweDMwLCAw
eDM1LCAweDMwLCAweDMwLAorICAgIDB4MzksIDB4MzAsIDB4MzQsIDB4MzAsIDB4MzAsIDB4MzAs
IDB4MzAsIDB4MzAsIDB4MzAsIDB4NUEsIDB4MzAsIDB4MkMsCisgICAgMHgzMSwgMHgyQSwgMHgz
MCwgMHgyOCwgMHgwNiwgMHgwMywgMHg1NSwgMHgwNCwgMHgwMywgMHgwQywgMHgyMSwgMHg1OSwK
KyAgICAweDc1LCAweDYyLCAweDY5LCAweDYzLCAweDZGLCAweDIwLCAweDU1LCAweDMyLCAweDQ2
LCAweDIwLCAweDQ1LCAweDQ1LAorICAgIDB4MjAsIDB4NTMsIDB4NjUsIDB4NzIsIDB4NjksIDB4
NjEsIDB4NkMsIDB4MjAsIDB4MzIsIDB4MzQsIDB4MzksIDB4MzEsCisgICAgMHgzOCwgMHgzMiwg
MHgzMywgMHgzMiwgMHgzNCwgMHgzNywgMHgzNywgMHgzMCwgMHgzMCwgMHg1OSwgMHgzMCwgMHgx
MywKKyAgICAweDA2LCAweDA3LCAweDJBLCAweDg2LCAweDQ4LCAweENFLCAweDNELCAweDAyLCAw
eDAxLCAweDA2LCAweDA4LCAweDJBLAorICAgIDB4ODYsIDB4NDgsIDB4Q0UsIDB4M0QsIDB4MDMs
IDB4MDEsIDB4MDcsIDB4MDMsIDB4NDIsIDB4MDAsIDB4MDQsIDB4M0MsCisgICAgMHhDQSwgMHhC
OSwgMHgyQywgMHhDQiwgMHg5NywgMHgyOCwgMHg3RSwgMHhFOCwgMHhFNiwgMHgzOSwgMHg0Mywg
MHg3RSwKKyAgICAweDIxLCAweEZDLCAweEQ2LCAweEI2LCAweEYxLCAweDY1LCAweEIyLCAweEQ1
LCAweEEzLCAweEYzLCAweERCLCAweDEzLAorICAgIDB4MUQsIDB4MzEsIDB4QzEsIDB4NkIsIDB4
NzQsIDB4MkIsIDB4QjQsIDB4NzYsIDB4RDgsIDB4RDEsIDB4RTksIDB4OTAsCisgICAgMHg4MCwg
MHhFQiwgMHg1NCwgMHg2QywgMHg5QiwgMHhCRCwgMHhGNSwgMHg1NiwgMHhFNiwgMHgyMSwgMHgw
RiwgMHhENCwKKyAgICAweDI3LCAweDg1LCAweDg5LCAweDlFLCAweDc4LCAweENDLCAweDU4LCAw
eDlFLCAweEJFLCAweDMxLCAweDBGLCAweDZDLAorICAgIDB4REIsIDB4OUYsIDB4RjQsIDB4QTMs
IDB4M0IsIDB4MzAsIDB4MzksIDB4MzAsIDB4MjIsIDB4MDYsIDB4MDksIDB4MkIsCisgICAgMHgw
NiwgMHgwMSwgMHgwNCwgMHgwMSwgMHg4MiwgMHhDNCwgMHgwQSwgMHgwMiwgMHgwNCwgMHgxNSwg
MHgzMSwgMHgyRSwKKyAgICAweDMzLCAweDJFLCAweDM2LCAweDJFLCAweDMxLCAweDJFLCAweDM0
LCAweDJFLCAweDMxLCAweDJFLCAweDM0LCAweDMxLAorICAgIDB4MzQsIDB4MzgsIDB4MzIsIDB4
MkUsIDB4MzEsIDB4MkUsIDB4MzIsIDB4MzAsIDB4MTMsIDB4MDYsIDB4MEIsIDB4MkIsCisgICAg
MHgwNiwgMHgwMSwgMHgwNCwgMHgwMSwgMHg4MiwgMHhFNSwgMHgxQywgMHgwMiwgMHgwMSwgMHgw
MSwgMHgwNCwgMHgwNCwKKyAgICAweDAzLCAweDAyLCAweDA0LCAweDMwLCAweDMwLCAweDBELCAw
eDA2LCAweDA5LCAweDJBLCAweDg2LCAweDQ4LCAweDg2LAorICAgIDB4RjcsIDB4MEQsIDB4MDEs
IDB4MDEsIDB4MEIsIDB4MDUsIDB4MDAsIDB4MDMsIDB4ODIsIDB4MDEsIDB4MDEsIDB4MDAsCisg
ICAgMHg5RiwgMHg5QiwgMHgwNSwgMHgyMiwgMHg0OCwgMHhCQywgMHg0QywgMHhGNCwgMHgyQywg
MHhDNSwgMHg5OSwgMHgxRiwKKyAgICAweENBLCAweEFCLCAweEFDLCAweDlCLCAweDY1LCAweDFC
LCAweEJFLCAweDVCLCAweERDLCAweERDLCAweDhFLCAweEYwLAorICAgIDB4QUQsIDB4MkMsIDB4
MUMsIDB4MUYsIDB4RkIsIDB4MzYsIDB4RDEsIDB4ODcsIDB4MTUsIDB4RDQsIDB4MkUsIDB4Nzgs
CisgICAgMHhCMiwgMHg0OSwgMHgyMiwgMHg0RiwgMHg5MiwgMHhDNywgMHhFNiwgMHhFNywgMHhB
MCwgMHg1QywgMHg0OSwgMHhGMCwKKyAgICAweEU3LCAweEU0LCAweEM4LCAweDgxLCAweEJGLCAw
eDJFLCAweDk0LCAweEY0LCAweDVFLCAweDRBLCAweDIxLCAweDgzLAorICAgIDB4M0QsIDB4NzQs
IDB4NTYsIDB4ODUsIDB4MUQsIDB4MEYsIDB4NkMsIDB4MTQsIDB4NUEsIDB4MjksIDB4NTQsIDB4
MEMsCisgICAgMHg4NywgMHg0RiwgMHgzMCwgMHg5MiwgMHhDOSwgMHgzNCwgMHhCNCwgMHgzRCwg
MHgyMiwgMHgyQiwgMHg4OSwgMHg2MiwKKyAgICAweEMwLCAweEY0LCAweDEwLCAweENFLCAweEYx
LCAweERCLCAweDc1LCAweDg5LCAweDJBLCAweEYxLCAweDE2LCAweEI0LAorICAgIDB4NEEsIDB4
OTYsIDB4RjUsIDB4RDMsIDB4NUEsIDB4REUsIDB4QTMsIDB4ODIsIDB4MkYsIDB4QzcsIDB4MTQs
IDB4NkYsCisgICAgMHg2MCwgMHgwNCwgMHgzOCwgMHg1QiwgMHhDQiwgMHg2OSwgMHhCNiwgMHg1
QywgMHg5OSwgMHhFNywgMHhFQiwgMHg2OSwKKyAgICAweDE5LCAweDc4LCAweDY3LCAweDAzLCAw
eEMwLCAweEQ4LCAweENELCAweDQxLCAweEU4LCAweEY3LCAweDVDLCAweENBLAorICAgIDB4NDQs
IDB4QUEsIDB4OEEsIDB4QjcsIDB4MjUsIDB4QUQsIDB4OEUsIDB4NzksIDB4OUYsIDB4RjMsIDB4
QTgsIDB4NjksCisgICAgMHg2QSwgMHg2RiwgMHgxQiwgMHgyNiwgMHg1NiwgMHhFNiwgMHgzMSwg
MHhCMSwgMHhFNCwgMHgwMSwgMHg4MywgMHhDMCwKKyAgICAweDhGLCAweERBLCAweDUzLCAweEZB
LCAweDRBLCAweDhGLCAweDg1LCAweEEwLCAweDU2LCAweDkzLCAweDk0LCAweDRBLAorICAgIDB4
RTEsIDB4NzksIDB4QTEsIDB4MzMsIDB4OUQsIDB4MDAsIDB4MkQsIDB4MTUsIDB4Q0EsIDB4QkQs
IDB4ODEsIDB4MDAsCisgICAgMHg5MCwgMHhFQywgMHg3MiwgMHgyRSwgMHhGNSwgMHhERSwgMHhG
OSwgMHg5NiwgMHg1QSwgMHgzNywgMHgxRCwgMHg0MSwKKyAgICAweDVELCAweDYyLCAweDRCLCAw
eDY4LCAweEEyLCAweDcwLCAweDdDLCAweEFELCAweDk3LCAweEJDLCAweERELCAweDE3LAorICAg
IDB4ODUsIDB4QUYsIDB4OTcsIDB4RTIsIDB4NTgsIDB4RjMsIDB4M0QsIDB4RjUsIDB4NkEsIDB4
MDMsIDB4MUEsIDB4QTAsCisgICAgMHgzNSwgMHg2RCwgMHg4RSwgMHg4RCwgMHg1RSwgMHhCQywg
MHhBRCwgMHhDNywgMHg0RSwgMHgwNywgMHgxNiwgMHgzNiwKKyAgICAweEM2LCAweEIxLCAweDEw
LCAweEFDLCAweEU1LCAweENDLCAweDlCLCAweDkwLCAweERGLCAweEVBLCAweENBLCAweEU2LAor
ICAgIDB4NDAsIDB4RkYsIDB4MUIsIDB4QjAsIDB4RjEsIDB4RkUsIDB4NUQsIDB4QjQsIDB4RUYs
IDB4RjcsIDB4QTksIDB4NUYsCisgICAgMHgwNiwgMHgwNywgMHgzMywgMHhGNSwKKyAgICAvLyBT
aWduYXR1cmUKKyAgICAweDMwLCAweDQ1LCAweDAyLCAweDIwLCAweDMyLCAweDQ3LCAweDc5LCAw
eEM2LCAweDhGLCAweDMzLCAweDgwLCAweDI4LAorICAgIDB4OEEsIDB4MTEsIDB4OTcsIDB4QjYs
IDB4MDksIDB4NUYsIDB4N0EsIDB4NkUsIDB4QjksIDB4QjEsIDB4QjEsIDB4QzEsCisgICAgMHgy
NywgMHhGNiwgMHg2QSwgMHhFMSwgMHgyQSwgMHg5OSwgMHhGRSwgMHg4NSwgMHgzMiwgMHhFQywg
MHgyMywgMHhCOSwKKyAgICAweDAyLCAweDIxLCAweDAwLCAweEUzLCAweDk1LCAweDE2LCAweEFD
LCAweDRELCAweDYxLCAweEVFLCAweDY0LCAweDA0LAorICAgIDB4NEQsIDB4NTAsIDB4QjQsIDB4
MTUsIDB4QTYsIDB4QTQsIDB4RDQsIDB4RDgsIDB4NEIsIDB4QTYsIDB4RDgsIDB4OTUsCisgICAg
MHhDQiwgMHg1QSwgMHhCNywgMHhBMSwgMHhBQSwgMHg3RCwgMHgwOCwgMHgxRCwgMHhFMywgMHg0
MSwgMHhGQSwKK307CisKIC8vIEVDIHB1YmxpYyBrZXkgZW5jb2RlZCBpbiBDT1NFX0tleSBmb3Jt
YXQgZXh0cmFjdGVkIGZyb20gYWJvdmUKIC8vIHxrVGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2V8Lgog
Y29uc3RleHByIHVpbnQ4X3Qga1Rlc3RFQ1B1YmxpY0tleUNPU0VbXSA9IHsKQEAgLTIwNCw2ICsz
ODUsMTkgQEAgY29uc3RleHByIHVpbnQ4X3Qga1Rlc3RVMmZTaWduUmVzcG9uc2VbXSA9IHsKICAg
ICAweEY1LCAweEY2LCAweEFGLCAweEEzLCAweDVBLCAweEFELCAweDUzLCAweDczLCAweDg1LCAw
eDhFLAogfTsKIAorLy8gVGhlIGF1dGhlbnRpY2F0b3IgZGF0YSBmb3Igc2lnbiByZXNwb25zZXMg
ZXh0cmFjdGVkIGZyb20gYWJvdmUKKy8vIHxrVGVzdFUyZlNpZ25SZXNwb25zZXwuCitjb25zdGV4
cHIgdWludDhfdCBrVGVzdFNpZ25BdXRoZW50aWNhdG9yRGF0YVtdID0geworICAgIC8vIFNIQTI1
NiBoYXNoIG9mIGtUZXN0UmVseWluZ1BhcnR5SWQKKyAgICAweDExLCAweDk0LCAweDIyLCAweDhE
LCAweEE4LCAweEZELCAweEJELCAweEVFLCAweEZELCAweDI2LCAweDFCLCAweEQ3LAorICAgIDB4
QjYsIDB4NTksIDB4NUMsIDB4RkQsIDB4NzAsIDB4QTUsIDB4MEQsIDB4NzAsIDB4QzYsIDB4NDAs
IDB4N0IsIDB4Q0YsCisgICAgMHgwMSwgMHgzRCwgMHhFOSwgMHg2RCwgMHg0RSwgMHhGQiwgMHgx
NywgMHhERSwKKyAgICAvLyBGbGFncyAoVFVQIGJpdCBzZXQpCisgICAgMHgwMSwKKyAgICAvLyBD
b3VudGVyCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgzQiwKK307CisKIC8vIENUQVAgcmVxdWVz
dHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiBjb25zdGV4cHIgdWludDhfdCBrQ3RhcE1ha2VDcmVkZW50aWFsUmVxdWVzdFtd
ID0gewogICAgIC8vIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBjb21tYW5kCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVTJmQ29tbWFuZENvbnN0cnVj
dG9yVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVTJmQ29tbWFu
ZENvbnN0cnVjdG9yVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q3NDVmOWJiYzY0YWUxZTE2NmUyMjNi
NjMyYjczYjE4OTY5OTNlYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9VMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcApAQCAtMCwwICsxLDIy
NiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiRmlk
b1Rlc3REYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2Vi
QXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1dGhlbnRp
Y2F0aW9uVXRpbHMuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKKworUHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucyBjb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3QoKQoreworICAg
IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlJwRW50aXR5IHJwOworICAgIHJw
LmlkID0gImFjbWUuY29tIjsKKyAgICBycC5uYW1lID0gImFjbWUuY29tIjsKKworICAgIFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlVzZXJFbnRpdHkgdXNlcjsKKyAgICB1c2Vy
LmlkVmVjdG9yID0gY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVc2VySWQsIHNpemVv
ZihUZXN0RGF0YTo6a1VzZXJJZCkpOworICAgIHVzZXIubmFtZSA9ICJqb2hucHNtaXRoQGV4YW1w
bGUuY29tIjsKKyAgICB1c2VyLmRpc3BsYXlOYW1lID0gIkpvaG4gUC4gU21pdGgiOworICAgIHVz
ZXIuaWNvbiA9ICJodHRwczovL3BpY3MuYWNtZS5jb20vMDAvcC9hQmpqanBxUGIucG5nIjsKKwor
ICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnMgcGFyYW1z
OworICAgIHBhcmFtcy50eXBlID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleTsK
KyAgICBwYXJhbXMuYWxnID0gQ09TRTo6RVMyNTY7CisKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zIG9wdGlvbnM7CisgICAgb3B0aW9ucy5ycCA9IFdURk1vdmUocnApOwor
ICAgIG9wdGlvbnMudXNlciA9IFdURk1vdmUodXNlcik7CisgICAgb3B0aW9ucy5wdWJLZXlDcmVk
UGFyYW1zLmFwcGVuZChXVEZNb3ZlKHBhcmFtcykpOworCisgICAgcmV0dXJuIG9wdGlvbnM7Cit9
CisKK1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBjb25zdHJ1Y3RHZXRBc3NlcnRp
b25SZXF1ZXN0KCkKK3sKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0
aW9uczsKKyAgICBvcHRpb25zLnJwSWQgPSAiYWNtZS5jb20iOworICAgIHJldHVybiBvcHRpb25z
OworfQorCitURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RDb252ZXJ0Q3RhcE1h
a2VDcmVkZW50aWFsVG9VMmZSZWdpc3RlcikKK3sKKyAgICBjb25zdCBhdXRvIG1ha2VDcmVkZW50
aWFsUGFyYW0gPSBjb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3QoKTsKKworICAgIEVYUEVD
VF9UUlVFKGlzQ29udmVydGlibGVUb1UyZlJlZ2lzdGVyQ29tbWFuZChtYWtlQ3JlZGVudGlhbFBh
cmFtKSk7CisKKyAgICBjb25zdCBhdXRvIHUyZlJlZ2lzdGVyQ29tbWFuZCA9IGNvbnZlcnRUb1Uy
ZlJlZ2lzdGVyQ29tbWFuZChjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0NsaWVudERh
dGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCkpLCBtYWtlQ3JlZGVudGlh
bFBhcmFtKTsKKyAgICBBU1NFUlRfVFJVRSh1MmZSZWdpc3RlckNvbW1hbmQpOworICAgIEVYUEVD
VF9FUSgqdTJmUmVnaXN0ZXJDb21tYW5kLCBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6
a1UyZlJlZ2lzdGVyQ29tbWFuZEFwZHUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlJlZ2lzdGVyQ29t
bWFuZEFwZHUpKSk7Cit9CisKK1RFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdCwgVGVzdENv
bnZlcnRDdGFwTWFrZUNyZWRlbnRpYWxUb1UyZkNoZWNrT25seVNpZ24pCit7CisgICAgYXV0byBt
YWtlQ3JlZGVudGlhbFBhcmFtID0gY29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0KCk7Cisg
ICAgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgY3JlZGVudGlhbERlc2NyaXB0b3I7Cisg
ICAgY3JlZGVudGlhbERlc2NyaXB0b3IudHlwZSA9IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQ
dWJsaWNLZXk7CisgICAgY3JlZGVudGlhbERlc2NyaXB0b3IuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0
ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6
a1UyZlNpZ25LZXlIYW5kbGUpKTsKKyAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbERlc2Ny
aXB0b3I+IGV4Y2x1ZGVMaXN0OworICAgIGV4Y2x1ZGVMaXN0LmFwcGVuZChjcmVkZW50aWFsRGVz
Y3JpcHRvcik7CisgICAgbWFrZUNyZWRlbnRpYWxQYXJhbS5leGNsdWRlQ3JlZGVudGlhbHMgPSBX
VEZNb3ZlKGV4Y2x1ZGVMaXN0KTsKKyAgICBFWFBFQ1RfVFJVRShpc0NvbnZlcnRpYmxlVG9VMmZS
ZWdpc3RlckNvbW1hbmQobWFrZUNyZWRlbnRpYWxQYXJhbSkpOworCisgICAgY29uc3QgYXV0byB1
MmZDaGVja09ubHlTaWduID0gY29udmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmQoY29udmVy
dEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRh
OjprQ2xpZW50RGF0YUhhc2gpKSwgbWFrZUNyZWRlbnRpYWxQYXJhbSwgY3JlZGVudGlhbERlc2Ny
aXB0b3IpOworICAgIEFTU0VSVF9UUlVFKHUyZkNoZWNrT25seVNpZ24pOworICAgIEVYUEVDVF9F
USgqdTJmQ2hlY2tPbmx5U2lnbiwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVMmZD
aGVja09ubHlTaWduQ29tbWFuZEFwZHUsIHNpemVvZihUZXN0RGF0YTo6a1UyZkNoZWNrT25seVNp
Z25Db21tYW5kQXBkdSkpKTsKK30KKworVEVTVChVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LCBU
ZXN0Q29udmVydEN0YXBNYWtlQ3JlZGVudGlhbFRvVTJmQ2hlY2tPbmx5U2lnbldpdGhJbnZhbGlk
Q3JlZGVudGlhbFR5cGUpCit7CisgICAgYXV0byBtYWtlQ3JlZGVudGlhbFBhcmFtID0gY29uc3Ry
dWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0KCk7CisgICAgUHVibGljS2V5Q3JlZGVudGlhbERlc2Ny
aXB0b3IgY3JlZGVudGlhbERlc2NyaXB0b3I7CisgICAgY3JlZGVudGlhbERlc2NyaXB0b3IudHlw
ZSA9IHN0YXRpY19jYXN0PFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlPigtMSk7CisgICAgY3JlZGVu
dGlhbERlc2NyaXB0b3IuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6
a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsK
KyAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+IGV4Y2x1ZGVMaXN0Owor
ICAgIGV4Y2x1ZGVMaXN0LmFwcGVuZChjcmVkZW50aWFsRGVzY3JpcHRvcik7CisgICAgbWFrZUNy
ZWRlbnRpYWxQYXJhbS5leGNsdWRlQ3JlZGVudGlhbHMgPSBXVEZNb3ZlKGV4Y2x1ZGVMaXN0KTsK
KyAgICBFWFBFQ1RfVFJVRShpc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQobWFrZUNy
ZWRlbnRpYWxQYXJhbSkpOworCisgICAgY29uc3QgYXV0byB1MmZDaGVja09ubHlTaWduID0gY29u
dmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmQoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERh
dGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKSwg
bWFrZUNyZWRlbnRpYWxQYXJhbSwgY3JlZGVudGlhbERlc2NyaXB0b3IpOworICAgIEVYUEVDVF9G
QUxTRSh1MmZDaGVja09ubHlTaWduKTsKK30KKworVEVTVChVMmZDb21tYW5kQ29uc3RydWN0b3JU
ZXN0LCBUZXN0VTJmUmVnaXN0ZXJDcmVkZW50aWFsQWxnb3JpdGhtUmVxdWlyZW1lbnQpCit7Cisg
ICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UnBFbnRpdHkgcnA7CisgICAg
cnAuaWQgPSAiYWNtZS5jb20iOworICAgIHJwLm5hbWUgPSAiYWNtZS5jb20iOworCisgICAgUHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6VXNlckVudGl0eSB1c2VyOworICAgIHVz
ZXIuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1VzZXJJZCwgc2l6
ZW9mKFRlc3REYXRhOjprVXNlcklkKSk7CisgICAgdXNlci5uYW1lID0gImpvaG5wc21pdGhAZXhh
bXBsZS5jb20iOworICAgIHVzZXIuZGlzcGxheU5hbWUgPSAiSm9obiBQLiBTbWl0aCI7CisgICAg
dXNlci5pY29uID0gImh0dHBzOi8vcGljcy5hY21lLmNvbS8wMC9wL2FCampqcHFQYi5wbmciOwor
CisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UGFyYW1ldGVycyBwYXJh
bXM7CisgICAgcGFyYW1zLnR5cGUgPSBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5
OworICAgIHBhcmFtcy5hbGcgPSAtMjU3OworCisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyBtYWtlQ3JlZGVudGlhbFBhcmFtOworICAgIG1ha2VDcmVkZW50aWFsUGFyYW0u
cnAgPSBXVEZNb3ZlKHJwKTsKKyAgICBtYWtlQ3JlZGVudGlhbFBhcmFtLnVzZXIgPSBXVEZNb3Zl
KHVzZXIpOworICAgIG1ha2VDcmVkZW50aWFsUGFyYW0ucHViS2V5Q3JlZFBhcmFtcy5hcHBlbmQo
V1RGTW92ZShwYXJhbXMpKTsKKworICAgIEVYUEVDVF9GQUxTRShpc0NvbnZlcnRpYmxlVG9VMmZS
ZWdpc3RlckNvbW1hbmQobWFrZUNyZWRlbnRpYWxQYXJhbSkpOworfQorCitURVNUKFUyZkNvbW1h
bmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RVMmZSZWdpc3RlclVzZXJWZXJpZmljYXRpb25SZXF1aXJl
bWVudCkKK3sKKyAgICBhdXRvIG1ha2VDcmVkZW50aWFsUGFyYW0gPSBjb25zdHJ1Y3RNYWtlQ3Jl
ZGVudGlhbFJlcXVlc3QoKTsKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
OjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgc2VsZWN0aW9uOworICAgIHNlbGVjdGlv
bi51c2VyVmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50OjpSZXF1aXJl
ZDsKKyAgICBtYWtlQ3JlZGVudGlhbFBhcmFtLmF1dGhlbnRpY2F0b3JTZWxlY3Rpb24gPSBXVEZN
b3ZlKHNlbGVjdGlvbik7CisKKyAgICBFWFBFQ1RfRkFMU0UoaXNDb252ZXJ0aWJsZVRvVTJmUmVn
aXN0ZXJDb21tYW5kKG1ha2VDcmVkZW50aWFsUGFyYW0pKTsKK30KKworVEVTVChVMmZDb21tYW5k
Q29uc3RydWN0b3JUZXN0LCBUZXN0VTJmUmVnaXN0ZXJSZXNpZGVudEtleVJlcXVpcmVtZW50KQor
eworICAgIGF1dG8gbWFrZUNyZWRlbnRpYWxQYXJhbSA9IGNvbnN0cnVjdE1ha2VDcmVkZW50aWFs
UmVxdWVzdCgpOworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OkF1dGhl
bnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYSBzZWxlY3Rpb247CisgICAgc2VsZWN0aW9uLnJlcXVp
cmVSZXNpZGVudEtleSA9IHRydWU7CisgICAgbWFrZUNyZWRlbnRpYWxQYXJhbS5hdXRoZW50aWNh
dG9yU2VsZWN0aW9uID0gV1RGTW92ZShzZWxlY3Rpb24pOworCisgICAgRVhQRUNUX0ZBTFNFKGlz
Q29udmVydGlibGVUb1UyZlJlZ2lzdGVyQ29tbWFuZChtYWtlQ3JlZGVudGlhbFBhcmFtKSk7Cit9
CisKK1RFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdCwgVGVzdENvbnZlcnRDdGFwR2V0QXNz
ZXJ0aW9uVG9VMmZTaWduUmVxdWVzdCkKK3sKKyAgICBhdXRvIGdldEFzc2VydGlvblJlcSA9IGNv
bnN0cnVjdEdldEFzc2VydGlvblJlcXVlc3QoKTsKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVz
Y3JpcHRvciBjcmVkZW50aWFsRGVzY3JpcHRvcjsKKyAgICBjcmVkZW50aWFsRGVzY3JpcHRvci50
eXBlID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleTsKKyAgICBjcmVkZW50aWFs
RGVzY3JpcHRvci5pZFZlY3RvciA9IGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVTJm
U2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOworICAg
IFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gYWxsb3dlZExpc3Q7CisgICAg
YWxsb3dlZExpc3QuYXBwZW5kKFdURk1vdmUoY3JlZGVudGlhbERlc2NyaXB0b3IpKTsKKyAgICBn
ZXRBc3NlcnRpb25SZXEuYWxsb3dDcmVkZW50aWFscyA9IFdURk1vdmUoYWxsb3dlZExpc3QpOwor
ICAgIEVYUEVDVF9UUlVFKGlzQ29udmVydGlibGVUb1UyZlNpZ25Db21tYW5kKGdldEFzc2VydGlv
blJlcSkpOworCisgICAgY29uc3QgYXV0byB1MmZTaWduQ29tbWFuZCA9IGNvbnZlcnRUb1UyZlNp
Z25Db21tYW5kKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gs
IHNpemVvZihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoKSksIGdldEFzc2VydGlvblJlcSwgY29u
dmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlLCBzaXplb2YoVGVz
dERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSkpOworICAgIEFTU0VSVF9UUlVFKHUyZlNpZ25Db21t
YW5kKTsKKyAgICBFWFBFQ1RfRVEoKnUyZlNpZ25Db21tYW5kLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihUZXN0RGF0YTo6a1UyZlNpZ25Db21tYW5kQXBkdSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2ln
bkNvbW1hbmRBcGR1KSkpOworfQorCitURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRl
c3RVMmZTaWduQWxsb3dMaXN0UmVxdWlyZW1lbnQpCit7CisgICAgYXV0byBnZXRBc3NlcnRpb25S
ZXEgPSBjb25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0KCk7CisgICAgRVhQRUNUX0ZBTFNFKGlz
Q29udmVydGlibGVUb1UyZlNpZ25Db21tYW5kKGdldEFzc2VydGlvblJlcSkpOworfQorCitURVNU
KFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RVMmZTaWduVXNlclZlcmlmaWNhdGlvblJl
cXVpcmVtZW50KQoreworICAgIGF1dG8gZ2V0QXNzZXJ0aW9uUmVxID0gY29uc3RydWN0R2V0QXNz
ZXJ0aW9uUmVxdWVzdCgpOworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yIGNyZWRl
bnRpYWxEZXNjcmlwdG9yOworICAgIGNyZWRlbnRpYWxEZXNjcmlwdG9yLnR5cGUgPSBQdWJsaWNL
ZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5OworICAgIGNyZWRlbnRpYWxEZXNjcmlwdG9yLmlk
VmVjdG9yID0gY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxl
LCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSk7CisgICAgVmVjdG9yPFB1Ymxp
Y0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yPiBhbGxvd2VkTGlzdDsKKyAgICBhbGxvd2VkTGlzdC5h
cHBlbmQoV1RGTW92ZShjcmVkZW50aWFsRGVzY3JpcHRvcikpOworICAgIGdldEFzc2VydGlvblJl
cS5hbGxvd0NyZWRlbnRpYWxzID0gV1RGTW92ZShhbGxvd2VkTGlzdCk7CisgICAgZ2V0QXNzZXJ0
aW9uUmVxLnVzZXJWZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlJl
cXVpcmVkOworCisgICAgRVhQRUNUX0ZBTFNFKGlzQ29udmVydGlibGVUb1UyZlNpZ25Db21tYW5k
KGdldEFzc2VydGlvblJlcSkpOworfQorCitURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3Qs
IFRlc3RDcmVhdGVTaWduV2l0aEluY29ycmVjdEtleUhhbmRsZSkKK3sKKyAgICBhdXRvIGdldEFz
c2VydGlvblJlcSA9IGNvbnN0cnVjdEdldEFzc2VydGlvblJlcXVlc3QoKTsKKyAgICBQdWJsaWNL
ZXlDcmVkZW50aWFsRGVzY3JpcHRvciBjcmVkZW50aWFsRGVzY3JpcHRvcjsKKyAgICBjcmVkZW50
aWFsRGVzY3JpcHRvci50eXBlID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleTsK
KyAgICBjcmVkZW50aWFsRGVzY3JpcHRvci5pZFZlY3RvciA9IGNvbnZlcnRCeXRlc1RvVmVjdG9y
KFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktl
eUhhbmRsZSkpOworICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gYWxs
b3dlZExpc3Q7CisgICAgYWxsb3dlZExpc3QuYXBwZW5kKFdURk1vdmUoY3JlZGVudGlhbERlc2Ny
aXB0b3IpKTsKKyAgICBnZXRBc3NlcnRpb25SZXEuYWxsb3dDcmVkZW50aWFscyA9IFdURk1vdmUo
YWxsb3dlZExpc3QpOworICAgIEFTU0VSVF9UUlVFKGlzQ29udmVydGlibGVUb1UyZlNpZ25Db21t
YW5kKGdldEFzc2VydGlvblJlcSkpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGtleUhhbmRsZShr
TWF4S2V5SGFuZGxlTGVuZ3RoLCAweGZmKTsKKyAgICBjb25zdCBhdXRvIHZhbGlkU2lnbkNvbW1h
bmQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0
YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCkpLCBn
ZXRBc3NlcnRpb25SZXEsIGtleUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUodmFsaWRTaWduQ29t
bWFuZCk7CisKKyAgICBrZXlIYW5kbGUuYXBwZW5kKDB4ZmYpOworICAgIGNvbnN0IGF1dG8gaW52
YWxpZFNpZ25Db21tYW5kID0gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29udmVydEJ5dGVzVG9W
ZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50
RGF0YUhhc2gpKSwgZ2V0QXNzZXJ0aW9uUmVxLCBrZXlIYW5kbGUpOworICAgIEVYUEVDVF9GQUxT
RShpbnZhbGlkU2lnbkNvbW1hbmQpOworfQorCitURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRl
c3QsIFRlc3RDb25zdHJ1Y3RCb2d1c1UyZlJlZ2lzdHJhdGlvbkNvbW1hbmQpCit7CisgICAgRVhQ
RUNUX0VRKGNvbnN0cnVjdEJvZ3VzVTJmUmVnaXN0cmF0aW9uQ29tbWFuZCgpLCBjb252ZXJ0Qnl0
ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1UyZkZha2VSZWdpc3RlckNvbW1hbmQsIHNpemVvZihUZXN0
RGF0YTo6a1UyZkZha2VSZWdpc3RlckNvbW1hbmQpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDk0YzQ1
NThlYjQ4NTNjYmM4NzQxZGM1NThhODczYmUyOTRlZWYwNS4uZTY3OTUzYjdlMWFmMTVlMjZhZmRl
NjllNjM2OTU0ZDNhNTEzOGM4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTAxLTA0ICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBJ
bXBvcnQgVTJGIGNvbW1hbmQvcmVzcG9uc2UgY29udmVydGVycyBmcm9tIENocm9taXVtCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMxNTAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ3MDU0MDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50
IEZ1bGdoYW0uCisKKyAgICAgICAgRml4ZXMgQnVnIDE4MzUzNDoKKyAgICAgICAgNykgQ2hhbmdl
IGxpdHRsZSBlbmRpYW4gYnl0ZXMgKEFSTSBhbmQgeDg2IGRlZmF1bHQpIHRvIGJpZyBlbmRpYW4g
YXMgcmVxdWVzdGVkIGJ5IHRoZSBzcGVjLgorCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sOgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vz
cy1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMv
dXRpbC5qczoKKwogMjAxOC0xMi0yMSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CiAKICAgICAgICAgQ1NTIHZhcmlhYmxlcyBkb24ndCB3b3JrIGZvciBjb2xvcnMg
aW4gImJvcmRlciIgcHJvcGVydHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAppbmRleCA5NTdjMjc0ZDU0NGU5ZGQ3YWU3M2Vh
MjJhZTI3NzQ0ZTdlODU1ZjdlLi41ZDkzYjgwN2E0NGM1MzczNGE3ZjVkODExZGY2MDEzNTYyYzA1
YzdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LWhpZC5odHRwcy5odG1sCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgICAgIGNvbnN0IGF0dGVzdGF0
aW9uT2JqZWN0ID0gQ0JPUi5kZWNvZGUoY3JlZGVudGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9i
amVjdCk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10LCAicGFj
a2VkIik7CiAgICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCi0gICAgICAgIGNvbnN0IGF1dGhEYXRh
ID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEsIGZhbHNlKTsKKyAg
ICAgICAgY29uc3QgYXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0YShhdHRlc3RhdGlvbk9iamVjdC5h
dXRoRGF0YSk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0
YS5ycElkSGFzaCksICI0NmNjN2ZiOTY3OWQ1NWIyZGI5MDkyZTFjOGQ5ZTVlMWQwMmI3NTgwZjBi
NDgxMmM3NzA5NjJlMWU0OGY1YWQ4Iik7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEu
ZmxhZ3MsIDY1KTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVyLCA3OCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0
bWwKaW5kZXggMWYxM2RlZDgzODQ4OWJhY2YwOGE3NzM0NzYyODRlNjRmY2YyNDAxMS4uNjdkYjgz
MTAwN2Y3YTJjNTA0NWQ3MmRhZTNlMWNkODAwMWNjMjRkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhp
ZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtMTgsNyArMTgsNyBA
QAogICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwucmVzcG9uc2UudXNlckhhbmRsZSwg
bnVsbCk7CiAKICAgICAgICAgLy8gQ2hlY2sgYXV0aERhdGEKLSAgICAgICAgY29uc3QgYXV0aERh
dGEgPSBkZWNvZGVBdXRoRGF0YShuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJlc3BvbnNlLmF1
dGhlbnRpY2F0b3JEYXRhKSwgZmFsc2UpOworICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29k
ZUF1dGhEYXRhKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRv
ckRhdGEpKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRh
LnJwSWRIYXNoKSwgIjQ2Y2M3ZmI5Njc5ZDU1YjJkYjkwOTJlMWM4ZDllNWUxZDAyYjc1ODBmMGI0
ODEyYzc3MDk2MmUxZTQ4ZjVhZDgiKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5m
bGFncywgMSk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgODApOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwu
anMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcwppbmRl
eCBjZDU5ODBkOTZjNzY4MmZlODMyZTY3Nzk0ODc4MTAxNzU0NzNiNzY1Li44M2Y0YjQ4YWRjZjI1
YjcwMDRlOTcwMWY0N2YwMTNmOGEwNTlhZmFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcwpAQCAtMTM0LDcgKzEzNCw3IEBAIGZ1bmN0aW9u
IGhleFN0cmluZ1RvVWludDhBcnJheShoZXhTdHJpbmcpCiAgICAgcmV0dXJuIGFycmF5QnVmZmVy
OwogfQogCi1mdW5jdGlvbiBkZWNvZGVBdXRoRGF0YShhdXRoRGF0YVVpbnQ4QXJyYXksIGxpdHRs
ZUVuZGlhbiA9IHRydWUpCitmdW5jdGlvbiBkZWNvZGVBdXRoRGF0YShhdXRoRGF0YVVpbnQ4QXJy
YXkpCiB7CiAgICAgbGV0IGF1dGhEYXRhT2JqZWN0ID0geyB9OwogICAgIGxldCBwb3MgPSAwOwpA
QCAtMTU4LDEwICsxNTgsNyBAQCBmdW5jdGlvbiBkZWNvZGVBdXRoRGF0YShhdXRoRGF0YVVpbnQ4
QXJyYXksIGxpdHRsZUVuZGlhbiA9IHRydWUpCiAgICAgc2l6ZSA9IDQ7CiAgICAgaWYgKHBvcyAr
IHNpemUgPiBhdXRoRGF0YVVpbnQ4QXJyYXkuYnl0ZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICBpZiAobGl0dGxlRW5kaWFuKQotICAgICAgICBhdXRoRGF0YU9iamVjdC5jb3VudGVy
ID0gbmV3IFVpbnQzMkFycmF5KGF1dGhEYXRhVWludDhBcnJheS5zbGljZShwb3MsIHBvcyArIHNp
emUpKVswXTsKLSAgICBlbHNlCi0gICAgICAgIGF1dGhEYXRhT2JqZWN0LmNvdW50ZXIgPSAoYXV0
aERhdGFVaW50OEFycmF5W3Bvc10gPDwgMjQpICsgKGF1dGhEYXRhVWludDhBcnJheVtwb3MgKyAx
XSA8PCAxNikgKyAoYXV0aERhdGFVaW50OEFycmF5W3BvcyArIDJdIDw8IDgpICsgYXV0aERhdGFV
aW50OEFycmF5W3BvcyArIDNdOworICAgIGF1dGhEYXRhT2JqZWN0LmNvdW50ZXIgPSAoYXV0aERh
dGFVaW50OEFycmF5W3Bvc10gPDwgMjQpICsgKGF1dGhEYXRhVWludDhBcnJheVtwb3MgKyAxXSA8
PCAxNikgKyAoYXV0aERhdGFVaW50OEFycmF5W3BvcyArIDJdIDw8IDgpICsgYXV0aERhdGFVaW50
OEFycmF5W3BvcyArIDNdOwogICAgIHBvcyA9IHBvcyArIHNpemU7CiAKICAgICBpZiAocG9zID09
IGF1dGhEYXRhVWludDhBcnJheS5ieXRlTGVuZ3RoKQpAQCAtMTc4LDEwICsxNzUsNyBAQCBmdW5j
dGlvbiBkZWNvZGVBdXRoRGF0YShhdXRoRGF0YVVpbnQ4QXJyYXksIGxpdHRsZUVuZGlhbiA9IHRy
dWUpCiAgICAgc2l6ZSA9IDI7CiAgICAgaWYgKHBvcyArIHNpemUgPiBhdXRoRGF0YVVpbnQ4QXJy
YXkuYnl0ZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBpZiAobGl0dGxlRW5kaWFu
KQotICAgICAgICBhdXRoRGF0YU9iamVjdC5sID0gbmV3IFVpbnQxNkFycmF5KGF1dGhEYXRhVWlu
dDhBcnJheS5zbGljZShwb3MsIHBvcyArIHNpemUpKVswXTsKLSAgICBlbHNlCi0gICAgICAgIGF1
dGhEYXRhT2JqZWN0LmwgPSAoYXV0aERhdGFVaW50OEFycmF5W3Bvc10gPDwgOCkgKyBhdXRoRGF0
YVVpbnQ4QXJyYXlbcG9zICsgMV07CisgICAgYXV0aERhdGFPYmplY3QubCA9IChhdXRoRGF0YVVp
bnQ4QXJyYXlbcG9zXSA8PCA4KSArIGF1dGhEYXRhVWludDhBcnJheVtwb3MgKyAxXTsKICAgICBw
b3MgPSBwb3MgKyBzaXplOwogCiAgICAgLy8gQ3JlZGVudGlhbCBJRAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>