<?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>186958</bug_id>
          
          <creation_ts>2018-06-22 18:48:46 -0700</creation_ts>
          <short_desc>Add API to control mock media devices</short_desc>
          <delta_ts>2018-06-25 12:19:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1435754</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-06-22 18:48:46 -0700</bug_when>
    <thetext>This will allow improving testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435755</commentid>
    <comment_count>1</comment_count>
      <attachid>343414</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-06-22 18:56:07 -0700</bug_when>
    <thetext>Created attachment 343414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435769</commentid>
    <comment_count>2</comment_count>
      <attachid>343418</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-06-22 21:37:52 -0700</bug_when>
    <thetext>Created attachment 343418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435873</commentid>
    <comment_count>3</comment_count>
      <attachid>343441</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-06-23 10:23:22 -0700</bug_when>
    <thetext>Created attachment 343441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435893</commentid>
    <comment_count>4</comment_count>
      <attachid>343441</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-06-23 14:35:48 -0700</bug_when>
    <thetext>Comment on attachment 343441
Patch

Patch is ready for a first round of review.
I need to beef-up the change log, especially the changes to MediaDevices to ensure it is not GCed while dispatching events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435894</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-23 14:36:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/41401524&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436053</commentid>
    <comment_count>6</comment_count>
      <attachid>343441</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-06-25 08:20:44 -0700</bug_when>
    <thetext>Comment on attachment 343441
Patch

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

&gt; Source/WebKit/UIProcess/API/C/WKMockMediaDevice.cpp:48
&gt; +static inline std::optional&lt;Properties&gt; typeFromString(const String&amp; type)
&gt; +{
&gt; +    if (type == &quot;camera&quot;)
&gt; +        return Properties { WebCore::MockCameraProperties { } };
&gt; +    if (type == &quot;microphone&quot;)
&gt; +        return Properties { WebCore::MockMicrophoneProperties { } };
&gt; +    if (type == &quot;screen&quot;)
&gt; +        return Properties { WebCore::MockDisplayProperties { } };
&gt; +    return std::nullopt;
&gt; +}

Nit: this is only used in one place. Is there a plan to use it in more place?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436100</commentid>
    <comment_count>7</comment_count>
      <attachid>343508</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-06-25 10:17:11 -0700</bug_when>
    <thetext>Created attachment 343508
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436148</commentid>
    <comment_count>8</comment_count>
      <attachid>343517</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-06-25 11:13:41 -0700</bug_when>
    <thetext>Created attachment 343517
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436174</commentid>
    <comment_count>9</comment_count>
      <attachid>343517</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-25 12:19:13 -0700</bug_when>
    <thetext>Comment on attachment 343517
Patch for landing

Clearing flags on attachment: 343517

Committed r233162: &lt;https://trac.webkit.org/changeset/233162&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436175</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-25 12:19:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343414</attachid>
            <date>2018-06-22 18:56:07 -0700</date>
            <delta_ts>2018-06-22 21:37:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186958-20180622185606.patch</filename>
            <type>text/plain</type>
            <size>65274</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyOTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTVkYTZmMzY5N2NjMjFm
NTVkMjkxYTQ3MjdkOGQ5N2NmYWE0NGE5ZC4uNDU0ZDI4ZmNjYzAxMTZhNzMzOTBiODY5N2U3YTY5
MTQ1ZDdjZGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTA2LTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGNvbnRy
b2wgbW9jayBtZWRpYSBkZXZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODY5NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQt
Mi5odG1sCisKKyAgICAgICAgUmVmYWN0b3IgY29kZSB0byBpbnRyb2R1Y2UgYSBNb2NrRGV2aWNl
IHN0cnVjdHVyZSB0aGF0IGNhbiBiZSB1c2VkIGluIG11bHRpcGxlIHByb2Nlc3Nlcy4KKyAgICAg
ICAgVXBkYXRlIG1vY2sgc291cmNlcyBhbmQgY2VudGVyIHRvIHVzZSBNb2NrRGV2aWNlLgorICAg
ICAgICBBZGQgQVBJIHRvIHVwZGF0ZSBtb2NrIG1lZGlhIGRldmljZXMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRlZmF1bHREZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmRldmljZXMp
OgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjpjcmVhdGVDYXB0dXJlRGV2aWNlRnJvbU1vY2tEZXZpY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlc2V0RGV2aWNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RGV2aWNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkRGV2aWNlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVEZXZpY2Up
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVEZXZp
Y2VXaXRoUGVyc2lzdGVudElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlh
U291cmNlOjphdWRpb0RldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2U6OnZpZGVvRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6ZGlzcGxheURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2U6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrTWljcm9waG9uZVByb3BlcnRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrTWljcm9waG9uZVByb3BlcnRpZXM6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrQ2FtZXJhUHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDYW1lcmFQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0Rpc3Bs
YXlQcm9wZXJ0aWVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0Rpc3Bs
YXlQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0RldmljZTo6aXNN
aWNyb3Bob25lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tEZXZpY2U6OmlzQ2FtZXJh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tEZXZpY2U6OmlzRGlzcGxheSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrRGV2aWNlOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tEZXZpY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
RGV2aWNlOjpkZWNvZGVNb2NrRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tEZXZpY2U6
OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6ZGV2
aWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnNldE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0RGV2aWNl
cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6YWRk
RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpyZW1vdmVEZXZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNl
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjptb2NrQ2FtZXJhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjptb2NrU2NyZWVuIGNvbnN0KToKKwogMjAxOC0w
Ni0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTmVlZCB0
byBwcm9wZXJseSBoYW5kbGUgcmVtb3ZhbCBvZiB3b3JrZXIgaW4gU1dTZXJ2ZXI6OnVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHRpbWVyIGxhbWJkYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmOGMxZTRjNjdj
NmRiMzIyZWJhZGNiNjk0NTRjYmIzMWU0ODk2MGNjLi4xMWE0NmRiYzFjYTE5NGQxYTViZmM0Yzgy
OTkxZTVhZDQ4YzMxNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE4LTA2LTIyICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGNv
bnRyb2wgbW9jayBtZWRpYSBkZXZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY5NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgQVBJIHRvIGNsZWFyLCBzZXQsIHJlbW92ZSBhbmQgcmVzZXQg
bW9jayBtZWRpYSBkZXZpY2VzLgorICAgICAgICBUaGUgbW9jayBtZWRpYSBjZW50ZXIgb2YgVUlQ
cm9jZXNzIGFuZCBhbGwgV2ViUHJvY2Vzc2VzIGFyZSB1cGRhdGVkLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTW9j
a01lZGlhRGV2aWNlLmNwcDogQWRkZWQuCisgICAgICAgICh0eXBlRnJvbVN0cmluZyk6CisgICAg
ICAgIChXS0FkZE1vY2tNZWRpYURldmljZSk6CisgICAgICAgIChXS0NsZWFyTW9ja01lZGlhRGV2
aWNlcyk6CisgICAgICAgIChXS1JlbW92ZU1vY2tNZWRpYURldmljZSk6CisgICAgICAgIChXS1Jl
c2V0TW9ja01lZGlhRGV2aWNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01l
ZGlhRGV2aWNlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphZGRNb2NrTWVkaWFEZXZpY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y2xlYXJNb2NrTWVkaWFEZXZpY2Vz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZU1vY2tNZWRpYURldmlj
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXNldE1vY2tNZWRpYURldmlj
ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmFkZE1vY2tNZWRpYURl
dmljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNsZWFyTW9ja01lZGlhRGV2aWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlbW92ZU1vY2tNZWRpYURldmljZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0TW9ja01lZGlhRGV2aWNlcyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE4LTA2LTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXR3b3JrIFByZWZsaWdodHMgZG8gbm90IHNob3cg
aW4gV2ViSW5zcGVjdG9yIGFmdGVyIG1vdmluZyBDT1JTIGNoZWNrcyB0byBOZXR3b3JrUHJvY2Vz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4IDBjNzI1Zjk4MDlkNmJlOTczOTNj
Y2IzM2RmZjdkODE5MTY1OThmOWQuLjYxZmYwZWFhZTU2NDkwNDcyM2M0Y2I3MDAyZjU1YjRmZTQ4
ZDI5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKQEAgLTg4LDEzICs4OCwxNCBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuID0gdW5zaWdu
ZWQ7CiAgICAgRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuIGFkZERldmljZXNDaGFuZ2VkT2Jz
ZXJ2ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlRGV2aWNlc0No
YW5nZWRPYnNlcnZlcihEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4pOwotICAgIHZvaWQgY2Fw
dHVyZURldmljZXNDaGFuZ2VkKCk7CiAKICAgICB2b2lkIHNldFZpZGVvQ2FwdHVyZVBhZ2VTdGF0
ZShib29sLCBib29sKTsKIAogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIoKTsKIAorICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CisKICAgICBzdGF0aWMg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgcGxhdGZvcm1DZW50ZXIoKTsKICAgICBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlLmNwcAppbmRleCA5YzYwMjRlNTNhOGEwMGVkZmUzODFjMzExOGVhYzkyZTU4
MTMzZDdjLi4wMDJjYWYzMTIzNmVjYjY0NmJmODI0NDExODJjYjE1MDg3NDZjMDAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAjZW5kaWYKIAogICAgIGlmICghc2FtcGxlUmF0ZSgp
KQotICAgICAgICBzZXRTYW1wbGVSYXRlKGRldmljZSgpID09IE1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjpNb2NrRGV2aWNlOjpNaWNyb3Bob25lMSA/IDQ0MTAwIDogNDgwMDApOworICAgICAgICBz
ZXRTYW1wbGVSYXRlKFdURjo6Z2V0PE1vY2tNaWNyb3Bob25lUHJvcGVydGllcz4oZGV2aWNlKCku
cHJvcGVydGllcykuZGVmYXVsdFNhbXBsZVJhdGUpOwogCiAgICAgbV9zdGFydFRpbWUgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHJlbmRlckludGVy
dmFsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCBlMmU4ZjIzOWQ0ZGVmMzMzOWRjODg1NjQyMGZh
MzkzNGEwZDI3NTUzLi5jZTRlODgzNDI0NThiNDAyMTllN2E5MWFjYjU5Mjc5ZGFmNTZmOWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcApAQCAtNDQsMTE2ICs0NCwxNzUgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdHJ1Y3QgTW9ja0RldmljZUluZm8gewotICAgIGNvbnN0IGNoYXIqIGlkOwotICAg
IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZTsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwot
ICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpNb2NrRGV2aWNlIGRldmljZTsKLX07Ci0KLXN0
YXRpYyBjb25zdCBIYXNoTWFwPFN0cmluZywgTW9ja0RldmljZUluZm8+JiBkZXZpY2VNYXAoKQot
ewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGluZm9NYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
ewotICAgICAgICBzdGF0aWMgY29uc3QgTW9ja0RldmljZUluZm8gZGV2aWNlc1tdID0gewotICAg
ICAgICAgICAgeyAiMjM5YzI0YjAtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2IiwgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSwgIk1vY2sgYXVkaW8gZGV2aWNlIDEiLCBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja0RldmljZTo6TWljcm9waG9uZTEgfSwKLSAgICAg
ICAgICAgIHsgIjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUsICJNb2NrIGF1ZGlvIGRldmljZSAyIiwgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6Ok1vY2tEZXZpY2U6Ok1pY3JvcGhvbmUyIH0sCi0KLSAgICAg
ICAgICAgIHsgIjIzOWMyNGIyLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSwgIk1vY2sgdmlkZW8gZGV2aWNlIDEiLCBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6TW9ja0RldmljZTo6Q2FtZXJhMSB9LAotICAgICAgICAgICAgeyAi
MjM5YzI0YjMtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2IiwgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6Q2FtZXJhLCAiTW9jayB2aWRlbyBkZXZpY2UgMiIsIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlOjpNb2NrRGV2aWNlOjpDYW1lcmEyIH0sCi0KLSAgICAgICAgICAgIHsgIlNDUkVFTi0x
IiwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCAiTW9jayBzY3JlZW4gZGV2aWNl
IDEiLCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja0RldmljZTo6U2NyZWVuMSB9LAotICAg
ICAgICAgICAgeyAiU0NSRUVOLTIiLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4s
ICJNb2NrIHNjcmVlbiBkZXZpY2UgMiIsIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpNb2NrRGV2
aWNlOjpTY3JlZW4yIH0sCi0gICAgICAgIH07Ci0KLSAgICAgICAgSGFzaE1hcDxTdHJpbmcsIE1v
Y2tEZXZpY2VJbmZvPiBtYXA7Ci0gICAgICAgIGZvciAoYXV0byYgaW5mbyA6IGRldmljZXMpCi0g
ICAgICAgICAgICBtYXAuYWRkKEFTQ0lJTGl0ZXJhbChpbmZvLmlkKSwgaW5mbyk7CitzdGF0aWMg
aW5saW5lIFZlY3RvcjxNb2NrRGV2aWNlPiBkZWZhdWx0RGV2aWNlcygpCit7CisgICAgcmV0dXJu
IFZlY3RvcjxNb2NrRGV2aWNlPiB7CisgICAgICAgIE1vY2tEZXZpY2UgeyAiMjM5YzI0YjAtMmIx
NS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2IiwgIk1vY2sgYXVkaW8gZGV2aWNlIDEiLCBNb2NrTWlj
cm9waG9uZVByb3BlcnRpZXMgeyA0NDEwMCB9IH0sCisgICAgICAgIE1vY2tEZXZpY2UgeyAiMjM5
YzI0YjEtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2IiwgIk1vY2sgYXVkaW8gZGV2aWNlIDIi
LCBNb2NrTWljcm9waG9uZVByb3BlcnRpZXMgeyA0ODAwMCB9IH0sCisKKyAgICAgICAgTW9ja0Rl
dmljZSB7ICIyMzljMjRiMi0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiLCAiTW9jayB2aWRl
byBkZXZpY2UgMSIsIE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsgMzAsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVc2VyLCBDb2xvcjo6YmxhY2sgfSB9LAorICAg
ICAgICBNb2NrRGV2aWNlIHsgIjIzOWMyNGIzLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIs
ICJNb2NrIHZpZGVvIGRldmljZSAyIiwgTW9ja0NhbWVyYVByb3BlcnRpZXMgeyAxNSwgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OkVudmlyb25tZW50LCBDb2xv
cjo6ZGFya0dyYXkgfSB9LAorCisgICAgICAgIE1vY2tEZXZpY2UgeyAiU0NSRUVOLTEiLCAiTW9j
ayBzY3JlZW4gZGV2aWNlIDEiLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyAzMCwgQ29sb3I6Omxp
Z2h0R3JheSB9IH0sCisgICAgICAgIE1vY2tEZXZpY2UgeyAiU0NSRUVOLTEiLCAiTW9jayBzY3Jl
ZW4gZGV2aWNlIDIiLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyAxMCwgQ29sb3I6OnllbGxvdyB9
IH0KKyAgICB9OworfQorCitzdGF0aWMgVmVjdG9yPE1vY2tEZXZpY2U+JiBkZXZpY2VzKCkKK3sK
KyAgICBzdGF0aWMgYXV0byBkZXZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAg
ICAgcmV0dXJuIGRlZmF1bHREZXZpY2VzKCk7CisgICAgfSgpKTsKKyAgICByZXR1cm4gZGV2aWNl
czsKK30KKworc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBNb2NrRGV2aWNlPiYgZGV2aWNlTWFwKCkK
K3sKKyAgICBzdGF0aWMgYXV0byBtYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAg
ICBIYXNoTWFwPFN0cmluZywgTW9ja0RldmljZT4gbWFwOworICAgICAgICBmb3IgKGF1dG8mIGRl
dmljZSA6IGRldmljZXMoKSkKKyAgICAgICAgICAgIG1hcC5hZGQoZGV2aWNlLnBlcnNpc3RlbnRJ
ZCwgZGV2aWNlKTsKKwogICAgICAgICByZXR1cm4gbWFwOwogICAgIH0oKSk7CisgICAgcmV0dXJu
IG1hcDsKK30KIAotICAgIHJldHVybiBpbmZvTWFwOwordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6Y3JlYXRlQ2FwdHVyZURldmljZUZyb21Nb2NrRGV2aWNlKGNvbnN0IE1vY2tEZXZpY2Um
IGRldmljZSkKK3sKKyAgICBpZiAoZGV2aWNlLmlzTWljcm9waG9uZSgpKSB7CisgICAgICAgIGF1
ZGlvRGV2aWNlcygpLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lLCBkZXZpY2UucGVyc2lzdGVudElkKS52YWx1
ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGV2aWNlLmlzQ2FtZXJhKCkp
IHsKKyAgICAgICAgdmlkZW9EZXZpY2VzKCkuYXBwZW5kKGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lz
dGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSwgZGV2aWNlLnBlcnNpc3Rl
bnRJZCkudmFsdWUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKGRldmlj
ZS5pc0Rpc3BsYXkoKSk7CisgICAgZGlzcGxheURldmljZXMoKS5hcHBlbmQoY2FwdHVyZURldmlj
ZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBkZXZp
Y2UucGVyc2lzdGVudElkKS52YWx1ZSgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2
aWNlPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50
SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGlkKQordm9p
ZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXREZXZpY2VzKCkKIHsKLSAgICBBU1NFUlQo
IWlkLmlzRW1wdHkoKSk7CisgICAgc2V0RGV2aWNlcyhkZWZhdWx0RGV2aWNlcygpKTsKK30KIAot
ICAgIGF1dG8gbWFwID0gZGV2aWNlTWFwKCk7Ci0gICAgYXV0byBpdCA9IG1hcC5maW5kKGlkKTsK
LSAgICBpZiAoaXQgIT0gbWFwLmVuZCgpICYmIGl0LT52YWx1ZS50eXBlID09IHR5cGUpIHsKLSAg
ICAgICAgYXV0byBkZXZpY2UgPSBDYXB0dXJlRGV2aWNlKGl0LT52YWx1ZS5pZCwgaXQtPnZhbHVl
LnR5cGUsIGl0LT52YWx1ZS5uYW1lKTsKLSAgICAgICAgZGV2aWNlLnNldEVuYWJsZWQodHJ1ZSk7
Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKGRldmljZSk7Cit2b2lkIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlOjpzZXREZXZpY2VzKFZlY3RvcjxNb2NrRGV2aWNlPiYmIG5ld01vY2tEZXZpY2VzKQor
eworICAgIGF1dG8mIG1vY2tEZXZpY2VzID0gZGV2aWNlcygpOworICAgIGF1dG8mIG1hcCA9IGRl
dmljZU1hcCgpOworICAgIGF1dG8mIG1pY3JvcGhvbmVzID0gYXVkaW9EZXZpY2VzKCk7CisgICAg
YXV0byYgY2FtZXJhcyA9IHZpZGVvRGV2aWNlcygpOworICAgIGF1dG8mIGRpc3BsYXlzID0gZGlz
cGxheURldmljZXMoKTsKKworICAgIG1vY2tEZXZpY2VzID0gV1RGTW92ZShuZXdNb2NrRGV2aWNl
cyk7CisKKyAgICBtYXAuY2xlYXIoKTsKKyAgICBtaWNyb3Bob25lcy5jbGVhcigpOworICAgIGNh
bWVyYXMuY2xlYXIoKTsKKyAgICBkaXNwbGF5cy5jbGVhcigpOworCisgICAgZm9yIChjb25zdCBh
dXRvJiBkZXZpY2UgOiBtb2NrRGV2aWNlcykgeworICAgICAgICBtYXAuYWRkKGRldmljZS5wZXJz
aXN0ZW50SWQsIGRldmljZSk7CisgICAgICAgIGNyZWF0ZUNhcHR1cmVEZXZpY2VGcm9tTW9ja0Rl
dmljZShkZXZpY2UpOwogICAgIH0KK30KIAotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit2b2lk
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjphZGREZXZpY2UoY29uc3QgTW9ja0RldmljZSYgZGV2
aWNlKQoreworICAgIGRldmljZXMoKS5hcHBlbmQoZGV2aWNlKTsKKyAgICBkZXZpY2VNYXAoKS5h
ZGQoZGV2aWNlLnBlcnNpc3RlbnRJZCwgZGV2aWNlKTsKKyAgICBjcmVhdGVDYXB0dXJlRGV2aWNl
RnJvbU1vY2tEZXZpY2UoZGV2aWNlKTsKIH0KIAotVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXVkaW9EZXZpY2VzKCkKK3ZvaWQgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2U6OnJlbW92ZURldmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCkKK3sKKyAg
ICBhdXRvJiBtYXAgPSBkZXZpY2VNYXAoKTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbWFwLmZpbmQo
cGVyc2lzdGVudElkKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbWFwLmVuZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvJiBkZXZpY2UgPSBpdGVyYXRvci0+dmFsdWU7CisKKyAgICBhdXRv
IG1hdGNoTW9ja0RldmljZUNyaXRlcmlhID0gWyZwZXJzaXN0ZW50SWRdKGNvbnN0IE1vY2tEZXZp
Y2UmIGRldmljZSkgeworICAgICAgICByZXR1cm4gZGV2aWNlLnBlcnNpc3RlbnRJZCA9PSBwZXJz
aXN0ZW50SWQ7CisgICAgfTsKKyAgICBkZXZpY2VzKCkucmVtb3ZlRmlyc3RNYXRjaGluZyhtYXRj
aE1vY2tEZXZpY2VDcml0ZXJpYSk7CisKKyAgICBhdXRvIG1hdGNoQ2FwdHVyZURldmljZUNyaXRl
cmlhID0gWyZwZXJzaXN0ZW50SWRdKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSkgeworICAg
ICAgICByZXR1cm4gZGV2aWNlLnBlcnNpc3RlbnRJZCgpID09IHBlcnNpc3RlbnRJZDsKKyAgICB9
OworICAgIGlmIChkZXZpY2UuaXNNaWNyb3Bob25lKCkpCisgICAgICAgIGF1ZGlvRGV2aWNlcygp
LnJlbW92ZUZpcnN0TWF0Y2hpbmcobWF0Y2hDYXB0dXJlRGV2aWNlQ3JpdGVyaWEpOworICAgIGVs
c2UgaWYgKGRldmljZS5pc0NhbWVyYSgpKQorICAgICAgICB2aWRlb0RldmljZXMoKS5yZW1vdmVG
aXJzdE1hdGNoaW5nKG1hdGNoQ2FwdHVyZURldmljZUNyaXRlcmlhKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgQVNTRVJUKGRldmljZS5pc0Rpc3BsYXkoKSk7CisgICAgICAgIGRpc3BsYXlEZXZpY2Vz
KCkucmVtb3ZlRmlyc3RNYXRjaGluZyhtYXRjaENhcHR1cmVEZXZpY2VDcml0ZXJpYSk7CisgICAg
fQorCisgICAgbWFwLnJlbW92ZShpdGVyYXRvcik7Cit9CisKK3N0ZDo6b3B0aW9uYWw8Q2FwdHVy
ZURldmljZT4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lz
dGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBpZCkK
IHsKLSAgICBzdGF0aWMgYXV0byBpbmZvID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAg
ICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IHZlY3RvcjsKKyAgICBBU1NFUlQoIWlkLmlzRW1wdHko
KSk7CiAKLSAgICAgICAgYXV0byBjYXB0dXJlRGV2aWNlID0gY2FwdHVyZURldmljZVdpdGhQZXJz
aXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSwgQVNDSUlMaXRl
cmFsKCIyMzljMjRiMC0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiKSk7Ci0gICAgICAgIEFT
U0VSVChjYXB0dXJlRGV2aWNlKTsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChXVEZNb3ZlKGNhcHR1
cmVEZXZpY2UudmFsdWUoKSkpOworICAgIGF1dG8gbWFwID0gZGV2aWNlTWFwKCk7CisgICAgYXV0
byBpdGVyYXRvciA9IG1hcC5maW5kKGlkKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbWFwLmVuZCgp
IHx8IGl0ZXJhdG9yLT52YWx1ZS50eXBlKCkgIT0gdHlwZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgICAgICBjYXB0dXJlRGV2aWNlID0gY2FwdHVyZURldmljZVdpdGhQZXJz
aXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSwgQVNDSUlMaXRl
cmFsKCIyMzljMjRiMS0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiKSk7Ci0gICAgICAgIEFT
U0VSVChjYXB0dXJlRGV2aWNlKTsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChXVEZNb3ZlKGNhcHR1
cmVEZXZpY2UudmFsdWUoKSkpOworICAgIENhcHR1cmVEZXZpY2UgZGV2aWNlIHsgaXRlcmF0b3It
PnZhbHVlLnBlcnNpc3RlbnRJZCwgdHlwZSwgaXRlcmF0b3ItPnZhbHVlLmxhYmVsIH07CisgICAg
ZGV2aWNlLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgcmV0dXJuIFdURk1vdmUoZGV2aWNlKTsKK30K
IAotICAgICAgICByZXR1cm4gdmVjdG9yOworVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6YXVkaW9EZXZpY2VzKCkKK3sKKyAgICBzdGF0aWMgYXV0byBhdWRp
b0RldmljZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBWZWN0b3I8Q2FwdHVy
ZURldmljZT4gYXVkaW9EZXZpY2VzOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRldmljZSA6
IGRldmljZXMoKSkgeworICAgICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0gQ2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSkKKyAgICAgICAgICAgICAgICBhdWRpb0Rldmlj
ZXMuYXBwZW5kKGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGU6Ok1pY3JvcGhvbmUsIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVlKCkpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBhdWRpb0RldmljZXM7CiAgICAgfSgpKTsKLSAgICByZXR1
cm4gaW5mbzsKKyAgICByZXR1cm4gYXVkaW9EZXZpY2VzOwogfQogCiBWZWN0b3I8Q2FwdHVyZURl
dmljZT4mIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb0RldmljZXMoKQogewotICAgIHN0
YXRpYyBhdXRvIGluZm8gPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBWZWN0b3I8
Q2FwdHVyZURldmljZT4gdmVjdG9yOwotCi0gICAgICAgIGF1dG8gY2FwdHVyZURldmljZSA9IGNh
cHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNh
bWVyYSwgQVNDSUlMaXRlcmFsKCIyMzljMjRiMi0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYi
KSk7Ci0gICAgICAgIEFTU0VSVChjYXB0dXJlRGV2aWNlKTsKLSAgICAgICAgdmVjdG9yLmFwcGVu
ZChXVEZNb3ZlKGNhcHR1cmVEZXZpY2UudmFsdWUoKSkpOwotCi0gICAgICAgIGNhcHR1cmVEZXZp
Y2UgPSBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpDYW1lcmEsIEFTQ0lJTGl0ZXJhbCgiMjM5YzI0YjMtMmIxNS0xMWUzLTgyMjQtMDgwMDIw
MGM5YTY2IikpOwotICAgICAgICBBU1NFUlQoY2FwdHVyZURldmljZSk7Ci0gICAgICAgIHZlY3Rv
ci5hcHBlbmQoV1RGTW92ZShjYXB0dXJlRGV2aWNlLnZhbHVlKCkpKTsKLQotICAgICAgICByZXR1
cm4gdmVjdG9yOworICAgIHN0YXRpYyBhdXRvIHZpZGVvRGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7CisgICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiB2aWRlb0RldmljZXM7Cisg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV2aWNlIDogZGV2aWNlcygpKSB7CisgICAgICAgICAg
ICBpZiAoZGV2aWNlLnR5cGUoKSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEp
CisgICAgICAgICAgICAgICAgdmlkZW9EZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBl
cnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEsIGRldmljZS5wZXJz
aXN0ZW50SWQpLnZhbHVlKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2aWRlb0Rldmlj
ZXM7CiAgICAgfSgpKTsKLSAgICByZXR1cm4gaW5mbzsKKyAgICByZXR1cm4gdmlkZW9EZXZpY2Vz
OwogfQogCiBWZWN0b3I8Q2FwdHVyZURldmljZT4mIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpk
aXNwbGF5RGV2aWNlcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gZGV2aWNlcyA9IG1ha2VOZXZlckRl
c3Ryb3llZChbXSB7Ci0gICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiB2ZWN0b3I7Ci0KLSAg
ICAgICAgYXV0byBjYXB0dXJlRGV2aWNlID0gY2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQo
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBBU0NJSUxpdGVyYWwoIlNDUkVFTi0x
IikpOwotICAgICAgICBBU1NFUlQoY2FwdHVyZURldmljZSk7Ci0gICAgICAgIHZlY3Rvci5hcHBl
bmQoV1RGTW92ZShjYXB0dXJlRGV2aWNlLnZhbHVlKCkpKTsKLQotICAgICAgICBjYXB0dXJlRGV2
aWNlID0gY2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZTo6U2NyZWVuLCBBU0NJSUxpdGVyYWwoIlNDUkVFTi0yIikpOwotICAgICAgICBBU1NFUlQo
Y2FwdHVyZURldmljZSk7Ci0gICAgICAgIHZlY3Rvci5hcHBlbmQoV1RGTW92ZShjYXB0dXJlRGV2
aWNlLnZhbHVlKCkpKTsKLQotICAgICAgICByZXR1cm4gdmVjdG9yOworICAgIHN0YXRpYyBhdXRv
IGRpc3BsYXlEZXZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgVmVjdG9y
PENhcHR1cmVEZXZpY2U+IGRpc3BsYXlEZXZpY2VzOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGRldmljZSA6IGRldmljZXMoKSkgeworICAgICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0g
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuKQorICAgICAgICAgICAgICAgIGRpc3Bs
YXlEZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVlKCkpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBkaXNwbGF5RGV2aWNlczsKICAgICB9KCkpOwogCi0g
ICAgcmV0dXJuIGRldmljZXM7CisgICAgcmV0dXJuIGRpc3BsYXlEZXZpY2VzOwogfQogCiBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5n
JiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKGlkLCB0eXBlLCBuYW1lKQorICAgICwgbV9kZXZp
Y2UoZGV2aWNlTWFwKCkuZ2V0KGlkKSkKIHsKICAgICBBU1NFUlQodHlwZSAhPSBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlOjpOb25lKTsKLQotICAgIGF1dG8gbWFwID0gZGV2aWNlTWFwKCk7Ci0g
ICAgYXV0byBpdCA9IG1hcC5maW5kKGlkKTsKLSAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsK
LQotICAgIG1fZGV2aWNlID0gaXQtPnZhbHVlLmRldmljZTsKICAgICBzZXRQZXJzaXN0ZW50SUQo
U3RyaW5nKGlkKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCBhMWQzZTliNjFiNjExMzM2NWE3ODQz
MDAyODNiOTRhNWUxMWZhNzVmLi45NzcyN2UyN2VjMjgxNTZmNjcyOGRhYWVkOTgxN2JhOGExYzM3
ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZS5oCkBAIC0zMiwyNyArMzIsMTc5IEBACiAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogCisjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDYXB0dXJl
RGV2aWNlOworc3RydWN0IE1vY2tNaWNyb3Bob25lUHJvcGVydGllcyB7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBkZWZhdWx0U2FtcGxlUmF0ZTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2Nr
TWljcm9waG9uZVByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGRlZmF1bHRTYW1wbGVSYXRlOworICAgICAgICBkZWNv
ZGVyID4+IGRlZmF1bHRTYW1wbGVSYXRlOworICAgICAgICBpZiAoIWRlZmF1bHRTYW1wbGVSYXRl
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIE1vY2tN
aWNyb3Bob25lUHJvcGVydGllcyB7ICpkZWZhdWx0U2FtcGxlUmF0ZSB9OworICAgIH0KKworICAg
IGludCBkZWZhdWx0U2FtcGxlUmF0ZSB7IDQ0MTAwIH07Cit9OworCisvLyBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIG90aGVyIHByb3BlcnRpZXMgYW5kIHNlcmlhbGl6YXRpb24gb2YgY29sb3JzLgor
c3RydWN0IE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBlbmNvZGVyIDw8IGRlZmF1bHRGcmFtZVJhdGU7CisgICAgICAgIGVuY29kZXIgPDwgZmFjaW5n
TW9kZUNhcGFiaWxpdHk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0NhbWVyYVByb3BlcnRpZXM+IGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRlZmF1
bHRGcmFtZVJhdGU7CisgICAgICAgIGRlY29kZXIgPj4gZGVmYXVsdEZyYW1lUmF0ZTsKKyAgICAg
ICAgaWYgKCFkZWZhdWx0RnJhbWVSYXRlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlPiBmYWNpbmdNb2RlQ2FwYWJpbGl0eTsKKyAgICAgICAgZGVjb2RlciA+
PiBmYWNpbmdNb2RlQ2FwYWJpbGl0eTsKKyAgICAgICAgaWYgKCFmYWNpbmdNb2RlQ2FwYWJpbGl0
eSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIE1v
Y2tDYW1lcmFQcm9wZXJ0aWVzIHsgKmRlZmF1bHRGcmFtZVJhdGUsICpmYWNpbmdNb2RlQ2FwYWJp
bGl0eSwgQ29sb3I6OmJsYWNrIH07CisgICAgfQorCisgICAgZG91YmxlIGRlZmF1bHRGcmFtZVJh
dGUgeyAzMCB9OworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdN
b2RlIGZhY2luZ01vZGVDYXBhYmlsaXR5IHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGU6OlVzZXIgfTsKKyAgICBDb2xvciBmaWxsQ29sb3IgeyBDb2xvcjo6Ymxh
Y2sgfTsKK307CisKK3N0cnVjdCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgZGVmYXVsdEZyYW1lUmF0ZTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2Nr
RGlzcGxheVByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRlZmF1bHRGcmFtZVJhdGU7CisgICAgICAgIGRlY29k
ZXIgPj4gZGVmYXVsdEZyYW1lUmF0ZTsKKyAgICAgICAgaWYgKCFkZWZhdWx0RnJhbWVSYXRlKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4gTW9ja0Rp
c3BsYXlQcm9wZXJ0aWVzIHsgKmRlZmF1bHRGcmFtZVJhdGUsIENvbG9yOjpsaWdodEdyYXkgfTsK
KyAgICB9CisKKyAgICBkb3VibGUgZGVmYXVsdEZyYW1lUmF0ZSB7IDMwIH07CisgICAgQ29sb3Ig
ZmlsbENvbG9yIHsgQ29sb3I6OmxpZ2h0R3JheSB9OworfTsKKworc3RydWN0IE1vY2tEZXZpY2Ug
eworICAgIGJvb2wgaXNNaWNyb3Bob25lKCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxNb2NrTWljcm9waG9uZVByb3BlcnRpZXM+KHByb3BlcnRpZXMpOyB9CisgICAgYm9v
bCBpc0NhbWVyYSgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TW9ja0Nh
bWVyYVByb3BlcnRpZXM+KHByb3BlcnRpZXMpOyB9CisgICAgYm9vbCBpc0Rpc3BsYXkoKSBjb25z
dCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1vY2tEaXNwbGF5UHJvcGVydGllcz4o
cHJvcGVydGllcyk7IH0KKworICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSgpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoaXNNaWNyb3Bob25lKCkpCisgICAgICAgICAgICByZXR1
cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZTsKKyAgICAgICAgaWYgKGlz
Q2FtZXJhKCkpCisgICAgICAgICAgICByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
Q2FtZXJhOworICAgICAgICBBU1NFUlQoaXNEaXNwbGF5KCkpOworICAgICAgICByZXR1cm4gQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudElkOworICAgICAgICBlbmNvZGVyIDw8
IGxhYmVsOworICAgICAgICBzd2l0Y2hPbihwcm9wZXJ0aWVzLCBbJl0oY29uc3QgTW9ja01pY3Jv
cGhvbmVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8ICh1
aW50OF90KTE7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHByb3BlcnRpZXM7CisgICAgICAgIH0s
IFsmXShjb25zdCBNb2NrQ2FtZXJhUHJvcGVydGllcyYgcHJvcGVydGllcykgeworICAgICAgICAg
ICAgZW5jb2RlciA8PCAodWludDhfdCkyOworICAgICAgICAgICAgZW5jb2RlciA8PCBwcm9wZXJ0
aWVzOworICAgICAgICB9LCBbJl0oY29uc3QgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzJiBwcm9wZXJ0
aWVzKSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8ICh1aW50OF90KTM7CisgICAgICAgICAgICBl
bmNvZGVyIDw8IHByb3BlcnRpZXM7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBQcm9wZXJ0aWVzLCB0eXBlbmFtZSBEZWNvZGVyPgorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPE1vY2tEZXZpY2U+IGRlY29kZU1vY2tEZXZpY2UoRGVjb2RlciYgZGVjb2Rlciwg
U3RyaW5nJiYgcGVyc2lzdGVudElkLCBTdHJpbmcmJiBsYWJlbCkKKyAgICB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8UHJvcGVydGllcz4gcHJvcGVydGllczsKKyAgICAgICAgZGVjb2RlciA+PiBw
cm9wZXJ0aWVzOworICAgICAgICBpZiAoIXByb3BlcnRpZXMpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gTW9ja0RldmljZSB7IFdURk1vdmUocGVyc2lz
dGVudElkKSwgV1RGTW92ZShsYWJlbCksIFdURk1vdmUoKnByb3BlcnRpZXMpIH07CisgICAgfQor
CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
TW9ja0RldmljZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gcGVyc2lzdGVudElkOworICAgICAgICBkZWNvZGVyID4+IHBlcnNp
c3RlbnRJZDsKKyAgICAgICAgaWYgKCFwZXJzaXN0ZW50SWQpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAg
ICAgICAgZGVjb2RlciA+PiBsYWJlbDsKKyAgICAgICAgaWYgKCFsYWJlbCkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50OF90PiBp
bmRleDsKKyAgICAgICAgZGVjb2RlciA+PiBpbmRleDsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3dpdGNoICgqaW5kZXgp
IHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgcmV0dXJuIGRlY29kZU1vY2tEZXZpY2U8
TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzPihkZWNvZGVyLCBXVEZNb3ZlKCpwZXJzaXN0ZW50SWQp
LCBXVEZNb3ZlKCpsYWJlbCkpOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXR1cm4g
ZGVjb2RlTW9ja0RldmljZTxNb2NrQ2FtZXJhUHJvcGVydGllcz4oZGVjb2RlciwgV1RGTW92ZSgq
cGVyc2lzdGVudElkKSwgV1RGTW92ZSgqbGFiZWwpKTsKKyAgICAgICAgY2FzZSAzOgorICAgICAg
ICAgICAgcmV0dXJuIGRlY29kZU1vY2tEZXZpY2U8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihkZWNv
ZGVyLCBXVEZNb3ZlKCpwZXJzaXN0ZW50SWQpLCBXVEZNb3ZlKCpsYWJlbCkpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgU3RyaW5nIHBlcnNp
c3RlbnRJZDsKKyAgICBTdHJpbmcgbGFiZWw7CisgICAgVmFyaWFudDxNb2NrTWljcm9waG9uZVBy
b3BlcnRpZXMsIE1vY2tDYW1lcmFQcm9wZXJ0aWVzLCBNb2NrRGlzcGxheVByb3BlcnRpZXM+IHBy
b3BlcnRpZXM7Cit9OwogCiBjbGFzcyBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSA6IHB1YmxpYyBS
ZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZSgpID0gZGVmYXVsdDsKIAorICAgIHN0YXRpYyB2b2lkIHNldERldmljZXMoVmVj
dG9yPE1vY2tEZXZpY2U+JiYpOworICAgIHN0YXRpYyB2b2lkIGFkZERldmljZShjb25zdCBNb2Nr
RGV2aWNlJik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVy
c2lzdGVudElkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZXNldERldmljZXMo
KTsKKwogICAgIHN0YXRpYyBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGF1ZGlvRGV2aWNlcygpOwog
ICAgIHN0YXRpYyBWZWN0b3I8Q2FwdHVyZURldmljZT4mIHZpZGVvRGV2aWNlcygpOwogICAgIHN0
YXRpYyBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGRpc3BsYXlEZXZpY2VzKCk7CiAKICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3Rl
bnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIGVu
dW0gY2xhc3MgTW9ja0RldmljZSB7IEludmFsaWQsIE1pY3JvcGhvbmUxLCBNaWNyb3Bob25lMiwg
Q2FtZXJhMSwgQ2FtZXJhMiwgU2NyZWVuMSwgU2NyZWVuMiB9OwotCiBwcm90ZWN0ZWQ6CiAgICAg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKIAorICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUNhcHR1cmVEZXZpY2VGcm9tTW9j
a0RldmljZShjb25zdCBNb2NrRGV2aWNlJik7CisKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2V0
dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSA9IDA7CkBAIC02Miw4ICsy
MTQsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAKLSAgICBNb2NrRGV2aWNlIGRldmlj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlOyB9Ci0gICAgTW9ja0RldmljZSBtX2RldmljZSB7
IE1vY2tEZXZpY2U6OkludmFsaWQgfTsKKyAgICBjb25zdCBNb2NrRGV2aWNlJiBkZXZpY2UoKSBj
b25zdCB7IHJldHVybiBtX2RldmljZTsgfQorICAgIE1vY2tEZXZpY2UgbV9kZXZpY2U7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuY3BwCmluZGV4IDc3YTBmOGVkZDNjYjdmNmFlMjMzYjc1MDMwMTIxNTM2ODIwMDcw
MWMuLmI4ZDk3MGUwZGZiZDUwNzIzZGFjY2QzN2RmZTFmM2Q3NzhiNjA0ZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwCkBAIC0zNywxNiArMzcsMzkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoYm9vbCBlbmFibGVkKQorTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXImIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24o
KQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcj4gY2VudGVyOworICAgIHJldHVybiBjZW50ZXI7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNldE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxl
ZChib29sIGVuYWJsZWQpCit7CiAgICAgc3RhdGljIGJvb2wgYWN0aXZlID0gZmFsc2U7CiAgICAg
aWYgKGFjdGl2ZSAhPSBlbmFibGVkKSB7CiAgICAgICAgIGFjdGl2ZSA9IGVuYWJsZWQ7Ci0gICAg
ICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJy
aWRlKGVuYWJsZWQgPyAmY2VudGVyLmdldCgpIDogbnVsbHB0cik7CisgICAgICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKGVuYWJsZWQg
PyAmc2luZ2xldG9uKCkgOiBudWxscHRyKTsKICAgICB9CiB9CiAKK3ZvaWQgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNldERldmljZXMoVmVjdG9yPE1vY2tEZXZpY2U+JiYgbmV3TW9j
a0RldmljZXMpCit7CisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMoV1RG
TW92ZShuZXdNb2NrRGV2aWNlcykpOworICAgIHNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hh
bmdlZCgpOworfQorCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphZGREZXZp
Y2UoY29uc3QgTW9ja0RldmljZSYgZGV2aWNlKQoreworICAgIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjphZGREZXZpY2UoZGV2aWNlKTsKKyAgICBzaW5nbGV0b24oKS5jYXB0dXJlRGV2aWNlc0No
YW5nZWQoKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6cmVtb3Zl
RGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKQoreworICAgIE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlOjpyZW1vdmVEZXZpY2UocGVyc2lzdGVudElkKTsKKyAgICBzaW5nbGV0b24oKS5j
YXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAppbmRl
eCAwZjkyZjlkNDNmOTg5YmE2ZThjM2FhOGYzNWM0MDRlYjhiNDI5ZjNmLi41YjZlYjE5YTk5NTM1
MTJjYjA4MWYzMTZiMzNjYjYxNzQ1NTUxNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCkBA
IC0zOSw2ICszOSwxMCBAQCBjbGFzcyBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciBmaW5h
bCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyIHsKIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVu
YWJsZWQoYm9vbCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXREZXZpY2Vz
KFZlY3RvcjxNb2NrRGV2aWNlPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBh
ZGREZXZpY2UoY29uc3QgTW9ja0RldmljZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHJlbW92ZURldmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCk7CisKICAgICBzdGF0
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgdmlkZW9DYXB0dXJl
U291cmNlRmFjdG9yeSgpIHsgcmV0dXJuIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpmYWN0b3J5
KCk7IH0KICAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9y
eSYgYXVkaW9DYXB0dXJlU291cmNlRmFjdG9yeSgpIHsgcmV0dXJuIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlOjpmYWN0b3J5KCk7IH0KIApAQCAtNDYsNiArNTAsOCBAQCBwcml2YXRlOgogICAgIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKCkgPSBkZWZhdWx0OwogICAgIGZyaWVuZCBOZXZl
ckRlc3Ryb3llZDxNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcj47CiAKKyAgICBzdGF0aWMg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIHNpbmdsZXRvbigpOworCiAgICAgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSYgYXVkaW9GYWN0b3J5KCkgZmluYWwg
eyByZXR1cm4gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmZhY3RvcnkoKTsgfQogICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIHZpZGVvRmFjdG9yeSgpIGZpbmFs
IHsgcmV0dXJuIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpmYWN0b3J5KCk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcAppbmRleCBlZGVkYTgzYTBlM2M1NzcyYmQ3MGM4Yjc0ZGQ5OGU0ZTA2MmRjMjhhLi43
OTk2MTRhOTAwMWY3ZDk5Nzg5OThlNjg4OTc4N2NmNTIyOGIxOTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cApAQCAtMTA4LDMxICsxMDgsMTggQEAgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFs
dGltZVZpZGVvU291cmNlKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQsIGNvbnN0IFMKICAgICA6IE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlKGRldmljZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpWaWRlbywgbmFtZSkKICAgICAsIG1fdGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAm
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUpCiB7Ci0gICAgc3dpdGNoIChk
ZXZpY2UoKSkgewotICAgIGNhc2UgTW9ja0RldmljZTo6Q2FtZXJhMToKLSAgICAgICAgc2V0RnJh
bWVSYXRlKDMwKTsKLSAgICAgICAgc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OlVzZXIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1vY2tEZXZpY2U6OkNhbWVy
YTI6Ci0gICAgICAgIHNldEZyYW1lUmF0ZSgxNSk7Ci0gICAgICAgIHNldEZhY2luZ01vZGUoUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpFbnZpcm9ubWVudCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTW9ja0RldmljZTo6U2NyZWVuMToKLSAgICAgICAgc2V0RnJhbWVSYXRlKDMwKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpTY3JlZW4yOgotICAgICAgICBz
ZXRGcmFtZVJhdGUoMTApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1vY2tEZXZpY2U6Ok1p
Y3JvcGhvbmUxOgotICAgIGNhc2UgTW9ja0RldmljZTo6TWljcm9waG9uZTI6Ci0gICAgY2FzZSBN
b2NrRGV2aWNlOjpJbnZhbGlkOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCiAgICAgbV9kYXNoV2lkdGhzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoMik7CiAgICAgbV9kYXNoV2lkdGhzLnVuY2hlY2tlZEFwcGVuZCg2KTsKICAgICBtX2Rhc2hX
aWR0aHMudW5jaGVja2VkQXBwZW5kKDYpOworCisgICAgaWYgKG1vY2tTY3JlZW4oKSkgeworICAg
ICAgICBzZXRGcmFtZVJhdGUoV1RGOjpnZXQ8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihkZXZpY2Uo
KS5wcm9wZXJ0aWVzKS5kZWZhdWx0RnJhbWVSYXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8mIHByb3BlcnRpZXMgPSBXVEY6OmdldDxNb2NrQ2FtZXJhUHJvcGVydGllcz4o
ZGV2aWNlKCkucHJvcGVydGllcyk7CisgICAgc2V0RnJhbWVSYXRlKHByb3BlcnRpZXMuZGVmYXVs
dEZyYW1lUmF0ZSk7CisgICAgc2V0RmFjaW5nTW9kZShwcm9wZXJ0aWVzLmZhY2luZ01vZGVDYXBh
YmlsaXR5KTsKIH0KIAogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6On5Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZSgpCkBAIC0xOTEsMTAgKzE3OCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OnVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluCiB2
b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcykKIHsKICAgICBpZiAobW9j
a0NhbWVyYSgpKSB7Ci0gICAgICAgIGlmIChkZXZpY2UoKSA9PSBNb2NrRGV2aWNlOjpDYW1lcmEx
KQotICAgICAgICAgICAgY2FwYWJpbGl0aWVzLmFkZEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpVc2VyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FwYWJpbGl0
aWVzLmFkZEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpFbnZpcm9ubWVu
dCk7CisgICAgICAgIGNhcGFiaWxpdGllcy5hZGRGYWNpbmdNb2RlKFdURjo6Z2V0PE1vY2tDYW1l
cmFQcm9wZXJ0aWVzPihkZXZpY2UoKS5wcm9wZXJ0aWVzKS5mYWNpbmdNb2RlQ2FwYWJpbGl0eSk7
CiAKICAgICAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2Uo
MzIwLCAxOTIwKSk7CiAgICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZh
bHVlT3JSYW5nZSgyNDAsIDEwODApKTsKQEAgLTM5Miw3ICszNzYsNyBAQCB2b2lkIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
ICAgIGNvbnRleHQuZHJhd1RleHQoc3RhdHNGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmlu
ZykpKSwgc3RhdHNMb2NhdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3RhdHNMb2NhdGlv
bi5tb3ZlKDAsIG1fc3RhdHNGb250U2l6ZSk7Ci0gICAgICAgIGNvbnRleHQuZHJhd1RleHQoc3Rh
dHNGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KGRldmljZSgpID09IE1vY2tEZXZpY2U6OlNjcmVl
bjEgPyAiU2NyZWVuIDEiIDogIlNjcmVlbiAyIikpKSwgc3RhdHNMb2NhdGlvbik7CisgICAgICAg
IGNvbnRleHQuZHJhd1RleHQoc3RhdHNGb250LCBUZXh0UnVuIHsgaWQoKSB9LCBzdGF0c0xvY2F0
aW9uKTsKICAgICB9CiAKICAgICBGbG9hdFBvaW50IGJpcEJvcExvY2F0aW9uKHNpemUud2lkdGgo
KSAqIC42LCBzaXplLmhlaWdodCgpICogLjYpOwpAQCAtNDMxLDI3ICs0MTUsNyBAQCB2b2lkIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5lcmF0ZUZyYW1lKCkKICAgICBhdXRvJiBzaXplID0g
dGhpcy0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QoRmxvYXRQb2ludCgpLCBzaXpl
KTsKIAotICAgIENvbG9yIGZpbGxDb2xvcjsKLSAgICBzd2l0Y2ggKGRldmljZSgpKSB7Ci0gICAg
Y2FzZSBNb2NrRGV2aWNlOjpDYW1lcmExOgotICAgICAgICBmaWxsQ29sb3IgPSBDb2xvcjo6Ymxh
Y2s7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTW9ja0RldmljZTo6Q2FtZXJhMjoKLSAgICAg
ICAgZmlsbENvbG9yID0gQ29sb3I6OmRhcmtHcmF5OwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1vY2tEZXZpY2U6OlNjcmVlbjE6Ci0gICAgICAgIGZpbGxDb2xvciA9IENvbG9yOjpsaWdodEdy
YXk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTW9ja0RldmljZTo6U2NyZWVuMjoKLSAgICAg
ICAgZmlsbENvbG9yID0gQ29sb3I6OnllbGxvdzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBN
b2NrRGV2aWNlOjpNaWNyb3Bob25lMToKLSAgICBjYXNlIE1vY2tEZXZpY2U6Ok1pY3JvcGhvbmUy
OgotICAgIGNhc2UgTW9ja0RldmljZTo6SW52YWxpZDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQorICAgIGF1dG8gZmlsbENvbG9yID0gbW9j
a0NhbWVyYSgpID8gV1RGOjpnZXQ8TW9ja0NhbWVyYVByb3BlcnRpZXM+KGRldmljZSgpLnByb3Bl
cnRpZXMpLmZpbGxDb2xvciA6IFdURjo6Z2V0PE1vY2tEaXNwbGF5UHJvcGVydGllcz4oZGV2aWNl
KCkucHJvcGVydGllcykuZmlsbENvbG9yOwogICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgc2l6ZSksIGZpbGxDb2xvcik7CiAKICAgICBpZiAoIW11dGVkKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaAppbmRleCBiZDUyNjgyNmZmMDQ4MmI0NGZjNDlhNGM4NjA3YjY2NjgwOTRjZjQ3
Li5hNjU4OWI4NzU0ODc3MDRlOGI0ODg3YTQ1MmVlMzdkOTc3MTBhNjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5o
CkBAIC04Myw4ICs4Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRlbGF5U2FtcGxlcyhTZWNv
bmRzKSBvdmVycmlkZTsKIAotICAgIGJvb2wgbW9ja0NhbWVyYSgpIGNvbnN0IHsgcmV0dXJuIGRl
dmljZSgpID09IE1vY2tEZXZpY2U6OkNhbWVyYTEgfHwgZGV2aWNlKCkgPT0gTW9ja0RldmljZTo6
Q2FtZXJhMjsgfQotICAgIGJvb2wgbW9ja1NjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGRldmljZSgp
ID09IE1vY2tEZXZpY2U6OlNjcmVlbjEgfHwgZGV2aWNlKCkgPT0gTW9ja0RldmljZTo6U2NyZWVu
MjsgfQorICAgIGJvb2wgbW9ja0NhbWVyYSgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8TW9ja0NhbWVyYVByb3BlcnRpZXM+KGRldmljZSgpLnByb3BlcnRpZXMpOyB9Cisg
ICAgYm9vbCBtb2NrU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxNb2NrRGlzcGxheVByb3BlcnRpZXM+KGRldmljZSgpLnByb3BlcnRpZXMpOyB9CiAKICAgICBm
bG9hdCBtX2Jhc2VGb250U2l6ZSB7IDAgfTsKICAgICBmbG9hdCBtX2JpcEJvcEZvbnRTaXplIHsg
MCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNDdmYWIz
ODRiYzRkNDNiNTRiZWI3NWU1NjllODg4NjEyOGY0YmQxNC4uNWQ1OTg1YzQ2MWUyNTNjNGQwMjEz
ZjNjZDFiMzQwYmZhNjRlMzQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CkBAIC0zODgsNiArMzg4LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAg
ICAgICAgICdXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyc6IFsnPFdlYkNvcmUvQ29va2ll
c1N0cmF0ZWd5Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCc6IFsn
PFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6S2V5cHJlc3ND
b21tYW5kJzogWyc8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+J10sCisgICAgICAgICdXZWJDb3Jl
OjpNb2NrRGV2aWNlJzogWyc8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oPiddLAog
ICAgICAgICAnV2ViQ29yZTo6TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24nOiBbJzxXZWJD
b3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhJzogWyc8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UnOiBbJzxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4nXSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMzI5OTAzY2NmYTk1ZDI0ZjVjZDcyYTkzZGUzYzQ1MTcyOWMxNjE4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVk
aWFEZXZpY2UuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
S01vY2tNZWRpYURldmljZS5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
V0tTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
KwordXNpbmcgUHJvcGVydGllcyA9IFZhcmlhbnQ8V2ViQ29yZTo6TW9ja01pY3JvcGhvbmVQcm9w
ZXJ0aWVzLCBXZWJDb3JlOjpNb2NrQ2FtZXJhUHJvcGVydGllcywgV2ViQ29yZTo6TW9ja0Rpc3Bs
YXlQcm9wZXJ0aWVzPjsKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiB0
eXBlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0gImNh
bWVyYSIpCisgICAgICAgIHJldHVybiBQcm9wZXJ0aWVzIHsgV2ViQ29yZTo6TW9ja0NhbWVyYVBy
b3BlcnRpZXMgeyB9IH07CisgICAgaWYgKHR5cGUgPT0gIm1pY3JvcGhvbmUiKQorICAgICAgICBy
ZXR1cm4gUHJvcGVydGllcyB7IFdlYkNvcmU6Ok1vY2tNaWNyb3Bob25lUHJvcGVydGllcyB7IH0g
fTsKKyAgICBpZiAodHlwZSA9PSAic2NyZWVuIikKKyAgICAgICAgcmV0dXJuIFByb3BlcnRpZXMg
eyBXZWJDb3JlOjpNb2NrRGlzcGxheVByb3BlcnRpZXMgeyB9IH07CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKK30KKwordm9pZCBXS0FkZE1vY2tNZWRpYURldmljZShXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tTdHJpbmdSZWYgcGVyc2lzdGVudElkLCBXS1N0cmluZ1JlZiBsYWJlbCwgV0tTdHJp
bmdSZWYgdHlwZSkKK3sKKyAgICBhdXRvIHByb3BlcnRpZXMgPSB0eXBlRnJvbVN0cmluZyhXZWJL
aXQ6OnRvSW1wbCh0eXBlKS0+c3RyaW5nKCkpOworICAgIGlmICghcHJvcGVydGllcykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdG9JbXBsKGNvbnRleHQpLT5hZGRNb2NrTWVkaWFEZXZpY2UoeyBX
ZWJLaXQ6OnRvSW1wbChwZXJzaXN0ZW50SWQpLT5zdHJpbmcoKSwgV2ViS2l0Ojp0b0ltcGwobGFi
ZWwpLT5zdHJpbmcoKSwgV1RGTW92ZSgqcHJvcGVydGllcykgfSk7Cit9CisKK3ZvaWQgV0tDbGVh
ck1vY2tNZWRpYURldmljZXMoV0tDb250ZXh0UmVmIGNvbnRleHQpCit7CisgICAgdG9JbXBsKGNv
bnRleHQpLT5jbGVhck1vY2tNZWRpYURldmljZXMoKTsKK30KKwordm9pZCBXS1JlbW92ZU1vY2tN
ZWRpYURldmljZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgcGVyc2lzdGVudElk
KQoreworICAgIHRvSW1wbChjb250ZXh0KS0+cmVtb3ZlTW9ja01lZGlhRGV2aWNlKFdlYktpdDo6
dG9JbXBsKHBlcnNpc3RlbnRJZCktPnN0cmluZygpKTsKK30KKwordm9pZCBXS1Jlc2V0TW9ja01l
ZGlhRGV2aWNlcyhXS0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICB0b0ltcGwoY29udGV4dCkt
PnJlc2V0TW9ja01lZGlhRGV2aWNlcygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZpY2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc3NmQyODE3MTE5NDlh
MTBlYzcwZDQyMWNhYjZhMDM1YjA3NGExYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmgKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIHZvaWQgV0tBZGRNb2NrTWVkaWFE
ZXZpY2UoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIFdLU3RyaW5nUmVm
IGxhYmVsLCBXS1N0cmluZ1JlZiB0eXBlKTsKK1dLX0VYUE9SVCB2b2lkIFdLQ2xlYXJNb2NrTWVk
aWFEZXZpY2VzKFdLQ29udGV4dFJlZik7CitXS19FWFBPUlQgdm9pZCBXS1JlbW92ZU1vY2tNZWRp
YURldmljZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHBlcnNpc3RlbnRJZCk7CitXS19FWFBP
UlQgdm9pZCBXS1Jlc2V0TW9ja01lZGlhRGV2aWNlcyhXS0NvbnRleHRSZWYpOworCisjaWZkZWYg
X19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IDdjNmNlYzAxNGZmZDc0ZTFhYzUyYmU0NDkxYzM3NDNlODVlMTA4MTEu
LjA0YjU2NmNlYjAxYzMyODg3M2VkZWNiMzZjNmU5YjRiNDkzZTVjZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTgyLDYgKzgyLDcgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRp
b24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzLmg+CkBA
IC0yMjEyLDQgKzIyMTMsMzYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3RlclN1c3Bl
bmRlZFBhZ2VQcm94eShTdXNwZW5kZWRQYWdlUHJveHkmIHBhZ2UpCiAgICAgICAgIG1fc3VzcGVu
ZGVkUGFnZXMucmVtb3ZlKGl0ZXJhdG9yKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRk
TW9ja01lZGlhRGV2aWNlKGNvbnN0IE1vY2tEZXZpY2UmIGRldmljZSkKK3sKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphZGREZXZp
Y2UoZGV2aWNlKTsKKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkFkZE1vY2tNZWRpYURldmljZSB7IGRldmljZSB9KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpjbGVhck1vY2tNZWRpYURldmljZXMoKQoreworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldERldmljZXMoeyB9
KTsKKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyTW9j
a01lZGlhRGV2aWNlcyB7IH0pOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJl
bW92ZU1vY2tNZWRpYURldmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCkKK3sKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpy
ZW1vdmVEZXZpY2UocGVyc2lzdGVudElkKTsKKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlJlbW92ZU1vY2tNZWRpYURldmljZSB7IHBlcnNpc3RlbnRJZCB9KTsK
KyNlbmRpZgorfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNldE1vY2tNZWRpYURldmljZXMo
KQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnJlc2V0RGV2aWNlcygpOworICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6UmVzZXRNb2NrTWVkaWFEZXZpY2VzIHsgfSk7CisjZW5kaWYKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApp
bmRleCBhZWIxOTEwYTYwZTQ1YWYwMjU1YzA1ZTdlZGNjYmJkYjE2OTNiOGYwLi4xYjFjMTU4ZjA4
MjUxMDFjN2Y5ZjM3N2UzMzYyZDM4OTgxYWFlY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKQEAgLTgyLDYgKzgyLDEwIEBAIGNsYXNzIE5hdmlnYXRpb247CiBj
bGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0
IE1vY2tEZXZpY2U7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEb3dubG9hZFBy
b3h5OwpAQCAtNDU0LDYgKzQ1OCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjcmVlblByb3Bl
cnRpZXNTdGF0ZUNoYW5nZWQoKTsKIAorICAgIHZvaWQgYWRkTW9ja01lZGlhRGV2aWNlKGNvbnN0
IFdlYkNvcmU6Ok1vY2tEZXZpY2UmKTsKKyAgICB2b2lkIGNsZWFyTW9ja01lZGlhRGV2aWNlcygp
OworICAgIHZvaWQgcmVtb3ZlTW9ja01lZGlhRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVu
dElkKTsKKyAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOworCiBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZhNTA3MjFlZTIyOTk5N2E5NTcyNmVhYjA3
ZTkxODI2NTJjZGYyYTUuLjE2MmNhOGY1NGI1ZTFjZmE1MTAzNmYxYjM5ZmQxZjJlZGU1MWI3NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtOTEzLDYgKzkxMyw4IEBACiAJCTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3
b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0
ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFG
QTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAv
KiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5
ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hLmNwcCAqLzsgfTsKKwkJNDExQThEREIyMERERDFBQzAwNjBEMzRG
IC8qIFdLTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTFBOEREOTIwRERCNjA1MDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZp
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0
MTFBOEREQzIwREREMjNGMDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExQThEREEyMEREQjYwNTAw
NjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmNwcCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJB
NjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJS
VENOZXR3b3JrLmggKi87IH07CiAJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3Jr
UlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsg
fTsKIAkJNDEzMDc1QUExREU4NUYzMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURF
ODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgKi87IH07CkBAIC0zMjk5LDYg
KzMzMDEsOCBAQAogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNv
bHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExQThERDkyMEREQjYw
NTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLTW9ja01lZGlhRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxMUE4RERBMjBEREI2MDUwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS01vY2tNZWRpYURldmljZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAv
KiBMaWJXZWJSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExp
YldlYlJUQ05ldHdvcmsuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5
IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTmV0d29ya1JUQ1NvY2tldC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1NvY2tldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3
NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03NTcyLDYgKzc1NzYsOCBAQAogCQkJCUM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBX
S01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oICovLAogCQkJCUM5Q0Q0Mzk5MUI0QjAyNDIwMDIz
OUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcCAqLywKIAkJCQlDOUNENDM5QTFCNEIw
MjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovLAorCQkJCTQxMUE4RERB
MjBEREI2MDUwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5jcHAgKi8sCisJCQkJNDExQThE
RDkyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmggKi8sCiAJCQkJQzA5QUU1
RTgxMjUyNTdDMjAwMjU4MjVEIC8qIFdLTmF0aXZlRXZlbnQuaCAqLywKIAkJCQkyRDNBNjVEODFB
N0MzQTFGMDBDQUM2MzcgLyogV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcCAqLywKIAkJCQkyRDNB
NjVEOTFBN0MzQTFGMDBDQUM2MzcgLyogV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmggKi8sCkBAIC05
NjkwLDYgKzk2OTYsNyBAQAogCQkJCUJDRDU5N0Q3MTEyQjU2REMwMEVDOEMyMyAvKiBXS1BhZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDODlEMjlDMUE2NzgzN0IwMDNBNUZERSAvKiBXS1BhZ2VD
b25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI4QTFGODE4NDAwQkI4MDBF
OUFFNjkgLyogV0tQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQx
MUE4RERCMjBEREQxQUMwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODM3MkRCMjUxQTY3NEM4RjAwQzY5N0M1IC8qIFdLUGFnZURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI4QTFGNDE4NDAwQjhGMDBFOUFFNjkg
LyogV0tQYWdlRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCOEExRjYxODQwMEI5
RDAwRTlBRTY5IC8qIFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTEwMzU4LDEzICsxMDM2NSw5IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owog
CQkJZmlsZXMgPSAoCiAJCQkpOwotCQkJaW5wdXRGaWxlTGlzdFBhdGhzID0gKAotCQkJKTsKIAkJ
CWlucHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJbmFtZSA9ICJVbmxvY2sga2V5Y2hhaW4iOwotCQkJ
b3V0cHV0RmlsZUxpc3RQYXRocyA9ICgKLQkJCSk7CiAJCQlvdXRwdXRQYXRocyA9ICgKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTEwMzc2LDEz
ICsxMDM3OSw5IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMg
PSAoCiAJCQkpOwotCQkJaW5wdXRGaWxlTGlzdFBhdGhzID0gKAotCQkJKTsKIAkJCWlucHV0UGF0
aHMgPSAoCiAJCQkpOwogCQkJbmFtZSA9ICJVbmxvY2sga2V5Y2hhaW4iOwotCQkJb3V0cHV0Rmls
ZUxpc3RQYXRocyA9ICgKLQkJCSk7CiAJCQlvdXRwdXRQYXRocyA9ICgKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTEwMzk0LDEzICsxMDM5Myw5
IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkp
OwotCQkJaW5wdXRGaWxlTGlzdFBhdGhzID0gKAotCQkJKTsKIAkJCWlucHV0UGF0aHMgPSAoCiAJ
CQkpOwogCQkJbmFtZSA9ICJSZW1vdmUgc3RhbGUgZW50aXRsZW1lbnQgZmlsZSI7Ci0JCQlvdXRw
dXRGaWxlTGlzdFBhdGhzID0gKAotCQkJKTsKIAkJCW91dHB1dFBhdGhzID0gKAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTA0MTIsMTMgKzEw
NDA3LDkgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
IAkJCSk7Ci0JCQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJaW5wdXRQYXRocyA9
ICgKIAkJCSk7CiAJCQluYW1lID0gIlJlbW92ZSBzdGFsZSBlbnRpdGxlbWVudCBmaWxlIjsKLQkJ
CW91dHB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJb3V0cHV0UGF0aHMgPSAoCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xMDQzMCwx
NCArMTA0MjEsMTAgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxl
cyA9ICgKIAkJCSk7Ci0JCQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJaW5wdXRQ
YXRocyA9ICgKIAkJCQkiJChURU1QX0ZJTEVfRElSKS8kKEZVTExfUFJPRFVDVF9OQU1FKS54Y2Vu
dCIsCiAJCQkpOwogCQkJbmFtZSA9ICJQcm9jZXNzIFdlYkNvbnRlbnQgZW50aXRsZW1lbnRzIjsK
LQkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJb3V0cHV0UGF0aHMgPSAoCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xMDQ0
OSwxNCArMTA0MzYsMTAgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKIAkJCSk7Ci0JCQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJaW5w
dXRQYXRocyA9ICgKIAkJCQkiJChURU1QX0ZJTEVfRElSKS8kKEZVTExfUFJPRFVDVF9OQU1FKS54
Y2VudCIsCiAJCQkpOwogCQkJbmFtZSA9ICJQcm9jZXNzIFdlYkNvbnRlbnQgZW50aXRsZW1lbnRz
IjsKLQkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJb3V0cHV0UGF0aHMgPSAo
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0x
MDc4NSw2ICsxMDc2OCw3IEBACiAJCQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QTgyMUY0QTFFMkY2NUU5MDA2MDQ1NzcgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1N0MxNjRCOTE1RjAwNEJDMEM2
IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTQxMUE4RERDMjBEREQyM0YwMDYwRDM0RiAvKiBXS01vY2tNZWRp
YURldmljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUZERTY1RDE5NTRFOEQ1MDBDNDhGRkEg
LyogTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3
NUIzMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MUZBRjVGOTFFM0MxMDI1MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggNjQ5MmJlYmJmZTg2ZjVlNDJlMWU1M2Y0YjFhYjZiMzU4ODdkMTYzMC4uNTMyYjBjNjJkZGZl
YmY0N2MxMDYwNjljODE5MjM5NmNiNTE2MTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtMTAxLDYgKzEwMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NZW1v
cnlDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVtb3J5UmVsZWFzZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTWVzc2FnZVBvcnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VD
YWNoZS5oPgpAQCAtMTY5MCw0ICsxNjkxLDI2IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0U2NyZWVu
UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzCiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCit2b2lkIFdlYlByb2Nlc3M6OmFk
ZE1vY2tNZWRpYURldmljZShjb25zdCBXZWJDb3JlOjpNb2NrRGV2aWNlJiBkZXZpY2UpCit7Cisg
ICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmFkZERldmljZShkZXZpY2UpOworfQor
Cit2b2lkIFdlYlByb2Nlc3M6OmNsZWFyTW9ja01lZGlhRGV2aWNlcygpCit7CisgICAgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldERldmljZXMoeyB9KTsKK30KKwordm9pZCBXZWJQ
cm9jZXNzOjpyZW1vdmVNb2NrTWVkaWFEZXZpY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQp
Cit7CisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZShwZXJz
aXN0ZW50SWQpOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnJlc2V0TW9ja01lZGlhRGV2aWNlcygp
Cit7CisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlc2V0RGV2aWNlcygpOworfQorI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKaW5kZXggYjg1MjBhY2QyYmQ4M2M0OTE1NzEzZmQ1NDM0MGVmZWI0NTZkY2VmYi4uN2Rj
YzI3YmMyNTc5N2Q1ZGE1M2EzZjE2OTE1Y2VlZWIwYTJmMzgxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC02OSw2ICs2OSw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFVzZXJHZXN0dXJlVG9rZW47CiBzdHJ1Y3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
Owogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOworc3RydWN0IE1vY2tEZXZpY2U7CiBz
dHJ1Y3QgUGx1Z2luSW5mbzsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1Y3QgU291
cE5ldHdvcmtQcm94eVNldHRpbmdzOwpAQCAtMzU5LDYgKzM2MCwxMyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc3RvcFJ1bkxvb3AoKSBvdmVycmlkZTsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICB2b2lkIGFkZE1vY2tNZWRpYURldmljZShjb25zdCBXZWJDb3JlOjpNb2Nr
RGV2aWNlJik7CisgICAgdm9pZCBjbGVhck1vY2tNZWRpYURldmljZXMoKTsKKyAgICB2b2lkIHJl
bW92ZU1vY2tNZWRpYURldmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCk7CisgICAgdm9p
ZCByZXNldE1vY2tNZWRpYURldmljZXMoKTsKKyNlbmRpZgorCiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyYpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNWFiNTIyYmUzOTEzNDg4
MTFiNmRhYTM3Yzc5M2M5YTBjNGY3OTgyNy4uN2FhMzNlODVkNmRmNjc1ZGJjZWQzNDNhMWUzNjBj
YzkwMGY4ODRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTEzOSw0ICsxMzksMTEgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2V0TWVkaWFNSU1FVHlw
ZXMoVmVjdG9yPFN0cmluZz4gdHlwZXMpCiAjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisgICAgQWRkTW9ja01lZGlhRGV2aWNlKHN0cnVjdCBXZWJDb3JlOjpNb2NrRGV2aWNlIGRl
dmljZSk7CisgICAgQ2xlYXJNb2NrTWVkaWFEZXZpY2VzKCk7CisgICAgUmVtb3ZlTW9ja01lZGlh
RGV2aWNlKFN0cmluZyBwZXJzaXN0ZW50SWQpOworICAgIFJlc2V0TW9ja01lZGlhRGV2aWNlcygp
OworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYTYwYzM4MWZhZmRhM2JlZTBiMzY3MDcwNWE5ODI4YjY5ZmM3YTJmMS4uOTg3ZmEz
MzdlZDU1ZGQ3NjNlYWM1ZmIzYzNjNWU1ZWRmZWZiM2Q2MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE4LTA2LTIy
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVBJIHRv
IGNvbnRyb2wgbW9jayBtZWRpYSBkZXZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODY5NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBydW5uZXIgQVBJIHRvIGNsZWFyL2FkZC9yZW1v
dmUvcmVzZXQgbW9jayBtZWRpYSBkZXZpY2VzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjphZGRNb2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV1RSOjpUZXN0UnVu
bmVyOjphZGRNb2NrQ2FtZXJhRGV2aWNlKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6YWRk
TW9ja01pY3JvcGhvbmVEZXZpY2UpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjphZGRNb2Nr
U2NyZWVuRGV2aWNlKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y2xlYXJNb2NrTWVkaWFE
ZXZpY2VzKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6cmVtb3ZlTW9ja01lZGlhRGV2aWNl
KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6cmVzZXRNb2NrTWVkaWFEZXZpY2VzKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tEZXZpY2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6Y2xlYXJNb2NrTWVkaWFEZXZpY2VzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJlbW92ZU1vY2tNZWRpYURldmljZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpyZXNldE1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE4LTA2LTE4ICBSb2JpbiBNb3Jp
c3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dTTF0gU3RhcnRpbmcgdG8g
d3JpdGUgdGhlIHNwZWMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDdlNzY1OWNjM2Jm
ZmNlMGFhODc2ZGRkYzlmMDJkMDQ5NzZhM2RiOWYuLjE3OTE2NjgxMjdhNjY2MDc3MmNhMTkxYzA1
ODM5ZDZjYzA4ZjM5NjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzM2LDQgKzMz
NiwxMSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1h
bmlmZXN0VGhlbihvYmplY3QgY2FsbGJhY2spOwogCiAgICAgdm9pZCBpbnN0YWxsRmFrZUhlbHZl
dGljYShET01TdHJpbmcgY29uZmlndXJhdGlvbik7CisKKyAgICB2b2lkIGFkZE1vY2tDYW1lcmFE
ZXZpY2UoRE9NU3RyaW5nIHBlcnNpc3RlbnRJZCwgRE9NU3RyaW5nIGxhYmVsKTsKKyAgICB2b2lk
IGFkZE1vY2tNaWNyb3Bob25lRGV2aWNlKERPTVN0cmluZyBwZXJzaXN0ZW50SWQsIERPTVN0cmlu
ZyBsYWJlbCk7CisgICAgdm9pZCBhZGRNb2NrU2NyZWVuRGV2aWNlKERPTVN0cmluZyBwZXJzaXN0
ZW50SWQsIERPTVN0cmluZyBsYWJlbCk7CisgICAgdm9pZCBjbGVhck1vY2tNZWRpYURldmljZXMo
KTsKKyAgICB2b2lkIHJlbW92ZU1vY2tNZWRpYURldmljZShET01TdHJpbmcgcGVyc2lzdGVudElk
KTsKKyAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOwogfTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDI4
MzFhODdiOTcxNTAyNzk4NTM0MDE5NDNkZGM0ZjlmMzJhNjNjYzIuLjk1YWFlZjRjZGEwZjg4YzI4
YTFkZjhlM2VmYTJjNTUxZWE3YjczZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMTk3MSw2ICsxOTcxLDcxIEBA
IHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Nh
bGxiYWNrKFZlY3RvcjxTdHJpbmc+JiBkCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhBbGxT
dG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwogfQogCit2b2lkIFRl
c3RSdW5uZXI6OmFkZE1vY2tNZWRpYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpT
U3RyaW5nUmVmIGxhYmVsLCBjb25zdCBjaGFyKiB0eXBlKQoreworICAgIFZlY3RvcjxXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJl
Zj4+IHZhbHVlczsKKworICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlBlcnNpc3RlbnRJRCIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQodG9X
SyhwZXJzaXN0ZW50SWQpKTsKKworICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkxhYmVsIikgfSk7CisgICAgdmFsdWVzLmFwcGVuZCh0b1dL
KGxhYmVsKSk7CisKKyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJUeXBlIikgfSk7CisgICAgdmFsdWVzLmFwcGVuZCh7IEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHR5cGUpIH0pOworCisgICAgVmVjdG9yPFdLU3Ry
aW5nUmVmPiByYXdLZXlzOworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlczsKKyAgICBy
YXdLZXlzLnJlc2l6ZShrZXlzLnNpemUoKSk7CisgICAgcmF3VmFsdWVzLnJlc2l6ZSh2YWx1ZXMu
c2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsraSkg
eworICAgICAgICByYXdLZXlzW2ldID0ga2V5c1tpXS5nZXQoKTsKKyAgICAgICAgcmF3VmFsdWVz
W2ldID0gdmFsdWVzW2ldLmdldCgpOworICAgIH0KKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
QWRkTW9ja01lZGlhRGV2aWNlIikpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4g
bWVzc2FnZUJvZHkoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCBy
YXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOworCisgICAgV0tCdW5kbGVQb3N0U3lu
Y2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwordm9pZCBU
ZXN0UnVubmVyOjphZGRNb2NrQ2FtZXJhRGV2aWNlKEpTU3RyaW5nUmVmIHBlcnNpc3RlbnRJZCwg
SlNTdHJpbmdSZWYgbGFiZWwpCit7CisgICAgYWRkTW9ja01lZGlhRGV2aWNlKHBlcnNpc3RlbnRJ
ZCwgbGFiZWwsICJjYW1lcmEiKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjphZGRNb2NrTWljcm9w
aG9uZURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsKQor
eworICAgIGFkZE1vY2tNZWRpYURldmljZShwZXJzaXN0ZW50SWQsIGxhYmVsLCAibWljcm9waG9u
ZSIpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OmFkZE1vY2tTY3JlZW5EZXZpY2UoSlNTdHJpbmdS
ZWYgcGVyc2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJlbCkKK3sKKyAgICBhZGRNb2NrTWVkaWFE
ZXZpY2UocGVyc2lzdGVudElkLCBsYWJlbCwgInNjcmVlbiIpOworfQorCit2b2lkIFRlc3RSdW5u
ZXI6OmNsZWFyTW9ja01lZGlhRGV2aWNlcygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJD
bGVhck1vY2tNZWRpYURldmljZXMiKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZU1vY2tN
ZWRpYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQpCit7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJSZW1vdmVNb2NrTWVkaWFEZXZpY2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tUeXBl
UmVmPiBtZXNzYWdlQm9keSh0b1dLKHBlcnNpc3RlbnRJZCkpOworCisgICAgV0tCdW5kbGVQb3N0
U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwordm9p
ZCBUZXN0UnVubmVyOjpyZXNldE1vY2tNZWRpYURldmljZXMoKQoreworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiUmVzZXRNb2NrTWVkaWFEZXZpY2VzIikpOworICAgIFdLQnVuZGxlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykK
IHZvaWQgVGVzdFJ1bm5lcjo6Y29ubmVjdE1vY2tHYW1lcGFkKHVuc2lnbmVkIGluZGV4KQogewpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAppbmRleCBmMjkwMWJjNjJlNjIxMGY0MDcxZjI4N2E0MzJlZmIxN2ViM2M5ZDY5Li43ODliYTIz
MDIzNjgzMDljYTA5OWExZWZiNzQ1N2UxN2EyNTMyNmYyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDQ2LDYgKzQ0Niwx
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wQWxsSFRUUFJlZGlyZWN0ZWRSZXNwb25zZUhlYWRl
cnMoKSB7IG1fZHVtcEFsbEhUVFBSZWRpcmVjdGVkUmVzcG9uc2VIZWFkZXJzID0gdHJ1ZTsgfQog
ICAgIGJvb2wgc2hvdWxkRHVtcEFsbEhUVFBSZWRpcmVjdGVkUmVzcG9uc2VIZWFkZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9kdW1wQWxsSFRUUFJlZGlyZWN0ZWRSZXNwb25zZUhlYWRlcnM7IH0KIAor
ICAgIHZvaWQgYWRkTW9ja0NhbWVyYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpT
U3RyaW5nUmVmIGxhYmVsKTsKKyAgICB2b2lkIGFkZE1vY2tNaWNyb3Bob25lRGV2aWNlKEpTU3Ry
aW5nUmVmIHBlcnNpc3RlbnRJZCwgSlNTdHJpbmdSZWYgbGFiZWwpOworICAgIHZvaWQgYWRkTW9j
a1NjcmVlbkRldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVs
KTsKKyAgICB2b2lkIGNsZWFyTW9ja01lZGlhRGV2aWNlcygpOworICAgIHZvaWQgcmVtb3ZlTW9j
a01lZGlhRGV2aWNlKEpTU3RyaW5nUmVmIHBlcnNpc3RlbnRJZCk7CisgICAgdm9pZCByZXNldE1v
Y2tNZWRpYURldmljZXMoKTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CiAKQEAgLTQ1
NSw2ICs0NjIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RHVtcFBpeGVscyhib29sKTsKICAg
ICB2b2lkIHNldFdhaXRVbnRpbERvbmUoYm9vbCk7CiAKKyAgICB2b2lkIGFkZE1vY2tNZWRpYURl
dmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsLCBjb25zdCBj
aGFyKiB0eXBlKTsKKwogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBtX3Rlc3RVUkw7IC8vIFNl
dCBieSBJbmplY3RlZEJ1bmRsZVBhZ2Ugb25jZSBwcm92aXNpb25hbCBsb2FkIHN0YXJ0cy4KIAog
ICAgIGJvb2wgbV9zaG91bGREdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnM7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGJhODUxODk1NDlkZDM3NTA5ZWIz
ZTAwZTgzNzM4MTZlMzgwZjNjM2EuLjY4MTlkZmNhZTg3NTFiOGI1MTQ5Yzc4NTQ3OTgzNWQ4Njcz
YzUyNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC00
Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLRnJhbWVIYW5kbGVSZWYuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tGcmFtZUluZm9SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tJY29uRGF0
YWJhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tNb2NrTWVkaWFEZXZpY2UuaD4KICNpbmNsdWRl
IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tO
b3RpZmljYXRpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmg+
CkBAIC0yODY2LDYgKzI4NjcsMjYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jl
c2V0VG9Db25zaXN0ZW50U3RhdGUoKQogICAgIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlKGRhdGFTdG9yZSk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OmFkZE1vY2tEZXZpY2UoV0tTdHJpbmdSZWYgcGVyc2lzdGVudElELCBXS1N0cmluZ1JlZiBs
YWJlbCwgV0tTdHJpbmdSZWYgdHlwZSkKK3sKKyAgICBXS0FkZE1vY2tNZWRpYURldmljZShwbGF0
Zm9ybUNvbnRleHQoKSwgcGVyc2lzdGVudElELCBsYWJlbCwgdHlwZSk7Cit9CisKK3ZvaWQgVGVz
dENvbnRyb2xsZXI6OmNsZWFyTW9ja01lZGlhRGV2aWNlcygpCit7CisgICAgV0tDbGVhck1vY2tN
ZWRpYURldmljZXMocGxhdGZvcm1Db250ZXh0KCkpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVy
OjpyZW1vdmVNb2NrTWVkaWFEZXZpY2UoV0tTdHJpbmdSZWYgcGVyc2lzdGVudElEKQoreworICAg
IFdLUmVtb3ZlTW9ja01lZGlhRGV2aWNlKHBsYXRmb3JtQ29udGV4dCgpLCBwZXJzaXN0ZW50SUQp
OworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldE1vY2tNZWRpYURldmljZXMoKQorewor
ICAgIFdLUmVzZXRNb2NrTWVkaWFEZXZpY2VzKHBsYXRmb3JtQ29udGV4dCgpKTsKK30KKwogI2lm
ICFQTEFURk9STShDT0NPQSkKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQWRkVGVzdE9w
dGlvbnMoVGVzdE9wdGlvbnMmKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCmluZGV4IGYzMzc4MzQ0M2VmNjJhYjBjZGRmODg5OGFhZTA3NjdhZGRlMWNiMjEu
LmExZTU5ZWIxYjE2YmRlMTk2N2QyNDYyYjllY2M0OTM3MjAxYWI5MjEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTIxMyw2ICsyMTMsMTEgQEAgcHVibGljOgog
ICAgIGJvb2wgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bE5hdmlnYXRpb247IH0KICAgICB2b2lkIGNsZWFyRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCkgeyBtX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTmF2aWdhdGlvbiA9IGZhbHNlOyB9CiAKKyAgICB2b2lkIGFkZE1vY2tEZXZpY2Uo
V0tTdHJpbmdSZWYgcGVyc2lzdGVudElELCBXS1N0cmluZ1JlZiBsYWJlbCwgV0tTdHJpbmdSZWYg
dHlwZSk7CisgICAgdm9pZCBjbGVhck1vY2tNZWRpYURldmljZXMoKTsKKyAgICB2b2lkIHJlbW92
ZU1vY2tNZWRpYURldmljZShXS1N0cmluZ1JlZiBwZXJzaXN0ZW50SUQpOworICAgIHZvaWQgcmVz
ZXRNb2NrTWVkaWFEZXZpY2VzKCk7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdl
Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
PiBnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDUyNDc1ZGZlNDc5YjA2MzIxNjQyY2FhZDNl
OTAzZDAzYTc2OTVlOWIuLjdlZjcwMWVmNWQ4YzQxMWI5Y2JmNzQ5MjJlYjVmYjc2MzBkY2Y2MGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC05MTYsNiAr
OTE2LDM5IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiQWRkTW9ja01lZGlhRGV2aWNlIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlE
KG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisKKyAgICAgICAgV0tE
aWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlv
bmFyeVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
cGVyc2lzdGVudElES2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQ
ZXJzaXN0ZW50SUQiKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBsYWJlbEtl
eShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTGFiZWwiKSk7CisgICAg
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0eXBlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJUeXBlIikpOworCisgICAgICAgIGF1dG8gcGVyc2lzdGVudElE
ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVz
c2FnZUJvZHlEaWN0aW9uYXJ5LCBwZXJzaXN0ZW50SURLZXkuZ2V0KCkpKTsKKyAgICAgICAgYXV0
byBsYWJlbCA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgbGFiZWxLZXkuZ2V0KCkpKTsKKyAgICAgICAgYXV0
byB0eXBlID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB0eXBlS2V5LmdldCgpKSk7CisKKyAgICAgICAgVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmFkZE1vY2tEZXZpY2UocGVyc2lzdGVudElELCBsYWJl
bCwgdHlwZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2xlYXJNb2NrTWVkaWFEZXZp
Y2VzIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNsZWFyTW9ja01l
ZGlhRGV2aWNlcygpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJlbW92ZU1vY2tNZWRp
YURldmljZSIpKSB7CisgICAgICAgIFdLU3RyaW5nUmVmIHBlcnNpc3RlbnRJZCA9IHN0YXRpY19j
YXN0PFdLU3RyaW5nUmVmPihtZXNzYWdlQm9keSk7CisKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLnJlbW92ZU1vY2tNZWRpYURldmljZShwZXJzaXN0ZW50SWQpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJlc2V0TW9ja01lZGlhRGV2aWNlcyIpKSB7CisgICAgICAg
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5yZXNldE1vY2tNZWRpYURldmljZXMoKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ29ubmVjdE1vY2tH
YW1lcGFkIikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBX
S1VJbnQ2NEdldFR5cGVJRCgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNjNmOWUzY2ZjNzIyMGM4Y2M3MWE1YTBmMmQx
Mjc1ZmU0MGQwNzc2Li5iODA4YTRmZmQ2OGZiNjE5ZDU5NjgyNjE3ZmRlNjUwYjQwMzVjZjhjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDYtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBUEkgdG8gY29udHJvbCBtb2NrIG1lZGlhIGRldmlj
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Njk1
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi5odG1sOiBB
ZGRlZC4KKwogMjAxOC0wNi0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTmV0d29yayBQcmVmbGlnaHRzIGRvIG5vdCBzaG93IGluIFdlYkluc3BlY3RvciBh
ZnRlciBtb3ZpbmcgQ09SUyBjaGVja3MgdG8gTmV0d29ya1Byb2Nlc3MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGM2YjYxMDc2ZmFhYTNkZTRmODE2OGY3OTY5Y2Yx
MGY2MDdhNjlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQ
QVNTICdkZXZpY2VjaGFuZ2UnIGV2ZW50IGZpcmVkIHdoZW4gZGV2aWNlIGxpc3QgY2hhbmdlcyAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdl
LWV2ZW50LTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5n
ZS1ldmVudC0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRkMzJiNmRmMmU5Yzg2OGIxZmRlYTU2YjI2OTlh
YmRjOWZhOWMyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8
dGl0bGU+VGVzdGluZyBsb2NhbCBhdWRpbyBjYXB0dXJlIHBsYXliYWNrIGNhdXNlcyAicGxheWlu
ZyIgZXZlbnQgdG8gZmlyZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICBs
ZXQgZGV2aWNlSWRzID0gW107CisgICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Cisg
ICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3QoInRlc3QgcmVxdWlyZXMgaW50ZXJuYWwgQVBJIik7CisKKyAgICAgICAgdGVzdC5h
ZGRfY2xlYW51cCgoKSA9PiB0ZXN0UnVubmVyLnJlc2V0TW9ja01lZGlhRGV2aWNlcyk7CisKKyAg
ICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRydWUpOworCisgICAgICAg
IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86dHJ1ZSwg
dmlkZW86dHJ1ZSB9KTsKKworICAgICAgICBsZXQgZGV2aWNlcyA9IGF3YWl0IG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpOworCisgICAgICAgIGFzc2VydF90cnVlKCEh
ZGV2aWNlcy5sZW5ndGgsICJjaGVjayB0aGVyZSBhcmUgc29tZSBkZXZpY2VzIik7CisKKyAgICAg
ICAgdGVzdFJ1bm5lci5jbGVhck1vY2tNZWRpYURldmljZXMoKTsKKworICAgICAgICBkZXZpY2Vz
ID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCk7CisgICAg
ICAgIGFzc2VydF9mYWxzZSghIWRldmljZXMubGVuZ3RoLCAiY2hlY2sgdGhlcmUgYXJlIG5vIG1v
cmUgZGV2aWNlcyIpOworCisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFu
Z2UgPSByZXNvbHZlOworICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRNb2NrQ2FtZXJhRGV2aWNl
KCJpZDEiLCAibXkgY2FtZXJhIik7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVj
dCgid2FpdCAxIiksIDUwMDApOworICAgICAgICB9KTsKKyAgICAgICAgZGV2aWNlcyA9IGF3YWl0
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKGRldmljZXNbMF0ua2luZCwgInZpZGVvaW5wdXQiKTsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhkZXZpY2VzWzBdLmxhYmVsLCAibXkgY2FtZXJhIik7CisKKyAgICAgICAgYXdhaXQg
bmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgbmF2aWdhdG9y
Lm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5nZSA9IHJlc29sdmU7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLmFkZE1vY2tNaWNyb3Bob25lRGV2aWNlKCJpZDIiLCAibXkgbWljIik7CisgICAgICAg
ICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgid2FpdCAxIiksIDUwMDApOworICAgICAgICB9
KTsKKyAgICAgICAgZGV2aWNlcyA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVy
YXRlRGV2aWNlcygpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRldmljZXNbMF0ua2luZCwgImF1
ZGlvaW5wdXQiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXZpY2VzWzBdLmxhYmVsLCAibXkg
bWljIik7CisKKyAgICB9LCAiJ2RldmljZWNoYW5nZScgZXZlbnQgZmlyZWQgd2hlbiBkZXZpY2Ug
bGlzdCBjaGFuZ2VzIik7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343418</attachid>
            <date>2018-06-22 21:37:52 -0700</date>
            <delta_ts>2018-06-23 10:23:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186958-20180622213751.patch</filename>
            <type>text/plain</type>
            <size>70821</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyOTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTVkYTZmMzY5N2NjMjFm
NTVkMjkxYTQ3MjdkOGQ5N2NmYWE0NGE5ZC4uMWE3NGY5NmVhY2YyZGIxODhhOGRhNmM4NjJlMmY5
MWIwYjk5MmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE4LTA2LTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGNvbnRy
b2wgbW9jayBtZWRpYSBkZXZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODY5NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQt
Mi5odG1sCisKKyAgICAgICAgUmVmYWN0b3IgY29kZSB0byBpbnRyb2R1Y2UgYSBNb2NrRGV2aWNl
IHN0cnVjdHVyZSB0aGF0IGNhbiBiZSB1c2VkIGluIG11bHRpcGxlIHByb2Nlc3Nlcy4KKyAgICAg
ICAgVXBkYXRlIG1vY2sgc291cmNlcyBhbmQgY2VudGVyIHRvIHVzZSBNb2NrRGV2aWNlLgorICAg
ICAgICBBZGQgQVBJIHRvIHVwZGF0ZSBtb2NrIG1lZGlhIGRldmljZXMuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrTWVkaWFEZXZpY2UuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWZh
dWx0RGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OmRldmljZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6Y3JlYXRlQ2FwdHVyZURldmljZUZyb21Nb2NrRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldERldmljZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZERldmljZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlRGV2aWNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJ
RCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXVkaW9EZXZp
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb0Rl
dmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmRpc3Bs
YXlEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01pY3JvcGhvbmVQcm9w
ZXJ0aWVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01pY3JvcGhvbmVQ
cm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NhbWVyYVByb3BlcnRp
ZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ2FtZXJhUHJvcGVydGll
czo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tEaXNwbGF5UHJvcGVydGllczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tEaXNwbGF5UHJvcGVydGllczo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tEZXZpY2U6OmlzTWljcm9waG9uZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrRGV2aWNlOjppc0NhbWVyYSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrRGV2aWNlOjppc0Rpc3BsYXkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0RldmljZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrRGV2aWNl
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0RldmljZTo6ZGVjb2RlTW9j
a0RldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrRGV2aWNlOjpkZWNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmRldmljZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldERldmljZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmFkZERldmljZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6cmVtb3ZlRGV2aWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6TW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Omlu
aXRpYWxpemVDYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpnZW5lcmF0ZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6bW9ja0NhbWVyYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTo6bW9ja1NjcmVlbiBjb25zdCk6CisKIDIwMTgtMDYtMTkgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE5lZWQgdG8gcHJvcGVybHkgaGFuZGxl
IHJlbW92YWwgb2Ygd29ya2VyIGluIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudCB0aW1lciBsYW1iZGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjhjMWU0YzY3YzZkYjMyMmViYWRjYjY5NDU0
Y2JiMzFlNDg5NjBjYy4uNWM2YmYyNGQyMWFhY2VmM2I4MDkwYTdhYzUxYzQ5NjU5ZWNlNjkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxOC0wNi0yMiAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEFQSSB0byBjb250cm9sIG1vY2sgbWVkaWEg
ZGV2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg2OTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIEFQSSB0byBjbGVhciwgc2V0LCByZW1vdmUgYW5kIHJlc2V0IG1vY2sgbWVkaWEgZGV2aWNl
cy4KKyAgICAgICAgVGhlIG1vY2sgbWVkaWEgY2VudGVyIG9mIFVJUHJvY2VzcyBhbmQgYWxsIFdl
YlByb2Nlc3NlcyBhcmUgdXBkYXRlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS01vY2tNZWRpYURldmljZS5jcHA6IEFkZGVkLgorICAg
ICAgICAodHlwZUZyb21TdHJpbmcpOgorICAgICAgICAoV0tBZGRNb2NrTWVkaWFEZXZpY2UpOgor
ICAgICAgICAoV0tDbGVhck1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAoV0tSZW1vdmVNb2Nr
TWVkaWFEZXZpY2UpOgorICAgICAgICAoV0tSZXNldE1vY2tNZWRpYURldmljZXMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS01vY2tNZWRpYURldmljZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6YWRkTW9ja01lZGlhRGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OmNsZWFyTW9ja01lZGlhRGV2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZW1vdmVNb2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVzZXRNb2NrTWVkaWFEZXZpY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjphZGRNb2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjpjbGVhck1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpyZW1vdmVNb2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpyZXNldE1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAx
OC0wNi0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTmV0
d29yayBQcmVmbGlnaHRzIGRvIG5vdCBzaG93IGluIFdlYkluc3BlY3RvciBhZnRlciBtb3Zpbmcg
Q09SUyBjaGVja3MgdG8gTmV0d29ya1Byb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NTY2ZDdjZDM0NDk4YzE1OWQyNDU0
ZDkyMTYwZTJkNzJlZWI2ZDdiLi4wNGVkNWUzYmQ4ODM4OGNiZjc2MDRmYWQ4M2E4ZDg2ZDA4YjUz
NDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMDY0LDYgKzEwNjQsNyBAQAogCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMg
LyogRXZlbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi87IH07
CiAJCTQxMzhGODU4MUQyNTNGMEUwMDFDQjYxRSAvKiBKU0RPTUl0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4Rjg1NjFEMjUzRUVFMDAx
Q0I2MUUgLyogSlNET01JdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQxM0MyQzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNDMkMzMzFCQzI5QTdCMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5oICovOyB9OworCQk0
MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNDQ0Q0ODIwREUwMTNDMDA2NUEy
MUEgLyogTW9ja01lZGlhRGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDEzRTAwNzkxREIwRTRGMjAwMjM0MUQyIC8qIE1lbW9yeVJlbGVh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0Uw
MDc4MURCMEU0REUwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUz
IC8qIFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE0QjgyMDMxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5o
ICovOyB9OwogCQk0MTRERURFNzFGOUZFOTFFMDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0
REVERTUxRjlGRTkxNTAwNDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzIwMSw2ICs3MjAy
LDcgQEAKIAkJNDEzOEY4NTUxRDI1M0VFRTAwMUNCNjFFIC8qIEpTRE9NSXRlcmF0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01JdGVyYXRvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzhGODU2MUQyNTNFRUUwMDFDQjYxRSAvKiBK
U0RPTUl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NSXRl
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQzJDMzMxQkMyOUE3QjAw
NzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNET01Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTNDQ0Q0ODIwREUwMTNDMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tNZWRpYURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTNFMDA3NzFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1vcnlSZWxlYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTAwNzgxREIwRTRERTAwMjM0MUQy
IC8qIE1lbW9yeVJlbGVhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVt
b3J5UmVsZWFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFMDA3QjFEQjBF
NzA3MDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5UmVsZWFzZUNvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTg3NzAsNiArMTg3NzIsNyBAQAogCQkJCTA3N0I2NDE1MUI5NUY3
MDMwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oICovLAogCQkJCTA3N0I2NDEw
MUI5NEYxMkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAgKi8s
CiAJCQkJMDc3QjY0MTExQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJNb2NrLmggKi8sCisJCQkJNDEzQ0NENDgyMERFMDEzQzAwNjVBMjFBIC8qIE1vY2tNZWRpYURl
dmljZS5oICovLAogCQkJCTA3RDZBNEYxMUJFRDVGODgwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZS5jcHAgKi8sCiAJCQkJMDdENkE0RjIxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmggKi8sCiAJCQkJMDdENkE0RUQxQkVDRjJEMjAwMTc0MTQ2IC8q
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywKQEAgLTI5NDMxLDYgKzI5NDM0LDcgQEAK
IAkJCQk4NTAzMUI0NjBBNDRFRkM3MDBGOTkyRTAgLyogTW91c2VFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODM3NjVGOTUxREFDNTIyRjAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzVDNDc2MzA5QUM0Q0U2MDBBNkFBQjQgLyogTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEzQ0NENEEyMERFMDM0RjAw
NjVBMjFBIC8qIE1vY2tNZWRpYURldmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDgw
QTQ0RUZDNzAwRjk5MkUwIC8qIE1vdXNlUmVsYXRlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzMwOURGQzA5OUU2NDkyMDA1NkU1ODEgLyogTW92ZVNlbGVjdGlvbkNvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEQjE3MDA2MTRBMkJBQjIwMEEyQjVEOSAvKiBNdWx0aUNoYW5uZWxS
ZXNhbXBsZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmlu
ZGV4IDBjNzI1Zjk4MDlkNmJlOTczOTNjY2IzM2RmZjdkODE5MTY1OThmOWQuLjYxZmYwZWFhZTU2
NDkwNDcyM2M0Y2I3MDAyZjU1YjRmZTQ4ZDI5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmgKQEAgLTg4LDEzICs4OCwxNCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGV2aWNlc0NoYW5n
ZWRPYnNlcnZlclRva2VuID0gdW5zaWduZWQ7CiAgICAgRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRv
a2VuIGFkZERldmljZXNDaGFuZ2VkT2JzZXJ2ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgcmVtb3ZlRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihEZXZpY2VzQ2hhbmdlZE9ic2Vy
dmVyVG9rZW4pOwotICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CiAKICAgICB2b2lk
IHNldFZpZGVvQ2FwdHVyZVBhZ2VTdGF0ZShib29sLCBib29sKTsKIAogcHJvdGVjdGVkOgogICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIoKTsKIAorICAgIHZvaWQgY2FwdHVyZURldmljZXND
aGFuZ2VkKCk7CisKICAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgcGxhdGZv
cm1DZW50ZXIoKTsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMg
bV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja01lZGlhRGV2aWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgyZGJhZjEwZTdkNmFkYTA2NjU2Y2Ux
ODcxY2QyMGVhNWI4NGU0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKQEAgLTAsMCArMSwxODcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNb2NrTWljcm9w
aG9uZVByb3BlcnRpZXMgeworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8aW50MzJfdD4oZGVmYXVsdFNhbXBsZVJhdGUpOworICAgIH0KKworICAgIHRl
bXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1vY2tNaWNy
b3Bob25lUHJvcGVydGllcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGRlZmF1bHRTYW1wbGVSYXRlOworICAgICAgICBkZWNv
ZGVyID4+IGRlZmF1bHRTYW1wbGVSYXRlOworICAgICAgICBpZiAoIWRlZmF1bHRTYW1wbGVSYXRl
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIE1vY2tN
aWNyb3Bob25lUHJvcGVydGllcyB7ICpkZWZhdWx0U2FtcGxlUmF0ZSB9OworICAgIH0KKworICAg
IGludCBkZWZhdWx0U2FtcGxlUmF0ZSB7IDQ0MTAwIH07Cit9OworCisvLyBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIG90aGVyIHByb3BlcnRpZXMgYW5kIHNlcmlhbGl6YXRpb24gb2YgY29sb3JzLgor
c3RydWN0IE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBlbmNvZGVyIDw8IGRlZmF1bHRGcmFtZVJhdGU7CisgICAgICAgIGVuY29kZXIgPDwgZmFjaW5n
TW9kZUNhcGFiaWxpdHk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0NhbWVyYVByb3BlcnRpZXM+IGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRlZmF1
bHRGcmFtZVJhdGU7CisgICAgICAgIGRlY29kZXIgPj4gZGVmYXVsdEZyYW1lUmF0ZTsKKyAgICAg
ICAgaWYgKCFkZWZhdWx0RnJhbWVSYXRlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlPiBmYWNpbmdNb2RlQ2FwYWJpbGl0eTsKKyAgICAgICAgZGVjb2RlciA+
PiBmYWNpbmdNb2RlQ2FwYWJpbGl0eTsKKyAgICAgICAgaWYgKCFmYWNpbmdNb2RlQ2FwYWJpbGl0
eSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIE1v
Y2tDYW1lcmFQcm9wZXJ0aWVzIHsgKmRlZmF1bHRGcmFtZVJhdGUsICpmYWNpbmdNb2RlQ2FwYWJp
bGl0eSwgQ29sb3I6OmJsYWNrIH07CisgICAgfQorCisgICAgZG91YmxlIGRlZmF1bHRGcmFtZVJh
dGUgeyAzMCB9OworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdN
b2RlIGZhY2luZ01vZGVDYXBhYmlsaXR5IHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGU6OlVzZXIgfTsKKyAgICBDb2xvciBmaWxsQ29sb3IgeyBDb2xvcjo6Ymxh
Y2sgfTsKK307CisKK3N0cnVjdCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgZGVmYXVsdEZyYW1lUmF0ZTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2Nr
RGlzcGxheVByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRlZmF1bHRGcmFtZVJhdGU7CisgICAgICAgIGRlY29k
ZXIgPj4gZGVmYXVsdEZyYW1lUmF0ZTsKKyAgICAgICAgaWYgKCFkZWZhdWx0RnJhbWVSYXRlKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4gTW9ja0Rp
c3BsYXlQcm9wZXJ0aWVzIHsgKmRlZmF1bHRGcmFtZVJhdGUsIENvbG9yOjpsaWdodEdyYXkgfTsK
KyAgICB9CisKKyAgICBkb3VibGUgZGVmYXVsdEZyYW1lUmF0ZSB7IDMwIH07CisgICAgQ29sb3Ig
ZmlsbENvbG9yIHsgQ29sb3I6OmxpZ2h0R3JheSB9OworfTsKKworc3RydWN0IE1vY2tNZWRpYURl
dmljZSB7CisgICAgYm9vbCBpc01pY3JvcGhvbmUoKSBjb25zdCB7IHJldHVybiBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPE1vY2tNaWNyb3Bob25lUHJvcGVydGllcz4ocHJvcGVydGllcyk7IH0KKyAg
ICBib29sIGlzQ2FtZXJhKCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxN
b2NrQ2FtZXJhUHJvcGVydGllcz4ocHJvcGVydGllcyk7IH0KKyAgICBib29sIGlzRGlzcGxheSgp
IGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TW9ja0Rpc3BsYXlQcm9wZXJ0
aWVzPihwcm9wZXJ0aWVzKTsgfQorCisgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc01pY3JvcGhvbmUoKSkKKyAgICAgICAgICAg
IHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lOworICAgICAgICBp
ZiAoaXNDYW1lcmEoKSkKKyAgICAgICAgICAgIHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpDYW1lcmE7CisgICAgICAgIEFTU0VSVChpc0Rpc3BsYXkoKSk7CisgICAgICAgIHJldHVy
biBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW47CisgICAgfQorCisgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBwZXJzaXN0ZW50SWQ7CisgICAgICAgIGVuY29k
ZXIgPDwgbGFiZWw7CisgICAgICAgIHN3aXRjaE9uKHByb3BlcnRpZXMsIFsmXShjb25zdCBNb2Nr
TWljcm9waG9uZVByb3BlcnRpZXMmIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGVuY29kZXIg
PDwgKHVpbnQ4X3QpMTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcHJvcGVydGllczsKKyAgICAg
ICAgfSwgWyZdKGNvbnN0IE1vY2tDYW1lcmFQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKSB7CisgICAg
ICAgICAgICBlbmNvZGVyIDw8ICh1aW50OF90KTI7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHBy
b3BlcnRpZXM7CisgICAgICAgIH0sIFsmXShjb25zdCBNb2NrRGlzcGxheVByb3BlcnRpZXMmIHBy
b3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgKHVpbnQ4X3QpMzsKKyAgICAgICAg
ICAgIGVuY29kZXIgPDwgcHJvcGVydGllczsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFByb3BlcnRpZXMsIHR5cGVuYW1lIERlY29kZXI+CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TW9ja01lZGlhRGV2aWNlPiBkZWNvZGVNb2NrTWVkaWFEZXZpY2UoRGVj
b2RlciYgZGVjb2RlciwgU3RyaW5nJiYgcGVyc2lzdGVudElkLCBTdHJpbmcmJiBsYWJlbCkKKyAg
ICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UHJvcGVydGllcz4gcHJvcGVydGllczsKKyAgICAg
ICAgZGVjb2RlciA+PiBwcm9wZXJ0aWVzOworICAgICAgICBpZiAoIXByb3BlcnRpZXMpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gTW9ja01lZGlhRGV2
aWNlIHsgV1RGTW92ZShwZXJzaXN0ZW50SWQpLCBXVEZNb3ZlKGxhYmVsKSwgV1RGTW92ZSgqcHJv
cGVydGllcykgfTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrTWVkaWFEZXZpY2U+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHBlcnNpc3RlbnRJZDsK
KyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50SWQ7CisgICAgICAgIGlmICghcGVyc2lzdGVu
dElkKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gbGFiZWw7CisgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CisgICAgICAg
IGlmICghbGFiZWwpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gaW5kZXg7CisgICAgICAgIGRlY29kZXIgPj4gaW5kZXg7
CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgICAgIHN3aXRjaCAoKmluZGV4KSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAg
IHJldHVybiBkZWNvZGVNb2NrTWVkaWFEZXZpY2U8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzPihk
ZWNvZGVyLCBXVEZNb3ZlKCpwZXJzaXN0ZW50SWQpLCBXVEZNb3ZlKCpsYWJlbCkpOworICAgICAg
ICBjYXNlIDI6CisgICAgICAgICAgICByZXR1cm4gZGVjb2RlTW9ja01lZGlhRGV2aWNlPE1vY2tD
YW1lcmFQcm9wZXJ0aWVzPihkZWNvZGVyLCBXVEZNb3ZlKCpwZXJzaXN0ZW50SWQpLCBXVEZNb3Zl
KCpsYWJlbCkpOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXR1cm4gZGVjb2RlTW9j
a01lZGlhRGV2aWNlPE1vY2tEaXNwbGF5UHJvcGVydGllcz4oZGVjb2RlciwgV1RGTW92ZSgqcGVy
c2lzdGVudElkKSwgV1RGTW92ZSgqbGFiZWwpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIH0KKworICAgIFN0cmluZyBwZXJzaXN0ZW50SWQ7CisgICAgU3Ry
aW5nIGxhYmVsOworICAgIFZhcmlhbnQ8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzLCBNb2NrQ2Ft
ZXJhUHJvcGVydGllcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZS5jcHAKaW5kZXggOWM2MDI0ZTUzYThhMDBlZGZlMzgxYzMxMThlYWM5MmU1ODEz
M2Q3Yy4uMDAyY2FmMzEyMzZlY2I2NDZiZjgyNDQxMTgyY2IxNTA4NzQ2YzAwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEoKQogI2VuZGlmCiAKICAgICBpZiAoIXNhbXBsZVJhdGUoKSkK
LSAgICAgICAgc2V0U2FtcGxlUmF0ZShkZXZpY2UoKSA9PSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6TW9ja0RldmljZTo6TWljcm9waG9uZTEgPyA0NDEwMCA6IDQ4MDAwKTsKKyAgICAgICAgc2V0
U2FtcGxlUmF0ZShXVEY6OmdldDxNb2NrTWljcm9waG9uZVByb3BlcnRpZXM+KGRldmljZSgpLnBy
b3BlcnRpZXMpLmRlZmF1bHRTYW1wbGVSYXRlKTsKIAogICAgIG1fc3RhcnRUaW1lID0gTW9ub3Rv
bmljVGltZTo6bm93KCk7CiAgICAgbV90aW1lci5zdGFydFJlcGVhdGluZyhyZW5kZXJJbnRlcnZh
bCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggZTJlOGYyMzlkNGRlZjMzMzlkYzg4NTY0MjBmYTM5
MzRhMGQyNzU1My4uYjNmNGY2ZWRmYzQ1OTZhZjI2Y2ZjYjFiYThjNjQ0ZGUxN2U1NjY4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKQEAgLTQ0LDExNiArNDQsMTcxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RydWN0IE1vY2tEZXZpY2VJbmZvIHsKLSAgICBjb25zdCBjaGFyKiBpZDsKLSAgICBD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGU7Ci0gICAgY29uc3QgY2hhciogbmFtZTsKLSAg
ICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja0RldmljZSBkZXZpY2U7Ci19OwotCi1zdGF0
aWMgY29uc3QgSGFzaE1hcDxTdHJpbmcsIE1vY2tEZXZpY2VJbmZvPiYgZGV2aWNlTWFwKCkKLXsK
LSAgICBzdGF0aWMgY29uc3QgYXV0byBpbmZvTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsK
LSAgICAgICAgc3RhdGljIGNvbnN0IE1vY2tEZXZpY2VJbmZvIGRldmljZXNbXSA9IHsKLSAgICAg
ICAgICAgIHsgIjIzOWMyNGIwLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUsICJNb2NrIGF1ZGlvIGRldmljZSAxIiwgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6Ok1vY2tEZXZpY2U6Ok1pY3JvcGhvbmUxIH0sCi0gICAgICAg
ICAgICB7ICIyMzljMjRiMS0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiLCBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lLCAiTW9jayBhdWRpbyBkZXZpY2UgMiIsIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjpNb2NrRGV2aWNlOjpNaWNyb3Bob25lMiB9LAotCi0gICAgICAg
ICAgICB7ICIyMzljMjRiMi0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiLCBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEsICJNb2NrIHZpZGVvIGRldmljZSAxIiwgTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2U6Ok1vY2tEZXZpY2U6OkNhbWVyYTEgfSwKLSAgICAgICAgICAgIHsgIjIz
OWMyNGIzLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6OkNhbWVyYSwgIk1vY2sgdmlkZW8gZGV2aWNlIDIiLCBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6TW9ja0RldmljZTo6Q2FtZXJhMiB9LAotCi0gICAgICAgICAgICB7ICJTQ1JFRU4tMSIs
IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgIk1vY2sgc2NyZWVuIGRldmljZSAx
IiwgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Ok1vY2tEZXZpY2U6OlNjcmVlbjEgfSwKLSAgICAg
ICAgICAgIHsgIlNDUkVFTi0yIiwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCAi
TW9jayBzY3JlZW4gZGV2aWNlIDIiLCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja0Rldmlj
ZTo6U2NyZWVuMiB9LAotICAgICAgICB9OwotCi0gICAgICAgIEhhc2hNYXA8U3RyaW5nLCBNb2Nr
RGV2aWNlSW5mbz4gbWFwOwotICAgICAgICBmb3IgKGF1dG8mIGluZm8gOiBkZXZpY2VzKQotICAg
ICAgICAgICAgbWFwLmFkZChBU0NJSUxpdGVyYWwoaW5mby5pZCksIGluZm8pOworc3RhdGljIGlu
bGluZSBWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiBkZWZhdWx0RGV2aWNlcygpCit7CisgICAgcmV0
dXJuIFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+IHsKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsg
IjIzOWMyNGIwLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsICJNb2NrIGF1ZGlvIGRldmlj
ZSAxIiwgTW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzIHsgNDQxMDAgfSB9LAorICAgICAgICBNb2Nr
TWVkaWFEZXZpY2UgeyAiMjM5YzI0YjEtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2IiwgIk1v
Y2sgYXVkaW8gZGV2aWNlIDIiLCBNb2NrTWljcm9waG9uZVByb3BlcnRpZXMgeyA0ODAwMCB9IH0s
CisKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIjIzOWMyNGIyLTJiMTUtMTFlMy04MjI0LTA4
MDAyMDBjOWE2NiIsICJNb2NrIHZpZGVvIGRldmljZSAxIiwgTW9ja0NhbWVyYVByb3BlcnRpZXMg
eyAzMCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlVzZXIs
IENvbG9yOjpibGFjayB9IH0sCisgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICIyMzljMjRiMy0y
YjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiLCAiTW9jayB2aWRlbyBkZXZpY2UgMiIsIE1vY2tD
YW1lcmFQcm9wZXJ0aWVzIHsgMTUsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9G
YWNpbmdNb2RlOjpFbnZpcm9ubWVudCwgQ29sb3I6OmRhcmtHcmF5IH0gfSwKKworICAgICAgICBN
b2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTEiLCAiTW9jayBzY3JlZW4gZGV2aWNlIDEiLCBNb2Nr
RGlzcGxheVByb3BlcnRpZXMgeyAzMCwgQ29sb3I6OmxpZ2h0R3JheSB9IH0sCisgICAgICAgIE1v
Y2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMiIsICJNb2NrIHNjcmVlbiBkZXZpY2UgMiIsIE1vY2tE
aXNwbGF5UHJvcGVydGllcyB7IDEwLCBDb2xvcjo6eWVsbG93IH0gfQorICAgIH07Cit9CisKK3N0
YXRpYyBWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYgZGV2aWNlcygpCit7CisgICAgc3RhdGljIGF1
dG8gZGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIHJldHVybiBkZWZh
dWx0RGV2aWNlcygpOworICAgIH0oKSk7CisgICAgcmV0dXJuIGRldmljZXM7Cit9CisKK3N0YXRp
YyBIYXNoTWFwPFN0cmluZywgTW9ja01lZGlhRGV2aWNlPiYgZGV2aWNlTWFwKCkKK3sKKyAgICBz
dGF0aWMgYXV0byBtYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBIYXNoTWFw
PFN0cmluZywgTW9ja01lZGlhRGV2aWNlPiBtYXA7CisgICAgICAgIGZvciAoYXV0byYgZGV2aWNl
IDogZGV2aWNlcygpKQorICAgICAgICAgICAgbWFwLmFkZChkZXZpY2UucGVyc2lzdGVudElkLCBk
ZXZpY2UpOworCiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfSgpKTsKKyAgICByZXR1cm4gbWFw
OworfQogCi0gICAgcmV0dXJuIGluZm9NYXA7Cit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
OjpjcmVhdGVDYXB0dXJlRGV2aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKQorewor
ICAgIGlmIChkZXZpY2UuaXNNaWNyb3Bob25lKCkpIHsKKyAgICAgICAgYXVkaW9EZXZpY2VzKCku
YXBwZW5kKGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6Ok1pY3JvcGhvbmUsIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVlKCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChkZXZpY2UuaXNDYW1lcmEoKSkgeworICAgICAgICB2
aWRlb0RldmljZXMoKS5hcHBlbmQoY2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhLCBkZXZpY2UucGVyc2lzdGVudElkKS52YWx1ZSgp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoZGV2aWNlLmlzRGlzcGxheSgp
KTsKKyAgICBkaXNwbGF5RGV2aWNlcygpLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3Rl
bnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIGRldmljZS5wZXJzaXN0ZW50
SWQpLnZhbHVlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgaWQpCit2b2lkIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjpyZXNldERldmljZXMoKQogewotICAgIEFTU0VSVCghaWQuaXNFbXB0eSgp
KTsKKyAgICBzZXREZXZpY2VzKGRlZmF1bHREZXZpY2VzKCkpOworfQorCit2b2lkIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpzZXREZXZpY2VzKFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+JiYgbmV3
TW9ja0RldmljZXMpCit7CisgICAgYXVkaW9EZXZpY2VzKCkuY2xlYXIoKTsKKyAgICB2aWRlb0Rl
dmljZXMoKS5jbGVhcigpOworICAgIGRpc3BsYXlEZXZpY2VzKCkuY2xlYXIoKTsKKworICAgIGF1
dG8mIG1vY2tEZXZpY2VzID0gZGV2aWNlcygpOworICAgIG1vY2tEZXZpY2VzID0gV1RGTW92ZShu
ZXdNb2NrRGV2aWNlcyk7CisKKyAgICBhdXRvJiBtYXAgPSBkZXZpY2VNYXAoKTsKKyAgICBtYXAu
Y2xlYXIoKTsKIAotICAgIGF1dG8gbWFwID0gZGV2aWNlTWFwKCk7Ci0gICAgYXV0byBpdCA9IG1h
cC5maW5kKGlkKTsKLSAgICBpZiAoaXQgIT0gbWFwLmVuZCgpICYmIGl0LT52YWx1ZS50eXBlID09
IHR5cGUpIHsKLSAgICAgICAgYXV0byBkZXZpY2UgPSBDYXB0dXJlRGV2aWNlKGl0LT52YWx1ZS5p
ZCwgaXQtPnZhbHVlLnR5cGUsIGl0LT52YWx1ZS5uYW1lKTsKLSAgICAgICAgZGV2aWNlLnNldEVu
YWJsZWQodHJ1ZSk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKGRldmljZSk7CisgICAgZm9yIChj
b25zdCBhdXRvJiBkZXZpY2UgOiBtb2NrRGV2aWNlcykgeworICAgICAgICBtYXAuYWRkKGRldmlj
ZS5wZXJzaXN0ZW50SWQsIGRldmljZSk7CisgICAgICAgIGNyZWF0ZUNhcHR1cmVEZXZpY2UoZGV2
aWNlKTsKICAgICB9Cit9CiAKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0Owordm9pZCBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6YWRkRGV2aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNl
KQoreworICAgIGRldmljZXMoKS5hcHBlbmQoZGV2aWNlKTsKKyAgICBkZXZpY2VNYXAoKS5zZXQo
ZGV2aWNlLnBlcnNpc3RlbnRJZCwgZGV2aWNlKTsKKyAgICBjcmVhdGVDYXB0dXJlRGV2aWNlKGRl
dmljZSk7CiB9CiAKLVZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmF1ZGlvRGV2aWNlcygpCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVE
ZXZpY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQpCit7CisgICAgYXV0byYgbWFwID0gZGV2
aWNlTWFwKCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1hcC5maW5kKHBlcnNpc3RlbnRJZCk7Cisg
ICAgaWYgKGl0ZXJhdG9yID09IG1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGV2
aWNlcygpLnJlbW92ZUZpcnN0TWF0Y2hpbmcoWyZwZXJzaXN0ZW50SWRdKGNvbnN0IE1vY2tNZWRp
YURldmljZSYgZGV2aWNlKSB7CisgICAgICAgIHJldHVybiBkZXZpY2UucGVyc2lzdGVudElkID09
IHBlcnNpc3RlbnRJZDsKKyAgICB9KTsKKworICAgIGF1dG8gbWF0Y2hDYXB0dXJlRGV2aWNlQ3Jp
dGVyaWEgPSBbJnBlcnNpc3RlbnRJZF0oY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlKSB7Cisg
ICAgICAgIHJldHVybiBkZXZpY2UucGVyc2lzdGVudElkKCkgPT0gcGVyc2lzdGVudElkOworICAg
IH07CisKKyAgICBhdXRvJiBkZXZpY2UgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKGRldmlj
ZS5pc01pY3JvcGhvbmUoKSkKKyAgICAgICAgYXVkaW9EZXZpY2VzKCkucmVtb3ZlRmlyc3RNYXRj
aGluZyhtYXRjaENhcHR1cmVEZXZpY2VDcml0ZXJpYSk7CisgICAgZWxzZSBpZiAoZGV2aWNlLmlz
Q2FtZXJhKCkpCisgICAgICAgIHZpZGVvRGV2aWNlcygpLnJlbW92ZUZpcnN0TWF0Y2hpbmcobWF0
Y2hDYXB0dXJlRGV2aWNlQ3JpdGVyaWEpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoZGV2
aWNlLmlzRGlzcGxheSgpKTsKKyAgICAgICAgZGlzcGxheURldmljZXMoKS5yZW1vdmVGaXJzdE1h
dGNoaW5nKG1hdGNoQ2FwdHVyZURldmljZUNyaXRlcmlhKTsKKyAgICB9CisKKyAgICBtYXAucmVt
b3ZlKGl0ZXJhdG9yKTsKK30KKworc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGlkKQogewotICAgIHN0YXRpYyBh
dXRvIGluZm8gPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBWZWN0b3I8Q2FwdHVy
ZURldmljZT4gdmVjdG9yOworICAgIEFTU0VSVCghaWQuaXNFbXB0eSgpKTsKIAotICAgICAgICBh
dXRvIGNhcHR1cmVEZXZpY2UgPSBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lLCBBU0NJSUxpdGVyYWwoIjIzOWMyNGIwLTJi
MTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIpKTsKLSAgICAgICAgQVNTRVJUKGNhcHR1cmVEZXZp
Y2UpOwotICAgICAgICB2ZWN0b3IuYXBwZW5kKFdURk1vdmUoY2FwdHVyZURldmljZS52YWx1ZSgp
KSk7CisgICAgYXV0byYgbWFwID0gZGV2aWNlTWFwKCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1h
cC5maW5kKGlkKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbWFwLmVuZCgpIHx8IGl0ZXJhdG9yLT52
YWx1ZS50eXBlKCkgIT0gdHlwZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
ICAgICBjYXB0dXJlRGV2aWNlID0gY2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSwgQVNDSUlMaXRlcmFsKCIyMzljMjRiMS0y
YjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiKSk7Ci0gICAgICAgIEFTU0VSVChjYXB0dXJlRGV2
aWNlKTsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChXVEZNb3ZlKGNhcHR1cmVEZXZpY2UudmFsdWUo
KSkpOworICAgIENhcHR1cmVEZXZpY2UgZGV2aWNlIHsgaXRlcmF0b3ItPnZhbHVlLnBlcnNpc3Rl
bnRJZCwgdHlwZSwgaXRlcmF0b3ItPnZhbHVlLmxhYmVsIH07CisgICAgZGV2aWNlLnNldEVuYWJs
ZWQodHJ1ZSk7CisgICAgcmV0dXJuIFdURk1vdmUoZGV2aWNlKTsKK30KIAotICAgICAgICByZXR1
cm4gdmVjdG9yOworVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6YXVkaW9EZXZpY2VzKCkKK3sKKyAgICBzdGF0aWMgYXV0byBhdWRpb0RldmljZXMgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gYXVkaW9E
ZXZpY2VzOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRldmljZSA6IGRldmljZXMoKSkgewor
ICAgICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6TWljcm9waG9uZSkKKyAgICAgICAgICAgICAgICBhdWRpb0RldmljZXMuYXBwZW5kKGNhcHR1
cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3Jv
cGhvbmUsIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVlKCkpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBhdWRpb0RldmljZXM7CiAgICAgfSgpKTsKLSAgICByZXR1cm4gaW5mbzsKKyAgICBy
ZXR1cm4gYXVkaW9EZXZpY2VzOwogfQogCiBWZWN0b3I8Q2FwdHVyZURldmljZT4mIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjp2aWRlb0RldmljZXMoKQogewotICAgIHN0YXRpYyBhdXRvIGluZm8g
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4g
dmVjdG9yOwotCi0gICAgICAgIGF1dG8gY2FwdHVyZURldmljZSA9IGNhcHR1cmVEZXZpY2VXaXRo
UGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSwgQVNDSUlMaXRl
cmFsKCIyMzljMjRiMi0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiKSk7Ci0gICAgICAgIEFT
U0VSVChjYXB0dXJlRGV2aWNlKTsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChXVEZNb3ZlKGNhcHR1
cmVEZXZpY2UudmFsdWUoKSkpOwotCi0gICAgICAgIGNhcHR1cmVEZXZpY2UgPSBjYXB0dXJlRGV2
aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEsIEFT
Q0lJTGl0ZXJhbCgiMjM5YzI0YjMtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2IikpOwotICAg
ICAgICBBU1NFUlQoY2FwdHVyZURldmljZSk7Ci0gICAgICAgIHZlY3Rvci5hcHBlbmQoV1RGTW92
ZShjYXB0dXJlRGV2aWNlLnZhbHVlKCkpKTsKLQotICAgICAgICByZXR1cm4gdmVjdG9yOworICAg
IHN0YXRpYyBhdXRvIHZpZGVvRGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAg
ICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiB2aWRlb0RldmljZXM7CisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgZGV2aWNlIDogZGV2aWNlcygpKSB7CisgICAgICAgICAgICBpZiAoZGV2aWNlLnR5
cGUoKSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEpCisgICAgICAgICAgICAg
ICAgdmlkZW9EZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEsIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVl
KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2aWRlb0RldmljZXM7CiAgICAgfSgpKTsK
LSAgICByZXR1cm4gaW5mbzsKKyAgICByZXR1cm4gdmlkZW9EZXZpY2VzOwogfQogCiBWZWN0b3I8
Q2FwdHVyZURldmljZT4mIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpkaXNwbGF5RGV2aWNlcygp
CiB7Ci0gICAgc3RhdGljIGF1dG8gZGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0g
ICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiB2ZWN0b3I7Ci0KLSAgICAgICAgYXV0byBjYXB0
dXJlRGV2aWNlID0gY2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6U2NyZWVuLCBBU0NJSUxpdGVyYWwoIlNDUkVFTi0xIikpOwotICAgICAgICBB
U1NFUlQoY2FwdHVyZURldmljZSk7Ci0gICAgICAgIHZlY3Rvci5hcHBlbmQoV1RGTW92ZShjYXB0
dXJlRGV2aWNlLnZhbHVlKCkpKTsKLQotICAgICAgICBjYXB0dXJlRGV2aWNlID0gY2FwdHVyZURl
dmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBB
U0NJSUxpdGVyYWwoIlNDUkVFTi0yIikpOwotICAgICAgICBBU1NFUlQoY2FwdHVyZURldmljZSk7
Ci0gICAgICAgIHZlY3Rvci5hcHBlbmQoV1RGTW92ZShjYXB0dXJlRGV2aWNlLnZhbHVlKCkpKTsK
LQotICAgICAgICByZXR1cm4gdmVjdG9yOworICAgIHN0YXRpYyBhdXRvIGRpc3BsYXlEZXZpY2Vz
ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+
IGRpc3BsYXlEZXZpY2VzOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRldmljZSA6IGRldmlj
ZXMoKSkgeworICAgICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0gQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6U2NyZWVuKQorICAgICAgICAgICAgICAgIGRpc3BsYXlEZXZpY2VzLmFwcGVu
ZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpTY3JlZW4sIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVlKCkpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBkaXNwbGF5RGV2aWNlczsKICAgICB9KCkpOwogCi0gICAgcmV0dXJuIGRldmlj
ZXM7CisgICAgcmV0dXJuIGRpc3BsYXlEZXZpY2VzOwogfQogCiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgOiBSZWFsdGlt
ZU1lZGlhU291cmNlKGlkLCB0eXBlLCBuYW1lKQorICAgICwgbV9kZXZpY2UoZGV2aWNlTWFwKCku
Z2V0KGlkKSkKIHsKICAgICBBU1NFUlQodHlwZSAhPSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpOb25lKTsKLQotICAgIGF1dG8gbWFwID0gZGV2aWNlTWFwKCk7Ci0gICAgYXV0byBpdCA9IG1h
cC5maW5kKGlkKTsKLSAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKLQotICAgIG1fZGV2aWNl
ID0gaXQtPnZhbHVlLmRldmljZTsKICAgICBzZXRQZXJzaXN0ZW50SUQoU3RyaW5nKGlkKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2UuaAppbmRleCBhMWQzZTliNjFiNjExMzM2NWE3ODQzMDAyODNiOTRhNWUxMWZh
NzVmLi4zMzU1ZGE2NjFlYzYwZTlkZjFhMjUxYzAwMGFiNTY5NzFjZjhjYjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oCkBAIC0zMiwyNyArMzIsMzIgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNp
bmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCisjaW5jbHVkZSAiTW9ja01lZGlhRGV2aWNlLmgiCiAj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIENhcHR1cmVEZXZpY2U7Ci0KIGNsYXNzIE1vY2tSZWFsdGltZU1lZGlhU291cmNlIDog
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1vY2tS
ZWFsdGltZU1lZGlhU291cmNlKCkgPSBkZWZhdWx0OwogCisgICAgc3RhdGljIHZvaWQgc2V0RGV2
aWNlcyhWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBhZGREZXZp
Y2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlRGV2aWNl
KGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCByZXNldERldmljZXMoKTsKKwogICAgIHN0YXRpYyBWZWN0b3I8Q2FwdHVyZURldmljZT4m
IGF1ZGlvRGV2aWNlcygpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FwdHVyZURldmljZT4mIHZpZGVv
RGV2aWNlcygpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGRpc3BsYXlEZXZp
Y2VzKCk7CiAKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJl
RGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBjb25zdCBT
dHJpbmcmKTsKIAotICAgIGVudW0gY2xhc3MgTW9ja0RldmljZSB7IEludmFsaWQsIE1pY3JvcGhv
bmUxLCBNaWNyb3Bob25lMiwgQ2FtZXJhMSwgQ2FtZXJhMiwgU2NyZWVuMSwgU2NyZWVuMiB9Owot
CiBwcm90ZWN0ZWQ6CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBp
ZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUNh
cHR1cmVEZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJik7CisKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25z
dHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSA9IDA7CkBA
IC02Miw4ICs2Nyw4IEBAIHByb3RlY3RlZDoKIAogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKIAotICAgIE1vY2tEZXZp
Y2UgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2U7IH0KLSAgICBNb2NrRGV2aWNlIG1f
ZGV2aWNlIHsgTW9ja0RldmljZTo6SW52YWxpZCB9OworICAgIGNvbnN0IE1vY2tNZWRpYURldmlj
ZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2U7IH0KKyAgICBNb2NrTWVkaWFEZXZp
Y2UgbV9kZXZpY2U7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IDc3YTBmOGVkZDNjYjdmNmFlMjMz
Yjc1MDMwMTIxNTM2ODIwMDcwMWMuLmRmOTFlYmUwZmU4NTQ0MTE0YTY2MmM3NmU0MmFmY2E3YTcw
MGVkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC0zNywxNiArMzcsMzkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzZXRNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoYm9vbCBlbmFibGVk
KQorTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpzaW5nbGV0b24oKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcj4gY2VudGVyOworICAgIHJldHVybiBjZW50ZXI7Cit9CisK
K3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyRW5hYmxlZChib29sIGVuYWJsZWQpCit7CiAgICAgc3RhdGljIGJvb2wgYWN0
aXZlID0gZmFsc2U7CiAgICAgaWYgKGFjdGl2ZSAhPSBlbmFibGVkKSB7CiAgICAgICAgIGFjdGl2
ZSA9IGVuYWJsZWQ7Ci0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldFNoYXJl
ZFN0cmVhbUNlbnRlck92ZXJyaWRlKGVuYWJsZWQgPyAmY2VudGVyLmdldCgpIDogbnVsbHB0cik7
CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldFNoYXJlZFN0cmVhbUNlbnRl
ck92ZXJyaWRlKGVuYWJsZWQgPyAmc2luZ2xldG9uKCkgOiBudWxscHRyKTsKICAgICB9CiB9CiAK
K3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldERldmljZXMoVmVjdG9yPE1v
Y2tNZWRpYURldmljZT4mJiBuZXdNb2NrRGV2aWNlcykKK3sKKyAgICBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZTo6c2V0RGV2aWNlcyhXVEZNb3ZlKG5ld01vY2tEZXZpY2VzKSk7CisgICAgc2luZ2xl
dG9uKCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OmFkZERldmljZShjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRldmljZSkK
K3sKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkRGV2aWNlKGRldmljZSk7CisgICAg
c2luZ2xldG9uKCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3Rl
bnRJZCkKK3sKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlRGV2aWNlKHBlcnNp
c3RlbnRJZCk7CisgICAgc2luZ2xldG9uKCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmgKaW5kZXggMGY5MmY5ZDQzZjk4OWJhNmU4YzNhYThmMzVj
NDA0ZWI4YjQyOWYzZi4uYmU0N2EwZTNlNDYyMTFkNGVmZmVkMDJjMWQ3MTY1NzlhMWM0NTc1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaApAQCAtMzksNiArMzksMTAgQEAgY2xhc3MgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlciB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKGJvb2wpOwogCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgc2V0RGV2aWNlcyhWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBhZGREZXZpY2UoY29uc3QgTW9ja01lZGlh
RGV2aWNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVtb3ZlRGV2aWNlKGNv
bnN0IFN0cmluZyYgcGVyc2lzdGVudElkKTsKKwogICAgIHN0YXRpYyBSZWFsdGltZU1lZGlhU291
cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiB2aWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkgeyBy
ZXR1cm4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmZhY3RvcnkoKTsgfQogICAgIHN0YXRpYyBS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRpb0NhcHR1cmVTb3Vy
Y2VGYWN0b3J5KCkgeyByZXR1cm4gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmZhY3RvcnkoKTsg
fQogCkBAIC00Niw2ICs1MCw4IEBAIHByaXZhdGU6CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPE1vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyPjsKIAorICAgIHN0YXRpYyBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlciYgc2luZ2xldG9uKCk7CisKICAgICBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRp
b0NhcHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3RvcnkoKSBmaW5hbCB7IHJldHVybiBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6ZmFjdG9yeSgpOyB9CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW9DYXB0dXJlRmFjdG9yeSYgdmlkZW9GYWN0b3J5KCkgZmluYWwgeyByZXR1cm4gTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmZhY3RvcnkoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGVkZWRh
ODNhMGUzYzU3NzJiZDcwYzhiNzRkZDk4ZTRlMDYyZGMyOGEuLjc5OTYxNGE5MDAxZjdkOTk3ODk5
OGU2ODg5Nzg3Y2Y1MjI4YjE5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0xMDgsMzEgKzEwOCwx
OCBAQCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UoY29u
c3QgU3RyaW5nJiBkZXZpY2VJRCwgY29uc3QgUwogICAgIDogTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2UoZGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvLCBuYW1lKQogICAg
ICwgbV90aW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6Z2VuZXJhdGVGcmFtZSkKIHsKLSAgICBzd2l0Y2ggKGRldmljZSgpKSB7Ci0gICAgY2Fz
ZSBNb2NrRGV2aWNlOjpDYW1lcmExOgotICAgICAgICBzZXRGcmFtZVJhdGUoMzApOwotICAgICAg
ICBzZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTW9ja0RldmljZTo6Q2FtZXJhMjoKLSAgICAgICAgc2V0RnJh
bWVSYXRlKDE1KTsKLSAgICAgICAgc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkVudmlyb25tZW50KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNb2NrRGV2aWNl
OjpTY3JlZW4xOgotICAgICAgICBzZXRGcmFtZVJhdGUoMzApOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE1vY2tEZXZpY2U6OlNjcmVlbjI6Ci0gICAgICAgIHNldEZyYW1lUmF0ZSgxMCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTW9ja0RldmljZTo6TWljcm9waG9uZTE6Ci0gICAgY2Fz
ZSBNb2NrRGV2aWNlOjpNaWNyb3Bob25lMjoKLSAgICBjYXNlIE1vY2tEZXZpY2U6OkludmFsaWQ6
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0K
ICAgICBtX2Rhc2hXaWR0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKICAgICBtX2Rhc2hX
aWR0aHMudW5jaGVja2VkQXBwZW5kKDYpOwogICAgIG1fZGFzaFdpZHRocy51bmNoZWNrZWRBcHBl
bmQoNik7CisKKyAgICBpZiAobW9ja1NjcmVlbigpKSB7CisgICAgICAgIHNldEZyYW1lUmF0ZShX
VEY6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KGRldmljZSgpLnByb3BlcnRpZXMpLmRlZmF1
bHRGcmFtZVJhdGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYgcHJvcGVy
dGllcyA9IFdURjo6Z2V0PE1vY2tDYW1lcmFQcm9wZXJ0aWVzPihkZXZpY2UoKS5wcm9wZXJ0aWVz
KTsKKyAgICBzZXRGcmFtZVJhdGUocHJvcGVydGllcy5kZWZhdWx0RnJhbWVSYXRlKTsKKyAgICBz
ZXRGYWNpbmdNb2RlKHByb3BlcnRpZXMuZmFjaW5nTW9kZUNhcGFiaWxpdHkpOwogfQogCiBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6fk1vY2tSZWFsdGltZVZpZGVvU291cmNlKCkKQEAgLTE5MSwx
MCArMTc4LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6dXBkYXRlU2V0dGluZ3Mo
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW4KIHZvaWQgTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcyYgY2FwYWJpbGl0aWVzKQogewogICAgIGlmIChtb2NrQ2FtZXJhKCkpIHsKLSAgICAg
ICAgaWYgKGRldmljZSgpID09IE1vY2tEZXZpY2U6OkNhbWVyYTEpCi0gICAgICAgICAgICBjYXBh
YmlsaXRpZXMuYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXIp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYXBhYmlsaXRpZXMuYWRkRmFjaW5nTW9kZShS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50KTsKKyAgICAgICAgY2FwYWJp
bGl0aWVzLmFkZEZhY2luZ01vZGUoV1RGOjpnZXQ8TW9ja0NhbWVyYVByb3BlcnRpZXM+KGRldmlj
ZSgpLnByb3BlcnRpZXMpLmZhY2luZ01vZGVDYXBhYmlsaXR5KTsKIAogICAgICAgICBjYXBhYmls
aXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgzMjAsIDE5MjApKTsKICAgICAg
ICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDI0MCwgMTA4
MCkpOwpAQCAtMzkyLDcgKzM3Niw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRy
YXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgY29udGV4dC5kcmF3VGV4
dChzdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCBzdGF0c0xvY2F0aW9u
KTsKICAgICB9IGVsc2UgewogICAgICAgICBzdGF0c0xvY2F0aW9uLm1vdmUoMCwgbV9zdGF0c0Zv
bnRTaXplKTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4oKFN0
cmluZ1ZpZXcoZGV2aWNlKCkgPT0gTW9ja0RldmljZTo6U2NyZWVuMSA/ICJTY3JlZW4gMSIgOiAi
U2NyZWVuIDIiKSkpLCBzdGF0c0xvY2F0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChz
dGF0c0ZvbnQsIFRleHRSdW4geyBpZCgpIH0sIHN0YXRzTG9jYXRpb24pOwogICAgIH0KIAogICAg
IEZsb2F0UG9pbnQgYmlwQm9wTG9jYXRpb24oc2l6ZS53aWR0aCgpICogLjYsIHNpemUuaGVpZ2h0
KCkgKiAuNik7CkBAIC00MzEsMjcgKzQxNSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OmdlbmVyYXRlRnJhbWUoKQogICAgIGF1dG8mIHNpemUgPSB0aGlzLT5zaXplKCk7CiAgICAg
RmxvYXRSZWN0IGZyYW1lUmVjdChGbG9hdFBvaW50KCksIHNpemUpOwogCi0gICAgQ29sb3IgZmls
bENvbG9yOwotICAgIHN3aXRjaCAoZGV2aWNlKCkpIHsKLSAgICBjYXNlIE1vY2tEZXZpY2U6OkNh
bWVyYTE6Ci0gICAgICAgIGZpbGxDb2xvciA9IENvbG9yOjpibGFjazsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpDYW1lcmEyOgotICAgICAgICBmaWxsQ29sb3IgPSBDb2xv
cjo6ZGFya0dyYXk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTW9ja0RldmljZTo6U2NyZWVu
MToKLSAgICAgICAgZmlsbENvbG9yID0gQ29sb3I6OmxpZ2h0R3JheTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpTY3JlZW4yOgotICAgICAgICBmaWxsQ29sb3IgPSBDb2xv
cjo6eWVsbG93OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1vY2tEZXZpY2U6Ok1pY3JvcGhv
bmUxOgotICAgIGNhc2UgTW9ja0RldmljZTo6TWljcm9waG9uZTI6Ci0gICAgY2FzZSBNb2NrRGV2
aWNlOjpJbnZhbGlkOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCisgICAgYXV0byBmaWxsQ29sb3IgPSBtb2NrQ2FtZXJhKCkgPyBXVEY6Omdl
dDxNb2NrQ2FtZXJhUHJvcGVydGllcz4oZGV2aWNlKCkucHJvcGVydGllcykuZmlsbENvbG9yIDog
V1RGOjpnZXQ8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihkZXZpY2UoKS5wcm9wZXJ0aWVzKS5maWxs
Q29sb3I7CiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXpl
KSwgZmlsbENvbG9yKTsKIAogICAgIGlmICghbXV0ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IGJk
NTI2ODI2ZmYwNDgyYjQ0ZmM0OWE0Yzg2MDdiNjY2ODA5NGNmNDcuLmE2NTg5Yjg3NTQ4NzcwNGU4
YjQ4ODdhNDUyZWUzN2Q5NzcxMGE2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKQEAgLTgzLDggKzgzLDggQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgZGVsYXlTYW1wbGVzKFNlY29uZHMpIG92ZXJyaWRlOwogCi0g
ICAgYm9vbCBtb2NrQ2FtZXJhKCkgY29uc3QgeyByZXR1cm4gZGV2aWNlKCkgPT0gTW9ja0Rldmlj
ZTo6Q2FtZXJhMSB8fCBkZXZpY2UoKSA9PSBNb2NrRGV2aWNlOjpDYW1lcmEyOyB9Ci0gICAgYm9v
bCBtb2NrU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gZGV2aWNlKCkgPT0gTW9ja0RldmljZTo6U2Ny
ZWVuMSB8fCBkZXZpY2UoKSA9PSBNb2NrRGV2aWNlOjpTY3JlZW4yOyB9CisgICAgYm9vbCBtb2Nr
Q2FtZXJhKCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNb2NrQ2FtZXJh
UHJvcGVydGllcz4oZGV2aWNlKCkucHJvcGVydGllcyk7IH0KKyAgICBib29sIG1vY2tTY3JlZW4o
KSBjb25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1vY2tEaXNwbGF5UHJvcGVy
dGllcz4oZGV2aWNlKCkucHJvcGVydGllcyk7IH0KIAogICAgIGZsb2F0IG1fYmFzZUZvbnRTaXpl
IHsgMCB9OwogICAgIGZsb2F0IG1fYmlwQm9wRm9udFNpemUgeyAwIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAppbmRleCBiZDlkZTM0ZWQyYmZmOTMwYTZkYzMwYTBlNGM3Mzc5MDg4ODdmMjEwLi40MjJlNTI0
MmQ2OWUyM2JmMTFkZjY5ZDk3ODMyOWM1NzFiMDhhMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAg
LTQwMiw2ICs0MDIsNyBAQCBzZXQoV2ViS2l0X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tJbnNwZWN0b3IuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZpY2UuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tO
YXZpZ2F0aW9uRGF0YVJlZi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uUmVm
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVk
aWFEZXZpY2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVkaWFE
ZXZpY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkZDA2MGMyMzkzZGM1NzQ1YWIzNjgzYmRhMWZhZDZkZjVh
MTc0YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S01vY2tNZWRpYURldmljZS5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldLTW9ja01lZGlhRGV2aWNlLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNp
bmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCit1c2luZyBQcm9wZXJ0aWVzID0gVmFyaWFudDxXZWJDb3JlOjpNb2NrTWljcm9w
aG9uZVByb3BlcnRpZXMsIFdlYkNvcmU6Ok1vY2tDYW1lcmFQcm9wZXJ0aWVzLCBXZWJDb3JlOjpN
b2NrRGlzcGxheVByb3BlcnRpZXM+Oworc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFByb3Bl
cnRpZXM+IHR5cGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBpZiAodHlw
ZSA9PSAiY2FtZXJhIikKKyAgICAgICAgcmV0dXJuIFByb3BlcnRpZXMgeyBXZWJDb3JlOjpNb2Nr
Q2FtZXJhUHJvcGVydGllcyB7IH0gfTsKKyAgICBpZiAodHlwZSA9PSAibWljcm9waG9uZSIpCisg
ICAgICAgIHJldHVybiBQcm9wZXJ0aWVzIHsgV2ViQ29yZTo6TW9ja01pY3JvcGhvbmVQcm9wZXJ0
aWVzIHsgfSB9OworICAgIGlmICh0eXBlID09ICJzY3JlZW4iKQorICAgICAgICByZXR1cm4gUHJv
cGVydGllcyB7IFdlYkNvcmU6Ok1vY2tEaXNwbGF5UHJvcGVydGllcyB7IH0gfTsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworfQorCit2b2lkIFdLQWRkTW9ja01lZGlhRGV2aWNlKFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIFdLU3RyaW5nUmVmIGxhYmVs
LCBXS1N0cmluZ1JlZiB0eXBlKQoreworICAgIGlmIChhdXRvIHByb3BlcnRpZXMgPSB0eXBlRnJv
bVN0cmluZyhXZWJLaXQ6OnRvSW1wbCh0eXBlKS0+c3RyaW5nKCkpKQorICAgICAgICB0b0ltcGwo
Y29udGV4dCktPmFkZE1vY2tNZWRpYURldmljZSh7IFdlYktpdDo6dG9JbXBsKHBlcnNpc3RlbnRJ
ZCktPnN0cmluZygpLCBXZWJLaXQ6OnRvSW1wbChsYWJlbCktPnN0cmluZygpLCBXVEZNb3ZlKCpw
cm9wZXJ0aWVzKSB9KTsKK30KKwordm9pZCBXS0NsZWFyTW9ja01lZGlhRGV2aWNlcyhXS0NvbnRl
eHRSZWYgY29udGV4dCkKK3sKKyAgICB0b0ltcGwoY29udGV4dCktPmNsZWFyTW9ja01lZGlhRGV2
aWNlcygpOworfQorCit2b2lkIFdLUmVtb3ZlTW9ja01lZGlhRGV2aWNlKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBXS1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQpCit7CisgICAgdG9JbXBsKGNvbnRleHQp
LT5yZW1vdmVNb2NrTWVkaWFEZXZpY2UoV2ViS2l0Ojp0b0ltcGwocGVyc2lzdGVudElkKS0+c3Ry
aW5nKCkpOworfQorCit2b2lkIFdLUmVzZXRNb2NrTWVkaWFEZXZpY2VzKFdLQ29udGV4dFJlZiBj
b250ZXh0KQoreworICAgIHRvSW1wbChjb250ZXh0KS0+cmVzZXRNb2NrTWVkaWFEZXZpY2VzKCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01vY2tNZWRp
YURldmljZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZp
Y2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNzc2ZDI4MTcxMTk0OWExMGVjNzBkNDIxY2FiNmEwMzViMDc0YTFh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNb2Nr
TWVkaWFEZXZpY2UuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktp
dC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
CitXS19FWFBPUlQgdm9pZCBXS0FkZE1vY2tNZWRpYURldmljZShXS0NvbnRleHRSZWYsIFdLU3Ry
aW5nUmVmIHBlcnNpc3RlbnRJZCwgV0tTdHJpbmdSZWYgbGFiZWwsIFdLU3RyaW5nUmVmIHR5cGUp
OworV0tfRVhQT1JUIHZvaWQgV0tDbGVhck1vY2tNZWRpYURldmljZXMoV0tDb250ZXh0UmVmKTsK
K1dLX0VYUE9SVCB2b2lkIFdLUmVtb3ZlTW9ja01lZGlhRGV2aWNlKFdLQ29udGV4dFJlZiwgV0tT
dHJpbmdSZWYgcGVyc2lzdGVudElkKTsKK1dLX0VYUE9SVCB2b2lkIFdLUmVzZXRNb2NrTWVkaWFE
ZXZpY2VzKFdLQ29udGV4dFJlZik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggN2M2Y2VjMDE0
ZmZkNzRlMWFjNTJiZTQ0OTFjMzc0M2U4NWUxMDgxMS4uYmViN2I3YjA2YTFiNTQyY2Y3NjIzMjVk
ODBkMzU0YmNhZGFiNjM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtODIsNiArODIsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Mb2dJbml0aWFsaXphdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3MuaD4KQEAgLTIyMTIsNCArMjIxMywzNiBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5KFN1c3BlbmRlZFBh
Z2VQcm94eSYgcGFnZSkKICAgICAgICAgbV9zdXNwZW5kZWRQYWdlcy5yZW1vdmUoaXRlcmF0b3Ip
OwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNb2NrTWVkaWFEZXZpY2UoY29uc3QgTW9j
a01lZGlhRGV2aWNlJiBkZXZpY2UpCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6YWRkRGV2aWNlKGRldmljZSk7CisgICAgc2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRNb2NrTWVkaWFEZXZpY2Ug
eyBkZXZpY2UgfSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJNb2Nr
TWVkaWFEZXZpY2VzKCkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZpY2VzKHsgfSk7CisgICAgc2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDbGVhck1vY2tNZWRpYURldmljZXMgeyB9KTsK
KyNlbmRpZgorfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNb2NrTWVkaWFEZXZpY2Uo
Y29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQpCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6cmVtb3ZlRGV2aWNlKHBlcnNpc3Rl
bnRJZCk7CisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZW1v
dmVNb2NrTWVkaWFEZXZpY2UgeyBwZXJzaXN0ZW50SWQgfSk7CisjZW5kaWYKK30KKwordm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cmVzZXRNb2NrTWVkaWFEZXZpY2VzKCkKK3sKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldERldmljZXMoKTsK
KyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlc2V0TW9ja01l
ZGlhRGV2aWNlcyB7IH0pOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggYWViMTkxMGE2MGU0NWFm
MDI1NWMwNWU3ZWRjY2JiZGIxNjkzYjhmMC4uODNiMDYzZTllNWRmNTE2YzBkYWRmZWZkM2I5MmJj
NTQ5YTE3MjQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBA
IC04Miw2ICs4MiwxMCBAQCBjbGFzcyBOYXZpZ2F0aW9uOwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRp
b247CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBNb2NrTWVkaWFEZXZpY2U7Cit9
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEb3dubG9hZFByb3h5OwpAQCAtNDU0LDYg
KzQ1OCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjcmVlblByb3BlcnRpZXNTdGF0ZUNoYW5n
ZWQoKTsKIAorICAgIHZvaWQgYWRkTW9ja01lZGlhRGV2aWNlKGNvbnN0IFdlYkNvcmU6Ok1vY2tN
ZWRpYURldmljZSYpOworICAgIHZvaWQgY2xlYXJNb2NrTWVkaWFEZXZpY2VzKCk7CisgICAgdm9p
ZCByZW1vdmVNb2NrTWVkaWFEZXZpY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQpOworICAg
IHZvaWQgcmVzZXRNb2NrTWVkaWFEZXZpY2VzKCk7CisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNmE1MDcyMWVlMjI5OTk3YTk1NzI2ZWFiMDdlOTE4MjY1MmNk
ZjJhNS4uMDg2M2Y5OTU4ODVjYmU5NjIyNDNkMjZhOTRlZmNmMTc3NWI3ZjU2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTMsNiAr
OTEzLDggQEAKIAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJG
QjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMTJCNTU1MUZBMEVBN0EwMEU2
Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtS
VENSZXNvbHZlci5jcHAgKi87IH07CiAJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwICovOyB9OworCQk0MTFBOEREQjIwREREMUFDMDA2MEQzNEYgLyogV0tNb2Nr
TWVkaWFEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMUE4REQ5MjBEREI2MDUwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxMUE4RERDMjBE
REQyM0YwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFBOEREQTIwRERCNjA1MDA2MEQzNEYgLyog
V0tNb2NrTWVkaWFEZXZpY2UuY3BwICovOyB9OwogCQk0MTFCMjI2NDFFMzcxQkE2MDA0RjczNjMg
LyogTGliV2ViUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsu
aCAqLzsgfTsKIAkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1
OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovOyB9OwogCQk0MTMw
NzVBQTFERTg1RjMwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OUExREU4NEZCMDAwMzlF
QzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCAqLzsgfTsKQEAgLTMyOTksNiArMzMwMSw4IEBA
CiAJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZE
M0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTFBOEREOTIwRERCNjA1MDA2MEQzNEYg
LyogV0tNb2NrTWVkaWFEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tNb2NrTWVkaWFEZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExQThE
REEyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLTW9ja01lZGlhRGV2aWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJU
Q05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDTmV0
d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29y
a1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3
b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
U29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTkxREU4NEZC
MDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENTb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1NzIs
NiArNzU3Niw4IEBACiAJCQkJQzk4QzQ4QTgxQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyLmggKi8sCiAJCQkJQzlDRDQzOTkxQjRCMDI0MjAwMjM5RTMzIC8qIFdL
TWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwICovLAogCQkJCUM5Q0Q0MzlBMUI0QjAyNDIwMDIzOUUz
MyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi8sCisJCQkJNDExQThEREEyMEREQjYwNTAw
NjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmNwcCAqLywKKwkJCQk0MTFBOEREOTIwRERCNjA1
MDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuaCAqLywKIAkJCQlDMDlBRTVFODEyNTI1N0My
MDAyNTgyNUQgLyogV0tOYXRpdmVFdmVudC5oICovLAogCQkJCTJEM0E2NUQ4MUE3QzNBMUYwMENB
QzYzNyAvKiBXS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwICovLAogCQkJCTJEM0E2NUQ5MUE3QzNB
MUYwMENBQzYzNyAvKiBXS05hdmlnYXRpb25BY3Rpb25SZWYuaCAqLywKQEAgLTk2NDMsNiArOTY0
OSw3IEBACiAJCQkJQzk4QzQ4QUExQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOUNENDM5RDFCNEIwMjRGMDAyMzlFMzMg
LyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCNDBFRTYx
QkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxMUE4RERCMjBEREQxQUMwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmlj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc1RkUxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0
YWJsZUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwMDEyNEZGMDI3MDA2OEYyMEEg
LyogV0tNdXRhYmxlRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzA5QUU1RTkxMjUy
NTdDMjAwMjU4MjVEIC8qIFdLTmF0aXZlRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTAzNTgs
MTMgKzEwMzY1LDkgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxl
cyA9ICgKIAkJCSk7Ci0JCQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJaW5wdXRQ
YXRocyA9ICgKIAkJCSk7CiAJCQluYW1lID0gIlVubG9jayBrZXljaGFpbiI7Ci0JCQlvdXRwdXRG
aWxlTGlzdFBhdGhzID0gKAotCQkJKTsKIAkJCW91dHB1dFBhdGhzID0gKAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTAzNzYsMTMgKzEwMzc5
LDkgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJ
CSk7Ci0JCQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJaW5wdXRQYXRocyA9ICgK
IAkJCSk7CiAJCQluYW1lID0gIlVubG9jayBrZXljaGFpbiI7Ci0JCQlvdXRwdXRGaWxlTGlzdFBh
dGhzID0gKAotCQkJKTsKIAkJCW91dHB1dFBhdGhzID0gKAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTAzOTQsMTMgKzEwMzkzLDkgQEAKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCSk7Ci0JCQlp
bnB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJaW5wdXRQYXRocyA9ICgKIAkJCSk7CiAJ
CQluYW1lID0gIlJlbW92ZSBzdGFsZSBlbnRpdGxlbWVudCBmaWxlIjsKLQkJCW91dHB1dEZpbGVM
aXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJb3V0cHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xMDQxMiwxMyArMTA0MDcsOSBA
QAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJKTsK
LQkJCWlucHV0RmlsZUxpc3RQYXRocyA9ICgKLQkJCSk7CiAJCQlpbnB1dFBhdGhzID0gKAogCQkJ
KTsKIAkJCW5hbWUgPSAiUmVtb3ZlIHN0YWxlIGVudGl0bGVtZW50IGZpbGUiOwotCQkJb3V0cHV0
RmlsZUxpc3RQYXRocyA9ICgKLQkJCSk7CiAJCQlvdXRwdXRQYXRocyA9ICgKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTEwNDMwLDE0ICsxMDQy
MSwxMCBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAog
CQkJKTsKLQkJCWlucHV0RmlsZUxpc3RQYXRocyA9ICgKLQkJCSk7CiAJCQlpbnB1dFBhdGhzID0g
KAogCQkJCSIkKFRFTVBfRklMRV9ESVIpLyQoRlVMTF9QUk9EVUNUX05BTUUpLnhjZW50IiwKIAkJ
CSk7CiAJCQluYW1lID0gIlByb2Nlc3MgV2ViQ29udGVudCBlbnRpdGxlbWVudHMiOwotCQkJb3V0
cHV0RmlsZUxpc3RQYXRocyA9ICgKLQkJCSk7CiAJCQlvdXRwdXRQYXRocyA9ICgKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTEwNDQ5LDE0ICsx
MDQzNiwxMCBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAogCQkJKTsKLQkJCWlucHV0RmlsZUxpc3RQYXRocyA9ICgKLQkJCSk7CiAJCQlpbnB1dFBhdGhz
ID0gKAogCQkJCSIkKFRFTVBfRklMRV9ESVIpLyQoRlVMTF9QUk9EVUNUX05BTUUpLnhjZW50IiwK
IAkJCSk7CiAJCQluYW1lID0gIlByb2Nlc3MgV2ViQ29udGVudCBlbnRpdGxlbWVudHMiOwotCQkJ
b3V0cHV0RmlsZUxpc3RQYXRocyA9ICgKLQkJCSk7CiAJCQlvdXRwdXRQYXRocyA9ICgKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTExNDY1LDYg
KzExNDQ4LDcgQEAKIAkJCQlDOThDNDhBOTFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzlDRDQzOUUxQjRCMDI1MzAw
MjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFCNDBFRTUxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVycy5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTQxMUE4RERDMjBEREQyM0YwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURl
dmljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzVGRDEyNEZGMDI3MDA2OEYyMEEgLyog
V0tNdXRhYmxlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1RkYxMjRGRjAyNzAw
NjhGMjBBIC8qIFdLTXV0YWJsZURpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1
QjFDNTAxODk4NjA2RjAwNEZDRjlCIC8qIFdLTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDY0OTJiZWJiZmU4NmY1
ZTQyZTFlNTNmNGIxYWI2YjM1ODg3ZDE2MzAuLjlhOWM2YTM0Yzc3ZTU3ZWJhMjU1MjA5YTEyYWU4
YjQyYTA1ZDY3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTEwMSw2ICsxMDEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL01lbW9yeVJlbGVhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQ
b3J0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KQEAgLTE2OTAs
NCArMTY5MSwyNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFNjcmVlblByb3BlcnRpZXMoY29uc3Qg
V2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyYgcHJvcGVydGllcwogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBXZWJQcm9jZXNzOjphZGRNb2NrTWVkaWFEZXZpY2Uo
Y29uc3QgV2ViQ29yZTo6TW9ja01lZGlhRGV2aWNlJiBkZXZpY2UpCit7CisgICAgTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmFkZERldmljZShkZXZpY2UpOworfQorCit2b2lkIFdlYlBy
b2Nlc3M6OmNsZWFyTW9ja01lZGlhRGV2aWNlcygpCit7CisgICAgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnNldERldmljZXMoeyB9KTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpyZW1v
dmVNb2NrTWVkaWFEZXZpY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQpCit7CisgICAgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZShwZXJzaXN0ZW50SWQpOwor
fQorCit2b2lkIFdlYlByb2Nlc3M6OnJlc2V0TW9ja01lZGlhRGV2aWNlcygpCit7CisgICAgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlc2V0RGV2aWNlcygpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
Yjg1MjBhY2QyYmQ4M2M0OTE1NzEzZmQ1NDM0MGVmZWI0NTZkY2VmYi4uODhjYzIxZjlmNTEwOTgw
YjAwNmY1Y2U3ODI2Mjg0MzVhZjZhYzI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC02OSw2ICs2OSw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFVz
ZXJHZXN0dXJlVG9rZW47CiBzdHJ1Y3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyOwogc3RydWN0IE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzOworc3RydWN0IE1vY2tNZWRpYURldmljZTsKIHN0cnVjdCBQ
bHVnaW5JbmZvOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIHN0cnVjdCBTb3VwTmV0d29y
a1Byb3h5U2V0dGluZ3M7CkBAIC0zNTksNiArMzYwLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dG9wUnVuTG9vcCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorICAgIHZvaWQgYWRkTW9ja01lZGlhRGV2aWNlKGNvbnN0IFdlYkNvcmU6Ok1vY2tNZWRpYURl
dmljZSYpOworICAgIHZvaWQgY2xlYXJNb2NrTWVkaWFEZXZpY2VzKCk7CisgICAgdm9pZCByZW1v
dmVNb2NrTWVkaWFEZXZpY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQpOworICAgIHZvaWQg
cmVzZXRNb2NrTWVkaWFEZXZpY2VzKCk7CisjZW5kaWYKKwogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMm
KTsKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDVhYjUyMmJlMzkxMzQ4ODEx
YjZkYWEzN2M3OTNjOWEwYzRmNzk4MjcuLjBkYjhiZDk0M2JlZWQ4MzUzMjkyYzkwY2RjMThlYTZj
MjdjMTUwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0xMzksNCArMTM5LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNldE1lZGlhTUlNRVR5cGVz
KFZlY3RvcjxTdHJpbmc+IHR5cGVzKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorICAgIEFkZE1vY2tNZWRpYURldmljZShzdHJ1Y3QgV2ViQ29yZTo6TW9ja01lZGlhRGV2aWNl
IGRldmljZSk7CisgICAgQ2xlYXJNb2NrTWVkaWFEZXZpY2VzKCk7CisgICAgUmVtb3ZlTW9ja01l
ZGlhRGV2aWNlKFN0cmluZyBwZXJzaXN0ZW50SWQpOworICAgIFJlc2V0TW9ja01lZGlhRGV2aWNl
cygpOworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggYTYwYzM4MWZhZmRhM2JlZTBiMzY3MDcwNWE5ODI4YjY5ZmM3YTJmMS4uOTg3
ZmEzMzdlZDU1ZGQ3NjNlYWM1ZmIzYzNjNWU1ZWRmZWZiM2Q2MyAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE4LTA2
LTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVBJ
IHRvIGNvbnRyb2wgbW9jayBtZWRpYSBkZXZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY5NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBydW5uZXIgQVBJIHRvIGNsZWFyL2FkZC9y
ZW1vdmUvcmVzZXQgbW9jayBtZWRpYSBkZXZpY2VzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAo
V1RSOjpUZXN0UnVubmVyOjphZGRNb2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV1RSOjpUZXN0
UnVubmVyOjphZGRNb2NrQ2FtZXJhRGV2aWNlKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
YWRkTW9ja01pY3JvcGhvbmVEZXZpY2UpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjphZGRN
b2NrU2NyZWVuRGV2aWNlKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y2xlYXJNb2NrTWVk
aWFEZXZpY2VzKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6cmVtb3ZlTW9ja01lZGlhRGV2
aWNlKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6cmVzZXRNb2NrTWVkaWFEZXZpY2VzKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tEZXZpY2UpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6Y2xlYXJNb2NrTWVkaWFEZXZpY2VzKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnJlbW92ZU1vY2tNZWRpYURldmljZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpyZXNldE1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE4LTA2LTE4ICBSb2JpbiBN
b3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dTTF0gU3RhcnRpbmcg
dG8gd3JpdGUgdGhlIHNwZWMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDdlNzY1OWNj
M2JmZmNlMGFhODc2ZGRkYzlmMDJkMDQ5NzZhM2RiOWYuLjE3OTE2NjgxMjdhNjY2MDc3MmNhMTkx
YzA1ODM5ZDZjYzA4ZjM5NjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzM2LDQg
KzMzNiwxMSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBnZXRBcHBsaWNhdGlv
bk1hbmlmZXN0VGhlbihvYmplY3QgY2FsbGJhY2spOwogCiAgICAgdm9pZCBpbnN0YWxsRmFrZUhl
bHZldGljYShET01TdHJpbmcgY29uZmlndXJhdGlvbik7CisKKyAgICB2b2lkIGFkZE1vY2tDYW1l
cmFEZXZpY2UoRE9NU3RyaW5nIHBlcnNpc3RlbnRJZCwgRE9NU3RyaW5nIGxhYmVsKTsKKyAgICB2
b2lkIGFkZE1vY2tNaWNyb3Bob25lRGV2aWNlKERPTVN0cmluZyBwZXJzaXN0ZW50SWQsIERPTVN0
cmluZyBsYWJlbCk7CisgICAgdm9pZCBhZGRNb2NrU2NyZWVuRGV2aWNlKERPTVN0cmluZyBwZXJz
aXN0ZW50SWQsIERPTVN0cmluZyBsYWJlbCk7CisgICAgdm9pZCBjbGVhck1vY2tNZWRpYURldmlj
ZXMoKTsKKyAgICB2b2lkIHJlbW92ZU1vY2tNZWRpYURldmljZShET01TdHJpbmcgcGVyc2lzdGVu
dElkKTsKKyAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOwogfTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4
IDI4MzFhODdiOTcxNTAyNzk4NTM0MDE5NDNkZGM0ZjlmMzJhNjNjYzIuLjk1YWFlZjRjZGEwZjg4
YzI4YTFkZjhlM2VmYTJjNTUxZWE3YjczZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMTk3MSw2ICsxOTcxLDcx
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmll
c0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiBkCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhB
bGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwogfQogCit2b2lk
IFRlc3RSdW5uZXI6OmFkZE1vY2tNZWRpYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQs
IEpTU3RyaW5nUmVmIGxhYmVsLCBjb25zdCBjaGFyKiB0eXBlKQoreworICAgIFZlY3RvcjxXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlw
ZVJlZj4+IHZhbHVlczsKKworICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlBlcnNpc3RlbnRJRCIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQo
dG9XSyhwZXJzaXN0ZW50SWQpKTsKKworICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxhYmVsIikgfSk7CisgICAgdmFsdWVzLmFwcGVuZCh0
b1dLKGxhYmVsKSk7CisKKyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJUeXBlIikgfSk7CisgICAgdmFsdWVzLmFwcGVuZCh7IEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHR5cGUpIH0pOworCisgICAgVmVjdG9yPFdL
U3RyaW5nUmVmPiByYXdLZXlzOworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlczsKKyAg
ICByYXdLZXlzLnJlc2l6ZShrZXlzLnNpemUoKSk7CisgICAgcmF3VmFsdWVzLnJlc2l6ZSh2YWx1
ZXMuc2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsr
aSkgeworICAgICAgICByYXdLZXlzW2ldID0ga2V5c1tpXS5nZXQoKTsKKyAgICAgICAgcmF3VmFs
dWVzW2ldID0gdmFsdWVzW2ldLmdldCgpOworICAgIH0KKworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQWRkTW9ja01lZGlhRGV2aWNlIikpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJl
Zj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgp
LCByYXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOworCisgICAgV0tCdW5kbGVQb3N0
U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwordm9p
ZCBUZXN0UnVubmVyOjphZGRNb2NrQ2FtZXJhRGV2aWNlKEpTU3RyaW5nUmVmIHBlcnNpc3RlbnRJ
ZCwgSlNTdHJpbmdSZWYgbGFiZWwpCit7CisgICAgYWRkTW9ja01lZGlhRGV2aWNlKHBlcnNpc3Rl
bnRJZCwgbGFiZWwsICJjYW1lcmEiKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjphZGRNb2NrTWlj
cm9waG9uZURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVs
KQoreworICAgIGFkZE1vY2tNZWRpYURldmljZShwZXJzaXN0ZW50SWQsIGxhYmVsLCAibWljcm9w
aG9uZSIpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OmFkZE1vY2tTY3JlZW5EZXZpY2UoSlNTdHJp
bmdSZWYgcGVyc2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJlbCkKK3sKKyAgICBhZGRNb2NrTWVk
aWFEZXZpY2UocGVyc2lzdGVudElkLCBsYWJlbCwgInNjcmVlbiIpOworfQorCit2b2lkIFRlc3RS
dW5uZXI6OmNsZWFyTW9ja01lZGlhRGV2aWNlcygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJDbGVhck1vY2tNZWRpYURldmljZXMiKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNN
ZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG51bGxwdHIsIG51bGxwdHIpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZU1v
Y2tNZWRpYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJSZW1vdmVNb2NrTWVkaWFEZXZpY2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tU
eXBlUmVmPiBtZXNzYWdlQm9keSh0b1dLKHBlcnNpc3RlbnRJZCkpOworCisgICAgV0tCdW5kbGVQ
b3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwor
dm9pZCBUZXN0UnVubmVyOjpyZXNldE1vY2tNZWRpYURldmljZXMoKQoreworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiUmVzZXRNb2NrTWVkaWFEZXZpY2VzIikpOworICAgIFdLQnVuZGxlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1l
c3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwogI2lmIFBMQVRGT1JNKE1B
QykKIHZvaWQgVGVzdFJ1bm5lcjo6Y29ubmVjdE1vY2tHYW1lcGFkKHVuc2lnbmVkIGluZGV4KQog
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaAppbmRleCBmMjkwMWJjNjJlNjIxMGY0MDcxZjI4N2E0MzJlZmIxN2ViM2M5ZDY5Li43ODli
YTIzMDIzNjgzMDljYTA5OWExZWZiNzQ1N2UxN2EyNTMyNmYyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDQ2LDYgKzQ0
NiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wQWxsSFRUUFJlZGlyZWN0ZWRSZXNwb25zZUhl
YWRlcnMoKSB7IG1fZHVtcEFsbEhUVFBSZWRpcmVjdGVkUmVzcG9uc2VIZWFkZXJzID0gdHJ1ZTsg
fQogICAgIGJvb2wgc2hvdWxkRHVtcEFsbEhUVFBSZWRpcmVjdGVkUmVzcG9uc2VIZWFkZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9kdW1wQWxsSFRUUFJlZGlyZWN0ZWRSZXNwb25zZUhlYWRlcnM7IH0K
IAorICAgIHZvaWQgYWRkTW9ja0NhbWVyYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQs
IEpTU3RyaW5nUmVmIGxhYmVsKTsKKyAgICB2b2lkIGFkZE1vY2tNaWNyb3Bob25lRGV2aWNlKEpT
U3RyaW5nUmVmIHBlcnNpc3RlbnRJZCwgSlNTdHJpbmdSZWYgbGFiZWwpOworICAgIHZvaWQgYWRk
TW9ja1NjcmVlbkRldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxh
YmVsKTsKKyAgICB2b2lkIGNsZWFyTW9ja01lZGlhRGV2aWNlcygpOworICAgIHZvaWQgcmVtb3Zl
TW9ja01lZGlhRGV2aWNlKEpTU3RyaW5nUmVmIHBlcnNpc3RlbnRJZCk7CisgICAgdm9pZCByZXNl
dE1vY2tNZWRpYURldmljZXMoKTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CiAKQEAg
LTQ1NSw2ICs0NjIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RHVtcFBpeGVscyhib29sKTsK
ICAgICB2b2lkIHNldFdhaXRVbnRpbERvbmUoYm9vbCk7CiAKKyAgICB2b2lkIGFkZE1vY2tNZWRp
YURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsLCBjb25z
dCBjaGFyKiB0eXBlKTsKKwogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBtX3Rlc3RVUkw7IC8v
IFNldCBieSBJbmplY3RlZEJ1bmRsZVBhZ2Ugb25jZSBwcm92aXNpb25hbCBsb2FkIHN0YXJ0cy4K
IAogICAgIGJvb2wgbV9zaG91bGREdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnM7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGJhODUxODk1NDlkZDM3NTA5
ZWIzZTAwZTgzNzM4MTZlMzgwZjNjM2EuLjM3N2NjZmUyYzNlNjA5NmVkYmFhZWZjMmFmYTc2NDhk
MDNkZTc2NDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBA
IC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLRnJhbWVIYW5kbGVSZWYuaD4KICNp
bmNsdWRlIDxXZWJLaXQvV0tGcmFtZUluZm9SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tJY29u
RGF0YWJhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tNb2NrTWVkaWFEZXZpY2UuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQv
V0tOb3RpZmljYXRpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb25NYW5hZ2Vy
Lmg+CkBAIC0yODY2LDYgKzI4NjcsMjYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGlj
c1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogICAgIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKGRhdGFTdG9yZSk7CiB9CiAKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OmFkZE1vY2tNZWRpYURldmljZShXS1N0cmluZ1JlZiBwZXJzaXN0ZW50SUQsIFdLU3Ry
aW5nUmVmIGxhYmVsLCBXS1N0cmluZ1JlZiB0eXBlKQoreworICAgIFdLQWRkTW9ja01lZGlhRGV2
aWNlKHBsYXRmb3JtQ29udGV4dCgpLCBwZXJzaXN0ZW50SUQsIGxhYmVsLCB0eXBlKTsKK30KKwor
dm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJNb2NrTWVkaWFEZXZpY2VzKCkKK3sKKyAgICBXS0Ns
ZWFyTW9ja01lZGlhRGV2aWNlcyhwbGF0Zm9ybUNvbnRleHQoKSk7Cit9CisKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OnJlbW92ZU1vY2tNZWRpYURldmljZShXS1N0cmluZ1JlZiBwZXJzaXN0ZW50SUQp
Cit7CisgICAgV0tSZW1vdmVNb2NrTWVkaWFEZXZpY2UocGxhdGZvcm1Db250ZXh0KCksIHBlcnNp
c3RlbnRJRCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0TW9ja01lZGlhRGV2aWNl
cygpCit7CisgICAgV0tSZXNldE1vY2tNZWRpYURldmljZXMocGxhdGZvcm1Db250ZXh0KCkpOwor
fQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1B
ZGRUZXN0T3B0aW9ucyhUZXN0T3B0aW9ucyYpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKaW5kZXggZjMzNzgzNDQzZWY2MmFiMGNkZGY4ODk4YWFlMDc2N2Fk
ZGUxY2IyMS4uYTQ4MTAzZmFkN2E1Mzg2MDVmOTkxNzJlZGEyY2QxMDU5YzE3NDQ4ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjEzLDYgKzIxMywxMSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5h
dmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTmF2aWdhdGlvbjsgfQogICAgIHZvaWQgY2xlYXJEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oKSB7IG1fZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gZmFsc2U7IH0KIAorICAgIHZvaWQgYWRkTW9j
a01lZGlhRGV2aWNlKFdLU3RyaW5nUmVmIHBlcnNpc3RlbnRJRCwgV0tTdHJpbmdSZWYgbGFiZWws
IFdLU3RyaW5nUmVmIHR5cGUpOworICAgIHZvaWQgY2xlYXJNb2NrTWVkaWFEZXZpY2VzKCk7Cisg
ICAgdm9pZCByZW1vdmVNb2NrTWVkaWFEZXZpY2UoV0tTdHJpbmdSZWYgcGVyc2lzdGVudElEKTsK
KyAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOworCiBwcml2YXRlOgogICAgIFdLUmV0
YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24o
V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZik7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0Q29u
ZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA1MjQ3NWRmZTQ3OWIw
NjMyMTY0MmNhYWQzZTkwM2QwM2E3Njk1ZTliLi4wNWMzY2U2MWE4YmVmM2U4OTU2OWZjNTZiYzNj
OTdiMmQ3ODg4NzYwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtOTE2LDYgKzkxNiwzOSBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIkFkZE1vY2tNZWRpYURldmljZSIpKSB7CisgICAgICAgIEFTU0VS
VChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwor
CisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNf
Y2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHBlcnNpc3RlbnRJREtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiUGVyc2lzdGVudElEIikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbGFiZWxLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxh
YmVsIikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdHlwZUtleShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVHlwZSIpKTsKKworICAgICAgICBhdXRv
IHBlcnNpc3RlbnRJRCA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgcGVyc2lzdGVudElES2V5LmdldCgpKSk7
CisgICAgICAgIGF1dG8gbGFiZWwgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9u
YXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGxhYmVsS2V5LmdldCgpKSk7
CisgICAgICAgIGF1dG8gdHlwZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdHlwZUtleS5nZXQoKSkpOwor
CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5hZGRNb2NrTWVkaWFEZXZpY2Uo
cGVyc2lzdGVudElELCBsYWJlbCwgdHlwZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
Q2xlYXJNb2NrTWVkaWFEZXZpY2VzIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLmNsZWFyTW9ja01lZGlhRGV2aWNlcygpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIlJlbW92ZU1vY2tNZWRpYURldmljZSIpKSB7CisgICAgICAgIFdLU3RyaW5nUmVmIHBlcnNp
c3RlbnRJZCA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihtZXNzYWdlQm9keSk7CisKKyAgICAg
ICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJlbW92ZU1vY2tNZWRpYURldmljZShwZXJz
aXN0ZW50SWQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJlc2V0TW9ja01lZGlhRGV2
aWNlcyIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5yZXNldE1vY2tN
ZWRpYURldmljZXMoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiQ29ubmVjdE1vY2tHYW1lcGFkIikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlE
KG1lc3NhZ2VCb2R5KSA9PSBXS1VJbnQ2NEdldFR5cGVJRCgpKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNjNmOWUzY2Zj
NzIyMGM4Y2M3MWE1YTBmMmQxMjc1ZmU0MGQwNzc2Li5iODA4YTRmZmQ2OGZiNjE5ZDU5NjgyNjE3
ZmRlNjUwYjQwMzVjZjhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDYtMjIgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBUEkgdG8gY29udHJv
bCBtb2NrIG1lZGlhIGRldmljZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4Njk1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFu
Z2UtZXZlbnQtMi5odG1sOiBBZGRlZC4KKwogMjAxOC0wNi0xOSAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTmV0d29yayBQcmVmbGlnaHRzIGRvIG5vdCBzaG93
IGluIFdlYkluc3BlY3RvciBhZnRlciBtb3ZpbmcgQ09SUyBjaGVja3MgdG8gTmV0d29ya1Byb2Nl
c3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5n
ZS1ldmVudC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2
aWNlLWNoYW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGM2YjYxMDc2ZmFh
YTNkZTRmODE2OGY3OTY5Y2YxMGY2MDdhNjlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorCitQQVNTICdkZXZpY2VjaGFuZ2UnIGV2ZW50IGZpcmVkIHdoZW4gZGV2
aWNlIGxpc3QgY2hhbmdlcyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRkMzJiNmRmMmU5
Yzg2OGIxZmRlYTU2YjI2OTlhYmRjOWZhOWMyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwKQEAgLTAsMCAr
MSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+VGVzdGluZyBsb2NhbCBhdWRpbyBjYXB0dXJlIHBsYXli
YWNrIGNhdXNlcyAicGxheWluZyIgZXZlbnQgdG8gZmlyZTwvdGl0bGU+CisgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD4KKyAgICBsZXQgZGV2aWNlSWRzID0gW107CisgICAgcHJvbWlzZV90ZXN0KGFz
eW5jICh0ZXN0KSA9PiB7CisgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoInRlc3QgcmVxdWlyZXMgaW50ZXJuYWwgQVBJIik7
CisKKyAgICAgICAgdGVzdC5hZGRfY2xlYW51cCgoKSA9PiB0ZXN0UnVubmVyLnJlc2V0TW9ja01l
ZGlhRGV2aWNlcyk7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9u
KHRydWUpOworCisgICAgICAgIGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1l
ZGlhKHsgYXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZSB9KTsKKworICAgICAgICBsZXQgZGV2aWNlcyA9
IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpOworCisgICAg
ICAgIGFzc2VydF90cnVlKCEhZGV2aWNlcy5sZW5ndGgsICJjaGVjayB0aGVyZSBhcmUgc29tZSBk
ZXZpY2VzIik7CisKKyAgICAgICAgdGVzdFJ1bm5lci5jbGVhck1vY2tNZWRpYURldmljZXMoKTsK
KworICAgICAgICBkZXZpY2VzID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJh
dGVEZXZpY2VzKCk7CisgICAgICAgIGFzc2VydF9mYWxzZSghIWRldmljZXMubGVuZ3RoLCAiY2hl
Y2sgdGhlcmUgYXJlIG5vIG1vcmUgZGV2aWNlcyIpOworCisgICAgICAgIGF3YWl0IG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURl
dmljZXMub25kZXZpY2VjaGFuZ2UgPSByZXNvbHZlOworICAgICAgICAgICAgdGVzdFJ1bm5lci5h
ZGRNb2NrQ2FtZXJhRGV2aWNlKCJpZDEiLCAibXkgY2FtZXJhIik7CisgICAgICAgICAgICBzZXRU
aW1lb3V0KCgpID0+IHJlamVjdCgid2FpdCAxIiksIDUwMDApOworICAgICAgICB9KTsKKyAgICAg
ICAgZGV2aWNlcyA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNl
cygpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRldmljZXNbMF0ua2luZCwgInZpZGVvaW5wdXQi
KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXZpY2VzWzBdLmxhYmVsLCAibXkgY2FtZXJhIik7
CisKKyAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAg
ICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5nZSA9IHJlc29sdmU7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZE1vY2tNaWNyb3Bob25lRGV2aWNlKCJpZDIiLCAi
bXkgbWljIik7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgid2FpdCAxIiks
IDUwMDApOworICAgICAgICB9KTsKKyAgICAgICAgZGV2aWNlcyA9IGF3YWl0IG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRl
dmljZXNbMF0ua2luZCwgImF1ZGlvaW5wdXQiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXZp
Y2VzWzBdLmxhYmVsLCAibXkgbWljIik7CisKKyAgICB9LCAiJ2RldmljZWNoYW5nZScgZXZlbnQg
ZmlyZWQgd2hlbiBkZXZpY2UgbGlzdCBjaGFuZ2VzIik7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343441</attachid>
            <date>2018-06-23 10:23:22 -0700</date>
            <delta_ts>2018-06-25 10:17:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186958-20180623102321.patch</filename>
            <type>text/plain</type>
            <size>77581</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Y0NWQ5Y2UwYTNjYzlm
ZGRjMzE4ZjRmYTliNmE5ZDU5NDE0ZjA5ZS4uMTE3ZjZhNjQ3M2M4OTQwMGIzZjQ0YjBjN2FlYjkz
ZTYzYTMxODU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE4LTA2LTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGNvbnRy
b2wgbW9jayBtZWRpYSBkZXZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODY5NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZWZhY3RvciBjb2RlIHRvIGludHJvZHVjZSBhIE1vY2tEZXZpY2Ugc3Ry
dWN0dXJlIHRoYXQgY2FuIGJlIHVzZWQgaW4gbXVsdGlwbGUgcHJvY2Vzc2VzLgorICAgICAgICBV
cGRhdGUgbW9jayBzb3VyY2VzIGFuZCBjZW50ZXIgdG8gdXNlIE1vY2tEZXZpY2UuCisgICAgICAg
IEFkZCBBUEkgdG8gdXBkYXRlIG1vY2sgbWVkaWEgZGV2aWNlcy4KKworICAgICAgICBUZXN0OiBm
YXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYURldmljZXM6Ok1lZGlhRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmlj
ZXM6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpzY2hlZHVsZWRFdmVu
dFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpoYXNQZW5kaW5n
QWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjphY3RpdmVE
T01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6Y2Fu
U3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5pZGw6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNaWNyb3Bob25lUHJvcGVydGllczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNaWNyb3Bob25lUHJvcGVydGllczo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDYW1lcmFQcm9wZXJ0aWVzOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NhbWVyYVByb3BlcnRpZXM6OmRlY29kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrRGlzcGxheVByb3BlcnRpZXM6OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrRGlzcGxheVByb3BlcnRpZXM6OmRlY29kZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2U6OmlzTWljcm9waG9uZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2U6OmlzQ2FtZXJhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tNZWRpYURldmljZTo6aXNEaXNwbGF5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tNZWRpYURldmljZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
TWVkaWFEZXZpY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFE
ZXZpY2U6OmRlY29kZU1vY2tNZWRpYURldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVk
aWFEZXZpY2U6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHREZXZpY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OmRldmljZUxpc3RGb3JEZXZpY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNyZWF0ZUNhcHR1cmVEZXZpY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlc2V0RGV2aWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RGV2aWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkRGV2aWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVEZXZpY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVEZXZpY2VX
aXRoUGVyc2lzdGVudElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjphdWRpb0RldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OnZpZGVvRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZTo6ZGlzcGxheURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2U6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjppbml0aWFsaXplU2V0dGluZ3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0
ZWRDb25zdHJhaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmRl
dmljZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpzZXRNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldERldmlj
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmFk
ZERldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6cmVtb3ZlRGV2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5lcmF0ZUZyYW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6bW9ja0NhbWVyYSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6bW9ja1NjcmVlbiBjb25zdCk6CisKIDIwMTgt
MDYtMjMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBS
ZWxhdGl2ZWx5IHBvc2l0aW9uZWQgcmVuZGVyZXIgbmVlZHMgb2Zmc2V0dGluZyBmb3IgdmFsaWRh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3ZTk1ZDZiZDI1NWFmNmMzY2JkOWU0YmEwOGZiMjJmOGQ2YWIzNjNk
Li44ZjhjZDNkZTk3YjQ4YmFkNTA5MmNhZThjZjQ5YjlhMmFhNzk5MmI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM2IEBACisyMDE4LTA2LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgQVBJIHRvIGNvbnRyb2wgbW9jayBtZWRpYSBkZXZpY2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY5NTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRvIGNs
ZWFyLCBzZXQsIHJlbW92ZSBhbmQgcmVzZXQgbW9jayBtZWRpYSBkZXZpY2VzLgorICAgICAgICBU
aGUgbW9jayBtZWRpYSBjZW50ZXIgb2YgVUlQcm9jZXNzIGFuZCBhbGwgV2ViUHJvY2Vzc2VzIGFy
ZSB1cGRhdGVkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmNwcDogQWRkZWQuCisgICAgICAgICh0eXBlRnJv
bVN0cmluZyk6CisgICAgICAgIChXS0FkZE1vY2tNZWRpYURldmljZSk6CisgICAgICAgIChXS0Ns
ZWFyTW9ja01lZGlhRGV2aWNlcyk6CisgICAgICAgIChXS1JlbW92ZU1vY2tNZWRpYURldmljZSk6
CisgICAgICAgIChXS1Jlc2V0TW9ja01lZGlhRGV2aWNlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphZGRN
b2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y2xlYXJN
b2NrTWVkaWFEZXZpY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92
ZU1vY2tNZWRpYURldmljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXNl
dE1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmFkZE1vY2tNZWRpYURldmljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNsZWFy
TW9ja01lZGlhRGV2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlbW92ZU1v
Y2tNZWRpYURldmljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0TW9ja01l
ZGlhRGV2aWNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE4LTA2LTIzICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtXVEZdIEFkZCB1
c2VyLWRlZmluZWQgbGl0ZXJhbCBmb3IgQVNDSUlMaXRlcmFsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5kZXggYWYzYmYxMzIy
OTQ5N2MwOTk1NTQ2MjZjYTIzODllY2I2YWNhMWE4NS4uYmU5MDUxYzkzOTk0ZDViYmMxMGEwZDhh
YTY5NDE5YjE3MTRhZWVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtNDcsOCArNDcsOSBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBpbmxpbmUgTWVkaWFEZXZpY2VzOjpNZWRpYURldmljZXMoRG9jdW1lbnQmIGRv
Y3VtZW50KQotICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmRvY3VtZW50KQorICAg
IDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKICAgICAsIG1fc2NoZWR1bGVkRXZlbnRUaW1l
cigqdGhpcywgJk1lZGlhRGV2aWNlczo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKQorICAgICwg
bV9ldmVudE5hbWVzKGV2ZW50TmFtZXMoKSkKIHsKICAgICBtX2RldmljZUNoYW5nZWRUb2tlbiA9
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmFkZERldmljZXNDaGFuZ2Vk
T2JzZXJ2ZXIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSgpIHsKIApAQCAt
NjEsMTYgKzYyLDIwIEBAIGlubGluZSBNZWRpYURldmljZXM6Ok1lZGlhRGV2aWNlcyhEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgICAgICAgICBtX3NjaGVkdWxlZEV2ZW50VGltZXIuc3RhcnRPbmVT
aG90KFNlY29uZHMocmFuZG9tTnVtYmVyKCkgLyAyKSk7CiAgICAgfSk7CiAKKyAgICBzdXNwZW5k
SWZOZWVkZWQoKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRp
YURldmljZXM6OkRpc3BsYXlDYXB0dXJlU3VyZmFjZVR5cGU6Ok1vbml0b3IpID09IHN0YXRpY19j
YXN0PHNpemVfdD4oUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5
cGU6Ok1vbml0b3IpLCAiTWVkaWFEZXZpY2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VUeXBlOjpN
b25pdG9yIGlzIG5vdCBlcXVhbCB0byBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3Bs
YXlTdXJmYWNlVHlwZTo6TW9uaXRvciBhcyBleHBlY3RlZCIpOwogICAgIHN0YXRpY19hc3NlcnQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYURldmljZXM6OkRpc3BsYXlDYXB0dXJlU3VyZmFjZVR5
cGU6OldpbmRvdykgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6V2luZG93KSwgIk1lZGlhRGV2aWNlczo6RGlzcGxh
eUNhcHR1cmVTdXJmYWNlVHlwZTo6V2luZG93IGlzIG5vdCBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6V2luZG93IGFzIGV4cGVjdGVkIik7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhRGV2aWNlczo6RGlzcGxheUNhcHR1
cmVTdXJmYWNlVHlwZTo6QXBwbGljYXRpb24pID09IHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6OkFwcGxpY2F0aW9uKSwg
Ik1lZGlhRGV2aWNlczo6RGlzcGxheUNhcHR1cmVTdXJmYWNlVHlwZTo6QXBwbGljYXRpb24gaXMg
bm90IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpBcHBs
aWNhdGlvbiBhcyBleHBlY3RlZCIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihNZWRpYURldmljZXM6OkRpc3BsYXlDYXB0dXJlU3VyZmFjZVR5cGU6OkJyb3dzZXIpID09
IHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5
U3VyZmFjZVR5cGU6OkJyb3dzZXIpLCAiTWVkaWFEZXZpY2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZh
Y2VUeXBlOjpCcm93c2VyIGlzIG5vdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3Bs
YXlTdXJmYWNlVHlwZTo6QnJvd3NlciBhcyBleHBlY3RlZCIpOwogfQogCi1NZWRpYURldmljZXM6
On5NZWRpYURldmljZXMoKQorTWVkaWFEZXZpY2VzOjp+TWVkaWFEZXZpY2VzKCkgPSBkZWZhdWx0
OworCit2b2lkIE1lZGlhRGV2aWNlczo6c3RvcCgpCiB7CiAgICAgaWYgKG1fZGV2aWNlQ2hhbmdl
ZFRva2VuKQotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5y
ZW1vdmVEZXZpY2VzQ2hhbmdlZE9ic2VydmVyKG1fZGV2aWNlQ2hhbmdlZFRva2VuLnZhbHVlKCkp
OworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5yZW1vdmVE
ZXZpY2VzQ2hhbmdlZE9ic2VydmVyKG1fZGV2aWNlQ2hhbmdlZFRva2VuKTsKIH0KIAogUmVmPE1l
ZGlhRGV2aWNlcz4gTWVkaWFEZXZpY2VzOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAt
MTU3LDcgKzE2MiwyMyBAQCBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMgTWVkaWFEZXZp
Y2VzOjpnZXRTdXBwb3J0ZWRDb25zdHJhaW50cygpCiAKIHZvaWQgTWVkaWFEZXZpY2VzOjpzY2hl
ZHVsZWRFdmVudFRpbWVyRmlyZWQoKQogewotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZGV2aWNlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIGlm
IChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZGV2aWNlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwor
fQorCitib29sIE1lZGlhRGV2aWNlczo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpICYmIGhhc0V2ZW50TGlzdGVuZXJzKG1f
ZXZlbnROYW1lcy5kZXZpY2VjaGFuZ2VFdmVudCk7Cit9CisKK2NvbnN0IGNoYXIqIE1lZGlhRGV2
aWNlczo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJNZWRpYURl
dmljZXMiOworfQorCitib29sIE1lZGlhRGV2aWNlczo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3Vz
cGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5oCmluZGV4IGFlMzVkNWU5NGQwYmE3NjkxMDE1NGU4ZGMxMGVlM2RhOGZmODYwNGUu
LjAyZDFhZWY5ZDZmMzE3ODY3YTk3ZjE5NWJlOTA2MTQ4NTk1NDljZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaApAQCAtMzMsNiAr
MzMsOCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVm
ZXJyZWQuaCIKQEAgLTQ5LDcgKzUxLDcgQEAgY2xhc3MgTWVkaWFTdHJlYW07CiAKIHN0cnVjdCBN
ZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHM7CiAKLWNsYXNzIE1lZGlhRGV2aWNlcyA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lZGlhRGV2aWNlcz4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxNZWRpYURldmljZXM+IHsKK2NsYXNzIE1lZGlhRGV2aWNlcyA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhRGV2aWNlcz4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFEZXZpY2Vz
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYURldmljZXM+IGNyZWF0ZShEb2N1bWVu
dCYpOwogCkBAIC04NCwxNCArODYsMjMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2NoZWR1bGVk
RXZlbnRUaW1lckZpcmVkKCk7CiAKKyAgICBmcmllbmQgY2xhc3MgSlNNZWRpYURldmljZXNPd25l
cjsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1
c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOworCiAgICAgLy8gRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YS4KLSAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVy
ZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhRGV2aWNlc0V2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
IH0KLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZv
aWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAgIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
TWVkaWFEZXZpY2VzRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAogICAgIFRpbWVyIG1fc2NoZWR1bGVkRXZlbnRUaW1l
cjsKLSAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OkRldmljZXND
aGFuZ2VkT2JzZXJ2ZXJUb2tlbj4gbV9kZXZpY2VDaGFuZ2VkVG9rZW47CisgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6RGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuIG1fZGV2aWNlQ2hh
bmdlZFRva2VuOworICAgIGNvbnN0IEV2ZW50TmFtZXMmIG1fZXZlbnROYW1lczsgLy8gTmVlZCB0
byBjYWNoZSB0aGlzIHNvIHdlIGNhbiB1c2UgaXQgZnJvbSBHQyB0aHJlYWRzLgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMuaWRsCmluZGV4IDMxYTA0ZGUxZDQ4NDdlNWU3ODJjNGM0Mzkz
MDcxYzEzMzA5YzJjZDQuLmQ3YmEzZWQyNDFmMjIzYzI3NGJlOGJiMzdiMzQ2ZmZlY2YzNDQzZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlcy5pZGwKQEAgLTMwLDYgKzMwLDcgQEAKIAogLy8gRklYTUUgMTY5ODcxOiBzaG91bGQgYmUg
c3ViY2xhc3Mgb2YgRXZlbnRUYXJnZXQKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNLAogICAgIE5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZh
Y2UgTWVkaWFEZXZpY2VzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBlYTY4MjdkNzQ5MzA2YWUyNGQzYzJlMTk1MjMwMTFlN2M3
ZjQ5MjIxLi5jMzg1N2Q1ZWZjODIyODJhZDIzZmNiNTc2NTM0NWZhZTllYTUzMTkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MDY0LDYgKzEwNjQsNyBAQAogCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4
RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi87IH07CiAJCTQxMzhGODU4
MUQyNTNGMEUwMDFDQjYxRSAvKiBKU0RPTUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4Rjg1NjFEMjUzRUVFMDAxQ0I2MUUgLyogSlNE
T01JdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxM0MyQzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNDMkMzMzFCQzI5
QTdCMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5oICovOyB9OworCQk0MTNDQ0Q0QTIwREUw
MzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNDQ0Q0ODIwREUwMTNDMDA2NUEyMUEgLyogTW9ja01l
ZGlhRGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDEzRTAwNzkxREIwRTRGMjAwMjM0MUQyIC8qIE1lbW9yeVJlbGVhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0UwMDc4MURCMEU0REUw
MDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8qIFN0cnVjdHVy
ZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE0QjgyMDMxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oICovOyB9OwogCQk0
MTRERURFNzFGOUZFOTFFMDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0REVERTUxRjlGRTkx
NTAwNDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzIwMSw2ICs3MjAyLDcgQEAKIAkJNDEz
OEY4NTUxRDI1M0VFRTAwMUNCNjFFIC8qIEpTRE9NSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01JdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMzhGODU2MUQyNTNFRUUwMDFDQjYxRSAvKiBKU0RPTUl0ZXJhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQzJDMzMxQkMyOUE3QjAwNzUyMDRDIC8qIEpT
RE9NQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01D
b25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTNDQ0Q0ODIwREUw
MTNDMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vY2tNZWRpYURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTNFMDA3NzFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1vcnlSZWxlYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTAwNzgxREIwRTRERTAwMjM0MUQyIC8qIE1lbW9yeVJl
bGVhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5UmVsZWFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFMDA3QjFEQjBFNzA3MDAyMzQxRDIg
LyogTWVtb3J5UmVsZWFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTWVtb3J5UmVsZWFzZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTg3NzEsNiArMTg3NzMsNyBAQAogCQkJCTA3N0I2NDE1MUI5NUY3MDMwMDNFOUFENSAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oICovLAogCQkJCTA3N0I2NDEwMUI5NEYxMkUwMDNF
OUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAgKi8sCiAJCQkJMDc3QjY0
MTExQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggKi8s
CisJCQkJNDEzQ0NENDgyMERFMDEzQzAwNjVBMjFBIC8qIE1vY2tNZWRpYURldmljZS5oICovLAog
CQkJCTA3RDZBNEYxMUJFRDVGODgwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5j
cHAgKi8sCiAJCQkJMDdENkE0RjIxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmggKi8sCiAJCQkJMDdENkE0RUQxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcCAqLywKQEAgLTI5NDE3LDYgKzI5NDIwLDcgQEAKIAkJCQlDREY0Qjcy
MDFFMDNCRjZGMDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuaWRsIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEwNThBRTAxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTA1OEFFMjFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDEzQ0NENEEyMERFMDM0RjAwNjVBMjFBIC8qIE1vY2tNZWRp
YURldmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTMxODIwNTQwNjAwRjJCNDI0IC8q
IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAx
NTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDdENkE0RjQxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAppbmRleCAw
YzcyNWY5ODA5ZDZiZTk3MzkzY2NiMzNkZmY3ZDgxOTE2NTk4ZjlkLi42MWZmMGVhYWU1NjQ5MDQ3
MjNjNGNiNzAwMmY1NWI0ZmU0OGQyOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
CkBAIC04OCwxMyArODgsMTQgQEAgcHVibGljOgogICAgIHVzaW5nIERldmljZXNDaGFuZ2VkT2Jz
ZXJ2ZXJUb2tlbiA9IHVuc2lnbmVkOwogICAgIERldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbiBh
ZGREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICB2
b2lkIHJlbW92ZURldmljZXNDaGFuZ2VkT2JzZXJ2ZXIoRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRv
a2VuKTsKLSAgICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBzZXRW
aWRlb0NhcHR1cmVQYWdlU3RhdGUoYm9vbCwgYm9vbCk7CiAKIHByb3RlY3RlZDoKICAgICBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyKCk7CiAKKyAgICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hhbmdl
ZCgpOworCiAgICAgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIHBsYXRmb3JtQ2Vu
dGVyKCk7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3Vw
cG9ydGVkQ29uc3RyYWludHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja01lZGlhRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tNZWRpYURldmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4MmRiYWYxMGU3ZDZhZGEwNjY1NmNlMTg3MWNk
MjBlYTViODRlNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tNZWRpYURldmljZS5oCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTW9ja01pY3JvcGhvbmVQ
cm9wZXJ0aWVzIHsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PGludDMyX3Q+KGRlZmF1bHRTYW1wbGVSYXRlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrTWljcm9waG9u
ZVByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxpbnQzMl90PiBkZWZhdWx0U2FtcGxlUmF0ZTsKKyAgICAgICAgZGVjb2RlciA+
PiBkZWZhdWx0U2FtcGxlUmF0ZTsKKyAgICAgICAgaWYgKCFkZWZhdWx0U2FtcGxlUmF0ZSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBNb2NrTWljcm9w
aG9uZVByb3BlcnRpZXMgeyAqZGVmYXVsdFNhbXBsZVJhdGUgfTsKKyAgICB9CisKKyAgICBpbnQg
ZGVmYXVsdFNhbXBsZVJhdGUgeyA0NDEwMCB9OworfTsKKworLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBvdGhlciBwcm9wZXJ0aWVzIGFuZCBzZXJpYWxpemF0aW9uIG9mIGNvbG9ycy4KK3N0cnVj
dCBNb2NrQ2FtZXJhUHJvcGVydGllcyB7CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAg
ICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5j
b2RlciA8PCBkZWZhdWx0RnJhbWVSYXRlOworICAgICAgICBlbmNvZGVyIDw8IGZhY2luZ01vZGVD
YXBhYmlsaXR5OworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPE1vY2tDYW1lcmFQcm9wZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkZWZhdWx0RnJh
bWVSYXRlOworICAgICAgICBkZWNvZGVyID4+IGRlZmF1bHRGcmFtZVJhdGU7CisgICAgICAgIGlm
ICghZGVmYXVsdEZyYW1lUmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVv
RmFjaW5nTW9kZT4gZmFjaW5nTW9kZUNhcGFiaWxpdHk7CisgICAgICAgIGRlY29kZXIgPj4gZmFj
aW5nTW9kZUNhcGFiaWxpdHk7CisgICAgICAgIGlmICghZmFjaW5nTW9kZUNhcGFiaWxpdHkpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiBNb2NrQ2Ft
ZXJhUHJvcGVydGllcyB7ICpkZWZhdWx0RnJhbWVSYXRlLCAqZmFjaW5nTW9kZUNhcGFiaWxpdHks
IENvbG9yOjpibGFjayB9OworICAgIH0KKworICAgIGRvdWJsZSBkZWZhdWx0RnJhbWVSYXRlIHsg
MzAgfTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBm
YWNpbmdNb2RlQ2FwYWJpbGl0eSB7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9G
YWNpbmdNb2RlOjpVc2VyIH07CisgICAgQ29sb3IgZmlsbENvbG9yIHsgQ29sb3I6OmJsYWNrIH07
Cit9OworCitzdHJ1Y3QgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAg
eworICAgICAgICBlbmNvZGVyIDw8IGRlZmF1bHRGcmFtZVJhdGU7CisgICAgfQorCisgICAgdGVt
cGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0Rpc3Bs
YXlQcm9wZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBkZWZhdWx0RnJhbWVSYXRlOworICAgICAgICBkZWNvZGVyID4+
IGRlZmF1bHRGcmFtZVJhdGU7CisgICAgICAgIGlmICghZGVmYXVsdEZyYW1lUmF0ZSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIE1vY2tEaXNwbGF5
UHJvcGVydGllcyB7ICpkZWZhdWx0RnJhbWVSYXRlLCBDb2xvcjo6bGlnaHRHcmF5IH07CisgICAg
fQorCisgICAgZG91YmxlIGRlZmF1bHRGcmFtZVJhdGUgeyAzMCB9OworICAgIENvbG9yIGZpbGxD
b2xvciB7IENvbG9yOjpsaWdodEdyYXkgfTsKK307CisKK3N0cnVjdCBNb2NrTWVkaWFEZXZpY2Ug
eworICAgIGJvb2wgaXNNaWNyb3Bob25lKCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxNb2NrTWljcm9waG9uZVByb3BlcnRpZXM+KHByb3BlcnRpZXMpOyB9CisgICAgYm9v
bCBpc0NhbWVyYSgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TW9ja0Nh
bWVyYVByb3BlcnRpZXM+KHByb3BlcnRpZXMpOyB9CisgICAgYm9vbCBpc0Rpc3BsYXkoKSBjb25z
dCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1vY2tEaXNwbGF5UHJvcGVydGllcz4o
cHJvcGVydGllcyk7IH0KKworICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSgpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoaXNNaWNyb3Bob25lKCkpCisgICAgICAgICAgICByZXR1
cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZTsKKyAgICAgICAgaWYgKGlz
Q2FtZXJhKCkpCisgICAgICAgICAgICByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
Q2FtZXJhOworICAgICAgICBBU1NFUlQoaXNEaXNwbGF5KCkpOworICAgICAgICByZXR1cm4gQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudElkOworICAgICAgICBlbmNvZGVyIDw8
IGxhYmVsOworICAgICAgICBzd2l0Y2hPbihwcm9wZXJ0aWVzLCBbJl0oY29uc3QgTW9ja01pY3Jv
cGhvbmVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8ICh1
aW50OF90KTE7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHByb3BlcnRpZXM7CisgICAgICAgIH0s
IFsmXShjb25zdCBNb2NrQ2FtZXJhUHJvcGVydGllcyYgcHJvcGVydGllcykgeworICAgICAgICAg
ICAgZW5jb2RlciA8PCAodWludDhfdCkyOworICAgICAgICAgICAgZW5jb2RlciA8PCBwcm9wZXJ0
aWVzOworICAgICAgICB9LCBbJl0oY29uc3QgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzJiBwcm9wZXJ0
aWVzKSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8ICh1aW50OF90KTM7CisgICAgICAgICAgICBl
bmNvZGVyIDw8IHByb3BlcnRpZXM7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBQcm9wZXJ0aWVzLCB0eXBlbmFtZSBEZWNvZGVyPgorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPE1vY2tNZWRpYURldmljZT4gZGVjb2RlTW9ja01lZGlhRGV2aWNlKERlY29kZXIm
IGRlY29kZXIsIFN0cmluZyYmIHBlcnNpc3RlbnRJZCwgU3RyaW5nJiYgbGFiZWwpCisgICAgewor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+IHByb3BlcnRpZXM7CisgICAgICAgIGRl
Y29kZXIgPj4gcHJvcGVydGllczsKKyAgICAgICAgaWYgKCFwcm9wZXJ0aWVzKQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIE1vY2tNZWRpYURldmljZSB7
IFdURk1vdmUocGVyc2lzdGVudElkKSwgV1RGTW92ZShsYWJlbCksIFdURk1vdmUoKnByb3BlcnRp
ZXMpIH07CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TW9ja01lZGlhRGV2aWNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
KyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwZXJzaXN0ZW50SWQ7CisgICAg
ICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudElkOworICAgICAgICBpZiAoIXBlcnNpc3RlbnRJZCkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGxhYmVsOworICAgICAgICBkZWNvZGVyID4+IGxhYmVsOworICAgICAgICBpZiAo
IWxhYmVsKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ4X3Q+IGluZGV4OworICAgICAgICBkZWNvZGVyID4+IGluZGV4OworICAg
ICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
ICAgICBzd2l0Y2ggKCppbmRleCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXR1
cm4gZGVjb2RlTW9ja01lZGlhRGV2aWNlPE1vY2tNaWNyb3Bob25lUHJvcGVydGllcz4oZGVjb2Rl
ciwgV1RGTW92ZSgqcGVyc2lzdGVudElkKSwgV1RGTW92ZSgqbGFiZWwpKTsKKyAgICAgICAgY2Fz
ZSAyOgorICAgICAgICAgICAgcmV0dXJuIGRlY29kZU1vY2tNZWRpYURldmljZTxNb2NrQ2FtZXJh
UHJvcGVydGllcz4oZGVjb2RlciwgV1RGTW92ZSgqcGVyc2lzdGVudElkKSwgV1RGTW92ZSgqbGFi
ZWwpKTsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgcmV0dXJuIGRlY29kZU1vY2tNZWRp
YURldmljZTxNb2NrRGlzcGxheVByb3BlcnRpZXM+KGRlY29kZXIsIFdURk1vdmUoKnBlcnNpc3Rl
bnRJZCksIFdURk1vdmUoKmxhYmVsKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICB9CisKKyAgICBTdHJpbmcgcGVyc2lzdGVudElkOworICAgIFN0cmluZyBs
YWJlbDsKKyAgICBWYXJpYW50PE1vY2tNaWNyb3Bob25lUHJvcGVydGllcywgTW9ja0NhbWVyYVBy
b3BlcnRpZXMsIE1vY2tEaXNwbGF5UHJvcGVydGllcz4gcHJvcGVydGllczsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuY3BwCmluZGV4IDljNjAyNGU1M2E4YTAwZWRmZTM4MWMzMTE4ZWFjOTJlNTgxMzNkN2Mu
LjAwMmNhZjMxMjM2ZWNiNjQ2YmY4MjQ0MTE4MmNiMTUwODc0NmMwMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2Uu
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3Rh
cnRQcm9kdWNpbmdEYXRhKCkKICNlbmRpZgogCiAgICAgaWYgKCFzYW1wbGVSYXRlKCkpCi0gICAg
ICAgIHNldFNhbXBsZVJhdGUoZGV2aWNlKCkgPT0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Ok1v
Y2tEZXZpY2U6Ok1pY3JvcGhvbmUxID8gNDQxMDAgOiA0ODAwMCk7CisgICAgICAgIHNldFNhbXBs
ZVJhdGUoV1RGOjpnZXQ8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzPihkZXZpY2UoKS5wcm9wZXJ0
aWVzKS5kZWZhdWx0U2FtcGxlUmF0ZSk7CiAKICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwogICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcocmVuZGVySW50ZXJ2YWwoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwCmluZGV4IDQ2NDRmMDgyZDVlNjg0ODgzYTg1MWFjMTgxNWNlN2RlN2Zl
MmZhZmYuLjA4NzU0OTdhMWVmYTExMDQ1M2Y4ZTJkNmU1MjNkYWIzNjE3Yzk0YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2UuY3BwCkBAIC00NCwxMTYgKzQ0LDE2MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0cnVjdCBNb2NrRGV2aWNlSW5mbyB7Ci0gICAgQVNDSUlMaXRlcmFsIGlkIHsgQVNDSUlMaXRl
cmFsOjpudWxsKCkgfTsKLSAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGU7Ci0gICAg
QVNDSUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OwotICAgIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpNb2NrRGV2aWNlIGRldmljZTsKLX07Ci0KLXN0YXRpYyBjb25zdCBI
YXNoTWFwPFN0cmluZywgTW9ja0RldmljZUluZm8+JiBkZXZpY2VNYXAoKQotewotICAgIHN0YXRp
YyBjb25zdCBhdXRvIGluZm9NYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBz
dGF0aWMgY29uc3QgTW9ja0RldmljZUluZm8gZGV2aWNlc1tdID0gewotICAgICAgICAgICAgeyAi
MjM5YzI0YjAtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2Il9zLCBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlOjpNaWNyb3Bob25lLCAiTW9jayBhdWRpbyBkZXZpY2UgMSJfcywgTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2U6Ok1vY2tEZXZpY2U6Ok1pY3JvcGhvbmUxIH0sCi0gICAgICAgICAgICB7
ICIyMzljMjRiMS0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiX3MsIENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUsICJNb2NrIGF1ZGlvIGRldmljZSAyIl9zLCBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6TW9ja0RldmljZTo6TWljcm9waG9uZTIgfSwKLQotICAgICAgICAg
ICAgeyAiMjM5YzI0YjItMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2Il9zLCBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEsICJNb2NrIHZpZGVvIGRldmljZSAxIl9zLCBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6TW9ja0RldmljZTo6Q2FtZXJhMSB9LAotICAgICAgICAgICAgeyAi
MjM5YzI0YjMtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2Il9zLCBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlOjpDYW1lcmEsICJNb2NrIHZpZGVvIGRldmljZSAyIl9zLCBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6TW9ja0RldmljZTo6Q2FtZXJhMiB9LAotCi0gICAgICAgICAgICB7ICJTQ1JF
RU4tMSJfcywgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCAiTW9jayBzY3JlZW4g
ZGV2aWNlIDEiX3MsIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpNb2NrRGV2aWNlOjpTY3JlZW4x
IH0sCi0gICAgICAgICAgICB7ICJTQ1JFRU4tMiJfcywgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6U2NyZWVuLCAiTW9jayBzY3JlZW4gZGV2aWNlIDIiX3MsIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjpNb2NrRGV2aWNlOjpTY3JlZW4yIH0sCi0gICAgICAgIH07Ci0KLSAgICAgICAgSGFzaE1h
cDxTdHJpbmcsIE1vY2tEZXZpY2VJbmZvPiBtYXA7Ci0gICAgICAgIGZvciAoYXV0byYgaW5mbyA6
IGRldmljZXMpCi0gICAgICAgICAgICBtYXAuYWRkKGluZm8uaWQsIGluZm8pOworc3RhdGljIGlu
bGluZSBWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiBkZWZhdWx0RGV2aWNlcygpCit7CisgICAgcmV0
dXJuIFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+IHsKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsg
IjIzOWMyNGIwLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiJfcywgIk1vY2sgYXVkaW8gZGV2
aWNlIDEiX3MsIE1vY2tNaWNyb3Bob25lUHJvcGVydGllcyB7IDQ0MTAwIH0gfSwKKyAgICAgICAg
TW9ja01lZGlhRGV2aWNlIHsgIjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiJf
cywgIk1vY2sgYXVkaW8gZGV2aWNlIDIiX3MsIE1vY2tNaWNyb3Bob25lUHJvcGVydGllcyB7IDQ4
MDAwIH0gfSwKKworICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiMjM5YzI0YjItMmIxNS0xMWUz
LTgyMjQtMDgwMDIwMGM5YTY2Il9zLCAiTW9jayB2aWRlbyBkZXZpY2UgMSJfcywgTW9ja0NhbWVy
YVByb3BlcnRpZXMgeyAzMCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2lu
Z01vZGU6OlVzZXIsIENvbG9yOjpibGFjayB9IH0sCisgICAgICAgIE1vY2tNZWRpYURldmljZSB7
ICIyMzljMjRiMy0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiX3MsICJNb2NrIHZpZGVvIGRl
dmljZSAyIl9zLCBNb2NrQ2FtZXJhUHJvcGVydGllcyB7IDE1LCBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6RW52aXJvbm1lbnQsIENvbG9yOjpkYXJrR3JheSB9
IH0sCisKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIlNDUkVFTi0xIl9zLCAiTW9jayBzY3Jl
ZW4gZGV2aWNlIDEiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IDMwLCBDb2xvcjo6bGlnaHRH
cmF5IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIlNDUkVFTi0yIl9zLCAiTW9jayBz
Y3JlZW4gZGV2aWNlIDIiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IDEwLCBDb2xvcjo6eWVs
bG93IH0gfQorICAgIH07Cit9CisKK3N0YXRpYyBWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYgZGV2
aWNlcygpCit7CisgICAgc3RhdGljIGF1dG8gZGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7CisgICAgICAgIHJldHVybiBkZWZhdWx0RGV2aWNlcygpOworICAgIH0oKSk7CisgICAgcmV0
dXJuIGRldmljZXM7Cit9CisKK3N0YXRpYyBIYXNoTWFwPFN0cmluZywgTW9ja01lZGlhRGV2aWNl
PiYgZGV2aWNlTWFwKCkKK3sKKyAgICBzdGF0aWMgYXV0byBtYXAgPSBtYWtlTmV2ZXJEZXN0cm95
ZWQoW10geworICAgICAgICBIYXNoTWFwPFN0cmluZywgTW9ja01lZGlhRGV2aWNlPiBtYXA7Cisg
ICAgICAgIGZvciAoYXV0byYgZGV2aWNlIDogZGV2aWNlcygpKQorICAgICAgICAgICAgbWFwLmFk
ZChkZXZpY2UucGVyc2lzdGVudElkLCBkZXZpY2UpOworCiAgICAgICAgIHJldHVybiBtYXA7CiAg
ICAgfSgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCitzdGF0aWMgaW5saW5lIFZlY3RvcjxDYXB0
dXJlRGV2aWNlPiYgZGV2aWNlTGlzdEZvckRldmljZShjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRl
dmljZSkKK3sKKyAgICBpZiAoZGV2aWNlLmlzTWljcm9waG9uZSgpKQorICAgICAgICByZXR1cm4g
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmF1ZGlvRGV2aWNlcygpOworICAgIGlmIChkZXZpY2Uu
aXNDYW1lcmEoKSkKKyAgICAgICAgcmV0dXJuIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp2aWRl
b0RldmljZXMoKTsKIAotICAgIHJldHVybiBpbmZvTWFwOworICAgIEFTU0VSVChkZXZpY2UuaXNE
aXNwbGF5KCkpOworICAgIHJldHVybiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6ZGlzcGxheURl
dmljZXMoKTsKIH0KIAotc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGlkKQordm9pZCBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZTo6Y3JlYXRlQ2FwdHVyZURldmljZShjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRldmlj
ZSkKIHsKLSAgICBBU1NFUlQoIWlkLmlzRW1wdHkoKSk7CisgICAgZGV2aWNlTGlzdEZvckRldmlj
ZShkZXZpY2UpLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChkZXZpY2UudHlw
ZSgpLCBkZXZpY2UucGVyc2lzdGVudElkKS52YWx1ZSgpKTsKK30KKwordm9pZCBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZTo6cmVzZXREZXZpY2VzKCkKK3sKKyAgICBzZXREZXZpY2VzKGRlZmF1bHRE
ZXZpY2VzKCkpOworfQorCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzZXREZXZpY2Vz
KFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+JiYgbmV3TW9ja0RldmljZXMpCit7CisgICAgYXVkaW9E
ZXZpY2VzKCkuY2xlYXIoKTsKKyAgICB2aWRlb0RldmljZXMoKS5jbGVhcigpOworICAgIGRpc3Bs
YXlEZXZpY2VzKCkuY2xlYXIoKTsKIAotICAgIGF1dG8gbWFwID0gZGV2aWNlTWFwKCk7Ci0gICAg
YXV0byBpdCA9IG1hcC5maW5kKGlkKTsKLSAgICBpZiAoaXQgIT0gbWFwLmVuZCgpICYmIGl0LT52
YWx1ZS50eXBlID09IHR5cGUpIHsKLSAgICAgICAgYXV0byBkZXZpY2UgPSBDYXB0dXJlRGV2aWNl
KGl0LT52YWx1ZS5pZCwgaXQtPnZhbHVlLnR5cGUsIGl0LT52YWx1ZS5uYW1lKTsKLSAgICAgICAg
ZGV2aWNlLnNldEVuYWJsZWQodHJ1ZSk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKGRldmljZSk7
CisgICAgYXV0byYgbW9ja0RldmljZXMgPSBkZXZpY2VzKCk7CisgICAgbW9ja0RldmljZXMgPSBX
VEZNb3ZlKG5ld01vY2tEZXZpY2VzKTsKKworICAgIGF1dG8mIG1hcCA9IGRldmljZU1hcCgpOwor
ICAgIG1hcC5jbGVhcigpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBkZXZpY2UgOiBtb2NrRGV2
aWNlcykgeworICAgICAgICBtYXAuYWRkKGRldmljZS5wZXJzaXN0ZW50SWQsIGRldmljZSk7Cisg
ICAgICAgIGNyZWF0ZUNhcHR1cmVEZXZpY2UoZGV2aWNlKTsKICAgICB9Cit9CiAKLSAgICByZXR1
cm4gc3RkOjpudWxsb3B0Owordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkRGV2aWNl
KGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKQoreworICAgIGRldmljZXMoKS5hcHBlbmQo
ZGV2aWNlKTsKKyAgICBkZXZpY2VNYXAoKS5zZXQoZGV2aWNlLnBlcnNpc3RlbnRJZCwgZGV2aWNl
KTsKKyAgICBjcmVhdGVDYXB0dXJlRGV2aWNlKGRldmljZSk7CiB9CiAKLVZlY3RvcjxDYXB0dXJl
RGV2aWNlPiYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvRGV2aWNlcygpCit2b2lkIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVEZXZpY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0
ZW50SWQpCiB7Ci0gICAgc3RhdGljIGF1dG8gaW5mbyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
Ci0gICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiB2ZWN0b3I7CisgICAgYXV0byYgbWFwID0g
ZGV2aWNlTWFwKCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1hcC5maW5kKHBlcnNpc3RlbnRJZCk7
CisgICAgaWYgKGl0ZXJhdG9yID09IG1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGF1dG8gY2FwdHVyZURldmljZSA9IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUsICIyMzljMjRiMC0yYjE1LTExZTMt
ODIyNC0wODAwMjAwYzlhNjYiX3MpOwotICAgICAgICBBU1NFUlQoY2FwdHVyZURldmljZSk7Ci0g
ICAgICAgIHZlY3Rvci5hcHBlbmQoV1RGTW92ZShjYXB0dXJlRGV2aWNlLnZhbHVlKCkpKTsKKyAg
ICBkZXZpY2VzKCkucmVtb3ZlRmlyc3RNYXRjaGluZyhbJnBlcnNpc3RlbnRJZF0oY29uc3QgYXV0
byYgZGV2aWNlKSB7CisgICAgICAgIHJldHVybiBkZXZpY2UucGVyc2lzdGVudElkID09IHBlcnNp
c3RlbnRJZDsKKyAgICB9KTsKIAotICAgICAgICBjYXB0dXJlRGV2aWNlID0gY2FwdHVyZURldmlj
ZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSwg
IjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiJfcyk7Ci0gICAgICAgIEFTU0VS
VChjYXB0dXJlRGV2aWNlKTsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChXVEZNb3ZlKGNhcHR1cmVE
ZXZpY2UudmFsdWUoKSkpOworICAgIGRldmljZUxpc3RGb3JEZXZpY2UoaXRlcmF0b3ItPnZhbHVl
KS5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmcGVyc2lzdGVudElkXShjb25zdCBhdXRvJiBkZXZpY2Up
IHsKKyAgICAgICAgcmV0dXJuIGRldmljZS5wZXJzaXN0ZW50SWQoKSA9PSBwZXJzaXN0ZW50SWQ7
CisgICAgfSk7CiAKLSAgICAgICAgcmV0dXJuIHZlY3RvcjsKLSAgICB9KCkpOwotICAgIHJldHVy
biBpbmZvOworICAgIG1hcC5yZW1vdmUoaXRlcmF0b3IpOwogfQogCi1WZWN0b3I8Q2FwdHVyZURl
dmljZT4mIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb0RldmljZXMoKQorc3RkOjpvcHRp
b25hbDxDYXB0dXJlRGV2aWNlPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2FwdHVyZURldmlj
ZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBT
dHJpbmcmIGlkKQogewotICAgIHN0YXRpYyBhdXRvIGluZm8gPSBtYWtlTmV2ZXJEZXN0cm95ZWQo
W10gewotICAgICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gdmVjdG9yOworICAgIEFTU0VSVCgh
aWQuaXNFbXB0eSgpKTsKIAotICAgICAgICBhdXRvIGNhcHR1cmVEZXZpY2UgPSBjYXB0dXJlRGV2
aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEsICIy
MzljMjRiMi0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiX3MpOwotICAgICAgICBBU1NFUlQo
Y2FwdHVyZURldmljZSk7Ci0gICAgICAgIHZlY3Rvci5hcHBlbmQoV1RGTW92ZShjYXB0dXJlRGV2
aWNlLnZhbHVlKCkpKTsKKyAgICBhdXRvJiBtYXAgPSBkZXZpY2VNYXAoKTsKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbWFwLmZpbmQoaWQpOworICAgIGlmIChpdGVyYXRvciA9PSBtYXAuZW5kKCkgfHwg
aXRlcmF0b3ItPnZhbHVlLnR5cGUoKSAhPSB0eXBlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIGNhcHR1cmVEZXZpY2UgPSBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3Rl
bnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEsICIyMzljMjRiMy0yYjE1LTEx
ZTMtODIyNC0wODAwMjAwYzlhNjYiX3MpOwotICAgICAgICBBU1NFUlQoY2FwdHVyZURldmljZSk7
Ci0gICAgICAgIHZlY3Rvci5hcHBlbmQoV1RGTW92ZShjYXB0dXJlRGV2aWNlLnZhbHVlKCkpKTsK
KyAgICBDYXB0dXJlRGV2aWNlIGRldmljZSB7IGl0ZXJhdG9yLT52YWx1ZS5wZXJzaXN0ZW50SWQs
IHR5cGUsIGl0ZXJhdG9yLT52YWx1ZS5sYWJlbCB9OworICAgIGRldmljZS5zZXRFbmFibGVkKHRy
dWUpOworICAgIHJldHVybiBXVEZNb3ZlKGRldmljZSk7Cit9CisKK1ZlY3RvcjxDYXB0dXJlRGV2
aWNlPiYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvRGV2aWNlcygpCit7CisgICAgc3Rh
dGljIGF1dG8gYXVkaW9EZXZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAg
VmVjdG9yPENhcHR1cmVEZXZpY2U+IGF1ZGlvRGV2aWNlczsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBkZXZpY2UgOiBkZXZpY2VzKCkpIHsKKyAgICAgICAgICAgIGlmIChkZXZpY2UudHlwZSgp
ID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUpCisgICAgICAgICAgICAg
ICAgYXVkaW9EZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lLCBkZXZpY2UucGVyc2lzdGVudElkKS52
YWx1ZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYXVkaW9EZXZpY2VzOworICAgIH0o
KSk7CisgICAgcmV0dXJuIGF1ZGlvRGV2aWNlczsKK30KIAotICAgICAgICByZXR1cm4gdmVjdG9y
OworVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9E
ZXZpY2VzKCkKK3sKKyAgICBzdGF0aWMgYXV0byB2aWRlb0RldmljZXMgPSBtYWtlTmV2ZXJEZXN0
cm95ZWQoW10geworICAgICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gdmlkZW9EZXZpY2VzOwor
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRldmljZSA6IGRldmljZXMoKSkgeworICAgICAgICAg
ICAgaWYgKGRldmljZS50eXBlKCkgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJh
KQorICAgICAgICAgICAgICAgIHZpZGVvRGV2aWNlcy5hcHBlbmQoY2FwdHVyZURldmljZVdpdGhQ
ZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhLCBkZXZpY2UucGVy
c2lzdGVudElkKS52YWx1ZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmlkZW9EZXZp
Y2VzOwogICAgIH0oKSk7Ci0gICAgcmV0dXJuIGluZm87CisgICAgcmV0dXJuIHZpZGVvRGV2aWNl
czsKIH0KIAogVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6
ZGlzcGxheURldmljZXMoKQogewotICAgIHN0YXRpYyBhdXRvIGRldmljZXMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoW10gewotICAgICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gdmVjdG9yOwotCi0g
ICAgICAgIGF1dG8gY2FwdHVyZURldmljZSA9IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElE
KENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgIlNDUkVFTi0xIl9zKTsKLSAgICAg
ICAgQVNTRVJUKGNhcHR1cmVEZXZpY2UpOwotICAgICAgICB2ZWN0b3IuYXBwZW5kKFdURk1vdmUo
Y2FwdHVyZURldmljZS52YWx1ZSgpKSk7Ci0KLSAgICAgICAgY2FwdHVyZURldmljZSA9IGNhcHR1
cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVl
biwgIlNDUkVFTi0yIl9zKTsKLSAgICAgICAgQVNTRVJUKGNhcHR1cmVEZXZpY2UpOwotICAgICAg
ICB2ZWN0b3IuYXBwZW5kKFdURk1vdmUoY2FwdHVyZURldmljZS52YWx1ZSgpKSk7Ci0KLSAgICAg
ICAgcmV0dXJuIHZlY3RvcjsKKyAgICBzdGF0aWMgYXV0byBkaXNwbGF5RGV2aWNlcyA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBkaXNwbGF5
RGV2aWNlczsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXZpY2UgOiBkZXZpY2VzKCkpIHsK
KyAgICAgICAgICAgIGlmIChkZXZpY2UudHlwZSgpID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU6OlNjcmVlbikKKyAgICAgICAgICAgICAgICBkaXNwbGF5RGV2aWNlcy5hcHBlbmQoY2FwdHVy
ZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVu
LCBkZXZpY2UucGVyc2lzdGVudElkKS52YWx1ZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZGlzcGxheURldmljZXM7CiAgICAgfSgpKTsKIAotICAgIHJldHVybiBkZXZpY2VzOworICAg
IHJldHVybiBkaXNwbGF5RGV2aWNlczsKIH0KIAogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Ok1v
Y2tSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIDogUmVhbHRpbWVNZWRpYVNv
dXJjZShpZCwgdHlwZSwgbmFtZSkKKyAgICAsIG1fZGV2aWNlKGRldmljZU1hcCgpLmdldChpZCkp
CiB7CiAgICAgQVNTRVJUKHR5cGUgIT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6Tm9uZSk7
Ci0KLSAgICBhdXRvIG1hcCA9IGRldmljZU1hcCgpOwotICAgIGF1dG8gaXQgPSBtYXAuZmluZChp
ZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1hcC5lbmQoKSk7Ci0KLSAgICBtX2RldmljZSA9IGl0LT52
YWx1ZS5kZXZpY2U7CiAgICAgc2V0UGVyc2lzdGVudElEKFN0cmluZyhpZCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlLmgKaW5kZXggYTFkM2U5YjYxYjYxMTMzNjVhNzg0MzAwMjgzYjk0YTVlMTFmYTc1Zi4uMzM1
NWRhNjYxZWM2MGU5ZGYxYTI1MWMwMDBhYjU2OTcxY2Y4Y2IxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAt
MzIsMjcgKzMyLDMyIEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAi
Q2FwdHVyZURldmljZS5oIgorI2luY2x1ZGUgIk1vY2tNZWRpYURldmljZS5oIgogI2luY2x1ZGUg
IlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBD
YXB0dXJlRGV2aWNlOwotCiBjbGFzcyBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSA6IHB1YmxpYyBS
ZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZSgpID0gZGVmYXVsdDsKIAorICAgIHN0YXRpYyB2b2lkIHNldERldmljZXMoVmVj
dG9yPE1vY2tNZWRpYURldmljZT4mJik7CisgICAgc3RhdGljIHZvaWQgYWRkRGV2aWNlKGNvbnN0
IE1vY2tNZWRpYURldmljZSYpOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZURldmljZShjb25zdCBT
dHJpbmcmIHBlcnNpc3RlbnRJZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVz
ZXREZXZpY2VzKCk7CisKICAgICBzdGF0aWMgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBhdWRpb0Rl
dmljZXMoKTsKICAgICBzdGF0aWMgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiB2aWRlb0RldmljZXMo
KTsKICAgICBzdGF0aWMgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBkaXNwbGF5RGV2aWNlcygpOwog
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZVdp
dGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBlbnVtIGNsYXNzIE1vY2tEZXZpY2UgeyBJbnZhbGlkLCBNaWNyb3Bob25lMSwgTWlj
cm9waG9uZTIsIENhbWVyYTEsIENhbWVyYTIsIFNjcmVlbjEsIFNjcmVlbjIgfTsKLQogcHJvdGVj
dGVkOgogICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVDYXB0dXJlRGV2
aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYpOworCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNl
dHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMo
UmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgPSAwOwpAQCAtNjIsOCAr
NjcsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAKLSAgICBNb2NrRGV2aWNlIGRldmlj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlOyB9Ci0gICAgTW9ja0RldmljZSBtX2RldmljZSB7
IE1vY2tEZXZpY2U6OkludmFsaWQgfTsKKyAgICBjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRldmlj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlOyB9CisgICAgTW9ja01lZGlhRGV2aWNlIG1fZGV2
aWNlOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA3N2EwZjhlZGQzY2I3ZjZhZTIzM2I3NTAzMDEy
MTUzNjgyMDA3MDFjLi5kZjkxZWJlMGZlODU0NDExNGE2NjJjNzZlNDJhZmNhN2E3MDBlZGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtMzcsMTYgKzM3LDM5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKK01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyJiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
c2luZ2xldG9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI+IGNlbnRlcjsKKyAgICByZXR1cm4gY2VudGVyOworfQorCit2b2lkIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlckVuYWJsZWQoYm9vbCBlbmFibGVkKQorewogICAgIHN0YXRpYyBib29sIGFjdGl2ZSA9IGZh
bHNlOwogICAgIGlmIChhY3RpdmUgIT0gZW5hYmxlZCkgewogICAgICAgICBhY3RpdmUgPSBlbmFi
bGVkOwotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRTaGFyZWRTdHJlYW1D
ZW50ZXJPdmVycmlkZShlbmFibGVkID8gJmNlbnRlci5nZXQoKSA6IG51bGxwdHIpOworICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRTaGFyZWRTdHJlYW1DZW50ZXJPdmVycmlk
ZShlbmFibGVkID8gJnNpbmdsZXRvbigpIDogbnVsbHB0cik7CiAgICAgfQogfQogCit2b2lkIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZpY2VzKFZlY3RvcjxNb2NrTWVkaWFE
ZXZpY2U+JiYgbmV3TW9ja0RldmljZXMpCit7CisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldERldmljZXMoV1RGTW92ZShuZXdNb2NrRGV2aWNlcykpOworICAgIHNpbmdsZXRvbigpLmNh
cHR1cmVEZXZpY2VzQ2hhbmdlZCgpOworfQorCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjphZGREZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJiBkZXZpY2UpCit7CisgICAg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZERldmljZShkZXZpY2UpOworICAgIHNpbmdsZXRv
bigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOworfQorCit2b2lkIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpyZW1vdmVEZXZpY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQpCit7
CisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZURldmljZShwZXJzaXN0ZW50SWQp
OworICAgIHNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oCmluZGV4IDBmOTJmOWQ0M2Y5ODliYTZlOGMzYWE4ZjM1YzQwNGViOGI0
MjlmM2YuLmJlNDdhMGUzZTQ2MjExZDRlZmZlZDAyYzFkNzE2NTc5YTFjNDU3NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgKQEAgLTM5LDYgKzM5LDEwIEBAIGNsYXNzIE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIg
ewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZChib29sKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIHNldERldmljZXMoVmVjdG9yPE1vY2tNZWRpYURldmljZT4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgYWRkRGV2aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92ZURldmljZShjb25zdCBTdHJp
bmcmIHBlcnNpc3RlbnRJZCk7CisKICAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW9DYXB0dXJlRmFjdG9yeSYgdmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSgpIHsgcmV0dXJuIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpmYWN0b3J5KCk7IH0KICAgICBzdGF0aWMgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSYgYXVkaW9DYXB0dXJlU291cmNlRmFjdG9y
eSgpIHsgcmV0dXJuIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpmYWN0b3J5KCk7IH0KIApAQCAt
NDYsNiArNTAsOCBAQCBwcml2YXRlOgogICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
KCkgPSBkZWZhdWx0OwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcj47CiAKKyAgICBzdGF0aWMgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXImIHNpbmdsZXRvbigpOworCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJl
RmFjdG9yeSYgYXVkaW9GYWN0b3J5KCkgZmluYWwgeyByZXR1cm4gTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2U6OmZhY3RvcnkoKTsgfQogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVy
ZUZhY3RvcnkmIHZpZGVvRmFjdG9yeSgpIGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpmYWN0b3J5KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCAwM2E3YzNlYzJmMTAz
OTYwNzVlMTE3N2JiMDU0NWRiN2M1ZDgzNjg3Li45YzQxZTFjNDcyN2VlNDE2NjQzMjI3YWIwZTRh
NTNjOWJjYzliMjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtMTA4LDMxICsxMDgsMTggQEAgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlKGNvbnN0IFN0cmlu
ZyYgZGV2aWNlSUQsIGNvbnN0IFMKICAgICA6IE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGRldmlj
ZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbywgbmFtZSkKICAgICAsIG1fdGlt
ZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Omdl
bmVyYXRlRnJhbWUpCiB7Ci0gICAgc3dpdGNoIChkZXZpY2UoKSkgewotICAgIGNhc2UgTW9ja0Rl
dmljZTo6Q2FtZXJhMToKLSAgICAgICAgc2V0RnJhbWVSYXRlKDMwKTsKLSAgICAgICAgc2V0RmFj
aW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXIpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIE1vY2tEZXZpY2U6OkNhbWVyYTI6Ci0gICAgICAgIHNldEZyYW1lUmF0ZSgx
NSk7Ci0gICAgICAgIHNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpF
bnZpcm9ubWVudCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTW9ja0RldmljZTo6U2NyZWVu
MToKLSAgICAgICAgc2V0RnJhbWVSYXRlKDMwKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBN
b2NrRGV2aWNlOjpTY3JlZW4yOgotICAgICAgICBzZXRGcmFtZVJhdGUoMTApOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE1vY2tEZXZpY2U6Ok1pY3JvcGhvbmUxOgotICAgIGNhc2UgTW9ja0Rl
dmljZTo6TWljcm9waG9uZTI6Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpJbnZhbGlkOgotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgbV9k
YXNoV2lkdGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7CiAgICAgbV9kYXNoV2lkdGhzLnVu
Y2hlY2tlZEFwcGVuZCg2KTsKICAgICBtX2Rhc2hXaWR0aHMudW5jaGVja2VkQXBwZW5kKDYpOwor
CisgICAgaWYgKG1vY2tTY3JlZW4oKSkgeworICAgICAgICBzZXRGcmFtZVJhdGUoV1RGOjpnZXQ8
TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihkZXZpY2UoKS5wcm9wZXJ0aWVzKS5kZWZhdWx0RnJhbWVS
YXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIHByb3BlcnRpZXMgPSBX
VEY6OmdldDxNb2NrQ2FtZXJhUHJvcGVydGllcz4oZGV2aWNlKCkucHJvcGVydGllcyk7CisgICAg
c2V0RnJhbWVSYXRlKHByb3BlcnRpZXMuZGVmYXVsdEZyYW1lUmF0ZSk7CisgICAgc2V0RmFjaW5n
TW9kZShwcm9wZXJ0aWVzLmZhY2luZ01vZGVDYXBhYmlsaXR5KTsKIH0KIAogTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6On5Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSgpCkBAIC0xOTEsMTAgKzE3OCw3
IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnVwZGF0ZVNldHRpbmdzKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
Ojppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMm
IGNhcGFiaWxpdGllcykKIHsKICAgICBpZiAobW9ja0NhbWVyYSgpKSB7Ci0gICAgICAgIGlmIChk
ZXZpY2UoKSA9PSBNb2NrRGV2aWNlOjpDYW1lcmExKQotICAgICAgICAgICAgY2FwYWJpbGl0aWVz
LmFkZEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgY2FwYWJpbGl0aWVzLmFkZEZhY2luZ01vZGUoUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpFbnZpcm9ubWVudCk7CisgICAgICAgIGNhcGFiaWxpdGllcy5h
ZGRGYWNpbmdNb2RlKFdURjo6Z2V0PE1vY2tDYW1lcmFQcm9wZXJ0aWVzPihkZXZpY2UoKS5wcm9w
ZXJ0aWVzKS5mYWNpbmdNb2RlQ2FwYWJpbGl0eSk7CiAKICAgICAgICAgY2FwYWJpbGl0aWVzLnNl
dFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMzIwLCAxOTIwKSk7CiAgICAgICAgIGNhcGFi
aWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgyNDAsIDEwODApKTsKQEAg
LTM5Miw3ICszNzYsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoc3RhdHNG
b250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgc3RhdHNMb2NhdGlvbik7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgc3RhdHNMb2NhdGlvbi5tb3ZlKDAsIG1fc3RhdHNGb250U2l6ZSk7
Ci0gICAgICAgIGNvbnRleHQuZHJhd1RleHQoc3RhdHNGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3
KGRldmljZSgpID09IE1vY2tEZXZpY2U6OlNjcmVlbjEgPyAiU2NyZWVuIDEiIDogIlNjcmVlbiAy
IikpKSwgc3RhdHNMb2NhdGlvbik7CisgICAgICAgIGNvbnRleHQuZHJhd1RleHQoc3RhdHNGb250
LCBUZXh0UnVuIHsgaWQoKSB9LCBzdGF0c0xvY2F0aW9uKTsKICAgICB9CiAKICAgICBGbG9hdFBv
aW50IGJpcEJvcExvY2F0aW9uKHNpemUud2lkdGgoKSAqIC42LCBzaXplLmhlaWdodCgpICogLjYp
OwpAQCAtNDMxLDI3ICs0MTUsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5l
cmF0ZUZyYW1lKCkKICAgICBhdXRvJiBzaXplID0gdGhpcy0+c2l6ZSgpOwogICAgIEZsb2F0UmVj
dCBmcmFtZVJlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsKIAotICAgIENvbG9yIGZpbGxDb2xvcjsK
LSAgICBzd2l0Y2ggKGRldmljZSgpKSB7Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpDYW1lcmExOgot
ICAgICAgICBmaWxsQ29sb3IgPSBDb2xvcjo6YmxhY2s7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTW9ja0RldmljZTo6Q2FtZXJhMjoKLSAgICAgICAgZmlsbENvbG9yID0gQ29sb3I6OmRhcmtH
cmF5OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1vY2tEZXZpY2U6OlNjcmVlbjE6Ci0gICAg
ICAgIGZpbGxDb2xvciA9IENvbG9yOjpsaWdodEdyYXk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTW9ja0RldmljZTo6U2NyZWVuMjoKLSAgICAgICAgZmlsbENvbG9yID0gQ29sb3I6OnllbGxv
dzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpNaWNyb3Bob25lMToKLSAg
ICBjYXNlIE1vY2tEZXZpY2U6Ok1pY3JvcGhvbmUyOgotICAgIGNhc2UgTW9ja0RldmljZTo6SW52
YWxpZDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQorICAgIGF1dG8gZmlsbENvbG9yID0gbW9ja0NhbWVyYSgpID8gV1RGOjpnZXQ8TW9ja0Nh
bWVyYVByb3BlcnRpZXM+KGRldmljZSgpLnByb3BlcnRpZXMpLmZpbGxDb2xvciA6IFdURjo6Z2V0
PE1vY2tEaXNwbGF5UHJvcGVydGllcz4oZGV2aWNlKCkucHJvcGVydGllcykuZmlsbENvbG9yOwog
ICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSksIGZpbGxD
b2xvcik7CiAKICAgICBpZiAoIW11dGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCBiZDUyNjgyNmZm
MDQ4MmI0NGZjNDlhNGM4NjA3YjY2NjgwOTRjZjQ3Li5hNjU4OWI4NzU0ODc3MDRlOGI0ODg3YTQ1
MmVlMzdkOTc3MTBhNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC04Myw4ICs4Myw4IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGRlbGF5U2FtcGxlcyhTZWNvbmRzKSBvdmVycmlkZTsKIAotICAgIGJvb2wg
bW9ja0NhbWVyYSgpIGNvbnN0IHsgcmV0dXJuIGRldmljZSgpID09IE1vY2tEZXZpY2U6OkNhbWVy
YTEgfHwgZGV2aWNlKCkgPT0gTW9ja0RldmljZTo6Q2FtZXJhMjsgfQotICAgIGJvb2wgbW9ja1Nj
cmVlbigpIGNvbnN0IHsgcmV0dXJuIGRldmljZSgpID09IE1vY2tEZXZpY2U6OlNjcmVlbjEgfHwg
ZGV2aWNlKCkgPT0gTW9ja0RldmljZTo6U2NyZWVuMjsgfQorICAgIGJvb2wgbW9ja0NhbWVyYSgp
IGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TW9ja0NhbWVyYVByb3BlcnRp
ZXM+KGRldmljZSgpLnByb3BlcnRpZXMpOyB9CisgICAgYm9vbCBtb2NrU2NyZWVuKCkgY29uc3Qg
eyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNb2NrRGlzcGxheVByb3BlcnRpZXM+KGRl
dmljZSgpLnByb3BlcnRpZXMpOyB9CiAKICAgICBmbG9hdCBtX2Jhc2VGb250U2l6ZSB7IDAgfTsK
ICAgICBmbG9hdCBtX2JpcEJvcEZvbnRTaXplIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXgg
YmQ5ZGUzNGVkMmJmZjkzMGE2ZGMzMGEwZTRjNzM3OTA4ODg3ZjIxMC4uNDIyZTUyNDJkNjllMjNi
ZjExZGY2OWQ5NzgzMjljNTcxYjA4YTE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC00MDIsNiAr
NDAyLDcgQEAgc2V0KFdlYktpdF9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVj
dG9yLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwCisgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S05hdmlnYXRpb25BY3Rpb25SZWYuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlv
bkRhdGFSZWYuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvblJlZi5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNDhhNDA4Mzc3YjAxYzJmMjI3ZWY1OThiZDY3NDhiNWIwYWIzYWI5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVk
aWFEZXZpY2UuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
S01vY2tNZWRpYURldmljZS5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
V0tTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvTW9ja01lZGlhRGV2aWNlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQordXNpbmcgUHJvcGVydGllcyA9IFZhcmlhbnQ8V2ViQ29yZTo6
TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzLCBXZWJDb3JlOjpNb2NrQ2FtZXJhUHJvcGVydGllcywg
V2ViQ29yZTo6TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPjsKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRp
b25hbDxQcm9wZXJ0aWVzPiB0eXBlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCit7Cisg
ICAgaWYgKHR5cGUgPT0gImNhbWVyYSIpCisgICAgICAgIHJldHVybiBQcm9wZXJ0aWVzIHsgV2Vi
Q29yZTo6TW9ja0NhbWVyYVByb3BlcnRpZXMgeyB9IH07CisgICAgaWYgKHR5cGUgPT0gIm1pY3Jv
cGhvbmUiKQorICAgICAgICByZXR1cm4gUHJvcGVydGllcyB7IFdlYkNvcmU6Ok1vY2tNaWNyb3Bo
b25lUHJvcGVydGllcyB7IH0gfTsKKyAgICBpZiAodHlwZSA9PSAic2NyZWVuIikKKyAgICAgICAg
cmV0dXJuIFByb3BlcnRpZXMgeyBXZWJDb3JlOjpNb2NrRGlzcGxheVByb3BlcnRpZXMgeyB9IH07
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKyNlbmRpZgorCit2b2lkIFdLQWRkTW9ja01l
ZGlhRGV2aWNlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQs
IFdLU3RyaW5nUmVmIGxhYmVsLCBXS1N0cmluZ1JlZiB0eXBlKQoreworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgaWYgKGF1dG8gcHJvcGVydGllcyA9IHR5cGVGcm9tU3RyaW5nKFdlYktp
dDo6dG9JbXBsKHR5cGUpLT5zdHJpbmcoKSkpCisgICAgICAgIHRvSW1wbChjb250ZXh0KS0+YWRk
TW9ja01lZGlhRGV2aWNlKHsgV2ViS2l0Ojp0b0ltcGwocGVyc2lzdGVudElkKS0+c3RyaW5nKCks
IFdlYktpdDo6dG9JbXBsKGxhYmVsKS0+c3RyaW5nKCksIFdURk1vdmUoKnByb3BlcnRpZXMpIH0p
OworI2VuZGlmCit9CisKK3ZvaWQgV0tDbGVhck1vY2tNZWRpYURldmljZXMoV0tDb250ZXh0UmVm
IGNvbnRleHQpCit7CisgICAgdG9JbXBsKGNvbnRleHQpLT5jbGVhck1vY2tNZWRpYURldmljZXMo
KTsKK30KKwordm9pZCBXS1JlbW92ZU1vY2tNZWRpYURldmljZShXS0NvbnRleHRSZWYgY29udGV4
dCwgV0tTdHJpbmdSZWYgcGVyc2lzdGVudElkKQoreworICAgIHRvSW1wbChjb250ZXh0KS0+cmVt
b3ZlTW9ja01lZGlhRGV2aWNlKFdlYktpdDo6dG9JbXBsKHBlcnNpc3RlbnRJZCktPnN0cmluZygp
KTsKK30KKwordm9pZCBXS1Jlc2V0TW9ja01lZGlhRGV2aWNlcyhXS0NvbnRleHRSZWYgY29udGV4
dCkKK3sKKyAgICB0b0ltcGwoY29udGV4dCktPnJlc2V0TW9ja01lZGlhRGV2aWNlcygpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZp
Y2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjc3NmQyODE3MTE5NDlhMTBlYzcwZDQyMWNhYjZhMDM1YjA3NGExYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlh
RGV2aWNlLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tC
YXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tf
RVhQT1JUIHZvaWQgV0tBZGRNb2NrTWVkaWFEZXZpY2UoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1Jl
ZiBwZXJzaXN0ZW50SWQsIFdLU3RyaW5nUmVmIGxhYmVsLCBXS1N0cmluZ1JlZiB0eXBlKTsKK1dL
X0VYUE9SVCB2b2lkIFdLQ2xlYXJNb2NrTWVkaWFEZXZpY2VzKFdLQ29udGV4dFJlZik7CitXS19F
WFBPUlQgdm9pZCBXS1JlbW92ZU1vY2tNZWRpYURldmljZShXS0NvbnRleHRSZWYsIFdLU3RyaW5n
UmVmIHBlcnNpc3RlbnRJZCk7CitXS19FWFBPUlQgdm9pZCBXS1Jlc2V0TW9ja01lZGlhRGV2aWNl
cyhXS0NvbnRleHRSZWYpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGJkMzc3ZTQ2YjY3MWI3
MzllZjdjMDY0MDg5ZGVkY2E4ZGE0YTBhNjQuLjcyYTgzZGY4MTBhZjM3Y2NlNDkzN2ZmNWJmNDc4
YzY2YzFiMGQ3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKQEAgLTgyLDYgKzgyLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Qcm9jZXNzLmg+CkBAIC0yMjEyLDQgKzIyMTMsMzYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dW5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eShTdXNwZW5kZWRQYWdlUHJv
eHkmIHBhZ2UpCiAgICAgICAgIG1fc3VzcGVuZGVkUGFnZXMucmVtb3ZlKGl0ZXJhdG9yKTsKIH0K
IAordm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRkTW9ja01lZGlhRGV2aWNlKGNvbnN0IE1vY2tNZWRp
YURldmljZSYgZGV2aWNlKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmFkZERldmljZShkZXZpY2UpOworICAgIHNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkTW9ja01lZGlhRGV2aWNlIHsgZGV2
aWNlIH0pOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyTW9ja01lZGlh
RGV2aWNlcygpCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6c2V0RGV2aWNlcyh7IH0pOworICAgIHNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2xlYXJNb2NrTWVkaWFEZXZpY2VzIHsgfSk7CisjZW5k
aWYKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTW9ja01lZGlhRGV2aWNlKGNvbnN0
IFN0cmluZyYgcGVyc2lzdGVudElkKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZShwZXJzaXN0ZW50SWQp
OworICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVtb3ZlTW9j
a01lZGlhRGV2aWNlIHsgcGVyc2lzdGVudElkIH0pOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnJlc2V0TW9ja01lZGlhRGV2aWNlcygpCit7CisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXREZXZpY2VzKCk7CisgICAg
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXNldE1vY2tNZWRpYURl
dmljZXMgeyB9KTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGFlYjE5MTBhNjBlNDVhZjAyNTVj
MDVlN2VkY2NiYmRiMTY5M2I4ZjAuLjgzYjA2M2U5ZTVkZjUxNmMwZGFkZmVmZDNiOTJiYzU0OWEx
NzI0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtODIs
NiArODIsMTAgQEAgY2xhc3MgTmF2aWdhdGlvbjsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwog
fQogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlOworfQorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRG93bmxvYWRQcm94eTsKQEAgLTQ1NCw2ICs0NTgs
MTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzY3JlZW5Qcm9wZXJ0aWVzU3RhdGVDaGFuZ2VkKCk7
CiAKKyAgICB2b2lkIGFkZE1vY2tNZWRpYURldmljZShjb25zdCBXZWJDb3JlOjpNb2NrTWVkaWFE
ZXZpY2UmKTsKKyAgICB2b2lkIGNsZWFyTW9ja01lZGlhRGV2aWNlcygpOworICAgIHZvaWQgcmVt
b3ZlTW9ja01lZGlhRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKTsKKyAgICB2b2lk
IHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDZhNTA3MjFlZTIyOTk5N2E5NTcyNmVhYjA3ZTkxODI2NTJjZGYyYTUu
LjA4NjNmOTk1ODg1Y2JlOTYyMjQzZDI2YTk0ZWZjZjE3NzViN2Y1NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTEzLDYgKzkxMyw4
IEBACiAJCTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBG
MDA2RDAgLyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUg
LyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmNwcCAqLzsgfTsKKwkJNDExQThEREIyMERERDFBQzAwNjBEMzRGIC8qIFdLTW9ja01lZGlh
RGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTFBOEREOTIwRERCNjA1MDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTFBOEREQzIwREREMjNG
MDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExQThEREEyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9j
a01lZGlhRGV2aWNlLmNwcCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExp
YldlYlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87
IH07CiAJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURF
ODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUEx
REU4NUYzMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgKi87IH07CkBAIC0zMjk5LDYgKzMzMDEsOCBAQAogCQk0
MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAw
RTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHBh
dGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExQThERDkyMEREQjYwNTAwNjBEMzRGIC8qIFdL
TW9ja01lZGlhRGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTW9j
a01lZGlhRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMUE4RERBMjBE
REI2MDUwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS01vY2tNZWRpYURldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3
b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsu
aDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENT
b2NrZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JU
Q1NvY2tldC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURFODRGQjAwMDM5
RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE5ldHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDU29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTcyLDYgKzc1
NzYsOCBAQAogCQkJCUM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlci5oICovLAogCQkJCUM5Q0Q0Mzk5MUI0QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlh
U2Vzc2lvbk1ldGFkYXRhLmNwcCAqLywKIAkJCQlDOUNENDM5QTFCNEIwMjQyMDAyMzlFMzMgLyog
V0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovLAorCQkJCTQxMUE4RERBMjBEREI2MDUwMDYwRDM0
RiAvKiBXS01vY2tNZWRpYURldmljZS5jcHAgKi8sCisJCQkJNDExQThERDkyMEREQjYwNTAwNjBE
MzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmggKi8sCiAJCQkJQzA5QUU1RTgxMjUyNTdDMjAwMjU4
MjVEIC8qIFdLTmF0aXZlRXZlbnQuaCAqLywKIAkJCQkyRDNBNjVEODFBN0MzQTFGMDBDQUM2Mzcg
LyogV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcCAqLywKIAkJCQkyRDNBNjVEOTFBN0MzQTFGMDBD
QUM2MzcgLyogV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmggKi8sCkBAIC05NjQzLDYgKzk2NDksNyBA
QAogCQkJCUM5OEM0OEFBMUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzlDRDQzOUQxQjRCMDI0RjAwMjM5RTMzIC8qIFdL
TWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQwRUU2MUJGNjc3
RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0MTFBOEREQjIwREREMUFDMDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNDA3NUZFMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVB
cnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MDAxMjRGRjAyNzAwNjhGMjBBIC8qIFdL
TXV0YWJsZURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwOUFFNUU5MTI1MjU3QzIw
MDI1ODI1RCAvKiBXS05hdGl2ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMzU4LDEzICsx
MDM2NSw5IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAo
CiAJCQkpOwotCQkJaW5wdXRGaWxlTGlzdFBhdGhzID0gKAotCQkJKTsKIAkJCWlucHV0UGF0aHMg
PSAoCiAJCQkpOwogCQkJbmFtZSA9ICJVbmxvY2sga2V5Y2hhaW4iOwotCQkJb3V0cHV0RmlsZUxp
c3RQYXRocyA9ICgKLQkJCSk7CiAJCQlvdXRwdXRQYXRocyA9ICgKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTEwMzc2LDEzICsxMDM3OSw5IEBA
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkpOwot
CQkJaW5wdXRGaWxlTGlzdFBhdGhzID0gKAotCQkJKTsKIAkJCWlucHV0UGF0aHMgPSAoCiAJCQkp
OwogCQkJbmFtZSA9ICJVbmxvY2sga2V5Y2hhaW4iOwotCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9
ICgKLQkJCSk7CiAJCQlvdXRwdXRQYXRocyA9ICgKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTEwMzk0LDEzICsxMDM5Myw5IEBACiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkpOwotCQkJaW5wdXRG
aWxlTGlzdFBhdGhzID0gKAotCQkJKTsKIAkJCWlucHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJbmFt
ZSA9ICJSZW1vdmUgc3RhbGUgZW50aXRsZW1lbnQgZmlsZSI7Ci0JCQlvdXRwdXRGaWxlTGlzdFBh
dGhzID0gKAotCQkJKTsKIAkJCW91dHB1dFBhdGhzID0gKAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTA0MTIsMTMgKzEwNDA3LDkgQEAKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCSk7Ci0JCQlp
bnB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJaW5wdXRQYXRocyA9ICgKIAkJCSk7CiAJ
CQluYW1lID0gIlJlbW92ZSBzdGFsZSBlbnRpdGxlbWVudCBmaWxlIjsKLQkJCW91dHB1dEZpbGVM
aXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJb3V0cHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xMDQzMCwxNCArMTA0MjEsMTAg
QEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCSk7
Ci0JCQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJaW5wdXRQYXRocyA9ICgKIAkJ
CQkiJChURU1QX0ZJTEVfRElSKS8kKEZVTExfUFJPRFVDVF9OQU1FKS54Y2VudCIsCiAJCQkpOwog
CQkJbmFtZSA9ICJQcm9jZXNzIFdlYkNvbnRlbnQgZW50aXRsZW1lbnRzIjsKLQkJCW91dHB1dEZp
bGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJb3V0cHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xMDQ0OSwxNCArMTA0MzYs
MTAgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJ
CSk7Ci0JCQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJaW5wdXRQYXRocyA9ICgK
IAkJCQkiJChURU1QX0ZJTEVfRElSKS8kKEZVTExfUFJPRFVDVF9OQU1FKS54Y2VudCIsCiAJCQkp
OwogCQkJbmFtZSA9ICJQcm9jZXNzIFdlYkNvbnRlbnQgZW50aXRsZW1lbnRzIjsKLQkJCW91dHB1
dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJb3V0cHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xMTQ2NSw2ICsxMTQ0
OCw3IEBACiAJCQkJQzk4QzQ4QTkxQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM5Q0Q0MzlFMUI0QjAyNTMwMDIzOUUz
MyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjQw
RUU1MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnMubW0gaW4gU291cmNl
cyAqLywKKwkJCQk0MTFBOEREQzIwREREMjNGMDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1RkQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0
YWJsZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUZGMTI0RkYwMjcwMDY4RjIw
QSAvKiBXS011dGFibGVEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNUIxQzUw
MTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA4ZmE4NmFkMjYzNDIxNjgzMzAy
MTU1OGY0NzZmN2UwMGJlYTA0NjEyLi4wMDY2ZjExMzY5OTY0NGQ2NmUyNzhlM2VmM2QyOWU4MTQy
ZTUwMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMDEs
NiArMTAxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9NZW1vcnlSZWxlYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CkBAIC0xNjkwLDQgKzE2
OTEsMjYgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRTY3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFdlYkNv
cmU6OlNjcmVlblByb3BlcnRpZXMmIHByb3BlcnRpZXMKIH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKK3ZvaWQgV2ViUHJvY2Vzczo6YWRkTW9ja01lZGlhRGV2aWNlKGNvbnN0
IFdlYkNvcmU6Ok1vY2tNZWRpYURldmljZSYgZGV2aWNlKQoreworICAgIE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjphZGREZXZpY2UoZGV2aWNlKTsKK30KKwordm9pZCBXZWJQcm9jZXNz
OjpjbGVhck1vY2tNZWRpYURldmljZXMoKQoreworICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpzZXREZXZpY2VzKHsgfSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlTW9j
a01lZGlhRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKQoreworICAgIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpyZW1vdmVEZXZpY2UocGVyc2lzdGVudElkKTsKK30KKwor
dm9pZCBXZWJQcm9jZXNzOjpyZXNldE1vY2tNZWRpYURldmljZXMoKQoreworICAgIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpyZXNldERldmljZXMoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGI4NTIw
YWNkMmJkODNjNDkxNTcxM2ZkNTQzNDBlZmViNDU2ZGNlZmIuLjg4Y2MyMWY5ZjUxMDk4MGIwMDZm
NWNlNzgyNjI4NDM1YWY2YWMyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aApAQCAtNjksNiArNjksNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBVc2VyR2Vz
dHVyZVRva2VuOwogc3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsKIHN0cnVjdCBNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0czsKK3N0cnVjdCBNb2NrTWVkaWFEZXZpY2U7CiBzdHJ1Y3QgUGx1Z2lu
SW5mbzsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1Y3QgU291cE5ldHdvcmtQcm94
eVNldHRpbmdzOwpAQCAtMzU5LDYgKzM2MCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcFJ1
bkxvb3AoKSBvdmVycmlkZTsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICB2b2lkIGFkZE1vY2tNZWRpYURldmljZShjb25zdCBXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2Um
KTsKKyAgICB2b2lkIGNsZWFyTW9ja01lZGlhRGV2aWNlcygpOworICAgIHZvaWQgcmVtb3ZlTW9j
a01lZGlhRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKTsKKyAgICB2b2lkIHJlc2V0
TW9ja01lZGlhRGV2aWNlcygpOworI2VuZGlmCisKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7CiAK
ICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1YWI1MjJiZTM5MTM0ODgxMWI2ZGFh
MzdjNzkzYzlhMGM0Zjc5ODI3Li4wZGI4YmQ5NDNiZWVkODM1MzI5MmM5MGNkYzE4ZWE2YzI3YzE1
MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtMTM5LDQgKzEzOSwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJl
Y2VpdmVyIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTZXRNZWRpYU1JTUVUeXBlcyhWZWN0
b3I8U3RyaW5nPiB0eXBlcykKICNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICBBZGRNb2NrTWVkaWFEZXZpY2Uoc3RydWN0IFdlYkNvcmU6Ok1vY2tNZWRpYURldmljZSBkZXZp
Y2UpOworICAgIENsZWFyTW9ja01lZGlhRGV2aWNlcygpOworICAgIFJlbW92ZU1vY2tNZWRpYURl
dmljZShTdHJpbmcgcGVyc2lzdGVudElkKTsKKyAgICBSZXNldE1vY2tNZWRpYURldmljZXMoKTsK
KyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDA4NmViN2VlOTY4Yjg0YzQyMzYzYjYzMGZmMTQ0YTQ4NDhiZTM1MDUuLmMyMjcwNDc4
MTQ3NWZlM2NhNWUzNDE3Mzk4ODlhNjE2YTNiNTZlZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxOC0wNi0yMyAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEFQSSB0byBj
b250cm9sIG1vY2sgbWVkaWEgZGV2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg2OTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgcnVubmVyIEFQSSB0byBjbGVhci9hZGQvcmVtb3Zl
L3Jlc2V0IG1vY2sgbWVkaWEgZGV2aWNlcy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6YWRkTW9ja01lZGlhRGV2aWNlKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6YWRkTW9ja0NhbWVyYURldmljZSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmFkZE1v
Y2tNaWNyb3Bob25lRGV2aWNlKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6YWRkTW9ja1Nj
cmVlbkRldmljZSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmNsZWFyTW9ja01lZGlhRGV2
aWNlcyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnJlbW92ZU1vY2tNZWRpYURldmljZSk6
CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnJlc2V0TW9ja01lZGlhRGV2aWNlcyk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjphZGRNb2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6Y2xlYXJNb2NrTWVkaWFEZXZpY2VzKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnJlbW92ZU1vY2tNZWRpYURldmljZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpyZXNldE1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE4LTA2LTIzICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtXVEZdIEFkZCB1c2Vy
LWRlZmluZWQgbGl0ZXJhbCBmb3IgQVNDSUlMaXRlcmFsCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bAppbmRleCA3ZTc2NTljYzNiZmZjZTBhYTg3NmRkZGM5ZjAyZDA0OTc2YTNkYjlmLi4xNzkxNjY4
MTI3YTY2NjA3NzJjYTE5MWMwNTgzOWQ2Y2MwOGYzOTY0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKQEAgLTMzNiw0ICszMzYsMTEgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZv
aWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4ob2JqZWN0IGNhbGxiYWNrKTsKIAogICAgIHZv
aWQgaW5zdGFsbEZha2VIZWx2ZXRpY2EoRE9NU3RyaW5nIGNvbmZpZ3VyYXRpb24pOworCisgICAg
dm9pZCBhZGRNb2NrQ2FtZXJhRGV2aWNlKERPTVN0cmluZyBwZXJzaXN0ZW50SWQsIERPTVN0cmlu
ZyBsYWJlbCk7CisgICAgdm9pZCBhZGRNb2NrTWljcm9waG9uZURldmljZShET01TdHJpbmcgcGVy
c2lzdGVudElkLCBET01TdHJpbmcgbGFiZWwpOworICAgIHZvaWQgYWRkTW9ja1NjcmVlbkRldmlj
ZShET01TdHJpbmcgcGVyc2lzdGVudElkLCBET01TdHJpbmcgbGFiZWwpOworICAgIHZvaWQgY2xl
YXJNb2NrTWVkaWFEZXZpY2VzKCk7CisgICAgdm9pZCByZW1vdmVNb2NrTWVkaWFEZXZpY2UoRE9N
U3RyaW5nIHBlcnNpc3RlbnRJZCk7CisgICAgdm9pZCByZXNldE1vY2tNZWRpYURldmljZXMoKTsK
IH07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAppbmRleCAyODMxYTg3Yjk3MTUwMjc5ODUzNDAxOTQzZGRjNGY5ZjMyYTYzY2My
Li45NWFhZWY0Y2RhMGY4OGMyOGExZGY4ZTNlZmEyYzU1MWVhN2I3M2Q4IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAg
LTE5NzEsNiArMTk3MSw3MSBAQCB2b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlQWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFjayhWZWN0b3I8U3RyaW5nPiYgZAogICAgIGNhbGxUZXN0
UnVubmVyQ2FsbGJhY2soQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0lELCAxLCAmcmVz
dWx0KTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjphZGRNb2NrTWVkaWFEZXZpY2UoSlNTdHJpbmdS
ZWYgcGVyc2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJlbCwgY29uc3QgY2hhciogdHlwZSkKK3sK
KyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOworICAgIFZlY3RvcjxX
S1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CisKKyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQZXJzaXN0ZW50SUQiKSB9KTsKKyAg
ICB2YWx1ZXMuYXBwZW5kKHRvV0socGVyc2lzdGVudElkKSk7CisKKyAgICBrZXlzLmFwcGVuZCh7
IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJMYWJlbCIpIH0pOworICAg
IHZhbHVlcy5hcHBlbmQodG9XSyhsYWJlbCkpOworCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVHlwZSIpIH0pOworICAgIHZhbHVlcy5h
cHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh0eXBlKSB9KTsK
KworICAgIFZlY3RvcjxXS1N0cmluZ1JlZj4gcmF3S2V5czsKKyAgICBWZWN0b3I8V0tUeXBlUmVm
PiByYXdWYWx1ZXM7CisgICAgcmF3S2V5cy5yZXNpemUoa2V5cy5zaXplKCkpOworICAgIHJhd1Zh
bHVlcy5yZXNpemUodmFsdWVzLnNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7
CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisKKyAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkFkZE1vY2tNZWRpYURldmljZSIpKTsKKyAgICBXS1JldGFpblB0
cjxXS0RpY3Rpb25hcnlSZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLRGljdGlvbmFyeUNyZWF0
ZShyYXdLZXlzLmRhdGEoKSwgcmF3VmFsdWVzLmRhdGEoKSwgcmF3S2V5cy5zaXplKCkpKTsKKwor
ICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVs
bHB0cik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6YWRkTW9ja0NhbWVyYURldmljZShKU1N0cmlu
Z1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsKQoreworICAgIGFkZE1vY2tNZWRp
YURldmljZShwZXJzaXN0ZW50SWQsIGxhYmVsLCAiY2FtZXJhIik7Cit9CisKK3ZvaWQgVGVzdFJ1
bm5lcjo6YWRkTW9ja01pY3JvcGhvbmVEZXZpY2UoSlNTdHJpbmdSZWYgcGVyc2lzdGVudElkLCBK
U1N0cmluZ1JlZiBsYWJlbCkKK3sKKyAgICBhZGRNb2NrTWVkaWFEZXZpY2UocGVyc2lzdGVudElk
LCBsYWJlbCwgIm1pY3JvcGhvbmUiKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjphZGRNb2NrU2Ny
ZWVuRGV2aWNlKEpTU3RyaW5nUmVmIHBlcnNpc3RlbnRJZCwgSlNTdHJpbmdSZWYgbGFiZWwpCit7
CisgICAgYWRkTW9ja01lZGlhRGV2aWNlKHBlcnNpc3RlbnRJZCwgbGFiZWwsICJzY3JlZW4iKTsK
K30KKwordm9pZCBUZXN0UnVubmVyOjpjbGVhck1vY2tNZWRpYURldmljZXMoKQoreworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiQ2xlYXJNb2NrTWVkaWFEZXZpY2VzIikpOworICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBUZXN0
UnVubmVyOjpyZW1vdmVNb2NrTWVkaWFEZXZpY2UoSlNTdHJpbmdSZWYgcGVyc2lzdGVudElkKQor
eworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUmVtb3ZlTW9ja01lZGlhRGV2aWNlIikpOworICAg
IFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gbWVzc2FnZUJvZHkodG9XSyhwZXJzaXN0ZW50SWQpKTsK
KworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwg
bnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cmVzZXRNb2NrTWVkaWFEZXZpY2VzKCkK
K3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlJlc2V0TW9ja01lZGlhRGV2aWNlcyIpKTsKKyAg
ICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisK
ICNpZiBQTEFURk9STShNQUMpCiB2b2lkIFRlc3RSdW5uZXI6OmNvbm5lY3RNb2NrR2FtZXBhZCh1
bnNpZ25lZCBpbmRleCkKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggZjI5MDFiYzYyZTYyMTBmNDA3MWYyODdhNDMyZWZi
MTdlYjNjOWQ2OS4uNzg5YmEyMzAyMzY4MzA5Y2EwOTlhMWVmYjc0NTdlMTdhMjUzMjZmMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKQEAgLTQ0Niw2ICs0NDYsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcEFsbEhUVFBSZWRp
cmVjdGVkUmVzcG9uc2VIZWFkZXJzKCkgeyBtX2R1bXBBbGxIVFRQUmVkaXJlY3RlZFJlc3BvbnNl
SGVhZGVycyA9IHRydWU7IH0KICAgICBib29sIHNob3VsZER1bXBBbGxIVFRQUmVkaXJlY3RlZFJl
c3BvbnNlSGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEFsbEhUVFBSZWRpcmVjdGVkUmVz
cG9uc2VIZWFkZXJzOyB9CiAKKyAgICB2b2lkIGFkZE1vY2tDYW1lcmFEZXZpY2UoSlNTdHJpbmdS
ZWYgcGVyc2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJlbCk7CisgICAgdm9pZCBhZGRNb2NrTWlj
cm9waG9uZURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVs
KTsKKyAgICB2b2lkIGFkZE1vY2tTY3JlZW5EZXZpY2UoSlNTdHJpbmdSZWYgcGVyc2lzdGVudElk
LCBKU1N0cmluZ1JlZiBsYWJlbCk7CisgICAgdm9pZCBjbGVhck1vY2tNZWRpYURldmljZXMoKTsK
KyAgICB2b2lkIHJlbW92ZU1vY2tNZWRpYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQp
OworICAgIHZvaWQgcmVzZXRNb2NrTWVkaWFEZXZpY2VzKCk7CisKIHByaXZhdGU6CiAgICAgVGVz
dFJ1bm5lcigpOwogCkBAIC00NTUsNiArNDYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldER1
bXBQaXhlbHMoYm9vbCk7CiAgICAgdm9pZCBzZXRXYWl0VW50aWxEb25lKGJvb2wpOwogCisgICAg
dm9pZCBhZGRNb2NrTWVkaWFEZXZpY2UoSlNTdHJpbmdSZWYgcGVyc2lzdGVudElkLCBKU1N0cmlu
Z1JlZiBsYWJlbCwgY29uc3QgY2hhciogdHlwZSk7CisKICAgICBXS1JldGFpblB0cjxXS1VSTFJl
Zj4gbV90ZXN0VVJMOyAvLyBTZXQgYnkgSW5qZWN0ZWRCdW5kbGVQYWdlIG9uY2UgcHJvdmlzaW9u
YWwgbG9hZCBzdGFydHMuCiAKICAgICBib29sIG1fc2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9z
aXRpb25zOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBi
YTg1MTg5NTQ5ZGQzNzUwOWViM2UwMGU4MzczODE2ZTM4MGYzYzNhLi4zNzdjY2ZlMmMzZTYwOTZl
ZGJhYWVmYzJhZmE3NjQ4ZDAzZGU3NjQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS0ZyYW1l
SGFuZGxlUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLRnJhbWVJbmZvUmVmLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0L1dLSWNvbkRhdGFiYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLTW9ja01lZGlh
RGV2aWNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTmF2aWdhdGlvblJlc3BvbnNlUmVmLmg+CiAj
aW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90
aWZpY2F0aW9uTWFuYWdlci5oPgpAQCAtMjg2Niw2ICsyODY3LDI2IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKICAgICBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShkYXRhU3RvcmUpOwogfQog
Cit2b2lkIFRlc3RDb250cm9sbGVyOjphZGRNb2NrTWVkaWFEZXZpY2UoV0tTdHJpbmdSZWYgcGVy
c2lzdGVudElELCBXS1N0cmluZ1JlZiBsYWJlbCwgV0tTdHJpbmdSZWYgdHlwZSkKK3sKKyAgICBX
S0FkZE1vY2tNZWRpYURldmljZShwbGF0Zm9ybUNvbnRleHQoKSwgcGVyc2lzdGVudElELCBsYWJl
bCwgdHlwZSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyTW9ja01lZGlhRGV2aWNl
cygpCit7CisgICAgV0tDbGVhck1vY2tNZWRpYURldmljZXMocGxhdGZvcm1Db250ZXh0KCkpOwor
fQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpyZW1vdmVNb2NrTWVkaWFEZXZpY2UoV0tTdHJpbmdS
ZWYgcGVyc2lzdGVudElEKQoreworICAgIFdLUmVtb3ZlTW9ja01lZGlhRGV2aWNlKHBsYXRmb3Jt
Q29udGV4dCgpLCBwZXJzaXN0ZW50SUQpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNl
dE1vY2tNZWRpYURldmljZXMoKQoreworICAgIFdLUmVzZXRNb2NrTWVkaWFEZXZpY2VzKHBsYXRm
b3JtQ29udGV4dCgpKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtQWRkVGVzdE9wdGlvbnMoVGVzdE9wdGlvbnMmKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGYzMzc4MzQ0M2VmNjJhYjBj
ZGRmODg5OGFhZTA3NjdhZGRlMWNiMjEuLmE0ODEwM2ZhZDdhNTM4NjA1Zjk5MTcyZWRhMmNkMTA1
OWMxNzQ0OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTIx
Myw2ICsyMTMsMTEgQEAgcHVibGljOgogICAgIGJvb2wgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb247IH0KICAgICB2b2lkIGNsZWFyRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCkgeyBtX2RpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbiA9IGZhbHNlOyB9CiAK
KyAgICB2b2lkIGFkZE1vY2tNZWRpYURldmljZShXS1N0cmluZ1JlZiBwZXJzaXN0ZW50SUQsIFdL
U3RyaW5nUmVmIGxhYmVsLCBXS1N0cmluZ1JlZiB0eXBlKTsKKyAgICB2b2lkIGNsZWFyTW9ja01l
ZGlhRGV2aWNlcygpOworICAgIHZvaWQgcmVtb3ZlTW9ja01lZGlhRGV2aWNlKFdLU3RyaW5nUmVm
IHBlcnNpc3RlbnRJRCk7CisgICAgdm9pZCByZXNldE1vY2tNZWRpYURldmljZXMoKTsKKwogcHJp
dmF0ZToKICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBh
Z2VDb25maWd1cmF0aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYpOwogICAgIFdLUmV0YWlu
UHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRp
b24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5k
ZXggNTI0NzVkZmU0NzliMDYzMjE2NDJjYWFkM2U5MDNkMDNhNzY5NWU5Yi4uMDVjM2NlNjFhOGJl
ZjNlODk1NjlmYzU2YmMzYzk3YjJkNzg4ODc2MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKQEAgLTkxNiw2ICs5MTYsMzkgQEAgV0tSZXRhaW5QdHI8V0tUeXBl
UmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJBZGRNb2NrTWVkaWFEZXZpY2UiKSkg
eworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFy
eUdldFR5cGVJRCgpKTsKKworICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0
aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CisgICAg
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwZXJzaXN0ZW50SURLZXkoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBlcnNpc3RlbnRJRCIpKTsKKyAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGxhYmVsS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJMYWJlbCIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHR5cGVLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlR5cGUiKSk7
CisKKyAgICAgICAgYXV0byBwZXJzaXN0ZW50SUQgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4o
V0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHBlcnNpc3Rl
bnRJREtleS5nZXQoKSkpOworICAgICAgICBhdXRvIGxhYmVsID0gc3RhdGljX2Nhc3Q8V0tTdHJp
bmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBs
YWJlbEtleS5nZXQoKSkpOworICAgICAgICBhdXRvIHR5cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmlu
Z1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHR5
cGVLZXkuZ2V0KCkpKTsKKworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuYWRk
TW9ja01lZGlhRGV2aWNlKHBlcnNpc3RlbnRJRCwgbGFiZWwsIHR5cGUpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIkNsZWFyTW9ja01lZGlhRGV2aWNlcyIpKSB7CisgICAgICAgIFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5jbGVhck1vY2tNZWRpYURldmljZXMoKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJSZW1vdmVNb2NrTWVkaWFEZXZpY2UiKSkgeworICAgICAgICBX
S1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2Fn
ZUJvZHkpOworCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5yZW1vdmVNb2Nr
TWVkaWFEZXZpY2UocGVyc2lzdGVudElkKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJS
ZXNldE1vY2tNZWRpYURldmljZXMiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkucmVzZXRNb2NrTWVkaWFEZXZpY2VzKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNvbm5lY3RNb2NrR2FtZXBhZCIpKSB7CiAgICAgICAgIEFT
U0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tVSW50NjRHZXRUeXBlSUQoKSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggN2JlNTFlMTgwOWRlMjhjNGNhOGZhODhlN2Y0YzAxYjNmNTQxMzYwMC4uNTg4ZDU4YTI5
Mzc0MmQwMTQ5ZThjNGFiZjM5NjA5NDQ1YTA5NTg3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDE4LTA2LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgQVBJIHRvIGNvbnRyb2wgbW9jayBtZWRpYSBkZXZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY5NTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNo
YW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0
cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbDogQWRkZWQuCisKIDIwMTgtMDYtMjMgIFBl
ciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIExheW91dCBUZXN0
IGltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tcmVhZHkuaHRt
bCBpcyBmYWlsaW5nIG9uIFdpbmRvd3MuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjRjNmI2MTA3NmZhYWEzZGU0ZjgxNjhmNzk2OWNmMTBmNjA3YTY5ZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1l
dmVudC0yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyAnZGV2aWNlY2hhbmdl
JyBldmVudCBmaXJlZCB3aGVuIGRldmljZSBsaXN0IGNoYW5nZXMgCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQzZDVmMmJkZmVkZDkxZWNiZDIzZmM3MWI4MzU3MWUwNzA3YjI1NWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2Ut
ZXZlbnQtMi5odG1sCkBAIC0wLDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlRlc3RpbmcgbG9j
YWwgYXVkaW8gY2FwdHVyZSBwbGF5YmFjayBjYXVzZXMgInBsYXlpbmciIGV2ZW50IHRvIGZpcmU8
L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgbGV0IGRldmljZUlkcyA9IFtd
OworICAgIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgICAgICBpZiAoIXdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJ0ZXN0IHJl
cXVpcmVzIGludGVybmFsIEFQSSIpOworCisgICAgICAgIHRlc3QuYWRkX2NsZWFudXAoKCkgPT4g
eyB0ZXN0UnVubmVyLnJlc2V0TW9ja01lZGlhRGV2aWNlcygpOyB9KTsKKworICAgICAgICB0ZXN0
UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisKKyAgICAgICAgYXdhaXQgbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBhdWRpbzp0cnVlLCB2aWRlbzp0cnVl
IH0pOworCisgICAgICAgIGxldCBkZXZpY2VzID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5lbnVtZXJhdGVEZXZpY2VzKCk7CisKKyAgICAgICAgYXNzZXJ0X3RydWUoISFkZXZpY2VzLmxl
bmd0aCwgImNoZWNrIHRoZXJlIGFyZSBzb21lIGRldmljZXMiKTsKKworICAgICAgICB0ZXN0UnVu
bmVyLmNsZWFyTW9ja01lZGlhRGV2aWNlcygpOworCisgICAgICAgIGRldmljZXMgPSBhd2FpdCBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKTsKKyAgICAgICAgYXNzZXJ0
X2ZhbHNlKCEhZGV2aWNlcy5sZW5ndGgsICJjaGVjayB0aGVyZSBhcmUgbm8gbW9yZSBkZXZpY2Vz
Iik7CisKKyAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewor
ICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5nZSA9IHJlc29s
dmU7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25z
b2xlLmxvZygiZXZlbnQgMSB0YWtpbmcgYSBsb25nIHRpbWUiKTsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CisgICAgICAgICAgICB9LCA1MDAwKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
YWRkTW9ja0NhbWVyYURldmljZSgiaWQxIiwgIm15IGNhbWVyYSIpOworICAgICAgICB9KTsKKyAg
ICAgICAgZGV2aWNlcyA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2
aWNlcygpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRldmljZXNbMF0ua2luZCwgInZpZGVvaW5w
dXQiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXZpY2VzWzBdLmxhYmVsLCAibXkgY2FtZXJh
Iik7CisKKyAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewor
ICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5nZSA9IHJlc29s
dmU7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25z
b2xlLmxvZygiZXZlbnQgMiB0YWtpbmcgYSBsb25nIHRpbWUiKTsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CisgICAgICAgICAgICB9LCA1MDAwKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
YWRkTW9ja01pY3JvcGhvbmVEZXZpY2UoImlkMiIsICJteSBtaWMiKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIGRldmljZXMgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURl
dmljZXMoKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXZpY2VzWzBdLmtpbmQsICJhdWRpb2lu
cHV0Iik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZGV2aWNlc1swXS5sYWJlbCwgIm15IG1pYyIp
OworCisgICAgfSwgIidkZXZpY2VjaGFuZ2UnIGV2ZW50IGZpcmVkIHdoZW4gZGV2aWNlIGxpc3Qg
Y2hhbmdlcyIpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343508</attachid>
            <date>2018-06-25 10:17:11 -0700</date>
            <delta_ts>2018-06-25 11:04:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-186958-20180625101710.patch</filename>
            <type>text/plain</type>
            <size>77505</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2MxZDMzNDdiZjg1YjI0
ZTE3Y2I5ODliMmE5MmY4ZmQ1N2NmNDVjYi4uZmI5ZWVhZmEzMTA2YmVhMzA5N2UzZGFjMjNjMTcw
MmZiYzU5MTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE4LTA2LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGNvbnRy
b2wgbW9jayBtZWRpYSBkZXZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODY5NTgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24u
CisKKyAgICAgICAgUmVmYWN0b3IgY29kZSB0byBpbnRyb2R1Y2UgYSBNb2NrRGV2aWNlIHN0cnVj
dHVyZSB0aGF0IGNhbiBiZSB1c2VkIGluIG11bHRpcGxlIHByb2Nlc3Nlcy4KKyAgICAgICAgVXBk
YXRlIG1vY2sgc291cmNlcyBhbmQgY2VudGVyIHRvIHVzZSBNb2NrRGV2aWNlLgorICAgICAgICBB
ZGQgQVBJIHRvIHVwZGF0ZSBtb2NrIG1lZGlhIGRldmljZXMuCisKKyAgICAgICAgTWFrZSBNZWRp
YURldmljZXMgYW4gQWN0aXZlRE9NT2JqZWN0IHNvIHRoYXQgaXQgZG9lcyBub3QgZ2V0IGNvbGxl
Y3RlZCB3aGVuIG9uZGV2aWNlY2hhbmdlIGlzIHNldC4KKworICAgICAgICAgVGVzdDogZmFzdC9t
ZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbAorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFE
ZXZpY2VzOjpNZWRpYURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6c2NoZWR1bGVkRXZlbnRUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6aGFzUGVuZGluZ0FjdGl2
aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6YWN0aXZlRE9NT2Jq
ZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OmNhblN1c3Bl
bmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuaWRsOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWljcm9waG9uZVByb3BlcnRpZXM6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWljcm9waG9uZVByb3BlcnRpZXM6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ2FtZXJhUHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDYW1lcmFQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhRGV2aWNlOjppc01pY3JvcGhvbmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhRGV2aWNlOjppc0NhbWVyYSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrTWVkaWFEZXZpY2U6OmlzRGlzcGxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrTWVkaWFEZXZpY2U6OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlh
RGV2aWNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRGV2aWNl
OjpkZWNvZGVNb2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRGV2
aWNlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0RGV2aWNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpkZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmRldmljZU1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkZXZpY2VMaXN0Rm9yRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjcmVhdGVDYXB0dXJlRGV2aWNlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldERldmljZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZERldmljZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlRGV2aWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjYXB0dXJlRGV2aWNlV2l0aFBl
cnNpc3RlbnRJRCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6
YXVkaW9EZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNl
Ojp2aWRlb0RldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmRpc3BsYXlEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlh
U291cmNlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6aW5pdGlhbGl6ZVNldHRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5ncyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydGVkQ29u
c3RyYWludHMpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpkZXZpY2Ug
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2V0TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZpY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphZGREZXZp
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJl
bW92ZURldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1v
Y2tSZWFsdGltZVZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6Om1vY2tDYW1lcmEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Om1vY2tTY3JlZW4gY29uc3QpOgorCiAyMDE4LTA2LTI1
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEF1dG9U
YWJsZUxheW91dCB3YXN0ZXMgNTJLQiBvZiBWZWN0b3IgY2FwYWNpdHkgb24gbnl0aW1lcy5jb20K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYjVlMmE0OWI1NTk3MjlkOWZhNWNkZThjOTRjMGEwYjQ5MTExZWMyMC4uMmY0
NjM4ODE0ODliODhjMWY2Mjk1YWI2MjRjNzMzM2IzZWM1Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNiBAQAorMjAxOC0wNi0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIEFQSSB0byBjb250cm9sIG1vY2sgbWVkaWEgZGV2aWNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2OTU4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkZCBBUEkgdG8gY2xlYXIsIHNl
dCwgcmVtb3ZlIGFuZCByZXNldCBtb2NrIG1lZGlhIGRldmljZXMuCisgICAgICAgIFRoZSBtb2Nr
IG1lZGlhIGNlbnRlciBvZiBVSVByb2Nlc3MgYW5kIGFsbCBXZWJQcm9jZXNzZXMgYXJlIHVwZGF0
ZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tNb2NrTWVkaWFEZXZpY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKHR5cGVGcm9tU3RyaW5n
KToKKyAgICAgICAgKFdLQWRkTW9ja01lZGlhRGV2aWNlKToKKyAgICAgICAgKFdLQ2xlYXJNb2Nr
TWVkaWFEZXZpY2VzKToKKyAgICAgICAgKFdLUmVtb3ZlTW9ja01lZGlhRGV2aWNlKToKKyAgICAg
ICAgKFdLUmVzZXRNb2NrTWVkaWFEZXZpY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tNb2NrTWVkaWFEZXZpY2UuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFkZE1vY2tNZWRp
YURldmljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjbGVhck1vY2tNZWRp
YURldmljZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTW9ja01l
ZGlhRGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc2V0TW9ja01l
ZGlhRGV2aWNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkTW9j
a01lZGlhRGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2xlYXJNb2NrTWVk
aWFEZXZpY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlTW9ja01lZGlh
RGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzZXRNb2NrTWVkaWFEZXZp
Y2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTgtMDYtMjMgIEJyaWFuIEJ1cmcg
IDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gV2ViIEF1dG9tYXRpb246IGluY2x1
ZGUgY29ycmVjdCBrZXkgY29kZSB3aXRoIHN5bnRoZXNpemVkIE5TRXZlbnRzIHVzZWQgZm9yIGtl
eXN0cm9rZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmNwcAppbmRleCBhZjNiZjEzMjI5NDk3YzA5OTU1NDYyNmNhMjM4OWVjYjZhY2Ex
YTg1Li5iZTkwNTFjOTM5OTRkNWJiYzEwYTBkOGFhNjk0MTliMTcxNGFlZWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCkBA
IC00Nyw4ICs0Nyw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBNZWRpYURldmlj
ZXM6Ok1lZGlhRGV2aWNlcyhEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50
KQogICAgICwgbV9zY2hlZHVsZWRFdmVudFRpbWVyKCp0aGlzLCAmTWVkaWFEZXZpY2VzOjpzY2hl
ZHVsZWRFdmVudFRpbWVyRmlyZWQpCisgICAgLCBtX2V2ZW50TmFtZXMoZXZlbnROYW1lcygpKQog
ewogICAgIG1fZGV2aWNlQ2hhbmdlZFRva2VuID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
c2luZ2xldG9uKCkuYWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHRoaXNdKCkgewogCkBAIC02MSwxNiArNjIsMjAgQEAgaW5saW5lIE1lZGlh
RGV2aWNlczo6TWVkaWFEZXZpY2VzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgICAgIG1f
c2NoZWR1bGVkRXZlbnRUaW1lci5zdGFydE9uZVNob3QoU2Vjb25kcyhyYW5kb21OdW1iZXIoKSAv
IDIpKTsKICAgICB9KTsKIAorICAgIHN1c3BlbmRJZk5lZWRlZCgpOworCiAgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhRGV2aWNlczo6RGlzcGxheUNhcHR1cmVTdXJm
YWNlVHlwZTo6TW9uaXRvcikgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6TW9uaXRvciksICJNZWRpYURldmljZXM6
OkRpc3BsYXlDYXB0dXJlU3VyZmFjZVR5cGU6Ok1vbml0b3IgaXMgbm90IGVxdWFsIHRvIFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25pdG9yIGFzIGV4
cGVjdGVkIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhRGV2
aWNlczo6RGlzcGxheUNhcHR1cmVTdXJmYWNlVHlwZTo6V2luZG93KSA9PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpX
aW5kb3cpLCAiTWVkaWFEZXZpY2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VUeXBlOjpXaW5kb3cg
aXMgbm90IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpX
aW5kb3cgYXMgZXhwZWN0ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVf
dD4oTWVkaWFEZXZpY2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VUeXBlOjpBcHBsaWNhdGlvbikg
PT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3Bs
YXlTdXJmYWNlVHlwZTo6QXBwbGljYXRpb24pLCAiTWVkaWFEZXZpY2VzOjpEaXNwbGF5Q2FwdHVy
ZVN1cmZhY2VUeXBlOjpBcHBsaWNhdGlvbiBpcyBub3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6OkFwcGxpY2F0aW9uIGFzIGV4cGVjdGVkIik7CiAgICAg
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhRGV2aWNlczo6RGlzcGxheUNh
cHR1cmVTdXJmYWNlVHlwZTo6QnJvd3NlcikgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6QnJvd3NlciksICJNZWRp
YURldmljZXM6OkRpc3BsYXlDYXB0dXJlU3VyZmFjZVR5cGU6OkJyb3dzZXIgaXMgbm90IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpCcm93c2VyIGFzIGV4
cGVjdGVkIik7CiB9CiAKLU1lZGlhRGV2aWNlczo6fk1lZGlhRGV2aWNlcygpCitNZWRpYURldmlj
ZXM6On5NZWRpYURldmljZXMoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgTWVkaWFEZXZpY2VzOjpzdG9w
KCkKIHsKICAgICBpZiAobV9kZXZpY2VDaGFuZ2VkVG9rZW4pCi0gICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnJlbW92ZURldmljZXNDaGFuZ2VkT2JzZXJ2ZXIo
bV9kZXZpY2VDaGFuZ2VkVG9rZW4udmFsdWUoKSk7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnNpbmdsZXRvbigpLnJlbW92ZURldmljZXNDaGFuZ2VkT2JzZXJ2ZXIobV9kZXZp
Y2VDaGFuZ2VkVG9rZW4pOwogfQogCiBSZWY8TWVkaWFEZXZpY2VzPiBNZWRpYURldmljZXM6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xNTcsNyArMTYyLDIzIEBAIE1lZGlhVHJhY2tT
dXBwb3J0ZWRDb25zdHJhaW50cyBNZWRpYURldmljZXM6OmdldFN1cHBvcnRlZENvbnN0cmFpbnRz
KCkKIAogdm9pZCBNZWRpYURldmljZXM6OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCgpCiB7Ci0g
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kZXZpY2VjaGFuZ2VF
dmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kZXZpY2Vj
aGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKK2Jvb2wgTWVkaWFEZXZpY2VzOjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdAoreworICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgJiYgaGFzRXZlbnRMaXN0ZW5lcnMobV9ldmVudE5hbWVzLmRldmljZWNoYW5nZUV2ZW50
KTsKK30KKworY29uc3QgY2hhciogTWVkaWFEZXZpY2VzOjphY3RpdmVET01PYmplY3ROYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gIk1lZGlhRGV2aWNlcyI7Cit9CisKK2Jvb2wgTWVkaWFEZXZp
Y2VzOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKaW5kZXggYWUzNWQ1ZTk0ZDBi
YTc2OTEwMTU0ZThkYzEwZWUzZGE4ZmY4NjA0ZS4uMDJkMWFlZjlkNmYzMTc4NjdhOTdmMTk1YmU5
MDYxNDg1OTU0OWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5oCkBAIC0zMyw2ICszMyw4IEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3Iu
aCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgpAQCAtNDksNyArNTEsNyBAQCBj
bGFzcyBNZWRpYVN0cmVhbTsKIAogc3RydWN0IE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50
czsKIAotY2xhc3MgTWVkaWFEZXZpY2VzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFEZXZpY2Vz
PiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhRGV2aWNlcz4geworY2xh
c3MgTWVkaWFEZXZpY2VzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFEZXZpY2VzPiwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxNZWRpYURldmljZXM+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PE1lZGlhRGV2aWNlcz4gY3JlYXRlKERvY3VtZW50Jik7CiAKQEAgLTg0LDE0ICs4NiwyMyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKTsKIAorICAgIGZy
aWVuZCBjbGFzcyBKU01lZGlhRGV2aWNlc093bmVyOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0
CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOworICAg
IHZvaWQgc3RvcCgpIGZpbmFsOworICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qg
ZmluYWw7CisKICAgICAvLyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLgotICAgIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gTWVkaWFEZXZpY2VzRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQotICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJp
ZGUgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYURldmljZXNFdmVudFRhcmdldEludGVy
ZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYo
KTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCiAg
ICAgVGltZXIgbV9zY2hlZHVsZWRFdmVudFRpbWVyOwotICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6RGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuPiBtX2Rldmlj
ZUNoYW5nZWRUb2tlbjsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpEZXZpY2VzQ2hh
bmdlZE9ic2VydmVyVG9rZW4gbV9kZXZpY2VDaGFuZ2VkVG9rZW47CisgICAgY29uc3QgRXZlbnRO
YW1lcyYgbV9ldmVudE5hbWVzOyAvLyBOZWVkIHRvIGNhY2hlIHRoaXMgc28gd2UgY2FuIHVzZSBp
dCBmcm9tIEdDIHRocmVhZHMuCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKaW5k
ZXggMzFhMDRkZTFkNDg0N2U1ZTc4MmM0YzQzOTMwNzFjMTMzMDljMmNkNC4uZDdiYTNlZDI0MWYy
MjNjMjc0YmU4YmIzN2IzNDZmZmVjZjM0NDNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbApAQCAtMzAsNiArMzAsNyBAQAog
CiAvLyBGSVhNRSAxNjk4NzE6IHNob3VsZCBiZSBzdWJjbGFzcyBvZiBFdmVudFRhcmdldAogWwor
ICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCiAgICAg
Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBNZWRpYURldmljZXMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIwNmM0
OTU3NDgzMWQwY2QyODAzMjZkNjZjYjZmMDI5NDNhYjc3YmYuLmY2ODM2YTZmODk5MzVkOGI3NWFl
N2U2MDA4MGMwM2U3MTY1MmZhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNjQsNiArMTA2NCw3IEBACiAJCTQxMzhEMzM1
MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVu
dENvbnRleHQuaCAqLzsgfTsKIAkJNDEzOEY4NTgxRDI1M0YwRTAwMUNCNjFFIC8qIEpTRE9NSXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MzhGODU2MUQyNTNFRUUwMDFDQjYxRSAvKiBKU0RPTUl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEzQzJDMzQxQkMyOUE4RjAwNzUy
MDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxM0MyQzMzMUJDMjlBN0IwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVj
dG9yLmggKi87IH07CisJCTQxM0NDRDRBMjBERTAzNEYwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZp
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0ND
RDQ4MjBERTAxM0MwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTNFMDA3OTFEQjBFNEYyMDAyMzQx
RDIgLyogTWVtb3J5UmVsZWFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDEzRTAwNzgxREIwRTRERTAwMjM0MUQyIC8qIE1lbW9yeVJlbGVhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTRCODIw
NTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyog
U3RydWN0dXJlZENsb25lLmggKi87IH07CiAJCTQxNERFREU3MUY5RkU5MUUwMDQ3QzQwRCAvKiBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTRERURFNTFGOUZFOTE1MDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC03MjAyLDYgKzcyMDMsNyBAQAogCQk0MTM4Rjg1NTFEMjUzRUVFMDAxQ0I2MUUgLyogSlNE
T01JdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RP
TUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzOEY4NTYxRDI1
M0VFRTAwMUNCNjFFIC8qIEpTRE9NSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNET01JdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTNDMkMzMzFCQzI5QTdCMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxM0NDRDQ4MjBERTAxM0MwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZp
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja01lZGlhRGV2aWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0UwMDc3MURCMEU0REUwMDIzNDFEMiAv
KiBNZW1vcnlSZWxlYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lbW9yeVJlbGVhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFMDA3
ODFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZW1vcnlSZWxlYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxM0UwMDdCMURCMEU3MDcwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlSZWxlYXNlQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODc3NCw2ICsxODc3Niw3IEBACiAJ
CQkJMDc3QjY0MTUxQjk1RjcwMzAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgg
Ki8sCiAJCQkJMDc3QjY0MTAxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNb2NrLmNwcCAqLywKIAkJCQkwNzdCNjQxMTFCOTRGMTJFMDAzRTlBRDUgLyogTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suaCAqLywKKwkJCQk0MTNDQ0Q0ODIwREUwMTNDMDA2NUEy
MUEgLyogTW9ja01lZGlhRGV2aWNlLmggKi8sCiAJCQkJMDdENkE0RjExQkVENUY4ODAwMTc0MTQ2
IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcCAqLywKIAkJCQkwN0Q2QTRGMjFCRUQ1Rjg4
MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCAqLywKIAkJCQkwN0Q2QTRFRDFC
RUNGMkQyMDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovLApAQCAtMjk0
MjMsNiArMjk0MjYsNyBAQAogCQkJCUNERjRCNzIwMUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RN
RmFjdG9yeS5pZGwgaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMg
LyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlB
NTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNDQ0Q0
QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVk
aWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Q2QTRGNDFCRUQ1Rjg4MDAx
NzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4IDBjNzI1Zjk4MDlkNmJlOTczOTNjY2IzM2RmZjdk
ODE5MTY1OThmOWQuLjYxZmYwZWFhZTU2NDkwNDcyM2M0Y2I3MDAyZjU1YjRmZTQ4ZDI5OTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKQEAgLTg4LDEzICs4OCwxNCBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuID0gdW5zaWduZWQ7CiAgICAg
RGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuIGFkZERldmljZXNDaGFuZ2VkT2JzZXJ2ZXIoc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlRGV2aWNlc0NoYW5nZWRPYnNl
cnZlcihEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4pOwotICAgIHZvaWQgY2FwdHVyZURldmlj
ZXNDaGFuZ2VkKCk7CiAKICAgICB2b2lkIHNldFZpZGVvQ2FwdHVyZVBhZ2VTdGF0ZShib29sLCBi
b29sKTsKIAogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIoKTsKIAor
ICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CisKICAgICBzdGF0aWMgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlciYgcGxhdGZvcm1DZW50ZXIoKTsKICAgICBSZWFsdGltZU1lZGlhU291
cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODgyZGJhZjEwZTdkNmFkYTA2NjU2Y2UxODcxY2QyMGVhNWI4NGU0YQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKQEAgLTAs
MCArMSwxODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJDYXB0dXJlRGV2aWNl
LmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0cnVjdCBNb2NrTWljcm9waG9uZVByb3BlcnRpZXMgeworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGVmYXVsdFNhbXBs
ZVJhdGUpOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPE1vY2tNaWNyb3Bob25lUHJvcGVydGllcz4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGRlZmF1bHRT
YW1wbGVSYXRlOworICAgICAgICBkZWNvZGVyID4+IGRlZmF1bHRTYW1wbGVSYXRlOworICAgICAg
ICBpZiAoIWRlZmF1bHRTYW1wbGVSYXRlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIE1vY2tNaWNyb3Bob25lUHJvcGVydGllcyB7ICpkZWZhdWx0U2Ft
cGxlUmF0ZSB9OworICAgIH0KKworICAgIGludCBkZWZhdWx0U2FtcGxlUmF0ZSB7IDQ0MTAwIH07
Cit9OworCisvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHByb3BlcnRpZXMgYW5kIHNl
cmlhbGl6YXRpb24gb2YgY29sb3JzLgorc3RydWN0IE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGRlZmF1bHRGcmFtZVJhdGU7Cisg
ICAgICAgIGVuY29kZXIgPDwgZmFjaW5nTW9kZUNhcGFiaWxpdHk7CisgICAgfQorCisgICAgdGVt
cGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0NhbWVy
YVByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGRlZmF1bHRGcmFtZVJhdGU7CisgICAgICAgIGRlY29kZXIgPj4g
ZGVmYXVsdEZyYW1lUmF0ZTsKKyAgICAgICAgaWYgKCFkZWZhdWx0RnJhbWVSYXRlKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlPiBmYWNpbmdNb2RlQ2FwYWJp
bGl0eTsKKyAgICAgICAgZGVjb2RlciA+PiBmYWNpbmdNb2RlQ2FwYWJpbGl0eTsKKyAgICAgICAg
aWYgKCFmYWNpbmdNb2RlQ2FwYWJpbGl0eSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICAgICAgcmV0dXJuIE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsgKmRlZmF1bHRGcmFt
ZVJhdGUsICpmYWNpbmdNb2RlQ2FwYWJpbGl0eSwgQ29sb3I6OmJsYWNrIH07CisgICAgfQorCisg
ICAgZG91YmxlIGRlZmF1bHRGcmFtZVJhdGUgeyAzMCB9OworICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGVDYXBhYmlsaXR5IHsgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlVzZXIgfTsKKyAgICBDb2xv
ciBmaWxsQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKK307CisKK3N0cnVjdCBNb2NrRGlzcGxheVBy
b3BlcnRpZXMgeworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgZGVmYXVs
dEZyYW1lUmF0ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrRGlzcGxheVByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRlZmF1bHRG
cmFtZVJhdGU7CisgICAgICAgIGRlY29kZXIgPj4gZGVmYXVsdEZyYW1lUmF0ZTsKKyAgICAgICAg
aWYgKCFkZWZhdWx0RnJhbWVSYXRlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgICAgICByZXR1cm4gTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgKmRlZmF1bHRGcmFtZVJh
dGUsIENvbG9yOjpsaWdodEdyYXkgfTsKKyAgICB9CisKKyAgICBkb3VibGUgZGVmYXVsdEZyYW1l
UmF0ZSB7IDMwIH07CisgICAgQ29sb3IgZmlsbENvbG9yIHsgQ29sb3I6OmxpZ2h0R3JheSB9Owor
fTsKKworc3RydWN0IE1vY2tNZWRpYURldmljZSB7CisgICAgYm9vbCBpc01pY3JvcGhvbmUoKSBj
b25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1vY2tNaWNyb3Bob25lUHJvcGVy
dGllcz4ocHJvcGVydGllcyk7IH0KKyAgICBib29sIGlzQ2FtZXJhKCkgY29uc3QgeyByZXR1cm4g
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNb2NrQ2FtZXJhUHJvcGVydGllcz4ocHJvcGVydGllcyk7
IH0KKyAgICBib29sIGlzRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihwcm9wZXJ0aWVzKTsgfQorCisgICAgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZSB0eXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc01p
Y3JvcGhvbmUoKSkKKyAgICAgICAgICAgIHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpNaWNyb3Bob25lOworICAgICAgICBpZiAoaXNDYW1lcmEoKSkKKyAgICAgICAgICAgIHJldHVy
biBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE7CisgICAgICAgIEFTU0VSVChpc0Rp
c3BsYXkoKSk7CisgICAgICAgIHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3Jl
ZW47CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBwZXJz
aXN0ZW50SWQ7CisgICAgICAgIGVuY29kZXIgPDwgbGFiZWw7CisgICAgICAgIHN3aXRjaE9uKHBy
b3BlcnRpZXMsIFsmXShjb25zdCBNb2NrTWljcm9waG9uZVByb3BlcnRpZXMmIHByb3BlcnRpZXMp
IHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgKHVpbnQ4X3QpMTsKKyAgICAgICAgICAgIGVuY29k
ZXIgPDwgcHJvcGVydGllczsKKyAgICAgICAgfSwgWyZdKGNvbnN0IE1vY2tDYW1lcmFQcm9wZXJ0
aWVzJiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8ICh1aW50OF90KTI7Cisg
ICAgICAgICAgICBlbmNvZGVyIDw8IHByb3BlcnRpZXM7CisgICAgICAgIH0sIFsmXShjb25zdCBN
b2NrRGlzcGxheVByb3BlcnRpZXMmIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGVuY29kZXIg
PDwgKHVpbnQ4X3QpMzsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcHJvcGVydGllczsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFByb3BlcnRpZXMsIHR5cGVu
YW1lIERlY29kZXI+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja01lZGlhRGV2aWNlPiBk
ZWNvZGVNb2NrTWVkaWFEZXZpY2UoRGVjb2RlciYgZGVjb2RlciwgU3RyaW5nJiYgcGVyc2lzdGVu
dElkLCBTdHJpbmcmJiBsYWJlbCkKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UHJvcGVy
dGllcz4gcHJvcGVydGllczsKKyAgICAgICAgZGVjb2RlciA+PiBwcm9wZXJ0aWVzOworICAgICAg
ICBpZiAoIXByb3BlcnRpZXMpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gTW9ja01lZGlhRGV2aWNlIHsgV1RGTW92ZShwZXJzaXN0ZW50SWQpLCBXVEZN
b3ZlKGxhYmVsKSwgV1RGTW92ZSgqcHJvcGVydGllcykgfTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrTWVkaWFEZXZp
Y2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IHBlcnNpc3RlbnRJZDsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50SWQ7
CisgICAgICAgIGlmICghcGVyc2lzdGVudElkKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbGFiZWw7CisgICAgICAgIGRl
Y29kZXIgPj4gbGFiZWw7CisgICAgICAgIGlmICghbGFiZWwpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gaW5kZXg7Cisg
ICAgICAgIGRlY29kZXIgPj4gaW5kZXg7CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHN3aXRjaCAoKmluZGV4KSB7CisgICAg
ICAgIGNhc2UgMToKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVNb2NrTWVkaWFEZXZpY2U8TW9j
a01pY3JvcGhvbmVQcm9wZXJ0aWVzPihkZWNvZGVyLCBXVEZNb3ZlKCpwZXJzaXN0ZW50SWQpLCBX
VEZNb3ZlKCpsYWJlbCkpOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXR1cm4gZGVj
b2RlTW9ja01lZGlhRGV2aWNlPE1vY2tDYW1lcmFQcm9wZXJ0aWVzPihkZWNvZGVyLCBXVEZNb3Zl
KCpwZXJzaXN0ZW50SWQpLCBXVEZNb3ZlKCpsYWJlbCkpOworICAgICAgICBjYXNlIDM6CisgICAg
ICAgICAgICByZXR1cm4gZGVjb2RlTW9ja01lZGlhRGV2aWNlPE1vY2tEaXNwbGF5UHJvcGVydGll
cz4oZGVjb2RlciwgV1RGTW92ZSgqcGVyc2lzdGVudElkKSwgV1RGTW92ZSgqbGFiZWwpKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIFN0cmlu
ZyBwZXJzaXN0ZW50SWQ7CisgICAgU3RyaW5nIGxhYmVsOworICAgIFZhcmlhbnQ8TW9ja01pY3Jv
cGhvbmVQcm9wZXJ0aWVzLCBNb2NrQ2FtZXJhUHJvcGVydGllcywgTW9ja0Rpc3BsYXlQcm9wZXJ0
aWVzPiBwcm9wZXJ0aWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKaW5kZXggOWM2MDI0ZTUzYThh
MDBlZGZlMzgxYzMxMThlYWM5MmU1ODEzM2Q3Yy4uMDAyY2FmMzEyMzZlY2I2NDZiZjgyNDQxMTgy
Y2IxNTA4NzQ2YzAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lk
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogI2VuZGlmCiAK
ICAgICBpZiAoIXNhbXBsZVJhdGUoKSkKLSAgICAgICAgc2V0U2FtcGxlUmF0ZShkZXZpY2UoKSA9
PSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja0RldmljZTo6TWljcm9waG9uZTEgPyA0NDEw
MCA6IDQ4MDAwKTsKKyAgICAgICAgc2V0U2FtcGxlUmF0ZShXVEY6OmdldDxNb2NrTWljcm9waG9u
ZVByb3BlcnRpZXM+KGRldmljZSgpLnByb3BlcnRpZXMpLmRlZmF1bHRTYW1wbGVSYXRlKTsKIAog
ICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgbV90aW1lci5zdGFy
dFJlcGVhdGluZyhyZW5kZXJJbnRlcnZhbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggNDY0NGYw
ODJkNWU2ODQ4ODNhODUxYWMxODE1Y2U3ZGU3ZmUyZmFmZi4uMDg3NTQ5N2ExZWZhMTEwNDUzZjhl
MmQ2ZTUyM2RhYjM2MTdjOTRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTQ0LDExNiArNDQsMTYz
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IE1vY2tEZXZpY2VJbmZvIHsKLSAg
ICBBU0NJSUxpdGVyYWwgaWQgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OwotICAgIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGUgdHlwZTsKLSAgICBBU0NJSUxpdGVyYWwgbmFtZSB7IEFTQ0lJTGl0
ZXJhbDo6bnVsbCgpIH07Ci0gICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Ok1vY2tEZXZpY2Ug
ZGV2aWNlOwotfTsKLQotc3RhdGljIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBNb2NrRGV2aWNlSW5m
bz4mIGRldmljZU1hcCgpCi17Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gaW5mb01hcCA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBNb2NrRGV2aWNlSW5mbyBk
ZXZpY2VzW10gPSB7Ci0gICAgICAgICAgICB7ICIyMzljMjRiMC0yYjE1LTExZTMtODIyNC0wODAw
MjAwYzlhNjYiX3MsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUsICJNb2Nr
IGF1ZGlvIGRldmljZSAxIl9zLCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja0RldmljZTo6
TWljcm9waG9uZTEgfSwKLSAgICAgICAgICAgIHsgIjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4
MDAyMDBjOWE2NiJfcywgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSwgIk1v
Y2sgYXVkaW8gZGV2aWNlIDIiX3MsIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpNb2NrRGV2aWNl
OjpNaWNyb3Bob25lMiB9LAotCi0gICAgICAgICAgICB7ICIyMzljMjRiMi0yYjE1LTExZTMtODIy
NC0wODAwMjAwYzlhNjYiX3MsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSwgIk1v
Y2sgdmlkZW8gZGV2aWNlIDEiX3MsIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpNb2NrRGV2aWNl
OjpDYW1lcmExIH0sCi0gICAgICAgICAgICB7ICIyMzljMjRiMy0yYjE1LTExZTMtODIyNC0wODAw
MjAwYzlhNjYiX3MsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSwgIk1vY2sgdmlk
ZW8gZGV2aWNlIDIiX3MsIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpNb2NrRGV2aWNlOjpDYW1l
cmEyIH0sCi0KLSAgICAgICAgICAgIHsgIlNDUkVFTi0xIl9zLCBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlOjpTY3JlZW4sICJNb2NrIHNjcmVlbiBkZXZpY2UgMSJfcywgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2U6Ok1vY2tEZXZpY2U6OlNjcmVlbjEgfSwKLSAgICAgICAgICAgIHsgIlNDUkVFTi0y
Il9zLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sICJNb2NrIHNjcmVlbiBkZXZp
Y2UgMiJfcywgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Ok1vY2tEZXZpY2U6OlNjcmVlbjIgfSwK
LSAgICAgICAgfTsKLQotICAgICAgICBIYXNoTWFwPFN0cmluZywgTW9ja0RldmljZUluZm8+IG1h
cDsKLSAgICAgICAgZm9yIChhdXRvJiBpbmZvIDogZGV2aWNlcykKLSAgICAgICAgICAgIG1hcC5h
ZGQoaW5mby5pZCwgaW5mbyk7CitzdGF0aWMgaW5saW5lIFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+
IGRlZmF1bHREZXZpY2VzKCkKK3sKKyAgICByZXR1cm4gVmVjdG9yPE1vY2tNZWRpYURldmljZT4g
eworICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiMjM5YzI0YjAtMmIxNS0xMWUzLTgyMjQtMDgw
MDIwMGM5YTY2Il9zLCAiTW9jayBhdWRpbyBkZXZpY2UgMSJfcywgTW9ja01pY3JvcGhvbmVQcm9w
ZXJ0aWVzIHsgNDQxMDAgfSB9LAorICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiMjM5YzI0YjEt
MmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2Il9zLCAiTW9jayBhdWRpbyBkZXZpY2UgMiJfcywg
TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzIHsgNDgwMDAgfSB9LAorCisgICAgICAgIE1vY2tNZWRp
YURldmljZSB7ICIyMzljMjRiMi0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiX3MsICJNb2Nr
IHZpZGVvIGRldmljZSAxIl9zLCBNb2NrQ2FtZXJhUHJvcGVydGllcyB7IDMwLCBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VXNlciwgQ29sb3I6OmJsYWNrIH0g
fSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIjIzOWMyNGIzLTJiMTUtMTFlMy04MjI0LTA4
MDAyMDBjOWE2NiJfcywgIk1vY2sgdmlkZW8gZGV2aWNlIDIiX3MsIE1vY2tDYW1lcmFQcm9wZXJ0
aWVzIHsgMTUsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpF
bnZpcm9ubWVudCwgQ29sb3I6OmRhcmtHcmF5IH0gfSwKKworICAgICAgICBNb2NrTWVkaWFEZXZp
Y2UgeyAiU0NSRUVOLTEiX3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMSJfcywgTW9ja0Rpc3BsYXlQ
cm9wZXJ0aWVzIHsgMzAsIENvbG9yOjpsaWdodEdyYXkgfSB9LAorICAgICAgICBNb2NrTWVkaWFE
ZXZpY2UgeyAiU0NSRUVOLTIiX3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMiJfcywgTW9ja0Rpc3Bs
YXlQcm9wZXJ0aWVzIHsgMTAsIENvbG9yOjp5ZWxsb3cgfSB9CisgICAgfTsKK30KKworc3RhdGlj
IFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+JiBkZXZpY2VzKCkKK3sKKyAgICBzdGF0aWMgYXV0byBk
ZXZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRE
ZXZpY2VzKCk7CisgICAgfSgpKTsKKyAgICByZXR1cm4gZGV2aWNlczsKK30KKworc3RhdGljIEhh
c2hNYXA8U3RyaW5nLCBNb2NrTWVkaWFEZXZpY2U+JiBkZXZpY2VNYXAoKQoreworICAgIHN0YXRp
YyBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIEhhc2hNYXA8U3Ry
aW5nLCBNb2NrTWVkaWFEZXZpY2U+IG1hcDsKKyAgICAgICAgZm9yIChhdXRvJiBkZXZpY2UgOiBk
ZXZpY2VzKCkpCisgICAgICAgICAgICBtYXAuYWRkKGRldmljZS5wZXJzaXN0ZW50SWQsIGRldmlj
ZSk7CisKICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9KCkpOworICAgIHJldHVybiBtYXA7Cit9
CisKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBkZXZpY2VMaXN0Rm9yRGV2
aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKQoreworICAgIGlmIChkZXZpY2UuaXNN
aWNyb3Bob25lKCkpCisgICAgICAgIHJldHVybiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6YXVk
aW9EZXZpY2VzKCk7CisgICAgaWYgKGRldmljZS5pc0NhbWVyYSgpKQorICAgICAgICByZXR1cm4g
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnZpZGVvRGV2aWNlcygpOwogCi0gICAgcmV0dXJuIGlu
Zm9NYXA7CisgICAgQVNTRVJUKGRldmljZS5pc0Rpc3BsYXkoKSk7CisgICAgcmV0dXJuIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOjpkaXNwbGF5RGV2aWNlcygpOwogfQogCi1zdGQ6Om9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjYXB0dXJlRGV2aWNlV2l0
aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgaWQpCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjcmVhdGVDYXB0dXJlRGV2aWNl
KGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKQogewotICAgIEFTU0VSVCghaWQuaXNFbXB0
eSgpKTsKKyAgICBkZXZpY2VMaXN0Rm9yRGV2aWNlKGRldmljZSkuYXBwZW5kKGNhcHR1cmVEZXZp
Y2VXaXRoUGVyc2lzdGVudElEKGRldmljZS50eXBlKCksIGRldmljZS5wZXJzaXN0ZW50SWQpLnZh
bHVlKCkpOworfQorCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldERldmljZXMo
KQoreworICAgIHNldERldmljZXMoZGVmYXVsdERldmljZXMoKSk7Cit9CisKK3ZvaWQgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMoVmVjdG9yPE1vY2tNZWRpYURldmljZT4mJiBu
ZXdNb2NrRGV2aWNlcykKK3sKKyAgICBhdWRpb0RldmljZXMoKS5jbGVhcigpOworICAgIHZpZGVv
RGV2aWNlcygpLmNsZWFyKCk7CisgICAgZGlzcGxheURldmljZXMoKS5jbGVhcigpOwogCi0gICAg
YXV0byBtYXAgPSBkZXZpY2VNYXAoKTsKLSAgICBhdXRvIGl0ID0gbWFwLmZpbmQoaWQpOwotICAg
IGlmIChpdCAhPSBtYXAuZW5kKCkgJiYgaXQtPnZhbHVlLnR5cGUgPT0gdHlwZSkgewotICAgICAg
ICBhdXRvIGRldmljZSA9IENhcHR1cmVEZXZpY2UoaXQtPnZhbHVlLmlkLCBpdC0+dmFsdWUudHlw
ZSwgaXQtPnZhbHVlLm5hbWUpOwotICAgICAgICBkZXZpY2Uuc2V0RW5hYmxlZCh0cnVlKTsKLSAg
ICAgICAgcmV0dXJuIFdURk1vdmUoZGV2aWNlKTsKKyAgICBhdXRvJiBtb2NrRGV2aWNlcyA9IGRl
dmljZXMoKTsKKyAgICBtb2NrRGV2aWNlcyA9IFdURk1vdmUobmV3TW9ja0RldmljZXMpOworCisg
ICAgYXV0byYgbWFwID0gZGV2aWNlTWFwKCk7CisgICAgbWFwLmNsZWFyKCk7CisKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGRldmljZSA6IG1vY2tEZXZpY2VzKSB7CisgICAgICAgIG1hcC5hZGQoZGV2
aWNlLnBlcnNpc3RlbnRJZCwgZGV2aWNlKTsKKyAgICAgICAgY3JlYXRlQ2FwdHVyZURldmljZShk
ZXZpY2UpOwogICAgIH0KK30KIAotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit2b2lkIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjphZGREZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJiBkZXZp
Y2UpCit7CisgICAgZGV2aWNlcygpLmFwcGVuZChkZXZpY2UpOworICAgIGRldmljZU1hcCgpLnNl
dChkZXZpY2UucGVyc2lzdGVudElkLCBkZXZpY2UpOworICAgIGNyZWF0ZUNhcHR1cmVEZXZpY2Uo
ZGV2aWNlKTsKIH0KIAotVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6YXVkaW9EZXZpY2VzKCkKK3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92
ZURldmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCkKIHsKLSAgICBzdGF0aWMgYXV0byBp
bmZvID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgVmVjdG9yPENhcHR1cmVEZXZp
Y2U+IHZlY3RvcjsKKyAgICBhdXRvJiBtYXAgPSBkZXZpY2VNYXAoKTsKKyAgICBhdXRvIGl0ZXJh
dG9yID0gbWFwLmZpbmQocGVyc2lzdGVudElkKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbWFwLmVu
ZCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBjYXB0dXJlRGV2aWNlID0gY2Fw
dHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWlj
cm9waG9uZSwgIjIzOWMyNGIwLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiJfcyk7Ci0gICAg
ICAgIEFTU0VSVChjYXB0dXJlRGV2aWNlKTsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChXVEZNb3Zl
KGNhcHR1cmVEZXZpY2UudmFsdWUoKSkpOworICAgIGRldmljZXMoKS5yZW1vdmVGaXJzdE1hdGNo
aW5nKFsmcGVyc2lzdGVudElkXShjb25zdCBhdXRvJiBkZXZpY2UpIHsKKyAgICAgICAgcmV0dXJu
IGRldmljZS5wZXJzaXN0ZW50SWQgPT0gcGVyc2lzdGVudElkOworICAgIH0pOwogCi0gICAgICAg
IGNhcHR1cmVEZXZpY2UgPSBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lLCAiMjM5YzI0YjEtMmIxNS0xMWUzLTgyMjQtMDgw
MDIwMGM5YTY2Il9zKTsKLSAgICAgICAgQVNTRVJUKGNhcHR1cmVEZXZpY2UpOwotICAgICAgICB2
ZWN0b3IuYXBwZW5kKFdURk1vdmUoY2FwdHVyZURldmljZS52YWx1ZSgpKSk7CisgICAgZGV2aWNl
TGlzdEZvckRldmljZShpdGVyYXRvci0+dmFsdWUpLnJlbW92ZUZpcnN0TWF0Y2hpbmcoWyZwZXJz
aXN0ZW50SWRdKGNvbnN0IGF1dG8mIGRldmljZSkgeworICAgICAgICByZXR1cm4gZGV2aWNlLnBl
cnNpc3RlbnRJZCgpID09IHBlcnNpc3RlbnRJZDsKKyAgICB9KTsKIAotICAgICAgICByZXR1cm4g
dmVjdG9yOwotICAgIH0oKSk7Ci0gICAgcmV0dXJuIGluZm87CisgICAgbWFwLnJlbW92ZShpdGVy
YXRvcik7CiB9CiAKLVZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnZpZGVvRGV2aWNlcygpCitzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgaWQpCiB7Ci0gICAgc3RhdGljIGF1
dG8gaW5mbyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIFZlY3RvcjxDYXB0dXJl
RGV2aWNlPiB2ZWN0b3I7CisgICAgQVNTRVJUKCFpZC5pc0VtcHR5KCkpOwogCi0gICAgICAgIGF1
dG8gY2FwdHVyZURldmljZSA9IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSwgIjIzOWMyNGIyLTJiMTUtMTFlMy04MjI0LTA4MDAy
MDBjOWE2NiJfcyk7Ci0gICAgICAgIEFTU0VSVChjYXB0dXJlRGV2aWNlKTsKLSAgICAgICAgdmVj
dG9yLmFwcGVuZChXVEZNb3ZlKGNhcHR1cmVEZXZpY2UudmFsdWUoKSkpOworICAgIGF1dG8mIG1h
cCA9IGRldmljZU1hcCgpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtYXAuZmluZChpZCk7CisgICAg
aWYgKGl0ZXJhdG9yID09IG1hcC5lbmQoKSB8fCBpdGVyYXRvci0+dmFsdWUudHlwZSgpICE9IHR5
cGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgY2FwdHVyZURldmlj
ZSA9IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU6OkNhbWVyYSwgIjIzOWMyNGIzLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiJfcyk7Ci0g
ICAgICAgIEFTU0VSVChjYXB0dXJlRGV2aWNlKTsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChXVEZN
b3ZlKGNhcHR1cmVEZXZpY2UudmFsdWUoKSkpOworICAgIENhcHR1cmVEZXZpY2UgZGV2aWNlIHsg
aXRlcmF0b3ItPnZhbHVlLnBlcnNpc3RlbnRJZCwgdHlwZSwgaXRlcmF0b3ItPnZhbHVlLmxhYmVs
IH07CisgICAgZGV2aWNlLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgcmV0dXJuIFdURk1vdmUoZGV2
aWNlKTsKK30KKworVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6YXVkaW9EZXZpY2VzKCkKK3sKKyAgICBzdGF0aWMgYXV0byBhdWRpb0RldmljZXMgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gYXVkaW9E
ZXZpY2VzOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRldmljZSA6IGRldmljZXMoKSkgewor
ICAgICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6TWljcm9waG9uZSkKKyAgICAgICAgICAgICAgICBhdWRpb0RldmljZXMuYXBwZW5kKGNhcHR1
cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3Jv
cGhvbmUsIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVlKCkpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBhdWRpb0RldmljZXM7CisgICAgfSgpKTsKKyAgICByZXR1cm4gYXVkaW9EZXZpY2Vz
OworfQogCi0gICAgICAgIHJldHVybiB2ZWN0b3I7CitWZWN0b3I8Q2FwdHVyZURldmljZT4mIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb0RldmljZXMoKQoreworICAgIHN0YXRpYyBhdXRv
IHZpZGVvRGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIFZlY3RvcjxD
YXB0dXJlRGV2aWNlPiB2aWRlb0RldmljZXM7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV2
aWNlIDogZGV2aWNlcygpKSB7CisgICAgICAgICAgICBpZiAoZGV2aWNlLnR5cGUoKSA9PSBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEpCisgICAgICAgICAgICAgICAgdmlkZW9EZXZp
Y2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlOjpDYW1lcmEsIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVlKCkpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiB2aWRlb0RldmljZXM7CiAgICAgfSgpKTsKLSAgICByZXR1cm4g
aW5mbzsKKyAgICByZXR1cm4gdmlkZW9EZXZpY2VzOwogfQogCiBWZWN0b3I8Q2FwdHVyZURldmlj
ZT4mIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpkaXNwbGF5RGV2aWNlcygpCiB7Ci0gICAgc3Rh
dGljIGF1dG8gZGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIFZlY3Rv
cjxDYXB0dXJlRGV2aWNlPiB2ZWN0b3I7Ci0KLSAgICAgICAgYXV0byBjYXB0dXJlRGV2aWNlID0g
Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U2NyZWVuLCAiU0NSRUVOLTEiX3MpOwotICAgICAgICBBU1NFUlQoY2FwdHVyZURldmljZSk7Ci0g
ICAgICAgIHZlY3Rvci5hcHBlbmQoV1RGTW92ZShjYXB0dXJlRGV2aWNlLnZhbHVlKCkpKTsKLQot
ICAgICAgICBjYXB0dXJlRGV2aWNlID0gY2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCAiU0NSRUVOLTIiX3MpOwotICAgICAgICBB
U1NFUlQoY2FwdHVyZURldmljZSk7Ci0gICAgICAgIHZlY3Rvci5hcHBlbmQoV1RGTW92ZShjYXB0
dXJlRGV2aWNlLnZhbHVlKCkpKTsKLQotICAgICAgICByZXR1cm4gdmVjdG9yOworICAgIHN0YXRp
YyBhdXRvIGRpc3BsYXlEZXZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAg
VmVjdG9yPENhcHR1cmVEZXZpY2U+IGRpc3BsYXlEZXZpY2VzOworICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGRldmljZSA6IGRldmljZXMoKSkgeworICAgICAgICAgICAgaWYgKGRldmljZS50eXBl
KCkgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuKQorICAgICAgICAgICAgICAg
IGRpc3BsYXlEZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVl
KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkaXNwbGF5RGV2aWNlczsKICAgICB9KCkp
OwogCi0gICAgcmV0dXJuIGRldmljZXM7CisgICAgcmV0dXJuIGRpc3BsYXlEZXZpY2VzOwogfQog
CiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3Qg
U3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKGlkLCB0eXBlLCBuYW1lKQorICAgICwg
bV9kZXZpY2UoZGV2aWNlTWFwKCkuZ2V0KGlkKSkKIHsKICAgICBBU1NFUlQodHlwZSAhPSBSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlOjpOb25lKTsKLQotICAgIGF1dG8gbWFwID0gZGV2aWNlTWFw
KCk7Ci0gICAgYXV0byBpdCA9IG1hcC5maW5kKGlkKTsKLSAgICBBU1NFUlQoaXQgIT0gbWFwLmVu
ZCgpKTsKLQotICAgIG1fZGV2aWNlID0gaXQtPnZhbHVlLmRldmljZTsKICAgICBzZXRQZXJzaXN0
ZW50SUQoU3RyaW5nKGlkKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCBhMWQzZTliNjFiNjExMzM2
NWE3ODQzMDAyODNiOTRhNWUxMWZhNzVmLi4zMzU1ZGE2NjFlYzYwZTlkZjFhMjUxYzAwMGFiNTY5
NzFjZjhjYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC0zMiwyNyArMzIsMzIgQEAKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCisjaW5jbHVkZSAi
TW9ja01lZGlhRGV2aWNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENhcHR1cmVEZXZpY2U7Ci0KIGNsYXNzIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfk1vY2tSZWFsdGltZU1lZGlhU291cmNlKCkgPSBkZWZhdWx0OwogCisg
ICAgc3RhdGljIHZvaWQgc2V0RGV2aWNlcyhWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYmKTsKKyAg
ICBzdGF0aWMgdm9pZCBhZGREZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJik7CisgICAgc3Rh
dGljIHZvaWQgcmVtb3ZlRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZXNldERldmljZXMoKTsKKwogICAgIHN0YXRpYyBW
ZWN0b3I8Q2FwdHVyZURldmljZT4mIGF1ZGlvRGV2aWNlcygpOwogICAgIHN0YXRpYyBWZWN0b3I8
Q2FwdHVyZURldmljZT4mIHZpZGVvRGV2aWNlcygpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FwdHVy
ZURldmljZT4mIGRpc3BsYXlEZXZpY2VzKCk7CiAKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
YXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIGVudW0gY2xhc3MgTW9ja0Rldmlj
ZSB7IEludmFsaWQsIE1pY3JvcGhvbmUxLCBNaWNyb3Bob25lMiwgQ2FtZXJhMSwgQ2FtZXJhMiwg
U2NyZWVuMSwgU2NyZWVuMiB9OwotCiBwcm90ZWN0ZWQ6CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZUNhcHR1cmVEZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJik7
CisKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMmKSA9IDA7CkBAIC02Miw4ICs2Nyw4IEBAIHByb3RlY3RlZDoKIAogICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWlu
dHMoKTsKIAotICAgIE1vY2tEZXZpY2UgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2U7
IH0KLSAgICBNb2NrRGV2aWNlIG1fZGV2aWNlIHsgTW9ja0RldmljZTo6SW52YWxpZCB9OworICAg
IGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2U7
IH0KKyAgICBNb2NrTWVkaWFEZXZpY2UgbV9kZXZpY2U7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBp
bml0aWFsaXplQ2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4
IDc3YTBmOGVkZDNjYjdmNmFlMjMzYjc1MDMwMTIxNTM2ODIwMDcwMWMuLmRmOTFlYmUwZmU4NTQ0
MTE0YTY2MmM3NmU0MmFmY2E3YTcwMGVkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
CkBAIC0zNywxNiArMzcsMzkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ckVuYWJsZWQoYm9vbCBlbmFibGVkKQorTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcj4gY2VudGVyOworICAg
IHJldHVybiBjZW50ZXI7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNldE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZChib29sIGVuYWJsZWQpCit7
CiAgICAgc3RhdGljIGJvb2wgYWN0aXZlID0gZmFsc2U7CiAgICAgaWYgKGFjdGl2ZSAhPSBlbmFi
bGVkKSB7CiAgICAgICAgIGFjdGl2ZSA9IGVuYWJsZWQ7Ci0gICAgICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKGVuYWJsZWQgPyAmY2Vu
dGVyLmdldCgpIDogbnVsbHB0cik7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKGVuYWJsZWQgPyAmc2luZ2xldG9uKCkgOiBu
dWxscHRyKTsKICAgICB9CiB9CiAKK3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNldERldmljZXMoVmVjdG9yPE1vY2tNZWRpYURldmljZT4mJiBuZXdNb2NrRGV2aWNlcykKK3sK
KyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RGV2aWNlcyhXVEZNb3ZlKG5ld01vY2tE
ZXZpY2VzKSk7CisgICAgc2luZ2xldG9uKCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7Cit9CisK
K3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmFkZERldmljZShjb25zdCBNb2Nr
TWVkaWFEZXZpY2UmIGRldmljZSkKK3sKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRk
RGV2aWNlKGRldmljZSk7CisgICAgc2luZ2xldG9uKCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7
Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZShj
b25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCkKK3sKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6cmVtb3ZlRGV2aWNlKHBlcnNpc3RlbnRJZCk7CisgICAgc2luZ2xldG9uKCkuY2FwdHVyZURl
dmljZXNDaGFuZ2VkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKaW5kZXggMGY5MmY5
ZDQzZjk4OWJhNmU4YzNhYThmMzVjNDA0ZWI4YjQyOWYzZi4uYmU0N2EwZTNlNDYyMTFkNGVmZmVk
MDJjMWQ3MTY1NzlhMWM0NTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaApAQCAtMzksNiAr
MzksMTAgQEAgY2xhc3MgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIgZmluYWwgOiBwdWJs
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgc2V0TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKGJv
b2wpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0RGV2aWNlcyhWZWN0b3I8
TW9ja01lZGlhRGV2aWNlPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBhZGRE
ZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgcmVtb3ZlRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKTsKKwogICAgIHN0
YXRpYyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiB2aWRlb0NhcHR1
cmVTb3VyY2VGYWN0b3J5KCkgeyByZXR1cm4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmZhY3Rv
cnkoKTsgfQogICAgIHN0YXRpYyBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0
b3J5JiBhdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkgeyByZXR1cm4gTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2U6OmZhY3RvcnkoKTsgfQogCkBAIC00Niw2ICs1MCw4IEBAIHByaXZhdGU6CiAgICAg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgZnJpZW5kIE5l
dmVyRGVzdHJveWVkPE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyPjsKIAorICAgIHN0YXRp
YyBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgc2luZ2xldG9uKCk7CisKICAgICBSZWFs
dGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3RvcnkoKSBmaW5h
bCB7IHJldHVybiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6ZmFjdG9yeSgpOyB9CiAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgdmlkZW9GYWN0b3J5KCkgZmlu
YWwgeyByZXR1cm4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmZhY3RvcnkoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwCmluZGV4IDAzYTdjM2VjMmYxMDM5NjA3NWUxMTc3YmIwNTQ1ZGI3YzVkODM2ODcu
LjljNDFlMWM0NzI3ZWU0MTY2NDMyMjdhYjBlNGE1M2M5YmNjOWIyMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwCkBAIC0xMDgsMzEgKzEwOCwxOCBAQCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgY29uc3QgUwogICAgIDog
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoZGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGU6OlZpZGVvLCBuYW1lKQogICAgICwgbV90aW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMs
ICZNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVGcmFtZSkKIHsKLSAgICBzd2l0Y2gg
KGRldmljZSgpKSB7Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpDYW1lcmExOgotICAgICAgICBzZXRG
cmFtZVJhdGUoMzApOwotICAgICAgICBzZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6VXNlcik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTW9ja0RldmljZTo6Q2Ft
ZXJhMjoKLSAgICAgICAgc2V0RnJhbWVSYXRlKDE1KTsKLSAgICAgICAgc2V0RmFjaW5nTW9kZShS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50KTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpTY3JlZW4xOgotICAgICAgICBzZXRGcmFtZVJhdGUoMzAp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1vY2tEZXZpY2U6OlNjcmVlbjI6Ci0gICAgICAg
IHNldEZyYW1lUmF0ZSgxMCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTW9ja0RldmljZTo6
TWljcm9waG9uZTE6Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpNaWNyb3Bob25lMjoKLSAgICBjYXNl
IE1vY2tEZXZpY2U6OkludmFsaWQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KICAgICBtX2Rhc2hXaWR0aHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSgyKTsKICAgICBtX2Rhc2hXaWR0aHMudW5jaGVja2VkQXBwZW5kKDYpOwogICAgIG1fZGFz
aFdpZHRocy51bmNoZWNrZWRBcHBlbmQoNik7CisKKyAgICBpZiAobW9ja1NjcmVlbigpKSB7Cisg
ICAgICAgIHNldEZyYW1lUmF0ZShXVEY6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KGRldmlj
ZSgpLnByb3BlcnRpZXMpLmRlZmF1bHRGcmFtZVJhdGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYXV0byYgcHJvcGVydGllcyA9IFdURjo6Z2V0PE1vY2tDYW1lcmFQcm9wZXJ0aWVz
PihkZXZpY2UoKS5wcm9wZXJ0aWVzKTsKKyAgICBzZXRGcmFtZVJhdGUocHJvcGVydGllcy5kZWZh
dWx0RnJhbWVSYXRlKTsKKyAgICBzZXRGYWNpbmdNb2RlKHByb3BlcnRpZXMuZmFjaW5nTW9kZUNh
cGFiaWxpdHkpOwogfQogCiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6fk1vY2tSZWFsdGltZVZp
ZGVvU291cmNlKCkKQEAgLTE5MSwxMCArMTc4LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6dXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW4K
IHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKQogewogICAgIGlmICht
b2NrQ2FtZXJhKCkpIHsKLSAgICAgICAgaWYgKGRldmljZSgpID09IE1vY2tEZXZpY2U6OkNhbWVy
YTEpCi0gICAgICAgICAgICBjYXBhYmlsaXRpZXMuYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlVzZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYXBhYmls
aXRpZXMuYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25t
ZW50KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmFkZEZhY2luZ01vZGUoV1RGOjpnZXQ8TW9ja0Nh
bWVyYVByb3BlcnRpZXM+KGRldmljZSgpLnByb3BlcnRpZXMpLmZhY2luZ01vZGVDYXBhYmlsaXR5
KTsKIAogICAgICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSgzMjAsIDE5MjApKTsKICAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5
VmFsdWVPclJhbmdlKDI0MCwgMTA4MCkpOwpAQCAtMzkyLDcgKzM3Niw3IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAg
ICAgICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3Ry
aW5nKSkpLCBzdGF0c0xvY2F0aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICBzdGF0c0xvY2F0
aW9uLm1vdmUoMCwgbV9zdGF0c0ZvbnRTaXplKTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChz
dGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoZGV2aWNlKCkgPT0gTW9ja0RldmljZTo6U2Ny
ZWVuMSA/ICJTY3JlZW4gMSIgOiAiU2NyZWVuIDIiKSkpLCBzdGF0c0xvY2F0aW9uKTsKKyAgICAg
ICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4geyBpZCgpIH0sIHN0YXRzTG9j
YXRpb24pOwogICAgIH0KIAogICAgIEZsb2F0UG9pbnQgYmlwQm9wTG9jYXRpb24oc2l6ZS53aWR0
aCgpICogLjYsIHNpemUuaGVpZ2h0KCkgKiAuNik7CkBAIC00MzEsMjcgKzQxNSw3IEBAIHZvaWQg
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUoKQogICAgIGF1dG8mIHNpemUg
PSB0aGlzLT5zaXplKCk7CiAgICAgRmxvYXRSZWN0IGZyYW1lUmVjdChGbG9hdFBvaW50KCksIHNp
emUpOwogCi0gICAgQ29sb3IgZmlsbENvbG9yOwotICAgIHN3aXRjaCAoZGV2aWNlKCkpIHsKLSAg
ICBjYXNlIE1vY2tEZXZpY2U6OkNhbWVyYTE6Ci0gICAgICAgIGZpbGxDb2xvciA9IENvbG9yOjpi
bGFjazsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpDYW1lcmEyOgotICAg
ICAgICBmaWxsQ29sb3IgPSBDb2xvcjo6ZGFya0dyYXk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTW9ja0RldmljZTo6U2NyZWVuMToKLSAgICAgICAgZmlsbENvbG9yID0gQ29sb3I6OmxpZ2h0
R3JheTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpTY3JlZW4yOgotICAg
ICAgICBmaWxsQ29sb3IgPSBDb2xvcjo6eWVsbG93OwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1vY2tEZXZpY2U6Ok1pY3JvcGhvbmUxOgotICAgIGNhc2UgTW9ja0RldmljZTo6TWljcm9waG9u
ZTI6Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpJbnZhbGlkOgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCisgICAgYXV0byBmaWxsQ29sb3IgPSBt
b2NrQ2FtZXJhKCkgPyBXVEY6OmdldDxNb2NrQ2FtZXJhUHJvcGVydGllcz4oZGV2aWNlKCkucHJv
cGVydGllcykuZmlsbENvbG9yIDogV1RGOjpnZXQ8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihkZXZp
Y2UoKS5wcm9wZXJ0aWVzKS5maWxsQ29sb3I7CiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBzaXplKSwgZmlsbENvbG9yKTsKIAogICAgIGlmICghbXV0ZWQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oCmluZGV4IGJkNTI2ODI2ZmYwNDgyYjQ0ZmM0OWE0Yzg2MDdiNjY2ODA5NGNm
NDcuLmE2NTg5Yjg3NTQ4NzcwNGU4YjQ4ODdhNDUyZWUzN2Q5NzcxMGE2MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmgKQEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVsYXlTYW1wbGVzKFNl
Y29uZHMpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBtb2NrQ2FtZXJhKCkgY29uc3QgeyByZXR1cm4g
ZGV2aWNlKCkgPT0gTW9ja0RldmljZTo6Q2FtZXJhMSB8fCBkZXZpY2UoKSA9PSBNb2NrRGV2aWNl
OjpDYW1lcmEyOyB9Ci0gICAgYm9vbCBtb2NrU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gZGV2aWNl
KCkgPT0gTW9ja0RldmljZTo6U2NyZWVuMSB8fCBkZXZpY2UoKSA9PSBNb2NrRGV2aWNlOjpTY3Jl
ZW4yOyB9CisgICAgYm9vbCBtb2NrQ2FtZXJhKCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxNb2NrQ2FtZXJhUHJvcGVydGllcz4oZGV2aWNlKCkucHJvcGVydGllcyk7IH0K
KyAgICBib29sIG1vY2tTY3JlZW4oKSBjb25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPE1vY2tEaXNwbGF5UHJvcGVydGllcz4oZGV2aWNlKCkucHJvcGVydGllcyk7IH0KIAogICAg
IGZsb2F0IG1fYmFzZUZvbnRTaXplIHsgMCB9OwogICAgIGZsb2F0IG1fYmlwQm9wRm9udFNpemUg
eyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCBiZDlkZTM0ZWQyYmZmOTMwYTZkYzMwYTBlNGM3
Mzc5MDg4ODdmMjEwLi40MjJlNTI0MmQ2OWUyM2JmMTFkZjY5ZDk3ODMyOWM1NzFiMDhhMTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKQEAgLTQwMiw2ICs0MDIsNyBAQCBzZXQoV2ViS2l0X1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tNZWRp
YVNlc3Npb25NZXRhZGF0YS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZp
Y2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YVJlZi5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tOYXZpZ2F0aW9uUmVmLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZpY2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZpY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MzU2ZTVkYzFhOGRj
OGMyNjI0N2U4ZmU2ZWQ1NzBjODNjM2EwNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01vY2tNZWRpYURldmljZS5jcHAKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLTW9ja01lZGlhRGV2aWNlLmgiCisKKyNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3NQb29sLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrTWVkaWFEZXZpY2UuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBXS0FkZE1vY2tNZWRpYURldmljZShXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgcGVyc2lzdGVudElkLCBXS1N0cmluZ1JlZiBsYWJl
bCwgV0tTdHJpbmdSZWYgdHlwZSkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFN0
cmluZyB0eXBlU3RyaW5nID0gV2ViS2l0Ojp0b0ltcGwocGVyc2lzdGVudElkKS0+c3RyaW5nKCk7
CisgICAgVmFyaWFudDxXZWJDb3JlOjpNb2NrTWljcm9waG9uZVByb3BlcnRpZXMsIFdlYkNvcmU6
Ok1vY2tDYW1lcmFQcm9wZXJ0aWVzLCBXZWJDb3JlOjpNb2NrRGlzcGxheVByb3BlcnRpZXM+IHBy
b3BlcnRpZXM7CisgICAgaWYgKHR5cGVTdHJpbmcgPT0gImNhbWVyYSIpCisgICAgICAgIHByb3Bl
cnRpZXMgPSBXZWJDb3JlOjpNb2NrQ2FtZXJhUHJvcGVydGllcyB7IH07CisgICAgaWYgKHR5cGVT
dHJpbmcgPT0gInNjcmVlbiIpCisgICAgICAgIHByb3BlcnRpZXMgPSBXZWJDb3JlOjpNb2NrRGlz
cGxheVByb3BlcnRpZXMgeyB9OworICAgIGlmICh0eXBlU3RyaW5nICE9ICJtaWNyb3Bob25lIikK
KyAgICAgICAgcmV0dXJuOworCisgICAgdG9JbXBsKGNvbnRleHQpLT5hZGRNb2NrTWVkaWFEZXZp
Y2UoeyBXZWJLaXQ6OnRvSW1wbChwZXJzaXN0ZW50SWQpLT5zdHJpbmcoKSwgV2ViS2l0Ojp0b0lt
cGwobGFiZWwpLT5zdHJpbmcoKSwgV1RGTW92ZShwcm9wZXJ0aWVzKSB9KTsKKyNlbmRpZgorfQor
Cit2b2lkIFdLQ2xlYXJNb2NrTWVkaWFEZXZpY2VzKFdLQ29udGV4dFJlZiBjb250ZXh0KQorewor
ICAgIHRvSW1wbChjb250ZXh0KS0+Y2xlYXJNb2NrTWVkaWFEZXZpY2VzKCk7Cit9CisKK3ZvaWQg
V0tSZW1vdmVNb2NrTWVkaWFEZXZpY2UoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVm
IHBlcnNpc3RlbnRJZCkKK3sKKyAgICB0b0ltcGwoY29udGV4dCktPnJlbW92ZU1vY2tNZWRpYURl
dmljZShXZWJLaXQ6OnRvSW1wbChwZXJzaXN0ZW50SWQpLT5zdHJpbmcoKSk7Cit9CisKK3ZvaWQg
V0tSZXNldE1vY2tNZWRpYURldmljZXMoV0tDb250ZXh0UmVmIGNvbnRleHQpCit7CisgICAgdG9J
bXBsKGNvbnRleHQpLT5yZXNldE1vY2tNZWRpYURldmljZXMoKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01vY2tNZWRpYURldmljZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3
NzZkMjgxNzExOTQ5YTEwZWM3MGQ0MjFjYWI2YTAzNWIwNzRhMWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01vY2tNZWRpYURldmljZS5oCkBAIC0w
LDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCB2b2lkIFdL
QWRkTW9ja01lZGlhRGV2aWNlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYgcGVyc2lzdGVudElk
LCBXS1N0cmluZ1JlZiBsYWJlbCwgV0tTdHJpbmdSZWYgdHlwZSk7CitXS19FWFBPUlQgdm9pZCBX
S0NsZWFyTW9ja01lZGlhRGV2aWNlcyhXS0NvbnRleHRSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tS
ZW1vdmVNb2NrTWVkaWFEZXZpY2UoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBwZXJzaXN0ZW50
SWQpOworV0tfRVhQT1JUIHZvaWQgV0tSZXNldE1vY2tNZWRpYURldmljZXMoV0tDb250ZXh0UmVm
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBiZDM3N2U0NmI2NzFiNzM5ZWY3YzA2NDA4OWRl
ZGNhOGRhNGEwYTY0Li43MmE4M2RmODEwYWYzN2NjZTQ5MzdmZjViZjQ3OGM2NmMxYjBkN2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC04Miw2ICs4
Miw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xv
Z0luaXRpYWxpemF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UHJvY2Vzcy5oPgpAQCAtMjIxMiw0ICsyMjEzLDM2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVu
cmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJveHkoU3VzcGVuZGVkUGFnZVByb3h5JiBwYWdlKQogICAg
ICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZShpdGVyYXRvcik7CiB9CiAKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmFkZE1vY2tNZWRpYURldmljZShjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRldmlj
ZSkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjphZGREZXZpY2UoZGV2aWNlKTsKKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkFkZE1vY2tNZWRpYURldmljZSB7IGRldmljZSB9KTsKKyNlbmRp
ZgorfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhck1vY2tNZWRpYURldmljZXMoKQorewor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnNldERldmljZXMoeyB9KTsKKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OkNsZWFyTW9ja01lZGlhRGV2aWNlcyB7IH0pOworI2VuZGlmCit9CisKK3ZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZU1vY2tNZWRpYURldmljZShjb25zdCBTdHJpbmcmIHBlcnNp
c3RlbnRJZCkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpyZW1vdmVEZXZpY2UocGVyc2lzdGVudElkKTsKKyAgICBzZW5kVG9B
bGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlbW92ZU1vY2tNZWRpYURldmljZSB7
IHBlcnNpc3RlbnRJZCB9KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNl
dE1vY2tNZWRpYURldmljZXMoKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlc2V0RGV2aWNlcygpOworICAgIHNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVzZXRNb2NrTWVkaWFEZXZpY2VzIHsgfSk7Cisj
ZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBhZWIxOTEwYTYwZTQ1YWYwMjU1YzA1ZTdlZGNjYmJkYjE2
OTNiOGYwLi44M2IwNjNlOWU1ZGY1MTZjMGRhZGZlZmQzYjkyYmM1NDlhMTcyNDRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTgyLDYgKzgyLDEwIEBAIGNs
YXNzIE5hdmlnYXRpb247CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAorbmFtZXNwYWNl
IFdlYkNvcmUgeworc3RydWN0IE1vY2tNZWRpYURldmljZTsKK30KKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIERvd25sb2FkUHJveHk7CkBAIC00NTQsNiArNDU4LDExIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2NyZWVuUHJvcGVydGllc1N0YXRlQ2hhbmdlZCgpOwogCisgICAgdm9pZCBh
ZGRNb2NrTWVkaWFEZXZpY2UoY29uc3QgV2ViQ29yZTo6TW9ja01lZGlhRGV2aWNlJik7CisgICAg
dm9pZCBjbGVhck1vY2tNZWRpYURldmljZXMoKTsKKyAgICB2b2lkIHJlbW92ZU1vY2tNZWRpYURl
dmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCk7CisgICAgdm9pZCByZXNldE1vY2tNZWRp
YURldmljZXMoKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA2YTUwNzIxZWUyMjk5OTdhOTU3MjZlYWIwN2U5MTgyNjUyY2RmMmE1Li4wODYzZjk5NTg4NWNi
ZTk2MjI0M2QyNmE5NGVmY2YxNzc1YjdmNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxMyw2ICs5MTMsOCBAQAogCQk0MTA0ODJD
RTFEREQzMjRGMDBGMDA2RDAgLyogUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05l
dHdvcmsuaCAqLzsgfTsKIAkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENS
ZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsg
fTsKIAkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29h
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJC
NTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07
CisJCTQxMUE4RERCMjBEREQxQUMwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExQThERDkyMEREQjYw
NTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDExQThEREMyMERERDIzRjAwNjBEMzRGIC8qIFdL
TW9ja01lZGlhRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMUE4RERBMjBEREI2MDUwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5j
cHAgKi87IH07CiAJCTQxMUIyMjY0MUUzNzFCQTYwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3Jr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2
MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovOyB9OwogCQk0MTMwNzVB
OTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkg
LyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi87IH07CiAJCTQxMzA3NUFBMURFODVGMzAwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5QTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01v
bml0b3IuY3BwICovOyB9OwpAQCAtMzI5OSw2ICszMzAxLDggQEAKIAkJNDExMkI1NDcxRjlGRDNB
QjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3
b3JrUlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29y
a1JUQ1Jlc29sdmVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ4MUY5RkQzQUMw
MEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBwYXRoID0gTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxMUE4REQ5MjBEREI2MDUwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmlj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS01vY2tNZWRpYURldmljZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTFBOEREQTIwRERCNjA1MDA2MEQzNEYg
LyogV0tNb2NrTWVkaWFEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tNb2NrTWVkaWFEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENOZXR3b3JrLmg7IHBhdGggPSBOZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuY3BwOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29y
a1JUQ1NvY2tldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRD
U29ja2V0Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU3Miw2ICs3NTc2LDggQEAKIAkJCQlD
OThDNDhBODFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAq
LywKIAkJCQlDOUNENDM5OTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0
YS5jcHAgKi8sCiAJCQkJQzlDRDQzOUExQjRCMDI0MjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9u
TWV0YWRhdGEuaCAqLywKKwkJCQk0MTFBOEREQTIwRERCNjA1MDA2MEQzNEYgLyogV0tNb2NrTWVk
aWFEZXZpY2UuY3BwICovLAorCQkJCTQxMUE4REQ5MjBEREI2MDUwMDYwRDM0RiAvKiBXS01vY2tN
ZWRpYURldmljZS5oICovLAogCQkJCUMwOUFFNUU4MTI1MjU3QzIwMDI1ODI1RCAvKiBXS05hdGl2
ZUV2ZW50LmggKi8sCiAJCQkJMkQzQTY1RDgxQTdDM0ExRjAwQ0FDNjM3IC8qIFdLTmF2aWdhdGlv
bkFjdGlvblJlZi5jcHAgKi8sCiAJCQkJMkQzQTY1RDkxQTdDM0ExRjAwQ0FDNjM3IC8qIFdLTmF2
aWdhdGlvbkFjdGlvblJlZi5oICovLApAQCAtOTY0Myw2ICs5NjQ5LDcgQEAKIAkJCQlDOThDNDhB
QTFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUM5Q0Q0MzlEMUI0QjAyNEYwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI0MEVFNjFCRjY3N0UzMDBCQTgxQkUgLyog
V0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExQThE
REIyMERERDFBQzAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzQwNzVGRTEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNDA3NjAwMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVEaWN0aW9u
YXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMDlBRTVFOTEyNTI1N0MyMDAyNTgyNUQgLyogV0tO
YXRpdmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDM1OCwxMyArMTAzNjUsOSBAQAogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJKTsKLQkJCWlu
cHV0RmlsZUxpc3RQYXRocyA9ICgKLQkJCSk7CiAJCQlpbnB1dFBhdGhzID0gKAogCQkJKTsKIAkJ
CW5hbWUgPSAiVW5sb2NrIGtleWNoYWluIjsKLQkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAoCi0J
CQkpOwogCQkJb3V0cHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xMDM3NiwxMyArMTAzNzksOSBAQAogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJKTsKLQkJCWlucHV0RmlsZUxp
c3RQYXRocyA9ICgKLQkJCSk7CiAJCQlpbnB1dFBhdGhzID0gKAogCQkJKTsKIAkJCW5hbWUgPSAi
VW5sb2NrIGtleWNoYWluIjsKLQkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJ
b3V0cHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CkBAIC0xMDM5NCwxMyArMTAzOTMsOSBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJKTsKLQkJCWlucHV0RmlsZUxpc3RQYXRocyA9
ICgKLQkJCSk7CiAJCQlpbnB1dFBhdGhzID0gKAogCQkJKTsKIAkJCW5hbWUgPSAiUmVtb3ZlIHN0
YWxlIGVudGl0bGVtZW50IGZpbGUiOwotCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9ICgKLQkJCSk7
CiAJCQlvdXRwdXRQYXRocyA9ICgKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKQEAgLTEwNDEyLDEzICsxMDQwNyw5IEBACiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkpOwotCQkJaW5wdXRGaWxlTGlzdFBh
dGhzID0gKAotCQkJKTsKIAkJCWlucHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJbmFtZSA9ICJSZW1v
dmUgc3RhbGUgZW50aXRsZW1lbnQgZmlsZSI7Ci0JCQlvdXRwdXRGaWxlTGlzdFBhdGhzID0gKAot
CQkJKTsKIAkJCW91dHB1dFBhdGhzID0gKAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTA0MzAsMTQgKzEwNDIxLDEwIEBACiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkpOwotCQkJaW5wdXRGaWxl
TGlzdFBhdGhzID0gKAotCQkJKTsKIAkJCWlucHV0UGF0aHMgPSAoCiAJCQkJIiQoVEVNUF9GSUxF
X0RJUikvJChGVUxMX1BST0RVQ1RfTkFNRSkueGNlbnQiLAogCQkJKTsKIAkJCW5hbWUgPSAiUHJv
Y2VzcyBXZWJDb250ZW50IGVudGl0bGVtZW50cyI7Ci0JCQlvdXRwdXRGaWxlTGlzdFBhdGhzID0g
KAotCQkJKTsKIAkJCW91dHB1dFBhdGhzID0gKAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTA0NDksMTQgKzEwNDM2LDEwIEBACiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkpOwotCQkJaW5wdXRG
aWxlTGlzdFBhdGhzID0gKAotCQkJKTsKIAkJCWlucHV0UGF0aHMgPSAoCiAJCQkJIiQoVEVNUF9G
SUxFX0RJUikvJChGVUxMX1BST0RVQ1RfTkFNRSkueGNlbnQiLAogCQkJKTsKIAkJCW5hbWUgPSAi
UHJvY2VzcyBXZWJDb250ZW50IGVudGl0bGVtZW50cyI7Ci0JCQlvdXRwdXRGaWxlTGlzdFBhdGhz
ID0gKAotCQkJKTsKIAkJCW91dHB1dFBhdGhzID0gKAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTE0NjUsNiArMTE0NDgsNyBAQAogCQkJCUM5
OEM0OEE5MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDOUNENDM5RTFCNEIwMjUzMDAyMzlFMzMgLyogV0tNZWRpYVNl
c3Npb25NZXRhZGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI0MEVFNTFCRjY3N0UzMDBC
QTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDEx
QThEREMyMERERDIzRjAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDNDA3NUZEMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVBcnJheS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzVGRjEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxl
RGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTVCMUM1MDE4OTg2MDZGMDA0RkNG
OUIgLyogV0tOYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOGZhODZhZDI2MzQyMTY4MzMwMjE1NThmNDc2ZjdlMDBi
ZWEwNDYxMi4uMDA2NmYxMTM2OTk2NDRkNjZlMjc4ZTNlZjNkMjllODE0MmU1MDBmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTAxLDYgKzEwMSw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVtb3J5
UmVsZWFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgpAQCAtMTY5MCw0ICsxNjkxLDI2IEBAIHZvaWQg
V2ViUHJvY2Vzczo6c2V0U2NyZWVuUHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpTY3JlZW5Qcm9w
ZXJ0aWVzJiBwcm9wZXJ0aWVzCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Cit2b2lkIFdlYlByb2Nlc3M6OmFkZE1vY2tNZWRpYURldmljZShjb25zdCBXZWJDb3JlOjpNb2Nr
TWVkaWFEZXZpY2UmIGRldmljZSkKK3sKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6YWRkRGV2aWNlKGRldmljZSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJNb2NrTWVk
aWFEZXZpY2VzKCkKK3sKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0RGV2
aWNlcyh7IH0pOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZU1vY2tNZWRpYURldmljZShj
b25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCkKK3sKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6cmVtb3ZlRGV2aWNlKHBlcnNpc3RlbnRJZCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vz
czo6cmVzZXRNb2NrTWVkaWFEZXZpY2VzKCkKK3sKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6cmVzZXREZXZpY2VzKCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBiODUyMGFjZDJiZDgzYzQ5MTU3
MTNmZDU0MzQwZWZlYjQ1NmRjZWZiLi44OGNjMjFmOWY1MTA5ODBiMDA2ZjVjZTc4MjYyODQzNWFm
NmFjMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTY5LDYgKzY5
LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgVXNlckdlc3R1cmVUb2tlbjsKIHN0
cnVjdCBNZXNzYWdlUG9ydElkZW50aWZpZXI7CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHM7CitzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlOwogc3RydWN0IFBsdWdpbkluZm87CiBzdHJ1Y3Qg
U2VjdXJpdHlPcmlnaW5EYXRhOwogc3RydWN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczsKQEAg
LTM1OSw2ICszNjAsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BSdW5Mb29wKCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBhZGRNb2Nr
TWVkaWFEZXZpY2UoY29uc3QgV2ViQ29yZTo6TW9ja01lZGlhRGV2aWNlJik7CisgICAgdm9pZCBj
bGVhck1vY2tNZWRpYURldmljZXMoKTsKKyAgICB2b2lkIHJlbW92ZU1vY2tNZWRpYURldmljZShj
b25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCk7CisgICAgdm9pZCByZXNldE1vY2tNZWRpYURldmlj
ZXMoKTsKKyNlbmRpZgorCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNzKGNvbnN0
IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpOwogCiAgICAgLy8gSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggNWFiNTIyYmUzOTEzNDg4MTFiNmRhYTM3Yzc5M2M5YTBjNGY3
OTgyNy4uMGRiOGJkOTQzYmVlZDgzNTMyOTJjOTBjZGMxOGVhNmMyN2MxNTA1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEzOSw0
ICsxMzksMTEgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgU2V0TWVkaWFNSU1FVHlwZXMoVmVjdG9yPFN0cmluZz4gdHlw
ZXMpCiAjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgQWRkTW9ja01lZGlh
RGV2aWNlKHN0cnVjdCBXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2UgZGV2aWNlKTsKKyAgICBDbGVh
ck1vY2tNZWRpYURldmljZXMoKTsKKyAgICBSZW1vdmVNb2NrTWVkaWFEZXZpY2UoU3RyaW5nIHBl
cnNpc3RlbnRJZCk7CisgICAgUmVzZXRNb2NrTWVkaWFEZXZpY2VzKCk7CisjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZTA1Zjdm
Mzg4YTUxZjQ0YzE3ZDA4YjRmOTg2ZTE0NTQ5MjE5ZGZkLi5iOTg0NzdlNzQ3MzcxZjE3MDI3OGY5
NjAwMjM1OGYyOTFlNDhlMDNlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTgtMDYtMjUgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBUEkgdG8gY29udHJvbCBtb2NrIG1l
ZGlhIGRldmljZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4Njk1OAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAg
ICBBZGQgdGVzdCBydW5uZXIgQVBJIHRvIGNsZWFyL2FkZC9yZW1vdmUvcmVzZXQgbW9jayBtZWRp
YSBkZXZpY2VzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjphZGRN
b2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjphZGRNb2NrQ2FtZXJh
RGV2aWNlKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6YWRkTW9ja01pY3JvcGhvbmVEZXZp
Y2UpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjphZGRNb2NrU2NyZWVuRGV2aWNlKToKKyAg
ICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y2xlYXJNb2NrTWVkaWFEZXZpY2VzKToKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6cmVtb3ZlTW9ja01lZGlhRGV2aWNlKToKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6cmVzZXRNb2NrTWVkaWFEZXZpY2VzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OmFkZE1vY2tNZWRpYURldmljZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVh
ck1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVtb3Zl
TW9ja01lZGlhRGV2aWNlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0TW9j
a01lZGlhRGV2aWNlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTgtMDYtMjUgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtp
cnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gVW5yZXZpZXdlZCBidWlsZCBm
aXggZm9yIHIyMzMwODguCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA3ZTc2NTljYzNi
ZmZjZTBhYTg3NmRkZGM5ZjAyZDA0OTc2YTNkYjlmLi4xNzkxNjY4MTI3YTY2NjA3NzJjYTE5MWMw
NTgzOWQ2Y2MwOGYzOTY0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTMzNiw0ICsz
MzYsMTEgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgZ2V0QXBwbGljYXRpb25N
YW5pZmVzdFRoZW4ob2JqZWN0IGNhbGxiYWNrKTsKIAogICAgIHZvaWQgaW5zdGFsbEZha2VIZWx2
ZXRpY2EoRE9NU3RyaW5nIGNvbmZpZ3VyYXRpb24pOworCisgICAgdm9pZCBhZGRNb2NrQ2FtZXJh
RGV2aWNlKERPTVN0cmluZyBwZXJzaXN0ZW50SWQsIERPTVN0cmluZyBsYWJlbCk7CisgICAgdm9p
ZCBhZGRNb2NrTWljcm9waG9uZURldmljZShET01TdHJpbmcgcGVyc2lzdGVudElkLCBET01TdHJp
bmcgbGFiZWwpOworICAgIHZvaWQgYWRkTW9ja1NjcmVlbkRldmljZShET01TdHJpbmcgcGVyc2lz
dGVudElkLCBET01TdHJpbmcgbGFiZWwpOworICAgIHZvaWQgY2xlYXJNb2NrTWVkaWFEZXZpY2Vz
KCk7CisgICAgdm9pZCByZW1vdmVNb2NrTWVkaWFEZXZpY2UoRE9NU3RyaW5nIHBlcnNpc3RlbnRJ
ZCk7CisgICAgdm9pZCByZXNldE1vY2tNZWRpYURldmljZXMoKTsKIH07CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAy
ODMxYTg3Yjk3MTUwMjc5ODUzNDAxOTQzZGRjNGY5ZjMyYTYzY2MyLi45NWFhZWY0Y2RhMGY4OGMy
OGExZGY4ZTNlZmEyYzU1MWVhN2I3M2Q4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTE5NzEsNiArMTk3MSw3MSBA
QCB2b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXND
YWxsYmFjayhWZWN0b3I8U3RyaW5nPiYgZAogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soQWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0lELCAxLCAmcmVzdWx0KTsKIH0KIAordm9pZCBU
ZXN0UnVubmVyOjphZGRNb2NrTWVkaWFEZXZpY2UoSlNTdHJpbmdSZWYgcGVyc2lzdGVudElkLCBK
U1N0cmluZ1JlZiBsYWJlbCwgY29uc3QgY2hhciogdHlwZSkKK3sKKyAgICBWZWN0b3I8V0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVS
ZWY+PiB2YWx1ZXM7CisKKyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJQZXJzaXN0ZW50SUQiKSB9KTsKKyAgICB2YWx1ZXMuYXBwZW5kKHRv
V0socGVyc2lzdGVudElkKSk7CisKKyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJMYWJlbCIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQodG9X
SyhsYWJlbCkpOworCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiVHlwZSIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh0eXBlKSB9KTsKKworICAgIFZlY3RvcjxXS1N0
cmluZ1JlZj4gcmF3S2V5czsKKyAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdWYWx1ZXM7CisgICAg
cmF3S2V5cy5yZXNpemUoa2V5cy5zaXplKCkpOworICAgIHJhd1ZhbHVlcy5yZXNpemUodmFsdWVz
LnNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVl
c1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IkFkZE1vY2tNZWRpYURldmljZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS0RpY3Rpb25hcnlSZWY+
IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLRGljdGlvbmFyeUNyZWF0ZShyYXdLZXlzLmRhdGEoKSwg
cmF3VmFsdWVzLmRhdGEoKSwgcmF3S2V5cy5zaXplKCkpKTsKKworICAgIFdLQnVuZGxlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1l
c3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisKK3ZvaWQg
VGVzdFJ1bm5lcjo6YWRkTW9ja0NhbWVyYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQs
IEpTU3RyaW5nUmVmIGxhYmVsKQoreworICAgIGFkZE1vY2tNZWRpYURldmljZShwZXJzaXN0ZW50
SWQsIGxhYmVsLCAiY2FtZXJhIik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6YWRkTW9ja01pY3Jv
cGhvbmVEZXZpY2UoSlNTdHJpbmdSZWYgcGVyc2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJlbCkK
K3sKKyAgICBhZGRNb2NrTWVkaWFEZXZpY2UocGVyc2lzdGVudElkLCBsYWJlbCwgIm1pY3JvcGhv
bmUiKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjphZGRNb2NrU2NyZWVuRGV2aWNlKEpTU3RyaW5n
UmVmIHBlcnNpc3RlbnRJZCwgSlNTdHJpbmdSZWYgbGFiZWwpCit7CisgICAgYWRkTW9ja01lZGlh
RGV2aWNlKHBlcnNpc3RlbnRJZCwgbGFiZWwsICJzY3JlZW4iKTsKK30KKwordm9pZCBUZXN0UnVu
bmVyOjpjbGVhck1vY2tNZWRpYURldmljZXMoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Q2xlYXJNb2NrTWVkaWFEZXZpY2VzIikpOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVz
c2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdl
dCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpyZW1vdmVNb2Nr
TWVkaWFEZXZpY2UoSlNTdHJpbmdSZWYgcGVyc2lzdGVudElkKQoreworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiUmVtb3ZlTW9ja01lZGlhRGV2aWNlIikpOworICAgIFdLUmV0YWluUHRyPFdLVHlw
ZVJlZj4gbWVzc2FnZUJvZHkodG9XSyhwZXJzaXN0ZW50SWQpKTsKKworICAgIFdLQnVuZGxlUG9z
dFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCks
IG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisKK3Zv
aWQgVGVzdFJ1bm5lcjo6cmVzZXRNb2NrTWVkaWFEZXZpY2VzKCkKK3sKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlJlc2V0TW9ja01lZGlhRGV2aWNlcyIpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5j
aHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNz
YWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKICNpZiBQTEFURk9STShNQUMp
CiB2b2lkIFRlc3RSdW5uZXI6OmNvbm5lY3RNb2NrR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKIHsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKaW5kZXggZjI5MDFiYzYyZTYyMTBmNDA3MWYyODdhNDMyZWZiMTdlYjNjOWQ2OS4uNzg5YmEy
MzAyMzY4MzA5Y2EwOTlhMWVmYjc0NTdlMTdhMjUzMjZmMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ0Niw2ICs0NDYs
MTMgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcEFsbEhUVFBSZWRpcmVjdGVkUmVzcG9uc2VIZWFk
ZXJzKCkgeyBtX2R1bXBBbGxIVFRQUmVkaXJlY3RlZFJlc3BvbnNlSGVhZGVycyA9IHRydWU7IH0K
ICAgICBib29sIHNob3VsZER1bXBBbGxIVFRQUmVkaXJlY3RlZFJlc3BvbnNlSGVhZGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fZHVtcEFsbEhUVFBSZWRpcmVjdGVkUmVzcG9uc2VIZWFkZXJzOyB9CiAK
KyAgICB2b2lkIGFkZE1vY2tDYW1lcmFEZXZpY2UoSlNTdHJpbmdSZWYgcGVyc2lzdGVudElkLCBK
U1N0cmluZ1JlZiBsYWJlbCk7CisgICAgdm9pZCBhZGRNb2NrTWljcm9waG9uZURldmljZShKU1N0
cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsKTsKKyAgICB2b2lkIGFkZE1v
Y2tTY3JlZW5EZXZpY2UoSlNTdHJpbmdSZWYgcGVyc2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJl
bCk7CisgICAgdm9pZCBjbGVhck1vY2tNZWRpYURldmljZXMoKTsKKyAgICB2b2lkIHJlbW92ZU1v
Y2tNZWRpYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQpOworICAgIHZvaWQgcmVzZXRN
b2NrTWVkaWFEZXZpY2VzKCk7CisKIHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigpOwogCkBAIC00
NTUsNiArNDYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldER1bXBQaXhlbHMoYm9vbCk7CiAg
ICAgdm9pZCBzZXRXYWl0VW50aWxEb25lKGJvb2wpOwogCisgICAgdm9pZCBhZGRNb2NrTWVkaWFE
ZXZpY2UoSlNTdHJpbmdSZWYgcGVyc2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJlbCwgY29uc3Qg
Y2hhciogdHlwZSk7CisKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gbV90ZXN0VVJMOyAvLyBT
ZXQgYnkgSW5qZWN0ZWRCdW5kbGVQYWdlIG9uY2UgcHJvdmlzaW9uYWwgbG9hZCBzdGFydHMuCiAK
ICAgICBib29sIG1fc2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBiYTg1MTg5NTQ5ZGQzNzUwOWVi
M2UwMGU4MzczODE2ZTM4MGYzYzNhLi4zNzdjY2ZlMmMzZTYwOTZlZGJhYWVmYzJhZmE3NjQ4ZDAz
ZGU3NjQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAt
NDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS0ZyYW1lSGFuZGxlUmVmLmg+CiAjaW5j
bHVkZSA8V2ViS2l0L1dLRnJhbWVJbmZvUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLSWNvbkRh
dGFiYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLTW9ja01lZGlhRGV2aWNlLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0L1dLTmF2aWdhdGlvblJlc3BvbnNlUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dL
Tm90aWZpY2F0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5o
PgpAQCAtMjg2Niw2ICsyODY3LDI2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKICAgICBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
UmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShkYXRhU3RvcmUpOwogfQogCit2b2lkIFRlc3RDb250cm9s
bGVyOjphZGRNb2NrTWVkaWFEZXZpY2UoV0tTdHJpbmdSZWYgcGVyc2lzdGVudElELCBXS1N0cmlu
Z1JlZiBsYWJlbCwgV0tTdHJpbmdSZWYgdHlwZSkKK3sKKyAgICBXS0FkZE1vY2tNZWRpYURldmlj
ZShwbGF0Zm9ybUNvbnRleHQoKSwgcGVyc2lzdGVudElELCBsYWJlbCwgdHlwZSk7Cit9CisKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyTW9ja01lZGlhRGV2aWNlcygpCit7CisgICAgV0tDbGVh
ck1vY2tNZWRpYURldmljZXMocGxhdGZvcm1Db250ZXh0KCkpOworfQorCit2b2lkIFRlc3RDb250
cm9sbGVyOjpyZW1vdmVNb2NrTWVkaWFEZXZpY2UoV0tTdHJpbmdSZWYgcGVyc2lzdGVudElEKQor
eworICAgIFdLUmVtb3ZlTW9ja01lZGlhRGV2aWNlKHBsYXRmb3JtQ29udGV4dCgpLCBwZXJzaXN0
ZW50SUQpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldE1vY2tNZWRpYURldmljZXMo
KQoreworICAgIFdLUmVzZXRNb2NrTWVkaWFEZXZpY2VzKHBsYXRmb3JtQ29udGV4dCgpKTsKK30K
KwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQWRk
VGVzdE9wdGlvbnMoVGVzdE9wdGlvbnMmKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCmluZGV4IGYzMzc4MzQ0M2VmNjJhYjBjZGRmODg5OGFhZTA3NjdhZGRl
MWNiMjEuLmE0ODEwM2ZhZDdhNTM4NjA1Zjk5MTcyZWRhMmNkMTA1OWMxNzQ0OGUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTIxMyw2ICsyMTMsMTEgQEAgcHVi
bGljOgogICAgIGJvb2wgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbE5hdmlnYXRpb247IH0KICAgICB2b2lkIGNsZWFyRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCkgeyBtX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbiA9IGZhbHNlOyB9CiAKKyAgICB2b2lkIGFkZE1vY2tN
ZWRpYURldmljZShXS1N0cmluZ1JlZiBwZXJzaXN0ZW50SUQsIFdLU3RyaW5nUmVmIGxhYmVsLCBX
S1N0cmluZ1JlZiB0eXBlKTsKKyAgICB2b2lkIGNsZWFyTW9ja01lZGlhRGV2aWNlcygpOworICAg
IHZvaWQgcmVtb3ZlTW9ja01lZGlhRGV2aWNlKFdLU3RyaW5nUmVmIHBlcnNpc3RlbnRJRCk7Cisg
ICAgdm9pZCByZXNldE1vY2tNZWRpYURldmljZXMoKTsKKwogcHJpdmF0ZToKICAgICBXS1JldGFp
blB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKFdL
Q29udGV4dENvbmZpZ3VyYXRpb25SZWYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZp
Z3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNTI0NzVkZmU0NzliMDYz
MjE2NDJjYWFkM2U5MDNkMDNhNzY5NWU5Yi4uMDVjM2NlNjFhOGJlZjNlODk1NjlmYzU2YmMzYzk3
YjJkNzg4ODc2MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
QEAgLTkxNiw2ICs5MTYsMzkgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlv
bjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJBZGRNb2NrTWVkaWFEZXZpY2UiKSkgeworICAgICAgICBBU1NFUlQo
V0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKwor
ICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nh
c3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBwZXJzaXN0ZW50SURLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlBlcnNpc3RlbnRJRCIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IGxhYmVsS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJMYWJl
bCIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHR5cGVLZXkoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlR5cGUiKSk7CisKKyAgICAgICAgYXV0byBw
ZXJzaXN0ZW50SUQgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRl
bUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHBlcnNpc3RlbnRJREtleS5nZXQoKSkpOwor
ICAgICAgICBhdXRvIGxhYmVsID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFy
eUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBsYWJlbEtleS5nZXQoKSkpOwor
ICAgICAgICBhdXRvIHR5cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHR5cGVLZXkuZ2V0KCkpKTsKKwor
ICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuYWRkTW9ja01lZGlhRGV2aWNlKHBl
cnNpc3RlbnRJRCwgbGFiZWwsIHR5cGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNs
ZWFyTW9ja01lZGlhRGV2aWNlcyIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5jbGVhck1vY2tNZWRpYURldmljZXMoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJSZW1vdmVNb2NrTWVkaWFEZXZpY2UiKSkgeworICAgICAgICBXS1N0cmluZ1JlZiBwZXJzaXN0
ZW50SWQgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpOworCisgICAgICAg
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5yZW1vdmVNb2NrTWVkaWFEZXZpY2UocGVyc2lz
dGVudElkKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJSZXNldE1vY2tNZWRpYURldmlj
ZXMiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkucmVzZXRNb2NrTWVk
aWFEZXZpY2VzKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIkNvbm5lY3RNb2NrR2FtZXBhZCIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRCht
ZXNzYWdlQm9keSkgPT0gV0tVSW50NjRHZXRUeXBlSUQoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWQ2N2Y1YzNmNzM2
NmVmYzIwODRiNzRkNGY0MjEwODY5NjZjMjIwYS4uYjcyZTM0MmVlYTU5OTI0ZGU4MzM2NzYxYWUx
ODhmNzc0NWNiYzE2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA2LTI1ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGNvbnRyb2wg
bW9jayBtZWRpYSBkZXZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY5NTgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisK
KyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1l
dmVudC0yLmh0bWw6IEFkZGVkLgorCiAyMDE4LTA2LTI1ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0
c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBNYWtlIGltcG9ydGVkL21v
emlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tcGF1c2luZy5odG1sIHBhc3MgcmVs
aWFibHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNo
YW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
ZGV2aWNlLWNoYW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGM2YjYxMDc2
ZmFhYTNkZTRmODE2OGY3OTY5Y2YxMGY2MDdhNjlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTICdkZXZpY2VjaGFuZ2UnIGV2ZW50IGZpcmVkIHdoZW4g
ZGV2aWNlIGxpc3QgY2hhbmdlcyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNkNWYyYmRm
ZWRkOTFlY2JkMjNmYzcxYjgzNTcxZTA3MDdiMjU1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwKQEAgLTAs
MCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+VGVzdGluZyBsb2NhbCBhdWRpbyBjYXB0dXJlIHBs
YXliYWNrIGNhdXNlcyAicGxheWluZyIgZXZlbnQgdG8gZmlyZTwvdGl0bGU+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdD4KKyAgICBsZXQgZGV2aWNlSWRzID0gW107CisgICAgcHJvbWlzZV90ZXN0
KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoInRlc3QgcmVxdWlyZXMgaW50ZXJuYWwgQVBJ
Iik7CisKKyAgICAgICAgdGVzdC5hZGRfY2xlYW51cCgoKSA9PiB7IHRlc3RSdW5uZXIucmVzZXRN
b2NrTWVkaWFEZXZpY2VzKCk7IH0pOworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlh
UGVybWlzc2lvbih0cnVlKTsKKworICAgICAgICBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7IGF1ZGlvOnRydWUsIHZpZGVvOnRydWUgfSk7CisKKyAgICAgICAgbGV0
IGRldmljZXMgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMo
KTsKKworICAgICAgICBhc3NlcnRfdHJ1ZSghIWRldmljZXMubGVuZ3RoLCAiY2hlY2sgdGhlcmUg
YXJlIHNvbWUgZGV2aWNlcyIpOworCisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJNb2NrTWVkaWFE
ZXZpY2VzKCk7CisKKyAgICAgICAgZGV2aWNlcyA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZW51bWVyYXRlRGV2aWNlcygpOworICAgICAgICBhc3NlcnRfZmFsc2UoISFkZXZpY2VzLmxl
bmd0aCwgImNoZWNrIHRoZXJlIGFyZSBubyBtb3JlIGRldmljZXMiKTsKKworICAgICAgICBhd2Fp
dCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLm9uZGV2aWNlY2hhbmdlID0gcmVzb2x2ZTsKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJldmVudCAxIHRh
a2luZyBhIGxvbmcgdGltZSIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAg
ICAgIH0sIDUwMDApOworICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRNb2NrQ2FtZXJhRGV2aWNl
KCJpZDEiLCAibXkgY2FtZXJhIik7CisgICAgICAgIH0pOworICAgICAgICBkZXZpY2VzID0gYXdh
aXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCk7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoZGV2aWNlc1swXS5raW5kLCAidmlkZW9pbnB1dCIpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKGRldmljZXNbMF0ubGFiZWwsICJteSBjYW1lcmEiKTsKKworICAgICAgICBhd2Fp
dCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLm9uZGV2aWNlY2hhbmdlID0gcmVzb2x2ZTsKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJldmVudCAyIHRh
a2luZyBhIGxvbmcgdGltZSIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAg
ICAgIH0sIDUwMDApOworICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRNb2NrTWljcm9waG9uZURl
dmljZSgiaWQyIiwgIm15IG1pYyIpOworICAgICAgICB9KTsKKyAgICAgICAgZGV2aWNlcyA9IGF3
YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGRldmljZXNbMF0ua2luZCwgImF1ZGlvaW5wdXQiKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhkZXZpY2VzWzBdLmxhYmVsLCAibXkgbWljIik7CisKKyAgICB9LCAiJ2Rldmlj
ZWNoYW5nZScgZXZlbnQgZmlyZWQgd2hlbiBkZXZpY2UgbGlzdCBjaGFuZ2VzIik7CisgICAgPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343517</attachid>
            <date>2018-06-25 11:13:41 -0700</date>
            <delta_ts>2018-06-25 12:19:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-186958-20180625111341.patch</filename>
            <type>text/plain</type>
            <size>77507</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2MxZDMzNDdiZjg1YjI0
ZTE3Y2I5ODliMmE5MmY4ZmQ1N2NmNDVjYi4uZmI5ZWVhZmEzMTA2YmVhMzA5N2UzZGFjMjNjMTcw
MmZiYzU5MTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE4LTA2LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGNvbnRy
b2wgbW9jayBtZWRpYSBkZXZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODY5NTgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24u
CisKKyAgICAgICAgUmVmYWN0b3IgY29kZSB0byBpbnRyb2R1Y2UgYSBNb2NrRGV2aWNlIHN0cnVj
dHVyZSB0aGF0IGNhbiBiZSB1c2VkIGluIG11bHRpcGxlIHByb2Nlc3Nlcy4KKyAgICAgICAgVXBk
YXRlIG1vY2sgc291cmNlcyBhbmQgY2VudGVyIHRvIHVzZSBNb2NrRGV2aWNlLgorICAgICAgICBB
ZGQgQVBJIHRvIHVwZGF0ZSBtb2NrIG1lZGlhIGRldmljZXMuCisKKyAgICAgICAgTWFrZSBNZWRp
YURldmljZXMgYW4gQWN0aXZlRE9NT2JqZWN0IHNvIHRoYXQgaXQgZG9lcyBub3QgZ2V0IGNvbGxl
Y3RlZCB3aGVuIG9uZGV2aWNlY2hhbmdlIGlzIHNldC4KKworICAgICAgICAgVGVzdDogZmFzdC9t
ZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbAorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFE
ZXZpY2VzOjpNZWRpYURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6c2NoZWR1bGVkRXZlbnRUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6aGFzUGVuZGluZ0FjdGl2
aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6YWN0aXZlRE9NT2Jq
ZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OmNhblN1c3Bl
bmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuaWRsOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWljcm9waG9uZVByb3BlcnRpZXM6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWljcm9waG9uZVByb3BlcnRpZXM6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ2FtZXJhUHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDYW1lcmFQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhRGV2aWNlOjppc01pY3JvcGhvbmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhRGV2aWNlOjppc0NhbWVyYSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrTWVkaWFEZXZpY2U6OmlzRGlzcGxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrTWVkaWFEZXZpY2U6OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlh
RGV2aWNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRGV2aWNl
OjpkZWNvZGVNb2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRGV2
aWNlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0RGV2aWNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpkZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmRldmljZU1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkZXZpY2VMaXN0Rm9yRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjcmVhdGVDYXB0dXJlRGV2aWNlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldERldmljZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZERldmljZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlRGV2aWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjYXB0dXJlRGV2aWNlV2l0aFBl
cnNpc3RlbnRJRCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6
YXVkaW9EZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNl
Ojp2aWRlb0RldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmRpc3BsYXlEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlh
U291cmNlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6aW5pdGlhbGl6ZVNldHRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5ncyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydGVkQ29u
c3RyYWludHMpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpkZXZpY2Ug
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2V0TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZpY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphZGREZXZp
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJl
bW92ZURldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1v
Y2tSZWFsdGltZVZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6Om1vY2tDYW1lcmEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Om1vY2tTY3JlZW4gY29uc3QpOgorCiAyMDE4LTA2LTI1
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEF1dG9U
YWJsZUxheW91dCB3YXN0ZXMgNTJLQiBvZiBWZWN0b3IgY2FwYWNpdHkgb24gbnl0aW1lcy5jb20K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYjVlMmE0OWI1NTk3MjlkOWZhNWNkZThjOTRjMGEwYjQ5MTExZWMyMC4uMmY0
NjM4ODE0ODliODhjMWY2Mjk1YWI2MjRjNzMzM2IzZWM1Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNiBAQAorMjAxOC0wNi0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIEFQSSB0byBjb250cm9sIG1vY2sgbWVkaWEgZGV2aWNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2OTU4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkZCBBUEkgdG8gY2xlYXIsIHNl
dCwgcmVtb3ZlIGFuZCByZXNldCBtb2NrIG1lZGlhIGRldmljZXMuCisgICAgICAgIFRoZSBtb2Nr
IG1lZGlhIGNlbnRlciBvZiBVSVByb2Nlc3MgYW5kIGFsbCBXZWJQcm9jZXNzZXMgYXJlIHVwZGF0
ZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tNb2NrTWVkaWFEZXZpY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKHR5cGVGcm9tU3RyaW5n
KToKKyAgICAgICAgKFdLQWRkTW9ja01lZGlhRGV2aWNlKToKKyAgICAgICAgKFdLQ2xlYXJNb2Nr
TWVkaWFEZXZpY2VzKToKKyAgICAgICAgKFdLUmVtb3ZlTW9ja01lZGlhRGV2aWNlKToKKyAgICAg
ICAgKFdLUmVzZXRNb2NrTWVkaWFEZXZpY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tNb2NrTWVkaWFEZXZpY2UuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFkZE1vY2tNZWRp
YURldmljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjbGVhck1vY2tNZWRp
YURldmljZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTW9ja01l
ZGlhRGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc2V0TW9ja01l
ZGlhRGV2aWNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkTW9j
a01lZGlhRGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2xlYXJNb2NrTWVk
aWFEZXZpY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlTW9ja01lZGlh
RGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzZXRNb2NrTWVkaWFEZXZp
Y2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTgtMDYtMjMgIEJyaWFuIEJ1cmcg
IDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gV2ViIEF1dG9tYXRpb246IGluY2x1
ZGUgY29ycmVjdCBrZXkgY29kZSB3aXRoIHN5bnRoZXNpemVkIE5TRXZlbnRzIHVzZWQgZm9yIGtl
eXN0cm9rZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmNwcAppbmRleCBhZjNiZjEzMjI5NDk3YzA5OTU1NDYyNmNhMjM4OWVjYjZhY2Ex
YTg1Li5iZTkwNTFjOTM5OTRkNWJiYzEwYTBkOGFhNjk0MTliMTcxNGFlZWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCkBA
IC00Nyw4ICs0Nyw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBNZWRpYURldmlj
ZXM6Ok1lZGlhRGV2aWNlcyhEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50
KQogICAgICwgbV9zY2hlZHVsZWRFdmVudFRpbWVyKCp0aGlzLCAmTWVkaWFEZXZpY2VzOjpzY2hl
ZHVsZWRFdmVudFRpbWVyRmlyZWQpCisgICAgLCBtX2V2ZW50TmFtZXMoZXZlbnROYW1lcygpKQog
ewogICAgIG1fZGV2aWNlQ2hhbmdlZFRva2VuID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
c2luZ2xldG9uKCkuYWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHRoaXNdKCkgewogCkBAIC02MSwxNiArNjIsMjAgQEAgaW5saW5lIE1lZGlh
RGV2aWNlczo6TWVkaWFEZXZpY2VzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgICAgIG1f
c2NoZWR1bGVkRXZlbnRUaW1lci5zdGFydE9uZVNob3QoU2Vjb25kcyhyYW5kb21OdW1iZXIoKSAv
IDIpKTsKICAgICB9KTsKIAorICAgIHN1c3BlbmRJZk5lZWRlZCgpOworCiAgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhRGV2aWNlczo6RGlzcGxheUNhcHR1cmVTdXJm
YWNlVHlwZTo6TW9uaXRvcikgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6TW9uaXRvciksICJNZWRpYURldmljZXM6
OkRpc3BsYXlDYXB0dXJlU3VyZmFjZVR5cGU6Ok1vbml0b3IgaXMgbm90IGVxdWFsIHRvIFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25pdG9yIGFzIGV4
cGVjdGVkIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhRGV2
aWNlczo6RGlzcGxheUNhcHR1cmVTdXJmYWNlVHlwZTo6V2luZG93KSA9PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpX
aW5kb3cpLCAiTWVkaWFEZXZpY2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VUeXBlOjpXaW5kb3cg
aXMgbm90IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpX
aW5kb3cgYXMgZXhwZWN0ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVf
dD4oTWVkaWFEZXZpY2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VUeXBlOjpBcHBsaWNhdGlvbikg
PT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3Bs
YXlTdXJmYWNlVHlwZTo6QXBwbGljYXRpb24pLCAiTWVkaWFEZXZpY2VzOjpEaXNwbGF5Q2FwdHVy
ZVN1cmZhY2VUeXBlOjpBcHBsaWNhdGlvbiBpcyBub3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6OkFwcGxpY2F0aW9uIGFzIGV4cGVjdGVkIik7CiAgICAg
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhRGV2aWNlczo6RGlzcGxheUNh
cHR1cmVTdXJmYWNlVHlwZTo6QnJvd3NlcikgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6QnJvd3NlciksICJNZWRp
YURldmljZXM6OkRpc3BsYXlDYXB0dXJlU3VyZmFjZVR5cGU6OkJyb3dzZXIgaXMgbm90IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpCcm93c2VyIGFzIGV4
cGVjdGVkIik7CiB9CiAKLU1lZGlhRGV2aWNlczo6fk1lZGlhRGV2aWNlcygpCitNZWRpYURldmlj
ZXM6On5NZWRpYURldmljZXMoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgTWVkaWFEZXZpY2VzOjpzdG9w
KCkKIHsKICAgICBpZiAobV9kZXZpY2VDaGFuZ2VkVG9rZW4pCi0gICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnJlbW92ZURldmljZXNDaGFuZ2VkT2JzZXJ2ZXIo
bV9kZXZpY2VDaGFuZ2VkVG9rZW4udmFsdWUoKSk7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnNpbmdsZXRvbigpLnJlbW92ZURldmljZXNDaGFuZ2VkT2JzZXJ2ZXIobV9kZXZp
Y2VDaGFuZ2VkVG9rZW4pOwogfQogCiBSZWY8TWVkaWFEZXZpY2VzPiBNZWRpYURldmljZXM6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xNTcsNyArMTYyLDIzIEBAIE1lZGlhVHJhY2tT
dXBwb3J0ZWRDb25zdHJhaW50cyBNZWRpYURldmljZXM6OmdldFN1cHBvcnRlZENvbnN0cmFpbnRz
KCkKIAogdm9pZCBNZWRpYURldmljZXM6OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCgpCiB7Ci0g
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kZXZpY2VjaGFuZ2VF
dmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kZXZpY2Vj
aGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKK2Jvb2wgTWVkaWFEZXZpY2VzOjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdAoreworICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgJiYgaGFzRXZlbnRMaXN0ZW5lcnMobV9ldmVudE5hbWVzLmRldmljZWNoYW5nZUV2ZW50
KTsKK30KKworY29uc3QgY2hhciogTWVkaWFEZXZpY2VzOjphY3RpdmVET01PYmplY3ROYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gIk1lZGlhRGV2aWNlcyI7Cit9CisKK2Jvb2wgTWVkaWFEZXZp
Y2VzOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKaW5kZXggYWUzNWQ1ZTk0ZDBi
YTc2OTEwMTU0ZThkYzEwZWUzZGE4ZmY4NjA0ZS4uMDJkMWFlZjlkNmYzMTc4NjdhOTdmMTk1YmU5
MDYxNDg1OTU0OWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5oCkBAIC0zMyw2ICszMyw4IEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3Iu
aCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgpAQCAtNDksNyArNTEsNyBAQCBj
bGFzcyBNZWRpYVN0cmVhbTsKIAogc3RydWN0IE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50
czsKIAotY2xhc3MgTWVkaWFEZXZpY2VzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFEZXZpY2Vz
PiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhRGV2aWNlcz4geworY2xh
c3MgTWVkaWFEZXZpY2VzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFEZXZpY2VzPiwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxNZWRpYURldmljZXM+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PE1lZGlhRGV2aWNlcz4gY3JlYXRlKERvY3VtZW50Jik7CiAKQEAgLTg0LDE0ICs4NiwyMyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKTsKIAorICAgIGZy
aWVuZCBjbGFzcyBKU01lZGlhRGV2aWNlc093bmVyOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0
CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOworICAg
IHZvaWQgc3RvcCgpIGZpbmFsOworICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qg
ZmluYWw7CisKICAgICAvLyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLgotICAgIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gTWVkaWFEZXZpY2VzRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQotICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJp
ZGUgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYURldmljZXNFdmVudFRhcmdldEludGVy
ZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYo
KTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCiAg
ICAgVGltZXIgbV9zY2hlZHVsZWRFdmVudFRpbWVyOwotICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6RGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuPiBtX2Rldmlj
ZUNoYW5nZWRUb2tlbjsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpEZXZpY2VzQ2hh
bmdlZE9ic2VydmVyVG9rZW4gbV9kZXZpY2VDaGFuZ2VkVG9rZW47CisgICAgY29uc3QgRXZlbnRO
YW1lcyYgbV9ldmVudE5hbWVzOyAvLyBOZWVkIHRvIGNhY2hlIHRoaXMgc28gd2UgY2FuIHVzZSBp
dCBmcm9tIEdDIHRocmVhZHMuCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKaW5k
ZXggMzFhMDRkZTFkNDg0N2U1ZTc4MmM0YzQzOTMwNzFjMTMzMDljMmNkNC4uZDdiYTNlZDI0MWYy
MjNjMjc0YmU4YmIzN2IzNDZmZmVjZjM0NDNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbApAQCAtMzAsNiArMzAsNyBAQAog
CiAvLyBGSVhNRSAxNjk4NzE6IHNob3VsZCBiZSBzdWJjbGFzcyBvZiBFdmVudFRhcmdldAogWwor
ICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCiAgICAg
Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBNZWRpYURldmljZXMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIwNmM0
OTU3NDgzMWQwY2QyODAzMjZkNjZjYjZmMDI5NDNhYjc3YmYuLmY2ODM2YTZmODk5MzVkOGI3NWFl
N2U2MDA4MGMwM2U3MTY1MmZhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNjQsNiArMTA2NCw3IEBACiAJCTQxMzhEMzM1
MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVu
dENvbnRleHQuaCAqLzsgfTsKIAkJNDEzOEY4NTgxRDI1M0YwRTAwMUNCNjFFIC8qIEpTRE9NSXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MzhGODU2MUQyNTNFRUUwMDFDQjYxRSAvKiBKU0RPTUl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEzQzJDMzQxQkMyOUE4RjAwNzUy
MDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxM0MyQzMzMUJDMjlBN0IwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVj
dG9yLmggKi87IH07CisJCTQxM0NDRDRBMjBERTAzNEYwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZp
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0ND
RDQ4MjBERTAxM0MwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTNFMDA3OTFEQjBFNEYyMDAyMzQx
RDIgLyogTWVtb3J5UmVsZWFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDEzRTAwNzgxREIwRTRERTAwMjM0MUQyIC8qIE1lbW9yeVJlbGVhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTRCODIw
NTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyog
U3RydWN0dXJlZENsb25lLmggKi87IH07CiAJCTQxNERFREU3MUY5RkU5MUUwMDQ3QzQwRCAvKiBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTRERURFNTFGOUZFOTE1MDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC03MjAyLDYgKzcyMDMsNyBAQAogCQk0MTM4Rjg1NTFEMjUzRUVFMDAxQ0I2MUUgLyogSlNE
T01JdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RP
TUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzOEY4NTYxRDI1
M0VFRTAwMUNCNjFFIC8qIEpTRE9NSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNET01JdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTNDMkMzMzFCQzI5QTdCMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxM0NDRDQ4MjBERTAxM0MwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZp
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja01lZGlhRGV2aWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0UwMDc3MURCMEU0REUwMDIzNDFEMiAv
KiBNZW1vcnlSZWxlYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lbW9yeVJlbGVhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFMDA3
ODFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZW1vcnlSZWxlYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxM0UwMDdCMURCMEU3MDcwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlSZWxlYXNlQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODc3NCw2ICsxODc3Niw3IEBACiAJ
CQkJMDc3QjY0MTUxQjk1RjcwMzAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgg
Ki8sCiAJCQkJMDc3QjY0MTAxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNb2NrLmNwcCAqLywKIAkJCQkwNzdCNjQxMTFCOTRGMTJFMDAzRTlBRDUgLyogTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suaCAqLywKKwkJCQk0MTNDQ0Q0ODIwREUwMTNDMDA2NUEy
MUEgLyogTW9ja01lZGlhRGV2aWNlLmggKi8sCiAJCQkJMDdENkE0RjExQkVENUY4ODAwMTc0MTQ2
IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcCAqLywKIAkJCQkwN0Q2QTRGMjFCRUQ1Rjg4
MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCAqLywKIAkJCQkwN0Q2QTRFRDFC
RUNGMkQyMDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovLApAQCAtMjk0
MjMsNiArMjk0MjYsNyBAQAogCQkJCUNERjRCNzIwMUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RN
RmFjdG9yeS5pZGwgaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMg
LyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlB
NTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNDQ0Q0
QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVk
aWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Q2QTRGNDFCRUQ1Rjg4MDAx
NzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4IDBjNzI1Zjk4MDlkNmJlOTczOTNjY2IzM2RmZjdk
ODE5MTY1OThmOWQuLjYxZmYwZWFhZTU2NDkwNDcyM2M0Y2I3MDAyZjU1YjRmZTQ4ZDI5OTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKQEAgLTg4LDEzICs4OCwxNCBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuID0gdW5zaWduZWQ7CiAgICAg
RGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuIGFkZERldmljZXNDaGFuZ2VkT2JzZXJ2ZXIoc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlRGV2aWNlc0NoYW5nZWRPYnNl
cnZlcihEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4pOwotICAgIHZvaWQgY2FwdHVyZURldmlj
ZXNDaGFuZ2VkKCk7CiAKICAgICB2b2lkIHNldFZpZGVvQ2FwdHVyZVBhZ2VTdGF0ZShib29sLCBi
b29sKTsKIAogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIoKTsKIAor
ICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CisKICAgICBzdGF0aWMgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlciYgcGxhdGZvcm1DZW50ZXIoKTsKICAgICBSZWFsdGltZU1lZGlhU291
cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODgyZGJhZjEwZTdkNmFkYTA2NjU2Y2UxODcxY2QyMGVhNWI4NGU0YQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKQEAgLTAs
MCArMSwxODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJDYXB0dXJlRGV2aWNl
LmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0cnVjdCBNb2NrTWljcm9waG9uZVByb3BlcnRpZXMgeworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGVmYXVsdFNhbXBs
ZVJhdGUpOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPE1vY2tNaWNyb3Bob25lUHJvcGVydGllcz4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGRlZmF1bHRT
YW1wbGVSYXRlOworICAgICAgICBkZWNvZGVyID4+IGRlZmF1bHRTYW1wbGVSYXRlOworICAgICAg
ICBpZiAoIWRlZmF1bHRTYW1wbGVSYXRlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIE1vY2tNaWNyb3Bob25lUHJvcGVydGllcyB7ICpkZWZhdWx0U2Ft
cGxlUmF0ZSB9OworICAgIH0KKworICAgIGludCBkZWZhdWx0U2FtcGxlUmF0ZSB7IDQ0MTAwIH07
Cit9OworCisvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHByb3BlcnRpZXMgYW5kIHNl
cmlhbGl6YXRpb24gb2YgY29sb3JzLgorc3RydWN0IE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGRlZmF1bHRGcmFtZVJhdGU7Cisg
ICAgICAgIGVuY29kZXIgPDwgZmFjaW5nTW9kZUNhcGFiaWxpdHk7CisgICAgfQorCisgICAgdGVt
cGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0NhbWVy
YVByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGRlZmF1bHRGcmFtZVJhdGU7CisgICAgICAgIGRlY29kZXIgPj4g
ZGVmYXVsdEZyYW1lUmF0ZTsKKyAgICAgICAgaWYgKCFkZWZhdWx0RnJhbWVSYXRlKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlPiBmYWNpbmdNb2RlQ2FwYWJp
bGl0eTsKKyAgICAgICAgZGVjb2RlciA+PiBmYWNpbmdNb2RlQ2FwYWJpbGl0eTsKKyAgICAgICAg
aWYgKCFmYWNpbmdNb2RlQ2FwYWJpbGl0eSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICAgICAgcmV0dXJuIE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsgKmRlZmF1bHRGcmFt
ZVJhdGUsICpmYWNpbmdNb2RlQ2FwYWJpbGl0eSwgQ29sb3I6OmJsYWNrIH07CisgICAgfQorCisg
ICAgZG91YmxlIGRlZmF1bHRGcmFtZVJhdGUgeyAzMCB9OworICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGVDYXBhYmlsaXR5IHsgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlVzZXIgfTsKKyAgICBDb2xv
ciBmaWxsQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKK307CisKK3N0cnVjdCBNb2NrRGlzcGxheVBy
b3BlcnRpZXMgeworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgZGVmYXVs
dEZyYW1lUmF0ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrRGlzcGxheVByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRlZmF1bHRG
cmFtZVJhdGU7CisgICAgICAgIGRlY29kZXIgPj4gZGVmYXVsdEZyYW1lUmF0ZTsKKyAgICAgICAg
aWYgKCFkZWZhdWx0RnJhbWVSYXRlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgICAgICByZXR1cm4gTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgKmRlZmF1bHRGcmFtZVJh
dGUsIENvbG9yOjpsaWdodEdyYXkgfTsKKyAgICB9CisKKyAgICBkb3VibGUgZGVmYXVsdEZyYW1l
UmF0ZSB7IDMwIH07CisgICAgQ29sb3IgZmlsbENvbG9yIHsgQ29sb3I6OmxpZ2h0R3JheSB9Owor
fTsKKworc3RydWN0IE1vY2tNZWRpYURldmljZSB7CisgICAgYm9vbCBpc01pY3JvcGhvbmUoKSBj
b25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1vY2tNaWNyb3Bob25lUHJvcGVy
dGllcz4ocHJvcGVydGllcyk7IH0KKyAgICBib29sIGlzQ2FtZXJhKCkgY29uc3QgeyByZXR1cm4g
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNb2NrQ2FtZXJhUHJvcGVydGllcz4ocHJvcGVydGllcyk7
IH0KKyAgICBib29sIGlzRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihwcm9wZXJ0aWVzKTsgfQorCisgICAgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZSB0eXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc01p
Y3JvcGhvbmUoKSkKKyAgICAgICAgICAgIHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpNaWNyb3Bob25lOworICAgICAgICBpZiAoaXNDYW1lcmEoKSkKKyAgICAgICAgICAgIHJldHVy
biBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE7CisgICAgICAgIEFTU0VSVChpc0Rp
c3BsYXkoKSk7CisgICAgICAgIHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3Jl
ZW47CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBwZXJz
aXN0ZW50SWQ7CisgICAgICAgIGVuY29kZXIgPDwgbGFiZWw7CisgICAgICAgIHN3aXRjaE9uKHBy
b3BlcnRpZXMsIFsmXShjb25zdCBNb2NrTWljcm9waG9uZVByb3BlcnRpZXMmIHByb3BlcnRpZXMp
IHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgKHVpbnQ4X3QpMTsKKyAgICAgICAgICAgIGVuY29k
ZXIgPDwgcHJvcGVydGllczsKKyAgICAgICAgfSwgWyZdKGNvbnN0IE1vY2tDYW1lcmFQcm9wZXJ0
aWVzJiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8ICh1aW50OF90KTI7Cisg
ICAgICAgICAgICBlbmNvZGVyIDw8IHByb3BlcnRpZXM7CisgICAgICAgIH0sIFsmXShjb25zdCBN
b2NrRGlzcGxheVByb3BlcnRpZXMmIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGVuY29kZXIg
PDwgKHVpbnQ4X3QpMzsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcHJvcGVydGllczsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFByb3BlcnRpZXMsIHR5cGVu
YW1lIERlY29kZXI+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja01lZGlhRGV2aWNlPiBk
ZWNvZGVNb2NrTWVkaWFEZXZpY2UoRGVjb2RlciYgZGVjb2RlciwgU3RyaW5nJiYgcGVyc2lzdGVu
dElkLCBTdHJpbmcmJiBsYWJlbCkKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UHJvcGVy
dGllcz4gcHJvcGVydGllczsKKyAgICAgICAgZGVjb2RlciA+PiBwcm9wZXJ0aWVzOworICAgICAg
ICBpZiAoIXByb3BlcnRpZXMpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gTW9ja01lZGlhRGV2aWNlIHsgV1RGTW92ZShwZXJzaXN0ZW50SWQpLCBXVEZN
b3ZlKGxhYmVsKSwgV1RGTW92ZSgqcHJvcGVydGllcykgfTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrTWVkaWFEZXZp
Y2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IHBlcnNpc3RlbnRJZDsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50SWQ7
CisgICAgICAgIGlmICghcGVyc2lzdGVudElkKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbGFiZWw7CisgICAgICAgIGRl
Y29kZXIgPj4gbGFiZWw7CisgICAgICAgIGlmICghbGFiZWwpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gaW5kZXg7Cisg
ICAgICAgIGRlY29kZXIgPj4gaW5kZXg7CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHN3aXRjaCAoKmluZGV4KSB7CisgICAg
ICAgIGNhc2UgMToKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVNb2NrTWVkaWFEZXZpY2U8TW9j
a01pY3JvcGhvbmVQcm9wZXJ0aWVzPihkZWNvZGVyLCBXVEZNb3ZlKCpwZXJzaXN0ZW50SWQpLCBX
VEZNb3ZlKCpsYWJlbCkpOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXR1cm4gZGVj
b2RlTW9ja01lZGlhRGV2aWNlPE1vY2tDYW1lcmFQcm9wZXJ0aWVzPihkZWNvZGVyLCBXVEZNb3Zl
KCpwZXJzaXN0ZW50SWQpLCBXVEZNb3ZlKCpsYWJlbCkpOworICAgICAgICBjYXNlIDM6CisgICAg
ICAgICAgICByZXR1cm4gZGVjb2RlTW9ja01lZGlhRGV2aWNlPE1vY2tEaXNwbGF5UHJvcGVydGll
cz4oZGVjb2RlciwgV1RGTW92ZSgqcGVyc2lzdGVudElkKSwgV1RGTW92ZSgqbGFiZWwpKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIFN0cmlu
ZyBwZXJzaXN0ZW50SWQ7CisgICAgU3RyaW5nIGxhYmVsOworICAgIFZhcmlhbnQ8TW9ja01pY3Jv
cGhvbmVQcm9wZXJ0aWVzLCBNb2NrQ2FtZXJhUHJvcGVydGllcywgTW9ja0Rpc3BsYXlQcm9wZXJ0
aWVzPiBwcm9wZXJ0aWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKaW5kZXggOWM2MDI0ZTUzYThh
MDBlZGZlMzgxYzMxMThlYWM5MmU1ODEzM2Q3Yy4uMDAyY2FmMzEyMzZlY2I2NDZiZjgyNDQxMTgy
Y2IxNTA4NzQ2YzAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lk
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogI2VuZGlmCiAK
ICAgICBpZiAoIXNhbXBsZVJhdGUoKSkKLSAgICAgICAgc2V0U2FtcGxlUmF0ZShkZXZpY2UoKSA9
PSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja0RldmljZTo6TWljcm9waG9uZTEgPyA0NDEw
MCA6IDQ4MDAwKTsKKyAgICAgICAgc2V0U2FtcGxlUmF0ZShXVEY6OmdldDxNb2NrTWljcm9waG9u
ZVByb3BlcnRpZXM+KGRldmljZSgpLnByb3BlcnRpZXMpLmRlZmF1bHRTYW1wbGVSYXRlKTsKIAog
ICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgbV90aW1lci5zdGFy
dFJlcGVhdGluZyhyZW5kZXJJbnRlcnZhbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggNDY0NGYw
ODJkNWU2ODQ4ODNhODUxYWMxODE1Y2U3ZGU3ZmUyZmFmZi4uMDg3NTQ5N2ExZWZhMTEwNDUzZjhl
MmQ2ZTUyM2RhYjM2MTdjOTRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTQ0LDExNiArNDQsMTYz
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IE1vY2tEZXZpY2VJbmZvIHsKLSAg
ICBBU0NJSUxpdGVyYWwgaWQgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OwotICAgIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGUgdHlwZTsKLSAgICBBU0NJSUxpdGVyYWwgbmFtZSB7IEFTQ0lJTGl0
ZXJhbDo6bnVsbCgpIH07Ci0gICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Ok1vY2tEZXZpY2Ug
ZGV2aWNlOwotfTsKLQotc3RhdGljIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBNb2NrRGV2aWNlSW5m
bz4mIGRldmljZU1hcCgpCi17Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gaW5mb01hcCA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBNb2NrRGV2aWNlSW5mbyBk
ZXZpY2VzW10gPSB7Ci0gICAgICAgICAgICB7ICIyMzljMjRiMC0yYjE1LTExZTMtODIyNC0wODAw
MjAwYzlhNjYiX3MsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUsICJNb2Nr
IGF1ZGlvIGRldmljZSAxIl9zLCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja0RldmljZTo6
TWljcm9waG9uZTEgfSwKLSAgICAgICAgICAgIHsgIjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4
MDAyMDBjOWE2NiJfcywgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSwgIk1v
Y2sgYXVkaW8gZGV2aWNlIDIiX3MsIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpNb2NrRGV2aWNl
OjpNaWNyb3Bob25lMiB9LAotCi0gICAgICAgICAgICB7ICIyMzljMjRiMi0yYjE1LTExZTMtODIy
NC0wODAwMjAwYzlhNjYiX3MsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSwgIk1v
Y2sgdmlkZW8gZGV2aWNlIDEiX3MsIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpNb2NrRGV2aWNl
OjpDYW1lcmExIH0sCi0gICAgICAgICAgICB7ICIyMzljMjRiMy0yYjE1LTExZTMtODIyNC0wODAw
MjAwYzlhNjYiX3MsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSwgIk1vY2sgdmlk
ZW8gZGV2aWNlIDIiX3MsIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpNb2NrRGV2aWNlOjpDYW1l
cmEyIH0sCi0KLSAgICAgICAgICAgIHsgIlNDUkVFTi0xIl9zLCBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlOjpTY3JlZW4sICJNb2NrIHNjcmVlbiBkZXZpY2UgMSJfcywgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2U6Ok1vY2tEZXZpY2U6OlNjcmVlbjEgfSwKLSAgICAgICAgICAgIHsgIlNDUkVFTi0y
Il9zLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sICJNb2NrIHNjcmVlbiBkZXZp
Y2UgMiJfcywgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Ok1vY2tEZXZpY2U6OlNjcmVlbjIgfSwK
LSAgICAgICAgfTsKLQotICAgICAgICBIYXNoTWFwPFN0cmluZywgTW9ja0RldmljZUluZm8+IG1h
cDsKLSAgICAgICAgZm9yIChhdXRvJiBpbmZvIDogZGV2aWNlcykKLSAgICAgICAgICAgIG1hcC5h
ZGQoaW5mby5pZCwgaW5mbyk7CitzdGF0aWMgaW5saW5lIFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+
IGRlZmF1bHREZXZpY2VzKCkKK3sKKyAgICByZXR1cm4gVmVjdG9yPE1vY2tNZWRpYURldmljZT4g
eworICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiMjM5YzI0YjAtMmIxNS0xMWUzLTgyMjQtMDgw
MDIwMGM5YTY2Il9zLCAiTW9jayBhdWRpbyBkZXZpY2UgMSJfcywgTW9ja01pY3JvcGhvbmVQcm9w
ZXJ0aWVzIHsgNDQxMDAgfSB9LAorICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiMjM5YzI0YjEt
MmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2Il9zLCAiTW9jayBhdWRpbyBkZXZpY2UgMiJfcywg
TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzIHsgNDgwMDAgfSB9LAorCisgICAgICAgIE1vY2tNZWRp
YURldmljZSB7ICIyMzljMjRiMi0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiX3MsICJNb2Nr
IHZpZGVvIGRldmljZSAxIl9zLCBNb2NrQ2FtZXJhUHJvcGVydGllcyB7IDMwLCBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VXNlciwgQ29sb3I6OmJsYWNrIH0g
fSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIjIzOWMyNGIzLTJiMTUtMTFlMy04MjI0LTA4
MDAyMDBjOWE2NiJfcywgIk1vY2sgdmlkZW8gZGV2aWNlIDIiX3MsIE1vY2tDYW1lcmFQcm9wZXJ0
aWVzIHsgMTUsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpF
bnZpcm9ubWVudCwgQ29sb3I6OmRhcmtHcmF5IH0gfSwKKworICAgICAgICBNb2NrTWVkaWFEZXZp
Y2UgeyAiU0NSRUVOLTEiX3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMSJfcywgTW9ja0Rpc3BsYXlQ
cm9wZXJ0aWVzIHsgMzAsIENvbG9yOjpsaWdodEdyYXkgfSB9LAorICAgICAgICBNb2NrTWVkaWFE
ZXZpY2UgeyAiU0NSRUVOLTIiX3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMiJfcywgTW9ja0Rpc3Bs
YXlQcm9wZXJ0aWVzIHsgMTAsIENvbG9yOjp5ZWxsb3cgfSB9CisgICAgfTsKK30KKworc3RhdGlj
IFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+JiBkZXZpY2VzKCkKK3sKKyAgICBzdGF0aWMgYXV0byBk
ZXZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRE
ZXZpY2VzKCk7CisgICAgfSgpKTsKKyAgICByZXR1cm4gZGV2aWNlczsKK30KKworc3RhdGljIEhh
c2hNYXA8U3RyaW5nLCBNb2NrTWVkaWFEZXZpY2U+JiBkZXZpY2VNYXAoKQoreworICAgIHN0YXRp
YyBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIEhhc2hNYXA8U3Ry
aW5nLCBNb2NrTWVkaWFEZXZpY2U+IG1hcDsKKyAgICAgICAgZm9yIChhdXRvJiBkZXZpY2UgOiBk
ZXZpY2VzKCkpCisgICAgICAgICAgICBtYXAuYWRkKGRldmljZS5wZXJzaXN0ZW50SWQsIGRldmlj
ZSk7CisKICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9KCkpOworICAgIHJldHVybiBtYXA7Cit9
CisKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBkZXZpY2VMaXN0Rm9yRGV2
aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKQoreworICAgIGlmIChkZXZpY2UuaXNN
aWNyb3Bob25lKCkpCisgICAgICAgIHJldHVybiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6YXVk
aW9EZXZpY2VzKCk7CisgICAgaWYgKGRldmljZS5pc0NhbWVyYSgpKQorICAgICAgICByZXR1cm4g
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnZpZGVvRGV2aWNlcygpOwogCi0gICAgcmV0dXJuIGlu
Zm9NYXA7CisgICAgQVNTRVJUKGRldmljZS5pc0Rpc3BsYXkoKSk7CisgICAgcmV0dXJuIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOjpkaXNwbGF5RGV2aWNlcygpOwogfQogCi1zdGQ6Om9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjYXB0dXJlRGV2aWNlV2l0
aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgaWQpCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjcmVhdGVDYXB0dXJlRGV2aWNl
KGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKQogewotICAgIEFTU0VSVCghaWQuaXNFbXB0
eSgpKTsKKyAgICBkZXZpY2VMaXN0Rm9yRGV2aWNlKGRldmljZSkuYXBwZW5kKGNhcHR1cmVEZXZp
Y2VXaXRoUGVyc2lzdGVudElEKGRldmljZS50eXBlKCksIGRldmljZS5wZXJzaXN0ZW50SWQpLnZh
bHVlKCkpOworfQorCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldERldmljZXMo
KQoreworICAgIHNldERldmljZXMoZGVmYXVsdERldmljZXMoKSk7Cit9CisKK3ZvaWQgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMoVmVjdG9yPE1vY2tNZWRpYURldmljZT4mJiBu
ZXdNb2NrRGV2aWNlcykKK3sKKyAgICBhdWRpb0RldmljZXMoKS5jbGVhcigpOworICAgIHZpZGVv
RGV2aWNlcygpLmNsZWFyKCk7CisgICAgZGlzcGxheURldmljZXMoKS5jbGVhcigpOwogCi0gICAg
YXV0byBtYXAgPSBkZXZpY2VNYXAoKTsKLSAgICBhdXRvIGl0ID0gbWFwLmZpbmQoaWQpOwotICAg
IGlmIChpdCAhPSBtYXAuZW5kKCkgJiYgaXQtPnZhbHVlLnR5cGUgPT0gdHlwZSkgewotICAgICAg
ICBhdXRvIGRldmljZSA9IENhcHR1cmVEZXZpY2UoaXQtPnZhbHVlLmlkLCBpdC0+dmFsdWUudHlw
ZSwgaXQtPnZhbHVlLm5hbWUpOwotICAgICAgICBkZXZpY2Uuc2V0RW5hYmxlZCh0cnVlKTsKLSAg
ICAgICAgcmV0dXJuIFdURk1vdmUoZGV2aWNlKTsKKyAgICBhdXRvJiBtb2NrRGV2aWNlcyA9IGRl
dmljZXMoKTsKKyAgICBtb2NrRGV2aWNlcyA9IFdURk1vdmUobmV3TW9ja0RldmljZXMpOworCisg
ICAgYXV0byYgbWFwID0gZGV2aWNlTWFwKCk7CisgICAgbWFwLmNsZWFyKCk7CisKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGRldmljZSA6IG1vY2tEZXZpY2VzKSB7CisgICAgICAgIG1hcC5hZGQoZGV2
aWNlLnBlcnNpc3RlbnRJZCwgZGV2aWNlKTsKKyAgICAgICAgY3JlYXRlQ2FwdHVyZURldmljZShk
ZXZpY2UpOwogICAgIH0KK30KIAotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit2b2lkIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjphZGREZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJiBkZXZp
Y2UpCit7CisgICAgZGV2aWNlcygpLmFwcGVuZChkZXZpY2UpOworICAgIGRldmljZU1hcCgpLnNl
dChkZXZpY2UucGVyc2lzdGVudElkLCBkZXZpY2UpOworICAgIGNyZWF0ZUNhcHR1cmVEZXZpY2Uo
ZGV2aWNlKTsKIH0KIAotVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6YXVkaW9EZXZpY2VzKCkKK3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92
ZURldmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCkKIHsKLSAgICBzdGF0aWMgYXV0byBp
bmZvID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgVmVjdG9yPENhcHR1cmVEZXZp
Y2U+IHZlY3RvcjsKKyAgICBhdXRvJiBtYXAgPSBkZXZpY2VNYXAoKTsKKyAgICBhdXRvIGl0ZXJh
dG9yID0gbWFwLmZpbmQocGVyc2lzdGVudElkKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbWFwLmVu
ZCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBjYXB0dXJlRGV2aWNlID0gY2Fw
dHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWlj
cm9waG9uZSwgIjIzOWMyNGIwLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiJfcyk7Ci0gICAg
ICAgIEFTU0VSVChjYXB0dXJlRGV2aWNlKTsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChXVEZNb3Zl
KGNhcHR1cmVEZXZpY2UudmFsdWUoKSkpOworICAgIGRldmljZXMoKS5yZW1vdmVGaXJzdE1hdGNo
aW5nKFsmcGVyc2lzdGVudElkXShjb25zdCBhdXRvJiBkZXZpY2UpIHsKKyAgICAgICAgcmV0dXJu
IGRldmljZS5wZXJzaXN0ZW50SWQgPT0gcGVyc2lzdGVudElkOworICAgIH0pOwogCi0gICAgICAg
IGNhcHR1cmVEZXZpY2UgPSBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lLCAiMjM5YzI0YjEtMmIxNS0xMWUzLTgyMjQtMDgw
MDIwMGM5YTY2Il9zKTsKLSAgICAgICAgQVNTRVJUKGNhcHR1cmVEZXZpY2UpOwotICAgICAgICB2
ZWN0b3IuYXBwZW5kKFdURk1vdmUoY2FwdHVyZURldmljZS52YWx1ZSgpKSk7CisgICAgZGV2aWNl
TGlzdEZvckRldmljZShpdGVyYXRvci0+dmFsdWUpLnJlbW92ZUZpcnN0TWF0Y2hpbmcoWyZwZXJz
aXN0ZW50SWRdKGNvbnN0IGF1dG8mIGRldmljZSkgeworICAgICAgICByZXR1cm4gZGV2aWNlLnBl
cnNpc3RlbnRJZCgpID09IHBlcnNpc3RlbnRJZDsKKyAgICB9KTsKIAotICAgICAgICByZXR1cm4g
dmVjdG9yOwotICAgIH0oKSk7Ci0gICAgcmV0dXJuIGluZm87CisgICAgbWFwLnJlbW92ZShpdGVy
YXRvcik7CiB9CiAKLVZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnZpZGVvRGV2aWNlcygpCitzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgaWQpCiB7Ci0gICAgc3RhdGljIGF1
dG8gaW5mbyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIFZlY3RvcjxDYXB0dXJl
RGV2aWNlPiB2ZWN0b3I7CisgICAgQVNTRVJUKCFpZC5pc0VtcHR5KCkpOwogCi0gICAgICAgIGF1
dG8gY2FwdHVyZURldmljZSA9IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSwgIjIzOWMyNGIyLTJiMTUtMTFlMy04MjI0LTA4MDAy
MDBjOWE2NiJfcyk7Ci0gICAgICAgIEFTU0VSVChjYXB0dXJlRGV2aWNlKTsKLSAgICAgICAgdmVj
dG9yLmFwcGVuZChXVEZNb3ZlKGNhcHR1cmVEZXZpY2UudmFsdWUoKSkpOworICAgIGF1dG8mIG1h
cCA9IGRldmljZU1hcCgpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtYXAuZmluZChpZCk7CisgICAg
aWYgKGl0ZXJhdG9yID09IG1hcC5lbmQoKSB8fCBpdGVyYXRvci0+dmFsdWUudHlwZSgpICE9IHR5
cGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgY2FwdHVyZURldmlj
ZSA9IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU6OkNhbWVyYSwgIjIzOWMyNGIzLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiJfcyk7Ci0g
ICAgICAgIEFTU0VSVChjYXB0dXJlRGV2aWNlKTsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChXVEZN
b3ZlKGNhcHR1cmVEZXZpY2UudmFsdWUoKSkpOworICAgIENhcHR1cmVEZXZpY2UgZGV2aWNlIHsg
aXRlcmF0b3ItPnZhbHVlLnBlcnNpc3RlbnRJZCwgdHlwZSwgaXRlcmF0b3ItPnZhbHVlLmxhYmVs
IH07CisgICAgZGV2aWNlLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgcmV0dXJuIFdURk1vdmUoZGV2
aWNlKTsKK30KKworVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6YXVkaW9EZXZpY2VzKCkKK3sKKyAgICBzdGF0aWMgYXV0byBhdWRpb0RldmljZXMgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gYXVkaW9E
ZXZpY2VzOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRldmljZSA6IGRldmljZXMoKSkgewor
ICAgICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6TWljcm9waG9uZSkKKyAgICAgICAgICAgICAgICBhdWRpb0RldmljZXMuYXBwZW5kKGNhcHR1
cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3Jv
cGhvbmUsIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVlKCkpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBhdWRpb0RldmljZXM7CisgICAgfSgpKTsKKyAgICByZXR1cm4gYXVkaW9EZXZpY2Vz
OworfQogCi0gICAgICAgIHJldHVybiB2ZWN0b3I7CitWZWN0b3I8Q2FwdHVyZURldmljZT4mIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb0RldmljZXMoKQoreworICAgIHN0YXRpYyBhdXRv
IHZpZGVvRGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIFZlY3RvcjxD
YXB0dXJlRGV2aWNlPiB2aWRlb0RldmljZXM7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV2
aWNlIDogZGV2aWNlcygpKSB7CisgICAgICAgICAgICBpZiAoZGV2aWNlLnR5cGUoKSA9PSBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEpCisgICAgICAgICAgICAgICAgdmlkZW9EZXZp
Y2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlOjpDYW1lcmEsIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVlKCkpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiB2aWRlb0RldmljZXM7CiAgICAgfSgpKTsKLSAgICByZXR1cm4g
aW5mbzsKKyAgICByZXR1cm4gdmlkZW9EZXZpY2VzOwogfQogCiBWZWN0b3I8Q2FwdHVyZURldmlj
ZT4mIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpkaXNwbGF5RGV2aWNlcygpCiB7Ci0gICAgc3Rh
dGljIGF1dG8gZGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIFZlY3Rv
cjxDYXB0dXJlRGV2aWNlPiB2ZWN0b3I7Ci0KLSAgICAgICAgYXV0byBjYXB0dXJlRGV2aWNlID0g
Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U2NyZWVuLCAiU0NSRUVOLTEiX3MpOwotICAgICAgICBBU1NFUlQoY2FwdHVyZURldmljZSk7Ci0g
ICAgICAgIHZlY3Rvci5hcHBlbmQoV1RGTW92ZShjYXB0dXJlRGV2aWNlLnZhbHVlKCkpKTsKLQot
ICAgICAgICBjYXB0dXJlRGV2aWNlID0gY2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCAiU0NSRUVOLTIiX3MpOwotICAgICAgICBB
U1NFUlQoY2FwdHVyZURldmljZSk7Ci0gICAgICAgIHZlY3Rvci5hcHBlbmQoV1RGTW92ZShjYXB0
dXJlRGV2aWNlLnZhbHVlKCkpKTsKLQotICAgICAgICByZXR1cm4gdmVjdG9yOworICAgIHN0YXRp
YyBhdXRvIGRpc3BsYXlEZXZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAg
VmVjdG9yPENhcHR1cmVEZXZpY2U+IGRpc3BsYXlEZXZpY2VzOworICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGRldmljZSA6IGRldmljZXMoKSkgeworICAgICAgICAgICAgaWYgKGRldmljZS50eXBl
KCkgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuKQorICAgICAgICAgICAgICAg
IGRpc3BsYXlEZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVl
KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkaXNwbGF5RGV2aWNlczsKICAgICB9KCkp
OwogCi0gICAgcmV0dXJuIGRldmljZXM7CisgICAgcmV0dXJuIGRpc3BsYXlEZXZpY2VzOwogfQog
CiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3Qg
U3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKGlkLCB0eXBlLCBuYW1lKQorICAgICwg
bV9kZXZpY2UoZGV2aWNlTWFwKCkuZ2V0KGlkKSkKIHsKICAgICBBU1NFUlQodHlwZSAhPSBSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlOjpOb25lKTsKLQotICAgIGF1dG8gbWFwID0gZGV2aWNlTWFw
KCk7Ci0gICAgYXV0byBpdCA9IG1hcC5maW5kKGlkKTsKLSAgICBBU1NFUlQoaXQgIT0gbWFwLmVu
ZCgpKTsKLQotICAgIG1fZGV2aWNlID0gaXQtPnZhbHVlLmRldmljZTsKICAgICBzZXRQZXJzaXN0
ZW50SUQoU3RyaW5nKGlkKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCBhMWQzZTliNjFiNjExMzM2
NWE3ODQzMDAyODNiOTRhNWUxMWZhNzVmLi4zMzU1ZGE2NjFlYzYwZTlkZjFhMjUxYzAwMGFiNTY5
NzFjZjhjYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC0zMiwyNyArMzIsMzIgQEAKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCisjaW5jbHVkZSAi
TW9ja01lZGlhRGV2aWNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENhcHR1cmVEZXZpY2U7Ci0KIGNsYXNzIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfk1vY2tSZWFsdGltZU1lZGlhU291cmNlKCkgPSBkZWZhdWx0OwogCisg
ICAgc3RhdGljIHZvaWQgc2V0RGV2aWNlcyhWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYmKTsKKyAg
ICBzdGF0aWMgdm9pZCBhZGREZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJik7CisgICAgc3Rh
dGljIHZvaWQgcmVtb3ZlRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZXNldERldmljZXMoKTsKKwogICAgIHN0YXRpYyBW
ZWN0b3I8Q2FwdHVyZURldmljZT4mIGF1ZGlvRGV2aWNlcygpOwogICAgIHN0YXRpYyBWZWN0b3I8
Q2FwdHVyZURldmljZT4mIHZpZGVvRGV2aWNlcygpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FwdHVy
ZURldmljZT4mIGRpc3BsYXlEZXZpY2VzKCk7CiAKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
YXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIGVudW0gY2xhc3MgTW9ja0Rldmlj
ZSB7IEludmFsaWQsIE1pY3JvcGhvbmUxLCBNaWNyb3Bob25lMiwgQ2FtZXJhMSwgQ2FtZXJhMiwg
U2NyZWVuMSwgU2NyZWVuMiB9OwotCiBwcm90ZWN0ZWQ6CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZUNhcHR1cmVEZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJik7
CisKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMmKSA9IDA7CkBAIC02Miw4ICs2Nyw4IEBAIHByb3RlY3RlZDoKIAogICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWlu
dHMoKTsKIAotICAgIE1vY2tEZXZpY2UgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2U7
IH0KLSAgICBNb2NrRGV2aWNlIG1fZGV2aWNlIHsgTW9ja0RldmljZTo6SW52YWxpZCB9OworICAg
IGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2U7
IH0KKyAgICBNb2NrTWVkaWFEZXZpY2UgbV9kZXZpY2U7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBp
bml0aWFsaXplQ2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4
IDc3YTBmOGVkZDNjYjdmNmFlMjMzYjc1MDMwMTIxNTM2ODIwMDcwMWMuLmRmOTFlYmUwZmU4NTQ0
MTE0YTY2MmM3NmU0MmFmY2E3YTcwMGVkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
CkBAIC0zNywxNiArMzcsMzkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ckVuYWJsZWQoYm9vbCBlbmFibGVkKQorTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcj4gY2VudGVyOworICAg
IHJldHVybiBjZW50ZXI7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNldE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZChib29sIGVuYWJsZWQpCit7
CiAgICAgc3RhdGljIGJvb2wgYWN0aXZlID0gZmFsc2U7CiAgICAgaWYgKGFjdGl2ZSAhPSBlbmFi
bGVkKSB7CiAgICAgICAgIGFjdGl2ZSA9IGVuYWJsZWQ7Ci0gICAgICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKGVuYWJsZWQgPyAmY2Vu
dGVyLmdldCgpIDogbnVsbHB0cik7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNldFNoYXJlZFN0cmVhbUNlbnRlck92ZXJyaWRlKGVuYWJsZWQgPyAmc2luZ2xldG9uKCkgOiBu
dWxscHRyKTsKICAgICB9CiB9CiAKK3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNldERldmljZXMoVmVjdG9yPE1vY2tNZWRpYURldmljZT4mJiBuZXdNb2NrRGV2aWNlcykKK3sK
KyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RGV2aWNlcyhXVEZNb3ZlKG5ld01vY2tE
ZXZpY2VzKSk7CisgICAgc2luZ2xldG9uKCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7Cit9CisK
K3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmFkZERldmljZShjb25zdCBNb2Nr
TWVkaWFEZXZpY2UmIGRldmljZSkKK3sKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRk
RGV2aWNlKGRldmljZSk7CisgICAgc2luZ2xldG9uKCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7
Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZShj
b25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCkKK3sKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6cmVtb3ZlRGV2aWNlKHBlcnNpc3RlbnRJZCk7CisgICAgc2luZ2xldG9uKCkuY2FwdHVyZURl
dmljZXNDaGFuZ2VkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKaW5kZXggMGY5MmY5
ZDQzZjk4OWJhNmU4YzNhYThmMzVjNDA0ZWI4YjQyOWYzZi4uYmU0N2EwZTNlNDYyMTFkNGVmZmVk
MDJjMWQ3MTY1NzlhMWM0NTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaApAQCAtMzksNiAr
MzksMTAgQEAgY2xhc3MgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIgZmluYWwgOiBwdWJs
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgc2V0TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKGJv
b2wpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0RGV2aWNlcyhWZWN0b3I8
TW9ja01lZGlhRGV2aWNlPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBhZGRE
ZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgcmVtb3ZlRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKTsKKwogICAgIHN0
YXRpYyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiB2aWRlb0NhcHR1
cmVTb3VyY2VGYWN0b3J5KCkgeyByZXR1cm4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmZhY3Rv
cnkoKTsgfQogICAgIHN0YXRpYyBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0
b3J5JiBhdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkgeyByZXR1cm4gTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2U6OmZhY3RvcnkoKTsgfQogCkBAIC00Niw2ICs1MCw4IEBAIHByaXZhdGU6CiAgICAg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgZnJpZW5kIE5l
dmVyRGVzdHJveWVkPE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyPjsKIAorICAgIHN0YXRp
YyBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgc2luZ2xldG9uKCk7CisKICAgICBSZWFs
dGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3RvcnkoKSBmaW5h
bCB7IHJldHVybiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6ZmFjdG9yeSgpOyB9CiAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgdmlkZW9GYWN0b3J5KCkgZmlu
YWwgeyByZXR1cm4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmZhY3RvcnkoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwCmluZGV4IDAzYTdjM2VjMmYxMDM5NjA3NWUxMTc3YmIwNTQ1ZGI3YzVkODM2ODcu
LjljNDFlMWM0NzI3ZWU0MTY2NDMyMjdhYjBlNGE1M2M5YmNjOWIyMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwCkBAIC0xMDgsMzEgKzEwOCwxOCBAQCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgY29uc3QgUwogICAgIDog
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoZGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGU6OlZpZGVvLCBuYW1lKQogICAgICwgbV90aW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMs
ICZNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVGcmFtZSkKIHsKLSAgICBzd2l0Y2gg
KGRldmljZSgpKSB7Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpDYW1lcmExOgotICAgICAgICBzZXRG
cmFtZVJhdGUoMzApOwotICAgICAgICBzZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6VXNlcik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTW9ja0RldmljZTo6Q2Ft
ZXJhMjoKLSAgICAgICAgc2V0RnJhbWVSYXRlKDE1KTsKLSAgICAgICAgc2V0RmFjaW5nTW9kZShS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50KTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpTY3JlZW4xOgotICAgICAgICBzZXRGcmFtZVJhdGUoMzAp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1vY2tEZXZpY2U6OlNjcmVlbjI6Ci0gICAgICAg
IHNldEZyYW1lUmF0ZSgxMCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTW9ja0RldmljZTo6
TWljcm9waG9uZTE6Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpNaWNyb3Bob25lMjoKLSAgICBjYXNl
IE1vY2tEZXZpY2U6OkludmFsaWQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KICAgICBtX2Rhc2hXaWR0aHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSgyKTsKICAgICBtX2Rhc2hXaWR0aHMudW5jaGVja2VkQXBwZW5kKDYpOwogICAgIG1fZGFz
aFdpZHRocy51bmNoZWNrZWRBcHBlbmQoNik7CisKKyAgICBpZiAobW9ja1NjcmVlbigpKSB7Cisg
ICAgICAgIHNldEZyYW1lUmF0ZShXVEY6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KGRldmlj
ZSgpLnByb3BlcnRpZXMpLmRlZmF1bHRGcmFtZVJhdGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYXV0byYgcHJvcGVydGllcyA9IFdURjo6Z2V0PE1vY2tDYW1lcmFQcm9wZXJ0aWVz
PihkZXZpY2UoKS5wcm9wZXJ0aWVzKTsKKyAgICBzZXRGcmFtZVJhdGUocHJvcGVydGllcy5kZWZh
dWx0RnJhbWVSYXRlKTsKKyAgICBzZXRGYWNpbmdNb2RlKHByb3BlcnRpZXMuZmFjaW5nTW9kZUNh
cGFiaWxpdHkpOwogfQogCiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6fk1vY2tSZWFsdGltZVZp
ZGVvU291cmNlKCkKQEAgLTE5MSwxMCArMTc4LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6dXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW4K
IHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKQogewogICAgIGlmICht
b2NrQ2FtZXJhKCkpIHsKLSAgICAgICAgaWYgKGRldmljZSgpID09IE1vY2tEZXZpY2U6OkNhbWVy
YTEpCi0gICAgICAgICAgICBjYXBhYmlsaXRpZXMuYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlVzZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYXBhYmls
aXRpZXMuYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25t
ZW50KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmFkZEZhY2luZ01vZGUoV1RGOjpnZXQ8TW9ja0Nh
bWVyYVByb3BlcnRpZXM+KGRldmljZSgpLnByb3BlcnRpZXMpLmZhY2luZ01vZGVDYXBhYmlsaXR5
KTsKIAogICAgICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSgzMjAsIDE5MjApKTsKICAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5
VmFsdWVPclJhbmdlKDI0MCwgMTA4MCkpOwpAQCAtMzkyLDcgKzM3Niw3IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAg
ICAgICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3Ry
aW5nKSkpLCBzdGF0c0xvY2F0aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICBzdGF0c0xvY2F0
aW9uLm1vdmUoMCwgbV9zdGF0c0ZvbnRTaXplKTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChz
dGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoZGV2aWNlKCkgPT0gTW9ja0RldmljZTo6U2Ny
ZWVuMSA/ICJTY3JlZW4gMSIgOiAiU2NyZWVuIDIiKSkpLCBzdGF0c0xvY2F0aW9uKTsKKyAgICAg
ICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4geyBpZCgpIH0sIHN0YXRzTG9j
YXRpb24pOwogICAgIH0KIAogICAgIEZsb2F0UG9pbnQgYmlwQm9wTG9jYXRpb24oc2l6ZS53aWR0
aCgpICogLjYsIHNpemUuaGVpZ2h0KCkgKiAuNik7CkBAIC00MzEsMjcgKzQxNSw3IEBAIHZvaWQg
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUoKQogICAgIGF1dG8mIHNpemUg
PSB0aGlzLT5zaXplKCk7CiAgICAgRmxvYXRSZWN0IGZyYW1lUmVjdChGbG9hdFBvaW50KCksIHNp
emUpOwogCi0gICAgQ29sb3IgZmlsbENvbG9yOwotICAgIHN3aXRjaCAoZGV2aWNlKCkpIHsKLSAg
ICBjYXNlIE1vY2tEZXZpY2U6OkNhbWVyYTE6Ci0gICAgICAgIGZpbGxDb2xvciA9IENvbG9yOjpi
bGFjazsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpDYW1lcmEyOgotICAg
ICAgICBmaWxsQ29sb3IgPSBDb2xvcjo6ZGFya0dyYXk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTW9ja0RldmljZTo6U2NyZWVuMToKLSAgICAgICAgZmlsbENvbG9yID0gQ29sb3I6OmxpZ2h0
R3JheTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpTY3JlZW4yOgotICAg
ICAgICBmaWxsQ29sb3IgPSBDb2xvcjo6eWVsbG93OwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1vY2tEZXZpY2U6Ok1pY3JvcGhvbmUxOgotICAgIGNhc2UgTW9ja0RldmljZTo6TWljcm9waG9u
ZTI6Ci0gICAgY2FzZSBNb2NrRGV2aWNlOjpJbnZhbGlkOgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCisgICAgYXV0byBmaWxsQ29sb3IgPSBt
b2NrQ2FtZXJhKCkgPyBXVEY6OmdldDxNb2NrQ2FtZXJhUHJvcGVydGllcz4oZGV2aWNlKCkucHJv
cGVydGllcykuZmlsbENvbG9yIDogV1RGOjpnZXQ8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihkZXZp
Y2UoKS5wcm9wZXJ0aWVzKS5maWxsQ29sb3I7CiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBzaXplKSwgZmlsbENvbG9yKTsKIAogICAgIGlmICghbXV0ZWQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oCmluZGV4IGJkNTI2ODI2ZmYwNDgyYjQ0ZmM0OWE0Yzg2MDdiNjY2ODA5NGNm
NDcuLmE2NTg5Yjg3NTQ4NzcwNGU4YjQ4ODdhNDUyZWUzN2Q5NzcxMGE2MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmgKQEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVsYXlTYW1wbGVzKFNl
Y29uZHMpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBtb2NrQ2FtZXJhKCkgY29uc3QgeyByZXR1cm4g
ZGV2aWNlKCkgPT0gTW9ja0RldmljZTo6Q2FtZXJhMSB8fCBkZXZpY2UoKSA9PSBNb2NrRGV2aWNl
OjpDYW1lcmEyOyB9Ci0gICAgYm9vbCBtb2NrU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gZGV2aWNl
KCkgPT0gTW9ja0RldmljZTo6U2NyZWVuMSB8fCBkZXZpY2UoKSA9PSBNb2NrRGV2aWNlOjpTY3Jl
ZW4yOyB9CisgICAgYm9vbCBtb2NrQ2FtZXJhKCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxNb2NrQ2FtZXJhUHJvcGVydGllcz4oZGV2aWNlKCkucHJvcGVydGllcyk7IH0K
KyAgICBib29sIG1vY2tTY3JlZW4oKSBjb25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPE1vY2tEaXNwbGF5UHJvcGVydGllcz4oZGV2aWNlKCkucHJvcGVydGllcyk7IH0KIAogICAg
IGZsb2F0IG1fYmFzZUZvbnRTaXplIHsgMCB9OwogICAgIGZsb2F0IG1fYmlwQm9wRm9udFNpemUg
eyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCBiZDlkZTM0ZWQyYmZmOTMwYTZkYzMwYTBlNGM3
Mzc5MDg4ODdmMjEwLi40MjJlNTI0MmQ2OWUyM2JmMTFkZjY5ZDk3ODMyOWM1NzFiMDhhMTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKQEAgLTQwMiw2ICs0MDIsNyBAQCBzZXQoV2ViS2l0X1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tNZWRp
YVNlc3Npb25NZXRhZGF0YS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZp
Y2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YVJlZi5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tOYXZpZ2F0aW9uUmVmLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZpY2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZpY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyNzYzNjUxMzNjYWE0
Mjk0ODc5NjVhOWMzOGUzMTUwMjhmYmY4NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01vY2tNZWRpYURldmljZS5jcHAKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLTW9ja01lZGlhRGV2aWNlLmgiCisKKyNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3NQb29sLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrTWVkaWFEZXZpY2UuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBXS0FkZE1vY2tNZWRpYURldmljZShXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgcGVyc2lzdGVudElkLCBXS1N0cmluZ1JlZiBsYWJl
bCwgV0tTdHJpbmdSZWYgdHlwZSkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFN0
cmluZyB0eXBlU3RyaW5nID0gV2ViS2l0Ojp0b0ltcGwodHlwZSktPnN0cmluZygpOworICAgIFZh
cmlhbnQ8V2ViQ29yZTo6TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzLCBXZWJDb3JlOjpNb2NrQ2Ft
ZXJhUHJvcGVydGllcywgV2ViQ29yZTo6TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVz
OworICAgIGlmICh0eXBlU3RyaW5nID09ICJjYW1lcmEiKQorICAgICAgICBwcm9wZXJ0aWVzID0g
V2ViQ29yZTo6TW9ja0NhbWVyYVByb3BlcnRpZXMgeyB9OworICAgIGVsc2UgaWYgKHR5cGVTdHJp
bmcgPT0gInNjcmVlbiIpCisgICAgICAgIHByb3BlcnRpZXMgPSBXZWJDb3JlOjpNb2NrRGlzcGxh
eVByb3BlcnRpZXMgeyB9OworICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgIT0gIm1pY3JvcGhvbmUi
KQorICAgICAgICByZXR1cm47CisKKyAgICB0b0ltcGwoY29udGV4dCktPmFkZE1vY2tNZWRpYURl
dmljZSh7IFdlYktpdDo6dG9JbXBsKHBlcnNpc3RlbnRJZCktPnN0cmluZygpLCBXZWJLaXQ6OnRv
SW1wbChsYWJlbCktPnN0cmluZygpLCBXVEZNb3ZlKHByb3BlcnRpZXMpIH0pOworI2VuZGlmCit9
CisKK3ZvaWQgV0tDbGVhck1vY2tNZWRpYURldmljZXMoV0tDb250ZXh0UmVmIGNvbnRleHQpCit7
CisgICAgdG9JbXBsKGNvbnRleHQpLT5jbGVhck1vY2tNZWRpYURldmljZXMoKTsKK30KKwordm9p
ZCBXS1JlbW92ZU1vY2tNZWRpYURldmljZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdS
ZWYgcGVyc2lzdGVudElkKQoreworICAgIHRvSW1wbChjb250ZXh0KS0+cmVtb3ZlTW9ja01lZGlh
RGV2aWNlKFdlYktpdDo6dG9JbXBsKHBlcnNpc3RlbnRJZCktPnN0cmluZygpKTsKK30KKwordm9p
ZCBXS1Jlc2V0TW9ja01lZGlhRGV2aWNlcyhXS0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICB0
b0ltcGwoY29udGV4dCktPnJlc2V0TW9ja01lZGlhRGV2aWNlcygpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZpY2UuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Zjc3NmQyODE3MTE5NDlhMTBlYzcwZDQyMWNhYjZhMDM1YjA3NGExYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmgKQEAg
LTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIHZvaWQg
V0tBZGRNb2NrTWVkaWFEZXZpY2UoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBwZXJzaXN0ZW50
SWQsIFdLU3RyaW5nUmVmIGxhYmVsLCBXS1N0cmluZ1JlZiB0eXBlKTsKK1dLX0VYUE9SVCB2b2lk
IFdLQ2xlYXJNb2NrTWVkaWFEZXZpY2VzKFdLQ29udGV4dFJlZik7CitXS19FWFBPUlQgdm9pZCBX
S1JlbW92ZU1vY2tNZWRpYURldmljZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHBlcnNpc3Rl
bnRJZCk7CitXS19FWFBPUlQgdm9pZCBXS1Jlc2V0TW9ja01lZGlhRGV2aWNlcyhXS0NvbnRleHRS
ZWYpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGJkMzc3ZTQ2YjY3MWI3MzllZjdjMDY0MDg5
ZGVkY2E4ZGE0YTBhNjQuLjcyYTgzZGY4MTBhZjM3Y2NlNDkzN2ZmNWJmNDc4YzY2YzFiMGQ3YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTgyLDYg
KzgyLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TG9nSW5pdGlhbGl6YXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Qcm9jZXNzLmg+CkBAIC0yMjEyLDQgKzIyMTMsMzYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
dW5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eShTdXNwZW5kZWRQYWdlUHJveHkmIHBhZ2UpCiAg
ICAgICAgIG1fc3VzcGVuZGVkUGFnZXMucmVtb3ZlKGl0ZXJhdG9yKTsKIH0KIAordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6YWRkTW9ja01lZGlhRGV2aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2
aWNlKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OmFkZERldmljZShkZXZpY2UpOworICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkTW9ja01lZGlhRGV2aWNlIHsgZGV2aWNlIH0pOworI2Vu
ZGlmCit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyTW9ja01lZGlhRGV2aWNlcygpCit7
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6c2V0RGV2aWNlcyh7IH0pOworICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6
V2ViUHJvY2Vzczo6Q2xlYXJNb2NrTWVkaWFEZXZpY2VzIHsgfSk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTW9ja01lZGlhRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVy
c2lzdGVudElkKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZShwZXJzaXN0ZW50SWQpOworICAgIHNlbmRU
b0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVtb3ZlTW9ja01lZGlhRGV2aWNl
IHsgcGVyc2lzdGVudElkIH0pOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJl
c2V0TW9ja01lZGlhRGV2aWNlcygpCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXREZXZpY2VzKCk7CisgICAgc2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXNldE1vY2tNZWRpYURldmljZXMgeyB9KTsK
KyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGFlYjE5MTBhNjBlNDVhZjAyNTVjMDVlN2VkY2NiYmRi
MTY5M2I4ZjAuLjgzYjA2M2U5ZTVkZjUxNmMwZGFkZmVmZDNiOTJiYzU0OWExNzI0NGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtODIsNiArODIsMTAgQEAg
Y2xhc3MgTmF2aWdhdGlvbjsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogfQogCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlOworfQorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgRG93bmxvYWRQcm94eTsKQEAgLTQ1NCw2ICs0NTgsMTEgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzY3JlZW5Qcm9wZXJ0aWVzU3RhdGVDaGFuZ2VkKCk7CiAKKyAgICB2b2lk
IGFkZE1vY2tNZWRpYURldmljZShjb25zdCBXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2UmKTsKKyAg
ICB2b2lkIGNsZWFyTW9ja01lZGlhRGV2aWNlcygpOworICAgIHZvaWQgcmVtb3ZlTW9ja01lZGlh
RGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKTsKKyAgICB2b2lkIHJlc2V0TW9ja01l
ZGlhRGV2aWNlcygpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDZhNTA3MjFlZTIyOTk5N2E5NTcyNmVhYjA3ZTkxODI2NTJjZGYyYTUuLjA4NjNmOTk1ODg1
Y2JlOTYyMjQzZDI2YTk0ZWZjZjE3NzViN2Y1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTEzLDYgKzkxMyw4IEBACiAJCTQxMDQ4
MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRD
TmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JU
Q1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICov
OyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEx
MkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLzsg
fTsKKwkJNDExQThEREIyMERERDFBQzAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFBOEREOTIwRERC
NjA1MDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTFBOEREQzIwREREMjNGMDA2MEQzNEYgLyog
V0tNb2NrTWVkaWFEZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDExQThEREEyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNl
LmNwcCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdv
cmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIy
MjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMzA3
NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4NUYzMDAwMzlF
QzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
TW9uaXRvci5jcHAgKi87IH07CkBAIC0zMjk5LDYgKzMzMDEsOCBAQAogCQk0MTEyQjU0NzFGOUZE
M0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5l
dHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3
b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNB
QzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDExQThERDkyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2
aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTW9ja01lZGlhRGV2aWNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMUE4RERBMjBEREI2MDUwMDYwRDM0
RiAvKiBXS01vY2tNZWRpYURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXS01vY2tNZWRpYURldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsuaDsgcGF0aCA9IE5l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5jcHA7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3
b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtS
VENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTcyLDYgKzc1NzYsOCBAQAogCQkJ
CUM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5o
ICovLAogCQkJCUM5Q0Q0Mzk5MUI0QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFk
YXRhLmNwcCAqLywKIAkJCQlDOUNENDM5QTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Np
b25NZXRhZGF0YS5oICovLAorCQkJCTQxMUE4RERBMjBEREI2MDUwMDYwRDM0RiAvKiBXS01vY2tN
ZWRpYURldmljZS5jcHAgKi8sCisJCQkJNDExQThERDkyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9j
a01lZGlhRGV2aWNlLmggKi8sCiAJCQkJQzA5QUU1RTgxMjUyNTdDMjAwMjU4MjVEIC8qIFdLTmF0
aXZlRXZlbnQuaCAqLywKIAkJCQkyRDNBNjVEODFBN0MzQTFGMDBDQUM2MzcgLyogV0tOYXZpZ2F0
aW9uQWN0aW9uUmVmLmNwcCAqLywKIAkJCQkyRDNBNjVEOTFBN0MzQTFGMDBDQUM2MzcgLyogV0tO
YXZpZ2F0aW9uQWN0aW9uUmVmLmggKi8sCkBAIC05NjQzLDYgKzk2NDksNyBAQAogCQkJCUM5OEM0
OEFBMUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzlDRDQzOUQxQjRCMDI0RjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9u
TWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQwRUU2MUJGNjc3RTMwMEJBODFCRSAv
KiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTFB
OEREQjIwREREMUFDMDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNDA3NUZFMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVBcnJheS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM0MDc2MDAxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZURpY3Rp
b25hcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwOUFFNUU5MTI1MjU3QzIwMDI1ODI1RCAvKiBX
S05hdGl2ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMzU4LDEzICsxMDM2NSw5IEBACiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkpOwotCQkJ
aW5wdXRGaWxlTGlzdFBhdGhzID0gKAotCQkJKTsKIAkJCWlucHV0UGF0aHMgPSAoCiAJCQkpOwog
CQkJbmFtZSA9ICJVbmxvY2sga2V5Y2hhaW4iOwotCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9ICgK
LQkJCSk7CiAJCQlvdXRwdXRQYXRocyA9ICgKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTEwMzc2LDEzICsxMDM3OSw5IEBACiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkpOwotCQkJaW5wdXRGaWxl
TGlzdFBhdGhzID0gKAotCQkJKTsKIAkJCWlucHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJbmFtZSA9
ICJVbmxvY2sga2V5Y2hhaW4iOwotCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9ICgKLQkJCSk7CiAJ
CQlvdXRwdXRQYXRocyA9ICgKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKQEAgLTEwMzk0LDEzICsxMDM5Myw5IEBACiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkpOwotCQkJaW5wdXRGaWxlTGlzdFBhdGhz
ID0gKAotCQkJKTsKIAkJCWlucHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJbmFtZSA9ICJSZW1vdmUg
c3RhbGUgZW50aXRsZW1lbnQgZmlsZSI7Ci0JCQlvdXRwdXRGaWxlTGlzdFBhdGhzID0gKAotCQkJ
KTsKIAkJCW91dHB1dFBhdGhzID0gKAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwpAQCAtMTA0MTIsMTMgKzEwNDA3LDkgQEAKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCSk7Ci0JCQlpbnB1dEZpbGVMaXN0
UGF0aHMgPSAoCi0JCQkpOwogCQkJaW5wdXRQYXRocyA9ICgKIAkJCSk7CiAJCQluYW1lID0gIlJl
bW92ZSBzdGFsZSBlbnRpdGxlbWVudCBmaWxlIjsKLQkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAo
Ci0JCQkpOwogCQkJb3V0cHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xMDQzMCwxNCArMTA0MjEsMTAgQEAKIAkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCSk7Ci0JCQlpbnB1dEZp
bGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJaW5wdXRQYXRocyA9ICgKIAkJCQkiJChURU1QX0ZJ
TEVfRElSKS8kKEZVTExfUFJPRFVDVF9OQU1FKS54Y2VudCIsCiAJCQkpOwogCQkJbmFtZSA9ICJQ
cm9jZXNzIFdlYkNvbnRlbnQgZW50aXRsZW1lbnRzIjsKLQkJCW91dHB1dEZpbGVMaXN0UGF0aHMg
PSAoCi0JCQkpOwogCQkJb3V0cHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xMDQ0OSwxNCArMTA0MzYsMTAgQEAKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCSk7Ci0JCQlpbnB1
dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwogCQkJaW5wdXRQYXRocyA9ICgKIAkJCQkiJChURU1Q
X0ZJTEVfRElSKS8kKEZVTExfUFJPRFVDVF9OQU1FKS54Y2VudCIsCiAJCQkpOwogCQkJbmFtZSA9
ICJQcm9jZXNzIFdlYkNvbnRlbnQgZW50aXRsZW1lbnRzIjsKLQkJCW91dHB1dEZpbGVMaXN0UGF0
aHMgPSAoCi0JCQkpOwogCQkJb3V0cHV0UGF0aHMgPSAoCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xMTQ2NSw2ICsxMTQ0OCw3IEBACiAJCQkJ
Qzk4QzQ4QTkxQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUM5Q0Q0MzlFMUI0QjAyNTMwMDIzOUUzMyAvKiBXS01lZGlh
U2Vzc2lvbk1ldGFkYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjQwRUU1MUJGNjc3RTMw
MEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0
MTFBOEREQzIwREREMjNGMDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM0MDc1RkQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZUFycmF5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUZGMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFi
bGVEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNUIxQzUwMTg5ODYwNkYwMDRG
Q0Y5QiAvKiBXS05hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA4ZmE4NmFkMjYzNDIxNjgzMzAyMTU1OGY0NzZmN2Uw
MGJlYTA0NjEyLi4wMDY2ZjExMzY5OTY0NGQ2NmUyNzhlM2VmM2QyOWU4MTQyZTUwMGZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMDEsNiArMTAxLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZW1v
cnlSZWxlYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CkBAIC0xNjkwLDQgKzE2OTEsMjYgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpzZXRTY3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlNjcmVlblBy
b3BlcnRpZXMmIHByb3BlcnRpZXMKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKK3ZvaWQgV2ViUHJvY2Vzczo6YWRkTW9ja01lZGlhRGV2aWNlKGNvbnN0IFdlYkNvcmU6Ok1v
Y2tNZWRpYURldmljZSYgZGV2aWNlKQoreworICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjphZGREZXZpY2UoZGV2aWNlKTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpjbGVhck1vY2tN
ZWRpYURldmljZXMoKQoreworICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRE
ZXZpY2VzKHsgfSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlTW9ja01lZGlhRGV2aWNl
KGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKQoreworICAgIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjpyZW1vdmVEZXZpY2UocGVyc2lzdGVudElkKTsKK30KKwordm9pZCBXZWJQcm9j
ZXNzOjpyZXNldE1vY2tNZWRpYURldmljZXMoKQoreworICAgIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjpyZXNldERldmljZXMoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGI4NTIwYWNkMmJkODNjNDkx
NTcxM2ZkNTQzNDBlZmViNDU2ZGNlZmIuLjg4Y2MyMWY5ZjUxMDk4MGIwMDZmNWNlNzgyNjI4NDM1
YWY2YWMyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNjksNiAr
NjksNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBVc2VyR2VzdHVyZVRva2VuOwog
c3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0czsKK3N0cnVjdCBNb2NrTWVkaWFEZXZpY2U7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKIHN0cnVj
dCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1Y3QgU291cE5ldHdvcmtQcm94eVNldHRpbmdzOwpA
QCAtMzU5LDYgKzM2MCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcFJ1bkxvb3AoKSBvdmVy
cmlkZTsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIGFkZE1v
Y2tNZWRpYURldmljZShjb25zdCBXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2UmKTsKKyAgICB2b2lk
IGNsZWFyTW9ja01lZGlhRGV2aWNlcygpOworICAgIHZvaWQgcmVtb3ZlTW9ja01lZGlhRGV2aWNl
KGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKTsKKyAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2
aWNlcygpOworI2VuZGlmCisKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MoY29u
c3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7CiAKICAgICAvLyBJUEM6
OkNvbm5lY3Rpb246OkNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1YWI1MjJiZTM5MTM0ODgxMWI2ZGFhMzdjNzkzYzlhMGM0
Zjc5ODI3Li4wZGI4YmQ5NDNiZWVkODM1MzI5MmM5MGNkYzE4ZWE2YzI3YzE1MDVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTM5
LDQgKzEzOSwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBTZXRNZWRpYU1JTUVUeXBlcyhWZWN0b3I8U3RyaW5nPiB0
eXBlcykKICNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBBZGRNb2NrTWVk
aWFEZXZpY2Uoc3RydWN0IFdlYkNvcmU6Ok1vY2tNZWRpYURldmljZSBkZXZpY2UpOworICAgIENs
ZWFyTW9ja01lZGlhRGV2aWNlcygpOworICAgIFJlbW92ZU1vY2tNZWRpYURldmljZShTdHJpbmcg
cGVyc2lzdGVudElkKTsKKyAgICBSZXNldE1vY2tNZWRpYURldmljZXMoKTsKKyNlbmRpZgogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNlMDVm
N2YzODhhNTFmNDRjMTdkMDhiNGY5ODZlMTQ1NDkyMTlkZmQuLmI5ODQ3N2U3NDczNzFmMTcwMjc4
Zjk2MDAyMzU4ZjI5MWU0OGUwM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxOC0wNi0yNSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEFQSSB0byBjb250cm9sIG1vY2sg
bWVkaWEgZGV2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg2OTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAg
ICAgIEFkZCB0ZXN0IHJ1bm5lciBBUEkgdG8gY2xlYXIvYWRkL3JlbW92ZS9yZXNldCBtb2NrIG1l
ZGlhIGRldmljZXMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmFk
ZE1vY2tNZWRpYURldmljZSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmFkZE1vY2tDYW1l
cmFEZXZpY2UpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjphZGRNb2NrTWljcm9waG9uZURl
dmljZSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmFkZE1vY2tTY3JlZW5EZXZpY2UpOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjbGVhck1vY2tNZWRpYURldmljZXMpOgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjpyZW1vdmVNb2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpyZXNldE1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6YWRkTW9ja01lZGlhRGV2aWNlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNs
ZWFyTW9ja01lZGlhRGV2aWNlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZW1v
dmVNb2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRN
b2NrTWVkaWFEZXZpY2VzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOC0wNi0yNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mu
a2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBVbnJldmlld2VkIGJ1aWxk
IGZpeCBmb3IgcjIzMzA4OC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDdlNzY1OWNj
M2JmZmNlMGFhODc2ZGRkYzlmMDJkMDQ5NzZhM2RiOWYuLjE3OTE2NjgxMjdhNjY2MDc3MmNhMTkx
YzA1ODM5ZDZjYzA4ZjM5NjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzM2LDQg
KzMzNiwxMSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBnZXRBcHBsaWNhdGlv
bk1hbmlmZXN0VGhlbihvYmplY3QgY2FsbGJhY2spOwogCiAgICAgdm9pZCBpbnN0YWxsRmFrZUhl
bHZldGljYShET01TdHJpbmcgY29uZmlndXJhdGlvbik7CisKKyAgICB2b2lkIGFkZE1vY2tDYW1l
cmFEZXZpY2UoRE9NU3RyaW5nIHBlcnNpc3RlbnRJZCwgRE9NU3RyaW5nIGxhYmVsKTsKKyAgICB2
b2lkIGFkZE1vY2tNaWNyb3Bob25lRGV2aWNlKERPTVN0cmluZyBwZXJzaXN0ZW50SWQsIERPTVN0
cmluZyBsYWJlbCk7CisgICAgdm9pZCBhZGRNb2NrU2NyZWVuRGV2aWNlKERPTVN0cmluZyBwZXJz
aXN0ZW50SWQsIERPTVN0cmluZyBsYWJlbCk7CisgICAgdm9pZCBjbGVhck1vY2tNZWRpYURldmlj
ZXMoKTsKKyAgICB2b2lkIHJlbW92ZU1vY2tNZWRpYURldmljZShET01TdHJpbmcgcGVyc2lzdGVu
dElkKTsKKyAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOwogfTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4
IDI4MzFhODdiOTcxNTAyNzk4NTM0MDE5NDNkZGM0ZjlmMzJhNjNjYzIuLjk1YWFlZjRjZGEwZjg4
YzI4YTFkZjhlM2VmYTJjNTUxZWE3YjczZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMTk3MSw2ICsxOTcxLDcx
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmll
c0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiBkCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhB
bGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwogfQogCit2b2lk
IFRlc3RSdW5uZXI6OmFkZE1vY2tNZWRpYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQs
IEpTU3RyaW5nUmVmIGxhYmVsLCBjb25zdCBjaGFyKiB0eXBlKQoreworICAgIFZlY3RvcjxXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlw
ZVJlZj4+IHZhbHVlczsKKworICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlBlcnNpc3RlbnRJRCIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQo
dG9XSyhwZXJzaXN0ZW50SWQpKTsKKworICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxhYmVsIikgfSk7CisgICAgdmFsdWVzLmFwcGVuZCh0
b1dLKGxhYmVsKSk7CisKKyAgICBrZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJUeXBlIikgfSk7CisgICAgdmFsdWVzLmFwcGVuZCh7IEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHR5cGUpIH0pOworCisgICAgVmVjdG9yPFdL
U3RyaW5nUmVmPiByYXdLZXlzOworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlczsKKyAg
ICByYXdLZXlzLnJlc2l6ZShrZXlzLnNpemUoKSk7CisgICAgcmF3VmFsdWVzLnJlc2l6ZSh2YWx1
ZXMuc2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsr
aSkgeworICAgICAgICByYXdLZXlzW2ldID0ga2V5c1tpXS5nZXQoKTsKKyAgICAgICAgcmF3VmFs
dWVzW2ldID0gdmFsdWVzW2ldLmdldCgpOworICAgIH0KKworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQWRkTW9ja01lZGlhRGV2aWNlIikpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJl
Zj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgp
LCByYXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOworCisgICAgV0tCdW5kbGVQb3N0
U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwordm9p
ZCBUZXN0UnVubmVyOjphZGRNb2NrQ2FtZXJhRGV2aWNlKEpTU3RyaW5nUmVmIHBlcnNpc3RlbnRJ
ZCwgSlNTdHJpbmdSZWYgbGFiZWwpCit7CisgICAgYWRkTW9ja01lZGlhRGV2aWNlKHBlcnNpc3Rl
bnRJZCwgbGFiZWwsICJjYW1lcmEiKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjphZGRNb2NrTWlj
cm9waG9uZURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVs
KQoreworICAgIGFkZE1vY2tNZWRpYURldmljZShwZXJzaXN0ZW50SWQsIGxhYmVsLCAibWljcm9w
aG9uZSIpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OmFkZE1vY2tTY3JlZW5EZXZpY2UoSlNTdHJp
bmdSZWYgcGVyc2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJlbCkKK3sKKyAgICBhZGRNb2NrTWVk
aWFEZXZpY2UocGVyc2lzdGVudElkLCBsYWJlbCwgInNjcmVlbiIpOworfQorCit2b2lkIFRlc3RS
dW5uZXI6OmNsZWFyTW9ja01lZGlhRGV2aWNlcygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJDbGVhck1vY2tNZWRpYURldmljZXMiKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNN
ZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG51bGxwdHIsIG51bGxwdHIpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZU1v
Y2tNZWRpYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJSZW1vdmVNb2NrTWVkaWFEZXZpY2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tU
eXBlUmVmPiBtZXNzYWdlQm9keSh0b1dLKHBlcnNpc3RlbnRJZCkpOworCisgICAgV0tCdW5kbGVQ
b3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwor
dm9pZCBUZXN0UnVubmVyOjpyZXNldE1vY2tNZWRpYURldmljZXMoKQoreworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiUmVzZXRNb2NrTWVkaWFEZXZpY2VzIikpOworICAgIFdLQnVuZGxlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1l
c3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwogI2lmIFBMQVRGT1JNKE1B
QykKIHZvaWQgVGVzdFJ1bm5lcjo6Y29ubmVjdE1vY2tHYW1lcGFkKHVuc2lnbmVkIGluZGV4KQog
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaAppbmRleCBmMjkwMWJjNjJlNjIxMGY0MDcxZjI4N2E0MzJlZmIxN2ViM2M5ZDY5Li43ODli
YTIzMDIzNjgzMDljYTA5OWExZWZiNzQ1N2UxN2EyNTMyNmYyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDQ2LDYgKzQ0
NiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wQWxsSFRUUFJlZGlyZWN0ZWRSZXNwb25zZUhl
YWRlcnMoKSB7IG1fZHVtcEFsbEhUVFBSZWRpcmVjdGVkUmVzcG9uc2VIZWFkZXJzID0gdHJ1ZTsg
fQogICAgIGJvb2wgc2hvdWxkRHVtcEFsbEhUVFBSZWRpcmVjdGVkUmVzcG9uc2VIZWFkZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9kdW1wQWxsSFRUUFJlZGlyZWN0ZWRSZXNwb25zZUhlYWRlcnM7IH0K
IAorICAgIHZvaWQgYWRkTW9ja0NhbWVyYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQs
IEpTU3RyaW5nUmVmIGxhYmVsKTsKKyAgICB2b2lkIGFkZE1vY2tNaWNyb3Bob25lRGV2aWNlKEpT
U3RyaW5nUmVmIHBlcnNpc3RlbnRJZCwgSlNTdHJpbmdSZWYgbGFiZWwpOworICAgIHZvaWQgYWRk
TW9ja1NjcmVlbkRldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxh
YmVsKTsKKyAgICB2b2lkIGNsZWFyTW9ja01lZGlhRGV2aWNlcygpOworICAgIHZvaWQgcmVtb3Zl
TW9ja01lZGlhRGV2aWNlKEpTU3RyaW5nUmVmIHBlcnNpc3RlbnRJZCk7CisgICAgdm9pZCByZXNl
dE1vY2tNZWRpYURldmljZXMoKTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CiAKQEAg
LTQ1NSw2ICs0NjIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RHVtcFBpeGVscyhib29sKTsK
ICAgICB2b2lkIHNldFdhaXRVbnRpbERvbmUoYm9vbCk7CiAKKyAgICB2b2lkIGFkZE1vY2tNZWRp
YURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsLCBjb25z
dCBjaGFyKiB0eXBlKTsKKwogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBtX3Rlc3RVUkw7IC8v
IFNldCBieSBJbmplY3RlZEJ1bmRsZVBhZ2Ugb25jZSBwcm92aXNpb25hbCBsb2FkIHN0YXJ0cy4K
IAogICAgIGJvb2wgbV9zaG91bGREdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnM7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGJhODUxODk1NDlkZDM3NTA5
ZWIzZTAwZTgzNzM4MTZlMzgwZjNjM2EuLjM3N2NjZmUyYzNlNjA5NmVkYmFhZWZjMmFmYTc2NDhk
MDNkZTc2NDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBA
IC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLRnJhbWVIYW5kbGVSZWYuaD4KICNp
bmNsdWRlIDxXZWJLaXQvV0tGcmFtZUluZm9SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tJY29u
RGF0YWJhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tNb2NrTWVkaWFEZXZpY2UuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQv
V0tOb3RpZmljYXRpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb25NYW5hZ2Vy
Lmg+CkBAIC0yODY2LDYgKzI4NjcsMjYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGlj
c1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogICAgIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKGRhdGFTdG9yZSk7CiB9CiAKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OmFkZE1vY2tNZWRpYURldmljZShXS1N0cmluZ1JlZiBwZXJzaXN0ZW50SUQsIFdLU3Ry
aW5nUmVmIGxhYmVsLCBXS1N0cmluZ1JlZiB0eXBlKQoreworICAgIFdLQWRkTW9ja01lZGlhRGV2
aWNlKHBsYXRmb3JtQ29udGV4dCgpLCBwZXJzaXN0ZW50SUQsIGxhYmVsLCB0eXBlKTsKK30KKwor
dm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJNb2NrTWVkaWFEZXZpY2VzKCkKK3sKKyAgICBXS0Ns
ZWFyTW9ja01lZGlhRGV2aWNlcyhwbGF0Zm9ybUNvbnRleHQoKSk7Cit9CisKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OnJlbW92ZU1vY2tNZWRpYURldmljZShXS1N0cmluZ1JlZiBwZXJzaXN0ZW50SUQp
Cit7CisgICAgV0tSZW1vdmVNb2NrTWVkaWFEZXZpY2UocGxhdGZvcm1Db250ZXh0KCksIHBlcnNp
c3RlbnRJRCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0TW9ja01lZGlhRGV2aWNl
cygpCit7CisgICAgV0tSZXNldE1vY2tNZWRpYURldmljZXMocGxhdGZvcm1Db250ZXh0KCkpOwor
fQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1B
ZGRUZXN0T3B0aW9ucyhUZXN0T3B0aW9ucyYpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKaW5kZXggZjMzNzgzNDQzZWY2MmFiMGNkZGY4ODk4YWFlMDc2N2Fk
ZGUxY2IyMS4uYTQ4MTAzZmFkN2E1Mzg2MDVmOTkxNzJlZGEyY2QxMDU5YzE3NDQ4ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjEzLDYgKzIxMywxMSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5h
dmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTmF2aWdhdGlvbjsgfQogICAgIHZvaWQgY2xlYXJEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oKSB7IG1fZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gZmFsc2U7IH0KIAorICAgIHZvaWQgYWRkTW9j
a01lZGlhRGV2aWNlKFdLU3RyaW5nUmVmIHBlcnNpc3RlbnRJRCwgV0tTdHJpbmdSZWYgbGFiZWws
IFdLU3RyaW5nUmVmIHR5cGUpOworICAgIHZvaWQgY2xlYXJNb2NrTWVkaWFEZXZpY2VzKCk7Cisg
ICAgdm9pZCByZW1vdmVNb2NrTWVkaWFEZXZpY2UoV0tTdHJpbmdSZWYgcGVyc2lzdGVudElEKTsK
KyAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOworCiBwcml2YXRlOgogICAgIFdLUmV0
YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24o
V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZik7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0Q29u
ZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA1MjQ3NWRmZTQ3OWIw
NjMyMTY0MmNhYWQzZTkwM2QwM2E3Njk1ZTliLi4wNWMzY2U2MWE4YmVmM2U4OTU2OWZjNTZiYzNj
OTdiMmQ3ODg4NzYwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtOTE2LDYgKzkxNiwzOSBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIkFkZE1vY2tNZWRpYURldmljZSIpKSB7CisgICAgICAgIEFTU0VS
VChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwor
CisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNf
Y2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHBlcnNpc3RlbnRJREtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiUGVyc2lzdGVudElEIikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbGFiZWxLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxh
YmVsIikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdHlwZUtleShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVHlwZSIpKTsKKworICAgICAgICBhdXRv
IHBlcnNpc3RlbnRJRCA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgcGVyc2lzdGVudElES2V5LmdldCgpKSk7
CisgICAgICAgIGF1dG8gbGFiZWwgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9u
YXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGxhYmVsS2V5LmdldCgpKSk7
CisgICAgICAgIGF1dG8gdHlwZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdHlwZUtleS5nZXQoKSkpOwor
CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5hZGRNb2NrTWVkaWFEZXZpY2Uo
cGVyc2lzdGVudElELCBsYWJlbCwgdHlwZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
Q2xlYXJNb2NrTWVkaWFEZXZpY2VzIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLmNsZWFyTW9ja01lZGlhRGV2aWNlcygpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIlJlbW92ZU1vY2tNZWRpYURldmljZSIpKSB7CisgICAgICAgIFdLU3RyaW5nUmVmIHBlcnNp
c3RlbnRJZCA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihtZXNzYWdlQm9keSk7CisKKyAgICAg
ICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJlbW92ZU1vY2tNZWRpYURldmljZShwZXJz
aXN0ZW50SWQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJlc2V0TW9ja01lZGlhRGV2
aWNlcyIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5yZXNldE1vY2tN
ZWRpYURldmljZXMoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiQ29ubmVjdE1vY2tHYW1lcGFkIikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlE
KG1lc3NhZ2VCb2R5KSA9PSBXS1VJbnQ2NEdldFR5cGVJRCgpKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZDY3ZjVjM2Y3
MzY2ZWZjMjA4NGI3NGQ0ZjQyMTA4Njk2NmMyMjBhLi5iNzJlMzQyZWVhNTk5MjRkZTgzMzY3NjFh
ZTE4OGY3NzQ1Y2JjMTY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDYtMjUgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBUEkgdG8gY29udHJv
bCBtb2NrIG1lZGlhIGRldmljZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4Njk1OAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4K
KworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdl
LWV2ZW50LTIuaHRtbDogQWRkZWQuCisKIDIwMTgtMDYtMjUgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIE1ha2UgaW1wb3J0ZWQv
bW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1wYXVzaW5nLmh0bWwgcGFzcyBy
ZWxpYWJseQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2Ut
Y2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0YzZiNjEw
NzZmYWFhM2RlNGY4MTY4Zjc5NjljZjEwZjYwN2E2OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgJ2RldmljZWNoYW5nZScgZXZlbnQgZmlyZWQgd2hl
biBkZXZpY2UgbGlzdCBjaGFuZ2VzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2Q1ZjJi
ZGZlZGQ5MWVjYmQyM2ZjNzFiODM1NzFlMDcwN2IyNTViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbApAQCAt
MCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5UZXN0aW5nIGxvY2FsIGF1ZGlvIGNhcHR1cmUg
cGxheWJhY2sgY2F1c2VzICJwbGF5aW5nIiBldmVudCB0byBmaXJlPC90aXRsZT4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0PgorICAgIGxldCBkZXZpY2VJZHMgPSBbXTsKKyAgICBwcm9taXNlX3Rl
c3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgidGVzdCByZXF1aXJlcyBpbnRlcm5hbCBB
UEkiKTsKKworICAgICAgICB0ZXN0LmFkZF9jbGVhbnVwKCgpID0+IHsgdGVzdFJ1bm5lci5yZXNl
dE1vY2tNZWRpYURldmljZXMoKTsgfSk7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVk
aWFQZXJtaXNzaW9uKHRydWUpOworCisgICAgICAgIGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZSB9KTsKKworICAgICAgICBs
ZXQgZGV2aWNlcyA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNl
cygpOworCisgICAgICAgIGFzc2VydF90cnVlKCEhZGV2aWNlcy5sZW5ndGgsICJjaGVjayB0aGVy
ZSBhcmUgc29tZSBkZXZpY2VzIik7CisKKyAgICAgICAgdGVzdFJ1bm5lci5jbGVhck1vY2tNZWRp
YURldmljZXMoKTsKKworICAgICAgICBkZXZpY2VzID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCk7CisgICAgICAgIGFzc2VydF9mYWxzZSghIWRldmljZXMu
bGVuZ3RoLCAiY2hlY2sgdGhlcmUgYXJlIG5vIG1vcmUgZGV2aWNlcyIpOworCisgICAgICAgIGF3
YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIG5hdmln
YXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2UgPSByZXNvbHZlOworICAgICAgICAgICAg
c2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coImV2ZW50IDEg
dGFraW5nIGEgbG9uZyB0aW1lIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAg
ICAgICAgfSwgNTAwMCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZE1vY2tDYW1lcmFEZXZp
Y2UoImlkMSIsICJteSBjYW1lcmEiKTsKKyAgICAgICAgfSk7CisgICAgICAgIGRldmljZXMgPSBh
d2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKTsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhkZXZpY2VzWzBdLmtpbmQsICJ2aWRlb2lucHV0Iik7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoZGV2aWNlc1swXS5sYWJlbCwgIm15IGNhbWVyYSIpOworCisgICAgICAgIGF3
YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIG5hdmln
YXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2UgPSByZXNvbHZlOworICAgICAgICAgICAg
c2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coImV2ZW50IDIg
dGFraW5nIGEgbG9uZyB0aW1lIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAg
ICAgICAgfSwgNTAwMCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZE1vY2tNaWNyb3Bob25l
RGV2aWNlKCJpZDIiLCAibXkgbWljIik7CisgICAgICAgIH0pOworICAgICAgICBkZXZpY2VzID0g
YXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoZGV2aWNlc1swXS5raW5kLCAiYXVkaW9pbnB1dCIpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGRldmljZXNbMF0ubGFiZWwsICJteSBtaWMiKTsKKworICAgIH0sICInZGV2
aWNlY2hhbmdlJyBldmVudCBmaXJlZCB3aGVuIGRldmljZSBsaXN0IGNoYW5nZXMiKTsKKyAgICA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>