<?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>239377</bug_id>
          
          <creation_ts>2022-04-15 01:34:57 -0700</creation_ts>
          <short_desc>[WebGPU] Implement hardware limits</short_desc>
          <delta_ts>2022-04-16 12:28:25 -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>WebGPU</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="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>djg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1861758</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-15 01:34:57 -0700</bug_when>
    <thetext>[WebGPU] Implement hardware limits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861761</commentid>
    <comment_count>1</comment_count>
      <attachid>457684</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-15 01:41:37 -0700</bug_when>
    <thetext>Created attachment 457684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861763</commentid>
    <comment_count>2</comment_count>
      <attachid>457686</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-15 02:20:58 -0700</bug_when>
    <thetext>Created attachment 457686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861895</commentid>
    <comment_count>3</comment_count>
      <attachid>457720</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-15 13:52:30 -0700</bug_when>
    <thetext>Created attachment 457720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861898</commentid>
    <comment_count>4</comment_count>
      <attachid>457722</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-15 13:57:51 -0700</bug_when>
    <thetext>Created attachment 457722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861947</commentid>
    <comment_count>5</comment_count>
      <attachid>457722</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-15 15:51:14 -0700</bug_when>
    <thetext>Comment on attachment 457722
Patch

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

&gt; Source/WebGPU/WebGPU/Adapter.h:45
&gt; +    static Ref&lt;Adapter&gt; create(id&lt;MTLDevice&gt; device, Instance&amp; instance, WGPULimits&amp;&amp; limits)

There is no benefit to passing a structure full of scalars with an rvalue reference and calling WTFMove. Just const&amp; is fine for this kind of object, unless this is generic code where it might be something with non-scalars in it, or if we think we’ll be evolving it some day.

&gt; Source/WebGPU/WebGPU/HardwareLimits.mm:41
&gt; +static WGPULimits apple3()

constexpr

&gt; Source/WebGPU/WebGPU/HardwareLimits.mm:75
&gt; +static WGPULimits apple4()

constexpr

&gt; Source/WebGPU/WebGPU/HardwareLimits.mm:109
&gt; +static WGPULimits apple5()

constexpr

&gt; Source/WebGPU/WebGPU/HardwareLimits.mm:144
&gt; +static WGPULimits apple6()

constexpr

&gt; Source/WebGPU/WebGPU/HardwareLimits.mm:178
&gt; +static WGPULimits apple7()

constexpr

&gt; Source/WebGPU/WebGPU/HardwareLimits.mm:338
&gt; +static bool checkLimits(const WGPULimits&amp; limits)

This could be constexpr

&gt; Source/WebGPU/WebGPU/HardwareLimits.mm:386
&gt; +bool isValid(const WGPULimits&amp; limits)

This could be constexpr

&gt; Source/WebGPU/WebGPU/HardwareLimits.mm:391
&gt; +bool anyLimitIsBetterThan(const WGPULimits&amp; target, const WGPULimits&amp; reference)

This could be constexpr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862026</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-15 21:48:20 -0700</bug_when>
    <thetext>Committed r292940 (249705@trunk): &lt;https://commits.webkit.org/249705@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862027</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-15 21:49:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/91842461&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862066</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-04-16 12:06:42 -0700</bug_when>
    <thetext>This patch broke builds:
https://build.webkit.org/#/builders/12/builds/11560

/Volumes/Data/worker/bigsur-debug/build/Source/WebGPU/WebGPU/HardwareLimits.mm:338:23: error: constexpr function never produces a constant expression [-Winvalid-constexpr]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862067</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-16 12:19:32 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #8)
&gt; This patch broke builds:
&gt; https://build.webkit.org/#/builders/12/builds/11560
&gt; 
&gt; /Volumes/Data/worker/bigsur-debug/build/Source/WebGPU/WebGPU/HardwareLimits.
&gt; mm:338:23: error: constexpr function never produces a constant expression
&gt; [-Winvalid-constexpr]

Trying to reproduce now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862069</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-16 12:25:20 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #9)
&gt; (In reply to Ryosuke Niwa from comment #8)
&gt; &gt; This patch broke builds:
&gt; &gt; https://build.webkit.org/#/builders/12/builds/11560
&gt; &gt; 
&gt; &gt; /Volumes/Data/worker/bigsur-debug/build/Source/WebGPU/WebGPU/HardwareLimits.
&gt; &gt; mm:338:23: error: constexpr function never produces a constant expression
&gt; &gt; [-Winvalid-constexpr]
&gt; 
&gt; Trying to reproduce now

I can&apos;t reproduce this (possibly because I have a different SDK installed than the one bot uses), but I can see by inspection that the error is correct - that function is marked as constexpr but will never produce a constant expression. I&apos;ll commit a prospective fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862072</commentid>
    <comment_count>11</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-16 12:28:25 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #10)
&gt; (In reply to Myles C. Maxfield from comment #9)
&gt; &gt; (In reply to Ryosuke Niwa from comment #8)
&gt; &gt; &gt; This patch broke builds:
&gt; &gt; &gt; https://build.webkit.org/#/builders/12/builds/11560
&gt; &gt; &gt; 
&gt; &gt; &gt; /Volumes/Data/worker/bigsur-debug/build/Source/WebGPU/WebGPU/HardwareLimits.
&gt; &gt; &gt; mm:338:23: error: constexpr function never produces a constant expression
&gt; &gt; &gt; [-Winvalid-constexpr]
&gt; &gt; 
&gt; &gt; Trying to reproduce now
&gt; 
&gt; I can&apos;t reproduce this (possibly because I have a different SDK installed
&gt; than the one bot uses), but I can see by inspection that the error is
&gt; correct - that function is marked as constexpr but will never produce a
&gt; constant expression. I&apos;ll commit a prospective fix.

https://commits.webkit.org/r292941</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457684</attachid>
            <date>2022-04-15 01:41:37 -0700</date>
            <delta_ts>2022-04-15 02:20:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239377-20220415014137.patch</filename>
            <type>text/plain</type>
            <size>51282</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNhNGUwNTAwYmYwYWQ5ZmM0ZDYxYzZj
Njk5MzIxM2VkMzhhNDA3MDYuLjZhODU5ZmNlY2UwZGYwZjcyNTAwMGM5NTZmOGYwOWY3ZmYyMGMy
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDQtMTUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBsZW1lbnQgaGFyZHdh
cmUgbGltaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzkzNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgbWlzc2luZyAjaW5jbHVkZS4KKworICAgICAgICAqIHd0Zi9QYWdlQmxvY2suaDoKKwog
MjAyMi0wNC0xNCAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dl
YkF1dGhuXSBDbGVhbiB1cCBXZWJBdXRoZW50aWNhdGlvbk1vZGVybiBhbmQgV2ViQXV0aG5Qcm9j
ZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBlMjhmMzNmZjViOWYxY2ViYmVjZDRjMTRiMjljOTNj
YTdlZjk3MjRhLi5mMzE4OWE1OTA4MjQ2ZWM0OGQ1NTM5MWM5ZTMxNGJiOGZkYTFmYTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMi0wNC0xNSAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEltcGxlbWVu
dCBoYXJkd2FyZSBsaW1pdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzOTM3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciAibGltaXRzIiBhcyBkZXNjcmli
ZWQgaW4gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jbGltaXRzLgorICAgICAgICBW
YXJpb3VzIG9wZXJhdGlvbnMgcXVlcnkgdGhlIGxpbWl0cyBvZiB0aGUgZGV2aWNlIHRvIGtub3cg
d2hldGhlciB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbiBpcworICAgICAgICB3aXRoaW4gcmFuZ2Uu
IEUuZy4gaWYgY29udGVudCB0cmllcyB0byBtYWtlIGEgdGV4dHVyZSB0b28gYmlnLCB0aGlzIGlz
IGhvdyB3ZSBjYXRjaCBpdCBhaGVhZCBvZgorICAgICAgICB0aW1lLgorCisgICAgICAgICogcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcDoKKyAgICAgICAgKFBB
TDo6V2ViR1BVOjpBZGFwdGVySW1wbDo6cmVxdWVzdERldmljZSk6CisKIDIwMjItMDQtMTQgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gW1dL
Ml0gTWFuYWdlZCBwYXN0ZWJvYXJkIHNob3VsZCBmdW5jdGlvbiBmb3IgYWxsIG1hbmFnZWQgZG9t
YWlucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViR1BV
L0NoYW5nZUxvZwppbmRleCBkMjM3M2ZlMmY3NGE0MzdiYmRjMWEzYjRhNjVmZDhiZDBiYzZjY2Rk
Li42MzI1ODhjNTFiMWUyOGExZTlhZDI1NzdlYmNhYWM1ZDQwMWQ3MDI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ2IEBACisyMDIyLTA0LTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW1wbGVtZW50IGhhcmR3YXJlIGxpbWl0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5Mzc3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZ2F0aGVy
IHRoZSB2YWx1ZXMgb2YgdGhlIGxpbWl0cyBmcm9tIHRoZSBNZXRhbCBGZWF0dXJlIFNldCBUYWJs
ZXMKKyAgICAgICAgYXQgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL21ldGFsL01ldGFsLUZl
YXR1cmUtU2V0LVRhYmxlcy5wZGYuCisKKyAgICAgICAgVGhlcmUgYXJlIG5vIGxpbWl0IHRhYmxl
cyBmb3IgdGhlIENvbW1vbiBmYW1pbGllcywgc28gd2UgdXNlIEFwcGxlCisgICAgICAgIGFuZCBN
YWMgZmFtaWxpZXMgaW5zdGVhZC4KKworICAgICAgICAqIFdlYkdQVS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYkdQVS9BZGFwdGVyLmg6CisgICAgICAgIChXZWJHUFU6
OkFkYXB0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0FkYXB0ZXIubW06CisgICAgICAg
IChXZWJHUFU6OkFkYXB0ZXI6OkFkYXB0ZXIpOgorICAgICAgICAoV2ViR1BVOjpBZGFwdGVyOjpy
ZXF1ZXN0RGV2aWNlKToKKyAgICAgICAgKFdlYkdQVTo6ZGV2aWNlTWVldHNSZXF1aXJlZExpbWl0
cyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVL0RldmljZS5oOgorICAgICAgICAqIFdlYkdQ
VS9EZXZpY2UubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkdQVTo6RGV2aWNlOjpEZXZpY2UpOgorICAgICAgICAqIFdlYkdQVS9IYXJkd2FyZUxpbWl0
cy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmguCisgICAgICAg
ICogV2ViR1BVL0hhcmR3YXJlTGltaXRzLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkdQVTo6YXBw
bGUzKToKKyAgICAgICAgKFdlYkdQVTo6YXBwbGU0KToKKyAgICAgICAgKFdlYkdQVTo6YXBwbGU1
KToKKyAgICAgICAgKFdlYkdQVTo6YXBwbGU2KToKKyAgICAgICAgKFdlYkdQVTo6YXBwbGU3KToK
KyAgICAgICAgKFdlYkdQVTo6bWFjMik6CisgICAgICAgIChXZWJHUFU6OnJhd0xpbWl0cyk6Cisg
ICAgICAgIChXZWJHUFU6OmNoZWNrTGltaXRzKToKKyAgICAgICAgKFdlYkdQVTo6bGltaXRzKToK
KyAgICAgICAgKFdlYkdQVTo6aXNWYWxpZCk6CisgICAgICAgIChXZWJHUFU6OmFueUxpbWl0SXNC
ZXR0ZXJUaGFuKToKKyAgICAgICAgKiBXZWJHUFUvSW5zdGFuY2UubW06CisgICAgICAgIChXZWJH
UFU6Okluc3RhbmNlOjpyZXF1ZXN0QWRhcHRlcik6CisgICAgICAgICogV2ViR1BVL1RleHR1cmUu
bW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6dmFsaWRhdGVDcmVhdGVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkdQVTo6VGV4dHVyZTo6Y3JlYXRlVmlldyk6CisKIDIwMjItMDQtMTMgIEVsbGlv
dHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHB1Ymxp
YyB3YXRjaE9TIHdvcmtzcGFjZSBidWlsZCBieSB1cGRhdGluZyBzY2hlbWUgYW5kIGJ1aWxkIHNl
dHRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYWdlQmxvY2suaCBiL1NvdXJjZS9X
VEYvd3RmL1BhZ2VCbG9jay5oCmluZGV4IDliYjdmZmZjYzFhZTA1MjhiNWU5MzM0ZDVkYzRkNjJj
YTI3YjQ5ZmQuLjgyOWQ1MTE1NTkxODMxNDYwZjhmMzJiNGJlZmY1MzZjMTY0YjUwZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BhZ2VCbG9jay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bh
Z2VCbG9jay5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCA4M2NmZjdh
NjQzMDJiMjU5ZDM0ZTA3MmM0ZjhiMzczY2QxMmUxYjBhLi4xZjBjNzcwYTkyN2I3MGM1YjczNDM3
OTM4MGJlYzNmZWIwNDc5MzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcApA
QCAtMTQ5LDQzICsxNDksNzkgQEAgdm9pZCBBZGFwdGVySW1wbDo6cmVxdWVzdERldmljZShjb25z
dCBEZXZpY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBDb21wbGV0aW9uSGEKICAgICAgICAgcmV0
dXJuIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZmVhdHVyZU5h
bWUpOwogICAgIH0pOwogCi0gICAgV0dQVVJlcXVpcmVkTGltaXRzIGxpbWl0cyB7Ci0gICAgICAg
IG51bGxwdHIsIHsKLSAgICAgICAgICAgIDAsIC8vIG1heFRleHR1cmVEaW1lbnNpb24xRAotICAg
ICAgICAgICAgMCwgLy8gbWF4VGV4dHVyZURpbWVuc2lvbjJECi0gICAgICAgICAgICAwLCAvLyBt
YXhUZXh0dXJlRGltZW5zaW9uM0QKLSAgICAgICAgICAgIDAsIC8vIG1heFRleHR1cmVBcnJheUxh
eWVycwotICAgICAgICAgICAgMCwgLy8gbWF4QmluZEdyb3VwcwotICAgICAgICAgICAgMCwgLy8g
bWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQKLSAgICAgICAgICAgIDAs
IC8vIG1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0Ci0gICAgICAgICAg
ICAwLCAvLyBtYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZQotICAgICAgICAgICAgMCwg
Ly8gbWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZQotICAgICAgICAgICAgMCwgLy8gbWF4U3RvcmFn
ZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZQotICAgICAgICAgICAgMCwgLy8gbWF4U3RvcmFnZVRleHR1
cmVzUGVyU2hhZGVyU3RhZ2UKLSAgICAgICAgICAgIDAsIC8vIG1heFVuaWZvcm1CdWZmZXJzUGVy
U2hhZGVyU3RhZ2UKLSAgICAgICAgICAgIDAsIC8vIG1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6
ZQotICAgICAgICAgICAgMCwgLy8gbWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplCi0gICAgICAg
ICAgICAwLCAvLyBtaW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50Ci0gICAgICAgICAgICAw
LCAvLyBtaW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50Ci0gICAgICAgICAgICAwLCAvLyBt
YXhWZXJ0ZXhCdWZmZXJzCi0gICAgICAgICAgICAwLCAvLyBtYXhWZXJ0ZXhBdHRyaWJ1dGVzCi0g
ICAgICAgICAgICAwLCAvLyBtYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZQotICAgICAgICAgICAg
MCwgLy8gbWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMKLSAgICAgICAgICAgIDAsIC8vIG1h
eENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZQotICAgICAgICAgICAgMCwgLy8gbWF4Q29tcHV0
ZUludm9jYXRpb25zUGVyV29ya2dyb3VwCi0gICAgICAgICAgICAwLCAvLyBtYXhDb21wdXRlV29y
a2dyb3VwU2l6ZVgKLSAgICAgICAgICAgIDAsIC8vIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWQot
ICAgICAgICAgICAgMCwgLy8gbWF4Q29tcHV0ZVdvcmtncm91cFNpemVaCi0gICAgICAgICAgICAw
LCAvLyBtYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbgotICAgICAgICB9LAorICAgIGF1
dG8gbGltaXRzID0gV0dQVUxpbWl0cyB7CisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24x
RCAqLyAgICA4MTkyLAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uMkQgKi8gICAgODE5
MiwKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjNEICovICAgIDIwNDgsCisgICAgICAg
IC8qIG1heFRleHR1cmVBcnJheUxheWVycyAqLyAgICAyNTYsCisgICAgICAgIC8qIG1heEJpbmRH
cm91cHMgKi8gICAgNCwKKyAgICAgICAgLyogbWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlw
ZWxpbmVMYXlvdXQgKi8gICAgOCwKKyAgICAgICAgLyogbWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJz
UGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgNCwKKyAgICAgICAgLyogbWF4U2FtcGxlZFRleHR1cmVz
UGVyU2hhZGVyU3RhZ2UgKi8gICAgMTYsCisgICAgICAgIC8qIG1heFNhbXBsZXJzUGVyU2hhZGVy
U3RhZ2UgKi8gICAgMTYsCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3Rh
Z2UgKi8gICAgOCwKKyAgICAgICAgLyogbWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2Ug
Ki8gICAgNCwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAg
ICAxMiwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplICovICAgIDY1NTM2
LAorICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMTM0MjE3NzI4
LAorICAgICAgICAvKiBtaW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDI1NiwK
KyAgICAgICAgLyogbWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICAyNTYsCisg
ICAgICAgIC8qIG1heFZlcnRleEJ1ZmZlcnMgKi8gICAgOCwKKyAgICAgICAgLyogbWF4VmVydGV4
QXR0cmlidXRlcyAqLyAgICAxNiwKKyAgICAgICAgLyogbWF4VmVydGV4QnVmZmVyQXJyYXlTdHJp
ZGUgKi8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMg
Ki8gICAgNjAsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSAqLyAg
ICAxNjM1MiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwICov
ICAgIDI1NiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVYICovICAgIDI1NiwK
KyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVZICovICAgIDI1NiwKKyAgICAgICAg
LyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVaICovICAgIDY0LAorICAgICAgICAvKiBtYXhDb21w
dXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbiAqLyAgICA2NTUzNSwKICAgICB9OwogCisgICAgZm9y
IChjb25zdCBhdXRvJiBwYWlyIDogZGVzY3JpcHRvci5yZXF1aXJlZExpbWl0cykgeworI2RlZmlu
ZSBTRVRfVkFMVUUoTElNSVQpIFwKKyAgICBlbHNlIGlmIChwYWlyLmtleSA9PSAjTElNSVQpIFwK
KyAgICAgICAgbGltaXRzLkxJTUlUID0gcGFpci52YWx1ZTsKKworICAgICAgICBpZiAoZmFsc2Up
IHsgfQorICAgICAgICBTRVRfVkFMVUUobWF4VGV4dHVyZURpbWVuc2lvbjFEKQorICAgICAgICBT
RVRfVkFMVUUobWF4VGV4dHVyZURpbWVuc2lvbjJEKQorICAgICAgICBTRVRfVkFMVUUobWF4VGV4
dHVyZURpbWVuc2lvbjNEKQorICAgICAgICBTRVRfVkFMVUUobWF4VGV4dHVyZUFycmF5TGF5ZXJz
KQorICAgICAgICBTRVRfVkFMVUUobWF4QmluZEdyb3VwcykKKyAgICAgICAgU0VUX1ZBTFVFKG1h
eER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0KQorICAgICAgICBTRVRfVkFM
VUUobWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQpCisgICAgICAgIFNF
VF9WQUxVRShtYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSkKKyAgICAgICAgU0VUX1ZB
TFVFKG1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UpCisgICAgICAgIFNFVF9WQUxVRShtYXhTdG9y
YWdlQnVmZmVyc1BlclNoYWRlclN0YWdlKQorICAgICAgICBTRVRfVkFMVUUobWF4U3RvcmFnZVRl
eHR1cmVzUGVyU2hhZGVyU3RhZ2UpCisgICAgICAgIFNFVF9WQUxVRShtYXhVbmlmb3JtQnVmZmVy
c1BlclNoYWRlclN0YWdlKQorICAgICAgICBTRVRfVkFMVUUobWF4VW5pZm9ybUJ1ZmZlckJpbmRp
bmdTaXplKQorICAgICAgICBTRVRfVkFMVUUobWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplKQor
ICAgICAgICBTRVRfVkFMVUUobWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCkKKyAgICAg
ICAgU0VUX1ZBTFVFKG1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQpCisgICAgICAgIFNF
VF9WQUxVRShtYXhWZXJ0ZXhCdWZmZXJzKQorICAgICAgICBTRVRfVkFMVUUobWF4VmVydGV4QXR0
cmlidXRlcykKKyAgICAgICAgU0VUX1ZBTFVFKG1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlKQor
ICAgICAgICBTRVRfVkFMVUUobWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMpCisgICAgICAg
IFNFVF9WQUxVRShtYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUpCisgICAgICAgIFNFVF9W
QUxVRShtYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXApCisgICAgICAgIFNFVF9WQUxV
RShtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgpCisgICAgICAgIFNFVF9WQUxVRShtYXhDb21wdXRl
V29ya2dyb3VwU2l6ZVkpCisgICAgICAgIFNFVF9WQUxVRShtYXhDb21wdXRlV29ya2dyb3VwU2l6
ZVopCisgICAgICAgIFNFVF9WQUxVRShtYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbikK
KworI3VuZGVmIFNFVF9WQUxVRQorICAgIH0KKworICAgIFdHUFVSZXF1aXJlZExpbWl0cyByZXF1
aXJlZExpbWl0cyB7IG51bGxwdHIsIFdURk1vdmUobGltaXRzKSB9OworCiAgICAgV0dQVURldmlj
ZURlc2NyaXB0b3IgYmFja2luZ0Rlc2NyaXB0b3IgewogICAgICAgICBudWxscHRyLAogICAgICAg
ICBsYWJlbC5kYXRhKCksCiAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmZWF0dXJlcy5z
aXplKCkpLAogICAgICAgICBmZWF0dXJlcy5kYXRhKCksCi0gICAgICAgICZsaW1pdHMsCisgICAg
ICAgICZyZXF1aXJlZExpbWl0cywKICAgICB9OwogCiAgICAgd2dwdUFkYXB0ZXJSZXF1ZXN0RGV2
aWNlV2l0aEJsb2NrKG1fYmFja2luZywgJmJhY2tpbmdEZXNjcmlwdG9yLCBtYWtlQmxvY2tQdHIo
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCA9
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQuY29weVJlZigpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShXR1BVUmVxdWVzdERldmljZVN0YXR1cywgV0dQVURldmljZSBkZXZpY2UsIGNv
bnN0IGNoYXIqKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDYyMmZiY2Y4N2JlMzQwOTdjN2NlMmFlZGRmMGRmNDM4MWNj
MzAwOGIuLmJlZTEwNDA1NTg5NDVjMWZhOWViYWNhMTUyY2I3MDA3NTBkNzA4Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAsNiAr
MTAsOCBAQAogCQkxQzAyM0QzRjI3NDQ5MDcwMDAxREI3MzQgLyogV0dTTExleGVyVGVzdHMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAyM0QzRTI3
NDQ5MDcwMDAxREI3MzQgLyogV0dTTExleGVyVGVzdHMubW0gKi87IH07CiAJCTFDMDIzRDQwMjc0
NDkwNzAwMDFEQjczNCAvKiBsaWJ3Z3NsLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0VCRDdGMjI3MTZCMkNDMDBBNTI1NEQgLyogbGlid2dzbC5h
ICovOyB9OwogCQkxQzAyM0Q0QjI3NDQ5NUI5MDAxREI3MzQgLyogSmF2YVNjcmlwdENvcmUuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUMwMjNENEEyNzQ0OTVCOTAwMURCNzM0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsg
fTsKKwkJMUMwRjQxRUUyODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3YXJlTGltaXRzLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwRjQxRUMyODA5NDA2
NTAwMDU4ODZEIC8qIEhhcmR3YXJlTGltaXRzLm1tICovOyB9OworCQkxQzBGNDFFRjI4MDk0MDY1
MDAwNTg4NkQgLyogSGFyZHdhcmVMaW1pdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEY0MUVEMjgwOTQwNjUwMDA1ODg2RCAvKiBIYXJkd2FyZUxp
bWl0cy5oICovOyB9OwogCQkxQzJDRURFRTI3MUU4QTczMDBFREMxNkYgLyogTWV0YWwuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMy
Q0VERUQyNzFFOEE3MzAwRURDMTZGIC8qIE1ldGFsLmZyYW1ld29yayAqLzsgfTsKIAkJMUMzMzc1
NUYyN0ZBMjNCODAwMkYxNjQ0IC8qIElzVmFsaWRUb1VzZVdpdGguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMzM3NTVEMjdGQTIzQjgwMDJGMTY0NCAv
KiBJc1ZhbGlkVG9Vc2VXaXRoLmggKi87IH07CiAJCTFDNTMxOUMwMjdCREM2Q0MwMENEMTI3RSAv
KiBtYWluLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM1MzE5QkYyN0JEQzZDQzAwQ0QxMjdFIC8qIG1haW4uc3dpZnQgKi87IH07CkBAIC0xMzEs
NiArMTMzLDggQEAKIAkJMUMwMjNEM0UyNzQ0OTA3MDAwMURCNzM0IC8qIFdHU0xMZXhlclRlc3Rz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0dTTExleGVyVGVzdHMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDMDIzRDQ3Mjc0NDkxNkQwMDFEQjczNCAvKiBXR1NMVW5pdFRl
c3RzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdHU0xVbml0VGVzdHMueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDIzRDRBMjc0NDk1QjkwMDFEQjczNCAvKiBKYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMUMwRjQxRUMy
ODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3YXJlTGltaXRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gSGFyZHdhcmVMaW1pdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEY0
MUVEMjgwOTQwNjUwMDA1ODg2RCAvKiBIYXJkd2FyZUxpbWl0cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
YXJkd2FyZUxpbWl0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzJDRURFRDI3
MUU4QTczMDBFREMxNkYgLyogTWV0YWwuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBNZXRh
bC5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL01ldGFsLmZyYW1l
d29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCTFDMzM3NTVEMjdGQTIzQjgwMDJGMTY0
NCAvKiBJc1ZhbGlkVG9Vc2VXaXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElzVmFsaWRUb1VzZVdpdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1MzE5QkQyN0JEQzZDQjAwQ0QxMjdF
IC8qIENvbW1hbmRMaW5lUGxheWdyb3VuZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBl
eHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUlu
SW5kZXggPSAwOyBwYXRoID0gQ29tbWFuZExpbmVQbGF5Z3JvdW5kOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMzQ0LDYgKzM0OCw4IEBACiAJCQkJMUM1QUNBOUIyNzNB
NDI2RDAwOTVGOEQ1IC8qIERldmljZS5oICovLAogCQkJCTFDNUFDQUEzMjczQTQyNkQwMDk1RjhE
NSAvKiBEZXZpY2UubW0gKi8sCiAJCQkJMUNFQkQ4MEIyNzE2QzM3OTAwQTUyNTREIC8qIEV4cG9y
dE1hY3Jvcy5oICovLAorCQkJCTFDMEY0MUVEMjgwOTQwNjUwMDA1ODg2RCAvKiBIYXJkd2FyZUxp
bWl0cy5oICovLAorCQkJCTFDMEY0MUVDMjgwOTQwNjUwMDA1ODg2RCAvKiBIYXJkd2FyZUxpbWl0
cy5tbSAqLywKIAkJCQkxQzVBQ0FBMDI3M0E0MjZEMDA5NUY4RDUgLyogSW5zdGFuY2UuaCAqLywK
IAkJCQkxQzVBQ0E5MjI3M0E0MUMyMDA5NUY4RDUgLyogSW5zdGFuY2UubW0gKi8sCiAJCQkJMUMz
Mzc1NUQyN0ZBMjNCODAwMkYxNjQ0IC8qIElzVmFsaWRUb1VzZVdpdGguaCAqLywKQEAgLTQ4MSw2
ICs0ODcsNyBAQAogCQkJCTFDNTgzMDE4MjdFMTY4MjMwMDlCNDBGMCAvKiBBUElDb252ZXJzaW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM1QUNBRDcyNzNBNEQ3MDAwOTVGOEQ1IC8qIEJpbmRH
cm91cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM1ODJGRkEyN0UwNDEzMTAwOUI0MEYwIC8qIENv
bW1hbmRzTWl4aW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTFDMEY0MUVGMjgwOTQwNjUwMDA1ODg2
RCAvKiBIYXJkd2FyZUxpbWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMzMzc1NUYyN0ZBMjNC
ODAwMkYxNjQ0IC8qIElzVmFsaWRUb1VzZVdpdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRUJE
N0U3MjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNUFD
QUQzMjczQTRDODYwMDk1RjhENSAvKiBXZWJHUFVFeHQuaCBpbiBIZWFkZXJzICovLApAQCAtNzMx
LDYgKzczOCw3IEBACiAJCQkJMUM1QUNBQzYyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbXB1dGVQYXNz
RW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUMwMjczQTQyNkQwMDk1RjhENSAv
KiBDb21wdXRlUGlwZWxpbmUubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0FDMTI3M0E0MjZE
MDA5NUY4RDUgLyogRGV2aWNlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUMwRjQxRUUyODA5NDA2
NTAwMDU4ODZEIC8qIEhhcmR3YXJlTGltaXRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1QUNB
OTQyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1
QUNBRTUyNzNBNTVERDAwOTVGOEQ1IC8qIFBpcGVsaW5lTGF5b3V0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUM1QUNBQkQyNzNBNDI2RDAwOTVGOEQ1IC8qIFF1ZXJ5U2V0Lm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmggYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9BZGFwdGVyLmgKaW5kZXggOTg2M2U2OGU1OWFlMDdiNmI5MjRjYzJlMWJm
NTYwYWMwMGQ2YTI0Yi4uODA0NjQwZTgxNjI4MGJhMmM5MjRmMDIyOWNkOWU0ODQ1NThiNGY5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaApAQCAtNDIsOSArNDIsOSBAQCBjbGFzcyBJbnN0YW5jZTsK
IGNsYXNzIEFkYXB0ZXIgOiBwdWJsaWMgV0dQVUFkYXB0ZXJJbXBsLCBwdWJsaWMgUmVmQ291bnRl
ZDxBZGFwdGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxBZGFwdGVyPiBjcmVhdGUoaWQ8TVRMRGV2aWNlPiBkZXZpY2UsIEluc3RhbmNl
JiBpbnN0YW5jZSkKKyAgICBzdGF0aWMgUmVmPEFkYXB0ZXI+IGNyZWF0ZShpZDxNVExEZXZpY2U+
IGRldmljZSwgSW5zdGFuY2UmIGluc3RhbmNlLCBXR1BVTGltaXRzJiYgbGltaXRzKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWRhcHRlcihkZXZpY2UsIGluc3RhbmNlKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFkYXB0ZXIoZGV2aWNlLCBpbnN0YW5jZSwg
V1RGTW92ZShsaW1pdHMpKSk7CiAgICAgfQogICAgIHN0YXRpYyBSZWY8QWRhcHRlcj4gY3JlYXRl
SW52YWxpZChJbnN0YW5jZSYgaW5zdGFuY2UpCiAgICAgewpAQCAtNjYsMTEgKzY2LDEzIEBAIHB1
YmxpYzoKIAogCiBwcml2YXRlOgotICAgIEFkYXB0ZXIoaWQ8TVRMRGV2aWNlPiwgSW5zdGFuY2Um
KTsKKyAgICBBZGFwdGVyKGlkPE1UTERldmljZT4sIEluc3RhbmNlJiwgV0dQVUxpbWl0cyYmKTsK
ICAgICBBZGFwdGVyKEluc3RhbmNlJik7CiAKICAgICBpZDxNVExEZXZpY2U+IG1fZGV2aWNlIHsg
bmlsIH07CiAgICAgY29uc3QgUmVmPEluc3RhbmNlPiBtX2luc3RhbmNlOworCisgICAgV0dQVUxp
bWl0cyBtX2xpbWl0cyB7IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9BZGFwdGVyLm1tCmluZGV4IDdlNDNlMTkzMDdkNDIwMzZlNTliZjhmYzg3M2VhZGRhNTMxZWFm
NGEuLjA1YTlhMDM5Nzc0Y2EyOTBiMGE4NTdjOWZlM2ZkMGJiMjQ2M2JmMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQWRhcHRlci5tbQpAQCAtMjgsMTQgKzI4LDE2IEBACiAKICNpbXBvcnQgIkFQSUNvbnZlcnNp
b25zLmgiCiAjaW1wb3J0ICJEZXZpY2UuaCIKKyNpbXBvcnQgIkhhcmR3YXJlTGltaXRzLmgiCiAj
aW1wb3J0ICJJbnN0YW5jZS5oIgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgV2ViR1BVIHsKIAotQWRhcHRlcjo6QWRhcHRlcihpZDxNVExEZXZpY2U+IGRldmljZSwg
SW5zdGFuY2UmIGluc3RhbmNlKQorQWRhcHRlcjo6QWRhcHRlcihpZDxNVExEZXZpY2U+IGRldmlj
ZSwgSW5zdGFuY2UmIGluc3RhbmNlLCBXR1BVTGltaXRzJiYgbGltaXRzKQogICAgIDogbV9kZXZp
Y2UoZGV2aWNlKQogICAgICwgbV9pbnN0YW5jZShpbnN0YW5jZSkKKyAgICAsIG1fbGltaXRzKFdU
Rk1vdmUobGltaXRzKSkKIHsKIH0KIApAQCAtNzksMzggKzgxLDYgQEAgYm9vbCBBZGFwdGVyOjpo
YXNGZWF0dXJlKFdHUFVGZWF0dXJlTmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRp
YyBib29sIGRldmljZU1lZXRzUmVxdWlyZWRMaW1pdHMoaWQ8TVRMRGV2aWNlPiwgY29uc3QgV0dQ
VVJlcXVpcmVkTGltaXRzJiByZXF1aXJlZExpbWl0cykKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHRoaXMuCi0gICAgcmV0dXJuICFyZXF1aXJlZExpbWl0cy5uZXh0SW5DaGFpbgotICAgICAg
ICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24xRAotICAgICAg
ICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRAotICAgICAg
ICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRAotICAgICAg
ICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFRleHR1cmVBcnJheUxheWVycwotICAgICAg
ICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heEJpbmRHcm91cHMKLSAgICAgICAgJiYgIXJl
cXVpcmVkTGltaXRzLmxpbWl0cy5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxh
eW91dAotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heER5bmFtaWNTdG9yYWdl
QnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0Ci0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1p
dHMubWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UKLSAgICAgICAgJiYgIXJlcXVpcmVk
TGltaXRzLmxpbWl0cy5tYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlCi0gICAgICAgICYmICFyZXF1
aXJlZExpbWl0cy5saW1pdHMubWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZQotICAgICAg
ICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0
YWdlCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4VW5pZm9ybUJ1ZmZlcnNQ
ZXJTaGFkZXJTdGFnZQotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFVuaWZv
cm1CdWZmZXJCaW5kaW5nU2l6ZQotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1h
eFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZQotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGlt
aXRzLm1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQKLSAgICAgICAgJiYgIXJlcXVpcmVk
TGltaXRzLmxpbWl0cy5taW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50Ci0gICAgICAgICYm
ICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4VmVydGV4QnVmZmVycwotICAgICAgICAmJiAhcmVx
dWlyZWRMaW1pdHMubGltaXRzLm1heFZlcnRleEF0dHJpYnV0ZXMKLSAgICAgICAgJiYgIXJlcXVp
cmVkTGltaXRzLmxpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZQotICAgICAgICAmJiAh
cmVxdWlyZWRMaW1pdHMubGltaXRzLm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzCi0gICAg
ICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VT
aXplCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4Q29tcHV0ZUludm9jYXRp
b25zUGVyV29ya2dyb3VwCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4Q29t
cHV0ZVdvcmtncm91cFNpemVYCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4
Q29tcHV0ZVdvcmtncm91cFNpemVZCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMu
bWF4Q29tcHV0ZVdvcmtncm91cFNpemVaCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1p
dHMubWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb247Ci19Ci0KIHZvaWQgQWRhcHRlcjo6
cmVxdWVzdERldmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXR1BVUmVxdWVzdERldmljZVN0YXR1cywgUmVmPERldmljZT4m
JiwgU3RyaW5nJiYpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNo
YWluKSB7CkBAIC0xMjcsMTYgKzk3LDM2IEBAIHZvaWQgQWRhcHRlcjo6cmVxdWVzdERldmljZShj
b25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgQ29tcGxldGlvbkhhCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZExpbWl0cyAm
JiAhZGV2aWNlTWVldHNSZXF1aXJlZExpbWl0cyhtX2RldmljZSwgKmRlc2NyaXB0b3IucmVxdWly
ZWRMaW1pdHMpKSB7Ci0gICAgICAgIGluc3RhbmNlKCkuc2NoZWR1bGVXb3JrKFtzdHJvbmdUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX0Vycm9yLCBE
ZXZpY2U6OmNyZWF0ZUludmFsaWQoc3Ryb25nVGhpcyksICJEZXZpY2UgZG9lcyBub3Qgc3VwcG9y
dCByZXF1ZXN0ZWQgbGltaXRzIl9zKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIGxpbWl0cyA9IG1fbGltaXRzOworCisgICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWRM
aW1pdHMpIHsKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWRMaW1pdHMtPm5leHRJbkNo
YWluKSB7CisgICAgICAgICAgICBpbnN0YW5jZSgpLnNjaGVkdWxlV29yayhbc3Ryb25nVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfRXJyb3Is
IERldmljZTo6Y3JlYXRlSW52YWxpZChzdHJvbmdUaGlzKSwgIlVua25vd24gZGVzY3JpcHRvciB0
eXBlIl9zKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFXZWJHUFU6OmlzVmFsaWQoZGVzY3JpcHRvci5yZXF1aXJlZExpbWl0
cy0+bGltaXRzKSkgeworICAgICAgICAgICAgaW5zdGFuY2UoKS5zY2hlZHVsZVdvcmsoW3N0cm9u
Z1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVz
X0Vycm9yLCBEZXZpY2U6OmNyZWF0ZUludmFsaWQoc3Ryb25nVGhpcyksICJEZXZpY2UgZG9lcyBu
b3Qgc3VwcG9ydCByZXF1ZXN0ZWQgbGltaXRzIl9zKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFueUxpbWl0SXNCZXR0ZXJU
aGFuKGRlc2NyaXB0b3IucmVxdWlyZWRMaW1pdHMtPmxpbWl0cywgbV9saW1pdHMpKSB7CisgICAg
ICAgICAgICBpbnN0YW5jZSgpLnNjaGVkdWxlV29yayhbc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfRXJyb3IsIERldmljZTo6Y3Jl
YXRlSW52YWxpZChzdHJvbmdUaGlzKSwgIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHJlcXVlc3Rl
ZCBsaW1pdHMiX3MpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBsaW1pdHMgPSBkZXNjcmlwdG9yLnJlcXVpcmVkTGltaXRzLT5saW1p
dHM7CiAgICAgfQogCiAgICAgYXV0byBsYWJlbCA9IGZyb21BUEkoZGVzY3JpcHRvci5sYWJlbCk7
Ci0gICAgaW5zdGFuY2UoKS5zY2hlZHVsZVdvcmsoW3N0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9
LCBsYWJlbCA9IFdURk1vdmUobGFiZWwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgewotICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19TdWNj
ZXNzLCBEZXZpY2U6OmNyZWF0ZShzdHJvbmdUaGlzLT5tX2RldmljZSwgV1RGTW92ZShsYWJlbCks
IHN0cm9uZ1RoaXMpLCB7IH0pOworICAgIGluc3RhbmNlKCkuc2NoZWR1bGVXb3JrKFtzdHJvbmdU
aGlzID0gUmVmIHsgKnRoaXMgfSwgbGFiZWwgPSBXVEZNb3ZlKGxhYmVsKSwgbGltaXRzID0gV1RG
TW92ZShsaW1pdHMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewor
ICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19TdWNjZXNzLCBEZXZpY2U6
OmNyZWF0ZShzdHJvbmdUaGlzLT5tX2RldmljZSwgV1RGTW92ZShsYWJlbCksIFdURk1vdmUobGlt
aXRzKSwgc3Ryb25nVGhpcyksIHsgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgK
aW5kZXggMzYwZjM5MjNjODNkMTNhNjc5MzY5MGZlYWJmYzA2N2RkYzFlZDk0MC4uOGMxMGExN2Fj
ZDBkNDU2ZjlkMmIwYjcxYzI2YmY1NDI1OWFhNzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKQEAg
LTYxLDcgKzYxLDcgQEAgY2xhc3MgVGV4dHVyZTsKIGNsYXNzIERldmljZSA6IHB1YmxpYyBXR1BV
RGV2aWNlSW1wbCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERldmljZT4sIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxEZXZpY2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPERldmljZT4gY3JlYXRlKGlkPE1UTERldmljZT4sIFN0cmlu
ZyYmIGRldmljZUxhYmVsLCBBZGFwdGVyJik7CisgICAgc3RhdGljIFJlZjxEZXZpY2U+IGNyZWF0
ZShpZDxNVExEZXZpY2U+LCBTdHJpbmcmJiBkZXZpY2VMYWJlbCwgV0dQVUxpbWl0cyYmLCBBZGFw
dGVyJik7CiAgICAgc3RhdGljIFJlZjxEZXZpY2U+IGNyZWF0ZUludmFsaWQoQWRhcHRlciYgYWRh
cHRlcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldmljZShhZGFwdGVy
KSk7CkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzVW5pZmllZE1lbW9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlLmhhc1VuaWZpZWRNZW1vcnk7IH0KIAogcHJpdmF0
ZToKLSAgICBEZXZpY2UoaWQ8TVRMRGV2aWNlPiwgaWQ8TVRMQ29tbWFuZFF1ZXVlPiBkZWZhdWx0
UXVldWUsIEFkYXB0ZXImKTsKKyAgICBEZXZpY2UoaWQ8TVRMRGV2aWNlPiwgaWQ8TVRMQ29tbWFu
ZFF1ZXVlPiBkZWZhdWx0UXVldWUsIFdHUFVMaW1pdHMmJiwgQWRhcHRlciYpOwogICAgIERldmlj
ZShBZGFwdGVyJik7CiAKICAgICBzdHJ1Y3QgRXJyb3JTY29wZTsKQEAgLTEzOCw2ICsxMzgsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0xvc3QgeyBmYWxzZSB9OwogICAgIGlkPE5TT2JqZWN0
PiBtX2RldmljZU9ic2VydmVyIHsgbmlsIH07CiAKKyAgICBXR1BVTGltaXRzIG1fbGltaXRzIHsg
fTsKKwogICAgIGNvbnN0IFJlZjxBZGFwdGVyPiBtX2FkYXB0ZXI7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9E
ZXZpY2UubW0KaW5kZXggMzUxNmVkYzhhNDZjYmRkOGIxNmVkMGVjZGI5MmYyOTU1YjRmOWIzOC4u
ZjA4YmFhYWQ5ZWM2YmJhM2I4YjEzOTY5ZTAyNDU0N2FlNzI4NzQ0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rl
dmljZS5tbQpAQCAtNDcsNyArNDcsNyBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotUmVmPERl
dmljZT4gRGV2aWNlOjpjcmVhdGUoaWQ8TVRMRGV2aWNlPiBkZXZpY2UsIFN0cmluZyYmIGRldmlj
ZUxhYmVsLCBBZGFwdGVyJiBhZGFwdGVyKQorUmVmPERldmljZT4gRGV2aWNlOjpjcmVhdGUoaWQ8
TVRMRGV2aWNlPiBkZXZpY2UsIFN0cmluZyYmIGRldmljZUxhYmVsLCBXR1BVTGltaXRzJiYgbGlt
aXRzLCBBZGFwdGVyJiBhZGFwdGVyKQogewogICAgIGlkPE1UTENvbW1hbmRRdWV1ZT4gY29tbWFu
ZFF1ZXVlID0gW2RldmljZSBuZXdDb21tYW5kUXVldWVdOwogICAgIGlmICghY29tbWFuZFF1ZXVl
KQpAQCAtNTksMTIgKzU5LDEzIEBAIFJlZjxEZXZpY2U+IERldmljZTo6Y3JlYXRlKGlkPE1UTERl
dmljZT4gZGV2aWNlLCBTdHJpbmcmJiBkZXZpY2VMYWJlbCwgQWRhcHRlciYKICAgICBpZiAoIWRl
dmljZUxhYmVsLmlzRW1wdHkoKSkKICAgICAgICAgY29tbWFuZFF1ZXVlLmxhYmVsID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJEZWZhdWx0IHF1ZXVlIGZvciBkZXZpY2UgJXMiLCBkZXZp
Y2VMYWJlbC51dGY4KCkuZGF0YSgpXTsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldmlj
ZShkZXZpY2UsIGNvbW1hbmRRdWV1ZSwgYWRhcHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERldmljZShkZXZpY2UsIGNvbW1hbmRRdWV1ZSwgV1RGTW92ZShsaW1pdHMpLCBhZGFwdGVy
KSk7CiB9CiAKLURldmljZTo6RGV2aWNlKGlkPE1UTERldmljZT4gZGV2aWNlLCBpZDxNVExDb21t
YW5kUXVldWU+IGRlZmF1bHRRdWV1ZSwgQWRhcHRlciYgYWRhcHRlcikKK0RldmljZTo6RGV2aWNl
KGlkPE1UTERldmljZT4gZGV2aWNlLCBpZDxNVExDb21tYW5kUXVldWU+IGRlZmF1bHRRdWV1ZSwg
V0dQVUxpbWl0cyYmIGxpbWl0cywgQWRhcHRlciYgYWRhcHRlcikKICAgICA6IG1fZGV2aWNlKGRl
dmljZSkKICAgICAsIG1fZGVmYXVsdFF1ZXVlKFF1ZXVlOjpjcmVhdGUoZGVmYXVsdFF1ZXVlLCAq
dGhpcykpCisgICAgLCBtX2xpbWl0cyhXVEZNb3ZlKGxpbWl0cykpCiAgICAgLCBtX2FkYXB0ZXIo
YWRhcHRlcikKIHsKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9IYXJkd2FyZUxpbWl0cy5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSGFyZHdhcmVM
aW1pdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wZDI1M2U3OGY2NDc4ZGJhZmQwNDllYmNhNDc4ZjNhZDRkZGY1
M2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSGFyZHdhcmVMaW1p
dHMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG9wdGlvbmFsPgorCitu
YW1lc3BhY2UgV2ViR1BVIHsKKworc3RkOjpvcHRpb25hbDxXR1BVTGltaXRzPiBsaW1pdHMoaWQ8
TVRMRGV2aWNlPik7Citib29sIGlzVmFsaWQoY29uc3QgV0dQVUxpbWl0cyYpOworYm9vbCBhbnlM
aW1pdElzQmV0dGVyVGhhbihjb25zdCBXR1BVTGltaXRzJiB0YXJnZXQsIGNvbnN0IFdHUFVMaW1p
dHMmIHJlZmVyZW5jZSk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvSGFyZHdhcmVMaW1pdHMubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9IYXJkd2FyZUxpbWl0cy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTU0ZDY1MDY4ZDdiYjZkMmViMDI4MGMz
MzM0NDgyMzMxZWUwNGRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
SGFyZHdhcmVMaW1pdHMubW0KQEAgLTAsMCArMSw0NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkhh
cmR3YXJlTGltaXRzLmgiCisKKyNpbXBvcnQgPGFsZ29yaXRobT4KKyNpbXBvcnQgPGxpbWl0cz4K
KyNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvUGFnZUJsb2NrLmg+Cisj
aW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJHUFUgeworCisvLyBo
dHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbWV0YWwvTWV0YWwtRmVhdHVyZS1TZXQtVGFibGVz
LnBkZgorCisvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvaXNzdWVz
LzI3NDkgd2UgbmVlZCBtb3JlIGxpbWl0cy4KKworc3RhdGljIFdHUFVMaW1pdHMgYXBwbGUzKCkK
K3sKKyAgICB1aW50MzJfdCBtYXhCaW5kR3JvdXBzID0gMzA7CisKKyAgICByZXR1cm4gV0dQVUxp
bWl0cyB7CisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24xRCAqLyAgICAxNjM4NCwKKyAg
ICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjJEICovICAgIDE2Mzg0LAorICAgICAgICAvKiBt
YXhUZXh0dXJlRGltZW5zaW9uM0QgKi8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4VGV4dHVyZUFy
cmF5TGF5ZXJzICovICAgIDIwNDgsCisgICAgICAgIC8qIG1heEJpbmRHcm91cHMgKi8gICAgbWF4
QmluZEdyb3VwcywKKyAgICAgICAgLyogbWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxp
bmVMYXlvdXQgKi8gICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLAorICAg
ICAgICAvKiBtYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCAqLyAgICBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8qIG1heFNhbXBs
ZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiAzMSwKKyAgICAg
ICAgLyogbWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogMTYs
CisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4Qmlu
ZEdyb3VwcyAqIDMxLAorICAgICAgICAvKiBtYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFn
ZSAqLyAgICBtYXhCaW5kR3JvdXBzICogMzEsCisgICAgICAgIC8qIG1heFVuaWZvcm1CdWZmZXJz
UGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDMxLAorICAgICAgICAvKiBtYXhV
bmlmb3JtQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMCwgLy8gVG8gYmUgZmlsbGVkIGluIGJ5IHRo
ZSBjYWxsZXIuCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAw
LCAvLyBUbyBiZSBmaWxsZWQgaW4gYnkgdGhlIGNhbGxlci4KKyAgICAgICAgLyogbWluVW5pZm9y
bUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICA0LAorICAgICAgICAvKiBtaW5TdG9yYWdlQnVm
ZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDQsCisgICAgICAgIC8qIG1heFZlcnRleEJ1ZmZlcnMg
Ki8gICAgMzAsCisgICAgICAgIC8qIG1heFZlcnRleEF0dHJpYnV0ZXMgKi8gICAgMzEsCisgICAg
ICAgIC8qIG1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlICovICAgIDAsIC8vIFRvIGJlIGZpbGxl
ZCBpbiBieSB0aGUgY2FsbGVyLgorICAgICAgICAvKiBtYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9u
ZW50cyAqLyAgICA2MCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXpl
ICovICAgIDE2ICogS0IsCisgICAgICAgIC8qIG1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtn
cm91cCAqLyAgICA1MTIsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCAqLyAg
ICA1MTIsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSAqLyAgICA1MTIsCisg
ICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiAqLyAgICA1MTIsCisgICAgICAgIC8q
IG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uICovICAgIHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICB9OworfQorCitzdGF0aWMgV0dQVUxpbWl0cyBhcHBs
ZTQoKQoreworICAgIHVpbnQzMl90IG1heEJpbmRHcm91cHMgPSAzMDsKKworICAgIHJldHVybiBX
R1BVTGltaXRzIHsKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjFEICovICAgIDE2Mzg0
LAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uMkQgKi8gICAgMTYzODQsCisgICAgICAg
IC8qIG1heFRleHR1cmVEaW1lbnNpb24zRCAqLyAgICAyMDQ4LAorICAgICAgICAvKiBtYXhUZXh0
dXJlQXJyYXlMYXllcnMgKi8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4QmluZEdyb3VwcyAqLyAg
ICBtYXhCaW5kR3JvdXBzLAorICAgICAgICAvKiBtYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQ
aXBlbGluZUxheW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCks
CisgICAgICAgIC8qIG1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0ICov
ICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4
U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDk2LAor
ICAgICAgICAvKiBtYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMg
KiAxNiwKKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICBt
YXhCaW5kR3JvdXBzICogOTYsCisgICAgICAgIC8qIG1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRl
clN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA5NiwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1
ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogOTYsCisgICAgICAgIC8q
IG1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAwLCAvLyBUbyBiZSBmaWxsZWQgaW4g
YnkgdGhlIGNhbGxlci4KKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplICov
ICAgIDAsIC8vIFRvIGJlIGZpbGxlZCBpbiBieSB0aGUgY2FsbGVyLgorICAgICAgICAvKiBtaW5V
bmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDQsCisgICAgICAgIC8qIG1pblN0b3Jh
Z2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgNCwKKyAgICAgICAgLyogbWF4VmVydGV4QnVm
ZmVycyAqLyAgICAzMCwKKyAgICAgICAgLyogbWF4VmVydGV4QXR0cmlidXRlcyAqLyAgICAzMSwK
KyAgICAgICAgLyogbWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUgKi8gICAgMCwgLy8gVG8gYmUg
ZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1heEludGVyU3RhZ2VTaGFkZXJD
b21wb25lbnRzICovICAgIDEyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFN0b3Jh
Z2VTaXplICovICAgIDMyICogS0IsCisgICAgICAgIC8qIG1heENvbXB1dGVJbnZvY2F0aW9uc1Bl
cldvcmtncm91cCAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6
ZVggKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVZICovICAg
IDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiAqLyAgICAxMDI0LAor
ICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbiAqLyAgICBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgfTsKK30KKworc3RhdGljIFdHUFVM
aW1pdHMgYXBwbGU1KCkKK3sKKyAgICB1aW50MzJfdCBtYXhCaW5kR3JvdXBzID0gMzA7CisKKyAg
ICByZXR1cm4gV0dQVUxpbWl0cyB7CisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24xRCAq
LyAgICAxNjM4NCwKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjJEICovICAgIDE2Mzg0
LAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uM0QgKi8gICAgMjA0OCwKKyAgICAgICAg
LyogbWF4VGV4dHVyZUFycmF5TGF5ZXJzICovICAgIDIwNDgsCisgICAgICAgIC8qIG1heEJpbmRH
cm91cHMgKi8gICAgbWF4QmluZEdyb3VwcywKKyAgICAgICAgLyogbWF4RHluYW1pY1VuaWZvcm1C
dWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJf
dD46Om1heCgpLAorICAgICAgICAvKiBtYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGlu
ZUxheW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAg
ICAgIC8qIG1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91
cHMgKiA5NiwKKyAgICAgICAgLyogbWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhC
aW5kR3JvdXBzICogMTYsCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3Rh
Z2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDk2LAorICAgICAgICAvKiBtYXhTdG9yYWdlVGV4dHVy
ZXNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogOTYsCisgICAgICAgIC8qIG1h
eFVuaWZvcm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDk2LAor
ICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMCwgLy8gVG8gYmUg
ZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJCaW5k
aW5nU2l6ZSAqLyAgICAwLCAvLyBUbyBiZSBmaWxsZWQgaW4gYnkgdGhlIGNhbGxlci4KKyAgICAg
ICAgLyogbWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICA0LAorICAgICAgICAv
KiBtaW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDQsCisgICAgICAgIC8qIG1h
eFZlcnRleEJ1ZmZlcnMgKi8gICAgMzAsCisgICAgICAgIC8qIG1heFZlcnRleEF0dHJpYnV0ZXMg
Ki8gICAgMzEsCisgICAgICAgIC8qIG1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlICovICAgIDAs
IC8vIFRvIGJlIGZpbGxlZCBpbiBieSB0aGUgY2FsbGVyLgorICAgICAgICAvKiBtYXhJbnRlclN0
YWdlU2hhZGVyQ29tcG9uZW50cyAqLyAgICAxMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3Jr
Z3JvdXBTdG9yYWdlU2l6ZSAqLyAgICAzMiAqIEtCLAorICAgICAgICAvKiBtYXhDb21wdXRlSW52
b2NhdGlvbnNQZXJXb3JrZ3JvdXAgKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdv
cmtncm91cFNpemVYICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBT
aXplWSAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVogKi8g
ICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24gKi8g
ICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLAorICAgIH07Cit9CisKK3N0
YXRpYyBXR1BVTGltaXRzIGFwcGxlNigpCit7CisgICAgdWludDMyX3QgbWF4QmluZEdyb3VwcyA9
IDMwOworCisgICAgcmV0dXJuIFdHUFVMaW1pdHMgeworICAgICAgICAvKiBtYXhUZXh0dXJlRGlt
ZW5zaW9uMUQgKi8gICAgMTYzODQsCisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24yRCAq
LyAgICAxNjM4NCwKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjNEICovICAgIDIwNDgs
CisgICAgICAgIC8qIG1heFRleHR1cmVBcnJheUxheWVycyAqLyAgICAyMDQ4LAorICAgICAgICAv
KiBtYXhCaW5kR3JvdXBzICovICAgIG1heEJpbmRHcm91cHMsCisgICAgICAgIC8qIG1heER5bmFt
aWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0ICovICAgIHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJz
UGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpLAorICAgICAgICAvKiBtYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSAqLyAgICBt
YXhCaW5kR3JvdXBzICogNTAwMDAwIC8gMiwKKyAgICAgICAgLyogbWF4U2FtcGxlcnNQZXJTaGFk
ZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogMTAyNCwKKyAgICAgICAgLyogbWF4U3RvcmFn
ZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogNTAwMDAwIC8gMiwK
KyAgICAgICAgLyogbWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4Qmlu
ZEdyb3VwcyAqIDUwMDAwMCAvIDIsCisgICAgICAgIC8qIG1heFVuaWZvcm1CdWZmZXJzUGVyU2hh
ZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDUwMDAwMCAvIDIsCisgICAgICAgIC8qIG1h
eFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAwLCAvLyBUbyBiZSBmaWxsZWQgaW4gYnkg
dGhlIGNhbGxlci4KKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplICovICAg
IDAsIC8vIFRvIGJlIGZpbGxlZCBpbiBieSB0aGUgY2FsbGVyLgorICAgICAgICAvKiBtaW5Vbmlm
b3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDQsCisgICAgICAgIC8qIG1pblN0b3JhZ2VC
dWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgNCwKKyAgICAgICAgLyogbWF4VmVydGV4QnVmZmVy
cyAqLyAgICAzMCwKKyAgICAgICAgLyogbWF4VmVydGV4QXR0cmlidXRlcyAqLyAgICAzMSwKKyAg
ICAgICAgLyogbWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUgKi8gICAgMCwgLy8gVG8gYmUgZmls
bGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1heEludGVyU3RhZ2VTaGFkZXJDb21w
b25lbnRzICovICAgIDEyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VT
aXplICovICAgIDMyICogS0IsCisgICAgICAgIC8qIG1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldv
cmtncm91cCAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgg
Ki8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVZICovICAgIDEw
MjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiAqLyAgICAxMDI0LAorICAg
ICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbiAqLyAgICBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgfTsKK30KKworc3RhdGljIFdHUFVMaW1p
dHMgYXBwbGU3KCkKK3sKKyAgICB1aW50MzJfdCBtYXhCaW5kR3JvdXBzID0gMzA7CisKKyAgICBy
ZXR1cm4gV0dQVUxpbWl0cyB7CisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24xRCAqLyAg
ICAxNjM4NCwKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjJEICovICAgIDE2Mzg0LAor
ICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uM0QgKi8gICAgMjA0OCwKKyAgICAgICAgLyog
bWF4VGV4dHVyZUFycmF5TGF5ZXJzICovICAgIDIwNDgsCisgICAgICAgIC8qIG1heEJpbmRHcm91
cHMgKi8gICAgbWF4QmluZEdyb3VwcywKKyAgICAgICAgLyogbWF4RHluYW1pY1VuaWZvcm1CdWZm
ZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpLAorICAgICAgICAvKiBtYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxh
eW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAg
IC8qIG1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMg
KiA1MDAwMDAgLyAyLAorICAgICAgICAvKiBtYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlICovICAg
IG1heEJpbmRHcm91cHMgKiAxMDI0LAorICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyc1BlclNo
YWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA1MDAwMDAgLyAyLAorICAgICAgICAvKiBt
YXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogNTAw
MDAwIC8gMiwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAg
ICBtYXhCaW5kR3JvdXBzICogNTAwMDAwIC8gMiwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZl
ckJpbmRpbmdTaXplICovICAgIDAsIC8vIFRvIGJlIGZpbGxlZCBpbiBieSB0aGUgY2FsbGVyLgor
ICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMCwgLy8gVG8gYmUg
ZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1pblVuaWZvcm1CdWZmZXJPZmZz
ZXRBbGlnbm1lbnQgKi8gICAgNCwKKyAgICAgICAgLyogbWluU3RvcmFnZUJ1ZmZlck9mZnNldEFs
aWdubWVudCAqLyAgICA0LAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJzICovICAgIDMwLAor
ICAgICAgICAvKiBtYXhWZXJ0ZXhBdHRyaWJ1dGVzICovICAgIDMxLAorICAgICAgICAvKiBtYXhW
ZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSAqLyAgICAwLCAvLyBUbyBiZSBmaWxsZWQgaW4gYnkgdGhl
IGNhbGxlci4KKyAgICAgICAgLyogbWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMgKi8gICAg
MTI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUgKi8gICAgMzIg
KiBLQiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwICovICAg
IDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCAqLyAgICAxMDI0LAor
ICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkgKi8gICAgMTAyNCwKKyAgICAgICAg
LyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVaICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENv
bXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDMyX3Q+OjptYXgoKSwKKyAgICB9OworfQorCitzdGF0aWMgV0dQVUxpbWl0cyBtYWMyKGlkPE1U
TERldmljZT4gZGV2aWNlKQoreworICAgIHVpbnQzMl90IGJ1ZmZlcnNQZXJCaW5kR3JvdXAgPSAw
OworICAgIHVpbnQzMl90IHRleHR1cmVzUGVyQmluZEdyb3VwID0gMDsKKyAgICB1aW50MzJfdCBz
YW1wbGVyc1BlckJpbmRHcm91cCA9IDA7CisgICAgc3dpdGNoIChbZGV2aWNlIGFyZ3VtZW50QnVm
ZmVyc1N1cHBvcnRdKSB7CisgICAgY2FzZSBNVExBcmd1bWVudEJ1ZmZlcnNUaWVyMToKKyAgICAg
ICAgYnVmZmVyc1BlckJpbmRHcm91cCA9IDY0OworICAgICAgICB0ZXh0dXJlc1BlckJpbmRHcm91
cCA9IDEyODsKKyAgICAgICAgc2FtcGxlcnNQZXJCaW5kR3JvdXAgPSAxNjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBNVExBcmd1bWVudEJ1ZmZlcnNUaWVyMjoKKyAgICAgICAgYnVmZmVyc1Bl
ckJpbmRHcm91cCA9IDUwMDAwMCAvIDI7CisgICAgICAgIHRleHR1cmVzUGVyQmluZEdyb3VwID0g
NTAwMDAwIC8gMjsKKyAgICAgICAgc2FtcGxlcnNQZXJCaW5kR3JvdXAgPSAxMDI0OworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICB1aW50MzJfdCBtYXhCaW5kR3JvdXBzID0gMzA7CisKKyAg
ICByZXR1cm4gV0dQVUxpbWl0cyB7CisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24xRCAq
LyAgICAxNjM4NCwKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjJEICovICAgIDE2Mzg0
LAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uM0QgKi8gICAgMjA0OCwKKyAgICAgICAg
LyogbWF4VGV4dHVyZUFycmF5TGF5ZXJzICovICAgIDIwNDgsCisgICAgICAgIC8qIG1heEJpbmRH
cm91cHMgKi8gICAgbWF4QmluZEdyb3VwcywKKyAgICAgICAgLyogbWF4RHluYW1pY1VuaWZvcm1C
dWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJf
dD46Om1heCgpLAorICAgICAgICAvKiBtYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGlu
ZUxheW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAg
ICAgIC8qIG1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91
cHMgKiB0ZXh0dXJlc1BlckJpbmRHcm91cCwKKyAgICAgICAgLyogbWF4U2FtcGxlcnNQZXJTaGFk
ZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogc2FtcGxlcnNQZXJCaW5kR3JvdXAsCisgICAg
ICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3Vw
cyAqIGJ1ZmZlcnNQZXJCaW5kR3JvdXAsCisgICAgICAgIC8qIG1heFN0b3JhZ2VUZXh0dXJlc1Bl
clNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiB0ZXh0dXJlc1BlckJpbmRHcm91cCwK
KyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5k
R3JvdXBzICogYnVmZmVyc1BlckJpbmRHcm91cCwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZl
ckJpbmRpbmdTaXplICovICAgIDAsIC8vIFRvIGJlIGZpbGxlZCBpbiBieSB0aGUgY2FsbGVyLgor
ICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMCwgLy8gVG8gYmUg
ZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1pblVuaWZvcm1CdWZmZXJPZmZz
ZXRBbGlnbm1lbnQgKi8gICAgMjU2LAorICAgICAgICAvKiBtaW5TdG9yYWdlQnVmZmVyT2Zmc2V0
QWxpZ25tZW50ICovICAgIDI1NiwKKyAgICAgICAgLyogbWF4VmVydGV4QnVmZmVycyAqLyAgICAz
MCwKKyAgICAgICAgLyogbWF4VmVydGV4QXR0cmlidXRlcyAqLyAgICAzMSwKKyAgICAgICAgLyog
bWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUgKi8gICAgMCwgLy8gVG8gYmUgZmlsbGVkIGluIGJ5
IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzICov
ICAgIDMyLAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUgKi8gICAg
MzIgKiBLQiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwICov
ICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCAqLyAgICAxMDI0
LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkgKi8gICAgMTAyNCwKKyAgICAg
ICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVaICovICAgIDEwMjQsCisgICAgICAgIC8qIG1h
eENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDMyX3Q+OjptYXgoKSwKKyAgICB9OworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXR1BV
TGltaXRzPiByYXdMaW1pdHMoaWQ8TVRMRGV2aWNlPiBkZXZpY2UpCit7CisgICAgc3RkOjpvcHRp
b25hbDxXR1BVTGltaXRzPiByZXN1bHQ7CisKKyAgICBhdXRvIG1lcmdlID0gWyZdKGNvbnN0IFdH
UFVMaW1pdHMmIGxpbWl0cykgeworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAg
cmVzdWx0ID0gbGltaXRzOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jbGltaXQtY2xhc3MtbWF4aW11
bQorICAgICAgICBhdXRvIG1lcmdlTWF4aW11bSA9IFtdKGF1dG8gcHJldmlvdXMsIGF1dG8gbmV4
dCkgeworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHByZXZpb3VzLCBuZXh0KTsKKyAgICAg
ICAgfTsKKworICAgICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNsaW1p
dC1jbGFzcy1hbGlnbm1lbnQKKyAgICAgICAgYXV0byBtZXJnZUFsaWdubWVudCA9IFtdKGF1dG8g
cHJldmlvdXMsIGF1dG8gbmV4dCkgeworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKFdURjo6
cm91bmRVcFRvUG93ZXJPZlR3byhwcmV2aW91cyksIFdURjo6cm91bmRVcFRvUG93ZXJPZlR3byhu
ZXh0KSk7CisgICAgICAgIH07CisKKyAgICAgICAgcmVzdWx0LT5tYXhUZXh0dXJlRGltZW5zaW9u
MUQgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhUZXh0dXJlRGltZW5zaW9uMUQsIGxpbWl0cy5t
YXhUZXh0dXJlRGltZW5zaW9uMUQpOworICAgICAgICByZXN1bHQtPm1heFRleHR1cmVEaW1lbnNp
b24yRCA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heFRleHR1cmVEaW1lbnNpb24yRCwgbGltaXRz
Lm1heFRleHR1cmVEaW1lbnNpb24yRCk7CisgICAgICAgIHJlc3VsdC0+bWF4VGV4dHVyZURpbWVu
c2lvbjNEID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4VGV4dHVyZURpbWVuc2lvbjNELCBsaW1p
dHMubWF4VGV4dHVyZURpbWVuc2lvbjNEKTsKKyAgICAgICAgcmVzdWx0LT5tYXhUZXh0dXJlQXJy
YXlMYXllcnMgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhUZXh0dXJlQXJyYXlMYXllcnMsIGxp
bWl0cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMpOworICAgICAgICByZXN1bHQtPm1heEJpbmRHcm91
cHMgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhCaW5kR3JvdXBzLCBsaW1pdHMubWF4QmluZEdy
b3Vwcyk7CisgICAgICAgIHJlc3VsdC0+bWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxp
bmVMYXlvdXQgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQ
ZXJQaXBlbGluZUxheW91dCwgbGltaXRzLm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVs
aW5lTGF5b3V0KTsKKyAgICAgICAgcmVzdWx0LT5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQ
aXBlbGluZUxheW91dCA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heER5bmFtaWNTdG9yYWdlQnVm
ZmVyc1BlclBpcGVsaW5lTGF5b3V0LCBsaW1pdHMubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVy
UGlwZWxpbmVMYXlvdXQpOworICAgICAgICByZXN1bHQtPm1heFNhbXBsZWRUZXh0dXJlc1BlclNo
YWRlclN0YWdlID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4U2FtcGxlZFRleHR1cmVzUGVyU2hh
ZGVyU3RhZ2UsIGxpbWl0cy5tYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSk7CisgICAg
ICAgIHJlc3VsdC0+bWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSA9IG1lcmdlTWF4aW11bShyZXN1
bHQtPm1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UsIGxpbWl0cy5tYXhTYW1wbGVyc1BlclNoYWRl
clN0YWdlKTsKKyAgICAgICAgcmVzdWx0LT5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdl
ID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSwg
bGltaXRzLm1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UpOworICAgICAgICByZXN1bHQt
Pm1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+
bWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UsIGxpbWl0cy5tYXhTdG9yYWdlVGV4dHVy
ZXNQZXJTaGFkZXJTdGFnZSk7CisgICAgICAgIHJlc3VsdC0+bWF4VW5pZm9ybUJ1ZmZlcnNQZXJT
aGFkZXJTdGFnZSA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heFVuaWZvcm1CdWZmZXJzUGVyU2hh
ZGVyU3RhZ2UsIGxpbWl0cy5tYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlKTsKKyAgICAg
ICAgcmVzdWx0LT5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUgPSBtZXJnZU1heGltdW0ocmVz
dWx0LT5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUsIGxpbWl0cy5tYXhVbmlmb3JtQnVmZmVy
QmluZGluZ1NpemUpOworICAgICAgICByZXN1bHQtPm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6
ZSA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSwgbGlt
aXRzLm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSk7CisgICAgICAgIHJlc3VsdC0+bWluVW5p
Zm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCA9IG1lcmdlQWxpZ25tZW50KHJlc3VsdC0+bWluVW5p
Zm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCwgbGltaXRzLm1pblVuaWZvcm1CdWZmZXJPZmZzZXRB
bGlnbm1lbnQpOworICAgICAgICByZXN1bHQtPm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1l
bnQgPSBtZXJnZUFsaWdubWVudChyZXN1bHQtPm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1l
bnQsIGxpbWl0cy5taW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50KTsKKyAgICAgICAgcmVz
dWx0LT5tYXhWZXJ0ZXhCdWZmZXJzID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4VmVydGV4QnVm
ZmVycywgbGltaXRzLm1heFZlcnRleEJ1ZmZlcnMpOworICAgICAgICByZXN1bHQtPm1heFZlcnRl
eEF0dHJpYnV0ZXMgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhWZXJ0ZXhBdHRyaWJ1dGVzLCBs
aW1pdHMubWF4VmVydGV4QXR0cmlidXRlcyk7CisgICAgICAgIHJlc3VsdC0+bWF4VmVydGV4QnVm
ZmVyQXJyYXlTdHJpZGUgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhWZXJ0ZXhCdWZmZXJBcnJh
eVN0cmlkZSwgbGltaXRzLm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlKTsKKyAgICAgICAgcmVz
dWx0LT5tYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cyA9IG1lcmdlTWF4aW11bShyZXN1bHQt
Pm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzLCBsaW1pdHMubWF4SW50ZXJTdGFnZVNoYWRl
ckNvbXBvbmVudHMpOworICAgICAgICByZXN1bHQtPm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdl
U2l6ZSA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6
ZSwgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSk7CisgICAgICAgIHJlc3Vs
dC0+bWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwID0gbWVyZ2VNYXhpbXVtKHJlc3Vs
dC0+bWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwLCBsaW1pdHMubWF4Q29tcHV0ZUlu
dm9jYXRpb25zUGVyV29ya2dyb3VwKTsKKyAgICAgICAgcmVzdWx0LT5tYXhDb21wdXRlV29ya2dy
b3VwU2l6ZVggPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgs
IGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgpOworICAgICAgICByZXN1bHQtPm1heENv
bXB1dGVXb3JrZ3JvdXBTaXplWSA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heENvbXB1dGVXb3Jr
Z3JvdXBTaXplWSwgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSk7CisgICAgICAgIHJl
c3VsdC0+bWF4Q29tcHV0ZVdvcmtncm91cFNpemVaID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4
Q29tcHV0ZVdvcmtncm91cFNpemVaLCBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaKTsK
KyAgICAgICAgcmVzdWx0LT5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbiA9IG1lcmdl
TWF4aW11bShyZXN1bHQtPm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uLCBsaW1pdHMu
bWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24pOworICAgIH07CisKKyAgICAvLyBUaGUg
ZmVhdHVyZSBzZXQgdGFibGVzIGRvIG5vdCBsaXN0IGxpbWl0cyBmb3IgTVRMR1BVRmFtaWx5Q29t
bW9uMSwgTVRMR1BVRmFtaWx5Q29tbW9uMiwgb3IgTVRMR1BVRmFtaWx5Q29tbW9uMy4KKyAgICAv
LyBNVExHUFVGYW1pbHlBcHBsZTEgYW5kIE1UTEdQVUZhbWlseUFwcGxlMiBhcmUgbm90IHN1cHBv
cnRlZC4KKyAgICBpZiAoW2RldmljZSBzdXBwb3J0c0ZhbWlseTpNVExHUFVGYW1pbHlBcHBsZTNd
KQorICAgICAgICBtZXJnZShhcHBsZTMoKSk7CisgICAgaWYgKFtkZXZpY2Ugc3VwcG9ydHNGYW1p
bHk6TVRMR1BVRmFtaWx5QXBwbGU0XSkKKyAgICAgICAgbWVyZ2UoYXBwbGU0KCkpOworICAgIGlm
IChbZGV2aWNlIHN1cHBvcnRzRmFtaWx5Ok1UTEdQVUZhbWlseUFwcGxlNV0pCisgICAgICAgIG1l
cmdlKGFwcGxlNSgpKTsKKyAgICBpZiAoW2RldmljZSBzdXBwb3J0c0ZhbWlseTpNVExHUFVGYW1p
bHlBcHBsZTZdKQorICAgICAgICBtZXJnZShhcHBsZTYoKSk7CisgICAgaWYgKFtkZXZpY2Ugc3Vw
cG9ydHNGYW1pbHk6TVRMR1BVRmFtaWx5QXBwbGU3XSkKKyAgICAgICAgbWVyZ2UoYXBwbGU3KCkp
OworICAgIC8vIE1UTEdQVUZhbWlseU1hYzEgaXMgbm90IHN1cHBvcnRlZCAoeWV0PykuCisgICAg
aWYgKFtkZXZpY2Ugc3VwcG9ydHNGYW1pbHk6TVRMR1BVRmFtaWx5TWFjMl0pCisgICAgICAgIG1l
cmdlKG1hYzIoZGV2aWNlKSk7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIGF1dG8gbWF4
QnVmZmVyTGVuZ3RoID0gZGV2aWNlLm1heEJ1ZmZlckxlbmd0aDsKKyAgICAgICAgcmVzdWx0LT5t
YXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUgPSBtYXhCdWZmZXJMZW5ndGg7CisgICAgICAgIHJl
c3VsdC0+bWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplID0gbWF4QnVmZmVyTGVuZ3RoOworICAg
ICAgICByZXN1bHQtPm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlID0gNDsgLy8gaHR0cHM6Ly9k
ZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vbWV0YWwvbXRsdmVydGV4YnVmZmVybGF5
b3V0ZGVzY3JpcHRvci8xNTE1NDQxLXN0cmlkZQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK3N0YXRpYyBib29sIGNoZWNrTGltaXRzKGNvbnN0IFdHUFVMaW1pdHMmIGxpbWl0cykK
K3sKKyAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNsaW1pdC1kZWZhdWx0
CisgICAgYXV0byBkZWZhdWx0TGltaXRzID0gV0dQVUxpbWl0cyB7CisgICAgICAgIC8qIG1heFRl
eHR1cmVEaW1lbnNpb24xRCAqLyAgICA4MTkyLAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5z
aW9uMkQgKi8gICAgODE5MiwKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjNEICovICAg
IDIwNDgsCisgICAgICAgIC8qIG1heFRleHR1cmVBcnJheUxheWVycyAqLyAgICAyNTYsCisgICAg
ICAgIC8qIG1heEJpbmRHcm91cHMgKi8gICAgNCwKKyAgICAgICAgLyogbWF4RHluYW1pY1VuaWZv
cm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgOCwKKyAgICAgICAgLyogbWF4RHluYW1p
Y1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgNCwKKyAgICAgICAgLyogbWF4
U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgMTYsCisgICAgICAgIC8qIG1heFNh
bXBsZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgMTYsCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZm
ZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgOCwKKyAgICAgICAgLyogbWF4U3RvcmFnZVRleHR1cmVz
UGVyU2hhZGVyU3RhZ2UgKi8gICAgNCwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZlcnNQZXJT
aGFkZXJTdGFnZSAqLyAgICAxMiwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdT
aXplICovICAgIDY1NTM2LAorICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUg
Ki8gICAgMTM0MjE3NzI4LAorICAgICAgICAvKiBtaW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25t
ZW50ICovICAgIDI1NiwKKyAgICAgICAgLyogbWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVu
dCAqLyAgICAyNTYsCisgICAgICAgIC8qIG1heFZlcnRleEJ1ZmZlcnMgKi8gICAgOCwKKyAgICAg
ICAgLyogbWF4VmVydGV4QXR0cmlidXRlcyAqLyAgICAxNiwKKyAgICAgICAgLyogbWF4VmVydGV4
QnVmZmVyQXJyYXlTdHJpZGUgKi8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4SW50ZXJTdGFnZVNo
YWRlckNvbXBvbmVudHMgKi8gICAgNjAsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBT
dG9yYWdlU2l6ZSAqLyAgICAxNjM1MiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZUludm9jYXRpb25z
UGVyV29ya2dyb3VwICovICAgIDI1NiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNp
emVYICovICAgIDI1NiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVZICovICAg
IDI1NiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVaICovICAgIDY0LAorICAg
ICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbiAqLyAgICA2NTUzNSwKKyAg
ICB9OworCisgICAgcmV0dXJuICFhbnlMaW1pdElzQmV0dGVyVGhhbihkZWZhdWx0TGltaXRzLCBs
aW1pdHMpOworfQorCitzdGQ6Om9wdGlvbmFsPFdHUFVMaW1pdHM+IGxpbWl0cyhpZDxNVExEZXZp
Y2U+IGRldmljZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHJhd0xpbWl0cyhkZXZpY2UpOworCisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAo
IWNoZWNrTGltaXRzKCpyZXN1bHQpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBpc1ZhbGlkKGNvbnN0IFdHUFVMaW1pdHMmIGxp
bWl0cykKK3sKKyAgICByZXR1cm4gaXNQb3dlck9mVHdvKGxpbWl0cy5taW5Vbmlmb3JtQnVmZmVy
T2Zmc2V0QWxpZ25tZW50KSAmJiBpc1Bvd2VyT2ZUd28obGltaXRzLm1pblN0b3JhZ2VCdWZmZXJP
ZmZzZXRBbGlnbm1lbnQpOworfQorCitib29sIGFueUxpbWl0SXNCZXR0ZXJUaGFuKGNvbnN0IFdH
UFVMaW1pdHMmIHRhcmdldCwgY29uc3QgV0dQVUxpbWl0cyYgcmVmZXJlbmNlKQoreworICAgIGlm
ICh0YXJnZXQubWF4VGV4dHVyZURpbWVuc2lvbjFEID4gcmVmZXJlbmNlLm1heFRleHR1cmVEaW1l
bnNpb24xRCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhUZXh0dXJl
RGltZW5zaW9uMkQgPiByZWZlcmVuY2UubWF4VGV4dHVyZURpbWVuc2lvbjJEKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFRleHR1cmVEaW1lbnNpb24zRCA+IHJlZmVy
ZW5jZS5tYXhUZXh0dXJlRGltZW5zaW9uM0QpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
ICh0YXJnZXQubWF4VGV4dHVyZUFycmF5TGF5ZXJzID4gcmVmZXJlbmNlLm1heFRleHR1cmVBcnJh
eUxheWVycykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhCaW5kR3Jv
dXBzID4gcmVmZXJlbmNlLm1heEJpbmRHcm91cHMpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmICh0YXJnZXQubWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgPiBy
ZWZlcmVuY2UubWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJz
UGVyUGlwZWxpbmVMYXlvdXQgPiByZWZlcmVuY2UubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVy
UGlwZWxpbmVMYXlvdXQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4
U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgPiByZWZlcmVuY2UubWF4U2FtcGxlZFRleHR1
cmVzUGVyU2hhZGVyU3RhZ2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQu
bWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSA+IHJlZmVyZW5jZS5tYXhTYW1wbGVyc1BlclNoYWRl
clN0YWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFN0b3JhZ2VC
dWZmZXJzUGVyU2hhZGVyU3RhZ2UgPiByZWZlcmVuY2UubWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFk
ZXJTdGFnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhTdG9yYWdl
VGV4dHVyZXNQZXJTaGFkZXJTdGFnZSA+IHJlZmVyZW5jZS5tYXhTdG9yYWdlVGV4dHVyZXNQZXJT
aGFkZXJTdGFnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhVbmlm
b3JtQnVmZmVyc1BlclNoYWRlclN0YWdlID4gcmVmZXJlbmNlLm1heFVuaWZvcm1CdWZmZXJzUGVy
U2hhZGVyU3RhZ2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4VW5p
Zm9ybUJ1ZmZlckJpbmRpbmdTaXplID4gcmVmZXJlbmNlLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5n
U2l6ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhTdG9yYWdlQnVm
ZmVyQmluZGluZ1NpemUgPiByZWZlcmVuY2UubWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1pblVuaWZvcm1CdWZmZXJPZmZz
ZXRBbGlnbm1lbnQgPCByZWZlcmVuY2UubWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5taW5TdG9yYWdlQnVmZmVyT2Zm
c2V0QWxpZ25tZW50IDwgcmVmZXJlbmNlLm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4VmVydGV4QnVmZmVycyA+
IHJlZmVyZW5jZS5tYXhWZXJ0ZXhCdWZmZXJzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAodGFyZ2V0Lm1heFZlcnRleEF0dHJpYnV0ZXMgPiByZWZlcmVuY2UubWF4VmVydGV4QXR0cmli
dXRlcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhWZXJ0ZXhCdWZm
ZXJBcnJheVN0cmlkZSA+IHJlZmVyZW5jZS5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhJbnRlclN0YWdlU2hhZGVyQ29t
cG9uZW50cyA+IHJlZmVyZW5jZS5tYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cykKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFn
ZVNpemUgPiByZWZlcmVuY2UubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldv
cmtncm91cCA+IHJlZmVyZW5jZS5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXApCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4Q29tcHV0ZVdvcmtncm91cFNp
emVYID4gcmVmZXJlbmNlLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkgPiByZWZlcmVu
Y2UubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAodGFyZ2V0Lm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiA+IHJlZmVyZW5jZS5tYXhDb21wdXRl
V29ya2dyb3VwU2l6ZVopCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4
Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24gPiByZWZlcmVuY2UubWF4Q29tcHV0ZVdvcmtn
cm91cHNQZXJEaW1lbnNpb24pCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0luc3RhbmNlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UubW0K
aW5kZXggOGVjMDYyNjZiMzQwYWY4NTRjNTE2YmUxM2Y4MTAwODkwNmFiNzg1Ny4uYTY1YzkyNjYx
YmVhODY3ZjFlMjMwMWJjNWRhYWQyOTUyOGExNzlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvSW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2Uu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiQVBJQ29udmVyc2lvbnMuaCIKICNpbXBv
cnQgIkFkYXB0ZXIuaCIKKyNpbXBvcnQgIkhhcmR3YXJlTGltaXRzLmgiCiAjaW1wb3J0ICJTdXJm
YWNlLmgiCiAjaW1wb3J0IDxjc3RyaW5nPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CkBAIC0x
ODMsOCArMTg0LDE5IEBAIHZvaWQgSW5zdGFuY2U6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdHUFVS
ZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBzY2hlZHVsZVdvcmsoW3N0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBk
ZXZpY2UgPSBzb3J0ZWREZXZpY2VzWzBdLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgewotICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXNfU3Vj
Y2VzcywgQWRhcHRlcjo6Y3JlYXRlKGRldmljZSwgc3Ryb25nVGhpcyksIHsgfSk7CisgICAgYXV0
byBkZXZpY2UgPSBzb3J0ZWREZXZpY2VzWzBdOworCisgICAgYXV0byBkZXZpY2VMaW1pdHMgPSBs
aW1pdHMoZGV2aWNlKTsKKworICAgIGlmICghZGV2aWNlTGltaXRzKSB7CisgICAgICAgIHNjaGVk
dWxlV29yayhbc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdEFk
YXB0ZXJTdGF0dXNfRXJyb3IsIEFkYXB0ZXI6OmNyZWF0ZUludmFsaWQoc3Ryb25nVGhpcyksICJE
ZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBXZWJHUFUiX3MpOworICAgICAgICB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHNjaGVkdWxlV29yayhbc3Ryb25nVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGRldmljZSA9IHNvcnRlZERldmljZXNbMF0sIGxpbWl0cyA9IFdURk1vdmUoKmRldmlj
ZUxpbWl0cyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAg
ICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19TdWNjZXNzLCBBZGFwdGVyOjpj
cmVhdGUoZGV2aWNlLCBzdHJvbmdUaGlzLCBXVEZNb3ZlKGxpbWl0cykpLCB7IH0pOwogICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQppbmRleCA4N2ZlMjNjYmYwYWQ4OGVhNTA0OWY0
MjU5N2I4YmE1YmM2NGMwZjg2Li43NTYyYmVlODQxZDMxODdhZDIxNjYxYmRmOTg5MmMwYjM2MTQx
ZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KQEAgLTEyNDYsNyArMTI0Niw4IEBAIGJvb2wg
RGV2aWNlOjp2YWxpZGF0ZUNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBjb25zCiAKICAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuZGltZW5zaW9uKSB7
CiAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8xRDoKLSAgICAgICAgLy8gRklYTUU6ICJk
ZXNjcmlwdG9yLnNpemUud2lkdGggbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhpcy5s
aW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFELiIKKyAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6
ZS53aWR0aCA+IG1fbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24xRCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmhlaWdodCAhPSAxKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI2MSwxOCArMTI2MiwyNCBAQCBib29sIERl
dmljZTo6dmFsaWRhdGVDcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgY29ucwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzJEOgotICAgICAgICAvLyBGSVhNRTog
ImRlc2NyaXB0b3Iuc2l6ZS53aWR0aCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGlz
LmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQuIgorICAgICAgICBpZiAoZGVzY3JpcHRvci5z
aXplLndpZHRoID4gbV9saW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJEKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vIEZJWE1FOiAiZGVzY3JpcHRvci5zaXplLmhlaWdo
dCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGlzLmxpbWl0cy5tYXhUZXh0dXJlRGlt
ZW5zaW9uMkQuIgorICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmhlaWdodCA+IG1fbGltaXRz
Lm1heFRleHR1cmVEaW1lbnNpb24yRCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICAvLyBGSVhNRTogImRlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMgbXVzdCBi
ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhpcy5saW1pdHMubWF4VGV4dHVyZUFycmF5TGF5ZXJz
LiIKKyAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMgPiBtX2xp
bWl0cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fM0Q6Ci0gICAgICAg
IC8vIEZJWE1FOiAiZGVzY3JpcHRvci5zaXplLndpZHRoIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVx
dWFsIHRvIHRoaXMubGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRC4iCisgICAgICAgIGlmIChk
ZXNjcmlwdG9yLnNpemUud2lkdGggPiBtX2xpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gRklYTUU6ICJkZXNjcmlwdG9y
LnNpemUuaGVpZ2h0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoaXMubGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24zRC4iCisgICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUuaGVpZ2h0
ID4gbV9saW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNEKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIC8vIEZJWE1FOiAiZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxh
eWVycyBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGlzLmxpbWl0cy5tYXhUZXh0dXJl
RGltZW5zaW9uM0QuIgorICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxh
eWVycyA+IG1fbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICBpZiAoZGVzY3JpcHRvci5zYW1wbGVDb3VudCAhPSAxKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI2OCw4ICsyMjc1LDYgQEAgUmVmPFRleHR1cmVW
aWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3Im
IGlucHV0RGVzY3IKIAogICAgIGlmICghZGVzY3JpcHRvciB8fCAhdmFsaWRhdGVDcmVhdGVWaWV3
KCpkZXNjcmlwdG9yKSkgewogICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVy
cm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKLQotICAgICAgICAvLyBGSVhNRTogIlJldHVy
biBhIG5ldyBpbnZhbGlkIEdQVVRleHR1cmVWaWV3LiIKICAgICAgICAgcmV0dXJuIFRleHR1cmVW
aWV3OjpjcmVhdGVJbnZhbGlkKG1fZGV2aWNlKTsKICAgICB9CiAK
</data>
<flag name="commit-queue"
          id="486367"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457686</attachid>
            <date>2022-04-15 02:20:58 -0700</date>
            <delta_ts>2022-04-15 13:52:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>50530</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDZhOTYwYTZkNjgzZDQ1ODY4OTM2NTc2ODhiMDIzOTIxMWU3OTNmNjcKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgQXByIDE1
IDAyOjE5OjMyIDIwMjIgLTA3MDAKCiAgICBMaW1pdHMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNhNGUwNTAwYmYwYS4uNmE4
NTlmY2VjZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTA0LTE1ICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW1wbGVtZW50
IGhhcmR3YXJlIGxpbWl0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM5Mzc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIG1pc3NpbmcgI2luY2x1ZGUuCisKKyAgICAgICAgKiB3dGYvUGFnZUJsb2Nr
Lmg6CisKIDIwMjItMDQtMTQgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtXZWJBdXRobl0gQ2xlYW4gdXAgV2ViQXV0aGVudGljYXRpb25Nb2Rlcm4gYW5kIFdlYkF1
dGhuUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFnZUJsb2NrLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9QYWdlQmxvY2suaAppbmRleCA5YmI3ZmZmY2MxYWUuLjgyOWQ1MTE1NTkxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGFnZUJsb2NrLmgKKysrIGIvU291cmNlL1dURi93
dGYvUGFnZUJsb2NrLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAog
bmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBlMjhmMzNmZjViOWYuLmYzMTg5
YTU5MDgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDQtMTUg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2Vi
R1BVXSBJbXBsZW1lbnQgaGFyZHdhcmUgbGltaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkzNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgImxpbWl0
cyIgYXMgZGVzY3JpYmVkIGluIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2xpbWl0
cy4KKyAgICAgICAgVmFyaW91cyBvcGVyYXRpb25zIHF1ZXJ5IHRoZSBsaW1pdHMgb2YgdGhlIGRl
dmljZSB0byBrbm93IHdoZXRoZXIgdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24gaXMKKyAgICAgICAg
d2l0aGluIHJhbmdlLiBFLmcuIGlmIGNvbnRlbnQgdHJpZXMgdG8gbWFrZSBhIHRleHR1cmUgdG9v
IGJpZywgdGhpcyBpcyBob3cgd2UgY2F0Y2ggaXQgYWhlYWQgb2YKKyAgICAgICAgdGltZS4KKwor
ICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHA6
CisgICAgICAgIChQQUw6OldlYkdQVTo6QWRhcHRlckltcGw6OnJlcXVlc3REZXZpY2UpOgorCiAy
MDIyLTA0LTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtpT1NdIFtXSzJdIE1hbmFnZWQgcGFzdGVib2FyZCBzaG91bGQgZnVuY3Rpb24gZm9yIGFs
bCBtYW5hZ2VkIGRvbWFpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKaW5kZXgg
ODNjZmY3YTY0MzAyLi4zNGMzNjQ4ZWQ2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlcklt
cGwuY3BwCkBAIC0xNDksNDMgKzE0OSw3OSBAQCB2b2lkIEFkYXB0ZXJJbXBsOjpyZXF1ZXN0RGV2
aWNlKGNvbnN0IERldmljZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbXBsZXRpb25IYQogICAg
ICAgICByZXR1cm4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhm
ZWF0dXJlTmFtZSk7CiAgICAgfSk7CiAKLSAgICBXR1BVUmVxdWlyZWRMaW1pdHMgbGltaXRzIHsK
LSAgICAgICAgbnVsbHB0ciwgewotICAgICAgICAgICAgMCwgLy8gbWF4VGV4dHVyZURpbWVuc2lv
bjFECi0gICAgICAgICAgICAwLCAvLyBtYXhUZXh0dXJlRGltZW5zaW9uMkQKLSAgICAgICAgICAg
IDAsIC8vIG1heFRleHR1cmVEaW1lbnNpb24zRAotICAgICAgICAgICAgMCwgLy8gbWF4VGV4dHVy
ZUFycmF5TGF5ZXJzCi0gICAgICAgICAgICAwLCAvLyBtYXhCaW5kR3JvdXBzCi0gICAgICAgICAg
ICAwLCAvLyBtYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dAotICAgICAg
ICAgICAgMCwgLy8gbWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQKLSAg
ICAgICAgICAgIDAsIC8vIG1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlCi0gICAgICAg
ICAgICAwLCAvLyBtYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlCi0gICAgICAgICAgICAwLCAvLyBt
YXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlCi0gICAgICAgICAgICAwLCAvLyBtYXhTdG9y
YWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZQotICAgICAgICAgICAgMCwgLy8gbWF4VW5pZm9ybUJ1
ZmZlcnNQZXJTaGFkZXJTdGFnZQotICAgICAgICAgICAgMCwgLy8gbWF4VW5pZm9ybUJ1ZmZlckJp
bmRpbmdTaXplCi0gICAgICAgICAgICAwLCAvLyBtYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUK
LSAgICAgICAgICAgIDAsIC8vIG1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQKLSAgICAg
ICAgICAgIDAsIC8vIG1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQKLSAgICAgICAgICAg
IDAsIC8vIG1heFZlcnRleEJ1ZmZlcnMKLSAgICAgICAgICAgIDAsIC8vIG1heFZlcnRleEF0dHJp
YnV0ZXMKLSAgICAgICAgICAgIDAsIC8vIG1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlCi0gICAg
ICAgICAgICAwLCAvLyBtYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cwotICAgICAgICAgICAg
MCwgLy8gbWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplCi0gICAgICAgICAgICAwLCAvLyBt
YXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAKLSAgICAgICAgICAgIDAsIC8vIG1heENv
bXB1dGVXb3JrZ3JvdXBTaXplWAotICAgICAgICAgICAgMCwgLy8gbWF4Q29tcHV0ZVdvcmtncm91
cFNpemVZCi0gICAgICAgICAgICAwLCAvLyBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVoKLSAgICAg
ICAgICAgIDAsIC8vIG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uCi0gICAgICAgIH0s
CisgICAgYXV0byBsaW1pdHMgPSBXR1BVTGltaXRzIHsKKyAgICAgICAgLyogbWF4VGV4dHVyZURp
bWVuc2lvbjFEICovICAgIDgxOTIsCisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24yRCAq
LyAgICA4MTkyLAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uM0QgKi8gICAgMjA0OCwK
KyAgICAgICAgLyogbWF4VGV4dHVyZUFycmF5TGF5ZXJzICovICAgIDI1NiwKKyAgICAgICAgLyog
bWF4QmluZEdyb3VwcyAqLyAgICA0LAorICAgICAgICAvKiBtYXhEeW5hbWljVW5pZm9ybUJ1ZmZl
cnNQZXJQaXBlbGluZUxheW91dCAqLyAgICA4LAorICAgICAgICAvKiBtYXhEeW5hbWljU3RvcmFn
ZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCAqLyAgICA0LAorICAgICAgICAvKiBtYXhTYW1wbGVk
VGV4dHVyZXNQZXJTaGFkZXJTdGFnZSAqLyAgICAxNiwKKyAgICAgICAgLyogbWF4U2FtcGxlcnNQ
ZXJTaGFkZXJTdGFnZSAqLyAgICAxNiwKKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZlcnNQZXJT
aGFkZXJTdGFnZSAqLyAgICA4LAorICAgICAgICAvKiBtYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFk
ZXJTdGFnZSAqLyAgICA0LAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0
YWdlICovICAgIDEyLAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUgKi8g
ICAgNjU1MzYsCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAx
MzQyMTc3MjgsCisgICAgICAgIC8qIG1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8g
ICAgMjU2LAorICAgICAgICAvKiBtaW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAg
IDI1NiwKKyAgICAgICAgLyogbWF4VmVydGV4QnVmZmVycyAqLyAgICA4LAorICAgICAgICAvKiBt
YXhWZXJ0ZXhBdHRyaWJ1dGVzICovICAgIDE2LAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJB
cnJheVN0cmlkZSAqLyAgICAyMDQ4LAorICAgICAgICAvKiBtYXhJbnRlclN0YWdlU2hhZGVyQ29t
cG9uZW50cyAqLyAgICAzMiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VT
aXplICovICAgIDE2MzUyLAorICAgICAgICAvKiBtYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3Jr
Z3JvdXAgKi8gICAgMjU2LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVggKi8g
ICAgMjU2LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkgKi8gICAgMjU2LAor
ICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVogKi8gICAgNjQsCisgICAgICAgIC8q
IG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uICovICAgIDY1NTM1LAogICAgIH07CiAK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBkZXNjcmlwdG9yLnJlcXVpcmVkTGltaXRzKSB7
CisjZGVmaW5lIFNFVF9WQUxVRShMSU1JVCkgXAorICAgIGVsc2UgaWYgKHBhaXIua2V5ID09ICNM
SU1JVCkgXAorICAgICAgICBsaW1pdHMuTElNSVQgPSBwYWlyLnZhbHVlOworCisgICAgICAgIGlm
IChmYWxzZSkgeyB9CisgICAgICAgIFNFVF9WQUxVRShtYXhUZXh0dXJlRGltZW5zaW9uMUQpCisg
ICAgICAgIFNFVF9WQUxVRShtYXhUZXh0dXJlRGltZW5zaW9uMkQpCisgICAgICAgIFNFVF9WQUxV
RShtYXhUZXh0dXJlRGltZW5zaW9uM0QpCisgICAgICAgIFNFVF9WQUxVRShtYXhUZXh0dXJlQXJy
YXlMYXllcnMpCisgICAgICAgIFNFVF9WQUxVRShtYXhCaW5kR3JvdXBzKQorICAgICAgICBTRVRf
VkFMVUUobWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQpCisgICAgICAg
IFNFVF9WQUxVRShtYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCkKKyAg
ICAgICAgU0VUX1ZBTFVFKG1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlKQorICAgICAg
ICBTRVRfVkFMVUUobWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSkKKyAgICAgICAgU0VUX1ZBTFVF
KG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UpCisgICAgICAgIFNFVF9WQUxVRShtYXhT
dG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSkKKyAgICAgICAgU0VUX1ZBTFVFKG1heFVuaWZv
cm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UpCisgICAgICAgIFNFVF9WQUxVRShtYXhVbmlmb3JtQnVm
ZmVyQmluZGluZ1NpemUpCisgICAgICAgIFNFVF9WQUxVRShtYXhTdG9yYWdlQnVmZmVyQmluZGlu
Z1NpemUpCisgICAgICAgIFNFVF9WQUxVRShtaW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50
KQorICAgICAgICBTRVRfVkFMVUUobWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCkKKyAg
ICAgICAgU0VUX1ZBTFVFKG1heFZlcnRleEJ1ZmZlcnMpCisgICAgICAgIFNFVF9WQUxVRShtYXhW
ZXJ0ZXhBdHRyaWJ1dGVzKQorICAgICAgICBTRVRfVkFMVUUobWF4VmVydGV4QnVmZmVyQXJyYXlT
dHJpZGUpCisgICAgICAgIFNFVF9WQUxVRShtYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cykK
KyAgICAgICAgU0VUX1ZBTFVFKG1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSkKKyAgICAg
ICAgU0VUX1ZBTFVFKG1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cCkKKyAgICAgICAg
U0VUX1ZBTFVFKG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCkKKyAgICAgICAgU0VUX1ZBTFVFKG1h
eENvbXB1dGVXb3JrZ3JvdXBTaXplWSkKKyAgICAgICAgU0VUX1ZBTFVFKG1heENvbXB1dGVXb3Jr
Z3JvdXBTaXplWikKKyAgICAgICAgU0VUX1ZBTFVFKG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGlt
ZW5zaW9uKQorCisjdW5kZWYgU0VUX1ZBTFVFCisgICAgfQorCisgICAgV0dQVVJlcXVpcmVkTGlt
aXRzIHJlcXVpcmVkTGltaXRzIHsgbnVsbHB0ciwgV1RGTW92ZShsaW1pdHMpIH07CisKICAgICBX
R1BVRGV2aWNlRGVzY3JpcHRvciBiYWNraW5nRGVzY3JpcHRvciB7CiAgICAgICAgIG51bGxwdHIs
CiAgICAgICAgIGxhYmVsLmRhdGEoKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZl
YXR1cmVzLnNpemUoKSksCiAgICAgICAgIGZlYXR1cmVzLmRhdGEoKSwKLSAgICAgICAgJmxpbWl0
cywKKyAgICAgICAgJnJlcXVpcmVkTGltaXRzLAogICAgIH07CiAKICAgICB3Z3B1QWRhcHRlclJl
cXVlc3REZXZpY2VXaXRoQmxvY2sobV9iYWNraW5nLCAmYmFja2luZ0Rlc2NyaXB0b3IsIG1ha2VC
bG9ja1B0cihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jb3B5UmVmKCksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBXR1BVRGV2aWNlIGRl
dmljZSwgY29uc3QgY2hhciopIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwppbmRleCBkMjM3M2ZlMmY3NGEuLjdi
NTI1ZTllZDJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkdQVS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAyMi0wNC0xNSAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIElt
cGxlbWVudCBoYXJkd2FyZSBsaW1pdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzOTM3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlIGdhdGhlciB0aGUgdmFsdWVzIG9mIHRoZSBsaW1pdHMgZnJvbSB0
aGUgTWV0YWwgRmVhdHVyZSBTZXQgVGFibGVzCisgICAgICAgIGF0IGh0dHBzOi8vZGV2ZWxvcGVy
LmFwcGxlLmNvbS9tZXRhbC9NZXRhbC1GZWF0dXJlLVNldC1UYWJsZXMucGRmLgorCisgICAgICAg
IFRoZXJlIGFyZSBubyBsaW1pdCB0YWJsZXMgZm9yIHRoZSBDb21tb24gZmFtaWxpZXMsIHNvIHdl
IHVzZSBBcHBsZQorICAgICAgICBhbmQgTWFjIGZhbWlsaWVzIGluc3RlYWQuCisKKyAgICAgICAg
VGVzdDogd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2NyZWF0ZVRleHR1cmUKKworICAgICAgICAqIFdl
YkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkdQVS9BZGFwdGVy
Lmg6CisgICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BV
L0FkYXB0ZXIubW06CisgICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6OkFkYXB0ZXIpOgorICAgICAg
ICAoV2ViR1BVOjpBZGFwdGVyOjpyZXF1ZXN0RGV2aWNlKToKKyAgICAgICAgKFdlYkdQVTo6ZGV2
aWNlTWVldHNSZXF1aXJlZExpbWl0cyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVL0Rldmlj
ZS5oOgorICAgICAgICAqIFdlYkdQVS9EZXZpY2UubW06CisgICAgICAgIChXZWJHUFU6OkRldmlj
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpEZXZpY2UpOgorICAgICAgICAq
IFdlYkdQVS9IYXJkd2FyZUxpbWl0cy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQ
VS9BZGFwdGVyLmguCisgICAgICAgICogV2ViR1BVL0hhcmR3YXJlTGltaXRzLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYkdQVTo6YXBwbGUzKToKKyAgICAgICAgKFdlYkdQVTo6YXBwbGU0KToKKyAg
ICAgICAgKFdlYkdQVTo6YXBwbGU1KToKKyAgICAgICAgKFdlYkdQVTo6YXBwbGU2KToKKyAgICAg
ICAgKFdlYkdQVTo6YXBwbGU3KToKKyAgICAgICAgKFdlYkdQVTo6bWFjMik6CisgICAgICAgIChX
ZWJHUFU6OnJhd0xpbWl0cyk6CisgICAgICAgIChXZWJHUFU6OmNoZWNrTGltaXRzKToKKyAgICAg
ICAgKFdlYkdQVTo6bGltaXRzKToKKyAgICAgICAgKFdlYkdQVTo6aXNWYWxpZCk6CisgICAgICAg
IChXZWJHUFU6OmFueUxpbWl0SXNCZXR0ZXJUaGFuKToKKyAgICAgICAgKiBXZWJHUFUvSW5zdGFu
Y2UubW06CisgICAgICAgIChXZWJHUFU6Okluc3RhbmNlOjpyZXF1ZXN0QWRhcHRlcik6CisgICAg
ICAgICogV2ViR1BVL1RleHR1cmUubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6dmFsaWRh
dGVDcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZTo6Y3JlYXRlVmlldyk6
CisKIDIwMjItMDQtMTMgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtYY29kZV0gRml4IHB1YmxpYyB3YXRjaE9TIHdvcmtzcGFjZSBidWlsZCBieSB1cGRhdGlu
ZyBzY2hlbWUgYW5kIGJ1aWxkIHNldHRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkdQVS9XZWJHUFUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MjJmYmNmODdiZTMuLmJlZTEwNDA1NTg5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMCw2ICsxMCw4IEBACiAJCTFDMDIzRDNGMjc0NDkwNzAwMDFEQjczNCAvKiBXR1NMTGV4ZXJU
ZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
MDIzRDNFMjc0NDkwNzAwMDFEQjczNCAvKiBXR1NMTGV4ZXJUZXN0cy5tbSAqLzsgfTsKIAkJMUMw
MjNENDAyNzQ0OTA3MDAwMURCNzM0IC8qIGxpYndnc2wuYSBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRUJEN0YyMjcxNkIyQ0MwMEE1MjU0RCAvKiBs
aWJ3Z3NsLmEgKi87IH07CiAJCTFDMDIzRDRCMjc0NDk1QjkwMDFEQjczNCAvKiBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzAyM0Q0QTI3NDQ5NUI5MDAxREI3MzQgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrICovOyB9OworCQkxQzBGNDFFRTI4MDk0MDY1MDAwNTg4NkQgLyogSGFyZHdhcmVMaW1pdHMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzBGNDFF
QzI4MDk0MDY1MDAwNTg4NkQgLyogSGFyZHdhcmVMaW1pdHMubW0gKi87IH07CisJCTFDMEY0MUVG
MjgwOTQwNjUwMDA1ODg2RCAvKiBIYXJkd2FyZUxpbWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwRjQxRUQyODA5NDA2NTAwMDU4ODZEIC8qIEhh
cmR3YXJlTGltaXRzLmggKi87IH07CiAJCTFDMkNFREVFMjcxRThBNzMwMEVEQzE2RiAvKiBNZXRh
bC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzJDRURFRDI3MUU4QTczMDBFREMxNkYgLyogTWV0YWwuZnJhbWV3b3JrICovOyB9Owog
CQkxQzMzNzU1RjI3RkEyM0I4MDAyRjE2NDQgLyogSXNWYWxpZFRvVXNlV2l0aC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMzMzc1NUQyN0ZBMjNCODAw
MkYxNjQ0IC8qIElzVmFsaWRUb1VzZVdpdGguaCAqLzsgfTsKIAkJMUM1MzE5QzAyN0JEQzZDQzAw
Q0QxMjdFIC8qIG1haW4uc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzUzMTlCRjI3QkRDNkNDMDBDRDEyN0UgLyogbWFpbi5zd2lmdCAqLzsgfTsK
QEAgLTEzMSw2ICsxMzMsOCBAQAogCQkxQzAyM0QzRTI3NDQ5MDcwMDAxREI3MzQgLyogV0dTTExl
eGVyVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXR1NMTGV4ZXJUZXN0cy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMjNENDcyNzQ0OTE2RDAwMURCNzM0IC8qIFdH
U0xVbml0VGVzdHMueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV0dTTFVuaXRUZXN0cy54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMjNENEEyNzQ0OTVCOTAwMURCNzM0
IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkx
QzBGNDFFQzI4MDk0MDY1MDAwNTg4NkQgLyogSGFyZHdhcmVMaW1pdHMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBIYXJkd2FyZUxpbWl0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUMwRjQxRUQyODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3YXJlTGltaXRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhhcmR3YXJlTGltaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
MkNFREVEMjcxRThBNzMwMEVEQzE2RiAvKiBNZXRhbC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFt
ZSA9IE1ldGFsLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvTWV0
YWwuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJMUMzMzc1NUQyN0ZBMjNC
ODAwMkYxNjQ0IC8qIElzVmFsaWRUb1VzZVdpdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXNWYWxpZFRv
VXNlV2l0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzUzMTlCRDI3QkRDNkNC
MDBDRDEyN0UgLyogQ29tbWFuZExpbmVQbGF5Z3JvdW5kICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBp
bmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBDb21tYW5kTGluZVBsYXlncm91bmQ7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0zNDQsNiArMzQ4LDggQEAKIAkJCQkxQzVB
Q0E5QjI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLmggKi8sCiAJCQkJMUM1QUNBQTMyNzNBNDI2
RDAwOTVGOEQ1IC8qIERldmljZS5tbSAqLywKIAkJCQkxQ0VCRDgwQjI3MTZDMzc5MDBBNTI1NEQg
LyogRXhwb3J0TWFjcm9zLmggKi8sCisJCQkJMUMwRjQxRUQyODA5NDA2NTAwMDU4ODZEIC8qIEhh
cmR3YXJlTGltaXRzLmggKi8sCisJCQkJMUMwRjQxRUMyODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3
YXJlTGltaXRzLm1tICovLAogCQkJCTFDNUFDQUEwMjczQTQyNkQwMDk1RjhENSAvKiBJbnN0YW5j
ZS5oICovLAogCQkJCTFDNUFDQTkyMjczQTQxQzIwMDk1RjhENSAvKiBJbnN0YW5jZS5tbSAqLywK
IAkJCQkxQzMzNzU1RDI3RkEyM0I4MDAyRjE2NDQgLyogSXNWYWxpZFRvVXNlV2l0aC5oICovLApA
QCAtNDgxLDYgKzQ4Nyw3IEBACiAJCQkJMUM1ODMwMTgyN0UxNjgyMzAwOUI0MEYwIC8qIEFQSUNv
bnZlcnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzVBQ0FENzI3M0E0RDcwMDA5NUY4RDUg
LyogQmluZEdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzU4MkZGQTI3RTA0MTMxMDA5QjQw
RjAgLyogQ29tbWFuZHNNaXhpbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMwRjQxRUYyODA5NDA2
NTAwMDU4ODZEIC8qIEhhcmR3YXJlTGltaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzMzNzU1
RjI3RkEyM0I4MDAyRjE2NDQgLyogSXNWYWxpZFRvVXNlV2l0aC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUNFQkQ3RTcyNzE2QUZCQTAwQTUyNTREIC8qIFdlYkdQVS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUM1QUNBRDMyNzNBNEM4NjAwOTVGOEQ1IC8qIFdlYkdQVUV4dC5oIGluIEhlYWRlcnMgKi8s
CkBAIC03MzEsNiArNzM4LDcgQEAKIAkJCQkxQzVBQ0FDNjI3M0E0MjZEMDA5NUY4RDUgLyogQ29t
cHV0ZVBhc3NFbmNvZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1QUNBQzAyNzNBNDI2RDAw
OTVGOEQ1IC8qIENvbXB1dGVQaXBlbGluZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUMx
MjczQTQyNkQwMDk1RjhENSAvKiBEZXZpY2UubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQzBGNDFF
RTI4MDk0MDY1MDAwNTg4NkQgLyogSGFyZHdhcmVMaW1pdHMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQzVBQ0E5NDI3M0E0MUMyMDA5NUY4RDUgLyogSW5zdGFuY2UubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxQzVBQ0FFNTI3M0E1NUREMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQzVBQ0FCRDI3M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQubW0gaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaAppbmRleCA5ODYzZTY4ZTU5YWUuLjgwNDY0
MGU4MTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaApAQCAtNDIsOSArNDIsOSBAQCBjbGFzcyBJ
bnN0YW5jZTsKIGNsYXNzIEFkYXB0ZXIgOiBwdWJsaWMgV0dQVUFkYXB0ZXJJbXBsLCBwdWJsaWMg
UmVmQ291bnRlZDxBZGFwdGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxBZGFwdGVyPiBjcmVhdGUoaWQ8TVRMRGV2aWNlPiBkZXZpY2Us
IEluc3RhbmNlJiBpbnN0YW5jZSkKKyAgICBzdGF0aWMgUmVmPEFkYXB0ZXI+IGNyZWF0ZShpZDxN
VExEZXZpY2U+IGRldmljZSwgSW5zdGFuY2UmIGluc3RhbmNlLCBXR1BVTGltaXRzJiYgbGltaXRz
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWRhcHRlcihkZXZpY2UsIGlu
c3RhbmNlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFkYXB0ZXIoZGV2aWNlLCBp
bnN0YW5jZSwgV1RGTW92ZShsaW1pdHMpKSk7CiAgICAgfQogICAgIHN0YXRpYyBSZWY8QWRhcHRl
cj4gY3JlYXRlSW52YWxpZChJbnN0YW5jZSYgaW5zdGFuY2UpCiAgICAgewpAQCAtNjYsMTEgKzY2
LDEzIEBAIHB1YmxpYzoKIAogCiBwcml2YXRlOgotICAgIEFkYXB0ZXIoaWQ8TVRMRGV2aWNlPiwg
SW5zdGFuY2UmKTsKKyAgICBBZGFwdGVyKGlkPE1UTERldmljZT4sIEluc3RhbmNlJiwgV0dQVUxp
bWl0cyYmKTsKICAgICBBZGFwdGVyKEluc3RhbmNlJik7CiAKICAgICBpZDxNVExEZXZpY2U+IG1f
ZGV2aWNlIHsgbmlsIH07CiAgICAgY29uc3QgUmVmPEluc3RhbmNlPiBtX2luc3RhbmNlOworCisg
ICAgV0dQVUxpbWl0cyBtX2xpbWl0cyB7IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0gYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9BZGFwdGVyLm1tCmluZGV4IDdlNDNlMTkzMDdkNC4uMDVhOWEwMzk3NzRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KQEAgLTI4LDE0ICsyOCwxNiBAQAogCiAjaW1wb3J0ICJB
UElDb252ZXJzaW9ucy5oIgogI2ltcG9ydCAiRGV2aWNlLmgiCisjaW1wb3J0ICJIYXJkd2FyZUxp
bWl0cy5oIgogI2ltcG9ydCAiSW5zdGFuY2UuaCIKICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLUFkYXB0ZXI6OkFkYXB0ZXIoaWQ8TVRMRGV2aWNl
PiBkZXZpY2UsIEluc3RhbmNlJiBpbnN0YW5jZSkKK0FkYXB0ZXI6OkFkYXB0ZXIoaWQ8TVRMRGV2
aWNlPiBkZXZpY2UsIEluc3RhbmNlJiBpbnN0YW5jZSwgV0dQVUxpbWl0cyYmIGxpbWl0cykKICAg
ICA6IG1fZGV2aWNlKGRldmljZSkKICAgICAsIG1faW5zdGFuY2UoaW5zdGFuY2UpCisgICAgLCBt
X2xpbWl0cyhXVEZNb3ZlKGxpbWl0cykpCiB7CiB9CiAKQEAgLTc5LDM4ICs4MSw2IEBAIGJvb2wg
QWRhcHRlcjo6aGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1zdGF0aWMgYm9vbCBkZXZpY2VNZWV0c1JlcXVpcmVkTGltaXRzKGlkPE1UTERldmljZT4s
IGNvbnN0IFdHUFVSZXF1aXJlZExpbWl0cyYgcmVxdWlyZWRMaW1pdHMpCi17Ci0gICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzLgotICAgIHJldHVybiAhcmVxdWlyZWRMaW1pdHMubmV4dEluQ2hh
aW4KLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9u
MUQKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9u
MkQKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9u
M0QKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhUZXh0dXJlQXJyYXlMYXll
cnMKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhCaW5kR3JvdXBzCi0gICAg
ICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVy
UGlwZWxpbmVMYXlvdXQKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhEeW5h
bWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dAotICAgICAgICAmJiAhcmVxdWlyZWRM
aW1pdHMubGltaXRzLm1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlCi0gICAgICAgICYm
ICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZQotICAgICAg
ICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3Rh
Z2UKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhTdG9yYWdlVGV4dHVyZXNQ
ZXJTaGFkZXJTdGFnZQotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFVuaWZv
cm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0
cy5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRz
LmxpbWl0cy5tYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUKLSAgICAgICAgJiYgIXJlcXVpcmVk
TGltaXRzLmxpbWl0cy5taW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50Ci0gICAgICAgICYm
ICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudAot
ICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFZlcnRleEJ1ZmZlcnMKLSAgICAg
ICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzCi0gICAgICAg
ICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUKLSAg
ICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9u
ZW50cwotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heENvbXB1dGVXb3JrZ3Jv
dXBTdG9yYWdlU2l6ZQotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heENvbXB1
dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cAotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGlt
aXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWAotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMu
bGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWQotICAgICAgICAmJiAhcmVxdWlyZWRMaW1p
dHMubGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWgotICAgICAgICAmJiAhcmVxdWlyZWRM
aW1pdHMubGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uOwotfQotCiB2b2lk
IEFkYXB0ZXI6OnJlcXVlc3REZXZpY2UoY29uc3QgV0dQVURldmljZURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFJl
ZjxEZXZpY2U+JiYsIFN0cmluZyYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoZGVzY3JpcHRv
ci5uZXh0SW5DaGFpbikgewpAQCAtMTI3LDE2ICs5NywzNiBAQCB2b2lkIEFkYXB0ZXI6OnJlcXVl
c3REZXZpY2UoY29uc3QgV0dQVURldmljZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbXBsZXRp
b25IYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGRlc2NyaXB0b3IucmVxdWly
ZWRMaW1pdHMgJiYgIWRldmljZU1lZXRzUmVxdWlyZWRMaW1pdHMobV9kZXZpY2UsICpkZXNjcmlw
dG9yLnJlcXVpcmVkTGltaXRzKSkgewotICAgICAgICBpbnN0YW5jZSgpLnNjaGVkdWxlV29yayhb
c3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1
c19FcnJvciwgRGV2aWNlOjpjcmVhdGVJbnZhbGlkKHN0cm9uZ1RoaXMpLCAiRGV2aWNlIGRvZXMg
bm90IHN1cHBvcnQgcmVxdWVzdGVkIGxpbWl0cyJfcyk7Ci0gICAgICAgIH0pOwotICAgICAgICBy
ZXR1cm47CisgICAgYXV0byBsaW1pdHMgPSBtX2xpbWl0czsKKworICAgIGlmIChkZXNjcmlwdG9y
LnJlcXVpcmVkTGltaXRzKSB7CisgICAgICAgIGlmIChkZXNjcmlwdG9yLnJlcXVpcmVkTGltaXRz
LT5uZXh0SW5DaGFpbikgeworICAgICAgICAgICAgaW5zdGFuY2UoKS5zY2hlZHVsZVdvcmsoW3N0
cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3Rh
dHVzX0Vycm9yLCBEZXZpY2U6OmNyZWF0ZUludmFsaWQoc3Ryb25nVGhpcyksICJVbmtub3duIGRl
c2NyaXB0b3IgdHlwZSJfcyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghV2ViR1BVOjppc1ZhbGlkKGRlc2NyaXB0b3IucmVx
dWlyZWRMaW1pdHMtPmxpbWl0cykpIHsKKyAgICAgICAgICAgIGluc3RhbmNlKCkuc2NoZWR1bGVX
b3JrKFtzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERl
dmljZVN0YXR1c19FcnJvciwgRGV2aWNlOjpjcmVhdGVJbnZhbGlkKHN0cm9uZ1RoaXMpLCAiRGV2
aWNlIGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIGxpbWl0cyJfcyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhbnlMaW1p
dElzQmV0dGVyVGhhbihkZXNjcmlwdG9yLnJlcXVpcmVkTGltaXRzLT5saW1pdHMsIG1fbGltaXRz
KSkgeworICAgICAgICAgICAgaW5zdGFuY2UoKS5zY2hlZHVsZVdvcmsoW3N0cm9uZ1RoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX0Vycm9yLCBE
ZXZpY2U6OmNyZWF0ZUludmFsaWQoc3Ryb25nVGhpcyksICJEZXZpY2UgZG9lcyBub3Qgc3VwcG9y
dCByZXF1ZXN0ZWQgbGltaXRzIl9zKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGltaXRzID0gZGVzY3JpcHRvci5yZXF1aXJlZExp
bWl0cy0+bGltaXRzOwogICAgIH0KIAogICAgIGF1dG8gbGFiZWwgPSBmcm9tQVBJKGRlc2NyaXB0
b3IubGFiZWwpOwotICAgIGluc3RhbmNlKCkuc2NoZWR1bGVXb3JrKFtzdHJvbmdUaGlzID0gUmVm
IHsgKnRoaXMgfSwgbGFiZWwgPSBXVEZNb3ZlKGxhYmVsKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VT
dGF0dXNfU3VjY2VzcywgRGV2aWNlOjpjcmVhdGUoc3Ryb25nVGhpcy0+bV9kZXZpY2UsIFdURk1v
dmUobGFiZWwpLCBzdHJvbmdUaGlzKSwgeyB9KTsKKyAgICBpbnN0YW5jZSgpLnNjaGVkdWxlV29y
ayhbc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGxhYmVsID0gV1RGTW92ZShsYWJlbCksIGxp
bWl0cyA9IFdURk1vdmUobGltaXRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfU3VjY2Vz
cywgRGV2aWNlOjpjcmVhdGUoc3Ryb25nVGhpcy0+bV9kZXZpY2UsIFdURk1vdmUobGFiZWwpLCBX
VEZNb3ZlKGxpbWl0cyksIHN0cm9uZ1RoaXMpLCB7IH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0RldmljZS5oCmluZGV4IDM2MGYzOTIzYzgzZC4uOGMxMGExN2FjZDBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9E
ZXZpY2UuaApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBUZXh0dXJlOwogY2xhc3MgRGV2aWNlIDog
cHVibGljIFdHUFVEZXZpY2VJbXBsLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGV2aWNl
PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPERldmljZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RGV2aWNlPiBjcmVhdGUoaWQ8TVRMRGV2
aWNlPiwgU3RyaW5nJiYgZGV2aWNlTGFiZWwsIEFkYXB0ZXImKTsKKyAgICBzdGF0aWMgUmVmPERl
dmljZT4gY3JlYXRlKGlkPE1UTERldmljZT4sIFN0cmluZyYmIGRldmljZUxhYmVsLCBXR1BVTGlt
aXRzJiYsIEFkYXB0ZXImKTsKICAgICBzdGF0aWMgUmVmPERldmljZT4gY3JlYXRlSW52YWxpZChB
ZGFwdGVyJiBhZGFwdGVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGV2
aWNlKGFkYXB0ZXIpKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNV
bmlmaWVkTWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2UuaGFzVW5pZmllZE1lbW9yeTsg
fQogCiBwcml2YXRlOgotICAgIERldmljZShpZDxNVExEZXZpY2U+LCBpZDxNVExDb21tYW5kUXVl
dWU+IGRlZmF1bHRRdWV1ZSwgQWRhcHRlciYpOworICAgIERldmljZShpZDxNVExEZXZpY2U+LCBp
ZDxNVExDb21tYW5kUXVldWU+IGRlZmF1bHRRdWV1ZSwgV0dQVUxpbWl0cyYmLCBBZGFwdGVyJik7
CiAgICAgRGV2aWNlKEFkYXB0ZXImKTsKIAogICAgIHN0cnVjdCBFcnJvclNjb3BlOwpAQCAtMTM4
LDYgKzEzOCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzTG9zdCB7IGZhbHNlIH07CiAgICAg
aWQ8TlNPYmplY3Q+IG1fZGV2aWNlT2JzZXJ2ZXIgeyBuaWwgfTsKIAorICAgIFdHUFVMaW1pdHMg
bV9saW1pdHMgeyB9OworCiAgICAgY29uc3QgUmVmPEFkYXB0ZXI+IG1fYWRhcHRlcjsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbSBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0RldmljZS5tbQppbmRleCAzNTE2ZWRjOGE0NmMuLmYwOGJhYWFkOWVjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0RldmljZS5tbQpAQCAtNDcsNyArNDcsNyBAQAogCiBuYW1lc3BhY2UgV2ViR1BV
IHsKIAotUmVmPERldmljZT4gRGV2aWNlOjpjcmVhdGUoaWQ8TVRMRGV2aWNlPiBkZXZpY2UsIFN0
cmluZyYmIGRldmljZUxhYmVsLCBBZGFwdGVyJiBhZGFwdGVyKQorUmVmPERldmljZT4gRGV2aWNl
OjpjcmVhdGUoaWQ8TVRMRGV2aWNlPiBkZXZpY2UsIFN0cmluZyYmIGRldmljZUxhYmVsLCBXR1BV
TGltaXRzJiYgbGltaXRzLCBBZGFwdGVyJiBhZGFwdGVyKQogewogICAgIGlkPE1UTENvbW1hbmRR
dWV1ZT4gY29tbWFuZFF1ZXVlID0gW2RldmljZSBuZXdDb21tYW5kUXVldWVdOwogICAgIGlmICgh
Y29tbWFuZFF1ZXVlKQpAQCAtNTksMTIgKzU5LDEzIEBAIFJlZjxEZXZpY2U+IERldmljZTo6Y3Jl
YXRlKGlkPE1UTERldmljZT4gZGV2aWNlLCBTdHJpbmcmJiBkZXZpY2VMYWJlbCwgQWRhcHRlciYK
ICAgICBpZiAoIWRldmljZUxhYmVsLmlzRW1wdHkoKSkKICAgICAgICAgY29tbWFuZFF1ZXVlLmxh
YmVsID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJEZWZhdWx0IHF1ZXVlIGZvciBkZXZp
Y2UgJXMiLCBkZXZpY2VMYWJlbC51dGY4KCkuZGF0YSgpXTsKIAotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERldmljZShkZXZpY2UsIGNvbW1hbmRRdWV1ZSwgYWRhcHRlcikpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERldmljZShkZXZpY2UsIGNvbW1hbmRRdWV1ZSwgV1RGTW92ZShsaW1p
dHMpLCBhZGFwdGVyKSk7CiB9CiAKLURldmljZTo6RGV2aWNlKGlkPE1UTERldmljZT4gZGV2aWNl
LCBpZDxNVExDb21tYW5kUXVldWU+IGRlZmF1bHRRdWV1ZSwgQWRhcHRlciYgYWRhcHRlcikKK0Rl
dmljZTo6RGV2aWNlKGlkPE1UTERldmljZT4gZGV2aWNlLCBpZDxNVExDb21tYW5kUXVldWU+IGRl
ZmF1bHRRdWV1ZSwgV0dQVUxpbWl0cyYmIGxpbWl0cywgQWRhcHRlciYgYWRhcHRlcikKICAgICA6
IG1fZGV2aWNlKGRldmljZSkKICAgICAsIG1fZGVmYXVsdFF1ZXVlKFF1ZXVlOjpjcmVhdGUoZGVm
YXVsdFF1ZXVlLCAqdGhpcykpCisgICAgLCBtX2xpbWl0cyhXVEZNb3ZlKGxpbWl0cykpCiAgICAg
LCBtX2FkYXB0ZXIoYWRhcHRlcikKIHsKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9IYXJkd2FyZUxpbWl0cy5oIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvSGFyZHdhcmVMaW1pdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjBkMjUzZTc4ZjY0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0hhcmR3YXJlTGltaXRzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxv
cHRpb25hbD4KKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK3N0ZDo6b3B0aW9uYWw8V0dQVUxpbWl0
cz4gbGltaXRzKGlkPE1UTERldmljZT4pOworYm9vbCBpc1ZhbGlkKGNvbnN0IFdHUFVMaW1pdHMm
KTsKK2Jvb2wgYW55TGltaXRJc0JldHRlclRoYW4oY29uc3QgV0dQVUxpbWl0cyYgdGFyZ2V0LCBj
b25zdCBXR1BVTGltaXRzJiByZWZlcmVuY2UpOworCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0hhcmR3YXJlTGltaXRzLm1tIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvSGFyZHdhcmVMaW1pdHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi42ODg2Nzk4YTViYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9IYXJkd2FyZUxpbWl0cy5tbQpAQCAtMCwwICsxLDQ0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiSGFyZHdhcmVMaW1pdHMuaCIKKworI2ltcG9ydCA8YWxnb3JpdGhtPgorI2lt
cG9ydCA8bGltaXRzPgorI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9Q
YWdlQmxvY2suaD4KKyNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdl
YkdQVSB7CisKKy8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9tZXRhbC9NZXRhbC1GZWF0
dXJlLVNldC1UYWJsZXMucGRmCisKKy8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2Vi
L2dwdXdlYi9pc3N1ZXMvMjc0OSB3ZSBuZWVkIG1vcmUgbGltaXRzLgorCitzdGF0aWMgV0dQVUxp
bWl0cyBhcHBsZTMoKQoreworICAgIHVpbnQzMl90IG1heEJpbmRHcm91cHMgPSAzMDsKKworICAg
IHJldHVybiBXR1BVTGltaXRzIHsKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjFEICov
ICAgIDE2Mzg0LAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uMkQgKi8gICAgMTYzODQs
CisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24zRCAqLyAgICAyMDQ4LAorICAgICAgICAv
KiBtYXhUZXh0dXJlQXJyYXlMYXllcnMgKi8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4QmluZEdy
b3VwcyAqLyAgICBtYXhCaW5kR3JvdXBzLAorICAgICAgICAvKiBtYXhEeW5hbWljVW5pZm9ybUJ1
ZmZlcnNQZXJQaXBlbGluZUxheW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90
Pjo6bWF4KCksCisgICAgICAgIC8qIG1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5l
TGF5b3V0ICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAg
ICAgLyogbWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3Vw
cyAqIDMxLAorICAgICAgICAvKiBtYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJp
bmRHcm91cHMgKiAxNiwKKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFn
ZSAqLyAgICBtYXhCaW5kR3JvdXBzICogMzEsCisgICAgICAgIC8qIG1heFN0b3JhZ2VUZXh0dXJl
c1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiAzMSwKKyAgICAgICAgLyogbWF4
VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogMzEsCisg
ICAgICAgIC8qIG1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAwLCAvLyBUbyBiZSBm
aWxsZWQgaW4gYnkgdGhlIGNhbGxlci4KKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZlckJpbmRp
bmdTaXplICovICAgIDAsIC8vIFRvIGJlIGZpbGxlZCBpbiBieSB0aGUgY2FsbGVyLgorICAgICAg
ICAvKiBtaW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDQsCisgICAgICAgIC8q
IG1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgNCwKKyAgICAgICAgLyogbWF4
VmVydGV4QnVmZmVycyAqLyAgICAzMCwKKyAgICAgICAgLyogbWF4VmVydGV4QXR0cmlidXRlcyAq
LyAgICAzMSwKKyAgICAgICAgLyogbWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUgKi8gICAgc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLAorICAgICAgICAvKiBtYXhJbnRlclN0
YWdlU2hhZGVyQ29tcG9uZW50cyAqLyAgICA2MCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtn
cm91cFN0b3JhZ2VTaXplICovICAgIDE2ICogS0IsCisgICAgICAgIC8qIG1heENvbXB1dGVJbnZv
Y2F0aW9uc1Blcldvcmtncm91cCAqLyAgICA1MTIsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3Jr
Z3JvdXBTaXplWCAqLyAgICA1MTIsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXpl
WSAqLyAgICA1MTIsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiAqLyAgICA1
MTIsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uICovICAgIHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICB9OworfQorCitzdGF0aWMg
V0dQVUxpbWl0cyBhcHBsZTQoKQoreworICAgIHVpbnQzMl90IG1heEJpbmRHcm91cHMgPSAzMDsK
KworICAgIHJldHVybiBXR1BVTGltaXRzIHsKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lv
bjFEICovICAgIDE2Mzg0LAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uMkQgKi8gICAg
MTYzODQsCisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24zRCAqLyAgICAyMDQ4LAorICAg
ICAgICAvKiBtYXhUZXh0dXJlQXJyYXlMYXllcnMgKi8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4
QmluZEdyb3VwcyAqLyAgICBtYXhCaW5kR3JvdXBzLAorICAgICAgICAvKiBtYXhEeW5hbWljVW5p
Zm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8qIG1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBp
cGVsaW5lTGF5b3V0ICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwK
KyAgICAgICAgLyogbWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4Qmlu
ZEdyb3VwcyAqIDk2LAorICAgICAgICAvKiBtYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlICovICAg
IG1heEJpbmRHcm91cHMgKiAxNiwKKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFk
ZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogOTYsCisgICAgICAgIC8qIG1heFN0b3JhZ2VU
ZXh0dXJlc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA5NiwKKyAgICAgICAg
LyogbWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICog
OTYsCisgICAgICAgIC8qIG1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAwLCAvLyBU
byBiZSBmaWxsZWQgaW4gYnkgdGhlIGNhbGxlci4KKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZl
ckJpbmRpbmdTaXplICovICAgIDAsIC8vIFRvIGJlIGZpbGxlZCBpbiBieSB0aGUgY2FsbGVyLgor
ICAgICAgICAvKiBtaW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDQsCisgICAg
ICAgIC8qIG1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgNCwKKyAgICAgICAg
LyogbWF4VmVydGV4QnVmZmVycyAqLyAgICAzMCwKKyAgICAgICAgLyogbWF4VmVydGV4QXR0cmli
dXRlcyAqLyAgICAzMSwKKyAgICAgICAgLyogbWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUgKi8g
ICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLAorICAgICAgICAvKiBtYXhJ
bnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cyAqLyAgICAxMjQsCisgICAgICAgIC8qIG1heENvbXB1
dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSAqLyAgICAzMiAqIEtCLAorICAgICAgICAvKiBtYXhDb21w
dXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAgKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29t
cHV0ZVdvcmtncm91cFNpemVYICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3Jr
Z3JvdXBTaXplWSAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6
ZVogKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNp
b24gKi8gICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLAorICAgIH07Cit9
CisKK3N0YXRpYyBXR1BVTGltaXRzIGFwcGxlNSgpCit7CisgICAgdWludDMyX3QgbWF4QmluZEdy
b3VwcyA9IDMwOworCisgICAgcmV0dXJuIFdHUFVMaW1pdHMgeworICAgICAgICAvKiBtYXhUZXh0
dXJlRGltZW5zaW9uMUQgKi8gICAgMTYzODQsCisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNp
b24yRCAqLyAgICAxNjM4NCwKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjNEICovICAg
IDIwNDgsCisgICAgICAgIC8qIG1heFRleHR1cmVBcnJheUxheWVycyAqLyAgICAyMDQ4LAorICAg
ICAgICAvKiBtYXhCaW5kR3JvdXBzICovICAgIG1heEJpbmRHcm91cHMsCisgICAgICAgIC8qIG1h
eER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0ICovICAgIHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4RHluYW1pY1N0b3JhZ2VC
dWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJf
dD46Om1heCgpLAorICAgICAgICAvKiBtYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSAq
LyAgICBtYXhCaW5kR3JvdXBzICogOTYsCisgICAgICAgIC8qIG1heFNhbXBsZXJzUGVyU2hhZGVy
U3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDE2LAorICAgICAgICAvKiBtYXhTdG9yYWdlQnVm
ZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA5NiwKKyAgICAgICAgLyog
bWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDk2
LAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJp
bmRHcm91cHMgKiA5NiwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplICov
ICAgIDAsIC8vIFRvIGJlIGZpbGxlZCBpbiBieSB0aGUgY2FsbGVyLgorICAgICAgICAvKiBtYXhT
dG9yYWdlQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMCwgLy8gVG8gYmUgZmlsbGVkIGluIGJ5IHRo
ZSBjYWxsZXIuCisgICAgICAgIC8qIG1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8g
ICAgNCwKKyAgICAgICAgLyogbWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICA0
LAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJzICovICAgIDMwLAorICAgICAgICAvKiBtYXhW
ZXJ0ZXhBdHRyaWJ1dGVzICovICAgIDMxLAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJBcnJh
eVN0cmlkZSAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAg
ICAgIC8qIG1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzICovICAgIDEyNCwKKyAgICAgICAg
LyogbWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplICovICAgIDMyICogS0IsCisgICAgICAg
IC8qIG1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cCAqLyAgICAxMDI0LAorICAgICAg
ICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVggKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4
Q29tcHV0ZVdvcmtncm91cFNpemVZICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVX
b3JrZ3JvdXBTaXplWiAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3Vw
c1BlckRpbWVuc2lvbiAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCks
CisgICAgfTsKK30KKworc3RhdGljIFdHUFVMaW1pdHMgYXBwbGU2KCkKK3sKKyAgICB1aW50MzJf
dCBtYXhCaW5kR3JvdXBzID0gMzA7CisKKyAgICByZXR1cm4gV0dQVUxpbWl0cyB7CisgICAgICAg
IC8qIG1heFRleHR1cmVEaW1lbnNpb24xRCAqLyAgICAxNjM4NCwKKyAgICAgICAgLyogbWF4VGV4
dHVyZURpbWVuc2lvbjJEICovICAgIDE2Mzg0LAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5z
aW9uM0QgKi8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4VGV4dHVyZUFycmF5TGF5ZXJzICovICAg
IDIwNDgsCisgICAgICAgIC8qIG1heEJpbmRHcm91cHMgKi8gICAgbWF4QmluZEdyb3VwcywKKyAg
ICAgICAgLyogbWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAg
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLAorICAgICAgICAvKiBtYXhEeW5h
bWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8qIG1heFNhbXBsZWRUZXh0dXJlc1BlclNo
YWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA1MDAwMDAgLyAyLAorICAgICAgICAvKiBt
YXhTYW1wbGVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiAxMDI0LAorICAg
ICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91
cHMgKiA1MDAwMDAgLyAyLAorICAgICAgICAvKiBtYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJT
dGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogNTAwMDAwIC8gMiwKKyAgICAgICAgLyogbWF4VW5p
Zm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogNTAwMDAwIC8g
MiwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplICovICAgIDAsIC8vIFRv
IGJlIGZpbGxlZCBpbiBieSB0aGUgY2FsbGVyLgorICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVy
QmluZGluZ1NpemUgKi8gICAgMCwgLy8gVG8gYmUgZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisg
ICAgICAgIC8qIG1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgNCwKKyAgICAg
ICAgLyogbWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICA0LAorICAgICAgICAv
KiBtYXhWZXJ0ZXhCdWZmZXJzICovICAgIDMwLAorICAgICAgICAvKiBtYXhWZXJ0ZXhBdHRyaWJ1
dGVzICovICAgIDMxLAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSAqLyAg
ICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8qIG1heElu
dGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzICovICAgIDEyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0
ZVdvcmtncm91cFN0b3JhZ2VTaXplICovICAgIDMyICogS0IsCisgICAgICAgIC8qIG1heENvbXB1
dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cCAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21w
dXRlV29ya2dyb3VwU2l6ZVggKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtn
cm91cFNpemVZICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXpl
WiAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lv
biAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgfTsKK30K
Kworc3RhdGljIFdHUFVMaW1pdHMgYXBwbGU3KCkKK3sKKyAgICB1aW50MzJfdCBtYXhCaW5kR3Jv
dXBzID0gMzA7CisKKyAgICByZXR1cm4gV0dQVUxpbWl0cyB7CisgICAgICAgIC8qIG1heFRleHR1
cmVEaW1lbnNpb24xRCAqLyAgICAxNjM4NCwKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lv
bjJEICovICAgIDE2Mzg0LAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uM0QgKi8gICAg
MjA0OCwKKyAgICAgICAgLyogbWF4VGV4dHVyZUFycmF5TGF5ZXJzICovICAgIDIwNDgsCisgICAg
ICAgIC8qIG1heEJpbmRHcm91cHMgKi8gICAgbWF4QmluZEdyb3VwcywKKyAgICAgICAgLyogbWF4
RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50MzJfdD46Om1heCgpLAorICAgICAgICAvKiBtYXhEeW5hbWljU3RvcmFnZUJ1
ZmZlcnNQZXJQaXBlbGluZUxheW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90
Pjo6bWF4KCksCisgICAgICAgIC8qIG1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlICov
ICAgIG1heEJpbmRHcm91cHMgKiA1MDAwMDAgLyAyLAorICAgICAgICAvKiBtYXhTYW1wbGVyc1Bl
clNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiAxMDI0LAorICAgICAgICAvKiBtYXhT
dG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA1MDAwMDAg
LyAyLAorICAgICAgICAvKiBtYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSAqLyAgICBt
YXhCaW5kR3JvdXBzICogNTAwMDAwIC8gMiwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZlcnNQ
ZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogNTAwMDAwIC8gMiwKKyAgICAgICAg
LyogbWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplICovICAgIDAsIC8vIFRvIGJlIGZpbGxlZCBp
biBieSB0aGUgY2FsbGVyLgorICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUg
Ki8gICAgMCwgLy8gVG8gYmUgZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1p
blVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgNCwKKyAgICAgICAgLyogbWluU3Rv
cmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICA0LAorICAgICAgICAvKiBtYXhWZXJ0ZXhC
dWZmZXJzICovICAgIDMwLAorICAgICAgICAvKiBtYXhWZXJ0ZXhBdHRyaWJ1dGVzICovICAgIDMx
LAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSAqLyAgICBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8qIG1heEludGVyU3RhZ2VTaGFk
ZXJDb21wb25lbnRzICovICAgIDEyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFN0
b3JhZ2VTaXplICovICAgIDMyICogS0IsCisgICAgICAgIC8qIG1heENvbXB1dGVJbnZvY2F0aW9u
c1Blcldvcmtncm91cCAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3Vw
U2l6ZVggKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVZICov
ICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiAqLyAgICAxMDI0
LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbiAqLyAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgfTsKK30KKworc3RhdGljIFdH
UFVMaW1pdHMgbWFjMihpZDxNVExEZXZpY2U+IGRldmljZSkKK3sKKyAgICB1aW50MzJfdCBidWZm
ZXJzUGVyQmluZEdyb3VwID0gMDsKKyAgICB1aW50MzJfdCB0ZXh0dXJlc1BlckJpbmRHcm91cCA9
IDA7CisgICAgdWludDMyX3Qgc2FtcGxlcnNQZXJCaW5kR3JvdXAgPSAwOworICAgIHN3aXRjaCAo
W2RldmljZSBhcmd1bWVudEJ1ZmZlcnNTdXBwb3J0XSkgeworICAgIGNhc2UgTVRMQXJndW1lbnRC
dWZmZXJzVGllcjE6CisgICAgICAgIGJ1ZmZlcnNQZXJCaW5kR3JvdXAgPSA2NDsKKyAgICAgICAg
dGV4dHVyZXNQZXJCaW5kR3JvdXAgPSAxMjg7CisgICAgICAgIHNhbXBsZXJzUGVyQmluZEdyb3Vw
ID0gMTY7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTVRMQXJndW1lbnRCdWZmZXJzVGllcjI6
CisgICAgICAgIGJ1ZmZlcnNQZXJCaW5kR3JvdXAgPSA1MDAwMDAgLyAyOworICAgICAgICB0ZXh0
dXJlc1BlckJpbmRHcm91cCA9IDUwMDAwMCAvIDI7CisgICAgICAgIHNhbXBsZXJzUGVyQmluZEdy
b3VwID0gMTAyNDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdWludDMyX3QgbWF4Qmlu
ZEdyb3VwcyA9IDMwOworCisgICAgcmV0dXJuIFdHUFVMaW1pdHMgeworICAgICAgICAvKiBtYXhU
ZXh0dXJlRGltZW5zaW9uMUQgKi8gICAgMTYzODQsCisgICAgICAgIC8qIG1heFRleHR1cmVEaW1l
bnNpb24yRCAqLyAgICAxNjM4NCwKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjNEICov
ICAgIDIwNDgsCisgICAgICAgIC8qIG1heFRleHR1cmVBcnJheUxheWVycyAqLyAgICAyMDQ4LAor
ICAgICAgICAvKiBtYXhCaW5kR3JvdXBzICovICAgIG1heEJpbmRHcm91cHMsCisgICAgICAgIC8q
IG1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0ICovICAgIHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4RHluYW1pY1N0b3Jh
Z2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50
MzJfdD46Om1heCgpLAorICAgICAgICAvKiBtYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFn
ZSAqLyAgICBtYXhCaW5kR3JvdXBzICogdGV4dHVyZXNQZXJCaW5kR3JvdXAsCisgICAgICAgIC8q
IG1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIHNhbXBsZXJz
UGVyQmluZEdyb3VwLAorICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdl
ICovICAgIG1heEJpbmRHcm91cHMgKiBidWZmZXJzUGVyQmluZEdyb3VwLAorICAgICAgICAvKiBt
YXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogdGV4
dHVyZXNQZXJCaW5kR3JvdXAsCisgICAgICAgIC8qIG1heFVuaWZvcm1CdWZmZXJzUGVyU2hhZGVy
U3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIGJ1ZmZlcnNQZXJCaW5kR3JvdXAsCisgICAgICAg
IC8qIG1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAwLCAvLyBUbyBiZSBmaWxsZWQg
aW4gYnkgdGhlIGNhbGxlci4KKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXpl
ICovICAgIDAsIC8vIFRvIGJlIGZpbGxlZCBpbiBieSB0aGUgY2FsbGVyLgorICAgICAgICAvKiBt
aW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDI1NiwKKyAgICAgICAgLyogbWlu
U3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICAyNTYsCisgICAgICAgIC8qIG1heFZl
cnRleEJ1ZmZlcnMgKi8gICAgMzAsCisgICAgICAgIC8qIG1heFZlcnRleEF0dHJpYnV0ZXMgKi8g
ICAgMzEsCisgICAgICAgIC8qIG1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlICovICAgIHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4SW50ZXJTdGFn
ZVNoYWRlckNvbXBvbmVudHMgKi8gICAgMzIsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3Jv
dXBTdG9yYWdlU2l6ZSAqLyAgICAzMiAqIEtCLAorICAgICAgICAvKiBtYXhDb21wdXRlSW52b2Nh
dGlvbnNQZXJXb3JrZ3JvdXAgKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtn
cm91cFNpemVYICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXpl
WSAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVogKi8gICAg
MTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24gKi8gICAg
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLAorICAgIH07Cit9CisKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdHUFVMaW1pdHM+IHJhd0xpbWl0cyhpZDxNVExEZXZpY2U+IGRldmlj
ZSkKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFdHUFVMaW1pdHM+IHJlc3VsdDsKKworICAgIGF1dG8g
bWVyZ2UgPSBbJl0oY29uc3QgV0dQVUxpbWl0cyYgbGltaXRzKSB7CisgICAgICAgIGlmICghcmVz
dWx0KSB7CisgICAgICAgICAgICByZXN1bHQgPSBsaW1pdHM7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
LyNsaW1pdC1jbGFzcy1tYXhpbXVtCisgICAgICAgIGF1dG8gbWVyZ2VNYXhpbXVtID0gW10oYXV0
byBwcmV2aW91cywgYXV0byBuZXh0KSB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgocHJl
dmlvdXMsIG5leHQpOworICAgICAgICB9OworCisgICAgICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIvI2xpbWl0LWNsYXNzLWFsaWdubWVudAorICAgICAgICBhdXRvIG1lcmdl
QWxpZ25tZW50ID0gW10oYXV0byBwcmV2aW91cywgYXV0byBuZXh0KSB7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjptaW4oV1RGOjpyb3VuZFVwVG9Qb3dlck9mVHdvKHByZXZpb3VzKSwgV1RGOjpy
b3VuZFVwVG9Qb3dlck9mVHdvKG5leHQpKTsKKyAgICAgICAgfTsKKworICAgICAgICByZXN1bHQt
Pm1heFRleHR1cmVEaW1lbnNpb24xRCA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heFRleHR1cmVE
aW1lbnNpb24xRCwgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24xRCk7CisgICAgICAgIHJlc3Vs
dC0+bWF4VGV4dHVyZURpbWVuc2lvbjJEID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4VGV4dHVy
ZURpbWVuc2lvbjJELCBsaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJEKTsKKyAgICAgICAgcmVz
dWx0LT5tYXhUZXh0dXJlRGltZW5zaW9uM0QgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhUZXh0
dXJlRGltZW5zaW9uM0QsIGxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QpOworICAgICAgICBy
ZXN1bHQtPm1heFRleHR1cmVBcnJheUxheWVycyA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heFRl
eHR1cmVBcnJheUxheWVycywgbGltaXRzLm1heFRleHR1cmVBcnJheUxheWVycyk7CisgICAgICAg
IHJlc3VsdC0+bWF4QmluZEdyb3VwcyA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heEJpbmRHcm91
cHMsIGxpbWl0cy5tYXhCaW5kR3JvdXBzKTsKKyAgICAgICAgcmVzdWx0LT5tYXhEeW5hbWljVW5p
Zm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heER5
bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LCBsaW1pdHMubWF4RHluYW1pY1Vu
aWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQpOworICAgICAgICByZXN1bHQtPm1heER5bmFt
aWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0ID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+
bWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQsIGxpbWl0cy5tYXhEeW5h
bWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCk7CisgICAgICAgIHJlc3VsdC0+bWF4
U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhT
YW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSwgbGltaXRzLm1heFNhbXBsZWRUZXh0dXJlc1Bl
clNoYWRlclN0YWdlKTsKKyAgICAgICAgcmVzdWx0LT5tYXhTYW1wbGVyc1BlclNoYWRlclN0YWdl
ID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSwgbGltaXRz
Lm1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UpOworICAgICAgICByZXN1bHQtPm1heFN0b3JhZ2VC
dWZmZXJzUGVyU2hhZGVyU3RhZ2UgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhTdG9yYWdlQnVm
ZmVyc1BlclNoYWRlclN0YWdlLCBsaW1pdHMubWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFn
ZSk7CisgICAgICAgIHJlc3VsdC0+bWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgPSBt
ZXJnZU1heGltdW0ocmVzdWx0LT5tYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSwgbGlt
aXRzLm1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlKTsKKyAgICAgICAgcmVzdWx0LT5t
YXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4
VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSwgbGltaXRzLm1heFVuaWZvcm1CdWZmZXJzUGVy
U2hhZGVyU3RhZ2UpOworICAgICAgICByZXN1bHQtPm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6
ZSA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSwgbGlt
aXRzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSk7CisgICAgICAgIHJlc3VsdC0+bWF4U3Rv
cmFnZUJ1ZmZlckJpbmRpbmdTaXplID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4U3RvcmFnZUJ1
ZmZlckJpbmRpbmdTaXplLCBsaW1pdHMubWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplKTsKKyAg
ICAgICAgcmVzdWx0LT5taW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50ID0gbWVyZ2VBbGln
bm1lbnQocmVzdWx0LT5taW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50LCBsaW1pdHMubWlu
VW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCk7CisgICAgICAgIHJlc3VsdC0+bWluU3RvcmFn
ZUJ1ZmZlck9mZnNldEFsaWdubWVudCA9IG1lcmdlQWxpZ25tZW50KHJlc3VsdC0+bWluU3RvcmFn
ZUJ1ZmZlck9mZnNldEFsaWdubWVudCwgbGltaXRzLm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGln
bm1lbnQpOworICAgICAgICByZXN1bHQtPm1heFZlcnRleEJ1ZmZlcnMgPSBtZXJnZU1heGltdW0o
cmVzdWx0LT5tYXhWZXJ0ZXhCdWZmZXJzLCBsaW1pdHMubWF4VmVydGV4QnVmZmVycyk7CisgICAg
ICAgIHJlc3VsdC0+bWF4VmVydGV4QXR0cmlidXRlcyA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1h
eFZlcnRleEF0dHJpYnV0ZXMsIGxpbWl0cy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzKTsKKyAgICAgICAg
cmVzdWx0LT5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSA9IG1lcmdlTWF4aW11bShyZXN1bHQt
Pm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlLCBsaW1pdHMubWF4VmVydGV4QnVmZmVyQXJyYXlT
dHJpZGUpOworICAgICAgICByZXN1bHQtPm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzID0g
bWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMsIGxpbWl0
cy5tYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cyk7CisgICAgICAgIHJlc3VsdC0+bWF4Q29t
cHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4Q29tcHV0
ZVdvcmtncm91cFN0b3JhZ2VTaXplLCBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VT
aXplKTsKKyAgICAgICAgcmVzdWx0LT5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAg
PSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAs
IGxpbWl0cy5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXApOworICAgICAgICByZXN1
bHQtPm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heENv
bXB1dGVXb3JrZ3JvdXBTaXplWCwgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCk7Cisg
ICAgICAgIHJlc3VsdC0+bWF4Q29tcHV0ZVdvcmtncm91cFNpemVZID0gbWVyZ2VNYXhpbXVtKHJl
c3VsdC0+bWF4Q29tcHV0ZVdvcmtncm91cFNpemVZLCBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91
cFNpemVZKTsKKyAgICAgICAgcmVzdWx0LT5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVogPSBtZXJn
ZU1heGltdW0ocmVzdWx0LT5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVosIGxpbWl0cy5tYXhDb21w
dXRlV29ya2dyb3VwU2l6ZVopOworICAgICAgICByZXN1bHQtPm1heENvbXB1dGVXb3JrZ3JvdXBz
UGVyRGltZW5zaW9uID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4Q29tcHV0ZVdvcmtncm91cHNQ
ZXJEaW1lbnNpb24sIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbik7Cisg
ICAgfTsKKworICAgIC8vIFRoZSBmZWF0dXJlIHNldCB0YWJsZXMgZG8gbm90IGxpc3QgbGltaXRz
IGZvciBNVExHUFVGYW1pbHlDb21tb24xLCBNVExHUFVGYW1pbHlDb21tb24yLCBvciBNVExHUFVG
YW1pbHlDb21tb24zLgorICAgIC8vIE1UTEdQVUZhbWlseUFwcGxlMSBhbmQgTVRMR1BVRmFtaWx5
QXBwbGUyIGFyZSBub3Qgc3VwcG9ydGVkLgorICAgIGlmIChbZGV2aWNlIHN1cHBvcnRzRmFtaWx5
Ok1UTEdQVUZhbWlseUFwcGxlM10pCisgICAgICAgIG1lcmdlKGFwcGxlMygpKTsKKyAgICBpZiAo
W2RldmljZSBzdXBwb3J0c0ZhbWlseTpNVExHUFVGYW1pbHlBcHBsZTRdKQorICAgICAgICBtZXJn
ZShhcHBsZTQoKSk7CisgICAgaWYgKFtkZXZpY2Ugc3VwcG9ydHNGYW1pbHk6TVRMR1BVRmFtaWx5
QXBwbGU1XSkKKyAgICAgICAgbWVyZ2UoYXBwbGU1KCkpOworICAgIGlmIChbZGV2aWNlIHN1cHBv
cnRzRmFtaWx5Ok1UTEdQVUZhbWlseUFwcGxlNl0pCisgICAgICAgIG1lcmdlKGFwcGxlNigpKTsK
KyAgICBpZiAoW2RldmljZSBzdXBwb3J0c0ZhbWlseTpNVExHUFVGYW1pbHlBcHBsZTddKQorICAg
ICAgICBtZXJnZShhcHBsZTcoKSk7CisgICAgLy8gTVRMR1BVRmFtaWx5TWFjMSBpcyBub3Qgc3Vw
cG9ydGVkICh5ZXQ/KS4KKyAgICBpZiAoW2RldmljZSBzdXBwb3J0c0ZhbWlseTpNVExHUFVGYW1p
bHlNYWMyXSkKKyAgICAgICAgbWVyZ2UobWFjMihkZXZpY2UpKTsKKworICAgIGlmIChyZXN1bHQp
IHsKKyAgICAgICAgYXV0byBtYXhCdWZmZXJMZW5ndGggPSBkZXZpY2UubWF4QnVmZmVyTGVuZ3Ro
OworICAgICAgICByZXN1bHQtPm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSA9IG1heEJ1ZmZl
ckxlbmd0aDsKKyAgICAgICAgcmVzdWx0LT5tYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUgPSBt
YXhCdWZmZXJMZW5ndGg7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGlj
IGJvb2wgY2hlY2tMaW1pdHMoY29uc3QgV0dQVUxpbWl0cyYgbGltaXRzKQoreworICAgIC8vIGh0
dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2xpbWl0LWRlZmF1bHQKKyAgICBhdXRvIGRl
ZmF1bHRMaW1pdHMgPSBXR1BVTGltaXRzIHsKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lv
bjFEICovICAgIDgxOTIsCisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24yRCAqLyAgICA4
MTkyLAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uM0QgKi8gICAgMjA0OCwKKyAgICAg
ICAgLyogbWF4VGV4dHVyZUFycmF5TGF5ZXJzICovICAgIDI1NiwKKyAgICAgICAgLyogbWF4Qmlu
ZEdyb3VwcyAqLyAgICA0LAorICAgICAgICAvKiBtYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQ
aXBlbGluZUxheW91dCAqLyAgICA4LAorICAgICAgICAvKiBtYXhEeW5hbWljU3RvcmFnZUJ1ZmZl
cnNQZXJQaXBlbGluZUxheW91dCAqLyAgICA0LAorICAgICAgICAvKiBtYXhTYW1wbGVkVGV4dHVy
ZXNQZXJTaGFkZXJTdGFnZSAqLyAgICAxNiwKKyAgICAgICAgLyogbWF4U2FtcGxlcnNQZXJTaGFk
ZXJTdGFnZSAqLyAgICAxNiwKKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJT
dGFnZSAqLyAgICA4LAorICAgICAgICAvKiBtYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFn
ZSAqLyAgICA0LAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlICov
ICAgIDEyLAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUgKi8gICAgNjU1
MzYsCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAxMzQyMTc3
MjgsCisgICAgICAgIC8qIG1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgMjU2
LAorICAgICAgICAvKiBtaW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDI1NiwK
KyAgICAgICAgLyogbWF4VmVydGV4QnVmZmVycyAqLyAgICA4LAorICAgICAgICAvKiBtYXhWZXJ0
ZXhBdHRyaWJ1dGVzICovICAgIDE2LAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJBcnJheVN0
cmlkZSAqLyAgICAyMDQ4LAorICAgICAgICAvKiBtYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50
cyAqLyAgICAzMiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplICov
ICAgIDE2MzUyLAorICAgICAgICAvKiBtYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAg
Ki8gICAgMjU2LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVggKi8gICAgMjU2
LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkgKi8gICAgMjU2LAorICAgICAg
ICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVogKi8gICAgNjQsCisgICAgICAgIC8qIG1heENv
bXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uICovICAgIDY1NTM1LAorICAgIH07CisKKyAgICBy
ZXR1cm4gIWFueUxpbWl0SXNCZXR0ZXJUaGFuKGRlZmF1bHRMaW1pdHMsIGxpbWl0cyk7Cit9CisK
K3N0ZDo6b3B0aW9uYWw8V0dQVUxpbWl0cz4gbGltaXRzKGlkPE1UTERldmljZT4gZGV2aWNlKQor
eworICAgIGF1dG8gcmVzdWx0ID0gcmF3TGltaXRzKGRldmljZSk7CisKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghY2hlY2tMaW1pdHMo
KnJlc3VsdCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitib29sIGlzVmFsaWQoY29uc3QgV0dQVUxpbWl0cyYgbGltaXRzKQoreworICAg
IHJldHVybiBpc1Bvd2VyT2ZUd28obGltaXRzLm1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1l
bnQpICYmIGlzUG93ZXJPZlR3byhsaW1pdHMubWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVu
dCk7Cit9CisKK2Jvb2wgYW55TGltaXRJc0JldHRlclRoYW4oY29uc3QgV0dQVUxpbWl0cyYgdGFy
Z2V0LCBjb25zdCBXR1BVTGltaXRzJiByZWZlcmVuY2UpCit7CisgICAgaWYgKHRhcmdldC5tYXhU
ZXh0dXJlRGltZW5zaW9uMUQgPiByZWZlcmVuY2UubWF4VGV4dHVyZURpbWVuc2lvbjFEKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFRleHR1cmVEaW1lbnNpb24yRCA+
IHJlZmVyZW5jZS5tYXhUZXh0dXJlRGltZW5zaW9uMkQpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmICh0YXJnZXQubWF4VGV4dHVyZURpbWVuc2lvbjNEID4gcmVmZXJlbmNlLm1heFRleHR1
cmVEaW1lbnNpb24zRCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhU
ZXh0dXJlQXJyYXlMYXllcnMgPiByZWZlcmVuY2UubWF4VGV4dHVyZUFycmF5TGF5ZXJzKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heEJpbmRHcm91cHMgPiByZWZlcmVu
Y2UubWF4QmluZEdyb3VwcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5t
YXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCA+IHJlZmVyZW5jZS5tYXhE
eW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKHRhcmdldC5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxh
eW91dCA+IHJlZmVyZW5jZS5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91
dCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhTYW1wbGVkVGV4dHVy
ZXNQZXJTaGFkZXJTdGFnZSA+IHJlZmVyZW5jZS5tYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJT
dGFnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhTYW1wbGVyc1Bl
clNoYWRlclN0YWdlID4gcmVmZXJlbmNlLm1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFk
ZXJTdGFnZSA+IHJlZmVyZW5jZS5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFN0b3JhZ2VUZXh0dXJlc1BlclNo
YWRlclN0YWdlID4gcmVmZXJlbmNlLm1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFVuaWZvcm1CdWZmZXJzUGVy
U2hhZGVyU3RhZ2UgPiByZWZlcmVuY2UubWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhVbmlmb3JtQnVmZmVyQmlu
ZGluZ1NpemUgPiByZWZlcmVuY2UubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6
ZSA+IHJlZmVyZW5jZS5tYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmICh0YXJnZXQubWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCA8
IHJlZmVyZW5jZS5taW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50KQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQg
PCByZWZlcmVuY2UubWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhWZXJ0ZXhCdWZmZXJzID4gcmVmZXJlbmNlLm1h
eFZlcnRleEJ1ZmZlcnMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4
VmVydGV4QXR0cmlidXRlcyA+IHJlZmVyZW5jZS5tYXhWZXJ0ZXhBdHRyaWJ1dGVzKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRl
ID4gcmVmZXJlbmNlLm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzID4gcmVm
ZXJlbmNlLm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAodGFyZ2V0Lm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSA+IHJlZmVy
ZW5jZS5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmICh0YXJnZXQubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwID4gcmVm
ZXJlbmNlLm1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVggPiByZWZlcmVu
Y2UubWF4Q29tcHV0ZVdvcmtncm91cFNpemVYKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAodGFyZ2V0Lm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSA+IHJlZmVyZW5jZS5tYXhDb21wdXRl
V29ya2dyb3VwU2l6ZVkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4
Q29tcHV0ZVdvcmtncm91cFNpemVaID4gcmVmZXJlbmNlLm1heENvbXB1dGVXb3JrZ3JvdXBTaXpl
WikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhDb21wdXRlV29ya2dy
b3Vwc1BlckRpbWVuc2lvbiA+IHJlZmVyZW5jZS5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVu
c2lvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5z
dGFuY2UubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQppbmRleCA4ZWMwNjI2
NmIzNDAuLmE2NWM5MjY2MWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5z
dGFuY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UubW0KQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2ltcG9ydCAiQVBJQ29udmVyc2lvbnMuaCIKICNpbXBvcnQgIkFkYXB0ZXIu
aCIKKyNpbXBvcnQgIkhhcmR3YXJlTGltaXRzLmgiCiAjaW1wb3J0ICJTdXJmYWNlLmgiCiAjaW1w
b3J0IDxjc3RyaW5nPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CkBAIC0xODMsOCArMTg0LDE5
IEBAIHZvaWQgSW5zdGFuY2U6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdHUFVSZXF1ZXN0QWRhcHRl
ck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBzY2hlZHVsZVdvcmsoW3N0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBkZXZpY2UgPSBzb3J0
ZWREZXZpY2VzWzBdLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewot
ICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXNfU3VjY2VzcywgQWRhcHRl
cjo6Y3JlYXRlKGRldmljZSwgc3Ryb25nVGhpcyksIHsgfSk7CisgICAgYXV0byBkZXZpY2UgPSBz
b3J0ZWREZXZpY2VzWzBdOworCisgICAgYXV0byBkZXZpY2VMaW1pdHMgPSBsaW1pdHMoZGV2aWNl
KTsKKworICAgIGlmICghZGV2aWNlTGltaXRzKSB7CisgICAgICAgIHNjaGVkdWxlV29yayhbc3Ry
b25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXNf
RXJyb3IsIEFkYXB0ZXI6OmNyZWF0ZUludmFsaWQoc3Ryb25nVGhpcyksICJEZXZpY2UgZG9lcyBu
b3Qgc3VwcG9ydCBXZWJHUFUiX3MpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHNjaGVkdWxlV29yayhbc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRldmlj
ZSA9IHNvcnRlZERldmljZXNbMF0sIGxpbWl0cyA9IFdURk1vdmUoKmRldmljZUxpbWl0cyksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNr
KFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19TdWNjZXNzLCBBZGFwdGVyOjpjcmVhdGUoZGV2aWNl
LCBzdHJvbmdUaGlzLCBXVEZNb3ZlKGxpbWl0cykpLCB7IH0pOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvVGV4dHVyZS5tbQppbmRleCA4N2ZlMjNjYmYwYWQuLjc1NjJiZWU4NDFkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9UZXh0dXJlLm1tCkBAIC0xMjQ2LDcgKzEyNDYsOCBAQCBib29sIERldmljZTo6dmFs
aWRhdGVDcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgY29ucwogCiAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmRpbWVuc2lvbikgewogICAgIGNhc2Ug
V0dQVVRleHR1cmVEaW1lbnNpb25fMUQ6Ci0gICAgICAgIC8vIEZJWE1FOiAiZGVzY3JpcHRvci5z
aXplLndpZHRoIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoaXMubGltaXRzLm1heFRl
eHR1cmVEaW1lbnNpb24xRC4iCisgICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUud2lkdGggPiBt
X2xpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMUQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgIT0gMSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTEyNjEsMTggKzEyNjIsMjQgQEAgYm9vbCBEZXZpY2U6OnZhbGlk
YXRlQ3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGNvbnMKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8yRDoKLSAgICAgICAgLy8gRklYTUU6ICJkZXNjcmlwdG9y
LnNpemUud2lkdGggbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhpcy5saW1pdHMubWF4
VGV4dHVyZURpbWVuc2lvbjJELiIKKyAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCA+
IG1fbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgICAgICAvLyBGSVhNRTogImRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgbXVzdCBiZSBs
ZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhpcy5saW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJELiIK
KyAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPiBtX2xpbWl0cy5tYXhUZXh0dXJl
RGltZW5zaW9uMkQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gRklY
TUU6ICJkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzIG11c3QgYmUgbGVzcyB0aGFu
IG9yIGVxdWFsIHRvIHRoaXMubGltaXRzLm1heFRleHR1cmVBcnJheUxheWVycy4iCisgICAgICAg
IGlmIChkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzID4gbV9saW1pdHMubWF4VGV4
dHVyZUFycmF5TGF5ZXJzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzNEOgotICAgICAgICAvLyBGSVhNRTog
ImRlc2NyaXB0b3Iuc2l6ZS53aWR0aCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGlz
LmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QuIgorICAgICAgICBpZiAoZGVzY3JpcHRvci5z
aXplLndpZHRoID4gbV9saW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNEKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vIEZJWE1FOiAiZGVzY3JpcHRvci5zaXplLmhlaWdo
dCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGlzLmxpbWl0cy5tYXhUZXh0dXJlRGlt
ZW5zaW9uM0QuIgorICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmhlaWdodCA+IG1fbGltaXRz
Lm1heFRleHR1cmVEaW1lbnNpb24zRCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICAvLyBGSVhNRTogImRlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMgbXVzdCBi
ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhpcy5saW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNE
LiIKKyAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMgPiBtX2xp
bWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgIT0gMSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTIyNjgsOCArMjI3NSw2IEBAIFJlZjxUZXh0dXJlVmlldz4gVGV4dHVy
ZTo6Y3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBpbnB1dERlc2Ny
CiAKICAgICBpZiAoIWRlc2NyaXB0b3IgfHwgIXZhbGlkYXRlQ3JlYXRlVmlldygqZGVzY3JpcHRv
cikpIHsKICAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRh
dGlvbiBmYWlsdXJlLiJfcyk7Ci0KLSAgICAgICAgLy8gRklYTUU6ICJSZXR1cm4gYSBuZXcgaW52
YWxpZCBHUFVUZXh0dXJlVmlldy4iCiAgICAgICAgIHJldHVybiBUZXh0dXJlVmlldzo6Y3JlYXRl
SW52YWxpZChtX2RldmljZSk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457720</attachid>
            <date>2022-04-15 13:52:30 -0700</date>
            <delta_ts>2022-04-15 13:57:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239377-20220415135229.patch</filename>
            <type>text/plain</type>
            <size>55284</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQwN2ZjOWNjMGRmMjNmNTMxNTFiZWQ0
YzkxNjViYWE3NjFkZmJhZmQuLjhlOGU3ZTJmMTZlZjBkYmZhYjU4ODQ0OGJmNWUyNmU2NmI4NDA1
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDQtMTUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBsZW1lbnQgaGFyZHdh
cmUgbGltaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzkzNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgbWlzc2luZyAjaW5jbHVkZS4KKworICAgICAgICAqIHd0Zi9QYWdlQmxvY2suaDoKKwog
MjAyMi0wNC0xNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS11bV1BFXSBSZW1vdmUgZXhjbHVzaXZlIGJ1aWxkIGd1YXJkcyBhcm91bmQgR1BVIHBy
b2Nlc3MgcHJlZmVyZW5jZXMsIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGUyOGYzM2ZmNWI5
ZjFjZWJiZWNkNGMxNGIyOWM5M2NhN2VmOTcyNGEuLmYzMTg5YTU5MDgyNDZlYzQ4ZDU1MzkxYzll
MzE0YmI4ZmRhMWZhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIy
LTA0LTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkdQVV0gSW1wbGVtZW50IGhhcmR3YXJlIGxpbWl0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5Mzc3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9y
ICJsaW1pdHMiIGFzIGRlc2NyaWJlZCBpbiBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
LyNsaW1pdHMuCisgICAgICAgIFZhcmlvdXMgb3BlcmF0aW9ucyBxdWVyeSB0aGUgbGltaXRzIG9m
IHRoZSBkZXZpY2UgdG8ga25vdyB3aGV0aGVyIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGlzCisg
ICAgICAgIHdpdGhpbiByYW5nZS4gRS5nLiBpZiBjb250ZW50IHRyaWVzIHRvIG1ha2UgYSB0ZXh0
dXJlIHRvbyBiaWcsIHRoaXMgaXMgaG93IHdlIGNhdGNoIGl0IGFoZWFkIG9mCisgICAgICAgIHRp
bWUuCisKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlcklt
cGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJHUFU6OkFkYXB0ZXJJbXBsOjpyZXF1ZXN0RGV2aWNl
KToKKwogMjAyMi0wNC0xNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBbV0syXSBNYW5hZ2VkIHBhc3RlYm9hcmQgc2hvdWxkIGZ1bmN0aW9u
IGZvciBhbGwgbWFuYWdlZCBkb21haW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IGQyMzczZmUyZjc0YTQzN2JiZGMx
YTNiNGE2NWZkOGJkMGJjNmNjZGQuLmI2ZjNjYmY3ODZlMTJmMmFlYTY1ZDZjMjdlMWIzZWJkMmZi
ZjA1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjItMDQtMTUgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBsZW1l
bnQgaGFyZHdhcmUgbGltaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzkzNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBnYXRoZXIgdGhlIHZhbHVlcyBvZiB0aGUgbGltaXRzIGZyb20gdGhlIE1l
dGFsIEZlYXR1cmUgU2V0IFRhYmxlcworICAgICAgICBhdCBodHRwczovL2RldmVsb3Blci5hcHBs
ZS5jb20vbWV0YWwvTWV0YWwtRmVhdHVyZS1TZXQtVGFibGVzLnBkZi4KKworICAgICAgICBUaGVy
ZSBhcmUgbm8gbGltaXQgdGFibGVzIGZvciB0aGUgQ29tbW9uIGZhbWlsaWVzLCBzbyB3ZSB1c2Ug
QXBwbGUKKyAgICAgICAgYW5kIE1hYyBmYW1pbGllcyBpbnN0ZWFkLgorCisgICAgICAgIFRlc3Q6
IHdlYmdwdS9hcGkvdmFsaWRhdGlvbi9jcmVhdGVUZXh0dXJlCisKKyAgICAgICAgKiBXZWJHUFUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJHUFUvQWRhcHRlci5oOgor
ICAgICAgICAoV2ViR1BVOjpBZGFwdGVyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9BZGFw
dGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpBZGFwdGVyOjpBZGFwdGVyKToKKyAgICAgICAgKFdl
YkdQVTo6QWRhcHRlcjo6cmVxdWVzdERldmljZSk6CisgICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6
OnJlcXVlc3RJbnZhbGlkRGV2aWNlKToKKyAgICAgICAgKHdncHVBZGFwdGVyUmVxdWVzdEludmFs
aWREZXZpY2VXaXRoQmxvY2spOgorICAgICAgICAoV2ViR1BVOjpkZXZpY2VNZWV0c1JlcXVpcmVk
TGltaXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLmg6CisgICAgICAgICog
V2ViR1BVL0RldmljZS5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViR1BVOjpEZXZpY2U6OkRldmljZSk6CisgICAgICAgICogV2ViR1BVL0hhcmR3YXJl
TGltaXRzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaC4KKyAg
ICAgICAgKiBXZWJHUFUvSGFyZHdhcmVMaW1pdHMubW06IEFkZGVkLgorICAgICAgICAoV2ViR1BV
OjphcHBsZTMpOgorICAgICAgICAoV2ViR1BVOjphcHBsZTQpOgorICAgICAgICAoV2ViR1BVOjph
cHBsZTUpOgorICAgICAgICAoV2ViR1BVOjphcHBsZTYpOgorICAgICAgICAoV2ViR1BVOjphcHBs
ZTcpOgorICAgICAgICAoV2ViR1BVOjptYWMyKToKKyAgICAgICAgKFdlYkdQVTo6cmF3TGltaXRz
KToKKyAgICAgICAgKFdlYkdQVTo6Y2hlY2tMaW1pdHMpOgorICAgICAgICAoV2ViR1BVOjpsaW1p
dHMpOgorICAgICAgICAoV2ViR1BVOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYkdQVTo6YW55TGlt
aXRJc0JldHRlclRoYW4pOgorICAgICAgICAqIFdlYkdQVS9JbnN0YW5jZS5tbToKKyAgICAgICAg
KFdlYkdQVTo6SW5zdGFuY2U6OnJlcXVlc3RBZGFwdGVyKToKKyAgICAgICAgKiBXZWJHUFUvVGV4
dHVyZS5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjp2YWxpZGF0ZUNyZWF0ZVRleHR1cmUp
OgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAgKiBXZWJH
UFUvV2ViR1BVRXh0Lmg6CisKIDIwMjItMDQtMTMgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBw
bGUuY29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHB1YmxpYyB3YXRjaE9TIHdvcmtzcGFjZSBi
dWlsZCBieSB1cGRhdGluZyBzY2hlbWUgYW5kIGJ1aWxkIHNldHRpbmdzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QYWdlQmxvY2suaCBiL1NvdXJjZS9XVEYvd3RmL1BhZ2VCbG9jay5oCmlu
ZGV4IDliYjdmZmZjYzFhZTA1MjhiNWU5MzM0ZDVkYzRkNjJjYTI3YjQ5ZmQuLjgyOWQ1MTE1NTkx
ODMxNDYwZjhmMzJiNGJlZmY1MzZjMTY0YjUwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BhZ2VCbG9jay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BhZ2VCbG9jay5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFw
dGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCA4M2NmZjdhNjQzMDJiMjU5ZDM0ZTA3MmM0Zjhi
MzczY2QxMmUxYjBhLi4wZmZmYjcxZmU2NmY1YWVlNTQzOGNlYzM1ZmUwM2I2MDAwYWQyYzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUFkYXB0ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcApAQCAtMTQ5LDQzICsxNDksOTQgQEAg
dm9pZCBBZGFwdGVySW1wbDo6cmVxdWVzdERldmljZShjb25zdCBEZXZpY2VEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBDb21wbGV0aW9uSGEKICAgICAgICAgcmV0dXJuIG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZmVhdHVyZU5hbWUpOwogICAgIH0pOwogCi0gICAg
V0dQVVJlcXVpcmVkTGltaXRzIGxpbWl0cyB7Ci0gICAgICAgIG51bGxwdHIsIHsKLSAgICAgICAg
ICAgIDAsIC8vIG1heFRleHR1cmVEaW1lbnNpb24xRAotICAgICAgICAgICAgMCwgLy8gbWF4VGV4
dHVyZURpbWVuc2lvbjJECi0gICAgICAgICAgICAwLCAvLyBtYXhUZXh0dXJlRGltZW5zaW9uM0QK
LSAgICAgICAgICAgIDAsIC8vIG1heFRleHR1cmVBcnJheUxheWVycwotICAgICAgICAgICAgMCwg
Ly8gbWF4QmluZEdyb3VwcwotICAgICAgICAgICAgMCwgLy8gbWF4RHluYW1pY1VuaWZvcm1CdWZm
ZXJzUGVyUGlwZWxpbmVMYXlvdXQKLSAgICAgICAgICAgIDAsIC8vIG1heER5bmFtaWNTdG9yYWdl
QnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0Ci0gICAgICAgICAgICAwLCAvLyBtYXhTYW1wbGVkVGV4
dHVyZXNQZXJTaGFkZXJTdGFnZQotICAgICAgICAgICAgMCwgLy8gbWF4U2FtcGxlcnNQZXJTaGFk
ZXJTdGFnZQotICAgICAgICAgICAgMCwgLy8gbWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFn
ZQotICAgICAgICAgICAgMCwgLy8gbWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UKLSAg
ICAgICAgICAgIDAsIC8vIG1heFVuaWZvcm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UKLSAgICAgICAg
ICAgIDAsIC8vIG1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZQotICAgICAgICAgICAgMCwgLy8g
bWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplCi0gICAgICAgICAgICAwLCAvLyBtaW5Vbmlmb3Jt
QnVmZmVyT2Zmc2V0QWxpZ25tZW50Ci0gICAgICAgICAgICAwLCAvLyBtaW5TdG9yYWdlQnVmZmVy
T2Zmc2V0QWxpZ25tZW50Ci0gICAgICAgICAgICAwLCAvLyBtYXhWZXJ0ZXhCdWZmZXJzCi0gICAg
ICAgICAgICAwLCAvLyBtYXhWZXJ0ZXhBdHRyaWJ1dGVzCi0gICAgICAgICAgICAwLCAvLyBtYXhW
ZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZQotICAgICAgICAgICAgMCwgLy8gbWF4SW50ZXJTdGFnZVNo
YWRlckNvbXBvbmVudHMKLSAgICAgICAgICAgIDAsIC8vIG1heENvbXB1dGVXb3JrZ3JvdXBTdG9y
YWdlU2l6ZQotICAgICAgICAgICAgMCwgLy8gbWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dy
b3VwCi0gICAgICAgICAgICAwLCAvLyBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgKLSAgICAgICAg
ICAgIDAsIC8vIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWQotICAgICAgICAgICAgMCwgLy8gbWF4
Q29tcHV0ZVdvcmtncm91cFNpemVaCi0gICAgICAgICAgICAwLCAvLyBtYXhDb21wdXRlV29ya2dy
b3Vwc1BlckRpbWVuc2lvbgotICAgICAgICB9LAorICAgIGF1dG8gbGltaXRzID0gV0dQVUxpbWl0
cyB7CisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24xRCAqLyAgICA4MTkyLAorICAgICAg
ICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uMkQgKi8gICAgODE5MiwKKyAgICAgICAgLyogbWF4VGV4
dHVyZURpbWVuc2lvbjNEICovICAgIDIwNDgsCisgICAgICAgIC8qIG1heFRleHR1cmVBcnJheUxh
eWVycyAqLyAgICAyNTYsCisgICAgICAgIC8qIG1heEJpbmRHcm91cHMgKi8gICAgNCwKKyAgICAg
ICAgLyogbWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgOCwK
KyAgICAgICAgLyogbWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8g
ICAgNCwKKyAgICAgICAgLyogbWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAg
MTYsCisgICAgICAgIC8qIG1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgMTYsCisgICAg
ICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgOCwKKyAgICAgICAg
LyogbWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgNCwKKyAgICAgICAgLyog
bWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICAxMiwKKyAgICAgICAgLyogbWF4
VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplICovICAgIDY1NTM2LAorICAgICAgICAvKiBtYXhTdG9y
YWdlQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMTM0MjE3NzI4LAorICAgICAgICAvKiBtaW5Vbmlm
b3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDI1NiwKKyAgICAgICAgLyogbWluU3RvcmFn
ZUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICAyNTYsCisgICAgICAgIC8qIG1heFZlcnRleEJ1
ZmZlcnMgKi8gICAgOCwKKyAgICAgICAgLyogbWF4VmVydGV4QXR0cmlidXRlcyAqLyAgICAxNiwK
KyAgICAgICAgLyogbWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUgKi8gICAgMjA0OCwKKyAgICAg
ICAgLyogbWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMgKi8gICAgMzIsCisgICAgICAgIC8q
IG1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSAqLyAgICAxNjM1MiwKKyAgICAgICAgLyog
bWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwICovICAgIDI1NiwKKyAgICAgICAgLyog
bWF4Q29tcHV0ZVdvcmtncm91cFNpemVYICovICAgIDI1NiwKKyAgICAgICAgLyogbWF4Q29tcHV0
ZVdvcmtncm91cFNpemVZICovICAgIDI1NiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91
cFNpemVaICovICAgIDY0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVu
c2lvbiAqLyAgICA2NTUzNSwKICAgICB9OwogCisgICAgYXV0byByZXF1ZXN0SW52YWxpZERldmlj
ZSA9IFt0aGlzLCAmY2FsbGJhY2tdKCkgeworICAgICAgICB3Z3B1QWRhcHRlclJlcXVlc3RJbnZh
bGlkRGV2aWNlV2l0aEJsb2NrKG1fYmFja2luZywgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY29udmVydFRvQmFja2luZ0NvbnRleHQgPSBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmNvcHlSZWYoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQ
VURldmljZSBkZXZpY2UpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2soRGV2aWNlSW1w
bDo6Y3JlYXRlKGRldmljZSwgUmVmIHsgcHJvdGVjdGVkVGhpcy0+ZmVhdHVyZXMoKSB9LCBSZWYg
eyBwcm90ZWN0ZWRUaGlzLT5saW1pdHMoKSB9LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOwor
ICAgICAgICB9KS5nZXQoKSk7CisgICAgfTsKKworICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6
IGRlc2NyaXB0b3IucmVxdWlyZWRMaW1pdHMpIHsKKyNkZWZpbmUgU0VUX1ZBTFVFXzMyKExJTUlU
KSBcCisgICAgZWxzZSBpZiAocGFpci5rZXkgPT0gI0xJTUlUKSB7IFwKKyAgICAgICAgQ2hlY2tl
ZFVpbnQzMiBuYXJyb3dlZCA9IHBhaXIudmFsdWU7IFwKKyAgICAgICAgaWYgKG5hcnJvd2VkLmhh
c092ZXJmbG93ZWQoKSkgeyBcCisgICAgICAgICAgICByZXF1ZXN0SW52YWxpZERldmljZSgpOyBc
CisgICAgICAgICAgICByZXR1cm47IFwKKyAgICAgICAgfSBcCisgICAgICAgIGxpbWl0cy5MSU1J
VCA9IG5hcnJvd2VkLnZhbHVlKCk7IFwKKyAgICB9CisjZGVmaW5lIFNFVF9WQUxVRV82NChMSU1J
VCkgXAorICAgIGVsc2UgaWYgKHBhaXIua2V5ID09ICNMSU1JVCkgXAorICAgICAgICBsaW1pdHMu
TElNSVQgPSBwYWlyLnZhbHVlOworCisgICAgICAgIGlmIChmYWxzZSkgeyB9CisgICAgICAgIFNF
VF9WQUxVRV8zMihtYXhUZXh0dXJlRGltZW5zaW9uMUQpCisgICAgICAgIFNFVF9WQUxVRV8zMiht
YXhUZXh0dXJlRGltZW5zaW9uMkQpCisgICAgICAgIFNFVF9WQUxVRV8zMihtYXhUZXh0dXJlRGlt
ZW5zaW9uM0QpCisgICAgICAgIFNFVF9WQUxVRV8zMihtYXhUZXh0dXJlQXJyYXlMYXllcnMpCisg
ICAgICAgIFNFVF9WQUxVRV8zMihtYXhCaW5kR3JvdXBzKQorICAgICAgICBTRVRfVkFMVUVfMzIo
bWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQpCisgICAgICAgIFNFVF9W
QUxVRV8zMihtYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCkKKyAgICAg
ICAgU0VUX1ZBTFVFXzMyKG1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlKQorICAgICAg
ICBTRVRfVkFMVUVfMzIobWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSkKKyAgICAgICAgU0VUX1ZB
TFVFXzMyKG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UpCisgICAgICAgIFNFVF9WQUxV
RV8zMihtYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSkKKyAgICAgICAgU0VUX1ZBTFVF
XzMyKG1heFVuaWZvcm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UpCisgICAgICAgIFNFVF9WQUxVRV82
NChtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUpCisgICAgICAgIFNFVF9WQUxVRV82NChtYXhT
dG9yYWdlQnVmZmVyQmluZGluZ1NpemUpCisgICAgICAgIFNFVF9WQUxVRV8zMihtaW5Vbmlmb3Jt
QnVmZmVyT2Zmc2V0QWxpZ25tZW50KQorICAgICAgICBTRVRfVkFMVUVfMzIobWluU3RvcmFnZUJ1
ZmZlck9mZnNldEFsaWdubWVudCkKKyAgICAgICAgU0VUX1ZBTFVFXzMyKG1heFZlcnRleEJ1ZmZl
cnMpCisgICAgICAgIFNFVF9WQUxVRV8zMihtYXhWZXJ0ZXhBdHRyaWJ1dGVzKQorICAgICAgICBT
RVRfVkFMVUVfMzIobWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUpCisgICAgICAgIFNFVF9WQUxV
RV8zMihtYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cykKKyAgICAgICAgU0VUX1ZBTFVFXzMy
KG1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSkKKyAgICAgICAgU0VUX1ZBTFVFXzMyKG1h
eENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cCkKKyAgICAgICAgU0VUX1ZBTFVFXzMyKG1h
eENvbXB1dGVXb3JrZ3JvdXBTaXplWCkKKyAgICAgICAgU0VUX1ZBTFVFXzMyKG1heENvbXB1dGVX
b3JrZ3JvdXBTaXplWSkKKyAgICAgICAgU0VUX1ZBTFVFXzMyKG1heENvbXB1dGVXb3JrZ3JvdXBT
aXplWikKKyAgICAgICAgU0VUX1ZBTFVFXzMyKG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5z
aW9uKQorCisjdW5kZWYgU0VUX1ZBTFVFCisgICAgfQorCisgICAgV0dQVVJlcXVpcmVkTGltaXRz
IHJlcXVpcmVkTGltaXRzIHsgbnVsbHB0ciwgV1RGTW92ZShsaW1pdHMpIH07CisKICAgICBXR1BV
RGV2aWNlRGVzY3JpcHRvciBiYWNraW5nRGVzY3JpcHRvciB7CiAgICAgICAgIG51bGxwdHIsCiAg
ICAgICAgIGxhYmVsLmRhdGEoKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZlYXR1
cmVzLnNpemUoKSksCiAgICAgICAgIGZlYXR1cmVzLmRhdGEoKSwKLSAgICAgICAgJmxpbWl0cywK
KyAgICAgICAgJnJlcXVpcmVkTGltaXRzLAogICAgIH07CiAKICAgICB3Z3B1QWRhcHRlclJlcXVl
c3REZXZpY2VXaXRoQmxvY2sobV9iYWNraW5nLCAmYmFja2luZ0Rlc2NyaXB0b3IsIG1ha2VCbG9j
a1B0cihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jb3B5UmVmKCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBXR1BVRGV2aWNlIGRldmlj
ZSwgY29uc3QgY2hhciopIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjIyZmJjZjg3YmUzNDA5N2M3Y2UyYWVkZGYwZGY0
MzgxY2MzMDA4Yi4uYmVlMTA0MDU1ODk0NWMxZmE5ZWJhY2ExNTJjYjcwMDc1MGQ3MDhjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MCw2ICsxMCw4IEBACiAJCTFDMDIzRDNGMjc0NDkwNzAwMDFEQjczNCAvKiBXR1NMTGV4ZXJUZXN0
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDIz
RDNFMjc0NDkwNzAwMDFEQjczNCAvKiBXR1NMTGV4ZXJUZXN0cy5tbSAqLzsgfTsKIAkJMUMwMjNE
NDAyNzQ0OTA3MDAwMURCNzM0IC8qIGxpYndnc2wuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRUJEN0YyMjcxNkIyQ0MwMEE1MjU0RCAvKiBsaWJ3
Z3NsLmEgKi87IH07CiAJCTFDMDIzRDRCMjc0NDk1QjkwMDFEQjczNCAvKiBKYXZhU2NyaXB0Q29y
ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzAyM0Q0QTI3NDQ5NUI5MDAxREI3MzQgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
ICovOyB9OworCQkxQzBGNDFFRTI4MDk0MDY1MDAwNTg4NkQgLyogSGFyZHdhcmVMaW1pdHMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzBGNDFFQzI4
MDk0MDY1MDAwNTg4NkQgLyogSGFyZHdhcmVMaW1pdHMubW0gKi87IH07CisJCTFDMEY0MUVGMjgw
OTQwNjUwMDA1ODg2RCAvKiBIYXJkd2FyZUxpbWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwRjQxRUQyODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3
YXJlTGltaXRzLmggKi87IH07CiAJCTFDMkNFREVFMjcxRThBNzMwMEVEQzE2RiAvKiBNZXRhbC5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzJDRURFRDI3MUU4QTczMDBFREMxNkYgLyogTWV0YWwuZnJhbWV3b3JrICovOyB9OwogCQkx
QzMzNzU1RjI3RkEyM0I4MDAyRjE2NDQgLyogSXNWYWxpZFRvVXNlV2l0aC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMzMzc1NUQyN0ZBMjNCODAwMkYx
NjQ0IC8qIElzVmFsaWRUb1VzZVdpdGguaCAqLzsgfTsKIAkJMUM1MzE5QzAyN0JEQzZDQzAwQ0Qx
MjdFIC8qIG1haW4uc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzUzMTlCRjI3QkRDNkNDMDBDRDEyN0UgLyogbWFpbi5zd2lmdCAqLzsgfTsKQEAg
LTEzMSw2ICsxMzMsOCBAQAogCQkxQzAyM0QzRTI3NDQ5MDcwMDAxREI3MzQgLyogV0dTTExleGVy
VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXR1NMTGV4ZXJUZXN0cy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMjNENDcyNzQ0OTE2RDAwMURCNzM0IC8qIFdHU0xV
bml0VGVzdHMueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV0dTTFVuaXRUZXN0cy54Y2NvbmZpZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMjNENEEyNzQ0OTVCOTAwMURCNzM0IC8q
IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gSmF2YVNjcmlwdENv
cmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxQzBG
NDFFQzI4MDk0MDY1MDAwNTg4NkQgLyogSGFyZHdhcmVMaW1pdHMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBIYXJkd2FyZUxpbWl0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUMwRjQxRUQyODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3YXJlTGltaXRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhhcmR3YXJlTGltaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMkNF
REVEMjcxRThBNzMwMEVEQzE2RiAvKiBNZXRhbC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IE1ldGFsLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvTWV0YWwu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJMUMzMzc1NUQyN0ZBMjNCODAw
MkYxNjQ0IC8qIElzVmFsaWRUb1VzZVdpdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXNWYWxpZFRvVXNl
V2l0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzUzMTlCRDI3QkRDNkNCMDBD
RDEyN0UgLyogQ29tbWFuZExpbmVQbGF5Z3JvdW5kICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBDb21tYW5kTGluZVBsYXlncm91bmQ7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0zNDQsNiArMzQ4LDggQEAKIAkJCQkxQzVBQ0E5
QjI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLmggKi8sCiAJCQkJMUM1QUNBQTMyNzNBNDI2RDAw
OTVGOEQ1IC8qIERldmljZS5tbSAqLywKIAkJCQkxQ0VCRDgwQjI3MTZDMzc5MDBBNTI1NEQgLyog
RXhwb3J0TWFjcm9zLmggKi8sCisJCQkJMUMwRjQxRUQyODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3
YXJlTGltaXRzLmggKi8sCisJCQkJMUMwRjQxRUMyODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3YXJl
TGltaXRzLm1tICovLAogCQkJCTFDNUFDQUEwMjczQTQyNkQwMDk1RjhENSAvKiBJbnN0YW5jZS5o
ICovLAogCQkJCTFDNUFDQTkyMjczQTQxQzIwMDk1RjhENSAvKiBJbnN0YW5jZS5tbSAqLywKIAkJ
CQkxQzMzNzU1RDI3RkEyM0I4MDAyRjE2NDQgLyogSXNWYWxpZFRvVXNlV2l0aC5oICovLApAQCAt
NDgxLDYgKzQ4Nyw3IEBACiAJCQkJMUM1ODMwMTgyN0UxNjgyMzAwOUI0MEYwIC8qIEFQSUNvbnZl
cnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzVBQ0FENzI3M0E0RDcwMDA5NUY4RDUgLyog
QmluZEdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzU4MkZGQTI3RTA0MTMxMDA5QjQwRjAg
LyogQ29tbWFuZHNNaXhpbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMwRjQxRUYyODA5NDA2NTAw
MDU4ODZEIC8qIEhhcmR3YXJlTGltaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzMzNzU1RjI3
RkEyM0I4MDAyRjE2NDQgLyogSXNWYWxpZFRvVXNlV2l0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUNFQkQ3RTcyNzE2QUZCQTAwQTUyNTREIC8qIFdlYkdQVS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUM1QUNBRDMyNzNBNEM4NjAwOTVGOEQ1IC8qIFdlYkdQVUV4dC5oIGluIEhlYWRlcnMgKi8sCkBA
IC03MzEsNiArNzM4LDcgQEAKIAkJCQkxQzVBQ0FDNjI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0
ZVBhc3NFbmNvZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1QUNBQzAyNzNBNDI2RDAwOTVG
OEQ1IC8qIENvbXB1dGVQaXBlbGluZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUMxMjcz
QTQyNkQwMDk1RjhENSAvKiBEZXZpY2UubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQzBGNDFFRTI4
MDk0MDY1MDAwNTg4NkQgLyogSGFyZHdhcmVMaW1pdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
QzVBQ0E5NDI3M0E0MUMyMDA5NUY4RDUgLyogSW5zdGFuY2UubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQzVBQ0FFNTI3M0E1NUREMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQzVBQ0FCRDI3M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaAppbmRleCA5ODYzZTY4ZTU5YWUwN2I2YjkyNGNj
MmUxYmY1NjBhYzAwZDZhMjRiLi5jOGVmYTNkNjIzYzhmMzI3MmEwNTI1NjM4MDA0NWExMzU5OGE2
YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmgKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIEluc3Rh
bmNlOwogY2xhc3MgQWRhcHRlciA6IHB1YmxpYyBXR1BVQWRhcHRlckltcGwsIHB1YmxpYyBSZWZD
b3VudGVkPEFkYXB0ZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEFkYXB0ZXI+IGNyZWF0ZShpZDxNVExEZXZpY2U+IGRldmljZSwgSW5z
dGFuY2UmIGluc3RhbmNlKQorICAgIHN0YXRpYyBSZWY8QWRhcHRlcj4gY3JlYXRlKGlkPE1UTERl
dmljZT4gZGV2aWNlLCBJbnN0YW5jZSYgaW5zdGFuY2UsIFdHUFVMaW1pdHMmJiBsaW1pdHMpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBZGFwdGVyKGRldmljZSwgaW5zdGFu
Y2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWRhcHRlcihkZXZpY2UsIGluc3Rh
bmNlLCBXVEZNb3ZlKGxpbWl0cykpKTsKICAgICB9CiAgICAgc3RhdGljIFJlZjxBZGFwdGVyPiBj
cmVhdGVJbnZhbGlkKEluc3RhbmNlJiBpbnN0YW5jZSkKICAgICB7CkBAIC01OCw2ICs1OCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGdldFByb3BlcnRpZXMoV0dQVUFkYXB0ZXJQcm9wZXJ0aWVzJik7
CiAgICAgYm9vbCBoYXNGZWF0dXJlKFdHUFVGZWF0dXJlTmFtZSk7CiAgICAgdm9pZCByZXF1ZXN0
RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXR1BVUmVxdWVzdERldmljZVN0YXR1cywgUmVmPERldmljZT4mJiwgU3RyaW5nJiYpPiYmIGNh
bGxiYWNrKTsKKyAgICB2b2lkIHJlcXVlc3RJbnZhbGlkRGV2aWNlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmPERldmljZT4mJik+JiYpOwogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXZpY2U7IH0KICAgICB2b2lkIG1ha2VJbnZhbGlkKCkgeyBtX2RldmljZSA9IG5p
bDsgfQpAQCAtNjYsMTEgKzY3LDEzIEBAIHB1YmxpYzoKIAogCiBwcml2YXRlOgotICAgIEFkYXB0
ZXIoaWQ8TVRMRGV2aWNlPiwgSW5zdGFuY2UmKTsKKyAgICBBZGFwdGVyKGlkPE1UTERldmljZT4s
IEluc3RhbmNlJiwgV0dQVUxpbWl0cyYmKTsKICAgICBBZGFwdGVyKEluc3RhbmNlJik7CiAKICAg
ICBpZDxNVExEZXZpY2U+IG1fZGV2aWNlIHsgbmlsIH07CiAgICAgY29uc3QgUmVmPEluc3RhbmNl
PiBtX2luc3RhbmNlOworCisgICAgV0dQVUxpbWl0cyBtX2xpbWl0cyB7IH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0
ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tCmluZGV4IDdlNDNlMTkzMDdk
NDIwMzZlNTliZjhmYzg3M2VhZGRhNTMxZWFmNGEuLjRkMjFmNTQ0MTM1MDA0Zjg4MmQxZjE1MTRh
MWFkOTQ2ZjZjMjZlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIu
bW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQpAQCAtMjgsMTQgKzI4LDE2
IEBACiAKICNpbXBvcnQgIkFQSUNvbnZlcnNpb25zLmgiCiAjaW1wb3J0ICJEZXZpY2UuaCIKKyNp
bXBvcnQgIkhhcmR3YXJlTGltaXRzLmgiCiAjaW1wb3J0ICJJbnN0YW5jZS5oIgogI2ltcG9ydCA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotQWRhcHRlcjo6QWRh
cHRlcihpZDxNVExEZXZpY2U+IGRldmljZSwgSW5zdGFuY2UmIGluc3RhbmNlKQorQWRhcHRlcjo6
QWRhcHRlcihpZDxNVExEZXZpY2U+IGRldmljZSwgSW5zdGFuY2UmIGluc3RhbmNlLCBXR1BVTGlt
aXRzJiYgbGltaXRzKQogICAgIDogbV9kZXZpY2UoZGV2aWNlKQogICAgICwgbV9pbnN0YW5jZShp
bnN0YW5jZSkKKyAgICAsIG1fbGltaXRzKFdURk1vdmUobGltaXRzKSkKIHsKIH0KIApAQCAtNzks
MzggKzgxLDYgQEAgYm9vbCBBZGFwdGVyOjpoYXNGZWF0dXJlKFdHUFVGZWF0dXJlTmFtZSkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGRldmljZU1lZXRzUmVxdWlyZWRMaW1p
dHMoaWQ8TVRMRGV2aWNlPiwgY29uc3QgV0dQVVJlcXVpcmVkTGltaXRzJiByZXF1aXJlZExpbWl0
cykKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgcmV0dXJuICFyZXF1aXJl
ZExpbWl0cy5uZXh0SW5DaGFpbgotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24xRAotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24yRAotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24zRAotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1h
eFRleHR1cmVBcnJheUxheWVycwotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1h
eEJpbmRHcm91cHMKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhEeW5hbWlj
VW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dAotICAgICAgICAmJiAhcmVxdWlyZWRMaW1p
dHMubGltaXRzLm1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0Ci0gICAg
ICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVy
U3RhZ2UKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhTYW1wbGVyc1BlclNo
YWRlclN0YWdlCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4U3RvcmFnZUJ1
ZmZlcnNQZXJTaGFkZXJTdGFnZQotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1h
eFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0
cy5saW1pdHMubWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZQotICAgICAgICAmJiAhcmVx
dWlyZWRMaW1pdHMubGltaXRzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZQotICAgICAgICAm
JiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZQotICAg
ICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGln
bm1lbnQKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5taW5TdG9yYWdlQnVmZmVy
T2Zmc2V0QWxpZ25tZW50Ci0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4VmVy
dGV4QnVmZmVycwotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFZlcnRleEF0
dHJpYnV0ZXMKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhWZXJ0ZXhCdWZm
ZXJBcnJheVN0cmlkZQotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heEludGVy
U3RhZ2VTaGFkZXJDb21wb25lbnRzCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMu
bWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0
cy5saW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwCi0gICAgICAgICYmICFy
ZXF1aXJlZExpbWl0cy5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVYCi0gICAgICAgICYm
ICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZCi0gICAgICAg
ICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaCi0gICAg
ICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1l
bnNpb247Ci19Ci0KIHZvaWQgQWRhcHRlcjo6cmVxdWVzdERldmljZShjb25zdCBXR1BVRGV2aWNl
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXR1BVUmVxdWVz
dERldmljZVN0YXR1cywgUmVmPERldmljZT4mJiwgU3RyaW5nJiYpPiYmIGNhbGxiYWNrKQogewog
ICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNoYWluKSB7CkBAIC0xMjcsMTYgKzk3LDQzIEBAIHZv
aWQgQWRhcHRlcjo6cmVxdWVzdERldmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgQ29tcGxldGlvbkhhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
ZGVzY3JpcHRvci5yZXF1aXJlZExpbWl0cyAmJiAhZGV2aWNlTWVldHNSZXF1aXJlZExpbWl0cyht
X2RldmljZSwgKmRlc2NyaXB0b3IucmVxdWlyZWRMaW1pdHMpKSB7Ci0gICAgICAgIGluc3RhbmNl
KCkuc2NoZWR1bGVXb3JrKFtzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdHUFVS
ZXF1ZXN0RGV2aWNlU3RhdHVzX0Vycm9yLCBEZXZpY2U6OmNyZWF0ZUludmFsaWQoc3Ryb25nVGhp
cyksICJEZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCByZXF1ZXN0ZWQgbGltaXRzIl9zKTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIGxpbWl0cyA9IG1fbGltaXRzOworCisg
ICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWRMaW1pdHMpIHsKKyAgICAgICAgaWYgKGRlc2NyaXB0
b3IucmVxdWlyZWRMaW1pdHMtPm5leHRJbkNoYWluKSB7CisgICAgICAgICAgICBpbnN0YW5jZSgp
LnNjaGVkdWxlV29yayhbc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soV0dQ
VVJlcXVlc3REZXZpY2VTdGF0dXNfRXJyb3IsIERldmljZTo6Y3JlYXRlSW52YWxpZChzdHJvbmdU
aGlzKSwgIlVua25vd24gZGVzY3JpcHRvciB0eXBlIl9zKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFXZWJHUFU6OmlzVmFs
aWQoZGVzY3JpcHRvci5yZXF1aXJlZExpbWl0cy0+bGltaXRzKSkgeworICAgICAgICAgICAgaW5z
dGFuY2UoKS5zY2hlZHVsZVdvcmsoW3N0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxi
YWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX0Vycm9yLCBEZXZpY2U6OmNyZWF0ZUludmFsaWQo
c3Ryb25nVGhpcyksICJEZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCByZXF1ZXN0ZWQgbGltaXRzIl9z
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGFueUxpbWl0SXNCZXR0ZXJUaGFuKGRlc2NyaXB0b3IucmVxdWlyZWRMaW1pdHMt
PmxpbWl0cywgbV9saW1pdHMpKSB7CisgICAgICAgICAgICBpbnN0YW5jZSgpLnNjaGVkdWxlV29y
ayhbc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3REZXZp
Y2VTdGF0dXNfRXJyb3IsIERldmljZTo6Y3JlYXRlSW52YWxpZChzdHJvbmdUaGlzKSwgIkRldmlj
ZSBkb2VzIG5vdCBzdXBwb3J0IHJlcXVlc3RlZCBsaW1pdHMiX3MpOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsaW1pdHMgPSBkZXNj
cmlwdG9yLnJlcXVpcmVkTGltaXRzLT5saW1pdHM7CiAgICAgfQogCiAgICAgYXV0byBsYWJlbCA9
IGZyb21BUEkoZGVzY3JpcHRvci5sYWJlbCk7Ci0gICAgaW5zdGFuY2UoKS5zY2hlZHVsZVdvcmso
W3N0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBsYWJlbCA9IFdURk1vdmUobGFiZWwpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICBjYWxsYmFjayhX
R1BVUmVxdWVzdERldmljZVN0YXR1c19TdWNjZXNzLCBEZXZpY2U6OmNyZWF0ZShzdHJvbmdUaGlz
LT5tX2RldmljZSwgV1RGTW92ZShsYWJlbCksIHN0cm9uZ1RoaXMpLCB7IH0pOworICAgIGluc3Rh
bmNlKCkuc2NoZWR1bGVXb3JrKFtzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfSwgbGFiZWwgPSBX
VEZNb3ZlKGxhYmVsKSwgbGltaXRzID0gV1RGTW92ZShsaW1pdHMpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERl
dmljZVN0YXR1c19TdWNjZXNzLCBEZXZpY2U6OmNyZWF0ZShzdHJvbmdUaGlzLT5tX2RldmljZSwg
V1RGTW92ZShsYWJlbCksIFdURk1vdmUobGltaXRzKSwgc3Ryb25nVGhpcyksIHsgfSk7CisgICAg
fSk7Cit9CisKK3ZvaWQgQWRhcHRlcjo6cmVxdWVzdEludmFsaWREZXZpY2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWY8RGV2aWNlPiYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpbnN0YW5jZSgp
LnNjaGVkdWxlV29yayhbc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKERldmljZTo6Y3Jl
YXRlSW52YWxpZChzdHJvbmdUaGlzKSk7CiAgICAgfSk7CiB9CiAKQEAgLTE4MiwzICsxNzksMTAg
QEAgdm9pZCB3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2VXaXRoQmxvY2soV0dQVUFkYXB0ZXIgYWRh
cHRlciwgV0dQVURldmljZURlc2NyaXB0b3IKICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBXZWJH
UFU6OnJlbGVhc2VUb0FQSShXVEZNb3ZlKGRldmljZSkpLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkp
OwogICAgIH0pOwogfQorCit2b2lkIHdncHVBZGFwdGVyUmVxdWVzdEludmFsaWREZXZpY2VXaXRo
QmxvY2soV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVVJlcXVlc3RJbnZhbGlkRGV2aWNlQmxvY2tD
YWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBXZWJHUFU6OmZyb21BUEkoYWRhcHRlcikucmVxdWVz
dEludmFsaWREZXZpY2UoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlZjxXZWJHUFU6
OkRldmljZT4mJiBkZXZpY2UpIHsKKyAgICAgICAgY2FsbGJhY2soV2ViR1BVOjpyZWxlYXNlVG9B
UEkoV1RGTW92ZShkZXZpY2UpKSk7CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9EZXZpY2UuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCmluZGV4
IDM2MGYzOTIzYzgzZDEzYTY3OTM2OTBmZWFiZmMwNjdkZGMxZWQ5NDAuLjhjMTBhMTdhY2QwZDQ1
NmY5ZDJiMGI3MWMyNmJmNTQyNTlhYTc4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0RldmljZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCkBAIC02MSw3
ICs2MSw3IEBAIGNsYXNzIFRleHR1cmU7CiBjbGFzcyBEZXZpY2UgOiBwdWJsaWMgV0dQVURldmlj
ZUltcGwsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZXZpY2U+LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8RGV2aWNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxEZXZpY2U+IGNyZWF0ZShpZDxNVExEZXZpY2U+LCBTdHJpbmcmJiBk
ZXZpY2VMYWJlbCwgQWRhcHRlciYpOworICAgIHN0YXRpYyBSZWY8RGV2aWNlPiBjcmVhdGUoaWQ8
TVRMRGV2aWNlPiwgU3RyaW5nJiYgZGV2aWNlTGFiZWwsIFdHUFVMaW1pdHMmJiwgQWRhcHRlciYp
OwogICAgIHN0YXRpYyBSZWY8RGV2aWNlPiBjcmVhdGVJbnZhbGlkKEFkYXB0ZXImIGFkYXB0ZXIp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXZpY2UoYWRhcHRlcikpOwpA
QCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1VuaWZpZWRNZW1vcnkoKSBj
b25zdCB7IHJldHVybiBtX2RldmljZS5oYXNVbmlmaWVkTWVtb3J5OyB9CiAKIHByaXZhdGU6Ci0g
ICAgRGV2aWNlKGlkPE1UTERldmljZT4sIGlkPE1UTENvbW1hbmRRdWV1ZT4gZGVmYXVsdFF1ZXVl
LCBBZGFwdGVyJik7CisgICAgRGV2aWNlKGlkPE1UTERldmljZT4sIGlkPE1UTENvbW1hbmRRdWV1
ZT4gZGVmYXVsdFF1ZXVlLCBXR1BVTGltaXRzJiYsIEFkYXB0ZXImKTsKICAgICBEZXZpY2UoQWRh
cHRlciYpOwogCiAgICAgc3RydWN0IEVycm9yU2NvcGU7CkBAIC0xMzgsNiArMTM4LDggQEAgcHJp
dmF0ZToKICAgICBib29sIG1faXNMb3N0IHsgZmFsc2UgfTsKICAgICBpZDxOU09iamVjdD4gbV9k
ZXZpY2VPYnNlcnZlciB7IG5pbCB9OwogCisgICAgV0dQVUxpbWl0cyBtX2xpbWl0cyB7IH07CisK
ICAgICBjb25zdCBSZWY8QWRhcHRlcj4gbV9hZGFwdGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNl
Lm1tCmluZGV4IDM1MTZlZGM4YTQ2Y2JkZDhiMTZlZDBlY2RiOTJmMjk1NWI0ZjliMzguLmYwOGJh
YWFkOWVjNmJiYTNiOGIxMzk2OWUwMjQ1NDdhZTcyODc0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0RldmljZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2Uu
bW0KQEAgLTQ3LDcgKzQ3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLVJlZjxEZXZpY2U+
IERldmljZTo6Y3JlYXRlKGlkPE1UTERldmljZT4gZGV2aWNlLCBTdHJpbmcmJiBkZXZpY2VMYWJl
bCwgQWRhcHRlciYgYWRhcHRlcikKK1JlZjxEZXZpY2U+IERldmljZTo6Y3JlYXRlKGlkPE1UTERl
dmljZT4gZGV2aWNlLCBTdHJpbmcmJiBkZXZpY2VMYWJlbCwgV0dQVUxpbWl0cyYmIGxpbWl0cywg
QWRhcHRlciYgYWRhcHRlcikKIHsKICAgICBpZDxNVExDb21tYW5kUXVldWU+IGNvbW1hbmRRdWV1
ZSA9IFtkZXZpY2UgbmV3Q29tbWFuZFF1ZXVlXTsKICAgICBpZiAoIWNvbW1hbmRRdWV1ZSkKQEAg
LTU5LDEyICs1OSwxMyBAQCBSZWY8RGV2aWNlPiBEZXZpY2U6OmNyZWF0ZShpZDxNVExEZXZpY2U+
IGRldmljZSwgU3RyaW5nJiYgZGV2aWNlTGFiZWwsIEFkYXB0ZXImCiAgICAgaWYgKCFkZXZpY2VM
YWJlbC5pc0VtcHR5KCkpCiAgICAgICAgIGNvbW1hbmRRdWV1ZS5sYWJlbCA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiRGVmYXVsdCBxdWV1ZSBmb3IgZGV2aWNlICVzIiwgZGV2aWNlTGFi
ZWwudXRmOCgpLmRhdGEoKV07CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXZpY2UoZGV2
aWNlLCBjb21tYW5kUXVldWUsIGFkYXB0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
ZXZpY2UoZGV2aWNlLCBjb21tYW5kUXVldWUsIFdURk1vdmUobGltaXRzKSwgYWRhcHRlcikpOwog
fQogCi1EZXZpY2U6OkRldmljZShpZDxNVExEZXZpY2U+IGRldmljZSwgaWQ8TVRMQ29tbWFuZFF1
ZXVlPiBkZWZhdWx0UXVldWUsIEFkYXB0ZXImIGFkYXB0ZXIpCitEZXZpY2U6OkRldmljZShpZDxN
VExEZXZpY2U+IGRldmljZSwgaWQ8TVRMQ29tbWFuZFF1ZXVlPiBkZWZhdWx0UXVldWUsIFdHUFVM
aW1pdHMmJiBsaW1pdHMsIEFkYXB0ZXImIGFkYXB0ZXIpCiAgICAgOiBtX2RldmljZShkZXZpY2Up
CiAgICAgLCBtX2RlZmF1bHRRdWV1ZShRdWV1ZTo6Y3JlYXRlKGRlZmF1bHRRdWV1ZSwgKnRoaXMp
KQorICAgICwgbV9saW1pdHMoV1RGTW92ZShsaW1pdHMpKQogICAgICwgbV9hZGFwdGVyKGFkYXB0
ZXIpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvSGFyZHdhcmVMaW1pdHMuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0hhcmR3YXJlTGltaXRz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGQyNTNlNzhmNjQ3OGRiYWZkMDQ5ZWJjYTQ3OGYzYWQ0ZGRmNTNlYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0hhcmR3YXJlTGltaXRzLmgK
QEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxvcHRpb25hbD4KKworbmFtZXNw
YWNlIFdlYkdQVSB7CisKK3N0ZDo6b3B0aW9uYWw8V0dQVUxpbWl0cz4gbGltaXRzKGlkPE1UTERl
dmljZT4pOworYm9vbCBpc1ZhbGlkKGNvbnN0IFdHUFVMaW1pdHMmKTsKK2Jvb2wgYW55TGltaXRJ
c0JldHRlclRoYW4oY29uc3QgV0dQVUxpbWl0cyYgdGFyZ2V0LCBjb25zdCBXR1BVTGltaXRzJiBy
ZWZlcmVuY2UpOworCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0hhcmR3YXJlTGltaXRzLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSGFy
ZHdhcmVMaW1pdHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmZlMTcyOWNkYTJjYmRhZWJiZGE0ZDIzNDAxM2M3
NTJkOGVjYzgzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0hhcmR3
YXJlTGltaXRzLm1tCkBAIC0wLDAgKzEsNDQ5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJIYXJkd2Fy
ZUxpbWl0cy5oIgorCisjaW1wb3J0IDxhbGdvcml0aG0+CisjaW1wb3J0IDxsaW1pdHM+CisjaW1w
b3J0IDx3dGYvTWF0aEV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1BhZ2VCbG9jay5oPgorI2ltcG9y
dCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworLy8gaHR0cHM6
Ly9kZXZlbG9wZXIuYXBwbGUuY29tL21ldGFsL01ldGFsLUZlYXR1cmUtU2V0LVRhYmxlcy5wZGYK
KworLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2lzc3Vlcy8yNzQ5
IHdlIG5lZWQgbW9yZSBsaW1pdHMuCisKK3N0YXRpYyBXR1BVTGltaXRzIGFwcGxlMygpCit7Cisg
ICAgdWludDMyX3QgbWF4QmluZEdyb3VwcyA9IDMwOworCisgICAgcmV0dXJuIFdHUFVMaW1pdHMg
eworICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uMUQgKi8gICAgMTYzODQsCisgICAgICAg
IC8qIG1heFRleHR1cmVEaW1lbnNpb24yRCAqLyAgICAxNjM4NCwKKyAgICAgICAgLyogbWF4VGV4
dHVyZURpbWVuc2lvbjNEICovICAgIDIwNDgsCisgICAgICAgIC8qIG1heFRleHR1cmVBcnJheUxh
eWVycyAqLyAgICAyMDQ4LAorICAgICAgICAvKiBtYXhCaW5kR3JvdXBzICovICAgIG1heEJpbmRH
cm91cHMsCisgICAgICAgIC8qIG1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5
b3V0ICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAg
LyogbWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLAorICAgICAgICAvKiBtYXhTYW1wbGVkVGV4
dHVyZXNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogMzEsCisgICAgICAgIC8q
IG1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDE2LAorICAg
ICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91
cHMgKiAzMSwKKyAgICAgICAgLyogbWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8g
ICAgbWF4QmluZEdyb3VwcyAqIDMxLAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyc1BlclNo
YWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiAzMSwKKyAgICAgICAgLyogbWF4VW5pZm9y
bUJ1ZmZlckJpbmRpbmdTaXplICovICAgIDAsIC8vIFRvIGJlIGZpbGxlZCBpbiBieSB0aGUgY2Fs
bGVyLgorICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMCwgLy8g
VG8gYmUgZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1pblVuaWZvcm1CdWZm
ZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgNCwKKyAgICAgICAgLyogbWluU3RvcmFnZUJ1ZmZlck9m
ZnNldEFsaWdubWVudCAqLyAgICA0LAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJzICovICAg
IDMwLAorICAgICAgICAvKiBtYXhWZXJ0ZXhBdHRyaWJ1dGVzICovICAgIDMxLAorICAgICAgICAv
KiBtYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8qIG1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRz
ICovICAgIDYwLAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUgKi8g
ICAgMTYgKiBLQiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3Vw
ICovICAgIDUxMiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVYICovICAgIDUx
MiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVZICovICAgIDUxMiwKKyAgICAg
ICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVaICovICAgIDUxMiwKKyAgICAgICAgLyogbWF4
Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24gKi8gICAgc3RkOjpudW1lcmljX2xpbWl0czx1
aW50MzJfdD46Om1heCgpLAorICAgIH07Cit9CisKK3N0YXRpYyBXR1BVTGltaXRzIGFwcGxlNCgp
Cit7CisgICAgdWludDMyX3QgbWF4QmluZEdyb3VwcyA9IDMwOworCisgICAgcmV0dXJuIFdHUFVM
aW1pdHMgeworICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uMUQgKi8gICAgMTYzODQsCisg
ICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24yRCAqLyAgICAxNjM4NCwKKyAgICAgICAgLyog
bWF4VGV4dHVyZURpbWVuc2lvbjNEICovICAgIDIwNDgsCisgICAgICAgIC8qIG1heFRleHR1cmVB
cnJheUxheWVycyAqLyAgICAyMDQ4LAorICAgICAgICAvKiBtYXhCaW5kR3JvdXBzICovICAgIG1h
eEJpbmRHcm91cHMsCisgICAgICAgIC8qIG1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVs
aW5lTGF5b3V0ICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAg
ICAgICAgLyogbWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAg
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLAorICAgICAgICAvKiBtYXhTYW1w
bGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogOTYsCisgICAg
ICAgIC8qIG1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDE2
LAorICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJp
bmRHcm91cHMgKiA5NiwKKyAgICAgICAgLyogbWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3Rh
Z2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDk2LAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVy
c1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA5NiwKKyAgICAgICAgLyogbWF4
VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplICovICAgIDAsIC8vIFRvIGJlIGZpbGxlZCBpbiBieSB0
aGUgY2FsbGVyLgorICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUgKi8gICAg
MCwgLy8gVG8gYmUgZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1pblVuaWZv
cm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgNCwKKyAgICAgICAgLyogbWluU3RvcmFnZUJ1
ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICA0LAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJz
ICovICAgIDMwLAorICAgICAgICAvKiBtYXhWZXJ0ZXhBdHRyaWJ1dGVzICovICAgIDMxLAorICAg
ICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSAqLyAgICBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8qIG1heEludGVyU3RhZ2VTaGFkZXJDb21w
b25lbnRzICovICAgIDEyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VT
aXplICovICAgIDMyICogS0IsCisgICAgICAgIC8qIG1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldv
cmtncm91cCAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgg
Ki8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVZICovICAgIDEw
MjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiAqLyAgICAxMDI0LAorICAg
ICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbiAqLyAgICBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgfTsKK30KKworc3RhdGljIFdHUFVMaW1p
dHMgYXBwbGU1KCkKK3sKKyAgICB1aW50MzJfdCBtYXhCaW5kR3JvdXBzID0gMzA7CisKKyAgICBy
ZXR1cm4gV0dQVUxpbWl0cyB7CisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24xRCAqLyAg
ICAxNjM4NCwKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjJEICovICAgIDE2Mzg0LAor
ICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uM0QgKi8gICAgMjA0OCwKKyAgICAgICAgLyog
bWF4VGV4dHVyZUFycmF5TGF5ZXJzICovICAgIDIwNDgsCisgICAgICAgIC8qIG1heEJpbmRHcm91
cHMgKi8gICAgbWF4QmluZEdyb3VwcywKKyAgICAgICAgLyogbWF4RHluYW1pY1VuaWZvcm1CdWZm
ZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpLAorICAgICAgICAvKiBtYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxh
eW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAg
IC8qIG1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMg
KiA5NiwKKyAgICAgICAgLyogbWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5k
R3JvdXBzICogMTYsCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2Ug
Ki8gICAgbWF4QmluZEdyb3VwcyAqIDk2LAorICAgICAgICAvKiBtYXhTdG9yYWdlVGV4dHVyZXNQ
ZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogOTYsCisgICAgICAgIC8qIG1heFVu
aWZvcm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDk2LAorICAg
ICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMCwgLy8gVG8gYmUgZmls
bGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJCaW5kaW5n
U2l6ZSAqLyAgICAwLCAvLyBUbyBiZSBmaWxsZWQgaW4gYnkgdGhlIGNhbGxlci4KKyAgICAgICAg
LyogbWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICA0LAorICAgICAgICAvKiBt
aW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDQsCisgICAgICAgIC8qIG1heFZl
cnRleEJ1ZmZlcnMgKi8gICAgMzAsCisgICAgICAgIC8qIG1heFZlcnRleEF0dHJpYnV0ZXMgKi8g
ICAgMzEsCisgICAgICAgIC8qIG1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlICovICAgIHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4SW50ZXJTdGFn
ZVNoYWRlckNvbXBvbmVudHMgKi8gICAgMTI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dy
b3VwU3RvcmFnZVNpemUgKi8gICAgMzIgKiBLQiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZUludm9j
YXRpb25zUGVyV29ya2dyb3VwICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3Jr
Z3JvdXBTaXplWCAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6
ZVkgKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVaICovICAg
IDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uICovICAg
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICB9OworfQorCisjaWYg
IVBMQVRGT1JNKFdBVENIT1MpCitzdGF0aWMgV0dQVUxpbWl0cyBhcHBsZTYoKQoreworICAgIHVp
bnQzMl90IG1heEJpbmRHcm91cHMgPSAzMDsKKworICAgIHJldHVybiBXR1BVTGltaXRzIHsKKyAg
ICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjFEICovICAgIDE2Mzg0LAorICAgICAgICAvKiBt
YXhUZXh0dXJlRGltZW5zaW9uMkQgKi8gICAgMTYzODQsCisgICAgICAgIC8qIG1heFRleHR1cmVE
aW1lbnNpb24zRCAqLyAgICAyMDQ4LAorICAgICAgICAvKiBtYXhUZXh0dXJlQXJyYXlMYXllcnMg
Ki8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4QmluZEdyb3VwcyAqLyAgICBtYXhCaW5kR3JvdXBz
LAorICAgICAgICAvKiBtYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCAq
LyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8qIG1h
eER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0ICovICAgIHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4U2FtcGxlZFRleHR1cmVz
UGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDUwMDAwMCAvIDIsCisgICAgICAg
IC8qIG1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDEwMjQs
CisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4Qmlu
ZEdyb3VwcyAqIDUwMDAwMCAvIDIsCisgICAgICAgIC8qIG1heFN0b3JhZ2VUZXh0dXJlc1BlclNo
YWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA1MDAwMDAgLyAyLAorICAgICAgICAvKiBt
YXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA1MDAw
MDAgLyAyLAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMCwg
Ly8gVG8gYmUgZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1heFN0b3JhZ2VC
dWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAwLCAvLyBUbyBiZSBmaWxsZWQgaW4gYnkgdGhlIGNhbGxl
ci4KKyAgICAgICAgLyogbWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICA0LAor
ICAgICAgICAvKiBtaW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDQsCisgICAg
ICAgIC8qIG1heFZlcnRleEJ1ZmZlcnMgKi8gICAgMzAsCisgICAgICAgIC8qIG1heFZlcnRleEF0
dHJpYnV0ZXMgKi8gICAgMzEsCisgICAgICAgIC8qIG1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRl
ICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyog
bWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMgKi8gICAgMTI0LAorICAgICAgICAvKiBtYXhD
b21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUgKi8gICAgMzIgKiBLQiwKKyAgICAgICAgLyogbWF4
Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwICovICAgIDEwMjQsCisgICAgICAgIC8qIG1h
eENvbXB1dGVXb3JrZ3JvdXBTaXplWCAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRl
V29ya2dyb3VwU2l6ZVkgKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91
cFNpemVaICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGlt
ZW5zaW9uICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICB9
OworfQorCitzdGF0aWMgV0dQVUxpbWl0cyBhcHBsZTcoKQoreworICAgIHVpbnQzMl90IG1heEJp
bmRHcm91cHMgPSAzMDsKKworICAgIHJldHVybiBXR1BVTGltaXRzIHsKKyAgICAgICAgLyogbWF4
VGV4dHVyZURpbWVuc2lvbjFEICovICAgIDE2Mzg0LAorICAgICAgICAvKiBtYXhUZXh0dXJlRGlt
ZW5zaW9uMkQgKi8gICAgMTYzODQsCisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24zRCAq
LyAgICAyMDQ4LAorICAgICAgICAvKiBtYXhUZXh0dXJlQXJyYXlMYXllcnMgKi8gICAgMjA0OCwK
KyAgICAgICAgLyogbWF4QmluZEdyb3VwcyAqLyAgICBtYXhCaW5kR3JvdXBzLAorICAgICAgICAv
KiBtYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCAqLyAgICBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8qIG1heER5bmFtaWNTdG9y
YWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0ICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3Rh
Z2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDUwMDAwMCAvIDIsCisgICAgICAgIC8qIG1heFNhbXBs
ZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDEwMjQsCisgICAgICAgIC8q
IG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDUw
MDAwMCAvIDIsCisgICAgICAgIC8qIG1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlICov
ICAgIG1heEJpbmRHcm91cHMgKiA1MDAwMDAgLyAyLAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVm
ZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA1MDAwMDAgLyAyLAorICAg
ICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMCwgLy8gVG8gYmUgZmls
bGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJCaW5kaW5n
U2l6ZSAqLyAgICAwLCAvLyBUbyBiZSBmaWxsZWQgaW4gYnkgdGhlIGNhbGxlci4KKyAgICAgICAg
LyogbWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICA0LAorICAgICAgICAvKiBt
aW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDQsCisgICAgICAgIC8qIG1heFZl
cnRleEJ1ZmZlcnMgKi8gICAgMzAsCisgICAgICAgIC8qIG1heFZlcnRleEF0dHJpYnV0ZXMgKi8g
ICAgMzEsCisgICAgICAgIC8qIG1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlICovICAgIHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4SW50ZXJTdGFn
ZVNoYWRlckNvbXBvbmVudHMgKi8gICAgMTI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dy
b3VwU3RvcmFnZVNpemUgKi8gICAgMzIgKiBLQiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZUludm9j
YXRpb25zUGVyV29ya2dyb3VwICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3Jr
Z3JvdXBTaXplWCAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6
ZVkgKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVaICovICAg
IDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uICovICAg
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICB9OworfQorI2VuZGlm
CisKK3N0YXRpYyBXR1BVTGltaXRzIG1hYzIoaWQ8TVRMRGV2aWNlPiBkZXZpY2UpCit7CisgICAg
dWludDMyX3QgYnVmZmVyc1BlckJpbmRHcm91cCA9IDA7CisgICAgdWludDMyX3QgdGV4dHVyZXNQ
ZXJCaW5kR3JvdXAgPSAwOworICAgIHVpbnQzMl90IHNhbXBsZXJzUGVyQmluZEdyb3VwID0gMDsK
KyAgICBzd2l0Y2ggKFtkZXZpY2UgYXJndW1lbnRCdWZmZXJzU3VwcG9ydF0pIHsKKyAgICBjYXNl
IE1UTEFyZ3VtZW50QnVmZmVyc1RpZXIxOgorICAgICAgICBidWZmZXJzUGVyQmluZEdyb3VwID0g
NjQ7CisgICAgICAgIHRleHR1cmVzUGVyQmluZEdyb3VwID0gMTI4OworICAgICAgICBzYW1wbGVy
c1BlckJpbmRHcm91cCA9IDE2OworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1UTEFyZ3VtZW50
QnVmZmVyc1RpZXIyOgorICAgICAgICBidWZmZXJzUGVyQmluZEdyb3VwID0gNTAwMDAwIC8gMjsK
KyAgICAgICAgdGV4dHVyZXNQZXJCaW5kR3JvdXAgPSA1MDAwMDAgLyAyOworICAgICAgICBzYW1w
bGVyc1BlckJpbmRHcm91cCA9IDEwMjQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHVp
bnQzMl90IG1heEJpbmRHcm91cHMgPSAzMDsKKworICAgIHJldHVybiBXR1BVTGltaXRzIHsKKyAg
ICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjFEICovICAgIDE2Mzg0LAorICAgICAgICAvKiBt
YXhUZXh0dXJlRGltZW5zaW9uMkQgKi8gICAgMTYzODQsCisgICAgICAgIC8qIG1heFRleHR1cmVE
aW1lbnNpb24zRCAqLyAgICAyMDQ4LAorICAgICAgICAvKiBtYXhUZXh0dXJlQXJyYXlMYXllcnMg
Ki8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4QmluZEdyb3VwcyAqLyAgICBtYXhCaW5kR3JvdXBz
LAorICAgICAgICAvKiBtYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCAq
LyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8qIG1h
eER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0ICovICAgIHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4U2FtcGxlZFRleHR1cmVz
UGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIHRleHR1cmVzUGVyQmluZEdyb3Vw
LAorICAgICAgICAvKiBtYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91
cHMgKiBzYW1wbGVyc1BlckJpbmRHcm91cCwKKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZlcnNQ
ZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogYnVmZmVyc1BlckJpbmRHcm91cCwK
KyAgICAgICAgLyogbWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4Qmlu
ZEdyb3VwcyAqIHRleHR1cmVzUGVyQmluZEdyb3VwLAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVm
ZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiBidWZmZXJzUGVyQmluZEdy
b3VwLAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMCwgLy8g
VG8gYmUgZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZm
ZXJCaW5kaW5nU2l6ZSAqLyAgICAwLCAvLyBUbyBiZSBmaWxsZWQgaW4gYnkgdGhlIGNhbGxlci4K
KyAgICAgICAgLyogbWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICAyNTYsCisg
ICAgICAgIC8qIG1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgMjU2LAorICAg
ICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJzICovICAgIDMwLAorICAgICAgICAvKiBtYXhWZXJ0ZXhB
dHRyaWJ1dGVzICovICAgIDMxLAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlk
ZSAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8q
IG1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzICovICAgIDMyLAorICAgICAgICAvKiBtYXhD
b21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUgKi8gICAgMzIgKiBLQiwKKyAgICAgICAgLyogbWF4
Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwICovICAgIDEwMjQsCisgICAgICAgIC8qIG1h
eENvbXB1dGVXb3JrZ3JvdXBTaXplWCAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRl
V29ya2dyb3VwU2l6ZVkgKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91
cFNpemVaICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGlt
ZW5zaW9uICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICB9
OworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXR1BVTGltaXRzPiByYXdMaW1pdHMoaWQ8TVRM
RGV2aWNlPiBkZXZpY2UpCit7CisgICAgc3RkOjpvcHRpb25hbDxXR1BVTGltaXRzPiByZXN1bHQ7
CisKKyAgICBhdXRvIG1lcmdlID0gWyZdKGNvbnN0IFdHUFVMaW1pdHMmIGxpbWl0cykgeworICAg
ICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgcmVzdWx0ID0gbGltaXRzOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0
aHViLmlvL2dwdXdlYi8jbGltaXQtY2xhc3MtbWF4aW11bQorICAgICAgICBhdXRvIG1lcmdlTWF4
aW11bSA9IFtdKGF1dG8gcHJldmlvdXMsIGF1dG8gbmV4dCkgeworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWF4KHByZXZpb3VzLCBuZXh0KTsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNsaW1pdC1jbGFzcy1hbGlnbm1lbnQKKyAgICAg
ICAgYXV0byBtZXJnZUFsaWdubWVudCA9IFtdKGF1dG8gcHJldmlvdXMsIGF1dG8gbmV4dCkgewor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKFdURjo6cm91bmRVcFRvUG93ZXJPZlR3byhwcmV2
aW91cyksIFdURjo6cm91bmRVcFRvUG93ZXJPZlR3byhuZXh0KSk7CisgICAgICAgIH07CisKKyAg
ICAgICAgcmVzdWx0LT5tYXhUZXh0dXJlRGltZW5zaW9uMUQgPSBtZXJnZU1heGltdW0ocmVzdWx0
LT5tYXhUZXh0dXJlRGltZW5zaW9uMUQsIGxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMUQpOwor
ICAgICAgICByZXN1bHQtPm1heFRleHR1cmVEaW1lbnNpb24yRCA9IG1lcmdlTWF4aW11bShyZXN1
bHQtPm1heFRleHR1cmVEaW1lbnNpb24yRCwgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRCk7
CisgICAgICAgIHJlc3VsdC0+bWF4VGV4dHVyZURpbWVuc2lvbjNEID0gbWVyZ2VNYXhpbXVtKHJl
c3VsdC0+bWF4VGV4dHVyZURpbWVuc2lvbjNELCBsaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNE
KTsKKyAgICAgICAgcmVzdWx0LT5tYXhUZXh0dXJlQXJyYXlMYXllcnMgPSBtZXJnZU1heGltdW0o
cmVzdWx0LT5tYXhUZXh0dXJlQXJyYXlMYXllcnMsIGxpbWl0cy5tYXhUZXh0dXJlQXJyYXlMYXll
cnMpOworICAgICAgICByZXN1bHQtPm1heEJpbmRHcm91cHMgPSBtZXJnZU1heGltdW0ocmVzdWx0
LT5tYXhCaW5kR3JvdXBzLCBsaW1pdHMubWF4QmluZEdyb3Vwcyk7CisgICAgICAgIHJlc3VsdC0+
bWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgPSBtZXJnZU1heGltdW0o
cmVzdWx0LT5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCwgbGltaXRz
Lm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0KTsKKyAgICAgICAgcmVz
dWx0LT5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCA9IG1lcmdlTWF4
aW11bShyZXN1bHQtPm1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LCBs
aW1pdHMubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQpOworICAgICAg
ICByZXN1bHQtPm1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlID0gbWVyZ2VNYXhpbXVt
KHJlc3VsdC0+bWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UsIGxpbWl0cy5tYXhTYW1w
bGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSk7CisgICAgICAgIHJlc3VsdC0+bWF4U2FtcGxlcnNQ
ZXJTaGFkZXJTdGFnZSA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heFNhbXBsZXJzUGVyU2hhZGVy
U3RhZ2UsIGxpbWl0cy5tYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlKTsKKyAgICAgICAgcmVzdWx0
LT5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+
bWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSwgbGltaXRzLm1heFN0b3JhZ2VCdWZmZXJz
UGVyU2hhZGVyU3RhZ2UpOworICAgICAgICByZXN1bHQtPm1heFN0b3JhZ2VUZXh0dXJlc1BlclNo
YWRlclN0YWdlID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4U3RvcmFnZVRleHR1cmVzUGVyU2hh
ZGVyU3RhZ2UsIGxpbWl0cy5tYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSk7CisgICAg
ICAgIHJlc3VsdC0+bWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSA9IG1lcmdlTWF4aW11
bShyZXN1bHQtPm1heFVuaWZvcm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UsIGxpbWl0cy5tYXhVbmlm
b3JtQnVmZmVyc1BlclNoYWRlclN0YWdlKTsKKyAgICAgICAgcmVzdWx0LT5tYXhVbmlmb3JtQnVm
ZmVyQmluZGluZ1NpemUgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhVbmlmb3JtQnVmZmVyQmlu
ZGluZ1NpemUsIGxpbWl0cy5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUpOworICAgICAgICBy
ZXN1bHQtPm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSA9IG1lcmdlTWF4aW11bShyZXN1bHQt
Pm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSwgbGltaXRzLm1heFN0b3JhZ2VCdWZmZXJCaW5k
aW5nU2l6ZSk7CisgICAgICAgIHJlc3VsdC0+bWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVu
dCA9IG1lcmdlQWxpZ25tZW50KHJlc3VsdC0+bWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVu
dCwgbGltaXRzLm1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQpOworICAgICAgICByZXN1
bHQtPm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQgPSBtZXJnZUFsaWdubWVudChyZXN1
bHQtPm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQsIGxpbWl0cy5taW5TdG9yYWdlQnVm
ZmVyT2Zmc2V0QWxpZ25tZW50KTsKKyAgICAgICAgcmVzdWx0LT5tYXhWZXJ0ZXhCdWZmZXJzID0g
bWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4VmVydGV4QnVmZmVycywgbGltaXRzLm1heFZlcnRleEJ1
ZmZlcnMpOworICAgICAgICByZXN1bHQtPm1heFZlcnRleEF0dHJpYnV0ZXMgPSBtZXJnZU1heGlt
dW0ocmVzdWx0LT5tYXhWZXJ0ZXhBdHRyaWJ1dGVzLCBsaW1pdHMubWF4VmVydGV4QXR0cmlidXRl
cyk7CisgICAgICAgIHJlc3VsdC0+bWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUgPSBtZXJnZU1h
eGltdW0ocmVzdWx0LT5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSwgbGltaXRzLm1heFZlcnRl
eEJ1ZmZlckFycmF5U3RyaWRlKTsKKyAgICAgICAgcmVzdWx0LT5tYXhJbnRlclN0YWdlU2hhZGVy
Q29tcG9uZW50cyA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heEludGVyU3RhZ2VTaGFkZXJDb21w
b25lbnRzLCBsaW1pdHMubWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMpOworICAgICAgICBy
ZXN1bHQtPm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSA9IG1lcmdlTWF4aW11bShyZXN1
bHQtPm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSwgbGltaXRzLm1heENvbXB1dGVXb3Jr
Z3JvdXBTdG9yYWdlU2l6ZSk7CisgICAgICAgIHJlc3VsdC0+bWF4Q29tcHV0ZUludm9jYXRpb25z
UGVyV29ya2dyb3VwID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4Q29tcHV0ZUludm9jYXRpb25z
UGVyV29ya2dyb3VwLCBsaW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwKTsK
KyAgICAgICAgcmVzdWx0LT5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVggPSBtZXJnZU1heGltdW0o
cmVzdWx0LT5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgsIGxpbWl0cy5tYXhDb21wdXRlV29ya2dy
b3VwU2l6ZVgpOworICAgICAgICByZXN1bHQtPm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSA9IG1l
cmdlTWF4aW11bShyZXN1bHQtPm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSwgbGltaXRzLm1heENv
bXB1dGVXb3JrZ3JvdXBTaXplWSk7CisgICAgICAgIHJlc3VsdC0+bWF4Q29tcHV0ZVdvcmtncm91
cFNpemVaID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4Q29tcHV0ZVdvcmtncm91cFNpemVaLCBs
aW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaKTsKKyAgICAgICAgcmVzdWx0LT5tYXhDb21w
dXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbiA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heENvbXB1
dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uLCBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cHNQZXJE
aW1lbnNpb24pOworICAgIH07CisKKyAgICAvLyBUaGUgZmVhdHVyZSBzZXQgdGFibGVzIGRvIG5v
dCBsaXN0IGxpbWl0cyBmb3IgTVRMR1BVRmFtaWx5Q29tbW9uMSwgTVRMR1BVRmFtaWx5Q29tbW9u
Miwgb3IgTVRMR1BVRmFtaWx5Q29tbW9uMy4KKyAgICAvLyBNVExHUFVGYW1pbHlBcHBsZTEgYW5k
IE1UTEdQVUZhbWlseUFwcGxlMiBhcmUgbm90IHN1cHBvcnRlZC4KKyAgICBpZiAoW2RldmljZSBz
dXBwb3J0c0ZhbWlseTpNVExHUFVGYW1pbHlBcHBsZTNdKQorICAgICAgICBtZXJnZShhcHBsZTMo
KSk7CisgICAgaWYgKFtkZXZpY2Ugc3VwcG9ydHNGYW1pbHk6TVRMR1BVRmFtaWx5QXBwbGU0XSkK
KyAgICAgICAgbWVyZ2UoYXBwbGU0KCkpOworICAgIGlmIChbZGV2aWNlIHN1cHBvcnRzRmFtaWx5
Ok1UTEdQVUZhbWlseUFwcGxlNV0pCisgICAgICAgIG1lcmdlKGFwcGxlNSgpKTsKKyNpZiAhUExB
VEZPUk0oV0FUQ0hPUykKKyAgICBpZiAoW2RldmljZSBzdXBwb3J0c0ZhbWlseTpNVExHUFVGYW1p
bHlBcHBsZTZdKQorICAgICAgICBtZXJnZShhcHBsZTYoKSk7CisgICAgaWYgKFtkZXZpY2Ugc3Vw
cG9ydHNGYW1pbHk6TVRMR1BVRmFtaWx5QXBwbGU3XSkKKyAgICAgICAgbWVyZ2UoYXBwbGU3KCkp
OworI2VuZGlmCisgICAgLy8gTVRMR1BVRmFtaWx5TWFjMSBpcyBub3Qgc3VwcG9ydGVkICh5ZXQ/
KS4KKyAgICBpZiAoW2RldmljZSBzdXBwb3J0c0ZhbWlseTpNVExHUFVGYW1pbHlNYWMyXSkKKyAg
ICAgICAgbWVyZ2UobWFjMihkZXZpY2UpKTsKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAg
YXV0byBtYXhCdWZmZXJMZW5ndGggPSBkZXZpY2UubWF4QnVmZmVyTGVuZ3RoOworICAgICAgICBy
ZXN1bHQtPm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSA9IG1heEJ1ZmZlckxlbmd0aDsKKyAg
ICAgICAgcmVzdWx0LT5tYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUgPSBtYXhCdWZmZXJMZW5n
dGg7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wgY2hlY2tM
aW1pdHMoY29uc3QgV0dQVUxpbWl0cyYgbGltaXRzKQoreworICAgIC8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIvI2xpbWl0LWRlZmF1bHQKKyAgICBhdXRvIGRlZmF1bHRMaW1pdHMg
PSBXR1BVTGltaXRzIHsKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjFEICovICAgIDgx
OTIsCisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24yRCAqLyAgICA4MTkyLAorICAgICAg
ICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uM0QgKi8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4VGV4
dHVyZUFycmF5TGF5ZXJzICovICAgIDI1NiwKKyAgICAgICAgLyogbWF4QmluZEdyb3VwcyAqLyAg
ICA0LAorICAgICAgICAvKiBtYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91
dCAqLyAgICA4LAorICAgICAgICAvKiBtYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGlu
ZUxheW91dCAqLyAgICA0LAorICAgICAgICAvKiBtYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJT
dGFnZSAqLyAgICAxNiwKKyAgICAgICAgLyogbWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSAqLyAg
ICAxNiwKKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICA4
LAorICAgICAgICAvKiBtYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSAqLyAgICA0LAor
ICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlICovICAgIDEyLAorICAg
ICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUgKi8gICAgNjU1MzYsCisgICAgICAg
IC8qIG1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAxMzQyMTc3MjgsCisgICAgICAg
IC8qIG1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgMjU2LAorICAgICAgICAv
KiBtaW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDI1NiwKKyAgICAgICAgLyog
bWF4VmVydGV4QnVmZmVycyAqLyAgICA4LAorICAgICAgICAvKiBtYXhWZXJ0ZXhBdHRyaWJ1dGVz
ICovICAgIDE2LAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSAqLyAgICAy
MDQ4LAorICAgICAgICAvKiBtYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cyAqLyAgICAzMiwK
KyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplICovICAgIDE2MzUyLAor
ICAgICAgICAvKiBtYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAgKi8gICAgMjU2LAor
ICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVggKi8gICAgMjU2LAorICAgICAgICAv
KiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkgKi8gICAgMjU2LAorICAgICAgICAvKiBtYXhDb21w
dXRlV29ya2dyb3VwU2l6ZVogKi8gICAgNjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3Jv
dXBzUGVyRGltZW5zaW9uICovICAgIDY1NTM1LAorICAgIH07CisKKyAgICByZXR1cm4gIWFueUxp
bWl0SXNCZXR0ZXJUaGFuKGRlZmF1bHRMaW1pdHMsIGxpbWl0cyk7Cit9CisKK3N0ZDo6b3B0aW9u
YWw8V0dQVUxpbWl0cz4gbGltaXRzKGlkPE1UTERldmljZT4gZGV2aWNlKQoreworICAgIGF1dG8g
cmVzdWx0ID0gcmF3TGltaXRzKGRldmljZSk7CisKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghY2hlY2tMaW1pdHMoKnJlc3VsdCkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiti
b29sIGlzVmFsaWQoY29uc3QgV0dQVUxpbWl0cyYgbGltaXRzKQoreworICAgIHJldHVybiBpc1Bv
d2VyT2ZUd28obGltaXRzLm1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQpICYmIGlzUG93
ZXJPZlR3byhsaW1pdHMubWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCk7Cit9CisKK2Jv
b2wgYW55TGltaXRJc0JldHRlclRoYW4oY29uc3QgV0dQVUxpbWl0cyYgdGFyZ2V0LCBjb25zdCBX
R1BVTGltaXRzJiByZWZlcmVuY2UpCit7CisgICAgaWYgKHRhcmdldC5tYXhUZXh0dXJlRGltZW5z
aW9uMUQgPiByZWZlcmVuY2UubWF4VGV4dHVyZURpbWVuc2lvbjFEKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFRleHR1cmVEaW1lbnNpb24yRCA+IHJlZmVyZW5jZS5t
YXhUZXh0dXJlRGltZW5zaW9uMkQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJn
ZXQubWF4VGV4dHVyZURpbWVuc2lvbjNEID4gcmVmZXJlbmNlLm1heFRleHR1cmVEaW1lbnNpb24z
RCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhUZXh0dXJlQXJyYXlM
YXllcnMgPiByZWZlcmVuY2UubWF4VGV4dHVyZUFycmF5TGF5ZXJzKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heEJpbmRHcm91cHMgPiByZWZlcmVuY2UubWF4QmluZEdy
b3VwcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhEeW5hbWljVW5p
Zm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCA+IHJlZmVyZW5jZS5tYXhEeW5hbWljVW5pZm9y
bUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KHRhcmdldC5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCA+IHJlZmVy
ZW5jZS5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJT
dGFnZSA+IHJlZmVyZW5jZS5tYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhTYW1wbGVyc1BlclNoYWRlclN0YWdl
ID4gcmVmZXJlbmNlLm1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmICh0YXJnZXQubWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSA+IHJl
ZmVyZW5jZS5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlID4g
cmVmZXJlbmNlLm1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFVuaWZvcm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2Ug
PiByZWZlcmVuY2UubWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUgPiBy
ZWZlcmVuY2UubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSA+IHJlZmVyZW5j
ZS5tYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmICh0YXJnZXQubWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCA8IHJlZmVyZW5jZS5t
aW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAodGFyZ2V0Lm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQgPCByZWZlcmVuY2Uu
bWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKHRhcmdldC5tYXhWZXJ0ZXhCdWZmZXJzID4gcmVmZXJlbmNlLm1heFZlcnRleEJ1ZmZl
cnMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4VmVydGV4QXR0cmli
dXRlcyA+IHJlZmVyZW5jZS5tYXhWZXJ0ZXhBdHRyaWJ1dGVzKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlID4gcmVmZXJlbmNl
Lm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAodGFyZ2V0Lm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzID4gcmVmZXJlbmNlLm1heElu
dGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
dGFyZ2V0Lm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSA+IHJlZmVyZW5jZS5tYXhDb21w
dXRlV29ya2dyb3VwU3RvcmFnZVNpemUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0
YXJnZXQubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwID4gcmVmZXJlbmNlLm1heENv
bXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKHRhcmdldC5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVggPiByZWZlcmVuY2UubWF4Q29tcHV0
ZVdvcmtncm91cFNpemVYKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1h
eENvbXB1dGVXb3JrZ3JvdXBTaXplWSA+IHJlZmVyZW5jZS5tYXhDb21wdXRlV29ya2dyb3VwU2l6
ZVkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4Q29tcHV0ZVdvcmtn
cm91cFNpemVaID4gcmVmZXJlbmNlLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWikKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVu
c2lvbiA+IHJlZmVyZW5jZS5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbikKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UubW0gYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQppbmRleCA4ZWMwNjI2NmIzNDBhZjg1NGM1
MTZiZTEzZjgxMDA4OTA2YWI3ODU3Li5hNjVjOTI2NjFiZWE4NjdmMWUyMzAxYmM1ZGFhZDI5NTI4
YTE3OWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW1wb3J0ICJBUElDb252ZXJzaW9ucy5oIgogI2ltcG9ydCAiQWRhcHRlci5oIgorI2ltcG9ydCAi
SGFyZHdhcmVMaW1pdHMuaCIKICNpbXBvcnQgIlN1cmZhY2UuaCIKICNpbXBvcnQgPGNzdHJpbmc+
CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KQEAgLTE4Myw4ICsxODQsMTkgQEAgdm9pZCBJbnN0
YW5jZTo6cmVxdWVzdEFkYXB0ZXIoY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0
aW9ucywgQ29tcGxldGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNjaGVkdWxlV29y
ayhbc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRldmljZSA9IHNvcnRlZERldmljZXNbMF0s
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxi
YWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19TdWNjZXNzLCBBZGFwdGVyOjpjcmVhdGUoZGV2
aWNlLCBzdHJvbmdUaGlzKSwgeyB9KTsKKyAgICBhdXRvIGRldmljZSA9IHNvcnRlZERldmljZXNb
MF07CisKKyAgICBhdXRvIGRldmljZUxpbWl0cyA9IGxpbWl0cyhkZXZpY2UpOworCisgICAgaWYg
KCFkZXZpY2VMaW1pdHMpIHsKKyAgICAgICAgc2NoZWR1bGVXb3JrKFtzdHJvbmdUaGlzID0gUmVm
IHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19FcnJvciwgQWRhcHRl
cjo6Y3JlYXRlSW52YWxpZChzdHJvbmdUaGlzKSwgIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0IFdl
YkdQVSJfcyk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2No
ZWR1bGVXb3JrKFtzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGV2aWNlID0gc29ydGVkRGV2
aWNlc1swXSwgbGltaXRzID0gV1RGTW92ZSgqZGV2aWNlTGltaXRzKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3RB
ZGFwdGVyU3RhdHVzX1N1Y2Nlc3MsIEFkYXB0ZXI6OmNyZWF0ZShkZXZpY2UsIHN0cm9uZ1RoaXMs
IFdURk1vdmUobGltaXRzKSksIHsgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJl
Lm1tCmluZGV4IDg3ZmUyM2NiZjBhZDg4ZWE1MDQ5ZjQyNTk3YjhiYTViYzY0YzBmODYuLjc1NjJi
ZWU4NDFkMzE4N2FkMjE2NjFiZGY5ODkyYzBiMzYxNDFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVy
ZS5tbQpAQCAtMTI0Niw3ICsxMjQ2LDggQEAgYm9vbCBEZXZpY2U6OnZhbGlkYXRlQ3JlYXRlVGV4
dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNvbnMKIAogICAg
IHN3aXRjaCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKICAgICBjYXNlIFdHUFVUZXh0dXJlRGlt
ZW5zaW9uXzFEOgotICAgICAgICAvLyBGSVhNRTogImRlc2NyaXB0b3Iuc2l6ZS53aWR0aCBtdXN0
IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGlzLmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9u
MUQuIgorICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLndpZHRoID4gbV9saW1pdHMubWF4VGV4
dHVyZURpbWVuc2lvbjFEKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlm
IChkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ICE9IDEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0xMjYxLDE4ICsxMjYyLDI0IEBAIGJvb2wgRGV2aWNlOjp2YWxpZGF0ZUNyZWF0ZVRleHR1
cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV0dQVVRleHR1cmVE
aW1lbnNpb25fMkQ6Ci0gICAgICAgIC8vIEZJWE1FOiAiZGVzY3JpcHRvci5zaXplLndpZHRoIG11
c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoaXMubGltaXRzLm1heFRleHR1cmVEaW1lbnNp
b24yRC4iCisgICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUud2lkdGggPiBtX2xpbWl0cy5tYXhU
ZXh0dXJlRGltZW5zaW9uMkQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
Ly8gRklYTUU6ICJkZXNjcmlwdG9yLnNpemUuaGVpZ2h0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVx
dWFsIHRvIHRoaXMubGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRC4iCisgICAgICAgIGlmIChk
ZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID4gbV9saW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJEKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vIEZJWE1FOiAiZGVzY3JpcHRv
ci5zaXplLmRlcHRoT3JBcnJheUxheWVycyBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0
aGlzLmxpbWl0cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMuIgorICAgICAgICBpZiAoZGVzY3JpcHRv
ci5zaXplLmRlcHRoT3JBcnJheUxheWVycyA+IG1fbGltaXRzLm1heFRleHR1cmVBcnJheUxheWVy
cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBX
R1BVVGV4dHVyZURpbWVuc2lvbl8zRDoKLSAgICAgICAgLy8gRklYTUU6ICJkZXNjcmlwdG9yLnNp
emUud2lkdGggbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhpcy5saW1pdHMubWF4VGV4
dHVyZURpbWVuc2lvbjNELiIKKyAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCA+IG1f
bGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICAvLyBGSVhNRTogImRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgbXVzdCBiZSBsZXNz
IHRoYW4gb3IgZXF1YWwgdG8gdGhpcy5saW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNELiIKKyAg
ICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPiBtX2xpbWl0cy5tYXhUZXh0dXJlRGlt
ZW5zaW9uM0QpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gRklYTUU6
ICJkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzIG11c3QgYmUgbGVzcyB0aGFuIG9y
IGVxdWFsIHRvIHRoaXMubGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRC4iCisgICAgICAgIGlm
IChkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzID4gbV9saW1pdHMubWF4VGV4dHVy
ZURpbWVuc2lvbjNEKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmIChk
ZXNjcmlwdG9yLnNhbXBsZUNvdW50ICE9IDEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0yMjY4LDggKzIyNzUsNiBAQCBSZWY8VGV4dHVyZVZpZXc+IFRleHR1cmU6OmNyZWF0ZVZpZXco
Y29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgaW5wdXREZXNjcgogCiAgICAgaWYgKCFk
ZXNjcmlwdG9yIHx8ICF2YWxpZGF0ZUNyZWF0ZVZpZXcoKmRlc2NyaXB0b3IpKSB7CiAgICAgICAg
IG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4i
X3MpOwotCi0gICAgICAgIC8vIEZJWE1FOiAiUmV0dXJuIGEgbmV3IGludmFsaWQgR1BVVGV4dHVy
ZVZpZXcuIgogICAgICAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZUludmFsaWQobV9kZXZp
Y2UpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVRXh0
LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVFeHQuaAppbmRleCAwYzJlN2ZjYzFlZWVh
MGQzODFmZTNlZTM1ZDk2ZThlZDNjOWZkZTJhLi4wODJlYmZiMmU3Zjk4OTRjZGRkOWFjMjViOThj
YTU4ZTI0MTlhZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVFeHQu
aAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVFeHQuaApAQCAtMzksNiArMzksNyBA
QCB0eXBlZGVmIHZvaWQgKF5XR1BVRXJyb3JCbG9ja0NhbGxiYWNrKShXR1BVRXJyb3JUeXBlIHR5
cGUsIGNoYXIgY29uc3QgKiBtZXNzYWdlKQogdHlwZWRlZiB2b2lkICheV0dQVVF1ZXVlV29ya0Rv
bmVCbG9ja0NhbGxiYWNrKShXR1BVUXVldWVXb3JrRG9uZVN0YXR1cyBzdGF0dXMpOwogdHlwZWRl
ZiB2b2lkICheV0dQVVJlcXVlc3RBZGFwdGVyQmxvY2tDYWxsYmFjaykoV0dQVVJlcXVlc3RBZGFw
dGVyU3RhdHVzIHN0YXR1cywgV0dQVUFkYXB0ZXIgYWRhcHRlciwgY2hhciBjb25zdCAqIG1lc3Nh
Z2UpOwogdHlwZWRlZiB2b2lkICheV0dQVVJlcXVlc3REZXZpY2VCbG9ja0NhbGxiYWNrKShXR1BV
UmVxdWVzdERldmljZVN0YXR1cyBzdGF0dXMsIFdHUFVEZXZpY2UgZGV2aWNlLCBjaGFyIGNvbnN0
ICogbWVzc2FnZSk7Cit0eXBlZGVmIHZvaWQgKF5XR1BVUmVxdWVzdEludmFsaWREZXZpY2VCbG9j
a0NhbGxiYWNrKShXR1BVRGV2aWNlIGRldmljZSk7CiB0eXBlZGVmIHZvaWQgKF5XR1BVV29ya0l0
ZW0pKHZvaWQpOwogdHlwZWRlZiB2b2lkICheV0dQVVNjaGVkdWxlV29ya0Jsb2NrKShXR1BVV29y
a0l0ZW0gd29ya0l0ZW0pOwogCkBAIC0xODMsNiArMTg0LDcgQEAgV0dQVV9FWFBPUlQgdm9pZCB3
Z3B1VGV4dHVyZVNldExhYmVsKFdHUFVUZXh0dXJlIHNhbXBsZXIsIGNoYXIgY29uc3QgKiBsYWJl
bCk7CiBXR1BVX0VYUE9SVCB2b2lkIHdncHVUZXh0dXJlVmlld1NldExhYmVsKFdHUFVUZXh0dXJl
VmlldyBzYW1wbGVyLCBjaGFyIGNvbnN0ICogbGFiZWwpOwogCiBXR1BVX0VYUE9SVCB2b2lkIHdn
cHVBZGFwdGVyUmVxdWVzdERldmljZVdpdGhCbG9jayhXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BV
RGV2aWNlRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IsIFdHUFVSZXF1ZXN0RGV2aWNlQmxv
Y2tDYWxsYmFjayBjYWxsYmFjayk7CitXR1BVX0VYUE9SVCB2b2lkIHdncHVBZGFwdGVyUmVxdWVz
dEludmFsaWREZXZpY2VXaXRoQmxvY2soV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVVJlcXVlc3RJ
bnZhbGlkRGV2aWNlQmxvY2tDYWxsYmFjayBjYWxsYmFjayk7CiBXR1BVX0VYUE9SVCB2b2lkIHdn
cHVCdWZmZXJNYXBBc3luY1dpdGhCbG9jayhXR1BVQnVmZmVyIGJ1ZmZlciwgV0dQVU1hcE1vZGVG
bGFncyBtb2RlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV0dQVUJ1ZmZlck1hcEJsb2Nr
Q2FsbGJhY2sgY2FsbGJhY2spOwogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1RGV2aWNlQ3JlYXRlQ29t
cHV0ZVBpcGVsaW5lQXN5bmNXaXRoQmxvY2soV0dQVURldmljZSBkZXZpY2UsIFdHUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZUNvbXB1dGVQ
aXBlbGluZUFzeW5jQmxvY2tDYWxsYmFjayBjYWxsYmFjayk7CiBXR1BVX0VYUE9SVCB2b2lkIHdn
cHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jV2l0aEJsb2NrKFdHUFVEZXZpY2UgZGV2
aWNlLCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvciwgV0dQ
VUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmNCbG9ja0NhbGxiYWNrIGNhbGxiYWNrKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457722</attachid>
            <date>2022-04-15 13:57:51 -0700</date>
            <delta_ts>2022-04-15 15:51:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239377-20220415135750.patch</filename>
            <type>text/plain</type>
            <size>55308</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQwN2ZjOWNjMGRmMjNmNTMxNTFiZWQ0
YzkxNjViYWE3NjFkZmJhZmQuLjhlOGU3ZTJmMTZlZjBkYmZhYjU4ODQ0OGJmNWUyNmU2NmI4NDA1
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDQtMTUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBsZW1lbnQgaGFyZHdh
cmUgbGltaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzkzNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgbWlzc2luZyAjaW5jbHVkZS4KKworICAgICAgICAqIHd0Zi9QYWdlQmxvY2suaDoKKwog
MjAyMi0wNC0xNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS11bV1BFXSBSZW1vdmUgZXhjbHVzaXZlIGJ1aWxkIGd1YXJkcyBhcm91bmQgR1BVIHBy
b2Nlc3MgcHJlZmVyZW5jZXMsIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGUyOGYzM2ZmNWI5
ZjFjZWJiZWNkNGMxNGIyOWM5M2NhN2VmOTcyNGEuLmYzMTg5YTU5MDgyNDZlYzQ4ZDU1MzkxYzll
MzE0YmI4ZmRhMWZhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIy
LTA0LTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkdQVV0gSW1wbGVtZW50IGhhcmR3YXJlIGxpbWl0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5Mzc3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9y
ICJsaW1pdHMiIGFzIGRlc2NyaWJlZCBpbiBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
LyNsaW1pdHMuCisgICAgICAgIFZhcmlvdXMgb3BlcmF0aW9ucyBxdWVyeSB0aGUgbGltaXRzIG9m
IHRoZSBkZXZpY2UgdG8ga25vdyB3aGV0aGVyIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGlzCisg
ICAgICAgIHdpdGhpbiByYW5nZS4gRS5nLiBpZiBjb250ZW50IHRyaWVzIHRvIG1ha2UgYSB0ZXh0
dXJlIHRvbyBiaWcsIHRoaXMgaXMgaG93IHdlIGNhdGNoIGl0IGFoZWFkIG9mCisgICAgICAgIHRp
bWUuCisKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlcklt
cGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJHUFU6OkFkYXB0ZXJJbXBsOjpyZXF1ZXN0RGV2aWNl
KToKKwogMjAyMi0wNC0xNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBbV0syXSBNYW5hZ2VkIHBhc3RlYm9hcmQgc2hvdWxkIGZ1bmN0aW9u
IGZvciBhbGwgbWFuYWdlZCBkb21haW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IGQyMzczZmUyZjc0YTQzN2JiZGMx
YTNiNGE2NWZkOGJkMGJjNmNjZGQuLmI2ZjNjYmY3ODZlMTJmMmFlYTY1ZDZjMjdlMWIzZWJkMmZi
ZjA1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjItMDQtMTUgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBsZW1l
bnQgaGFyZHdhcmUgbGltaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzkzNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBnYXRoZXIgdGhlIHZhbHVlcyBvZiB0aGUgbGltaXRzIGZyb20gdGhlIE1l
dGFsIEZlYXR1cmUgU2V0IFRhYmxlcworICAgICAgICBhdCBodHRwczovL2RldmVsb3Blci5hcHBs
ZS5jb20vbWV0YWwvTWV0YWwtRmVhdHVyZS1TZXQtVGFibGVzLnBkZi4KKworICAgICAgICBUaGVy
ZSBhcmUgbm8gbGltaXQgdGFibGVzIGZvciB0aGUgQ29tbW9uIGZhbWlsaWVzLCBzbyB3ZSB1c2Ug
QXBwbGUKKyAgICAgICAgYW5kIE1hYyBmYW1pbGllcyBpbnN0ZWFkLgorCisgICAgICAgIFRlc3Q6
IHdlYmdwdS9hcGkvdmFsaWRhdGlvbi9jcmVhdGVUZXh0dXJlCisKKyAgICAgICAgKiBXZWJHUFUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJHUFUvQWRhcHRlci5oOgor
ICAgICAgICAoV2ViR1BVOjpBZGFwdGVyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9BZGFw
dGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpBZGFwdGVyOjpBZGFwdGVyKToKKyAgICAgICAgKFdl
YkdQVTo6QWRhcHRlcjo6cmVxdWVzdERldmljZSk6CisgICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6
OnJlcXVlc3RJbnZhbGlkRGV2aWNlKToKKyAgICAgICAgKHdncHVBZGFwdGVyUmVxdWVzdEludmFs
aWREZXZpY2VXaXRoQmxvY2spOgorICAgICAgICAoV2ViR1BVOjpkZXZpY2VNZWV0c1JlcXVpcmVk
TGltaXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLmg6CisgICAgICAgICog
V2ViR1BVL0RldmljZS5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViR1BVOjpEZXZpY2U6OkRldmljZSk6CisgICAgICAgICogV2ViR1BVL0hhcmR3YXJl
TGltaXRzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaC4KKyAg
ICAgICAgKiBXZWJHUFUvSGFyZHdhcmVMaW1pdHMubW06IEFkZGVkLgorICAgICAgICAoV2ViR1BV
OjphcHBsZTMpOgorICAgICAgICAoV2ViR1BVOjphcHBsZTQpOgorICAgICAgICAoV2ViR1BVOjph
cHBsZTUpOgorICAgICAgICAoV2ViR1BVOjphcHBsZTYpOgorICAgICAgICAoV2ViR1BVOjphcHBs
ZTcpOgorICAgICAgICAoV2ViR1BVOjptYWMyKToKKyAgICAgICAgKFdlYkdQVTo6cmF3TGltaXRz
KToKKyAgICAgICAgKFdlYkdQVTo6Y2hlY2tMaW1pdHMpOgorICAgICAgICAoV2ViR1BVOjpsaW1p
dHMpOgorICAgICAgICAoV2ViR1BVOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYkdQVTo6YW55TGlt
aXRJc0JldHRlclRoYW4pOgorICAgICAgICAqIFdlYkdQVS9JbnN0YW5jZS5tbToKKyAgICAgICAg
KFdlYkdQVTo6SW5zdGFuY2U6OnJlcXVlc3RBZGFwdGVyKToKKyAgICAgICAgKiBXZWJHUFUvVGV4
dHVyZS5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjp2YWxpZGF0ZUNyZWF0ZVRleHR1cmUp
OgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAgKiBXZWJH
UFUvV2ViR1BVRXh0Lmg6CisKIDIwMjItMDQtMTMgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBw
bGUuY29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHB1YmxpYyB3YXRjaE9TIHdvcmtzcGFjZSBi
dWlsZCBieSB1cGRhdGluZyBzY2hlbWUgYW5kIGJ1aWxkIHNldHRpbmdzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QYWdlQmxvY2suaCBiL1NvdXJjZS9XVEYvd3RmL1BhZ2VCbG9jay5oCmlu
ZGV4IDliYjdmZmZjYzFhZTA1MjhiNWU5MzM0ZDVkYzRkNjJjYTI3YjQ5ZmQuLjgyOWQ1MTE1NTkx
ODMxNDYwZjhmMzJiNGJlZmY1MzZjMTY0YjUwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BhZ2VCbG9jay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BhZ2VCbG9jay5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFw
dGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCA4M2NmZjdhNjQzMDJiMjU5ZDM0ZTA3MmM0Zjhi
MzczY2QxMmUxYjBhLi4xMjY4ZGIxZDY1NGM5MDc1ZTNhM2I3NGY3ZWYyMzRhOWQ5ZDI0YTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUFkYXB0ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcApAQCAtMTQ5LDQzICsxNDksOTUgQEAg
dm9pZCBBZGFwdGVySW1wbDo6cmVxdWVzdERldmljZShjb25zdCBEZXZpY2VEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBDb21wbGV0aW9uSGEKICAgICAgICAgcmV0dXJuIG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZmVhdHVyZU5hbWUpOwogICAgIH0pOwogCi0gICAg
V0dQVVJlcXVpcmVkTGltaXRzIGxpbWl0cyB7Ci0gICAgICAgIG51bGxwdHIsIHsKLSAgICAgICAg
ICAgIDAsIC8vIG1heFRleHR1cmVEaW1lbnNpb24xRAotICAgICAgICAgICAgMCwgLy8gbWF4VGV4
dHVyZURpbWVuc2lvbjJECi0gICAgICAgICAgICAwLCAvLyBtYXhUZXh0dXJlRGltZW5zaW9uM0QK
LSAgICAgICAgICAgIDAsIC8vIG1heFRleHR1cmVBcnJheUxheWVycwotICAgICAgICAgICAgMCwg
Ly8gbWF4QmluZEdyb3VwcwotICAgICAgICAgICAgMCwgLy8gbWF4RHluYW1pY1VuaWZvcm1CdWZm
ZXJzUGVyUGlwZWxpbmVMYXlvdXQKLSAgICAgICAgICAgIDAsIC8vIG1heER5bmFtaWNTdG9yYWdl
QnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0Ci0gICAgICAgICAgICAwLCAvLyBtYXhTYW1wbGVkVGV4
dHVyZXNQZXJTaGFkZXJTdGFnZQotICAgICAgICAgICAgMCwgLy8gbWF4U2FtcGxlcnNQZXJTaGFk
ZXJTdGFnZQotICAgICAgICAgICAgMCwgLy8gbWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFn
ZQotICAgICAgICAgICAgMCwgLy8gbWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UKLSAg
ICAgICAgICAgIDAsIC8vIG1heFVuaWZvcm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UKLSAgICAgICAg
ICAgIDAsIC8vIG1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZQotICAgICAgICAgICAgMCwgLy8g
bWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplCi0gICAgICAgICAgICAwLCAvLyBtaW5Vbmlmb3Jt
QnVmZmVyT2Zmc2V0QWxpZ25tZW50Ci0gICAgICAgICAgICAwLCAvLyBtaW5TdG9yYWdlQnVmZmVy
T2Zmc2V0QWxpZ25tZW50Ci0gICAgICAgICAgICAwLCAvLyBtYXhWZXJ0ZXhCdWZmZXJzCi0gICAg
ICAgICAgICAwLCAvLyBtYXhWZXJ0ZXhBdHRyaWJ1dGVzCi0gICAgICAgICAgICAwLCAvLyBtYXhW
ZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZQotICAgICAgICAgICAgMCwgLy8gbWF4SW50ZXJTdGFnZVNo
YWRlckNvbXBvbmVudHMKLSAgICAgICAgICAgIDAsIC8vIG1heENvbXB1dGVXb3JrZ3JvdXBTdG9y
YWdlU2l6ZQotICAgICAgICAgICAgMCwgLy8gbWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dy
b3VwCi0gICAgICAgICAgICAwLCAvLyBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgKLSAgICAgICAg
ICAgIDAsIC8vIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWQotICAgICAgICAgICAgMCwgLy8gbWF4
Q29tcHV0ZVdvcmtncm91cFNpemVaCi0gICAgICAgICAgICAwLCAvLyBtYXhDb21wdXRlV29ya2dy
b3Vwc1BlckRpbWVuc2lvbgotICAgICAgICB9LAorICAgIGF1dG8gbGltaXRzID0gV0dQVUxpbWl0
cyB7CisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24xRCAqLyAgICA4MTkyLAorICAgICAg
ICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uMkQgKi8gICAgODE5MiwKKyAgICAgICAgLyogbWF4VGV4
dHVyZURpbWVuc2lvbjNEICovICAgIDIwNDgsCisgICAgICAgIC8qIG1heFRleHR1cmVBcnJheUxh
eWVycyAqLyAgICAyNTYsCisgICAgICAgIC8qIG1heEJpbmRHcm91cHMgKi8gICAgNCwKKyAgICAg
ICAgLyogbWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgOCwK
KyAgICAgICAgLyogbWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8g
ICAgNCwKKyAgICAgICAgLyogbWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAg
MTYsCisgICAgICAgIC8qIG1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgMTYsCisgICAg
ICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgOCwKKyAgICAgICAg
LyogbWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgNCwKKyAgICAgICAgLyog
bWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICAxMiwKKyAgICAgICAgLyogbWF4
VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplICovICAgIDY1NTM2LAorICAgICAgICAvKiBtYXhTdG9y
YWdlQnVmZmVyQmluZGluZ1NpemUgKi8gICAgMTM0MjE3NzI4LAorICAgICAgICAvKiBtaW5Vbmlm
b3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICovICAgIDI1NiwKKyAgICAgICAgLyogbWluU3RvcmFn
ZUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICAyNTYsCisgICAgICAgIC8qIG1heFZlcnRleEJ1
ZmZlcnMgKi8gICAgOCwKKyAgICAgICAgLyogbWF4VmVydGV4QXR0cmlidXRlcyAqLyAgICAxNiwK
KyAgICAgICAgLyogbWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUgKi8gICAgMjA0OCwKKyAgICAg
ICAgLyogbWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMgKi8gICAgMzIsCisgICAgICAgIC8q
IG1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSAqLyAgICAxNjM1MiwKKyAgICAgICAgLyog
bWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwICovICAgIDI1NiwKKyAgICAgICAgLyog
bWF4Q29tcHV0ZVdvcmtncm91cFNpemVYICovICAgIDI1NiwKKyAgICAgICAgLyogbWF4Q29tcHV0
ZVdvcmtncm91cFNpemVZICovICAgIDI1NiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91
cFNpemVaICovICAgIDY0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVu
c2lvbiAqLyAgICA2NTUzNSwKICAgICB9OwogCisgICAgYXV0byByZXF1ZXN0SW52YWxpZERldmlj
ZSA9IFt0aGlzLCAmY2FsbGJhY2tdKCkgeworICAgICAgICB3Z3B1QWRhcHRlclJlcXVlc3RJbnZh
bGlkRGV2aWNlV2l0aEJsb2NrKG1fYmFja2luZywgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY29udmVydFRvQmFja2luZ0NvbnRleHQgPSBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmNvcHlSZWYoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQ
VURldmljZSBkZXZpY2UpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2soRGV2aWNlSW1w
bDo6Y3JlYXRlKGRldmljZSwgUmVmIHsgcHJvdGVjdGVkVGhpcy0+ZmVhdHVyZXMoKSB9LCBSZWYg
eyBwcm90ZWN0ZWRUaGlzLT5saW1pdHMoKSB9LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOwor
ICAgICAgICB9KS5nZXQoKSk7CisgICAgfTsKKworICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6
IGRlc2NyaXB0b3IucmVxdWlyZWRMaW1pdHMpIHsKKyNkZWZpbmUgU0VUX1ZBTFVFXzMyKExJTUlU
KSBcCisgICAgZWxzZSBpZiAocGFpci5rZXkgPT0gI0xJTUlUKSB7IFwKKyAgICAgICAgQ2hlY2tl
ZFVpbnQzMiBuYXJyb3dlZCA9IHBhaXIudmFsdWU7IFwKKyAgICAgICAgaWYgKG5hcnJvd2VkLmhh
c092ZXJmbG93ZWQoKSkgeyBcCisgICAgICAgICAgICByZXF1ZXN0SW52YWxpZERldmljZSgpOyBc
CisgICAgICAgICAgICByZXR1cm47IFwKKyAgICAgICAgfSBcCisgICAgICAgIGxpbWl0cy5MSU1J
VCA9IG5hcnJvd2VkLnZhbHVlKCk7IFwKKyAgICB9CisjZGVmaW5lIFNFVF9WQUxVRV82NChMSU1J
VCkgXAorICAgIGVsc2UgaWYgKHBhaXIua2V5ID09ICNMSU1JVCkgXAorICAgICAgICBsaW1pdHMu
TElNSVQgPSBwYWlyLnZhbHVlOworCisgICAgICAgIGlmIChmYWxzZSkgeyB9CisgICAgICAgIFNF
VF9WQUxVRV8zMihtYXhUZXh0dXJlRGltZW5zaW9uMUQpCisgICAgICAgIFNFVF9WQUxVRV8zMiht
YXhUZXh0dXJlRGltZW5zaW9uMkQpCisgICAgICAgIFNFVF9WQUxVRV8zMihtYXhUZXh0dXJlRGlt
ZW5zaW9uM0QpCisgICAgICAgIFNFVF9WQUxVRV8zMihtYXhUZXh0dXJlQXJyYXlMYXllcnMpCisg
ICAgICAgIFNFVF9WQUxVRV8zMihtYXhCaW5kR3JvdXBzKQorICAgICAgICBTRVRfVkFMVUVfMzIo
bWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQpCisgICAgICAgIFNFVF9W
QUxVRV8zMihtYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCkKKyAgICAg
ICAgU0VUX1ZBTFVFXzMyKG1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlKQorICAgICAg
ICBTRVRfVkFMVUVfMzIobWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSkKKyAgICAgICAgU0VUX1ZB
TFVFXzMyKG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UpCisgICAgICAgIFNFVF9WQUxV
RV8zMihtYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSkKKyAgICAgICAgU0VUX1ZBTFVF
XzMyKG1heFVuaWZvcm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UpCisgICAgICAgIFNFVF9WQUxVRV82
NChtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUpCisgICAgICAgIFNFVF9WQUxVRV82NChtYXhT
dG9yYWdlQnVmZmVyQmluZGluZ1NpemUpCisgICAgICAgIFNFVF9WQUxVRV8zMihtaW5Vbmlmb3Jt
QnVmZmVyT2Zmc2V0QWxpZ25tZW50KQorICAgICAgICBTRVRfVkFMVUVfMzIobWluU3RvcmFnZUJ1
ZmZlck9mZnNldEFsaWdubWVudCkKKyAgICAgICAgU0VUX1ZBTFVFXzMyKG1heFZlcnRleEJ1ZmZl
cnMpCisgICAgICAgIFNFVF9WQUxVRV8zMihtYXhWZXJ0ZXhBdHRyaWJ1dGVzKQorICAgICAgICBT
RVRfVkFMVUVfMzIobWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUpCisgICAgICAgIFNFVF9WQUxV
RV8zMihtYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cykKKyAgICAgICAgU0VUX1ZBTFVFXzMy
KG1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSkKKyAgICAgICAgU0VUX1ZBTFVFXzMyKG1h
eENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cCkKKyAgICAgICAgU0VUX1ZBTFVFXzMyKG1h
eENvbXB1dGVXb3JrZ3JvdXBTaXplWCkKKyAgICAgICAgU0VUX1ZBTFVFXzMyKG1heENvbXB1dGVX
b3JrZ3JvdXBTaXplWSkKKyAgICAgICAgU0VUX1ZBTFVFXzMyKG1heENvbXB1dGVXb3JrZ3JvdXBT
aXplWikKKyAgICAgICAgU0VUX1ZBTFVFXzMyKG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5z
aW9uKQorCisjdW5kZWYgU0VUX1ZBTFVFXzMyCisjdW5kZWYgU0VUX1ZBTFVFXzY0CisgICAgfQor
CisgICAgV0dQVVJlcXVpcmVkTGltaXRzIHJlcXVpcmVkTGltaXRzIHsgbnVsbHB0ciwgV1RGTW92
ZShsaW1pdHMpIH07CisKICAgICBXR1BVRGV2aWNlRGVzY3JpcHRvciBiYWNraW5nRGVzY3JpcHRv
ciB7CiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgIGxhYmVsLmRhdGEoKSwKICAgICAgICAgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGZlYXR1cmVzLnNpemUoKSksCiAgICAgICAgIGZlYXR1cmVzLmRh
dGEoKSwKLSAgICAgICAgJmxpbWl0cywKKyAgICAgICAgJnJlcXVpcmVkTGltaXRzLAogICAgIH07
CiAKICAgICB3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2VXaXRoQmxvY2sobV9iYWNraW5nLCAmYmFj
a2luZ0Rlc2NyaXB0b3IsIG1ha2VCbG9ja1B0cihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC5j
b3B5UmVmKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFdHUFVSZXF1ZXN0RGV2aWNl
U3RhdHVzLCBXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgY2hhciopIG11dGFibGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjIyZmJj
Zjg3YmUzNDA5N2M3Y2UyYWVkZGYwZGY0MzgxY2MzMDA4Yi4uYmVlMTA0MDU1ODk0NWMxZmE5ZWJh
Y2ExNTJjYjcwMDc1MGQ3MDhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMCw2ICsxMCw4IEBACiAJCTFDMDIzRDNGMjc0NDkwNzAw
MDFEQjczNCAvKiBXR1NMTGV4ZXJUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDIzRDNFMjc0NDkwNzAwMDFEQjczNCAvKiBXR1NMTGV4ZXJU
ZXN0cy5tbSAqLzsgfTsKIAkJMUMwMjNENDAyNzQ0OTA3MDAwMURCNzM0IC8qIGxpYndnc2wuYSBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRUJEN0Yy
MjcxNkIyQ0MwMEE1MjU0RCAvKiBsaWJ3Z3NsLmEgKi87IH07CiAJCTFDMDIzRDRCMjc0NDk1Qjkw
MDFEQjczNCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAyM0Q0QTI3NDQ5NUI5MDAxREI3MzQgLyog
SmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OworCQkxQzBGNDFFRTI4MDk0MDY1MDAwNTg4
NkQgLyogSGFyZHdhcmVMaW1pdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzBGNDFFQzI4MDk0MDY1MDAwNTg4NkQgLyogSGFyZHdhcmVMaW1pdHMu
bW0gKi87IH07CisJCTFDMEY0MUVGMjgwOTQwNjUwMDA1ODg2RCAvKiBIYXJkd2FyZUxpbWl0cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwRjQxRUQy
ODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3YXJlTGltaXRzLmggKi87IH07CiAJCTFDMkNFREVFMjcx
RThBNzMwMEVEQzE2RiAvKiBNZXRhbC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzJDRURFRDI3MUU4QTczMDBFREMxNkYgLyogTWV0
YWwuZnJhbWV3b3JrICovOyB9OwogCQkxQzMzNzU1RjI3RkEyM0I4MDAyRjE2NDQgLyogSXNWYWxp
ZFRvVXNlV2l0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUMzMzc1NUQyN0ZBMjNCODAwMkYxNjQ0IC8qIElzVmFsaWRUb1VzZVdpdGguaCAqLzsgfTsK
IAkJMUM1MzE5QzAyN0JEQzZDQzAwQ0QxMjdFIC8qIG1haW4uc3dpZnQgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUzMTlCRjI3QkRDNkNDMDBDRDEyN0Ug
LyogbWFpbi5zd2lmdCAqLzsgfTsKQEAgLTEzMSw2ICsxMzMsOCBAQAogCQkxQzAyM0QzRTI3NDQ5
MDcwMDAxREI3MzQgLyogV0dTTExleGVyVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
R1NMTGV4ZXJUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMjNENDcy
NzQ0OTE2RDAwMURCNzM0IC8qIFdHU0xVbml0VGVzdHMueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
V0dTTFVuaXRUZXN0cy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMw
MjNENEEyNzQ0OTVCOTAwMURCNzM0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3
b3JrOyBwYXRoID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQkxQzBGNDFFQzI4MDk0MDY1MDAwNTg4NkQgLyogSGFyZHdhcmVM
aW1pdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIYXJkd2FyZUxpbWl0cy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwRjQxRUQyODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3
YXJlTGltaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhcmR3YXJlTGltaXRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDMkNFREVEMjcxRThBNzMwMEVEQzE2RiAvKiBNZXRhbC5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IE1ldGFsLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvTWV0YWwuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsg
fTsKIAkJMUMzMzc1NUQyN0ZBMjNCODAwMkYxNjQ0IC8qIElzVmFsaWRUb1VzZVdpdGguaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSXNWYWxpZFRvVXNlV2l0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzUzMTlCRDI3QkRDNkNCMDBDRDEyN0UgLyogQ29tbWFuZExpbmVQbGF5Z3JvdW5kICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQu
bWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBDb21tYW5kTGlu
ZVBsYXlncm91bmQ7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0zNDQs
NiArMzQ4LDggQEAKIAkJCQkxQzVBQ0E5QjI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLmggKi8s
CiAJCQkJMUM1QUNBQTMyNzNBNDI2RDAwOTVGOEQ1IC8qIERldmljZS5tbSAqLywKIAkJCQkxQ0VC
RDgwQjI3MTZDMzc5MDBBNTI1NEQgLyogRXhwb3J0TWFjcm9zLmggKi8sCisJCQkJMUMwRjQxRUQy
ODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3YXJlTGltaXRzLmggKi8sCisJCQkJMUMwRjQxRUMyODA5
NDA2NTAwMDU4ODZEIC8qIEhhcmR3YXJlTGltaXRzLm1tICovLAogCQkJCTFDNUFDQUEwMjczQTQy
NkQwMDk1RjhENSAvKiBJbnN0YW5jZS5oICovLAogCQkJCTFDNUFDQTkyMjczQTQxQzIwMDk1RjhE
NSAvKiBJbnN0YW5jZS5tbSAqLywKIAkJCQkxQzMzNzU1RDI3RkEyM0I4MDAyRjE2NDQgLyogSXNW
YWxpZFRvVXNlV2l0aC5oICovLApAQCAtNDgxLDYgKzQ4Nyw3IEBACiAJCQkJMUM1ODMwMTgyN0Ux
NjgyMzAwOUI0MEYwIC8qIEFQSUNvbnZlcnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzVB
Q0FENzI3M0E0RDcwMDA5NUY4RDUgLyogQmluZEdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QzU4MkZGQTI3RTA0MTMxMDA5QjQwRjAgLyogQ29tbWFuZHNNaXhpbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMUMwRjQxRUYyODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3YXJlTGltaXRzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQzMzNzU1RjI3RkEyM0I4MDAyRjE2NDQgLyogSXNWYWxpZFRvVXNlV2l0
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFQkQ3RTcyNzE2QUZCQTAwQTUyNTREIC8qIFdlYkdQ
VS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM1QUNBRDMyNzNBNEM4NjAwOTVGOEQ1IC8qIFdlYkdQ
VUV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzEsNiArNzM4LDcgQEAKIAkJCQkxQzVBQ0FDNjI3
M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBhc3NFbmNvZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUM1QUNBQzAyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbXB1dGVQaXBlbGluZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTFDNUFDQUMxMjczQTQyNkQwMDk1RjhENSAvKiBEZXZpY2UubW0gaW4gU291
cmNlcyAqLywKKwkJCQkxQzBGNDFFRTI4MDk0MDY1MDAwNTg4NkQgLyogSGFyZHdhcmVMaW1pdHMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0E5NDI3M0E0MUMyMDA5NUY4RDUgLyogSW5zdGFu
Y2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0FFNTI3M0E1NUREMDA5NUY4RDUgLyogUGlw
ZWxpbmVMYXlvdXQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0FCRDI3M0E0MjZEMDA5NUY4
RDUgLyogUXVlcnlTZXQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0FkYXB0ZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaAppbmRl
eCA5ODYzZTY4ZTU5YWUwN2I2YjkyNGNjMmUxYmY1NjBhYzAwZDZhMjRiLi5jOGVmYTNkNjIzYzhm
MzI3MmEwNTI1NjM4MDA0NWExMzU5OGE2YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9BZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCkBAIC00
Miw5ICs0Miw5IEBAIGNsYXNzIEluc3RhbmNlOwogY2xhc3MgQWRhcHRlciA6IHB1YmxpYyBXR1BV
QWRhcHRlckltcGwsIHB1YmxpYyBSZWZDb3VudGVkPEFkYXB0ZXI+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFkYXB0ZXI+IGNyZWF0ZShp
ZDxNVExEZXZpY2U+IGRldmljZSwgSW5zdGFuY2UmIGluc3RhbmNlKQorICAgIHN0YXRpYyBSZWY8
QWRhcHRlcj4gY3JlYXRlKGlkPE1UTERldmljZT4gZGV2aWNlLCBJbnN0YW5jZSYgaW5zdGFuY2Us
IFdHUFVMaW1pdHMmJiBsaW1pdHMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBZGFwdGVyKGRldmljZSwgaW5zdGFuY2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQWRhcHRlcihkZXZpY2UsIGluc3RhbmNlLCBXVEZNb3ZlKGxpbWl0cykpKTsKICAgICB9CiAg
ICAgc3RhdGljIFJlZjxBZGFwdGVyPiBjcmVhdGVJbnZhbGlkKEluc3RhbmNlJiBpbnN0YW5jZSkK
ICAgICB7CkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFByb3BlcnRpZXMo
V0dQVUFkYXB0ZXJQcm9wZXJ0aWVzJik7CiAgICAgYm9vbCBoYXNGZWF0dXJlKFdHUFVGZWF0dXJl
TmFtZSk7CiAgICAgdm9pZCByZXF1ZXN0RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9y
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXR1BVUmVxdWVzdERldmljZVN0YXR1cywgUmVmPERl
dmljZT4mJiwgU3RyaW5nJiYpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIHJlcXVlc3RJbnZhbGlk
RGV2aWNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPERldmljZT4mJik+JiYpOwogCiAgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2U7IH0KICAgICB2b2lkIG1ha2VJ
bnZhbGlkKCkgeyBtX2RldmljZSA9IG5pbDsgfQpAQCAtNjYsMTEgKzY3LDEzIEBAIHB1YmxpYzoK
IAogCiBwcml2YXRlOgotICAgIEFkYXB0ZXIoaWQ8TVRMRGV2aWNlPiwgSW5zdGFuY2UmKTsKKyAg
ICBBZGFwdGVyKGlkPE1UTERldmljZT4sIEluc3RhbmNlJiwgV0dQVUxpbWl0cyYmKTsKICAgICBB
ZGFwdGVyKEluc3RhbmNlJik7CiAKICAgICBpZDxNVExEZXZpY2U+IG1fZGV2aWNlIHsgbmlsIH07
CiAgICAgY29uc3QgUmVmPEluc3RhbmNlPiBtX2luc3RhbmNlOworCisgICAgV0dQVUxpbWl0cyBt
X2xpbWl0cyB7IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFw
dGVyLm1tCmluZGV4IDdlNDNlMTkzMDdkNDIwMzZlNTliZjhmYzg3M2VhZGRhNTMxZWFmNGEuLjRk
MjFmNTQ0MTM1MDA0Zjg4MmQxZjE1MTRhMWFkOTQ2ZjZjMjZlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRh
cHRlci5tbQpAQCAtMjgsMTQgKzI4LDE2IEBACiAKICNpbXBvcnQgIkFQSUNvbnZlcnNpb25zLmgi
CiAjaW1wb3J0ICJEZXZpY2UuaCIKKyNpbXBvcnQgIkhhcmR3YXJlTGltaXRzLmgiCiAjaW1wb3J0
ICJJbnN0YW5jZS5oIgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKIAotQWRhcHRlcjo6QWRhcHRlcihpZDxNVExEZXZpY2U+IGRldmljZSwgSW5zdGFu
Y2UmIGluc3RhbmNlKQorQWRhcHRlcjo6QWRhcHRlcihpZDxNVExEZXZpY2U+IGRldmljZSwgSW5z
dGFuY2UmIGluc3RhbmNlLCBXR1BVTGltaXRzJiYgbGltaXRzKQogICAgIDogbV9kZXZpY2UoZGV2
aWNlKQogICAgICwgbV9pbnN0YW5jZShpbnN0YW5jZSkKKyAgICAsIG1fbGltaXRzKFdURk1vdmUo
bGltaXRzKSkKIHsKIH0KIApAQCAtNzksMzggKzgxLDYgQEAgYm9vbCBBZGFwdGVyOjpoYXNGZWF0
dXJlKFdHUFVGZWF0dXJlTmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29s
IGRldmljZU1lZXRzUmVxdWlyZWRMaW1pdHMoaWQ8TVRMRGV2aWNlPiwgY29uc3QgV0dQVVJlcXVp
cmVkTGltaXRzJiByZXF1aXJlZExpbWl0cykKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMuCi0gICAgcmV0dXJuICFyZXF1aXJlZExpbWl0cy5uZXh0SW5DaGFpbgotICAgICAgICAmJiAh
cmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24xRAotICAgICAgICAmJiAh
cmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRAotICAgICAgICAmJiAh
cmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRAotICAgICAgICAmJiAh
cmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFRleHR1cmVBcnJheUxheWVycwotICAgICAgICAmJiAh
cmVxdWlyZWRMaW1pdHMubGltaXRzLm1heEJpbmRHcm91cHMKLSAgICAgICAgJiYgIXJlcXVpcmVk
TGltaXRzLmxpbWl0cy5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dAot
ICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heER5bmFtaWNTdG9yYWdlQnVmZmVy
c1BlclBpcGVsaW5lTGF5b3V0Ci0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4
U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRz
LmxpbWl0cy5tYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlCi0gICAgICAgICYmICFyZXF1aXJlZExp
bWl0cy5saW1pdHMubWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZQotICAgICAgICAmJiAh
cmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlCi0g
ICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFk
ZXJTdGFnZQotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFVuaWZvcm1CdWZm
ZXJCaW5kaW5nU2l6ZQotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFN0b3Jh
Z2VCdWZmZXJCaW5kaW5nU2l6ZQotICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1p
blVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQKLSAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRz
LmxpbWl0cy5taW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50Ci0gICAgICAgICYmICFyZXF1
aXJlZExpbWl0cy5saW1pdHMubWF4VmVydGV4QnVmZmVycwotICAgICAgICAmJiAhcmVxdWlyZWRM
aW1pdHMubGltaXRzLm1heFZlcnRleEF0dHJpYnV0ZXMKLSAgICAgICAgJiYgIXJlcXVpcmVkTGlt
aXRzLmxpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZQotICAgICAgICAmJiAhcmVxdWly
ZWRMaW1pdHMubGltaXRzLm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzCi0gICAgICAgICYm
ICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplCi0g
ICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVy
V29ya2dyb3VwCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4Q29tcHV0ZVdv
cmtncm91cFNpemVYCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4Q29tcHV0
ZVdvcmtncm91cFNpemVZCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4Q29t
cHV0ZVdvcmtncm91cFNpemVaCi0gICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4
Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb247Ci19Ci0KIHZvaWQgQWRhcHRlcjo6cmVxdWVz
dERldmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXR1BVUmVxdWVzdERldmljZVN0YXR1cywgUmVmPERldmljZT4mJiwgU3Ry
aW5nJiYpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNoYWluKSB7
CkBAIC0xMjcsMTYgKzk3LDQzIEBAIHZvaWQgQWRhcHRlcjo6cmVxdWVzdERldmljZShjb25zdCBX
R1BVRGV2aWNlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgQ29tcGxldGlvbkhhCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZExpbWl0cyAmJiAhZGV2
aWNlTWVldHNSZXF1aXJlZExpbWl0cyhtX2RldmljZSwgKmRlc2NyaXB0b3IucmVxdWlyZWRMaW1p
dHMpKSB7Ci0gICAgICAgIGluc3RhbmNlKCkuc2NoZWR1bGVXb3JrKFtzdHJvbmdUaGlzID0gUmVm
IHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX0Vycm9yLCBEZXZpY2U6
OmNyZWF0ZUludmFsaWQoc3Ryb25nVGhpcyksICJEZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCByZXF1
ZXN0ZWQgbGltaXRzIl9zKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKKyAgICBhdXRv
IGxpbWl0cyA9IG1fbGltaXRzOworCisgICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWRMaW1pdHMp
IHsKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWRMaW1pdHMtPm5leHRJbkNoYWluKSB7
CisgICAgICAgICAgICBpbnN0YW5jZSgpLnNjaGVkdWxlV29yayhbc3Ryb25nVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfRXJyb3IsIERldmlj
ZTo6Y3JlYXRlSW52YWxpZChzdHJvbmdUaGlzKSwgIlVua25vd24gZGVzY3JpcHRvciB0eXBlIl9z
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFXZWJHUFU6OmlzVmFsaWQoZGVzY3JpcHRvci5yZXF1aXJlZExpbWl0cy0+bGlt
aXRzKSkgeworICAgICAgICAgICAgaW5zdGFuY2UoKS5zY2hlZHVsZVdvcmsoW3N0cm9uZ1RoaXMg
PSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUg
eworICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX0Vycm9y
LCBEZXZpY2U6OmNyZWF0ZUludmFsaWQoc3Ryb25nVGhpcyksICJEZXZpY2UgZG9lcyBub3Qgc3Vw
cG9ydCByZXF1ZXN0ZWQgbGltaXRzIl9zKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFueUxpbWl0SXNCZXR0ZXJUaGFuKGRl
c2NyaXB0b3IucmVxdWlyZWRMaW1pdHMtPmxpbWl0cywgbV9saW1pdHMpKSB7CisgICAgICAgICAg
ICBpbnN0YW5jZSgpLnNjaGVkdWxlV29yayhbc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
Y2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfRXJyb3IsIERldmljZTo6Y3JlYXRlSW52
YWxpZChzdHJvbmdUaGlzKSwgIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHJlcXVlc3RlZCBsaW1p
dHMiX3MpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBsaW1pdHMgPSBkZXNjcmlwdG9yLnJlcXVpcmVkTGltaXRzLT5saW1pdHM7CiAg
ICAgfQogCiAgICAgYXV0byBsYWJlbCA9IGZyb21BUEkoZGVzY3JpcHRvci5sYWJlbCk7Ci0gICAg
aW5zdGFuY2UoKS5zY2hlZHVsZVdvcmsoW3N0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBsYWJl
bCA9IFdURk1vdmUobGFiZWwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFi
bGUgewotICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19TdWNjZXNzLCBE
ZXZpY2U6OmNyZWF0ZShzdHJvbmdUaGlzLT5tX2RldmljZSwgV1RGTW92ZShsYWJlbCksIHN0cm9u
Z1RoaXMpLCB7IH0pOworICAgIGluc3RhbmNlKCkuc2NoZWR1bGVXb3JrKFtzdHJvbmdUaGlzID0g
UmVmIHsgKnRoaXMgfSwgbGFiZWwgPSBXVEZNb3ZlKGxhYmVsKSwgbGltaXRzID0gV1RGTW92ZShs
aW1pdHMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAg
ICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19TdWNjZXNzLCBEZXZpY2U6OmNyZWF0
ZShzdHJvbmdUaGlzLT5tX2RldmljZSwgV1RGTW92ZShsYWJlbCksIFdURk1vdmUobGltaXRzKSwg
c3Ryb25nVGhpcyksIHsgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgQWRhcHRlcjo6cmVxdWVzdElu
dmFsaWREZXZpY2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RGV2aWNlPiYmKT4mJiBjYWxs
YmFjaykKK3sKKyAgICBpbnN0YW5jZSgpLnNjaGVkdWxlV29yayhbc3Ryb25nVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAg
ICAgIGNhbGxiYWNrKERldmljZTo6Y3JlYXRlSW52YWxpZChzdHJvbmdUaGlzKSk7CiAgICAgfSk7
CiB9CiAKQEAgLTE4MiwzICsxNzksMTAgQEAgdm9pZCB3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2VX
aXRoQmxvY2soV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVURldmljZURlc2NyaXB0b3IKICAgICAg
ICAgY2FsbGJhY2soc3RhdHVzLCBXZWJHUFU6OnJlbGVhc2VUb0FQSShXVEZNb3ZlKGRldmljZSkp
LCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0pOwogfQorCit2b2lkIHdncHVBZGFwdGVy
UmVxdWVzdEludmFsaWREZXZpY2VXaXRoQmxvY2soV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVVJl
cXVlc3RJbnZhbGlkRGV2aWNlQmxvY2tDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBXZWJHUFU6
OmZyb21BUEkoYWRhcHRlcikucmVxdWVzdEludmFsaWREZXZpY2UoW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKFJlZjxXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UpIHsKKyAgICAgICAgY2Fs
bGJhY2soV2ViR1BVOjpyZWxlYXNlVG9BUEkoV1RGTW92ZShkZXZpY2UpKSk7CisgICAgfSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0RldmljZS5oCmluZGV4IDM2MGYzOTIzYzgzZDEzYTY3OTM2OTBmZWFiZmMwNjdk
ZGMxZWQ5NDAuLjhjMTBhMTdhY2QwZDQ1NmY5ZDJiMGI3MWMyNmJmNTQyNTlhYTc4NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0RldmljZS5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIFRleHR1cmU7CiBjbGFzcyBE
ZXZpY2UgOiBwdWJsaWMgV0dQVURldmljZUltcGwsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxEZXZpY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGV2aWNlPiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEZXZpY2U+IGNyZWF0ZShp
ZDxNVExEZXZpY2U+LCBTdHJpbmcmJiBkZXZpY2VMYWJlbCwgQWRhcHRlciYpOworICAgIHN0YXRp
YyBSZWY8RGV2aWNlPiBjcmVhdGUoaWQ8TVRMRGV2aWNlPiwgU3RyaW5nJiYgZGV2aWNlTGFiZWws
IFdHUFVMaW1pdHMmJiwgQWRhcHRlciYpOwogICAgIHN0YXRpYyBSZWY8RGV2aWNlPiBjcmVhdGVJ
bnZhbGlkKEFkYXB0ZXImIGFkYXB0ZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEZXZpY2UoYWRhcHRlcikpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc1VuaWZpZWRNZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX2RldmljZS5oYXNVbmlmaWVk
TWVtb3J5OyB9CiAKIHByaXZhdGU6Ci0gICAgRGV2aWNlKGlkPE1UTERldmljZT4sIGlkPE1UTENv
bW1hbmRRdWV1ZT4gZGVmYXVsdFF1ZXVlLCBBZGFwdGVyJik7CisgICAgRGV2aWNlKGlkPE1UTERl
dmljZT4sIGlkPE1UTENvbW1hbmRRdWV1ZT4gZGVmYXVsdFF1ZXVlLCBXR1BVTGltaXRzJiYsIEFk
YXB0ZXImKTsKICAgICBEZXZpY2UoQWRhcHRlciYpOwogCiAgICAgc3RydWN0IEVycm9yU2NvcGU7
CkBAIC0xMzgsNiArMTM4LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNMb3N0IHsgZmFsc2Ug
fTsKICAgICBpZDxOU09iamVjdD4gbV9kZXZpY2VPYnNlcnZlciB7IG5pbCB9OwogCisgICAgV0dQ
VUxpbWl0cyBtX2xpbWl0cyB7IH07CisKICAgICBjb25zdCBSZWY8QWRhcHRlcj4gbV9hZGFwdGVy
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCmluZGV4IDM1MTZlZGM4YTQ2Y2JkZDhiMTZlZDBl
Y2RiOTJmMjk1NWI0ZjliMzguLmYwOGJhYWFkOWVjNmJiYTNiOGIxMzk2OWUwMjQ1NDdhZTcyODc0
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KQEAgLTQ3LDcgKzQ3LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkdQVSB7CiAKLVJlZjxEZXZpY2U+IERldmljZTo6Y3JlYXRlKGlkPE1UTERldmljZT4gZGV2
aWNlLCBTdHJpbmcmJiBkZXZpY2VMYWJlbCwgQWRhcHRlciYgYWRhcHRlcikKK1JlZjxEZXZpY2U+
IERldmljZTo6Y3JlYXRlKGlkPE1UTERldmljZT4gZGV2aWNlLCBTdHJpbmcmJiBkZXZpY2VMYWJl
bCwgV0dQVUxpbWl0cyYmIGxpbWl0cywgQWRhcHRlciYgYWRhcHRlcikKIHsKICAgICBpZDxNVExD
b21tYW5kUXVldWU+IGNvbW1hbmRRdWV1ZSA9IFtkZXZpY2UgbmV3Q29tbWFuZFF1ZXVlXTsKICAg
ICBpZiAoIWNvbW1hbmRRdWV1ZSkKQEAgLTU5LDEyICs1OSwxMyBAQCBSZWY8RGV2aWNlPiBEZXZp
Y2U6OmNyZWF0ZShpZDxNVExEZXZpY2U+IGRldmljZSwgU3RyaW5nJiYgZGV2aWNlTGFiZWwsIEFk
YXB0ZXImCiAgICAgaWYgKCFkZXZpY2VMYWJlbC5pc0VtcHR5KCkpCiAgICAgICAgIGNvbW1hbmRR
dWV1ZS5sYWJlbCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRGVmYXVsdCBxdWV1ZSBm
b3IgZGV2aWNlICVzIiwgZGV2aWNlTGFiZWwudXRmOCgpLmRhdGEoKV07CiAKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEZXZpY2UoZGV2aWNlLCBjb21tYW5kUXVldWUsIGFkYXB0ZXIpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXZpY2UoZGV2aWNlLCBjb21tYW5kUXVldWUsIFdURk1v
dmUobGltaXRzKSwgYWRhcHRlcikpOwogfQogCi1EZXZpY2U6OkRldmljZShpZDxNVExEZXZpY2U+
IGRldmljZSwgaWQ8TVRMQ29tbWFuZFF1ZXVlPiBkZWZhdWx0UXVldWUsIEFkYXB0ZXImIGFkYXB0
ZXIpCitEZXZpY2U6OkRldmljZShpZDxNVExEZXZpY2U+IGRldmljZSwgaWQ8TVRMQ29tbWFuZFF1
ZXVlPiBkZWZhdWx0UXVldWUsIFdHUFVMaW1pdHMmJiBsaW1pdHMsIEFkYXB0ZXImIGFkYXB0ZXIp
CiAgICAgOiBtX2RldmljZShkZXZpY2UpCiAgICAgLCBtX2RlZmF1bHRRdWV1ZShRdWV1ZTo6Y3Jl
YXRlKGRlZmF1bHRRdWV1ZSwgKnRoaXMpKQorICAgICwgbV9saW1pdHMoV1RGTW92ZShsaW1pdHMp
KQogICAgICwgbV9hZGFwdGVyKGFkYXB0ZXIpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvSGFyZHdhcmVMaW1pdHMuaCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0hhcmR3YXJlTGltaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQyNTNlNzhmNjQ3OGRiYWZk
MDQ5ZWJjYTQ3OGYzYWQ0ZGRmNTNlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0hhcmR3YXJlTGltaXRzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDxvcHRpb25hbD4KKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK3N0ZDo6b3B0aW9uYWw8V0dQ
VUxpbWl0cz4gbGltaXRzKGlkPE1UTERldmljZT4pOworYm9vbCBpc1ZhbGlkKGNvbnN0IFdHUFVM
aW1pdHMmKTsKK2Jvb2wgYW55TGltaXRJc0JldHRlclRoYW4oY29uc3QgV0dQVUxpbWl0cyYgdGFy
Z2V0LCBjb25zdCBXR1BVTGltaXRzJiByZWZlcmVuY2UpOworCit9IC8vIG5hbWVzcGFjZSBXZWJH
UFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0hhcmR3YXJlTGltaXRzLm1tIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvSGFyZHdhcmVMaW1pdHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmZlMTcy
OWNkYTJjYmRhZWJiZGE0ZDIzNDAxM2M3NTJkOGVjYzgzZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0hhcmR3YXJlTGltaXRzLm1tCkBAIC0wLDAgKzEsNDQ5IEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJIYXJkd2FyZUxpbWl0cy5oIgorCisjaW1wb3J0IDxhbGdvcml0aG0+
CisjaW1wb3J0IDxsaW1pdHM+CisjaW1wb3J0IDx3dGYvTWF0aEV4dHJhcy5oPgorI2ltcG9ydCA8
d3RmL1BhZ2VCbG9jay5oPgorI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgV2ViR1BVIHsKKworLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL21ldGFsL01ldGFs
LUZlYXR1cmUtU2V0LVRhYmxlcy5wZGYKKworLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
cHV3ZWIvZ3B1d2ViL2lzc3Vlcy8yNzQ5IHdlIG5lZWQgbW9yZSBsaW1pdHMuCisKK3N0YXRpYyBX
R1BVTGltaXRzIGFwcGxlMygpCit7CisgICAgdWludDMyX3QgbWF4QmluZEdyb3VwcyA9IDMwOwor
CisgICAgcmV0dXJuIFdHUFVMaW1pdHMgeworICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9u
MUQgKi8gICAgMTYzODQsCisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24yRCAqLyAgICAx
NjM4NCwKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjNEICovICAgIDIwNDgsCisgICAg
ICAgIC8qIG1heFRleHR1cmVBcnJheUxheWVycyAqLyAgICAyMDQ4LAorICAgICAgICAvKiBtYXhC
aW5kR3JvdXBzICovICAgIG1heEJpbmRHcm91cHMsCisgICAgICAgIC8qIG1heER5bmFtaWNVbmlm
b3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0ICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlw
ZWxpbmVMYXlvdXQgKi8gICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLAor
ICAgICAgICAvKiBtYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5k
R3JvdXBzICogMzEsCisgICAgICAgIC8qIG1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAg
bWF4QmluZEdyb3VwcyAqIDE2LAorICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRl
clN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiAzMSwKKyAgICAgICAgLyogbWF4U3RvcmFnZVRl
eHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDMxLAorICAgICAgICAv
KiBtYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiAz
MSwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplICovICAgIDAsIC8vIFRv
IGJlIGZpbGxlZCBpbiBieSB0aGUgY2FsbGVyLgorICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVy
QmluZGluZ1NpemUgKi8gICAgMCwgLy8gVG8gYmUgZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisg
ICAgICAgIC8qIG1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgNCwKKyAgICAg
ICAgLyogbWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICA0LAorICAgICAgICAv
KiBtYXhWZXJ0ZXhCdWZmZXJzICovICAgIDMwLAorICAgICAgICAvKiBtYXhWZXJ0ZXhBdHRyaWJ1
dGVzICovICAgIDMxLAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSAqLyAg
ICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8qIG1heElu
dGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzICovICAgIDYwLAorICAgICAgICAvKiBtYXhDb21wdXRl
V29ya2dyb3VwU3RvcmFnZVNpemUgKi8gICAgMTYgKiBLQiwKKyAgICAgICAgLyogbWF4Q29tcHV0
ZUludm9jYXRpb25zUGVyV29ya2dyb3VwICovICAgIDUxMiwKKyAgICAgICAgLyogbWF4Q29tcHV0
ZVdvcmtncm91cFNpemVYICovICAgIDUxMiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91
cFNpemVZICovICAgIDUxMiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVaICov
ICAgIDUxMiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24gKi8g
ICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLAorICAgIH07Cit9CisKK3N0
YXRpYyBXR1BVTGltaXRzIGFwcGxlNCgpCit7CisgICAgdWludDMyX3QgbWF4QmluZEdyb3VwcyA9
IDMwOworCisgICAgcmV0dXJuIFdHUFVMaW1pdHMgeworICAgICAgICAvKiBtYXhUZXh0dXJlRGlt
ZW5zaW9uMUQgKi8gICAgMTYzODQsCisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24yRCAq
LyAgICAxNjM4NCwKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjNEICovICAgIDIwNDgs
CisgICAgICAgIC8qIG1heFRleHR1cmVBcnJheUxheWVycyAqLyAgICAyMDQ4LAorICAgICAgICAv
KiBtYXhCaW5kR3JvdXBzICovICAgIG1heEJpbmRHcm91cHMsCisgICAgICAgIC8qIG1heER5bmFt
aWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0ICovICAgIHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJz
UGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpLAorICAgICAgICAvKiBtYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSAqLyAgICBt
YXhCaW5kR3JvdXBzICogOTYsCisgICAgICAgIC8qIG1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2Ug
Ki8gICAgbWF4QmluZEdyb3VwcyAqIDE2LAorICAgICAgICAvKiBtYXhTdG9yYWdlQnVmZmVyc1Bl
clNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA5NiwKKyAgICAgICAgLyogbWF4U3Rv
cmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDk2LAorICAg
ICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91
cHMgKiA5NiwKKyAgICAgICAgLyogbWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplICovICAgIDAs
IC8vIFRvIGJlIGZpbGxlZCBpbiBieSB0aGUgY2FsbGVyLgorICAgICAgICAvKiBtYXhTdG9yYWdl
QnVmZmVyQmluZGluZ1NpemUgKi8gICAgMCwgLy8gVG8gYmUgZmlsbGVkIGluIGJ5IHRoZSBjYWxs
ZXIuCisgICAgICAgIC8qIG1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQgKi8gICAgNCwK
KyAgICAgICAgLyogbWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCAqLyAgICA0LAorICAg
ICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJzICovICAgIDMwLAorICAgICAgICAvKiBtYXhWZXJ0ZXhB
dHRyaWJ1dGVzICovICAgIDMxLAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlk
ZSAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8q
IG1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzICovICAgIDEyNCwKKyAgICAgICAgLyogbWF4
Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplICovICAgIDMyICogS0IsCisgICAgICAgIC8qIG1h
eENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cCAqLyAgICAxMDI0LAorICAgICAgICAvKiBt
YXhDb21wdXRlV29ya2dyb3VwU2l6ZVggKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29tcHV0
ZVdvcmtncm91cFNpemVZICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3Jv
dXBTaXplWiAqLyAgICAxMDI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3Vwc1BlckRp
bWVuc2lvbiAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAg
fTsKK30KKworc3RhdGljIFdHUFVMaW1pdHMgYXBwbGU1KCkKK3sKKyAgICB1aW50MzJfdCBtYXhC
aW5kR3JvdXBzID0gMzA7CisKKyAgICByZXR1cm4gV0dQVUxpbWl0cyB7CisgICAgICAgIC8qIG1h
eFRleHR1cmVEaW1lbnNpb24xRCAqLyAgICAxNjM4NCwKKyAgICAgICAgLyogbWF4VGV4dHVyZURp
bWVuc2lvbjJEICovICAgIDE2Mzg0LAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uM0Qg
Ki8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4VGV4dHVyZUFycmF5TGF5ZXJzICovICAgIDIwNDgs
CisgICAgICAgIC8qIG1heEJpbmRHcm91cHMgKi8gICAgbWF4QmluZEdyb3VwcywKKyAgICAgICAg
LyogbWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQgKi8gICAgc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLAorICAgICAgICAvKiBtYXhEeW5hbWljU3Rv
cmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCksCisgICAgICAgIC8qIG1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0
YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA5NiwKKyAgICAgICAgLyogbWF4U2FtcGxlcnNQZXJT
aGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBzICogMTYsCisgICAgICAgIC8qIG1heFN0b3Jh
Z2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDk2LAorICAgICAg
ICAvKiBtYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBz
ICogOTYsCisgICAgICAgIC8qIG1heFVuaWZvcm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAg
bWF4QmluZEdyb3VwcyAqIDk2LAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1Np
emUgKi8gICAgMCwgLy8gVG8gYmUgZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8q
IG1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAwLCAvLyBUbyBiZSBmaWxsZWQgaW4g
YnkgdGhlIGNhbGxlci4KKyAgICAgICAgLyogbWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVu
dCAqLyAgICA0LAorICAgICAgICAvKiBtaW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICov
ICAgIDQsCisgICAgICAgIC8qIG1heFZlcnRleEJ1ZmZlcnMgKi8gICAgMzAsCisgICAgICAgIC8q
IG1heFZlcnRleEF0dHJpYnV0ZXMgKi8gICAgMzEsCisgICAgICAgIC8qIG1heFZlcnRleEJ1ZmZl
ckFycmF5U3RyaWRlICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwK
KyAgICAgICAgLyogbWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMgKi8gICAgMTI0LAorICAg
ICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUgKi8gICAgMzIgKiBLQiwKKyAg
ICAgICAgLyogbWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwICovICAgIDEwMjQsCisg
ICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCAqLyAgICAxMDI0LAorICAgICAgICAv
KiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkgKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29t
cHV0ZVdvcmtncm91cFNpemVaICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3Jr
Z3JvdXBzUGVyRGltZW5zaW9uICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKSwKKyAgICB9OworfQorCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpCitzdGF0aWMgV0dQVUxp
bWl0cyBhcHBsZTYoKQoreworICAgIHVpbnQzMl90IG1heEJpbmRHcm91cHMgPSAzMDsKKworICAg
IHJldHVybiBXR1BVTGltaXRzIHsKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjFEICov
ICAgIDE2Mzg0LAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uMkQgKi8gICAgMTYzODQs
CisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24zRCAqLyAgICAyMDQ4LAorICAgICAgICAv
KiBtYXhUZXh0dXJlQXJyYXlMYXllcnMgKi8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4QmluZEdy
b3VwcyAqLyAgICBtYXhCaW5kR3JvdXBzLAorICAgICAgICAvKiBtYXhEeW5hbWljVW5pZm9ybUJ1
ZmZlcnNQZXJQaXBlbGluZUxheW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90
Pjo6bWF4KCksCisgICAgICAgIC8qIG1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5l
TGF5b3V0ICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAg
ICAgLyogbWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3Vw
cyAqIDUwMDAwMCAvIDIsCisgICAgICAgIC8qIG1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UgKi8g
ICAgbWF4QmluZEdyb3VwcyAqIDEwMjQsCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJzUGVy
U2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDUwMDAwMCAvIDIsCisgICAgICAgIC8q
IG1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA1
MDAwMDAgLyAyLAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlICov
ICAgIG1heEJpbmRHcm91cHMgKiA1MDAwMDAgLyAyLAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVm
ZmVyQmluZGluZ1NpemUgKi8gICAgMCwgLy8gVG8gYmUgZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIu
CisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAwLCAvLyBUbyBi
ZSBmaWxsZWQgaW4gYnkgdGhlIGNhbGxlci4KKyAgICAgICAgLyogbWluVW5pZm9ybUJ1ZmZlck9m
ZnNldEFsaWdubWVudCAqLyAgICA0LAorICAgICAgICAvKiBtaW5TdG9yYWdlQnVmZmVyT2Zmc2V0
QWxpZ25tZW50ICovICAgIDQsCisgICAgICAgIC8qIG1heFZlcnRleEJ1ZmZlcnMgKi8gICAgMzAs
CisgICAgICAgIC8qIG1heFZlcnRleEF0dHJpYnV0ZXMgKi8gICAgMzEsCisgICAgICAgIC8qIG1h
eFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMy
X3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMgKi8g
ICAgMTI0LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUgKi8gICAg
MzIgKiBLQiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwICov
ICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCAqLyAgICAxMDI0
LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkgKi8gICAgMTAyNCwKKyAgICAg
ICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVaICovICAgIDEwMjQsCisgICAgICAgIC8qIG1h
eENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDMyX3Q+OjptYXgoKSwKKyAgICB9OworfQorCitzdGF0aWMgV0dQVUxpbWl0cyBhcHBsZTco
KQoreworICAgIHVpbnQzMl90IG1heEJpbmRHcm91cHMgPSAzMDsKKworICAgIHJldHVybiBXR1BV
TGltaXRzIHsKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjFEICovICAgIDE2Mzg0LAor
ICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uMkQgKi8gICAgMTYzODQsCisgICAgICAgIC8q
IG1heFRleHR1cmVEaW1lbnNpb24zRCAqLyAgICAyMDQ4LAorICAgICAgICAvKiBtYXhUZXh0dXJl
QXJyYXlMYXllcnMgKi8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4QmluZEdyb3VwcyAqLyAgICBt
YXhCaW5kR3JvdXBzLAorICAgICAgICAvKiBtYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBl
bGluZUxheW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisg
ICAgICAgIC8qIG1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0ICovICAg
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAgICAgLyogbWF4U2Ft
cGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIDUwMDAwMCAv
IDIsCisgICAgICAgIC8qIG1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdy
b3VwcyAqIDEwMjQsCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2Ug
Ki8gICAgbWF4QmluZEdyb3VwcyAqIDUwMDAwMCAvIDIsCisgICAgICAgIC8qIG1heFN0b3JhZ2VU
ZXh0dXJlc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiA1MDAwMDAgLyAyLAor
ICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRH
cm91cHMgKiA1MDAwMDAgLyAyLAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1Np
emUgKi8gICAgMCwgLy8gVG8gYmUgZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIC8q
IG1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAwLCAvLyBUbyBiZSBmaWxsZWQgaW4g
YnkgdGhlIGNhbGxlci4KKyAgICAgICAgLyogbWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVu
dCAqLyAgICA0LAorICAgICAgICAvKiBtaW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50ICov
ICAgIDQsCisgICAgICAgIC8qIG1heFZlcnRleEJ1ZmZlcnMgKi8gICAgMzAsCisgICAgICAgIC8q
IG1heFZlcnRleEF0dHJpYnV0ZXMgKi8gICAgMzEsCisgICAgICAgIC8qIG1heFZlcnRleEJ1ZmZl
ckFycmF5U3RyaWRlICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwK
KyAgICAgICAgLyogbWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMgKi8gICAgMTI0LAorICAg
ICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUgKi8gICAgMzIgKiBLQiwKKyAg
ICAgICAgLyogbWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwICovICAgIDEwMjQsCisg
ICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCAqLyAgICAxMDI0LAorICAgICAgICAv
KiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkgKi8gICAgMTAyNCwKKyAgICAgICAgLyogbWF4Q29t
cHV0ZVdvcmtncm91cFNpemVaICovICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3Jr
Z3JvdXBzUGVyRGltZW5zaW9uICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKSwKKyAgICB9OworfQorI2VuZGlmCisKK3N0YXRpYyBXR1BVTGltaXRzIG1hYzIoaWQ8TVRM
RGV2aWNlPiBkZXZpY2UpCit7CisgICAgdWludDMyX3QgYnVmZmVyc1BlckJpbmRHcm91cCA9IDA7
CisgICAgdWludDMyX3QgdGV4dHVyZXNQZXJCaW5kR3JvdXAgPSAwOworICAgIHVpbnQzMl90IHNh
bXBsZXJzUGVyQmluZEdyb3VwID0gMDsKKyAgICBzd2l0Y2ggKFtkZXZpY2UgYXJndW1lbnRCdWZm
ZXJzU3VwcG9ydF0pIHsKKyAgICBjYXNlIE1UTEFyZ3VtZW50QnVmZmVyc1RpZXIxOgorICAgICAg
ICBidWZmZXJzUGVyQmluZEdyb3VwID0gNjQ7CisgICAgICAgIHRleHR1cmVzUGVyQmluZEdyb3Vw
ID0gMTI4OworICAgICAgICBzYW1wbGVyc1BlckJpbmRHcm91cCA9IDE2OworICAgICAgICBicmVh
azsKKyAgICBjYXNlIE1UTEFyZ3VtZW50QnVmZmVyc1RpZXIyOgorICAgICAgICBidWZmZXJzUGVy
QmluZEdyb3VwID0gNTAwMDAwIC8gMjsKKyAgICAgICAgdGV4dHVyZXNQZXJCaW5kR3JvdXAgPSA1
MDAwMDAgLyAyOworICAgICAgICBzYW1wbGVyc1BlckJpbmRHcm91cCA9IDEwMjQ7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIHVpbnQzMl90IG1heEJpbmRHcm91cHMgPSAzMDsKKworICAg
IHJldHVybiBXR1BVTGltaXRzIHsKKyAgICAgICAgLyogbWF4VGV4dHVyZURpbWVuc2lvbjFEICov
ICAgIDE2Mzg0LAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uMkQgKi8gICAgMTYzODQs
CisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNpb24zRCAqLyAgICAyMDQ4LAorICAgICAgICAv
KiBtYXhUZXh0dXJlQXJyYXlMYXllcnMgKi8gICAgMjA0OCwKKyAgICAgICAgLyogbWF4QmluZEdy
b3VwcyAqLyAgICBtYXhCaW5kR3JvdXBzLAorICAgICAgICAvKiBtYXhEeW5hbWljVW5pZm9ybUJ1
ZmZlcnNQZXJQaXBlbGluZUxheW91dCAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90
Pjo6bWF4KCksCisgICAgICAgIC8qIG1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5l
TGF5b3V0ICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwKKyAgICAg
ICAgLyogbWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3Vw
cyAqIHRleHR1cmVzUGVyQmluZEdyb3VwLAorICAgICAgICAvKiBtYXhTYW1wbGVyc1BlclNoYWRl
clN0YWdlICovICAgIG1heEJpbmRHcm91cHMgKiBzYW1wbGVyc1BlckJpbmRHcm91cCwKKyAgICAg
ICAgLyogbWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICBtYXhCaW5kR3JvdXBz
ICogYnVmZmVyc1BlckJpbmRHcm91cCwKKyAgICAgICAgLyogbWF4U3RvcmFnZVRleHR1cmVzUGVy
U2hhZGVyU3RhZ2UgKi8gICAgbWF4QmluZEdyb3VwcyAqIHRleHR1cmVzUGVyQmluZEdyb3VwLAor
ICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlICovICAgIG1heEJpbmRH
cm91cHMgKiBidWZmZXJzUGVyQmluZEdyb3VwLAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVy
QmluZGluZ1NpemUgKi8gICAgMCwgLy8gVG8gYmUgZmlsbGVkIGluIGJ5IHRoZSBjYWxsZXIuCisg
ICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSAqLyAgICAwLCAvLyBUbyBiZSBm
aWxsZWQgaW4gYnkgdGhlIGNhbGxlci4KKyAgICAgICAgLyogbWluVW5pZm9ybUJ1ZmZlck9mZnNl
dEFsaWdubWVudCAqLyAgICAyNTYsCisgICAgICAgIC8qIG1pblN0b3JhZ2VCdWZmZXJPZmZzZXRB
bGlnbm1lbnQgKi8gICAgMjU2LAorICAgICAgICAvKiBtYXhWZXJ0ZXhCdWZmZXJzICovICAgIDMw
LAorICAgICAgICAvKiBtYXhWZXJ0ZXhBdHRyaWJ1dGVzICovICAgIDMxLAorICAgICAgICAvKiBt
YXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSAqLyAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCksCisgICAgICAgIC8qIG1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzICov
ICAgIDMyLAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUgKi8gICAg
MzIgKiBLQiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwICov
ICAgIDEwMjQsCisgICAgICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCAqLyAgICAxMDI0
LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkgKi8gICAgMTAyNCwKKyAgICAg
ICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFNpemVaICovICAgIDEwMjQsCisgICAgICAgIC8qIG1h
eENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uICovICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDMyX3Q+OjptYXgoKSwKKyAgICB9OworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXR1BV
TGltaXRzPiByYXdMaW1pdHMoaWQ8TVRMRGV2aWNlPiBkZXZpY2UpCit7CisgICAgc3RkOjpvcHRp
b25hbDxXR1BVTGltaXRzPiByZXN1bHQ7CisKKyAgICBhdXRvIG1lcmdlID0gWyZdKGNvbnN0IFdH
UFVMaW1pdHMmIGxpbWl0cykgeworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAg
cmVzdWx0ID0gbGltaXRzOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jbGltaXQtY2xhc3MtbWF4aW11
bQorICAgICAgICBhdXRvIG1lcmdlTWF4aW11bSA9IFtdKGF1dG8gcHJldmlvdXMsIGF1dG8gbmV4
dCkgeworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHByZXZpb3VzLCBuZXh0KTsKKyAgICAg
ICAgfTsKKworICAgICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNsaW1p
dC1jbGFzcy1hbGlnbm1lbnQKKyAgICAgICAgYXV0byBtZXJnZUFsaWdubWVudCA9IFtdKGF1dG8g
cHJldmlvdXMsIGF1dG8gbmV4dCkgeworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKFdURjo6
cm91bmRVcFRvUG93ZXJPZlR3byhwcmV2aW91cyksIFdURjo6cm91bmRVcFRvUG93ZXJPZlR3byhu
ZXh0KSk7CisgICAgICAgIH07CisKKyAgICAgICAgcmVzdWx0LT5tYXhUZXh0dXJlRGltZW5zaW9u
MUQgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhUZXh0dXJlRGltZW5zaW9uMUQsIGxpbWl0cy5t
YXhUZXh0dXJlRGltZW5zaW9uMUQpOworICAgICAgICByZXN1bHQtPm1heFRleHR1cmVEaW1lbnNp
b24yRCA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heFRleHR1cmVEaW1lbnNpb24yRCwgbGltaXRz
Lm1heFRleHR1cmVEaW1lbnNpb24yRCk7CisgICAgICAgIHJlc3VsdC0+bWF4VGV4dHVyZURpbWVu
c2lvbjNEID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4VGV4dHVyZURpbWVuc2lvbjNELCBsaW1p
dHMubWF4VGV4dHVyZURpbWVuc2lvbjNEKTsKKyAgICAgICAgcmVzdWx0LT5tYXhUZXh0dXJlQXJy
YXlMYXllcnMgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhUZXh0dXJlQXJyYXlMYXllcnMsIGxp
bWl0cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMpOworICAgICAgICByZXN1bHQtPm1heEJpbmRHcm91
cHMgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhCaW5kR3JvdXBzLCBsaW1pdHMubWF4QmluZEdy
b3Vwcyk7CisgICAgICAgIHJlc3VsdC0+bWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxp
bmVMYXlvdXQgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQ
ZXJQaXBlbGluZUxheW91dCwgbGltaXRzLm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVs
aW5lTGF5b3V0KTsKKyAgICAgICAgcmVzdWx0LT5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQ
aXBlbGluZUxheW91dCA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heER5bmFtaWNTdG9yYWdlQnVm
ZmVyc1BlclBpcGVsaW5lTGF5b3V0LCBsaW1pdHMubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVy
UGlwZWxpbmVMYXlvdXQpOworICAgICAgICByZXN1bHQtPm1heFNhbXBsZWRUZXh0dXJlc1BlclNo
YWRlclN0YWdlID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4U2FtcGxlZFRleHR1cmVzUGVyU2hh
ZGVyU3RhZ2UsIGxpbWl0cy5tYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSk7CisgICAg
ICAgIHJlc3VsdC0+bWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSA9IG1lcmdlTWF4aW11bShyZXN1
bHQtPm1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UsIGxpbWl0cy5tYXhTYW1wbGVyc1BlclNoYWRl
clN0YWdlKTsKKyAgICAgICAgcmVzdWx0LT5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdl
ID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSwg
bGltaXRzLm1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UpOworICAgICAgICByZXN1bHQt
Pm1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+
bWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UsIGxpbWl0cy5tYXhTdG9yYWdlVGV4dHVy
ZXNQZXJTaGFkZXJTdGFnZSk7CisgICAgICAgIHJlc3VsdC0+bWF4VW5pZm9ybUJ1ZmZlcnNQZXJT
aGFkZXJTdGFnZSA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heFVuaWZvcm1CdWZmZXJzUGVyU2hh
ZGVyU3RhZ2UsIGxpbWl0cy5tYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlKTsKKyAgICAg
ICAgcmVzdWx0LT5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUgPSBtZXJnZU1heGltdW0ocmVz
dWx0LT5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUsIGxpbWl0cy5tYXhVbmlmb3JtQnVmZmVy
QmluZGluZ1NpemUpOworICAgICAgICByZXN1bHQtPm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6
ZSA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSwgbGlt
aXRzLm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSk7CisgICAgICAgIHJlc3VsdC0+bWluVW5p
Zm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCA9IG1lcmdlQWxpZ25tZW50KHJlc3VsdC0+bWluVW5p
Zm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCwgbGltaXRzLm1pblVuaWZvcm1CdWZmZXJPZmZzZXRB
bGlnbm1lbnQpOworICAgICAgICByZXN1bHQtPm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1l
bnQgPSBtZXJnZUFsaWdubWVudChyZXN1bHQtPm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1l
bnQsIGxpbWl0cy5taW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50KTsKKyAgICAgICAgcmVz
dWx0LT5tYXhWZXJ0ZXhCdWZmZXJzID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4VmVydGV4QnVm
ZmVycywgbGltaXRzLm1heFZlcnRleEJ1ZmZlcnMpOworICAgICAgICByZXN1bHQtPm1heFZlcnRl
eEF0dHJpYnV0ZXMgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhWZXJ0ZXhBdHRyaWJ1dGVzLCBs
aW1pdHMubWF4VmVydGV4QXR0cmlidXRlcyk7CisgICAgICAgIHJlc3VsdC0+bWF4VmVydGV4QnVm
ZmVyQXJyYXlTdHJpZGUgPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhWZXJ0ZXhCdWZmZXJBcnJh
eVN0cmlkZSwgbGltaXRzLm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlKTsKKyAgICAgICAgcmVz
dWx0LT5tYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cyA9IG1lcmdlTWF4aW11bShyZXN1bHQt
Pm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzLCBsaW1pdHMubWF4SW50ZXJTdGFnZVNoYWRl
ckNvbXBvbmVudHMpOworICAgICAgICByZXN1bHQtPm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdl
U2l6ZSA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6
ZSwgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSk7CisgICAgICAgIHJlc3Vs
dC0+bWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwID0gbWVyZ2VNYXhpbXVtKHJlc3Vs
dC0+bWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwLCBsaW1pdHMubWF4Q29tcHV0ZUlu
dm9jYXRpb25zUGVyV29ya2dyb3VwKTsKKyAgICAgICAgcmVzdWx0LT5tYXhDb21wdXRlV29ya2dy
b3VwU2l6ZVggPSBtZXJnZU1heGltdW0ocmVzdWx0LT5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgs
IGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgpOworICAgICAgICByZXN1bHQtPm1heENv
bXB1dGVXb3JrZ3JvdXBTaXplWSA9IG1lcmdlTWF4aW11bShyZXN1bHQtPm1heENvbXB1dGVXb3Jr
Z3JvdXBTaXplWSwgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSk7CisgICAgICAgIHJl
c3VsdC0+bWF4Q29tcHV0ZVdvcmtncm91cFNpemVaID0gbWVyZ2VNYXhpbXVtKHJlc3VsdC0+bWF4
Q29tcHV0ZVdvcmtncm91cFNpemVaLCBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaKTsK
KyAgICAgICAgcmVzdWx0LT5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbiA9IG1lcmdl
TWF4aW11bShyZXN1bHQtPm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uLCBsaW1pdHMu
bWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24pOworICAgIH07CisKKyAgICAvLyBUaGUg
ZmVhdHVyZSBzZXQgdGFibGVzIGRvIG5vdCBsaXN0IGxpbWl0cyBmb3IgTVRMR1BVRmFtaWx5Q29t
bW9uMSwgTVRMR1BVRmFtaWx5Q29tbW9uMiwgb3IgTVRMR1BVRmFtaWx5Q29tbW9uMy4KKyAgICAv
LyBNVExHUFVGYW1pbHlBcHBsZTEgYW5kIE1UTEdQVUZhbWlseUFwcGxlMiBhcmUgbm90IHN1cHBv
cnRlZC4KKyAgICBpZiAoW2RldmljZSBzdXBwb3J0c0ZhbWlseTpNVExHUFVGYW1pbHlBcHBsZTNd
KQorICAgICAgICBtZXJnZShhcHBsZTMoKSk7CisgICAgaWYgKFtkZXZpY2Ugc3VwcG9ydHNGYW1p
bHk6TVRMR1BVRmFtaWx5QXBwbGU0XSkKKyAgICAgICAgbWVyZ2UoYXBwbGU0KCkpOworICAgIGlm
IChbZGV2aWNlIHN1cHBvcnRzRmFtaWx5Ok1UTEdQVUZhbWlseUFwcGxlNV0pCisgICAgICAgIG1l
cmdlKGFwcGxlNSgpKTsKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykKKyAgICBpZiAoW2RldmljZSBz
dXBwb3J0c0ZhbWlseTpNVExHUFVGYW1pbHlBcHBsZTZdKQorICAgICAgICBtZXJnZShhcHBsZTYo
KSk7CisgICAgaWYgKFtkZXZpY2Ugc3VwcG9ydHNGYW1pbHk6TVRMR1BVRmFtaWx5QXBwbGU3XSkK
KyAgICAgICAgbWVyZ2UoYXBwbGU3KCkpOworI2VuZGlmCisgICAgLy8gTVRMR1BVRmFtaWx5TWFj
MSBpcyBub3Qgc3VwcG9ydGVkICh5ZXQ/KS4KKyAgICBpZiAoW2RldmljZSBzdXBwb3J0c0ZhbWls
eTpNVExHUFVGYW1pbHlNYWMyXSkKKyAgICAgICAgbWVyZ2UobWFjMihkZXZpY2UpKTsKKworICAg
IGlmIChyZXN1bHQpIHsKKyAgICAgICAgYXV0byBtYXhCdWZmZXJMZW5ndGggPSBkZXZpY2UubWF4
QnVmZmVyTGVuZ3RoOworICAgICAgICByZXN1bHQtPm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6
ZSA9IG1heEJ1ZmZlckxlbmd0aDsKKyAgICAgICAgcmVzdWx0LT5tYXhTdG9yYWdlQnVmZmVyQmlu
ZGluZ1NpemUgPSBtYXhCdWZmZXJMZW5ndGg7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworc3RhdGljIGJvb2wgY2hlY2tMaW1pdHMoY29uc3QgV0dQVUxpbWl0cyYgbGltaXRzKQor
eworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2xpbWl0LWRlZmF1bHQK
KyAgICBhdXRvIGRlZmF1bHRMaW1pdHMgPSBXR1BVTGltaXRzIHsKKyAgICAgICAgLyogbWF4VGV4
dHVyZURpbWVuc2lvbjFEICovICAgIDgxOTIsCisgICAgICAgIC8qIG1heFRleHR1cmVEaW1lbnNp
b24yRCAqLyAgICA4MTkyLAorICAgICAgICAvKiBtYXhUZXh0dXJlRGltZW5zaW9uM0QgKi8gICAg
MjA0OCwKKyAgICAgICAgLyogbWF4VGV4dHVyZUFycmF5TGF5ZXJzICovICAgIDI1NiwKKyAgICAg
ICAgLyogbWF4QmluZEdyb3VwcyAqLyAgICA0LAorICAgICAgICAvKiBtYXhEeW5hbWljVW5pZm9y
bUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCAqLyAgICA4LAorICAgICAgICAvKiBtYXhEeW5hbWlj
U3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCAqLyAgICA0LAorICAgICAgICAvKiBtYXhT
YW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSAqLyAgICAxNiwKKyAgICAgICAgLyogbWF4U2Ft
cGxlcnNQZXJTaGFkZXJTdGFnZSAqLyAgICAxNiwKKyAgICAgICAgLyogbWF4U3RvcmFnZUJ1ZmZl
cnNQZXJTaGFkZXJTdGFnZSAqLyAgICA4LAorICAgICAgICAvKiBtYXhTdG9yYWdlVGV4dHVyZXNQ
ZXJTaGFkZXJTdGFnZSAqLyAgICA0LAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyc1BlclNo
YWRlclN0YWdlICovICAgIDEyLAorICAgICAgICAvKiBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1Np
emUgKi8gICAgNjU1MzYsCisgICAgICAgIC8qIG1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSAq
LyAgICAxMzQyMTc3MjgsCisgICAgICAgIC8qIG1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1l
bnQgKi8gICAgMjU2LAorICAgICAgICAvKiBtaW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50
ICovICAgIDI1NiwKKyAgICAgICAgLyogbWF4VmVydGV4QnVmZmVycyAqLyAgICA4LAorICAgICAg
ICAvKiBtYXhWZXJ0ZXhBdHRyaWJ1dGVzICovICAgIDE2LAorICAgICAgICAvKiBtYXhWZXJ0ZXhC
dWZmZXJBcnJheVN0cmlkZSAqLyAgICAyMDQ4LAorICAgICAgICAvKiBtYXhJbnRlclN0YWdlU2hh
ZGVyQ29tcG9uZW50cyAqLyAgICAzMiwKKyAgICAgICAgLyogbWF4Q29tcHV0ZVdvcmtncm91cFN0
b3JhZ2VTaXplICovICAgIDE2MzUyLAorICAgICAgICAvKiBtYXhDb21wdXRlSW52b2NhdGlvbnNQ
ZXJXb3JrZ3JvdXAgKi8gICAgMjU2LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6
ZVggKi8gICAgMjU2LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkgKi8gICAg
MjU2LAorICAgICAgICAvKiBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVogKi8gICAgNjQsCisgICAg
ICAgIC8qIG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uICovICAgIDY1NTM1LAorICAg
IH07CisKKyAgICByZXR1cm4gIWFueUxpbWl0SXNCZXR0ZXJUaGFuKGRlZmF1bHRMaW1pdHMsIGxp
bWl0cyk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8V0dQVUxpbWl0cz4gbGltaXRzKGlkPE1UTERldmlj
ZT4gZGV2aWNlKQoreworICAgIGF1dG8gcmVzdWx0ID0gcmF3TGltaXRzKGRldmljZSk7CisKKyAg
ICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICgh
Y2hlY2tMaW1pdHMoKnJlc3VsdCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitib29sIGlzVmFsaWQoY29uc3QgV0dQVUxpbWl0cyYgbGlt
aXRzKQoreworICAgIHJldHVybiBpc1Bvd2VyT2ZUd28obGltaXRzLm1pblVuaWZvcm1CdWZmZXJP
ZmZzZXRBbGlnbm1lbnQpICYmIGlzUG93ZXJPZlR3byhsaW1pdHMubWluU3RvcmFnZUJ1ZmZlck9m
ZnNldEFsaWdubWVudCk7Cit9CisKK2Jvb2wgYW55TGltaXRJc0JldHRlclRoYW4oY29uc3QgV0dQ
VUxpbWl0cyYgdGFyZ2V0LCBjb25zdCBXR1BVTGltaXRzJiByZWZlcmVuY2UpCit7CisgICAgaWYg
KHRhcmdldC5tYXhUZXh0dXJlRGltZW5zaW9uMUQgPiByZWZlcmVuY2UubWF4VGV4dHVyZURpbWVu
c2lvbjFEKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFRleHR1cmVE
aW1lbnNpb24yRCA+IHJlZmVyZW5jZS5tYXhUZXh0dXJlRGltZW5zaW9uMkQpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4VGV4dHVyZURpbWVuc2lvbjNEID4gcmVmZXJl
bmNlLm1heFRleHR1cmVEaW1lbnNpb24zRCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KHRhcmdldC5tYXhUZXh0dXJlQXJyYXlMYXllcnMgPiByZWZlcmVuY2UubWF4VGV4dHVyZUFycmF5
TGF5ZXJzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heEJpbmRHcm91
cHMgPiByZWZlcmVuY2UubWF4QmluZEdyb3VwcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKHRhcmdldC5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCA+IHJl
ZmVyZW5jZS5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQ
ZXJQaXBlbGluZUxheW91dCA+IHJlZmVyZW5jZS5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQ
aXBlbGluZUxheW91dCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhT
YW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSA+IHJlZmVyZW5jZS5tYXhTYW1wbGVkVGV4dHVy
ZXNQZXJTaGFkZXJTdGFnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5t
YXhTYW1wbGVyc1BlclNoYWRlclN0YWdlID4gcmVmZXJlbmNlLm1heFNhbXBsZXJzUGVyU2hhZGVy
U3RhZ2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4U3RvcmFnZUJ1
ZmZlcnNQZXJTaGFkZXJTdGFnZSA+IHJlZmVyZW5jZS5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRl
clN0YWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFN0b3JhZ2VU
ZXh0dXJlc1BlclNoYWRlclN0YWdlID4gcmVmZXJlbmNlLm1heFN0b3JhZ2VUZXh0dXJlc1BlclNo
YWRlclN0YWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFVuaWZv
cm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UgPiByZWZlcmVuY2UubWF4VW5pZm9ybUJ1ZmZlcnNQZXJT
aGFkZXJTdGFnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhVbmlm
b3JtQnVmZmVyQmluZGluZ1NpemUgPiByZWZlcmVuY2UubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdT
aXplKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFN0b3JhZ2VCdWZm
ZXJCaW5kaW5nU2l6ZSA+IHJlZmVyZW5jZS5tYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWluVW5pZm9ybUJ1ZmZlck9mZnNl
dEFsaWdubWVudCA8IHJlZmVyZW5jZS5taW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1pblN0b3JhZ2VCdWZmZXJPZmZz
ZXRBbGlnbm1lbnQgPCByZWZlcmVuY2UubWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhWZXJ0ZXhCdWZmZXJzID4g
cmVmZXJlbmNlLm1heFZlcnRleEJ1ZmZlcnMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
ICh0YXJnZXQubWF4VmVydGV4QXR0cmlidXRlcyA+IHJlZmVyZW5jZS5tYXhWZXJ0ZXhBdHRyaWJ1
dGVzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heFZlcnRleEJ1ZmZl
ckFycmF5U3RyaWRlID4gcmVmZXJlbmNlLm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heEludGVyU3RhZ2VTaGFkZXJDb21w
b25lbnRzID4gcmVmZXJlbmNlLm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdl
U2l6ZSA+IHJlZmVyZW5jZS5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGlmICh0YXJnZXQubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29y
a2dyb3VwID4gcmVmZXJlbmNlLm1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhDb21wdXRlV29ya2dyb3VwU2l6
ZVggPiByZWZlcmVuY2UubWF4Q29tcHV0ZVdvcmtncm91cFNpemVYKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAodGFyZ2V0Lm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSA+IHJlZmVyZW5j
ZS5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
ICh0YXJnZXQubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaID4gcmVmZXJlbmNlLm1heENvbXB1dGVX
b3JrZ3JvdXBTaXplWikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRhcmdldC5tYXhD
b21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbiA+IHJlZmVyZW5jZS5tYXhDb21wdXRlV29ya2dy
b3Vwc1BlckRpbWVuc2lvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvSW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQpp
bmRleCA4ZWMwNjI2NmIzNDBhZjg1NGM1MTZiZTEzZjgxMDA4OTA2YWI3ODU3Li5hNjVjOTI2NjFi
ZWE4NjdmMWUyMzAxYmM1ZGFhZDI5NTI4YTE3OWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9JbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5t
bQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJBUElDb252ZXJzaW9ucy5oIgogI2ltcG9y
dCAiQWRhcHRlci5oIgorI2ltcG9ydCAiSGFyZHdhcmVMaW1pdHMuaCIKICNpbXBvcnQgIlN1cmZh
Y2UuaCIKICNpbXBvcnQgPGNzdHJpbmc+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KQEAgLTE4
Myw4ICsxODQsMTkgQEAgdm9pZCBJbnN0YW5jZTo6cmVxdWVzdEFkYXB0ZXIoY29uc3QgV0dQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgQ29tcGxldGkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHNjaGVkdWxlV29yayhbc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRl
dmljZSA9IHNvcnRlZERldmljZXNbMF0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19TdWNj
ZXNzLCBBZGFwdGVyOjpjcmVhdGUoZGV2aWNlLCBzdHJvbmdUaGlzKSwgeyB9KTsKKyAgICBhdXRv
IGRldmljZSA9IHNvcnRlZERldmljZXNbMF07CisKKyAgICBhdXRvIGRldmljZUxpbWl0cyA9IGxp
bWl0cyhkZXZpY2UpOworCisgICAgaWYgKCFkZXZpY2VMaW1pdHMpIHsKKyAgICAgICAgc2NoZWR1
bGVXb3JrKFtzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRh
cHRlclN0YXR1c19FcnJvciwgQWRhcHRlcjo6Y3JlYXRlSW52YWxpZChzdHJvbmdUaGlzKSwgIkRl
dmljZSBkb2VzIG5vdCBzdXBwb3J0IFdlYkdQVSJfcyk7CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc2NoZWR1bGVXb3JrKFtzdHJvbmdUaGlzID0gUmVmIHsgKnRo
aXMgfSwgZGV2aWNlID0gc29ydGVkRGV2aWNlc1swXSwgbGltaXRzID0gV1RGTW92ZSgqZGV2aWNl
TGltaXRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgY2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzX1N1Y2Nlc3MsIEFkYXB0ZXI6OmNy
ZWF0ZShkZXZpY2UsIHN0cm9uZ1RoaXMsIFdURk1vdmUobGltaXRzKSksIHsgfSk7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0gYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCmluZGV4IDg3ZmUyM2NiZjBhZDg4ZWE1MDQ5ZjQy
NTk3YjhiYTViYzY0YzBmODYuLjc1NjJiZWU4NDFkMzE4N2FkMjE2NjFiZGY5ODkyYzBiMzYxNDFk
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQpAQCAtMTI0Niw3ICsxMjQ2LDggQEAgYm9vbCBE
ZXZpY2U6OnZhbGlkYXRlQ3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIGNvbnMKIAogICAgIHN3aXRjaCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsK
ICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzFEOgotICAgICAgICAvLyBGSVhNRTogImRl
c2NyaXB0b3Iuc2l6ZS53aWR0aCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGlzLmxp
bWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMUQuIgorICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXpl
LndpZHRoID4gbV9saW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFEKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ICE9IDEpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjYxLDE4ICsxMjYyLDI0IEBAIGJvb2wgRGV2
aWNlOjp2YWxpZGF0ZUNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBjb25zCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMkQ6Ci0gICAgICAgIC8vIEZJWE1FOiAi
ZGVzY3JpcHRvci5zaXplLndpZHRoIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoaXMu
bGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRC4iCisgICAgICAgIGlmIChkZXNjcmlwdG9yLnNp
emUud2lkdGggPiBtX2xpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gRklYTUU6ICJkZXNjcmlwdG9yLnNpemUuaGVpZ2h0
IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoaXMubGltaXRzLm1heFRleHR1cmVEaW1l
bnNpb24yRC4iCisgICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID4gbV9saW1pdHMu
bWF4VGV4dHVyZURpbWVuc2lvbjJEKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIC8vIEZJWE1FOiAiZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVycyBtdXN0IGJl
IGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGlzLmxpbWl0cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMu
IgorICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVycyA+IG1fbGlt
aXRzLm1heFRleHR1cmVBcnJheUxheWVycykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8zRDoKLSAgICAgICAg
Ly8gRklYTUU6ICJkZXNjcmlwdG9yLnNpemUud2lkdGggbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1
YWwgdG8gdGhpcy5saW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNELiIKKyAgICAgICAgaWYgKGRl
c2NyaXB0b3Iuc2l6ZS53aWR0aCA+IG1fbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyBGSVhNRTogImRlc2NyaXB0b3Iu
c2l6ZS5oZWlnaHQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhpcy5saW1pdHMubWF4
VGV4dHVyZURpbWVuc2lvbjNELiIKKyAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQg
PiBtX2xpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgLy8gRklYTUU6ICJkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5
ZXJzIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoaXMubGltaXRzLm1heFRleHR1cmVE
aW1lbnNpb24zRC4iCisgICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5
ZXJzID4gbV9saW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNEKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIGlmIChkZXNjcmlwdG9yLnNhbXBsZUNvdW50ICE9IDEpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjY4LDggKzIyNzUsNiBAQCBSZWY8VGV4dHVyZVZp
ZXc+IFRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYg
aW5wdXREZXNjcgogCiAgICAgaWYgKCFkZXNjcmlwdG9yIHx8ICF2YWxpZGF0ZUNyZWF0ZVZpZXco
KmRlc2NyaXB0b3IpKSB7CiAgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwotCi0gICAgICAgIC8vIEZJWE1FOiAiUmV0dXJu
IGEgbmV3IGludmFsaWQgR1BVVGV4dHVyZVZpZXcuIgogICAgICAgICByZXR1cm4gVGV4dHVyZVZp
ZXc6OmNyZWF0ZUludmFsaWQobV9kZXZpY2UpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvV2ViR1BVRXh0LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVF
eHQuaAppbmRleCAwYzJlN2ZjYzFlZWVhMGQzODFmZTNlZTM1ZDk2ZThlZDNjOWZkZTJhLi4wODJl
YmZiMmU3Zjk4OTRjZGRkOWFjMjViOThjYTU4ZTI0MTlhZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9XZWJHUFVFeHQuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJH
UFVFeHQuaApAQCAtMzksNiArMzksNyBAQCB0eXBlZGVmIHZvaWQgKF5XR1BVRXJyb3JCbG9ja0Nh
bGxiYWNrKShXR1BVRXJyb3JUeXBlIHR5cGUsIGNoYXIgY29uc3QgKiBtZXNzYWdlKQogdHlwZWRl
ZiB2b2lkICheV0dQVVF1ZXVlV29ya0RvbmVCbG9ja0NhbGxiYWNrKShXR1BVUXVldWVXb3JrRG9u
ZVN0YXR1cyBzdGF0dXMpOwogdHlwZWRlZiB2b2lkICheV0dQVVJlcXVlc3RBZGFwdGVyQmxvY2tD
YWxsYmFjaykoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzIHN0YXR1cywgV0dQVUFkYXB0ZXIgYWRh
cHRlciwgY2hhciBjb25zdCAqIG1lc3NhZ2UpOwogdHlwZWRlZiB2b2lkICheV0dQVVJlcXVlc3RE
ZXZpY2VCbG9ja0NhbGxiYWNrKShXR1BVUmVxdWVzdERldmljZVN0YXR1cyBzdGF0dXMsIFdHUFVE
ZXZpY2UgZGV2aWNlLCBjaGFyIGNvbnN0ICogbWVzc2FnZSk7Cit0eXBlZGVmIHZvaWQgKF5XR1BV
UmVxdWVzdEludmFsaWREZXZpY2VCbG9ja0NhbGxiYWNrKShXR1BVRGV2aWNlIGRldmljZSk7CiB0
eXBlZGVmIHZvaWQgKF5XR1BVV29ya0l0ZW0pKHZvaWQpOwogdHlwZWRlZiB2b2lkICheV0dQVVNj
aGVkdWxlV29ya0Jsb2NrKShXR1BVV29ya0l0ZW0gd29ya0l0ZW0pOwogCkBAIC0xODMsNiArMTg0
LDcgQEAgV0dQVV9FWFBPUlQgdm9pZCB3Z3B1VGV4dHVyZVNldExhYmVsKFdHUFVUZXh0dXJlIHNh
bXBsZXIsIGNoYXIgY29uc3QgKiBsYWJlbCk7CiBXR1BVX0VYUE9SVCB2b2lkIHdncHVUZXh0dXJl
Vmlld1NldExhYmVsKFdHUFVUZXh0dXJlVmlldyBzYW1wbGVyLCBjaGFyIGNvbnN0ICogbGFiZWwp
OwogCiBXR1BVX0VYUE9SVCB2b2lkIHdncHVBZGFwdGVyUmVxdWVzdERldmljZVdpdGhCbG9jayhX
R1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVRGV2aWNlRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0
b3IsIFdHUFVSZXF1ZXN0RGV2aWNlQmxvY2tDYWxsYmFjayBjYWxsYmFjayk7CitXR1BVX0VYUE9S
VCB2b2lkIHdncHVBZGFwdGVyUmVxdWVzdEludmFsaWREZXZpY2VXaXRoQmxvY2soV0dQVUFkYXB0
ZXIgYWRhcHRlciwgV0dQVVJlcXVlc3RJbnZhbGlkRGV2aWNlQmxvY2tDYWxsYmFjayBjYWxsYmFj
ayk7CiBXR1BVX0VYUE9SVCB2b2lkIHdncHVCdWZmZXJNYXBBc3luY1dpdGhCbG9jayhXR1BVQnVm
ZmVyIGJ1ZmZlciwgV0dQVU1hcE1vZGVGbGFncyBtb2RlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
c2l6ZSwgV0dQVUJ1ZmZlck1hcEJsb2NrQ2FsbGJhY2sgY2FsbGJhY2spOwogV0dQVV9FWFBPUlQg
dm9pZCB3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmNXaXRoQmxvY2soV0dQVURl
dmljZSBkZXZpY2UsIFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3Jp
cHRvciwgV0dQVUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jQmxvY2tDYWxsYmFjayBjYWxsYmFj
ayk7CiBXR1BVX0VYUE9SVCB2b2lkIHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5j
V2l0aEJsb2NrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
IGNvbnN0ICogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmNCbG9ja0Nh
bGxiYWNrIGNhbGxiYWNrKTsK
</data>
<flag name="review"
          id="486407"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>