<?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>217172</bug_id>
          
          <creation_ts>2020-10-01 03:36:18 -0700</creation_ts>
          <short_desc>[WebXR] Make enumerateImmersiveXRDevices() asynchronnous</short_desc>
          <delta_ts>2020-10-29 17:59:26 -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>WebXR</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217195</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kbr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1693697</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-01 03:36:18 -0700</bug_when>
    <thetext>[WebXR] Make enumerateImmersiveXRDevices() asynchronnous</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693699</commentid>
    <comment_count>1</comment_count>
      <attachid>410216</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-01 03:49:40 -0700</bug_when>
    <thetext>Created attachment 410216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694788</commentid>
    <comment_count>2</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-05 12:27:58 -0700</bug_when>
    <thetext>Gentle ping for reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695059</commentid>
    <comment_count>3</comment_count>
      <attachid>410216</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-06 01:07:53 -0700</bug_when>
    <thetext>Comment on attachment 410216
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:88
&gt; +    platformXR.enumerateImmersiveXRDevices([this, isFirstXRDevicesEnumeration, callback = WTFMove(callback)](const Vector&lt;std::unique_ptr&lt;PlatformXR::Device&gt;&gt;&amp; immersiveXRDevices) mutable {

There is no guarantee this is valid. We might want to protect it.
s/const Vector&lt;std::unique_ptr&lt;PlatformXR::Device&gt;&gt;/auto&amp;/

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:3934
&gt; +    xrSystem.ensureImmersiveXRDeviceIsSelected([this, promise = WTFMove(promise), &amp;xrSystem]() mutable {

There is no guarantee that &apos;this&apos; stay alive in the callback.
For xrSystem, it is guaranteed by ensureImmersiveXRDeviceIsSelected internals, so it might be best to not catch xrSystem by reference and either recompute it inside the callback, or ref it.

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:237
&gt; +    callback(m_immersiveXRDevices);

It does not seem callback will be called in case of RETURN_IF_FAILED(result, &quot;xrGetSystem&quot;, m_impl-&gt;xrInstance());.

Also it does not seem callback is called asynchronously here so it does not seem necessary.
I would guess you might want to run that task in a WorkQueue if this is blocking main thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695167</commentid>
    <comment_count>4</comment_count>
      <attachid>410641</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-06 08:48:28 -0700</bug_when>
    <thetext>Created attachment 410641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695169</commentid>
    <comment_count>5</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-06 08:50:29 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #3)
&gt; Also it does not seem callback is called asynchronously here so it does not
&gt; seem necessary.
&gt; I would guess you might want to run that task in a WorkQueue if this is
&gt; blocking main thread?

Right, this is why I mention in the ChangeLog that I&apos;ll post a follow up patch which will move all the OpenXR calls out of the main thread because they&apos;re blocking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695825</commentid>
    <comment_count>6</comment_count>
      <attachid>410641</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-08 01:21:56 -0700</bug_when>
    <thetext>Comment on attachment 410641
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:378
&gt; +    obtainCurrentDevice(mode, init.requiredFeatures, init.optionalFeatures, [this, protectedDocument = makeRef(document), immersive, init, mode, promise = WTFMove(promise)](PlatformXR::Device* device) mutable {

COulbe auto*

&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:380
&gt; +            promise.reject(Exception { NotSupportedError });

Might be fine for now. But NotSupportedError might not be good in all early return cases.

&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:421
&gt; +        promise.resolve(session);

Could WTFMove session</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695839</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-08 03:37:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/70087114&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696185</commentid>
    <comment_count>8</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-09 04:49:18 -0700</bug_when>
    <thetext>Committed r268255: &lt;https://trac.webkit.org/changeset/268255&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702933</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-10-29 17:59:26 -0700</bug_when>
    <thetext>Note there&apos;s now a &quot;WebXR&quot; component as of Bug 217195. This bug&apos;s been recategorized into it; please feel free to do the same for other WebXR bugs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410216</attachid>
            <date>2020-10-01 03:49:40 -0700</date>
            <delta_ts>2020-10-06 08:48:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217172-20201001124937.patch</filename>
            <type>text/plain</type>
            <size>24722</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFmY2MwNmQ2ZDU5ZDEz
NGE2ZGNiODc5MTBlOTRhNGExNzJjNDFmNS4uNGViNTZhYTllNDY3ZGI0ODg1NjMzNDYwNmIyYmE3
MWM1NmJlNWIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTAxICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
TWFrZSBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSBhc3luY2hyb25ub3VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxNzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY2FsbCB0byBlbnVt
ZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSBjYW4gYmxvY2sgdGhlIG1haW4gdGhyZWFkIGFuZCB0
aHVzIGl0IHNob3VsZCBiZSBhc3luY2hyb25vdXMuIFRoZSBzcGVjcworICAgICAgICBjbGVhcmx5
IHN0YXRlIHRoYXQgaXQgc2hvdWxkIGJlIHJ1biAiaW4gcGFyYWxsZWwiLiBUaGUgbGlzdCBvZiBh
dmFpbGFibGUgZGV2aWNlcyB3aWxsIGJlIHByb3ZpZGVkIHRvIHRoZSBjYWxsYmFjaworICAgICAg
ICAoYSBDb21wbGV0aW9uSGFuZGxlcikuIE5vdGUgdGhhdCB0aGUgT3BlblhSIGNvZGUgaXMgc3Rp
bGwgcnVubmluZyBvbiB0aGUgbWFpbiB0aHJlYWQgYnV0IGl0IHdpbGwgYmUgbWlncmF0ZWQgaW4K
KyAgICAgICAgYSBmb2xsb3cgdXAgcGF0Y2guCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZm9yY2Vk
IHVzIHRvIG1vZGlmeSB0aGUgd2hvbGUgY2hhaW4gb2YgY2FsbHMgdGhhdCBlbmQgaW4gZW51bWVy
YXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgaW4gdGhlIFdlYlhSIGNvZGUuCisgICAgICAgIEdvb2Qg
bmV3cyBpcyB0aGF0IGl0IGFsbG93ZWQgdXMgdG8gcmVtb3ZlIHNvbWUgY2FsbHMgdG8gcG9zdFRh
c2soKSBvciBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKSBiZWNhdXNlIGNvZGUgaXMKKyAg
ICAgICAgYWxyZWFkeSBydW5uaW5nICJpbiBwYXJhbGxlbCIgYWZ0ZXIgbW92aW5nIHRvIGFuIGFz
eW5jaHJvbm5vdXMgcGFyYWRpZ20gc28gdGhleSB3ZXJlIHJlZHVuZGFudC4KKworICAgICAgICBO
byBuZXcgdGVzdHMgcmVxdWlyZWQgYXMgdGhlcmUgaXMgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4K
KworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJTeXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCk6IEFk
ZGVkIGEgY2FsbGJhY2sgcGFyYW1ldGVyLiBNb3ZlZCBtb3N0IG9mIHRoZSBjb2RlCisgICAgICAg
IHRvIHRoZSBjYWxsYmFjayBwcm92aWRlZCB0byBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMo
KS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjpvYnRhaW5DdXJyZW50RGV2aWNlKTog
UmV0dXJucyB2b2lkIGFuZCBhY2NlcHRzIGEgbmV3IGNhbGxiYWNrIHBhcmFtYXRlci4gSGFkIHRv
IG1pZ3JhdGUgaXQKKyAgICAgICAgYmVjYXVzZSBpdCBjYW4gZXZlbnR1YWxseSBjYWxsIGVuc3Vy
ZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCgpLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJT
eXN0ZW06OmlzU2Vzc2lvblN1cHBvcnRlZCk6IFJlbW92ZWQgcG9zdFRhc2soKSwgZW5zdXJlSW1t
ZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKCkKKyAgICAgICAgaXMgcnVuIGluIHBhcmFsbGVsLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OnJlcXVlc3RTZXNzaW9uKTogUmVtb3ZlZCBx
dWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKSBhcyBvYnRhaW5DdXJyZW50RGV2aWNlKCkKKyAg
ICAgICAgaXMgcnVuIGluIHBhcmFsbGVsLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJT
eXN0ZW0uaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVDb250ZXh0V2ViR0wpOiBQYXNzIGEg
bm8tb3AgY2FsbGJhY2sgdG8gZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKCkuCisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYWtlWFJDb21wYXRpYmxl
KTogTW92ZWQgbW9zdCBvZiB0aGUgY29kZSBpbnRvIHRoZSBjYWxsYmFjaworICAgICAgICBvZiBl
bnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6aW1tZXJzaXZl
WFJEZXZpY2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIv
UGxhdGZvcm1YUk9wZW5YUi5jcHA6CisgICAgICAgIChQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6ZW51
bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKTogUmVjZWl2ZXMgYSBuZXcgY2FsbGJhY2sgcGFyYW1l
dGVyLCByZXR1cm5zIHRoZSBsaXN0IG9mCisgICAgICAgIGltbWVyc2l2ZSBkZXZpY2VzIHRvIHRo
ZSBjYWxsYmFjayBhcyBhIGNvbnN0IHBhcmFtZXRlci4KKwogMjAyMC0wOS0zMCAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmUtYWxpZ24gRG9jdW1lbnRBbmRFbGVt
ZW50RXZlbnRIYW5kbGVycy5pZGwsIEdsb2JhbEV2ZW50SGFuZGxlcnMuaWRsIGFuZCBXaW5kb3dF
dmVudEhhbmRsZXJzLmlkbCB3aXRoIHRoZSBIVE1MIHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKaW5kZXggZWJhYmNjNDNlNDRiMWI0NTk3MDE3Zjcz
NzMyMzBiNjg2YjE3OWI5Ni4uMzM5MWIxZmY0MTBlMDMyNGFiNDFjMDE0ODNhOTBlOTViOWI2MmNh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKQEAg
LTY5LDU5ICs2OSw3MiBAQCBXZWJYUlN5c3RlbTo6V2ViWFJTeXN0ZW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIFdlYlhSU3lzdGVtOjp+V2ViWFJTeXN0
ZW0oKSA9IGRlZmF1bHQ7CiAKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHIvI2Vuc3VyZXMtYW4taW1tZXJzaXZlLXhyLWRldmljZS1pcy1zZWxlY3RlZAotdm9pZCBXZWJY
UlN5c3RlbTo6ZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKCkKK3ZvaWQgV2ViWFJT
eXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgLy8gRG9uJ3QgYXNrIHBsYXRmb3JtIGNvZGUg
Zm9yIFhSIGRldmljZXMsIHdlJ3JlIHVzaW5nIHNpbXVsYXRlZCBvbmVzLgotICAgIGlmIChVTkxJ
S0VMWShtX3Rlc3RpbmdEZXZpY2VzKSkKKyAgICBpZiAoVU5MSUtFTFkobV90ZXN0aW5nRGV2aWNl
cykpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAg
IGlmIChtX2FjdGl2ZUltbWVyc2l2ZURldmljZSkKKyAgICBpZiAobV9hY3RpdmVJbW1lcnNpdmVE
ZXZpY2UpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2VudW1lcmF0ZS1p
bW1lcnNpdmUteHItZGV2aWNlcwogICAgIGF1dG8mIHBsYXRmb3JtWFIgPSBQbGF0Zm9ybVhSOjpJ
bnN0YW5jZTo6c2luZ2xldG9uKCk7CiAgICAgYm9vbCBpc0ZpcnN0WFJEZXZpY2VzRW51bWVyYXRp
b24gPSAhbV9pbW1lcnNpdmVYUkRldmljZXNIYXZlQmVlbkVudW1lcmF0ZWQ7Ci0gICAgcGxhdGZv
cm1YUi5lbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKTsKLSAgICBtX2ltbWVyc2l2ZVhSRGV2
aWNlc0hhdmVCZWVuRW51bWVyYXRlZCA9IHRydWU7Ci0gICAgY29uc3QgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybVhSOjpEZXZpY2U+PiYgaW1tZXJzaXZlWFJEZXZpY2VzID0gcGxhdGZv
cm1YUi5pbW1lcnNpdmVYUkRldmljZXMoKTsKKyAgICBwbGF0Zm9ybVhSLmVudW1lcmF0ZUltbWVy
c2l2ZVhSRGV2aWNlcyhbdGhpcywgaXNGaXJzdFhSRGV2aWNlc0VudW1lcmF0aW9uLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtWFI6OkRldmljZT4+JiBpbW1lcnNpdmVYUkRldmljZXMpIG11dGFibGUgeworICAgICAgICBt
X2ltbWVyc2l2ZVhSRGV2aWNlc0hhdmVCZWVuRW51bWVyYXRlZCA9IHRydWU7CisKKyAgICAgICAg
Ly8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jc2VsZWN0LWFuLWltbWVy
c2l2ZS14ci1kZXZpY2UKKyAgICAgICAgYXV0byogb2xkRGV2aWNlID0gbV9hY3RpdmVJbW1lcnNp
dmVEZXZpY2UuZ2V0KCk7CisgICAgICAgIGlmIChpbW1lcnNpdmVYUkRldmljZXMuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmljZSA9IG51bGxwdHI7CisgICAg
ICAgICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGlmIChpbW1lcnNpdmVYUkRldmljZXMuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAgIG1f
YWN0aXZlSW1tZXJzaXZlRGV2aWNlID0gbWFrZVdlYWtQdHIoaW1tZXJzaXZlWFJEZXZpY2VzLmZp
cnN0KCkuZ2V0KCkpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogCi0gICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93
ZWJ4ci8jc2VsZWN0LWFuLWltbWVyc2l2ZS14ci1kZXZpY2UKLSAgICBhdXRvKiBvbGREZXZpY2Ug
PSBtX2FjdGl2ZUltbWVyc2l2ZURldmljZS5nZXQoKTsKLSAgICBpZiAoaW1tZXJzaXZlWFJEZXZp
Y2VzLmlzRW1wdHkoKSkgewotICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmljZSA9IG51bGxw
dHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGltbWVyc2l2ZVhSRGV2aWNlcy5z
aXplKCkgPT0gMSkgewotICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmljZSA9IG1ha2VXZWFr
UHRyKGltbWVyc2l2ZVhSRGV2aWNlcy5maXJzdCgpLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICAgICAgaWYgKG1fYWN0aXZlSW1tZXJzaXZlU2Vzc2lvbiAmJiBvbGREZXZpY2Ug
JiYgaW1tZXJzaXZlWFJEZXZpY2VzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYgZW50cnkpIHsgcmV0
dXJuIGVudHJ5LmdldCgpID09IG9sZERldmljZTsgfSkgIT0gbm90Rm91bmQpCisgICAgICAgICAg
ICBBU1NFUlQobV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UuZ2V0KCkgPT0gb2xkRGV2aWNlKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IGEgYmV0dGVyIFVB
IHNlbGVjdGlvbiBtZWNoYW5pc20gaWYgcmVxdWlyZWQuCisgICAgICAgICAgICBtX2FjdGl2ZUlt
bWVyc2l2ZURldmljZSA9IG1ha2VXZWFrUHRyKGltbWVyc2l2ZVhSRGV2aWNlcy5maXJzdCgpLmdl
dCgpKTsKKyAgICAgICAgfQogCi0gICAgaWYgKG1fYWN0aXZlSW1tZXJzaXZlU2Vzc2lvbiAmJiBv
bGREZXZpY2UgJiYgaW1tZXJzaXZlWFJEZXZpY2VzLmZpbmRNYXRjaGluZyhbJl0gKGF1dG8mIGVu
dHJ5KSB7IHJldHVybiBlbnRyeS5nZXQoKSA9PSBvbGREZXZpY2U7IH0pICE9IG5vdEZvdW5kKQot
ICAgICAgICBBU1NFUlQobV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UuZ2V0KCkgPT0gb2xkRGV2aWNl
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50IGEgYmV0dGVyIFVBIHNl
bGVjdGlvbiBtZWNoYW5pc20gaWYgcmVxdWlyZWQuCi0gICAgICAgIG1fYWN0aXZlSW1tZXJzaXZl
RGV2aWNlID0gbWFrZVdlYWtQdHIoaW1tZXJzaXZlWFJEZXZpY2VzLmZpcnN0KCkuZ2V0KCkpOwot
ICAgIH0KKyAgICAgICAgaWYgKGlzRmlyc3RYUkRldmljZXNFbnVtZXJhdGlvbiB8fCBtX2FjdGl2
ZUltbWVyc2l2ZURldmljZS5nZXQoKSA9PSBvbGREZXZpY2UpIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIGlmIChpc0ZpcnN0
WFJEZXZpY2VzRW51bWVyYXRpb24gfHwgbV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UuZ2V0KCkgPT0g
b2xkRGV2aWNlKQotICAgICAgICByZXR1cm47CisgICAgICAgIC8vIEZJWE1FOiA3LiBTaHV0IGRv
d24gYW55IGFjdGl2ZSBYUlNlc3Npb25zLgorICAgICAgICAvLyBGSVhNRTogOC4gU2V0IHRoZSBY
UiBjb21wYXRpYmxlIGJvb2xlYW4gb2YgYWxsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgaW5z
dGFuY2VzIHRvIGZhbHNlLgorICAgICAgICAvLyBGSVhNRTogOS4gUXVldWUgYSB0YXNrIHRvIGZp
cmUgYW4gZXZlbnQgbmFtZWQgZGV2aWNlY2hhbmdlIG9uIHRoZSBjb250ZXh0IG9iamVjdC4KIAot
ICAgIC8vIFRPRE86IDcuIFNodXQgZG93biBhbnkgYWN0aXZlIFhSU2Vzc2lvbnMuCi0gICAgLy8g
VE9ETzogOC4gU2V0IHRoZSBYUiBjb21wYXRpYmxlIGJvb2xlYW4gb2YgYWxsIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UgaW5zdGFuY2VzIHRvIGZhbHNlLgotICAgIC8vIFRPRE86IDkuIFF1ZXVl
IGEgdGFzayB0byBmaXJlIGFuIGV2ZW50IG5hbWVkIGRldmljZWNoYW5nZSBvbiB0aGUgY29udGV4
dCBvYmplY3QuCisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7CiB9CiAKLQotUGxhdGZvcm1Y
Ujo6RGV2aWNlKiBXZWJYUlN5c3RlbTo6b2J0YWluQ3VycmVudERldmljZShYUlNlc3Npb25Nb2Rl
IG1vZGUsIGNvbnN0IEpTRmVhdHVyZXNBcnJheSYgcmVxdWlyZWRGZWF0dXJlcywgY29uc3QgSlNG
ZWF0dXJlc0FycmF5JiBvcHRpb25hbEZlYXR1cmVzKQordm9pZCBXZWJYUlN5c3RlbTo6b2J0YWlu
Q3VycmVudERldmljZShYUlNlc3Npb25Nb2RlIG1vZGUsIGNvbnN0IEpTRmVhdHVyZXNBcnJheSYg
cmVxdWlyZWRGZWF0dXJlcywgY29uc3QgSlNGZWF0dXJlc0FycmF5JiBvcHRpb25hbEZlYXR1cmVz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtWFI6OkRldmljZSopPiYmIGNhbGxiYWNr
KQogewogICAgIGlmIChtb2RlID09IFhSU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZUFyIHx8IG1vZGUg
PT0gWFJTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpIHsKLSAgICAgICAgZW5zdXJlSW1tZXJzaXZl
WFJEZXZpY2VJc1NlbGVjdGVkKCk7Ci0gICAgICAgIHJldHVybiBtX2FjdGl2ZUltbWVyc2l2ZURl
dmljZS5nZXQoKTsKKyAgICAgICAgZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgY2FsbGJhY2sobV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UuZ2V0KCkpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIXJlcXVpcmVkRmVhdHVyZXMuaXNFbXB0
eSgpIHx8ICFvcHRpb25hbEZlYXR1cmVzLmlzRW1wdHkoKSkgeworICAgICAgICBjYWxsYmFjayht
X2lubGluZVhSRGV2aWNlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAo
IXJlcXVpcmVkRmVhdHVyZXMuaXNFbXB0eSgpIHx8ICFvcHRpb25hbEZlYXR1cmVzLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIG1faW5saW5lWFJEZXZpY2UuZ2V0KCk7CiAKLSAgICByZXR1cm4g
Jm1fZGVmYXVsdElubGluZURldmljZTsKKyAgICBjYWxsYmFjaygmbV9kZWZhdWx0SW5saW5lRGV2
aWNlKTsKIH0KIAogCkBAIC0xNDQsMTAgKzE1Nyw4IEBAIHZvaWQgV2ViWFJTeXN0ZW06OmlzU2Vz
c2lvblN1cHBvcnRlZChYUlNlc3Npb25Nb2RlIG1vZGUsIElzU2Vzc2lvblN1cHBvcnRlZFByb21p
CiAgICAgfQogCiAgICAgLy8gNC4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6
Ci0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbdGhpcywgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIG1vZGVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJs
ZSB7Ci0gICAgICAgIC8vIDQuMSBFbnN1cmUgYW4gaW1tZXJzaXZlIFhSIGRldmljZSBpcyBzZWxl
Y3RlZC4KLSAgICAgICAgZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKCk7Ci0KKyAg
ICAvLyA0LjEgRW5zdXJlIGFuIGltbWVyc2l2ZSBYUiBkZXZpY2UgaXMgc2VsZWN0ZWQuCisgICAg
ZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKFt0aGlzLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgbW9kZV0oKSBtdXRhYmxlIHsKICAgICAgICAgLy8gNC4yIElmIHRoZSBpbW1l
cnNpdmUgWFIgZGV2aWNlIGlzIG51bGwsIHJlc29sdmUgcHJvbWlzZSB3aXRoIGZhbHNlIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgaWYgKCFtX2FjdGl2ZUltbWVyc2l2ZURldmljZSkg
ewogICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGZhbHNlKTsKQEAgLTM2MCw2OSArMzcxLDY0
IEBAIHZvaWQgV2ViWFJTeXN0ZW06OnJlcXVlc3RTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwg
WFJTZXNzaW9uTW9kZSBtb2RlLCBjb25zdCBYCiAgICAgfQogCiAgICAgLy8gNS4gUnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6Ci0gICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3RoaXMsIGRvY3VtZW50ID0gbWFrZVdlYWtQ
dHIoZG9jdW1lbnQpLCBpbW1lcnNpdmUsIGluaXQsIG1vZGUsIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgLy8gNS4xIExldCByZXF1aXJlZEZlYXR1cmVz
IGJlIG9wdGlvbnMnIHJlcXVpcmVkRmVhdHVyZXMuCi0gICAgICAgIC8vIDUuMiBMZXQgb3B0aW9u
YWxGZWF0dXJlcyBiZSBvcHRpb25zJyBvcHRpb25hbEZlYXR1cmVzLgotICAgICAgICAvLyA1LjMg
U2V0IGRldmljZSB0byB0aGUgcmVzdWx0IG9mIG9idGFpbmluZyB0aGUgY3VycmVudCBkZXZpY2Ug
Zm9yIG1vZGUsIHJlcXVpcmVkRmVhdHVyZXMsIGFuZCBvcHRpb25hbEZlYXR1cmVzLgotICAgICAg
ICBhdXRvKiBkZXZpY2UgPSBvYnRhaW5DdXJyZW50RGV2aWNlKG1vZGUsIGluaXQucmVxdWlyZWRG
ZWF0dXJlcywgaW5pdC5vcHRpb25hbEZlYXR1cmVzKTsKLQotICAgICAgICAvLyA1LjQgUXVldWUg
YSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgcXVldWVUYXNr
S2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3RoaXMsIGRvY3Vt
ZW50ID0gV1RGTW92ZShkb2N1bWVudCksIGRldmljZSA9IG1ha2VXZWFrUHRyKGRldmljZSksIGlt
bWVyc2l2ZSwgaW5pdCwgbW9kZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFi
bGUgewotICAgICAgICAgICAgYXV0byByZWplY3RQcm9taXNlV2l0aE5vdFN1cHBvcnRlZEVycm9y
ID0gbWFrZVNjb3BlRXhpdChbJl0gKCkgewotICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0
KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH0pOwotICAgICAgICAgICAgICAgIG1fcGVu
ZGluZ0ltbWVyc2l2ZVNlc3Npb24gPSBmYWxzZTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAg
ICAgICAvLyA1LjQuMSBJZiBkZXZpY2UgaXMgbnVsbCBvciBkZXZpY2UncyBsaXN0IG9mIHN1cHBv
cnRlZCBtb2RlcyBkb2VzIG5vdCBjb250YWluIG1vZGUsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
OgotICAgICAgICAgICAgLy8gIC0gUmVqZWN0IHByb21pc2Ugd2l0aCBhICJOb3RTdXBwb3J0ZWRF
cnJvciIgRE9NRXhjZXB0aW9uLgotICAgICAgICAgICAgLy8gIC0gSWYgaW1tZXJzaXZlIGlzIHRy
dWUsIHNldCBwZW5kaW5nIGltbWVyc2l2ZSBzZXNzaW9uIHRvIGZhbHNlLgotICAgICAgICAgICAg
Ly8gIC0gQWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAgICAgICBpZiAoIWRldmljZSB8fCAhZGV2
aWNlLT5zdXBwb3J0cyhtb2RlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
ICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmV4ZWNTdGF0ZSgp
IDogbnVsbHB0cjsKLSAgICAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgLy8gV2ViS2l0IGRvZXMgbm90IGN1cnJlbnRseSBz
dXBwb3J0IHRoZSBQZXJtaXNzaW9ucyBBUEkuIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wZXJtaXNz
aW9ucy8KLSAgICAgICAgICAgIC8vIEhvd2V2ZXIgd2UgZG8gaW1wbGVtZW50IGhlcmUgdGhlIHBl
cm1pc3Npb24gcmVxdWVzdCBhbGdvcml0aG0gd2l0aG91dCB0aGUKLSAgICAgICAgICAgIC8vIFBl
cm1pc3Npb25zIEFQSSBiaXRzIGFzIGl0IGhhbmRsZXMsIGFtb25nIG90aGVycywgdGhlIHNlc3Np
b24gZmVhdHVyZXMgcGFyc2luZy4gV2UgYWxzbwotICAgICAgICAgICAgLy8gZG8gaXQgaGVyZSBi
ZWZvcmUgY3JlYXRpbmcgdGhlIHNlc3Npb24gYXMgdGhlcmUgaXMgbm8gbmVlZCB0byBkbyBpdCBv
biBhZHZhbmNlLgotICAgICAgICAgICAgLy8gVE9ETzogd2UganVzdCBwZXJmb3JtIGJhc2ljIGNo
ZWNrcyB3aXRob3V0IGFza2luZyBhbnkgcGVybWlzc2lvbiB0byB0aGUgdXNlciBzbyBmYXIuIE1h
eWJlIHdlIHNob3VsZCBpbXBsZW1lbnQKLSAgICAgICAgICAgIC8vIGEgbWVjaGFuaXNtIHNpbWls
YXIgdG8gd2hhdCBvdGhlcnMgZG8gaW52b2x2aW5nIHBhc3NpbmcgYSBtZXNzYWdlIHRvIHRoZSBV
SSBwcm9jZXNzLgotCi0gICAgICAgICAgICAvLyA1LjQuNCBMZXQgZGVzY3JpcHRvciBiZSBhbiBY
UlBlcm1pc3Npb25EZXNjcmlwdG9yIGluaXRpYWxpemVkIHdpdGggc2Vzc2lvbiwgcmVxdWlyZWRG
ZWF0dXJlcywgYW5kIG9wdGlvbmFsRmVhdHVyZXMKLSAgICAgICAgICAgIC8vIDUuNC41IExldCBz
dGF0dXMgYmUgYW4gWFJQZXJtaXNzaW9uU3RhdHVzLCBpbml0aWFsbHkgbnVsbAotICAgICAgICAg
ICAgLy8gNS40LjYgUmVxdWVzdCB0aGUgeHIgcGVybWlzc2lvbiB3aXRoIGRlc2NyaXB0b3IgYW5k
IHN0YXR1cy4KLSAgICAgICAgICAgIC8vIDUuNC43IElmIHN0YXR1cycgc3RhdGUgaXMgImRlbmll
ZCIgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6IChzYW1lIGFzIGFib3ZlIGluIDUuNC4xKQotICAg
ICAgICAgICAgaWYgKCFpc1hSUGVybWlzc2lvbkdyYW50ZWQobW9kZSwgaW5pdCwgZGV2aWNlLmdl
dCgpLCAqZ2xvYmFsT2JqZWN0KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
ICAgIC8vIDUuNC4yIExldCBzZXNzaW9uIGJlIGEgbmV3IFhSU2Vzc2lvbiBvYmplY3QuCi0gICAg
ICAgICAgICAvLyA1LjQuMyBJbml0aWFsaXplIHRoZSBzZXNzaW9uIHdpdGggc2Vzc2lvbiwgbW9k
ZSwgYW5kIGRldmljZS4KLSAgICAgICAgICAgIGF1dG8gc2Vzc2lvbiA9IFdlYlhSU2Vzc2lvbjo6
Y3JlYXRlKCpkb2N1bWVudCwgKnRoaXMsIG1vZGUsICpkZXZpY2UpOwotCi0gICAgICAgICAgICAv
LyA1LjQuOCBQb3RlbnRpYWxseSBzZXQgdGhlIGFjdGl2ZSBpbW1lcnNpdmUgc2Vzc2lvbiBhcyBm
b2xsb3dzOgotICAgICAgICAgICAgaWYgKGltbWVyc2l2ZSkgewotICAgICAgICAgICAgICAgIG1f
YWN0aXZlSW1tZXJzaXZlU2Vzc2lvbiA9IHNlc3Npb24uY29weVJlZigpOwotICAgICAgICAgICAg
ICAgIG1fcGVuZGluZ0ltbWVyc2l2ZVNlc3Npb24gPSBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIG1faW5saW5lU2Vzc2lvbnMuYWRkKHNlc3Npb24uY29weVJlZigp
KTsKLQotICAgICAgICAgICAgLy8gNS40LjkgUmVzb2x2ZSBwcm9taXNlIHdpdGggc2Vzc2lvbi4K
LSAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShzZXNzaW9uKTsKLSAgICAgICAgICAgIHJlamVj
dFByb21pc2VXaXRoTm90U3VwcG9ydGVkRXJyb3IucmVsZWFzZSgpOwotCi0gICAgICAgICAgICAv
LyBUT0RPOgotICAgICAgICAgICAgLy8gNS40LjEwIFF1ZXVlIGEgdGFzayB0byBwZXJmb3JtIHRo
ZSBmb2xsb3dpbmcgc3RlcHM6IE5PVEU6IFRoZXNlIHN0ZXBzIGVuc3VyZSB0aGF0IGluaXRpYWwg
aW5wdXRzb3VyY2VzY2hhbmdlCi0gICAgICAgICAgICAvLyBldmVudHMgb2NjdXIgYWZ0ZXIgdGhl
IGluaXRpYWwgc2Vzc2lvbiBpcyByZXNvbHZlZC4KLSAgICAgICAgICAgIC8vICAgICAxLiBTZXQg
c2Vzc2lvbidzIHByb21pc2UgcmVzb2x2ZWQgZmxhZyB0byB0cnVlLgotICAgICAgICAgICAgLy8g
ICAgIDIuIExldCBzb3VyY2VzIGJlIGFueSBleGlzdGluZyBpbnB1dCBzb3VyY2VzIGF0dGFjaGVk
IHRvIHNlc3Npb24uCi0gICAgICAgICAgICAvLyAgICAgMy4gSWYgc291cmNlcyBpcyBub24tZW1w
dHksIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgICAgIC8vICAgICAgICAx
LiBTZXQgc2Vzc2lvbidzIGxpc3Qgb2YgYWN0aXZlIFhSIGlucHV0IHNvdXJjZXMgdG8gc291cmNl
cy4KLSAgICAgICAgICAgIC8vICAgICAgICAyLiBGaXJlIGFuIFhSSW5wdXRTb3VyY2VzQ2hhbmdl
RXZlbnQgbmFtZWQgaW5wdXRzb3VyY2VzY2hhbmdlIG9uIHNlc3Npb24gd2l0aCBhZGRlZCBzZXQg
dG8gc291cmNlcy4KLQorICAgIC8vIDUuMSBMZXQgcmVxdWlyZWRGZWF0dXJlcyBiZSBvcHRpb25z
JyByZXF1aXJlZEZlYXR1cmVzLgorICAgIC8vIDUuMiBMZXQgb3B0aW9uYWxGZWF0dXJlcyBiZSBv
cHRpb25zJyBvcHRpb25hbEZlYXR1cmVzLgorICAgIC8vIDUuMyBTZXQgZGV2aWNlIHRvIHRoZSBy
ZXN1bHQgb2Ygb2J0YWluaW5nIHRoZSBjdXJyZW50IGRldmljZSBmb3IgbW9kZSwgcmVxdWlyZWRG
ZWF0dXJlcywgYW5kIG9wdGlvbmFsRmVhdHVyZXMuCisgICAgLy8gNS40IFF1ZXVlIGEgdGFzayB0
byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgb2J0YWluQ3VycmVudERldmljZSht
b2RlLCBpbml0LnJlcXVpcmVkRmVhdHVyZXMsIGluaXQub3B0aW9uYWxGZWF0dXJlcywgW3RoaXMs
IHByb3RlY3RlZERvY3VtZW50ID0gbWFrZVJlZihkb2N1bWVudCksIGltbWVyc2l2ZSwgaW5pdCwg
bW9kZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKFBsYXRmb3JtWFI6OkRldmljZSogZGV2
aWNlKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byByZWplY3RQcm9taXNlV2l0aE5vdFN1cHBvcnRl
ZEVycm9yID0gbWFrZVNjb3BlRXhpdChbJl0oKSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVj
dChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAgICAgICAgICAgIG1fcGVuZGlu
Z0ltbWVyc2l2ZVNlc3Npb24gPSBmYWxzZTsKICAgICAgICAgfSk7CisKKyAgICAgICAgLy8gNS40
LjEgSWYgZGV2aWNlIGlzIG51bGwgb3IgZGV2aWNlJ3MgbGlzdCBvZiBzdXBwb3J0ZWQgbW9kZXMg
ZG9lcyBub3QgY29udGFpbiBtb2RlLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAg
Ly8gIC0gUmVqZWN0IHByb21pc2Ugd2l0aCBhICJOb3RTdXBwb3J0ZWRFcnJvciIgRE9NRXhjZXB0
aW9uLgorICAgICAgICAvLyAgLSBJZiBpbW1lcnNpdmUgaXMgdHJ1ZSwgc2V0IHBlbmRpbmcgaW1t
ZXJzaXZlIHNlc3Npb24gdG8gZmFsc2UuCisgICAgICAgIC8vICAtIEFib3J0IHRoZXNlIHN0ZXBz
LgorICAgICAgICBpZiAoIWRldmljZSB8fCAhZGV2aWNlLT5zdXBwb3J0cyhtb2RlKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBwcm90ZWN0ZWRE
b2N1bWVudC0+ZXhlY1N0YXRlKCk7CisgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFdlYktpdCBkb2VzIG5vdCBjdXJyZW50bHkgc3Vw
cG9ydCB0aGUgUGVybWlzc2lvbnMgQVBJLiBodHRwczovL3czYy5naXRodWIuaW8vcGVybWlzc2lv
bnMvCisgICAgICAgIC8vIEhvd2V2ZXIgd2UgZG8gaW1wbGVtZW50IGhlcmUgdGhlIHBlcm1pc3Np
b24gcmVxdWVzdCBhbGdvcml0aG0gd2l0aG91dCB0aGUKKyAgICAgICAgLy8gUGVybWlzc2lvbnMg
QVBJIGJpdHMgYXMgaXQgaGFuZGxlcywgYW1vbmcgb3RoZXJzLCB0aGUgc2Vzc2lvbiBmZWF0dXJl
cyBwYXJzaW5nLiBXZSBhbHNvCisgICAgICAgIC8vIGRvIGl0IGhlcmUgYmVmb3JlIGNyZWF0aW5n
IHRoZSBzZXNzaW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZG8gaXQgb24gYWR2YW5jZS4KKyAg
ICAgICAgLy8gRklYTUU6IHdlIGp1c3QgcGVyZm9ybSBiYXNpYyBjaGVja3Mgd2l0aG91dCBhc2tp
bmcgYW55IHBlcm1pc3Npb24gdG8gdGhlIHVzZXIgc28gZmFyLiBNYXliZSB3ZSBzaG91bGQgaW1w
bGVtZW50CisgICAgICAgIC8vIGEgbWVjaGFuaXNtIHNpbWlsYXIgdG8gd2hhdCBvdGhlcnMgZG8g
aW52b2x2aW5nIHBhc3NpbmcgYSBtZXNzYWdlIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAg
IC8vIDUuNC40IExldCBkZXNjcmlwdG9yIGJlIGFuIFhSUGVybWlzc2lvbkRlc2NyaXB0b3IgaW5p
dGlhbGl6ZWQgd2l0aCBzZXNzaW9uLCByZXF1aXJlZEZlYXR1cmVzLCBhbmQgb3B0aW9uYWxGZWF0
dXJlcworICAgICAgICAvLyA1LjQuNSBMZXQgc3RhdHVzIGJlIGFuIFhSUGVybWlzc2lvblN0YXR1
cywgaW5pdGlhbGx5IG51bGwKKyAgICAgICAgLy8gNS40LjYgUmVxdWVzdCB0aGUgeHIgcGVybWlz
c2lvbiB3aXRoIGRlc2NyaXB0b3IgYW5kIHN0YXR1cy4KKyAgICAgICAgLy8gNS40LjcgSWYgc3Rh
dHVzJyBzdGF0ZSBpcyAiZGVuaWVkIiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczogKHNhbWUgYXMg
YWJvdmUgaW4gNS40LjEpCisgICAgICAgIGlmICghaXNYUlBlcm1pc3Npb25HcmFudGVkKG1vZGUs
IGluaXQsIGRldmljZSwgKmdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgLy8gNS40LjIgTGV0IHNlc3Npb24gYmUgYSBuZXcgWFJTZXNzaW9uIG9iamVjdC4KKyAg
ICAgICAgLy8gNS40LjMgSW5pdGlhbGl6ZSB0aGUgc2Vzc2lvbiB3aXRoIHNlc3Npb24sIG1vZGUs
IGFuZCBkZXZpY2UuCisgICAgICAgIGF1dG8gc2Vzc2lvbiA9IFdlYlhSU2Vzc2lvbjo6Y3JlYXRl
KHByb3RlY3RlZERvY3VtZW50LmdldCgpLCAqdGhpcywgbW9kZSwgKmRldmljZSk7CisKKyAgICAg
ICAgLy8gNS40LjggUG90ZW50aWFsbHkgc2V0IHRoZSBhY3RpdmUgaW1tZXJzaXZlIHNlc3Npb24g
YXMgZm9sbG93czoKKyAgICAgICAgaWYgKGltbWVyc2l2ZSkgeworICAgICAgICAgICAgbV9hY3Rp
dmVJbW1lcnNpdmVTZXNzaW9uID0gc2Vzc2lvbi5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX3Bl
bmRpbmdJbW1lcnNpdmVTZXNzaW9uID0gZmFsc2U7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgbV9pbmxpbmVTZXNzaW9ucy5hZGQoc2Vzc2lvbi5jb3B5UmVmKCkpOworCisgICAgICAgIC8v
IDUuNC45IFJlc29sdmUgcHJvbWlzZSB3aXRoIHNlc3Npb24uCisgICAgICAgIHByb21pc2UucmVz
b2x2ZShzZXNzaW9uKTsKKyAgICAgICAgcmVqZWN0UHJvbWlzZVdpdGhOb3RTdXBwb3J0ZWRFcnJv
ci5yZWxlYXNlKCk7CisKKyAgICAgICAgLy8gRklYTUU6CisgICAgICAgIC8vIDUuNC4xMCBRdWV1
ZSBhIHRhc2sgdG8gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOiBOT1RFOiBUaGVzZSBzdGVw
cyBlbnN1cmUgdGhhdCBpbml0aWFsIGlucHV0c291cmNlc2NoYW5nZQorICAgICAgICAvLyBldmVu
dHMgb2NjdXIgYWZ0ZXIgdGhlIGluaXRpYWwgc2Vzc2lvbiBpcyByZXNvbHZlZC4KKyAgICAgICAg
Ly8gICAgIDEuIFNldCBzZXNzaW9uJ3MgcHJvbWlzZSByZXNvbHZlZCBmbGFnIHRvIHRydWUuCisg
ICAgICAgIC8vICAgICAyLiBMZXQgc291cmNlcyBiZSBhbnkgZXhpc3RpbmcgaW5wdXQgc291cmNl
cyBhdHRhY2hlZCB0byBzZXNzaW9uLgorICAgICAgICAvLyAgICAgMy4gSWYgc291cmNlcyBpcyBu
b24tZW1wdHksIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgLy8gICAgICAg
IDEuIFNldCBzZXNzaW9uJ3MgbGlzdCBvZiBhY3RpdmUgWFIgaW5wdXQgc291cmNlcyB0byBzb3Vy
Y2VzLgorICAgICAgICAvLyAgICAgICAgMi4gRmlyZSBhbiBYUklucHV0U291cmNlc0NoYW5nZUV2
ZW50IG5hbWVkIGlucHV0c291cmNlc2NoYW5nZSBvbiBzZXNzaW9uIHdpdGggYWRkZWQgc2V0IHRv
IHNvdXJjZXMuCiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTeXN0ZW0uaAppbmRleCA5YWFkMTI4YjU2ZTZiZmM5N2QzYjRmZDIwNjA5NzA3ZjI1ZDI2YTVl
Li5hNjgwNmY3ODc0MDZhMWYwYzIyY2Y1MmY2MjUxN2Q5ZGM5M2E5M2I3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlcXVlc3RTZXNzaW9uKERvY3VtZW50JiwgWFJTZXNzaW9uTW9kZSwgY29u
c3QgWFJTZXNzaW9uSW5pdCYsIFJlcXVlc3RTZXNzaW9uUHJvbWlzZSYmKTsKIAogICAgIC8vIFRo
aXMgaXMgYWxzbyBuZWVkZWQgYnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFrZVhSQ29t
cGF0aWJsZSgpIGFuZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dFdlYkdMKCkuCi0g
ICAgdm9pZCBlbnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQoKTsKKyAgICB2b2lkIGVu
c3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIGJvb2wgaGFzQWN0aXZlSW1tZXJzaXZlWFJEZXZpY2UoKSB7IHJldHVybiAhIW1f
YWN0aXZlSW1tZXJzaXZlRGV2aWNlOyB9CiAKICAgICB2b2lkIHNlc3Npb25FbmRlZChXZWJYUlNl
c3Npb24mKTsKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEZlYXR1cmVz
QXJyYXkgPSBQbGF0Zm9ybVhSOjpEZXZpY2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJlczsKICAgICB1
c2luZyBKU0ZlYXR1cmVzQXJyYXkgPSBWZWN0b3I8SlNDOjpKU1ZhbHVlPjsKLSAgICBQbGF0Zm9y
bVhSOjpEZXZpY2UqIG9idGFpbkN1cnJlbnREZXZpY2UoWFJTZXNzaW9uTW9kZSwgY29uc3QgSlNG
ZWF0dXJlc0FycmF5JiByZXF1aXJlZEZlYXR1cmVzLCBjb25zdCBKU0ZlYXR1cmVzQXJyYXkmIG9w
dGlvbmFsRmVhdHVyZXMpOworICAgIHZvaWQgb2J0YWluQ3VycmVudERldmljZShYUlNlc3Npb25N
b2RlLCBjb25zdCBKU0ZlYXR1cmVzQXJyYXkmIHJlcXVpcmVkRmVhdHVyZXMsIGNvbnN0IEpTRmVh
dHVyZXNBcnJheSYgb3B0aW9uYWxGZWF0dXJlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQbGF0
Zm9ybVhSOjpEZXZpY2UqKT4mJik7CiAKICAgICBib29sIGltbWVyc2l2ZVNlc3Npb25SZXF1ZXN0
SXNBbGxvd2VkRm9yR2xvYmFsT2JqZWN0KERPTVdpbmRvdyYsIERvY3VtZW50JikgY29uc3Q7CiAg
ICAgYm9vbCBpbmxpbmVTZXNzaW9uUmVxdWVzdElzQWxsb3dlZEZvckdsb2JhbE9iamVjdChET01X
aW5kb3cmLCBEb2N1bWVudCYsIGNvbnN0IFhSU2Vzc2lvbkluaXQmKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggMzY5MTIxMzU2YmY1MTBlY2Vl
ZTRkOGEzMjNkZjFlYzgzMGZhM2FjZS4uMzA1ZjY4MDZlODY2NGU4NDZkMDVjNmQzNDI0ZDZhOTVi
NTE2MGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAg
LTQzMyw3ICs0MzMsOSBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBIVE1MQ2FudmFzRWxl
bWVudDo6Y3JlYXRlQ29udGV4dFdlYkdMKGNvbnN0IFN0cmluZyYgdAogICAgIC8vIGh0dHBzOi8v
aW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3hyLWNvbXBhdGlibGUKICAgICBpZiAoYXR0
cnMueHJDb21wYXRpYmxlKSB7CiAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb2N1bWVudCgp
LmRvbVdpbmRvdygpKQotICAgICAgICAgICAgTmF2aWdhdG9yV2ViWFI6OnhyKHdpbmRvdy0+bmF2
aWdhdG9yKCkpLmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCgpOworICAgICAgICAg
ICAgLy8gRklYTUU6IGhvdyB0byBtYWtlIHRoaXMgc3luYyB3aXRob3V0IGJsb2NraW5nIHRoZSBt
YWluIHRocmVhZD8KKyAgICAgICAgICAgIC8vIEZvciByZWZlcmVuY2U6IGh0dHBzOi8vaW1tZXJz
aXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3JlZi1mb3ItZG9tLXdlYmdsY29udGV4dGF0dHJpYnV0
ZXMteHJjb21wYXRpYmxlCisgICAgICAgICAgICBOYXZpZ2F0b3JXZWJYUjo6eHIod2luZG93LT5u
YXZpZ2F0b3IoKSkuZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKFtdKCkgeyB9KTsK
ICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAwNDVkNmE2YmY5MTZlNWFmM2Jh
MDI5YTFiNDY1NmY5MzVkMTBhNWUwLi4wMDY1ZTNmMzRhM2U2ZjQzMGVlNzc2MjNmYzNjNTM2MWQz
MWQ3MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzkxMiw0NSArMzkxMiw1MSBAQCBib29sIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmtQcm9ncmFtV2l0aG91dEludmFsaWRhdGluZ0F0
dHJpYkxvY2F0aW9ucyhXZQogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4
ci8jZG9tLXdlYmdscmVuZGVyaW5nY29udGV4dGJhc2UtbWFrZXhyY29tcGF0aWJsZQogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYWtlWFJDb21wYXRpYmxlKE1ha2VYUkNvbXBhdGli
bGVQcm9taXNlJiYgcHJvbWlzZSkKIHsKLSAgICBhdXRvIHJlamVjdFByb21pc2VXaXRoSW52YWxp
ZFN0YXRlRXJyb3IgPSBtYWtlU2NvcGVFeGl0KFsmXSAoKSB7Ci0gICAgICAgIG1faXNYUkNvbXBh
dGlibGUgPSBmYWxzZTsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfSk7Ci0gICAgfSk7Ci0KICAgICAvLyBSZXR1cm5pbmcgYW4gZXhjZXB0aW9u
IGluIHRoZXNlIHR3byBjaGVja3MgaXMgbm90IHBhcnQgb2YgdGhlIHNwZWMuCiAgICAgYXV0byBj
YW52YXMgPSBodG1sQ2FudmFzKCk7Ci0gICAgaWYgKCFjYW52YXMpCisgICAgaWYgKCFjYW52YXMp
IHsKKyAgICAgICAgbV9pc1hSQ29tcGF0aWJsZSA9IGZhbHNlOworICAgICAgICBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKICAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAogICAgIGF1dG8qIHdpbmRvdyA9IGNhbnZhcy0+ZG9jdW1lbnQoKS5kb21XaW5kb3co
KTsKLSAgICBpZiAoIXdpbmRvdykKKyAgICBpZiAoIXdpbmRvdykgeworICAgICAgICBtX2lzWFJD
b21wYXRpYmxlID0gZmFsc2U7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH0pOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gMS4g
TGV0IHByb21pc2UgYmUgYSBuZXcgUHJvbWlzZS4KICAgICAvLyAyLiBMZXQgY29udGV4dCBiZSB0
aGUgdGFyZ2V0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Ugb2JqZWN0LgogICAgIC8vIDMuIEVu
c3VyZSBhbiBpbW1lcnNpdmUgWFIgZGV2aWNlIGlzIHNlbGVjdGVkLgogICAgIGF1dG8mIHhyU3lz
dGVtID0gTmF2aWdhdG9yV2ViWFI6OnhyKHdpbmRvdy0+bmF2aWdhdG9yKCkpOwotICAgIHhyU3lz
dGVtLmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCgpOwotCi0gICAgLy8gNC4gU2V0
IGNvbnRleHTigJlzIFhSIGNvbXBhdGlibGUgYm9vbGVhbiBhcyBmb2xsb3dzOgotICAgIC8vICAg
IElmIGNvbnRleHTigJlzIFdlYkdMIGNvbnRleHQgbG9zdCBmbGFnIGlzIHNldAotICAgIC8vICAg
ICAgU2V0IGNvbnRleHTigJlzIFhSIGNvbXBhdGlibGUgYm9vbGVhbiB0byBmYWxzZSBhbmQgcmVq
ZWN0IHByb21pc2Ugd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KLSAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQotICAgICAgICByZXR1cm47CisgICAgeHJTeXN0ZW0uZW5zdXJlSW1t
ZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgJnhyU3lzdGVtXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIHJlamVjdFByb21pc2VXaXRo
SW52YWxpZFN0YXRlRXJyb3IgPSBtYWtlU2NvcGVFeGl0KFsmXSgpIHsKKyAgICAgICAgICAgIG1f
aXNYUkNvbXBhdGlibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICB9KTsKKworICAgICAgICAvLyA0
LiBTZXQgY29udGV4dOKAmXMgWFIgY29tcGF0aWJsZSBib29sZWFuIGFzIGZvbGxvd3M6CisgICAg
ICAgIC8vICAgIElmIGNvbnRleHTigJlzIFdlYkdMIGNvbnRleHQgbG9zdCBmbGFnIGlzIHNldAor
ICAgICAgICAvLyAgICAgIFNldCBjb250ZXh04oCZcyBYUiBjb21wYXRpYmxlIGJvb2xlYW4gdG8g
ZmFsc2UgYW5kIHJlamVjdCBwcm9taXNlIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCisgICAg
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAvLyBJZiB0aGUgaW1tZXJzaXZlIFhSIGRldmljZSBpcyBudWxsCi0gICAgLy8gICAgU2V0
IGNvbnRleHTigJlzIFhSIGNvbXBhdGlibGUgYm9vbGVhbiB0byBmYWxzZSBhbmQgcmVqZWN0IHBy
b21pc2Ugd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KLSAgICBpZiAoIXhyU3lzdGVtLmhhc0Fj
dGl2ZUltbWVyc2l2ZVhSRGV2aWNlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gSWYg
dGhlIGltbWVyc2l2ZSBYUiBkZXZpY2UgaXMgbnVsbAorICAgICAgICAvLyAgICBTZXQgY29udGV4
dOKAmXMgWFIgY29tcGF0aWJsZSBib29sZWFuIHRvIGZhbHNlIGFuZCByZWplY3QgcHJvbWlzZSB3
aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yLgorICAgICAgICBpZiAoIXhyU3lzdGVtLmhhc0FjdGl2
ZUltbWVyc2l2ZVhSRGV2aWNlKCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAvLyBJZiBj
b250ZXh04oCZcyBYUiBjb21wYXRpYmxlIGJvb2xlYW4gaXMgdHJ1ZS4gUmVzb2x2ZSBwcm9taXNl
LgotICAgIC8vIElmIGNvbnRleHQgd2FzIGNyZWF0ZWQgb24gYSBjb21wYXRpYmxlIGdyYXBoaWNz
IGFkYXB0ZXIgZm9yIHRoZSBpbW1lcnNpdmUgWFIgZGV2aWNlCi0gICAgLy8gIFNldCBjb250ZXh0
4oCZcyBYUiBjb21wYXRpYmxlIGJvb2xlYW4gdG8gdHJ1ZSBhbmQgcmVzb2x2ZSBwcm9taXNlLgot
ICAgIC8vIE90aGVyd2lzZTogUXVldWUgYSB0YXNrIG9uIHRoZSBXZWJHTCB0YXNrIHNvdXJjZSB0
byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgLy8gVE9ETzogYWRkIGEgd2F5IHRv
IHZlcmlmeSB0aGF0IHdlJ3JlIHVzaW5nIGEgY29tcGF0aWJsZSBncmFwaGljcyBhZGFwdGVyLgot
ICAgIG1faXNYUkNvbXBhdGlibGUgPSB0cnVlOwotICAgIHByb21pc2UucmVzb2x2ZSgpOwotICAg
IHJlamVjdFByb21pc2VXaXRoSW52YWxpZFN0YXRlRXJyb3IucmVsZWFzZSgpOworICAgICAgICAv
LyBJZiBjb250ZXh04oCZcyBYUiBjb21wYXRpYmxlIGJvb2xlYW4gaXMgdHJ1ZS4gUmVzb2x2ZSBw
cm9taXNlLgorICAgICAgICAvLyBJZiBjb250ZXh0IHdhcyBjcmVhdGVkIG9uIGEgY29tcGF0aWJs
ZSBncmFwaGljcyBhZGFwdGVyIGZvciB0aGUgaW1tZXJzaXZlIFhSIGRldmljZQorICAgICAgICAv
LyAgU2V0IGNvbnRleHTigJlzIFhSIGNvbXBhdGlibGUgYm9vbGVhbiB0byB0cnVlIGFuZCByZXNv
bHZlIHByb21pc2UuCisgICAgICAgIC8vIE90aGVyd2lzZTogUXVldWUgYSB0YXNrIG9uIHRoZSBX
ZWJHTCB0YXNrIHNvdXJjZSB0byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAg
IC8vIEZJWE1FOiBhZGQgYSB3YXkgdG8gdmVyaWZ5IHRoYXQgd2UncmUgdXNpbmcgYSBjb21wYXRp
YmxlIGdyYXBoaWNzIGFkYXB0ZXIuCisgICAgICAgIG1faXNYUkNvbXBhdGlibGUgPSB0cnVlOwor
ICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmVqZWN0UHJvbWlzZVdpdGhJbnZh
bGlkU3RhdGVFcnJvci5yZWxlYXNlKCk7CisgICAgfSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IGUzYzViNTJmYTk2MDM2MTJlYjRhNDQ3
ODVkNDk0ZDg1NWI2M2ExYTEuLmE3MTYyM2FlNDMzNmRhYjA3NTM3ZmNlN2EyYzZjNGQwOWFhNDYz
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKQEAgLTIwLDYgKzIw
LDcgQEAKIAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNzQs
OCArNzUsOCBAQCBjbGFzcyBJbnN0YW5jZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEluc3RhbmNl
JiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCk7
Ci0gICAgY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2U+PiYgaW1tZXJzaXZlWFJE
ZXZpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9pbW1lcnNpdmVYUkRldmljZXM7IH0KKyAgICB2b2lk
IGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlPj4mKT4mJik7CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIExhenlOZXZlckRlc3Ryb3llZDxJbnN0YW5jZT47CiAgICAgSW5zdGFuY2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3Bl
blhSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3Bl
blhSLmNwcAppbmRleCA0YjJjZTEwYWY5ZmI4YTg2ZWYwNGY4NjUyMGM2MDg2MjlkZWYwNTU0Li5j
NzZiNjZkN2UyNjZiZDgzNWI2YTNkZWRjZTkwMGMzZGY5YjZkOTk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCkBA
IC0yMTAsMTEgKzIxMCwxMiBAQCBJbnN0YW5jZTo6SW5zdGFuY2UoKQogewogfQogCi12b2lkIElu
c3RhbmNlOjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKQordm9pZCBJbnN0YW5jZTo6ZW51
bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2U+PiYgZGV2aWNlcyk+JiYgY2FsbGJhY2spCiB7CiAj
aWYgVVNFX09QRU5YUgogICAgIGlmIChtX2ltcGwtPnhySW5zdGFuY2UoKSA9PSBYUl9OVUxMX0hB
TkRMRSkgewogICAgICAgICBMT0coWFIsICIlcyBVbmFibGUgdG8gZW51bWVyYXRlIFhSIGRldmlj
ZXMuIE5vIFhySW5zdGFuY2UgcHJlc2VudFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgY2Fs
bGJhY2soeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjMzLDYgKzIzNCw3IEBA
IHZvaWQgSW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpCiAjZW5kaWYKIAog
ICAgIG1faW1tZXJzaXZlWFJEZXZpY2VzLmFwcGVuZChtYWtlVW5pcXVlPE9wZW5YUkRldmljZT4o
c3lzdGVtSWQsIG1faW1wbC0+eHJJbnN0YW5jZSgpKSk7CisgICAgY2FsbGJhY2sobV9pbW1lcnNp
dmVYUkRldmljZXMpOwogI2VuZGlmIC8vIFVTRV9PUEVOWFIKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410641</attachid>
            <date>2020-10-06 08:48:28 -0700</date>
            <delta_ts>2020-10-08 01:21:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217172-20201006174826.patch</filename>
            <type>text/plain</type>
            <size>25052</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3OTU0NzFjNzJhMjZh
NzQ4NGE1OGJmOWFjYTVhYzQwNzMxOWUyOS4uZjQyZGRjMWRkMjIwOGU1MmIwNjI2M2E5MmRmOThh
MDJkYTU2Y2RmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTAxICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
TWFrZSBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSBhc3luY2hyb25ub3VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxNzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY2FsbCB0byBlbnVt
ZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSBjYW4gYmxvY2sgdGhlIG1haW4gdGhyZWFkIGFuZCB0
aHVzIGl0IHNob3VsZCBiZSBhc3luY2hyb25vdXMuIFRoZSBzcGVjcworICAgICAgICBjbGVhcmx5
IHN0YXRlIHRoYXQgaXQgc2hvdWxkIGJlIHJ1biAiaW4gcGFyYWxsZWwiLiBUaGUgbGlzdCBvZiBh
dmFpbGFibGUgZGV2aWNlcyB3aWxsIGJlIHByb3ZpZGVkIHRvIHRoZSBjYWxsYmFjaworICAgICAg
ICAoYSBDb21wbGV0aW9uSGFuZGxlcikuIE5vdGUgdGhhdCB0aGUgT3BlblhSIGNvZGUgaXMgc3Rp
bGwgcnVubmluZyBvbiB0aGUgbWFpbiB0aHJlYWQgYnV0IGl0IHdpbGwgYmUgbWlncmF0ZWQgaW4K
KyAgICAgICAgYSBmb2xsb3cgdXAgcGF0Y2guCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZm9yY2Vk
IHVzIHRvIG1vZGlmeSB0aGUgd2hvbGUgY2hhaW4gb2YgY2FsbHMgdGhhdCBlbmQgaW4gZW51bWVy
YXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgaW4gdGhlIFdlYlhSIGNvZGUuCisgICAgICAgIEdvb2Qg
bmV3cyBpcyB0aGF0IGl0IGFsbG93ZWQgdXMgdG8gcmVtb3ZlIHNvbWUgY2FsbHMgdG8gcG9zdFRh
c2soKSBvciBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKSBiZWNhdXNlIGNvZGUgaXMKKyAg
ICAgICAgYWxyZWFkeSBydW5uaW5nICJpbiBwYXJhbGxlbCIgYWZ0ZXIgbW92aW5nIHRvIGFuIGFz
eW5jaHJvbm5vdXMgcGFyYWRpZ20gc28gdGhleSB3ZXJlIHJlZHVuZGFudC4KKworICAgICAgICBO
byBuZXcgdGVzdHMgcmVxdWlyZWQgYXMgdGhlcmUgaXMgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4K
KworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJTeXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCk6IEFk
ZGVkIGEgY2FsbGJhY2sgcGFyYW1ldGVyLiBNb3ZlZCBtb3N0IG9mIHRoZSBjb2RlCisgICAgICAg
IHRvIHRoZSBjYWxsYmFjayBwcm92aWRlZCB0byBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMo
KS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjpvYnRhaW5DdXJyZW50RGV2aWNlKTog
UmV0dXJucyB2b2lkIGFuZCBhY2NlcHRzIGEgbmV3IGNhbGxiYWNrIHBhcmFtYXRlci4gSGFkIHRv
IG1pZ3JhdGUgaXQKKyAgICAgICAgYmVjYXVzZSBpdCBjYW4gZXZlbnR1YWxseSBjYWxsIGVuc3Vy
ZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCgpLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJT
eXN0ZW06OmlzU2Vzc2lvblN1cHBvcnRlZCk6IFJlbW92ZWQgcG9zdFRhc2soKSwgZW5zdXJlSW1t
ZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKCkKKyAgICAgICAgaXMgcnVuIGluIHBhcmFsbGVsLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OnJlcXVlc3RTZXNzaW9uKTogUmVtb3ZlZCBx
dWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKSBhcyBvYnRhaW5DdXJyZW50RGV2aWNlKCkKKyAg
ICAgICAgaXMgcnVuIGluIHBhcmFsbGVsLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJT
eXN0ZW0uaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVDb250ZXh0V2ViR0wpOiBQYXNzIGEg
bm8tb3AgY2FsbGJhY2sgdG8gZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKCkuCisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYWtlWFJDb21wYXRpYmxl
KTogTW92ZWQgbW9zdCBvZiB0aGUgY29kZSBpbnRvIHRoZSBjYWxsYmFjaworICAgICAgICBvZiBl
bnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6aW1tZXJzaXZl
WFJEZXZpY2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIv
UGxhdGZvcm1YUk9wZW5YUi5jcHA6CisgICAgICAgIChQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6ZW51
bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKTogUmVjZWl2ZXMgYSBuZXcgY2FsbGJhY2sgcGFyYW1l
dGVyLCByZXR1cm5zIHRoZSBsaXN0IG9mCisgICAgICAgIGltbWVyc2l2ZSBkZXZpY2VzIHRvIHRo
ZSBjYWxsYmFjayBhcyBhIGNvbnN0IHBhcmFtZXRlci4KKwogMjAyMC0xMC0wNiAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgc2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpIHRvIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkgZXZlcnl3
aGVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAppbmRl
eCBlYmFiY2M0M2U0NGIxYjQ1OTcwMTdmNzM3MzIzMGI2ODZiMTc5Yjk2Li5lYzE0NGExZjUzNjg3
NzIzY2I4YWZkODhmOGZjNWVlZjY2OGU4NDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtNjksNTkgKzY5LDcyIEBAIFdlYlhSU3lzdGVtOjpX
ZWJYUlN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQogV2ViWFJTeXN0ZW06On5XZWJYUlN5c3RlbSgpID0gZGVmYXVsdDsKIAogLy8gaHR0cHM6Ly9p
bW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZW5zdXJlcy1hbi1pbW1lcnNpdmUteHItZGV2
aWNlLWlzLXNlbGVjdGVkCi12b2lkIFdlYlhSU3lzdGVtOjplbnN1cmVJbW1lcnNpdmVYUkRldmlj
ZUlzU2VsZWN0ZWQoKQordm9pZCBXZWJYUlN5c3RlbTo6ZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJ
c1NlbGVjdGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICAv
LyBEb24ndCBhc2sgcGxhdGZvcm0gY29kZSBmb3IgWFIgZGV2aWNlcywgd2UncmUgdXNpbmcgc2lt
dWxhdGVkIG9uZXMuCi0gICAgaWYgKFVOTElLRUxZKG1fdGVzdGluZ0RldmljZXMpKQorICAgIGlm
IChVTkxJS0VMWShtX3Rlc3RpbmdEZXZpY2VzKSkgeworICAgICAgICBjYWxsYmFjaygpOwogICAg
ICAgICByZXR1cm47CisgICAgfQogCi0gICAgaWYgKG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlKQor
ICAgIGlmIChtX2FjdGl2ZUltbWVyc2l2ZURldmljZSkgeworICAgICAgICBjYWxsYmFjaygpOwog
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdp
dGh1Yi5pby93ZWJ4ci8jZW51bWVyYXRlLWltbWVyc2l2ZS14ci1kZXZpY2VzCiAgICAgYXV0byYg
cGxhdGZvcm1YUiA9IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpzaW5nbGV0b24oKTsKICAgICBib29s
IGlzRmlyc3RYUkRldmljZXNFbnVtZXJhdGlvbiA9ICFtX2ltbWVyc2l2ZVhSRGV2aWNlc0hhdmVC
ZWVuRW51bWVyYXRlZDsKLSAgICBwbGF0Zm9ybVhSLmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNl
cygpOwotICAgIG1faW1tZXJzaXZlWFJEZXZpY2VzSGF2ZUJlZW5FbnVtZXJhdGVkID0gdHJ1ZTsK
LSAgICBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtWFI6OkRldmljZT4+JiBp
bW1lcnNpdmVYUkRldmljZXMgPSBwbGF0Zm9ybVhSLmltbWVyc2l2ZVhSRGV2aWNlcygpOworICAg
IHBsYXRmb3JtWFIuZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGlzRmlyc3RYUkRldmljZXNFbnVtZXJhdGlvbiwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgaW1tZXJzaXZlWFJEZXZpY2VzKSBtdXRhYmxl
IHsKKyAgICAgICAgbV9pbW1lcnNpdmVYUkRldmljZXNIYXZlQmVlbkVudW1lcmF0ZWQgPSB0cnVl
OworCisgICAgICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3Nl
bGVjdC1hbi1pbW1lcnNpdmUteHItZGV2aWNlCisgICAgICAgIGF1dG8qIG9sZERldmljZSA9IG1f
YWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdldCgpOworICAgICAgICBpZiAoaW1tZXJzaXZlWFJEZXZp
Y2VzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UgPSBu
dWxscHRyOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoaW1tZXJzaXZlWFJEZXZpY2VzLnNpemUoKSA9PSAxKSB7Cisg
ICAgICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmljZSA9IG1ha2VXZWFrUHRyKGltbWVyc2l2
ZVhSRGV2aWNlcy5maXJzdCgpLmdldCgpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdl
Yi5naXRodWIuaW8vd2VieHIvI3NlbGVjdC1hbi1pbW1lcnNpdmUteHItZGV2aWNlCi0gICAgYXV0
byogb2xkRGV2aWNlID0gbV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UuZ2V0KCk7Ci0gICAgaWYgKGlt
bWVyc2l2ZVhSRGV2aWNlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9hY3RpdmVJbW1lcnNpdmVE
ZXZpY2UgPSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChpbW1lcnNp
dmVYUkRldmljZXMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgbV9hY3RpdmVJbW1lcnNpdmVEZXZp
Y2UgPSBtYWtlV2Vha1B0cihpbW1lcnNpdmVYUkRldmljZXMuZmlyc3QoKS5nZXQoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgICAgIGlmIChtX2FjdGl2ZUltbWVyc2l2ZVNlc3Npb24g
JiYgb2xkRGV2aWNlICYmIGltbWVyc2l2ZVhSRGV2aWNlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8m
IGVudHJ5KSB7IHJldHVybiBlbnRyeS5nZXQoKSA9PSBvbGREZXZpY2U7IH0pICE9IG5vdEZvdW5k
KQorICAgICAgICAgICAgQVNTRVJUKG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdldCgpID09IG9s
ZERldmljZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVu
dCBhIGJldHRlciBVQSBzZWxlY3Rpb24gbWVjaGFuaXNtIGlmIHJlcXVpcmVkLgorICAgICAgICAg
ICAgbV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UgPSBtYWtlV2Vha1B0cihpbW1lcnNpdmVYUkRldmlj
ZXMuZmlyc3QoKS5nZXQoKSk7CisgICAgICAgIH0KIAotICAgIGlmIChtX2FjdGl2ZUltbWVyc2l2
ZVNlc3Npb24gJiYgb2xkRGV2aWNlICYmIGltbWVyc2l2ZVhSRGV2aWNlcy5maW5kTWF0Y2hpbmco
WyZdIChhdXRvJiBlbnRyeSkgeyByZXR1cm4gZW50cnkuZ2V0KCkgPT0gb2xkRGV2aWNlOyB9KSAh
PSBub3RGb3VuZCkKLSAgICAgICAgQVNTRVJUKG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdldCgp
ID09IG9sZERldmljZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIFRPRE86IGltcGxlbWVudCBh
IGJldHRlciBVQSBzZWxlY3Rpb24gbWVjaGFuaXNtIGlmIHJlcXVpcmVkLgotICAgICAgICBtX2Fj
dGl2ZUltbWVyc2l2ZURldmljZSA9IG1ha2VXZWFrUHRyKGltbWVyc2l2ZVhSRGV2aWNlcy5maXJz
dCgpLmdldCgpKTsKLSAgICB9CisgICAgICAgIGlmIChpc0ZpcnN0WFJEZXZpY2VzRW51bWVyYXRp
b24gfHwgbV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UuZ2V0KCkgPT0gb2xkRGV2aWNlKSB7CisgICAg
ICAgICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAg
ICBpZiAoaXNGaXJzdFhSRGV2aWNlc0VudW1lcmF0aW9uIHx8IG1fYWN0aXZlSW1tZXJzaXZlRGV2
aWNlLmdldCgpID09IG9sZERldmljZSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBGSVhN
RTogNy4gU2h1dCBkb3duIGFueSBhY3RpdmUgWFJTZXNzaW9ucy4KKyAgICAgICAgLy8gRklYTUU6
IDguIFNldCB0aGUgWFIgY29tcGF0aWJsZSBib29sZWFuIG9mIGFsbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlIGluc3RhbmNlcyB0byBmYWxzZS4KKyAgICAgICAgLy8gRklYTUU6IDkuIFF1ZXVl
IGEgdGFzayB0byBmaXJlIGFuIGV2ZW50IG5hbWVkIGRldmljZWNoYW5nZSBvbiB0aGUgY29udGV4
dCBvYmplY3QuCiAKLSAgICAvLyBUT0RPOiA3LiBTaHV0IGRvd24gYW55IGFjdGl2ZSBYUlNlc3Np
b25zLgotICAgIC8vIFRPRE86IDguIFNldCB0aGUgWFIgY29tcGF0aWJsZSBib29sZWFuIG9mIGFs
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIGluc3RhbmNlcyB0byBmYWxzZS4KLSAgICAvLyBU
T0RPOiA5LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhbiBldmVudCBuYW1lZCBkZXZpY2VjaGFuZ2Ug
b24gdGhlIGNvbnRleHQgb2JqZWN0LgorICAgICAgICBjYWxsYmFjaygpOworICAgIH0pOwogfQog
Ci0KLVBsYXRmb3JtWFI6OkRldmljZSogV2ViWFJTeXN0ZW06Om9idGFpbkN1cnJlbnREZXZpY2Uo
WFJTZXNzaW9uTW9kZSBtb2RlLCBjb25zdCBKU0ZlYXR1cmVzQXJyYXkmIHJlcXVpcmVkRmVhdHVy
ZXMsIGNvbnN0IEpTRmVhdHVyZXNBcnJheSYgb3B0aW9uYWxGZWF0dXJlcykKK3ZvaWQgV2ViWFJT
eXN0ZW06Om9idGFpbkN1cnJlbnREZXZpY2UoWFJTZXNzaW9uTW9kZSBtb2RlLCBjb25zdCBKU0Zl
YXR1cmVzQXJyYXkmIHJlcXVpcmVkRmVhdHVyZXMsIGNvbnN0IEpTRmVhdHVyZXNBcnJheSYgb3B0
aW9uYWxGZWF0dXJlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQbGF0Zm9ybVhSOjpEZXZpY2Uq
KT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAobW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJbW1lcnNp
dmVBciB8fCBtb2RlID09IFhSU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7Ci0gICAgICAgIGVu
c3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCgpOwotICAgICAgICByZXR1cm4gbV9hY3Rp
dmVJbW1lcnNpdmVEZXZpY2UuZ2V0KCk7CisgICAgICAgIGVuc3VyZUltbWVyc2l2ZVhSRGV2aWNl
SXNTZWxlY3RlZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdldCgpKTsK
KyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFyZXF1aXJlZEZl
YXR1cmVzLmlzRW1wdHkoKSB8fCAhb3B0aW9uYWxGZWF0dXJlcy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgY2FsbGJhY2sobV9pbmxpbmVYUkRldmljZS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgaWYgKCFyZXF1aXJlZEZlYXR1cmVzLmlzRW1wdHkoKSB8fCAhb3B0aW9uYWxGZWF0
dXJlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX2lubGluZVhSRGV2aWNlLmdldCgpOwog
Ci0gICAgcmV0dXJuICZtX2RlZmF1bHRJbmxpbmVEZXZpY2U7CisgICAgY2FsbGJhY2soJm1fZGVm
YXVsdElubGluZURldmljZSk7CiB9CiAKIApAQCAtMTQ0LDEwICsxNTcsOCBAQCB2b2lkIFdlYlhS
U3lzdGVtOjppc1Nlc3Npb25TdXBwb3J0ZWQoWFJTZXNzaW9uTW9kZSBtb2RlLCBJc1Nlc3Npb25T
dXBwb3J0ZWRQcm9taQogICAgIH0KIAogICAgIC8vIDQuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
IGluIHBhcmFsbGVsOgotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3Ro
aXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBtb2RlXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIG11dGFibGUgewotICAgICAgICAvLyA0LjEgRW5zdXJlIGFuIGltbWVyc2l2ZSBYUiBk
ZXZpY2UgaXMgc2VsZWN0ZWQuCi0gICAgICAgIGVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxl
Y3RlZCgpOwotCisgICAgLy8gNC4xIEVuc3VyZSBhbiBpbW1lcnNpdmUgWFIgZGV2aWNlIGlzIHNl
bGVjdGVkLgorICAgIGVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZChbdGhpcywgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIG1vZGVdKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDQu
MiBJZiB0aGUgaW1tZXJzaXZlIFhSIGRldmljZSBpcyBudWxsLCByZXNvbHZlIHByb21pc2Ugd2l0
aCBmYWxzZSBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgICAgIGlmICghbV9hY3RpdmVJbW1l
cnNpdmVEZXZpY2UpIHsKICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShmYWxzZSk7CkBAIC0z
NjAsNjkgKzM3MSw2NCBAQCB2b2lkIFdlYlhSU3lzdGVtOjpyZXF1ZXN0U2Vzc2lvbihEb2N1bWVu
dCYgZG9jdW1lbnQsIFhSU2Vzc2lvbk1vZGUgbW9kZSwgY29uc3QgWAogICAgIH0KIAogICAgIC8v
IDUuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHF1ZXVlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCBkb2N1bWVu
dCA9IG1ha2VXZWFrUHRyKGRvY3VtZW50KSwgaW1tZXJzaXZlLCBpbml0LCBtb2RlLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIC8vIDUuMSBMZXQgcmVx
dWlyZWRGZWF0dXJlcyBiZSBvcHRpb25zJyByZXF1aXJlZEZlYXR1cmVzLgotICAgICAgICAvLyA1
LjIgTGV0IG9wdGlvbmFsRmVhdHVyZXMgYmUgb3B0aW9ucycgb3B0aW9uYWxGZWF0dXJlcy4KLSAg
ICAgICAgLy8gNS4zIFNldCBkZXZpY2UgdG8gdGhlIHJlc3VsdCBvZiBvYnRhaW5pbmcgdGhlIGN1
cnJlbnQgZGV2aWNlIGZvciBtb2RlLCByZXF1aXJlZEZlYXR1cmVzLCBhbmQgb3B0aW9uYWxGZWF0
dXJlcy4KLSAgICAgICAgYXV0byogZGV2aWNlID0gb2J0YWluQ3VycmVudERldmljZShtb2RlLCBp
bml0LnJlcXVpcmVkRmVhdHVyZXMsIGluaXQub3B0aW9uYWxGZWF0dXJlcyk7Ci0KLSAgICAgICAg
Ly8gNS40IFF1ZXVlIGEgdGFzayB0byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAg
ICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIs
IFt0aGlzLCBkb2N1bWVudCA9IFdURk1vdmUoZG9jdW1lbnQpLCBkZXZpY2UgPSBtYWtlV2Vha1B0
cihkZXZpY2UpLCBpbW1lcnNpdmUsIGluaXQsIG1vZGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8gcmVqZWN0UHJvbWlzZVdpdGhOb3RT
dXBwb3J0ZWRFcnJvciA9IG1ha2VTY29wZUV4aXQoWyZdICgpIHsKLSAgICAgICAgICAgICAgICBw
cm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKLSAgICAgICAg
ICAgICAgICBtX3BlbmRpbmdJbW1lcnNpdmVTZXNzaW9uID0gZmFsc2U7Ci0gICAgICAgICAgICB9
KTsKLQotICAgICAgICAgICAgLy8gNS40LjEgSWYgZGV2aWNlIGlzIG51bGwgb3IgZGV2aWNlJ3Mg
bGlzdCBvZiBzdXBwb3J0ZWQgbW9kZXMgZG9lcyBub3QgY29udGFpbiBtb2RlLCBydW4gdGhlIGZv
bGxvd2luZyBzdGVwczoKLSAgICAgICAgICAgIC8vICAtIFJlamVjdCBwcm9taXNlIHdpdGggYSAi
Tm90U3VwcG9ydGVkRXJyb3IiIERPTUV4Y2VwdGlvbi4KLSAgICAgICAgICAgIC8vICAtIElmIGlt
bWVyc2l2ZSBpcyB0cnVlLCBzZXQgcGVuZGluZyBpbW1lcnNpdmUgc2Vzc2lvbiB0byBmYWxzZS4K
LSAgICAgICAgICAgIC8vICAtIEFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICAgICAgaWYgKCFk
ZXZpY2UgfHwgIWRldmljZS0+c3VwcG9ydHMobW9kZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBkb2N1bWVudCA/IGRvY3VtZW50
LT5leGVjU3RhdGUoKSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIC8vIFdlYktpdCBkb2VzIG5v
dCBjdXJyZW50bHkgc3VwcG9ydCB0aGUgUGVybWlzc2lvbnMgQVBJLiBodHRwczovL3czYy5naXRo
dWIuaW8vcGVybWlzc2lvbnMvCi0gICAgICAgICAgICAvLyBIb3dldmVyIHdlIGRvIGltcGxlbWVu
dCBoZXJlIHRoZSBwZXJtaXNzaW9uIHJlcXVlc3QgYWxnb3JpdGhtIHdpdGhvdXQgdGhlCi0gICAg
ICAgICAgICAvLyBQZXJtaXNzaW9ucyBBUEkgYml0cyBhcyBpdCBoYW5kbGVzLCBhbW9uZyBvdGhl
cnMsIHRoZSBzZXNzaW9uIGZlYXR1cmVzIHBhcnNpbmcuIFdlIGFsc28KLSAgICAgICAgICAgIC8v
IGRvIGl0IGhlcmUgYmVmb3JlIGNyZWF0aW5nIHRoZSBzZXNzaW9uIGFzIHRoZXJlIGlzIG5vIG5l
ZWQgdG8gZG8gaXQgb24gYWR2YW5jZS4KLSAgICAgICAgICAgIC8vIFRPRE86IHdlIGp1c3QgcGVy
Zm9ybSBiYXNpYyBjaGVja3Mgd2l0aG91dCBhc2tpbmcgYW55IHBlcm1pc3Npb24gdG8gdGhlIHVz
ZXIgc28gZmFyLiBNYXliZSB3ZSBzaG91bGQgaW1wbGVtZW50Ci0gICAgICAgICAgICAvLyBhIG1l
Y2hhbmlzbSBzaW1pbGFyIHRvIHdoYXQgb3RoZXJzIGRvIGludm9sdmluZyBwYXNzaW5nIGEgbWVz
c2FnZSB0byB0aGUgVUkgcHJvY2Vzcy4KLQotICAgICAgICAgICAgLy8gNS40LjQgTGV0IGRlc2Ny
aXB0b3IgYmUgYW4gWFJQZXJtaXNzaW9uRGVzY3JpcHRvciBpbml0aWFsaXplZCB3aXRoIHNlc3Np
b24sIHJlcXVpcmVkRmVhdHVyZXMsIGFuZCBvcHRpb25hbEZlYXR1cmVzCi0gICAgICAgICAgICAv
LyA1LjQuNSBMZXQgc3RhdHVzIGJlIGFuIFhSUGVybWlzc2lvblN0YXR1cywgaW5pdGlhbGx5IG51
bGwKLSAgICAgICAgICAgIC8vIDUuNC42IFJlcXVlc3QgdGhlIHhyIHBlcm1pc3Npb24gd2l0aCBk
ZXNjcmlwdG9yIGFuZCBzdGF0dXMuCi0gICAgICAgICAgICAvLyA1LjQuNyBJZiBzdGF0dXMnIHN0
YXRlIGlzICJkZW5pZWQiIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOiAoc2FtZSBhcyBhYm92ZSBp
biA1LjQuMSkKLSAgICAgICAgICAgIGlmICghaXNYUlBlcm1pc3Npb25HcmFudGVkKG1vZGUsIGlu
aXQsIGRldmljZS5nZXQoKSwgKmdsb2JhbE9iamVjdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgICAgICAvLyA1LjQuMiBMZXQgc2Vzc2lvbiBiZSBhIG5ldyBYUlNlc3Npb24g
b2JqZWN0LgotICAgICAgICAgICAgLy8gNS40LjMgSW5pdGlhbGl6ZSB0aGUgc2Vzc2lvbiB3aXRo
IHNlc3Npb24sIG1vZGUsIGFuZCBkZXZpY2UuCi0gICAgICAgICAgICBhdXRvIHNlc3Npb24gPSBX
ZWJYUlNlc3Npb246OmNyZWF0ZSgqZG9jdW1lbnQsICp0aGlzLCBtb2RlLCAqZGV2aWNlKTsKLQot
ICAgICAgICAgICAgLy8gNS40LjggUG90ZW50aWFsbHkgc2V0IHRoZSBhY3RpdmUgaW1tZXJzaXZl
IHNlc3Npb24gYXMgZm9sbG93czoKLSAgICAgICAgICAgIGlmIChpbW1lcnNpdmUpIHsKLSAgICAg
ICAgICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZVNlc3Npb24gPSBzZXNzaW9uLmNvcHlSZWYoKTsK
LSAgICAgICAgICAgICAgICBtX3BlbmRpbmdJbW1lcnNpdmVTZXNzaW9uID0gZmFsc2U7Ci0gICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX2lubGluZVNlc3Npb25zLmFkZChzZXNz
aW9uLmNvcHlSZWYoKSk7Ci0KLSAgICAgICAgICAgIC8vIDUuNC45IFJlc29sdmUgcHJvbWlzZSB3
aXRoIHNlc3Npb24uCi0gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoc2Vzc2lvbik7Ci0gICAg
ICAgICAgICByZWplY3RQcm9taXNlV2l0aE5vdFN1cHBvcnRlZEVycm9yLnJlbGVhc2UoKTsKLQot
ICAgICAgICAgICAgLy8gVE9ETzoKLSAgICAgICAgICAgIC8vIDUuNC4xMCBRdWV1ZSBhIHRhc2sg
dG8gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOiBOT1RFOiBUaGVzZSBzdGVwcyBlbnN1cmUg
dGhhdCBpbml0aWFsIGlucHV0c291cmNlc2NoYW5nZQotICAgICAgICAgICAgLy8gZXZlbnRzIG9j
Y3VyIGFmdGVyIHRoZSBpbml0aWFsIHNlc3Npb24gaXMgcmVzb2x2ZWQuCi0gICAgICAgICAgICAv
LyAgICAgMS4gU2V0IHNlc3Npb24ncyBwcm9taXNlIHJlc29sdmVkIGZsYWcgdG8gdHJ1ZS4KLSAg
ICAgICAgICAgIC8vICAgICAyLiBMZXQgc291cmNlcyBiZSBhbnkgZXhpc3RpbmcgaW5wdXQgc291
cmNlcyBhdHRhY2hlZCB0byBzZXNzaW9uLgotICAgICAgICAgICAgLy8gICAgIDMuIElmIHNvdXJj
ZXMgaXMgbm9uLWVtcHR5LCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgICAg
ICAvLyAgICAgICAgMS4gU2V0IHNlc3Npb24ncyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3Vy
Y2VzIHRvIHNvdXJjZXMuCi0gICAgICAgICAgICAvLyAgICAgICAgMi4gRmlyZSBhbiBYUklucHV0
U291cmNlc0NoYW5nZUV2ZW50IG5hbWVkIGlucHV0c291cmNlc2NoYW5nZSBvbiBzZXNzaW9uIHdp
dGggYWRkZWQgc2V0IHRvIHNvdXJjZXMuCi0KKyAgICAvLyA1LjEgTGV0IHJlcXVpcmVkRmVhdHVy
ZXMgYmUgb3B0aW9ucycgcmVxdWlyZWRGZWF0dXJlcy4KKyAgICAvLyA1LjIgTGV0IG9wdGlvbmFs
RmVhdHVyZXMgYmUgb3B0aW9ucycgb3B0aW9uYWxGZWF0dXJlcy4KKyAgICAvLyA1LjMgU2V0IGRl
dmljZSB0byB0aGUgcmVzdWx0IG9mIG9idGFpbmluZyB0aGUgY3VycmVudCBkZXZpY2UgZm9yIG1v
ZGUsIHJlcXVpcmVkRmVhdHVyZXMsIGFuZCBvcHRpb25hbEZlYXR1cmVzLgorICAgIC8vIDUuNCBR
dWV1ZSBhIHRhc2sgdG8gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIG9idGFpbkN1
cnJlbnREZXZpY2UobW9kZSwgaW5pdC5yZXF1aXJlZEZlYXR1cmVzLCBpbml0Lm9wdGlvbmFsRmVh
dHVyZXMsIFt0aGlzLCBwcm90ZWN0ZWREb2N1bWVudCA9IG1ha2VSZWYoZG9jdW1lbnQpLCBpbW1l
cnNpdmUsIGluaXQsIG1vZGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShQbGF0Zm9ybVhS
OjpEZXZpY2UqIGRldmljZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gcmVqZWN0UHJvbWlzZVdp
dGhOb3RTdXBwb3J0ZWRFcnJvciA9IG1ha2VTY29wZUV4aXQoWyZdKCkgeworICAgICAgICAgICAg
cHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfSk7CisgICAgICAg
ICAgICBtX3BlbmRpbmdJbW1lcnNpdmVTZXNzaW9uID0gZmFsc2U7CiAgICAgICAgIH0pOworCisg
ICAgICAgIC8vIDUuNC4xIElmIGRldmljZSBpcyBudWxsIG9yIGRldmljZSdzIGxpc3Qgb2Ygc3Vw
cG9ydGVkIG1vZGVzIGRvZXMgbm90IGNvbnRhaW4gbW9kZSwgcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6CisgICAgICAgIC8vICAtIFJlamVjdCBwcm9taXNlIHdpdGggYSAiTm90U3VwcG9ydGVkRXJy
b3IiIERPTUV4Y2VwdGlvbi4KKyAgICAgICAgLy8gIC0gSWYgaW1tZXJzaXZlIGlzIHRydWUsIHNl
dCBwZW5kaW5nIGltbWVyc2l2ZSBzZXNzaW9uIHRvIGZhbHNlLgorICAgICAgICAvLyAgLSBBYm9y
dCB0aGVzZSBzdGVwcy4KKyAgICAgICAgaWYgKCFkZXZpY2UgfHwgIWRldmljZS0+c3VwcG9ydHMo
bW9kZSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0gcHJvdGVjdGVkRG9jdW1lbnQtPmV4ZWNTdGF0ZSgpOworICAgICAgICBpZiAoIWdsb2JhbE9i
amVjdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBXZWJLaXQgZG9lcyBub3Qg
Y3VycmVudGx5IHN1cHBvcnQgdGhlIFBlcm1pc3Npb25zIEFQSS4gaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL3Blcm1pc3Npb25zLworICAgICAgICAvLyBIb3dldmVyIHdlIGRvIGltcGxlbWVudCBoZXJl
IHRoZSBwZXJtaXNzaW9uIHJlcXVlc3QgYWxnb3JpdGhtIHdpdGhvdXQgdGhlCisgICAgICAgIC8v
IFBlcm1pc3Npb25zIEFQSSBiaXRzIGFzIGl0IGhhbmRsZXMsIGFtb25nIG90aGVycywgdGhlIHNl
c3Npb24gZmVhdHVyZXMgcGFyc2luZy4gV2UgYWxzbworICAgICAgICAvLyBkbyBpdCBoZXJlIGJl
Zm9yZSBjcmVhdGluZyB0aGUgc2Vzc2lvbiBhcyB0aGVyZSBpcyBubyBuZWVkIHRvIGRvIGl0IG9u
IGFkdmFuY2UuCisgICAgICAgIC8vIEZJWE1FOiB3ZSBqdXN0IHBlcmZvcm0gYmFzaWMgY2hlY2tz
IHdpdGhvdXQgYXNraW5nIGFueSBwZXJtaXNzaW9uIHRvIHRoZSB1c2VyIHNvIGZhci4gTWF5YmUg
d2Ugc2hvdWxkIGltcGxlbWVudAorICAgICAgICAvLyBhIG1lY2hhbmlzbSBzaW1pbGFyIHRvIHdo
YXQgb3RoZXJzIGRvIGludm9sdmluZyBwYXNzaW5nIGEgbWVzc2FnZSB0byB0aGUgVUkgcHJvY2Vz
cy4KKworICAgICAgICAvLyA1LjQuNCBMZXQgZGVzY3JpcHRvciBiZSBhbiBYUlBlcm1pc3Npb25E
ZXNjcmlwdG9yIGluaXRpYWxpemVkIHdpdGggc2Vzc2lvbiwgcmVxdWlyZWRGZWF0dXJlcywgYW5k
IG9wdGlvbmFsRmVhdHVyZXMKKyAgICAgICAgLy8gNS40LjUgTGV0IHN0YXR1cyBiZSBhbiBYUlBl
cm1pc3Npb25TdGF0dXMsIGluaXRpYWxseSBudWxsCisgICAgICAgIC8vIDUuNC42IFJlcXVlc3Qg
dGhlIHhyIHBlcm1pc3Npb24gd2l0aCBkZXNjcmlwdG9yIGFuZCBzdGF0dXMuCisgICAgICAgIC8v
IDUuNC43IElmIHN0YXR1cycgc3RhdGUgaXMgImRlbmllZCIgcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6IChzYW1lIGFzIGFib3ZlIGluIDUuNC4xKQorICAgICAgICBpZiAoIWlzWFJQZXJtaXNzaW9u
R3JhbnRlZChtb2RlLCBpbml0LCBkZXZpY2UsICpnbG9iYWxPYmplY3QpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIC8vIDUuNC4yIExldCBzZXNzaW9uIGJlIGEgbmV3IFhSU2Vzc2lv
biBvYmplY3QuCisgICAgICAgIC8vIDUuNC4zIEluaXRpYWxpemUgdGhlIHNlc3Npb24gd2l0aCBz
ZXNzaW9uLCBtb2RlLCBhbmQgZGV2aWNlLgorICAgICAgICBhdXRvIHNlc3Npb24gPSBXZWJYUlNl
c3Npb246OmNyZWF0ZShwcm90ZWN0ZWREb2N1bWVudC5nZXQoKSwgKnRoaXMsIG1vZGUsICpkZXZp
Y2UpOworCisgICAgICAgIC8vIDUuNC44IFBvdGVudGlhbGx5IHNldCB0aGUgYWN0aXZlIGltbWVy
c2l2ZSBzZXNzaW9uIGFzIGZvbGxvd3M6CisgICAgICAgIGlmIChpbW1lcnNpdmUpIHsKKyAgICAg
ICAgICAgIG1fYWN0aXZlSW1tZXJzaXZlU2Vzc2lvbiA9IHNlc3Npb24uY29weVJlZigpOworICAg
ICAgICAgICAgbV9wZW5kaW5nSW1tZXJzaXZlU2Vzc2lvbiA9IGZhbHNlOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIG1faW5saW5lU2Vzc2lvbnMuYWRkKHNlc3Npb24uY29weVJlZigpKTsK
KworICAgICAgICAvLyA1LjQuOSBSZXNvbHZlIHByb21pc2Ugd2l0aCBzZXNzaW9uLgorICAgICAg
ICBwcm9taXNlLnJlc29sdmUoc2Vzc2lvbik7CisgICAgICAgIHJlamVjdFByb21pc2VXaXRoTm90
U3VwcG9ydGVkRXJyb3IucmVsZWFzZSgpOworCisgICAgICAgIC8vIEZJWE1FOgorICAgICAgICAv
LyA1LjQuMTAgUXVldWUgYSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczogTk9U
RTogVGhlc2Ugc3RlcHMgZW5zdXJlIHRoYXQgaW5pdGlhbCBpbnB1dHNvdXJjZXNjaGFuZ2UKKyAg
ICAgICAgLy8gZXZlbnRzIG9jY3VyIGFmdGVyIHRoZSBpbml0aWFsIHNlc3Npb24gaXMgcmVzb2x2
ZWQuCisgICAgICAgIC8vICAgICAxLiBTZXQgc2Vzc2lvbidzIHByb21pc2UgcmVzb2x2ZWQgZmxh
ZyB0byB0cnVlLgorICAgICAgICAvLyAgICAgMi4gTGV0IHNvdXJjZXMgYmUgYW55IGV4aXN0aW5n
IGlucHV0IHNvdXJjZXMgYXR0YWNoZWQgdG8gc2Vzc2lvbi4KKyAgICAgICAgLy8gICAgIDMuIElm
IHNvdXJjZXMgaXMgbm9uLWVtcHR5LCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAg
ICAgIC8vICAgICAgICAxLiBTZXQgc2Vzc2lvbidzIGxpc3Qgb2YgYWN0aXZlIFhSIGlucHV0IHNv
dXJjZXMgdG8gc291cmNlcy4KKyAgICAgICAgLy8gICAgICAgIDIuIEZpcmUgYW4gWFJJbnB1dFNv
dXJjZXNDaGFuZ2VFdmVudCBuYW1lZCBpbnB1dHNvdXJjZXNjaGFuZ2Ugb24gc2Vzc2lvbiB3aXRo
IGFkZGVkIHNldCB0byBzb3VyY2VzLgogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKaW5kZXggOWFhZDEyOGI1NmU2YmZjOTdkM2I0ZmQyMDYw
OTcwN2YyNWQyNmE1ZS4uYTY4MDZmNzg3NDA2YTFmMGMyMmNmNTJmNjI1MTdkOWRjOTNhOTNiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaApAQCAtNjksNyAr
NjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0U2Vzc2lvbihEb2N1bWVudCYsIFhSU2Vz
c2lvbk1vZGUsIGNvbnN0IFhSU2Vzc2lvbkluaXQmLCBSZXF1ZXN0U2Vzc2lvblByb21pc2UmJik7
CiAKICAgICAvLyBUaGlzIGlzIGFsc28gbmVlZGVkIGJ5IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6Om1ha2VYUkNvbXBhdGlibGUoKSBhbmQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNvbnRl
eHRXZWJHTCgpLgotICAgIHZvaWQgZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKCk7
CisgICAgdm9pZCBlbnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICBib29sIGhhc0FjdGl2ZUltbWVyc2l2ZVhSRGV2aWNlKCkg
eyByZXR1cm4gISFtX2FjdGl2ZUltbWVyc2l2ZURldmljZTsgfQogCiAgICAgdm9pZCBzZXNzaW9u
RW5kZWQoV2ViWFJTZXNzaW9uJik7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAKICAgICB1
c2luZyBGZWF0dXJlc0FycmF5ID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpMaXN0T2ZFbmFibGVkRmVh
dHVyZXM7CiAgICAgdXNpbmcgSlNGZWF0dXJlc0FycmF5ID0gVmVjdG9yPEpTQzo6SlNWYWx1ZT47
Ci0gICAgUGxhdGZvcm1YUjo6RGV2aWNlKiBvYnRhaW5DdXJyZW50RGV2aWNlKFhSU2Vzc2lvbk1v
ZGUsIGNvbnN0IEpTRmVhdHVyZXNBcnJheSYgcmVxdWlyZWRGZWF0dXJlcywgY29uc3QgSlNGZWF0
dXJlc0FycmF5JiBvcHRpb25hbEZlYXR1cmVzKTsKKyAgICB2b2lkIG9idGFpbkN1cnJlbnREZXZp
Y2UoWFJTZXNzaW9uTW9kZSwgY29uc3QgSlNGZWF0dXJlc0FycmF5JiByZXF1aXJlZEZlYXR1cmVz
LCBjb25zdCBKU0ZlYXR1cmVzQXJyYXkmIG9wdGlvbmFsRmVhdHVyZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUGxhdGZvcm1YUjo6RGV2aWNlKik+JiYpOwogCiAgICAgYm9vbCBpbW1lcnNpdmVT
ZXNzaW9uUmVxdWVzdElzQWxsb3dlZEZvckdsb2JhbE9iamVjdChET01XaW5kb3cmLCBEb2N1bWVu
dCYpIGNvbnN0OwogICAgIGJvb2wgaW5saW5lU2Vzc2lvblJlcXVlc3RJc0FsbG93ZWRGb3JHbG9i
YWxPYmplY3QoRE9NV2luZG93JiwgRG9jdW1lbnQmLCBjb25zdCBYUlNlc3Npb25Jbml0JikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDM2OTEy
MTM1NmJmNTEwZWNlZWU0ZDhhMzIzZGYxZWM4MzBmYTNhY2UuLjMwNWY2ODA2ZTg2NjRlODQ2ZDA1
YzZkMzQyNGQ2YTk1YjUxNjBjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCkBAIC00MzMsNyArNDMzLDkgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSog
SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNvbnRleHRXZWJHTChjb25zdCBTdHJpbmcmIHQKICAg
ICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN4ci1jb21wYXRpYmxl
CiAgICAgaWYgKGF0dHJzLnhyQ29tcGF0aWJsZSkgewogICAgICAgICBpZiAoYXV0byogd2luZG93
ID0gZG9jdW1lbnQoKS5kb21XaW5kb3coKSkKLSAgICAgICAgICAgIE5hdmlnYXRvcldlYlhSOjp4
cih3aW5kb3ctPm5hdmlnYXRvcigpKS5lbnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQo
KTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBob3cgdG8gbWFrZSB0aGlzIHN5bmMgd2l0aG91dCBi
bG9ja2luZyB0aGUgbWFpbiB0aHJlYWQ/CisgICAgICAgICAgICAvLyBGb3IgcmVmZXJlbmNlOiBo
dHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNyZWYtZm9yLWRvbS13ZWJnbGNv
bnRleHRhdHRyaWJ1dGVzLXhyY29tcGF0aWJsZQorICAgICAgICAgICAgTmF2aWdhdG9yV2ViWFI6
OnhyKHdpbmRvdy0+bmF2aWdhdG9yKCkpLmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3Rl
ZChbXSgpIHsgfSk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDQ1ZDZh
NmJmOTE2ZTVhZjNiYTAyOWExYjQ2NTZmOTM1ZDEwYTVlMC4uZGEyYjAzNGRmN2QxOGNmMTQxNTA4
OTI3ZjBmMjlhZjA2MjFjOTFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTM5MTIsNDUgKzM5MTIs
NTEgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsaW5rUHJvZ3JhbVdpdGhvdXRJ
bnZhbGlkYXRpbmdBdHRyaWJMb2NhdGlvbnMoV2UKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5n
aXRodWIuaW8vd2VieHIvI2RvbS13ZWJnbHJlbmRlcmluZ2NvbnRleHRiYXNlLW1ha2V4cmNvbXBh
dGlibGUKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFrZVhSQ29tcGF0aWJsZShN
YWtlWFJDb21wYXRpYmxlUHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAgYXV0byByZWplY3RQcm9t
aXNlV2l0aEludmFsaWRTdGF0ZUVycm9yID0gbWFrZVNjb3BlRXhpdChbJl0gKCkgewotICAgICAg
ICBtX2lzWFJDb21wYXRpYmxlID0gZmFsc2U7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwotICAgIH0pOwotCiAgICAgLy8gUmV0dXJuaW5n
IGFuIGV4Y2VwdGlvbiBpbiB0aGVzZSB0d28gY2hlY2tzIGlzIG5vdCBwYXJ0IG9mIHRoZSBzcGVj
LgogICAgIGF1dG8gY2FudmFzID0gaHRtbENhbnZhcygpOwotICAgIGlmICghY2FudmFzKQorICAg
IGlmICghY2FudmFzKSB7CisgICAgICAgIG1faXNYUkNvbXBhdGlibGUgPSBmYWxzZTsKKyAgICAg
ICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CiAgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKICAgICBhdXRvKiB3aW5kb3cgPSBjYW52YXMtPmRvY3VtZW50
KCkuZG9tV2luZG93KCk7Ci0gICAgaWYgKCF3aW5kb3cpCisgICAgaWYgKCF3aW5kb3cpIHsKKyAg
ICAgICAgbV9pc1hSQ29tcGF0aWJsZSA9IGZhbHNlOworICAgICAgICBwcm9taXNlLnJlamVjdChF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKICAgICAgICAgcmV0dXJuOworICAgIH0K
IAogICAgIC8vIDEuIExldCBwcm9taXNlIGJlIGEgbmV3IFByb21pc2UuCiAgICAgLy8gMi4gTGV0
IGNvbnRleHQgYmUgdGhlIHRhcmdldCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIG9iamVjdC4K
ICAgICAvLyAzLiBFbnN1cmUgYW4gaW1tZXJzaXZlIFhSIGRldmljZSBpcyBzZWxlY3RlZC4KICAg
ICBhdXRvJiB4clN5c3RlbSA9IE5hdmlnYXRvcldlYlhSOjp4cih3aW5kb3ctPm5hdmlnYXRvcigp
KTsKLSAgICB4clN5c3RlbS5lbnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQoKTsKLQot
ICAgIC8vIDQuIFNldCBjb250ZXh04oCZcyBYUiBjb21wYXRpYmxlIGJvb2xlYW4gYXMgZm9sbG93
czoKLSAgICAvLyAgICBJZiBjb250ZXh04oCZcyBXZWJHTCBjb250ZXh0IGxvc3QgZmxhZyBpcyBz
ZXQKLSAgICAvLyAgICAgIFNldCBjb250ZXh04oCZcyBYUiBjb21wYXRpYmxlIGJvb2xlYW4gdG8g
ZmFsc2UgYW5kIHJlamVjdCBwcm9taXNlIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCi0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKLSAgICAgICAgcmV0dXJuOworICAgIHhyU3lz
dGVtLmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcHJvdGVjdGVk
WHJTeXN0ZW0gPSBtYWtlUmVmKHhyU3lzdGVtKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBy
ZWplY3RQcm9taXNlV2l0aEludmFsaWRTdGF0ZUVycm9yID0gbWFrZVNjb3BlRXhpdChbJl0oKSB7
CisgICAgICAgICAgICBtX2lzWFJDb21wYXRpYmxlID0gZmFsc2U7CisgICAgICAgICAgICBwcm9t
aXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgLy8gNC4gU2V0IGNvbnRleHTigJlzIFhSIGNvbXBhdGlibGUgYm9vbGVhbiBh
cyBmb2xsb3dzOgorICAgICAgICAvLyAgICBJZiBjb250ZXh04oCZcyBXZWJHTCBjb250ZXh0IGxv
c3QgZmxhZyBpcyBzZXQKKyAgICAgICAgLy8gICAgICBTZXQgY29udGV4dOKAmXMgWFIgY29tcGF0
aWJsZSBib29sZWFuIHRvIGZhbHNlIGFuZCByZWplY3QgcHJvbWlzZSB3aXRoIGFuIEludmFsaWRT
dGF0ZUVycm9yLgorICAgICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLy8gSWYgdGhlIGltbWVyc2l2ZSBYUiBkZXZpY2UgaXMgbnVs
bAotICAgIC8vICAgIFNldCBjb250ZXh04oCZcyBYUiBjb21wYXRpYmxlIGJvb2xlYW4gdG8gZmFs
c2UgYW5kIHJlamVjdCBwcm9taXNlIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCi0gICAgaWYg
KCF4clN5c3RlbS5oYXNBY3RpdmVJbW1lcnNpdmVYUkRldmljZSgpKQotICAgICAgICByZXR1cm47
CisgICAgICAgIC8vIElmIHRoZSBpbW1lcnNpdmUgWFIgZGV2aWNlIGlzIG51bGwKKyAgICAgICAg
Ly8gICAgU2V0IGNvbnRleHTigJlzIFhSIGNvbXBhdGlibGUgYm9vbGVhbiB0byBmYWxzZSBhbmQg
cmVqZWN0IHByb21pc2Ugd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KKyAgICAgICAgaWYgKCFw
cm90ZWN0ZWRYclN5c3RlbS0+aGFzQWN0aXZlSW1tZXJzaXZlWFJEZXZpY2UoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKIAotICAgIC8vIElmIGNvbnRleHTigJlzIFhSIGNvbXBhdGlibGUgYm9vbGVh
biBpcyB0cnVlLiBSZXNvbHZlIHByb21pc2UuCi0gICAgLy8gSWYgY29udGV4dCB3YXMgY3JlYXRl
ZCBvbiBhIGNvbXBhdGlibGUgZ3JhcGhpY3MgYWRhcHRlciBmb3IgdGhlIGltbWVyc2l2ZSBYUiBk
ZXZpY2UKLSAgICAvLyAgU2V0IGNvbnRleHTigJlzIFhSIGNvbXBhdGlibGUgYm9vbGVhbiB0byB0
cnVlIGFuZCByZXNvbHZlIHByb21pc2UuCi0gICAgLy8gT3RoZXJ3aXNlOiBRdWV1ZSBhIHRhc2sg
b24gdGhlIFdlYkdMIHRhc2sgc291cmNlIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoK
LSAgICAvLyBUT0RPOiBhZGQgYSB3YXkgdG8gdmVyaWZ5IHRoYXQgd2UncmUgdXNpbmcgYSBjb21w
YXRpYmxlIGdyYXBoaWNzIGFkYXB0ZXIuCi0gICAgbV9pc1hSQ29tcGF0aWJsZSA9IHRydWU7Ci0g
ICAgcHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgcmVqZWN0UHJvbWlzZVdpdGhJbnZhbGlkU3RhdGVF
cnJvci5yZWxlYXNlKCk7CisgICAgICAgIC8vIElmIGNvbnRleHTigJlzIFhSIGNvbXBhdGlibGUg
Ym9vbGVhbiBpcyB0cnVlLiBSZXNvbHZlIHByb21pc2UuCisgICAgICAgIC8vIElmIGNvbnRleHQg
d2FzIGNyZWF0ZWQgb24gYSBjb21wYXRpYmxlIGdyYXBoaWNzIGFkYXB0ZXIgZm9yIHRoZSBpbW1l
cnNpdmUgWFIgZGV2aWNlCisgICAgICAgIC8vICBTZXQgY29udGV4dOKAmXMgWFIgY29tcGF0aWJs
ZSBib29sZWFuIHRvIHRydWUgYW5kIHJlc29sdmUgcHJvbWlzZS4KKyAgICAgICAgLy8gT3RoZXJ3
aXNlOiBRdWV1ZSBhIHRhc2sgb24gdGhlIFdlYkdMIHRhc2sgc291cmNlIHRvIHBlcmZvcm0gdGhl
IGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgLy8gRklYTUU6IGFkZCBhIHdheSB0byB2ZXJpZnkg
dGhhdCB3ZSdyZSB1c2luZyBhIGNvbXBhdGlibGUgZ3JhcGhpY3MgYWRhcHRlci4KKyAgICAgICAg
bV9pc1hSQ29tcGF0aWJsZSA9IHRydWU7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAg
ICAgICByZWplY3RQcm9taXNlV2l0aEludmFsaWRTdGF0ZUVycm9yLnJlbGVhc2UoKTsKKyAgICB9
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9Q
bGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKaW5k
ZXggZTNjNWI1MmZhOTYwMzYxMmViNGE0NDc4NWQ0OTRkODU1YjYzYTFhMS4uYTcxNjIzYWU0MzM2
ZGFiMDc1MzdmY2U3YTJjNmM0ZDA5YWE0NjMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L1BsYXRmb3JtWFIuaApAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgog
I2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC03NCw4ICs3NSw4IEBAIGNsYXNzIEluc3RhbmNlIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgSW5zdGFuY2UmIHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCBlbnVt
ZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKTsKLSAgICBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPERldmljZT4+JiBpbW1lcnNpdmVYUkRldmljZXMoKSBjb25zdCB7IHJldHVybiBtX2ltbWVy
c2l2ZVhSRGV2aWNlczsgfQorICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2U+
PiYpPiYmKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgTGF6eU5ldmVyRGVzdHJveWVkPEluc3Rh
bmNlPjsKICAgICBJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCmluZGV4IDRiMmNlMTBhZjlmYjhhODZl
ZjA0Zjg2NTIwYzYwODYyOWRlZjA1NTQuLmY4NmIzN2VhMjYzMGJkOTIyZGYyYWQ1N2ZhZTQ3NDhi
MzQ5OTE5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9Q
bGF0Zm9ybVhST3BlblhSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVu
eHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpZiBVU0VfT1BFTlhS
CiAjaW5jbHVkZSA8b3BlbnhyL29wZW54cl9wbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
I2VuZGlmIC8vIFVTRV9PUEVOWFIKQEAgLTIxMCw5ICsyMTEsMTIgQEAgSW5zdGFuY2U6Okluc3Rh
bmNlKCkKIHsKIH0KIAotdm9pZCBJbnN0YW5jZTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2Vz
KCkKK3ZvaWQgSW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlPj4mIGRldmlj
ZXMpPiYmIGNhbGxiYWNrKQogewogI2lmIFVTRV9PUEVOWFIKKyAgICBhdXRvIGNhbGxiYWNrT25F
eGl0ID0gbWFrZVNjb3BlRXhpdChbJl0oKSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAg
fSk7CiAgICAgaWYgKG1faW1wbC0+eHJJbnN0YW5jZSgpID09IFhSX05VTExfSEFORExFKSB7CiAg
ICAgICAgIExPRyhYUiwgIiVzIFVuYWJsZSB0byBlbnVtZXJhdGUgWFIgZGV2aWNlcy4gTm8gWHJJ
bnN0YW5jZSBwcmVzZW50XG4iLCBfX0ZVTkNUSU9OX18pOwogICAgICAgICByZXR1cm47CkBAIC0y
MzMsNiArMjM3LDggQEAgdm9pZCBJbnN0YW5jZTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2Vz
KCkKICNlbmRpZgogCiAgICAgbV9pbW1lcnNpdmVYUkRldmljZXMuYXBwZW5kKG1ha2VVbmlxdWU8
T3BlblhSRGV2aWNlPihzeXN0ZW1JZCwgbV9pbXBsLT54ckluc3RhbmNlKCkpKTsKKyAgICBjYWxs
YmFjayhtX2ltbWVyc2l2ZVhSRGV2aWNlcyk7CisgICAgY2FsbGJhY2tPbkV4aXQucmVsZWFzZSgp
OwogI2VuZGlmIC8vIFVTRV9PUEVOWFIKIH0KIAo=
</data>
<flag name="review"
          id="426639"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>