<?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>217752</bug_id>
          
          <creation_ts>2020-10-15 07:02:50 -0700</creation_ts>
          <short_desc>[WebXR] Move OpenXR calls off the main thread</short_desc>
          <delta_ts>2021-01-11 07:50:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>208988</blocked>
    
    <blocked>216925</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>dino</cc>
    
    <cc>sam</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1698092</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-15 07:02:50 -0700</bug_when>
    <thetext>[WebXR] Move OpenXR calls off the main thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698111</commentid>
    <comment_count>1</comment_count>
      <attachid>411442</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-15 07:42:43 -0700</bug_when>
    <thetext>Created attachment 411442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698112</commentid>
    <comment_count>2</comment_count>
      <attachid>411443</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-15 08:16:22 -0700</bug_when>
    <thetext>Created attachment 411443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698766</commentid>
    <comment_count>3</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-16 15:02:49 -0700</bug_when>
    <thetext>Gentle ping for reviewers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698929</commentid>
    <comment_count>4</comment_count>
      <attachid>411443</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2020-10-17 01:46:28 -0700</bug_when>
    <thetext>Comment on attachment 411443
Patch

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

&gt; Source/WebCore/platform/xr/PlatformXR.h:79
&gt; -    void enumerateImmersiveXRDevices(CompletionHandler&lt;void(const Vector&lt;std::unique_ptr&lt;Device&gt;&gt;&amp;)&gt;&amp;&amp;);
&gt; +    using DeviceList = Vector&lt;std::unique_ptr&lt;Device&gt;&gt;;
&gt; +    void enumerateImmersiveXRDevices(CompletionHandler&lt;void(DeviceList*)&gt;&amp;&amp;);

Is there a functionality-based reason behind this change? It&apos;s more assuring having to deal with an empty vector than a null pointer, plus you probably then need extra handling of a non-null pointer to an empty vector.

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:198
&gt; +#else
&gt; +{
&gt; +}
&gt; +#endif // USE_OPENXR

I would recommend separately guarding the m_workQueue initialization and the internals of the constructor implementation.

Guarding the body of the constructor this way leans too much into the preprocessor IMO, in the sense that the preprocessor is used to considerably change the formation of the implementation file, instead of just changing behavior of specific elements of the implementation (in this case the constructor&apos;s initialization list and body).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698933</commentid>
    <comment_count>5</comment_count>
      <attachid>411443</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-17 02:26:23 -0700</bug_when>
    <thetext>Comment on attachment 411443
Patch

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

&gt;&gt; Source/WebCore/platform/xr/PlatformXR.h:79
&gt;&gt; +    void enumerateImmersiveXRDevices(CompletionHandler&lt;void(DeviceList*)&gt;&amp;&amp;);
&gt; 
&gt; Is there a functionality-based reason behind this change? It&apos;s more assuring having to deal with an empty vector than a null pointer, plus you probably then need extra handling of a non-null pointer to an empty vector.

Just to avoid creating an empty vector in the error case. It does not require any extra handling but we can switch back to empty vectors.

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:198
&gt;&gt; +#endif // USE_OPENXR
&gt; 
&gt; I would recommend separately guarding the m_workQueue initialization and the internals of the constructor implementation.
&gt; 
&gt; Guarding the body of the constructor this way leans too much into the preprocessor IMO, in the sense that the preprocessor is used to considerably change the formation of the implementation file, instead of just changing behavior of specific elements of the implementation (in this case the constructor&apos;s initialization list and body).

Fair enough, I&apos;ll change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699205</commentid>
    <comment_count>6</comment_count>
      <attachid>411443</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-19 02:43:08 -0700</bug_when>
    <thetext>Comment on attachment 411443
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/xr/PlatformXR.h:79
&gt;&gt;&gt; +    void enumerateImmersiveXRDevices(CompletionHandler&lt;void(DeviceList*)&gt;&amp;&amp;);
&gt;&gt; 
&gt;&gt; Is there a functionality-based reason behind this change? It&apos;s more assuring having to deal with an empty vector than a null pointer, plus you probably then need extra handling of a non-null pointer to an empty vector.
&gt; 
&gt; Just to avoid creating an empty vector in the error case. It does not require any extra handling but we can switch back to empty vectors.

An empty vector is cheap so it is reasonable to use a const ref than a const pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699251</commentid>
    <comment_count>7</comment_count>
      <attachid>411747</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-19 08:17:08 -0700</bug_when>
    <thetext>Created attachment 411747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699261</commentid>
    <comment_count>8</comment_count>
      <attachid>411747</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-19 08:44:28 -0700</bug_when>
    <thetext>Comment on attachment 411747
Patch

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

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.h:66
&gt; +    WorkQueue&amp; m_queue;

Can this be strong reference (Ref&lt;WorkQueue&gt;) to the WorkQueue, or are you afraid of a cycle?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699366</commentid>
    <comment_count>9</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-19 12:25:47 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #8)
&gt; Comment on attachment 411747 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411747&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.h:66
&gt; &gt; +    WorkQueue&amp; m_queue;
&gt; 
&gt; Can this be strong reference (Ref&lt;WorkQueue&gt;) to the WorkQueue, or are you
&gt; afraid of a cycle?

There shouldn&apos;t be any cycle because devices do not hold references to the PlatformXR::Instance. However I&apos;m using a reference because the ownership of the queue is not transferred. According to [1] (I know it&apos;s a bit old)

&quot;
* If ownership and lifetime are guaranteed, a data member can be a raw reference or pointer.
* If the class needs to hold ownership or guarantee lifetime, the data member should be a Ref or RefPtr.&quot;

That&apos;s why I preferred to use a reference, but I don&apos;t have a strong opinion here, so I can switch to a Ref if you think it&apos;s more appropriate. 

[1] https://webkit.org/blog/5381/refptr-basics/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699630</commentid>
    <comment_count>10</comment_count>
      <attachid>411747</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-20 00:52:33 -0700</bug_when>
    <thetext>Comment on attachment 411747
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:94
&gt; +            });

Why not callOnMainThread(WTFMove(callback))?

&gt; Source/WebCore/platform/xr/PlatformXR.h:78
&gt; +    using DeviceList = Vector&lt;std::unique_ptr&lt;Device&gt;&gt;;

Can we use a Vector&lt;UniqueRef&lt;&gt;&gt;?

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

We can probably use callback({ })

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:254
&gt; +            m_immersiveXRDevices.append(makeUnique&lt;OpenXRDevice&gt;(systemId, m_impl-&gt;xrInstance(), m_impl-&gt;queue()));

How are we sure this is valid here? Should we instead use a weak pointer?
Something like:
m_impl-&gt;queue().dispatch([weakThis = makeWeakPtr(this)...]
...
callOnMainThread([weakThis = WTFMove(weakThis)...] {
    if (!weakThis) {
       callback({ });
       return;
    }
   ...
});

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

Ditto here.

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:262
&gt; +        callbackOnExit.release();

Just my taste but it reads better if callbackOnExit.release(); is called just before moving callback in callOnMainThread lambda.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699665</commentid>
    <comment_count>11</comment_count>
      <attachid>411747</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-20 03:50:10 -0700</bug_when>
    <thetext>Comment on attachment 411747
Patch

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

Thanks for the review! Uploading a new patch soon.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:94
&gt;&gt; +            });
&gt; 
&gt; Why not callOnMainThread(WTFMove(callback))?

Oh indeed. I had some debug code inside that block, that&apos;s why I didn&apos;t realize about it.

&gt;&gt; Source/WebCore/platform/xr/PlatformXR.h:78
&gt;&gt; +    using DeviceList = Vector&lt;std::unique_ptr&lt;Device&gt;&gt;;
&gt; 
&gt; Can we use a Vector&lt;UniqueRef&lt;&gt;&gt;?

Makes total sense to me.

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:232
&gt;&gt; +                callback(emptyList);
&gt; 
&gt; We can probably use callback({ })

Right, now that we&apos;re returning a const reference it should be indeed possible.

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:254
&gt;&gt; +            m_immersiveXRDevices.append(makeUnique&lt;OpenXRDevice&gt;(systemId, m_impl-&gt;xrInstance(), m_impl-&gt;queue()));
&gt; 
&gt; How are we sure this is valid here? Should we instead use a weak pointer?
&gt; Something like:
&gt; m_impl-&gt;queue().dispatch([weakThis = makeWeakPtr(this)...]
&gt; ...
&gt; callOnMainThread([weakThis = WTFMove(weakThis)...] {
&gt;     if (!weakThis) {
&gt;        callback({ });
&gt;        return;
&gt;     }
&gt;    ...
&gt; });

Because this is a singleton created with a LazyNeverDestroyed.

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:262
&gt;&gt; +        callbackOnExit.release();
&gt; 
&gt; Just my taste but it reads better if callbackOnExit.release(); is called just before moving callback in callOnMainThread lambda.

Sure, not strong feelings about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699677</commentid>
    <comment_count>12</comment_count>
      <attachid>411853</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-20 04:59:14 -0700</bug_when>
    <thetext>Created attachment 411853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699682</commentid>
    <comment_count>13</comment_count>
      <attachid>411853</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-20 05:17:20 -0700</bug_when>
    <thetext>Comment on attachment 411853
Patch

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

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

We are modifying m_immersiveXRDevices in the work queue but later append to it in the main thread.
This is probably unsafe.
We could probably simply remove this clear here and clear it when appending.
Instead of appending, we could do something like m_immersiveXRDevices = Vector::from(make...).

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:254
&gt; +            // device initialization is completed.

This seems a bit weird to do that handling here.
Could we do something like:
- create the device
- have the device an initialise method with a completion handler.
- call callback when initialise completion handler is called?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699700</commentid>
    <comment_count>14</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-20 06:52:47 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #13)
&gt; Comment on attachment 411853 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411853&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:235
&gt; &gt; +        m_immersiveXRDevices.clear();
&gt; 
&gt; We are modifying m_immersiveXRDevices in the work queue but later append to
&gt; it in the main thread.
&gt; This is probably unsafe.
&gt; We could probably simply remove this clear here and clear it when appending.
&gt; Instead of appending, we could do something like m_immersiveXRDevices =
&gt; Vector::from(make...).

Makes sense.

&gt; &gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:254
&gt; &gt; +            // device initialization is completed.
&gt; 
&gt; This seems a bit weird to do that handling here.
&gt; Could we do something like:
&gt; - create the device
&gt; - have the device an initialise method with a completion handler.
&gt; - call callback when initialise completion handler is called?

Seems cleaner indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700123</commentid>
    <comment_count>15</comment_count>
      <attachid>411967</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-21 02:38:59 -0700</bug_when>
    <thetext>Created attachment 411967
Patch

Finally decided to add the callback to the constructor. Creating an init() method was kind of artificial, forced us to expose it just for this case and also required adding type specialization traits to downcast the Devices in the DeviceList to OpenXR devices</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700161</commentid>
    <comment_count>16</comment_count>
      <attachid>411967</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-21 06:18:37 -0700</bug_when>
    <thetext>Comment on attachment 411967
Patch

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

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

clear not needed.

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:255
&gt; +            }));

It might read better like this:
prepareDevice(systemId, m_impl-&gt;xrInstance(), m_impl-&gt;queue(), [...](auto&amp;&amp; device) {
    m_immersiveXRDevices = DeviceList::from(WTFMove(device));
   callback(m_immersiveXRDevices);
});
It seems to me though that if m_immersiveXRDevices already has a device which is matching systemId and instance, we might just be able to return m_immersiveXRDevices directly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700625</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-22 07:03:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/70572576&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700768</commentid>
    <comment_count>18</comment_count>
      <attachid>411967</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-22 11:55:41 -0700</bug_when>
    <thetext>Comment on attachment 411967
Patch

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

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:255
&gt;&gt; +            }));
&gt; 
&gt; It might read better like this:
&gt; prepareDevice(systemId, m_impl-&gt;xrInstance(), m_impl-&gt;queue(), [...](auto&amp;&amp; device) {
&gt;     m_immersiveXRDevices = DeviceList::from(WTFMove(device));
&gt;    callback(m_immersiveXRDevices);
&gt; });
&gt; It seems to me though that if m_immersiveXRDevices already has a device which is matching systemId and instance, we might just be able to return m_immersiveXRDevices directly?

Not sure what prepareDevice() would look like. Note that we pass a callback to the constructor to ensure that the device has properly initialized everything in the work queue. I don&apos;t know how you could achieve that unless
you move all the code in the constructor to that prepareDevice() method. But you cannot do that because the code in the OpenXRDevice constructor initializes several internal attributes of OpenXRDevice. I had previously thought about that but I concluded that it would be better to do everything inside the OpenXRDevice class mainly for encapsulation (although I agree that having a completion callback for a constructor is not very usual).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700771</commentid>
    <comment_count>19</comment_count>
      <attachid>412120</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-22 12:02:05 -0700</bug_when>
    <thetext>Created attachment 412120
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700772</commentid>
    <comment_count>20</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-22 12:06:42 -0700</bug_when>
    <thetext>(In reply to Sergio Villar Senin from comment #18)
&gt; Comment on attachment 411967 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411967&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:255
&gt; &gt;&gt; +            }));
&gt; &gt; 
&gt; &gt; It might read better like this:
&gt; &gt; prepareDevice(systemId, m_impl-&gt;xrInstance(), m_impl-&gt;queue(), [...](auto&amp;&amp; device) {
&gt; &gt;     m_immersiveXRDevices = DeviceList::from(WTFMove(device));
&gt; &gt;    callback(m_immersiveXRDevices);
&gt; &gt; });
&gt; &gt; It seems to me though that if m_immersiveXRDevices already has a device which is matching systemId and instance, we might just be able to return m_immersiveXRDevices directly?
&gt; 
&gt; Not sure what prepareDevice() would look like. Note that we pass a callback
&gt; to the constructor to ensure that the device has properly initialized
&gt; everything in the work queue. I don&apos;t know how you could achieve that unless
&gt; you move all the code in the constructor to that prepareDevice() method. But
&gt; you cannot do that because the code in the OpenXRDevice constructor
&gt; initializes several internal attributes of OpenXRDevice. I had previously
&gt; thought about that but I concluded that it would be better to do everything
&gt; inside the OpenXRDevice class mainly for encapsulation (although I agree
&gt; that having a completion callback for a constructor is not very usual).

I&apos;d like to hear your opinion anyway about what I wrote above, but note that in the last patch I have just uploaded, the code looks better because I noticed that the OpenXRDevice should call the callback in the main thread because the CompletionHandler was created in the main thread. So the final code looks like:

m_immersiveXRDevices = DeviceList::from(...., [..., callback = WTFMove(callback)]() {
   ASSERT(isMainThread());
   callback(m_immersiveXRDevices);
});

which still requires the completion handler in the constructor but is much more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701804</commentid>
    <comment_count>21</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-27 03:08:57 -0700</bug_when>
    <thetext>(In reply to Sergio Villar Senin from comment #20)
&gt; (In reply to Sergio Villar Senin from comment #18)
&gt; &gt; Comment on attachment 411967 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=411967&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:255
&gt; &gt; &gt;&gt; +            }));
&gt; &gt; &gt; 
&gt; &gt; &gt; It might read better like this:
&gt; &gt; &gt; prepareDevice(systemId, m_impl-&gt;xrInstance(), m_impl-&gt;queue(), [...](auto&amp;&amp; device) {
&gt; &gt; &gt;     m_immersiveXRDevices = DeviceList::from(WTFMove(device));
&gt; &gt; &gt;    callback(m_immersiveXRDevices);
&gt; &gt; &gt; });
&gt; &gt; &gt; It seems to me though that if m_immersiveXRDevices already has a device which is matching systemId and instance, we might just be able to return m_immersiveXRDevices directly?
&gt; &gt; 
&gt; &gt; Not sure what prepareDevice() would look like. Note that we pass a callback
&gt; &gt; to the constructor to ensure that the device has properly initialized
&gt; &gt; everything in the work queue. I don&apos;t know how you could achieve that unless
&gt; &gt; you move all the code in the constructor to that prepareDevice() method. But
&gt; &gt; you cannot do that because the code in the OpenXRDevice constructor
&gt; &gt; initializes several internal attributes of OpenXRDevice. I had previously
&gt; &gt; thought about that but I concluded that it would be better to do everything
&gt; &gt; inside the OpenXRDevice class mainly for encapsulation (although I agree
&gt; &gt; that having a completion callback for a constructor is not very usual).
&gt; 
&gt; I&apos;d like to hear your opinion anyway about what I wrote above, but note that
&gt; in the last patch I have just uploaded, the code looks better because I
&gt; noticed that the OpenXRDevice should call the callback in the main thread
&gt; because the CompletionHandler was created in the main thread. So the final
&gt; code looks like:
&gt; 
&gt; m_immersiveXRDevices = DeviceList::from(...., [..., callback =
&gt; WTFMove(callback)]() {
&gt;    ASSERT(isMainThread());
&gt;    callback(m_immersiveXRDevices);
&gt; });
&gt; 
&gt; which still requires the completion handler in the constructor but is much
&gt; more readable.

Youenn ping ^^^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701807</commentid>
    <comment_count>22</comment_count>
      <attachid>412120</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-27 03:16:58 -0700</bug_when>
    <thetext>Comment on attachment 412120
Patch for landing

LGTM.
The callback on constructor feels a bit weird but I guess this is fine.
Ideally, we would not need to hop to background thread, then hop to main thread to create the device, then hop to background thread to initialise it, then hop to main thread to continue processing.
We would do something like: hop to background thread, create/initialize device, hop to main thread with the device (or a cross thread safe device structure), create the vector and continue processing.
Might be worth trying to achieve this in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701835</commentid>
    <comment_count>23</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-27 05:31:02 -0700</bug_when>
    <thetext>Committed r269032: &lt;https://trac.webkit.org/changeset/269032&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411442</attachid>
            <date>2020-10-15 07:42:43 -0700</date>
            <delta_ts>2020-10-15 08:16:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217752-20201015164241.patch</filename>
            <type>text/plain</type>
            <size>17442</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE4NzdhM2JjOWIyYTRi
MzViNGYxMzM2ZDA0MTUyMDU3MDM3YzViZC4uZmY1YTk1MTMyMmU0Nzc0OTZkMTZiM2FmMzJjMzEz
YjUwNDkzZGM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTEwLTE1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
TW92ZSBPcGVuWFIgY2FsbHMgb2ZmIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIE9wZW5YUiBBUEkgaXMgc3luY2hyb25v
dXMuIE1hbnkgb2YgdGhlIGNhbGxzIGludm9sdmUgZGVhbGluZyB3aXRoIGV4dGVybmFsIGhhcmR3
YXJlIGRldmljZXMKKyAgICAgICAgbWVhbmluZyB0aGF0IHRoZXkgaGF2ZSB0byBwb3RlbnRpYWwg
dG8gYmxvY2sgdGhlIG1haW4gdGhyZWFkLiBUaGV5IHNob3VsZCBiZSBtb3ZlZCB0byBhIGRpZmZl
cmVudAorICAgICAgICB0aHJlYWQgaW4gb3JkZXIgdG8gYXZvaWQgdGhhdC4KKworICAgICAgICBU
aGUgUGxhdGZvcm1YUjo6SW5zdGFuY2UgY3JlYXRlcyBhIFdvcmtRdWV1ZSB3aGljaCBpcyBnb2lu
ZyB0byBiZSB1c2VkIGJ5IHRoZSBPcGVuWFIgZGV2aWNlcyB0bworICAgICAgICBpc3N1ZSBPcGVu
WFIgY2FsbHMgYW5kIGFsc28gc2VyaWFsaXplIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUg
ZXhlY3V0ZWQgc2VxdWVudGlhbGx5LiBUaGUKKyAgICAgICAgT3BlblhSRGV2aWNlJ3MgYXJlIGNy
ZWF0ZWQgaW4gdGhlIG1haW4gdGhyZWFkIGFueXdheSBiZWNhdXNlIHdlIG5lZWQgdG8gZ2V0IHdl
YWsgcG9pbnRlcnMgZnJvbQorICAgICAgICB0aGVtIGluIHRoZSBtYWluIHRocmVhZC4KKworICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCk6IFVzZSBhIHNj
b3BlZCBleGl0IHRvIGNhbGwgY2FsbGJhY2suIEFsc28KKyAgICAgICAgdGhlIFZlY3RvciBvZiBp
bW1lcnNpdmUgZGV2aWNlcyBpcyBub3cgYSBwb2ludGVyIHdoaWNoIG1pZ2h0IGJlIG51bGwsIG1l
YW5pbmcgbm8gYXZhaWxhYmxlIGRldmljZXMuCisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oOiBBZGRlZCBhICJ1c2luZyIgZm9yIHRoZSBWZWN0b3Igb2YgZGV2aWNlcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHA6CisgICAgICAgIChQ
bGF0Zm9ybVhSOjpJbnN0YW5jZTo6SW1wbDo6cXVldWUgY29uc3QpOiBOZXcgZ2V0dGVyIHJldHVy
bmluZyB0aGUgV29ya1F1ZXVlLgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkltcGw6
OmVudW1lcmF0ZUFwaUxheWVyUHJvcGVydGllcyBjb25zdCk6IEFkZGVkIGFuIEFTU0VSVC4KKyAg
ICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjpjaGVja0luc3RhbmNlRXh0ZW5zaW9u
UHJvcGVydGllcyBjb25zdCk6IERpdHRvLgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6
OkltcGw6OkltcGwpOiBDcmVhdGUgdGhlIE9wZW5YUiBXb3JrUXVldWUgYW5kIGRpc3BhdGNoIGEg
dGFzayB0byBwZXJmb3JtIHRoZQorICAgICAgICBPcGVuWFIgc3lzdGVtIGluaXRpYWxpemF0aW9u
IGluIHRoZSBxdWV1ZS4KKyAgICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjp+SW1w
bCk6IERlbGV0ZSB0aGUgaW5zdGFuY2UgaW4gdGhlIFdvcmtRdWV1ZQorICAgICAgICAoUGxhdGZv
cm1YUjo6SW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyk6IE1vdmVkIHRoZSBj
b2RlIHRvIGEgdGFzayBpbiB0aGUgV29ya1F1ZXVlLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3Bl
blhSRGV2aWNlOjpPcGVuWFJEZXZpY2UpOiBEaXR0by4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9w
ZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2Rlcyk6IEFkZGVkIGFuIEFTU0VS
VC4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6Y29sbGVjdENvbmZpZ3VyYXRp
b25WaWV3cyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmg6IEFkZGVkIFdvcmtRdWV1ZSBhdHRyaWJ1dGUgYW5kIHBhcmFtZXRlciB0byBkZXZp
Y2UgY29uc3RydWN0b3IuCisKIDIwMjAtMTAtMTQgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmls
bGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1mbGV4Ym94XSBmbGV4LWdyb3cgcHJvcGVy
dHkgc2hvdWxkIGJlIGFuaW1hdGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlN5c3RlbS5jcHAKaW5kZXggYjQ3YTQ1N2M1NDQ2ZDIyMzUyYWIwYzEwZTY2ZjI3ZGQxYTdk
MzJiMy4uZDViNGQ0YzIxZTcyZDhmNDQ4NThlMjVjZWNiZjBkOWI3ZDNlNGY1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKQEAgLTg1LDM5ICs4NSw0
MCBAQCB2b2lkIFdlYlhSU3lzdGVtOjplbnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmCiAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2Vi
LmdpdGh1Yi5pby93ZWJ4ci8jZW51bWVyYXRlLWltbWVyc2l2ZS14ci1kZXZpY2VzCiAgICAgYXV0
byYgcGxhdGZvcm1YUiA9IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpzaW5nbGV0b24oKTsKICAgICBi
b29sIGlzRmlyc3RYUkRldmljZXNFbnVtZXJhdGlvbiA9ICFtX2ltbWVyc2l2ZVhSRGV2aWNlc0hh
dmVCZWVuRW51bWVyYXRlZDsKLSAgICBwbGF0Zm9ybVhSLmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2
aWNlcyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpc0ZpcnN0WFJEZXZp
Y2VzRW51bWVyYXRpb24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGltbWVy
c2l2ZVhSRGV2aWNlcykgbXV0YWJsZSB7CisgICAgcGxhdGZvcm1YUi5lbnVtZXJhdGVJbW1lcnNp
dmVYUkRldmljZXMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaXNGaXJz
dFhSRGV2aWNlc0VudW1lcmF0aW9uLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRv
KiBpbW1lcnNpdmVYUkRldmljZXMpIG11dGFibGUgewogICAgICAgICBtX2ltbWVyc2l2ZVhSRGV2
aWNlc0hhdmVCZWVuRW51bWVyYXRlZCA9IHRydWU7CiAKKyAgICAgICAgYXV0byBjYWxsYmFja09u
RXhpdCA9IG1ha2VTY29wZUV4aXQoWyZdKCkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCiAgICAgICAg
IC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3NlbGVjdC1hbi1pbW1l
cnNpdmUteHItZGV2aWNlCiAgICAgICAgIGF1dG8qIG9sZERldmljZSA9IG1fYWN0aXZlSW1tZXJz
aXZlRGV2aWNlLmdldCgpOwotICAgICAgICBpZiAoaW1tZXJzaXZlWFJEZXZpY2VzLmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoIWltbWVyc2l2ZVhSRGV2aWNlcykgewogICAgICAgICAgICAgbV9h
Y3RpdmVJbW1lcnNpdmVEZXZpY2UgPSBudWxscHRyOwotICAgICAgICAgICAgY2FsbGJhY2soKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAoaW1tZXJzaXZlWFJE
ZXZpY2VzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmlj
ZSA9IG1ha2VXZWFrUHRyKGltbWVyc2l2ZVhSRGV2aWNlcy5maXJzdCgpLmdldCgpKTsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIGlmIChpbW1lcnNpdmVYUkRldmljZXMtPnNpemUo
KSA9PSAxKSB7CisgICAgICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmljZSA9IG1ha2VXZWFr
UHRyKGltbWVyc2l2ZVhSRGV2aWNlcy0+Zmlyc3QoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9hY3RpdmVJbW1lcnNpdmVTZXNzaW9uICYm
IG9sZERldmljZSAmJiBpbW1lcnNpdmVYUkRldmljZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBl
bnRyeSkgeyByZXR1cm4gZW50cnkuZ2V0KCkgPT0gb2xkRGV2aWNlOyB9KSAhPSBub3RGb3VuZCkK
KyAgICAgICAgaWYgKG1fYWN0aXZlSW1tZXJzaXZlU2Vzc2lvbiAmJiBvbGREZXZpY2UgJiYgaW1t
ZXJzaXZlWFJEZXZpY2VzLT5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGVudHJ5KSB7IHJldHVybiBl
bnRyeS5nZXQoKSA9PSBvbGREZXZpY2U7IH0pICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgQVNT
RVJUKG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdldCgpID09IG9sZERldmljZSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhIGJldHRlciBVQSBzZWxl
Y3Rpb24gbWVjaGFuaXNtIGlmIHJlcXVpcmVkLgotICAgICAgICAgICAgbV9hY3RpdmVJbW1lcnNp
dmVEZXZpY2UgPSBtYWtlV2Vha1B0cihpbW1lcnNpdmVYUkRldmljZXMuZmlyc3QoKS5nZXQoKSk7
CisgICAgICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmljZSA9IG1ha2VXZWFrUHRyKGltbWVy
c2l2ZVhSRGV2aWNlcy0+Zmlyc3QoKS5nZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
aXNGaXJzdFhSRGV2aWNlc0VudW1lcmF0aW9uIHx8IG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdl
dCgpID09IG9sZERldmljZSkgewotICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiA3LiBTaHV0IGRvd24gYW55
IGFjdGl2ZSBYUlNlc3Npb25zLgogICAgICAgICAvLyBGSVhNRTogOC4gU2V0IHRoZSBYUiBjb21w
YXRpYmxlIGJvb2xlYW4gb2YgYWxsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgaW5zdGFuY2Vz
IHRvIGZhbHNlLgogICAgICAgICAvLyBGSVhNRTogOS4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYW4g
ZXZlbnQgbmFtZWQgZGV2aWNlY2hhbmdlIG9uIHRoZSBjb250ZXh0IG9iamVjdC4KLQotICAgICAg
ICBjYWxsYmFjaygpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmgKaW5kZXggYTcxNjIzYWU0MzM2ZGFiMDc1MzdmY2U3YTJjNmM0ZDA5YWE0NjMyNi4u
NmRiZTQ5YmJlYzQ3ZDYzODhmMjg5NzJkNDg5ODBkODU4MzdkZTU3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApAQCAtNzUsNyArNzUsOCBAQCBjbGFzcyBJbnN0YW5j
ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEluc3RhbmNlJiBzaW5nbGV0b24oKTsKIAotICAgIHZv
aWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2U+PiYpPiYmKTsKKyAgICB1c2luZyBEZXZp
Y2VMaXN0ID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2U+PjsKKyAgICB2b2lkIGVudW1l
cmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERldmljZUxpc3Qq
KT4mJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIExhenlOZXZlckRlc3Ryb3llZDxJbnN0YW5j
ZT47CkBAIC04NSw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IEltcGw7CiAgICAgVW5p
cXVlUmVmPEltcGw+IG1faW1wbDsKIAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNl
Pj4gbV9pbW1lcnNpdmVYUkRldmljZXM7CisgICAgRGV2aWNlTGlzdCBtX2ltbWVyc2l2ZVhSRGV2
aWNlczsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKaW5kZXggZjg2
YjM3ZWEyNjMwYmQ5MjJkZjJhZDU3ZmFlNDc0OGIzNDk5MTkxMS4uMDlkMGMwYjYxOTM0OWE4N2M1
N2IzZjRiOTliZTRlZTljNDc4YmNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcApAQCAtNzMsNiArNzMsNyBAQCBw
dWJsaWM6CiAKICNpZiBVU0VfT1BFTlhSCiAgICAgWHJJbnN0YW5jZSB4ckluc3RhbmNlKCkgY29u
c3QgeyByZXR1cm4gbV9pbnN0YW5jZTsgfQorICAgIFdvcmtRdWV1ZSYgcXVldWUoKSBjb25zdCB7
IHJldHVybiBtX3dvcmtRdWV1ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC04MSwxMiArODIs
MTQgQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNrSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVz
KCkgY29uc3Q7CiAKICAgICBYckluc3RhbmNlIG1faW5zdGFuY2UgeyBYUl9OVUxMX0hBTkRMRSB9
OworICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOwogI2VuZGlmIC8vIFVTRV9PUEVOWFIK
IH07CiAKICNpZiBVU0VfT1BFTlhSCiB2b2lkIEluc3RhbmNlOjpJbXBsOjplbnVtZXJhdGVBcGlM
YXllclByb3BlcnRpZXMoKSBjb25zdAogeworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgp
ID09ICZtX3dvcmtRdWV1ZS0+cnVuTG9vcCgpKTsKICAgICB1aW50MzJfdCBwcm9wZXJ0eUNvdW50
T3V0cHV0IHsgMCB9OwogICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyRW51bWVyYXRlQXBpTGF5ZXJQ
cm9wZXJ0aWVzKDAsICZwcm9wZXJ0eUNvdW50T3V0cHV0LCBudWxscHRyKTsKICAgICBSRVRVUk5f
SUZfRkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKCkiLCBtX2lu
c3RhbmNlKTsKQEAgLTExOSw2ICsxMjIsNyBAQCBzdGF0aWMgYm9vbCBpc0V4dGVuc2lvblN1cHBv
cnRlZChjb25zdCBjaGFyKiBleHRlbnNpb25OYW1lLCBWZWN0b3I8WHJFeHRlbnNpb25QcgogCiBi
b29sIEluc3RhbmNlOjpJbXBsOjpjaGVja0luc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygpIGNv
bnN0CiB7CisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fd29ya1F1ZXVlLT5y
dW5Mb29wKCkpOwogICAgIHVpbnQzMl90IHByb3BlcnR5Q291bnRPdXRwdXQgeyAwIH07CiAgICAg
WHJSZXN1bHQgcmVzdWx0ID0geHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMo
bnVsbHB0ciwgMCwgJnByb3BlcnR5Q291bnRPdXRwdXQsIG51bGxwdHIpOwogICAgIFJFVFVSTl9J
Rl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMi
LCBtX2luc3RhbmNlLCBmYWxzZSk7CkBAIC0xNTQsNDQgKzE1OCw1MiBAQCBib29sIEluc3RhbmNl
OjpJbXBsOjpjaGVja0luc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygpIGNvbnN0CiAjZW5kaWYg
Ly8gVVNFX09QRU5YUgogCiBJbnN0YW5jZTo6SW1wbDo6SW1wbCgpCi17CiAjaWYgVVNFX09QRU5Y
UgotICAgIExPRyhYUiwgIk9wZW5YUjogaW5pdGlhbGl6aW5nXG4iKTsKKyAgICA6IG1fd29ya1F1
ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJPcGVuWFIgcXVldWUiKSkKK3sKKyAgICBtX3dvcmtRdWV1
ZS0+ZGlzcGF0Y2goW3RoaXNdKCkgeworICAgICAgICBMT0coWFIsICJPcGVuWFI6IGluaXRpYWxp
emluZ1xuIik7CiAKLSAgICBlbnVtZXJhdGVBcGlMYXllclByb3BlcnRpZXMoKTsKKyAgICAgICAg
ZW51bWVyYXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKCk7CiAKLSAgICBpZiAoIWNoZWNrSW5zdGFuY2VF
eHRlbnNpb25Qcm9wZXJ0aWVzKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFjaGVj
a0luc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHNfYXBwbGljYXRpb25OYW1lID0gIldlYlhSIChXZWJLaXQp
IjsKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19hcHBsaWNhdGlvblZlcnNpb24gPSAxOwot
Ci0gICAgY29uc3QgY2hhciogY29uc3QgZW5hYmxlZEV4dGVuc2lvbnNbXSA9IHsKLSAgICAgICAg
WFJfTU5EX0hFQURMRVNTX0VYVEVOU0lPTl9OQU1FLAotICAgIH07Ci0KLSAgICBhdXRvIGNyZWF0
ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJJbnN0YW5jZUNyZWF0ZUluZm8sIFhSX1RZUEVfSU5T
VEFOQ0VfQ1JFQVRFX0lORk8+KCk7Ci0gICAgY3JlYXRlSW5mby5jcmVhdGVGbGFncyA9IDA7Ci0g
ICAgc3RkOjptZW1jcHkoY3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8uYXBwbGljYXRpb25OYW1l
LCBzX2FwcGxpY2F0aW9uTmFtZSwgWFJfTUFYX0FQUExJQ0FUSU9OX05BTUVfU0laRSk7Ci0gICAg
Y3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8uYXBpVmVyc2lvbiA9IFhSX0NVUlJFTlRfQVBJX1ZF
UlNJT047Ci0gICAgY3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8uYXBwbGljYXRpb25WZXJzaW9u
ID0gc19hcHBsaWNhdGlvblZlcnNpb247Ci0gICAgY3JlYXRlSW5mby5lbmFibGVkQXBpTGF5ZXJD
b3VudCA9IDA7Ci0gICAgY3JlYXRlSW5mby5lbmFibGVkRXh0ZW5zaW9uQ291bnQgPSBXVEZfQVJS
QVlfTEVOR1RIKGVuYWJsZWRFeHRlbnNpb25zKTsKLSAgICBjcmVhdGVJbmZvLmVuYWJsZWRFeHRl
bnNpb25OYW1lcyA9IGVuYWJsZWRFeHRlbnNpb25zOwotCi0gICAgWHJJbnN0YW5jZSBpbnN0YW5j
ZTsKLSAgICBYclJlc3VsdCByZXN1bHQgPSB4ckNyZWF0ZUluc3RhbmNlKCZjcmVhdGVJbmZvLCAm
aW5zdGFuY2UpOwotICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJDcmVhdGVJbnN0YW5j
ZSgpIiwgbV9pbnN0YW5jZSk7Ci0gICAgbV9pbnN0YW5jZSA9IGluc3RhbmNlOwotICAgIExPRyhY
UiwgInhyQ3JlYXRlSW5zdGFuY2UoKTogdXNpbmcgaW5zdGFuY2UgJXBcbiIsIG1faW5zdGFuY2Up
OwotI2VuZGlmIC8vIFVTRV9PUEVOWFIKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNfYXBw
bGljYXRpb25OYW1lID0gIldlYlhSIChXZWJLaXQpIjsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVp
bnQzMl90IHNfYXBwbGljYXRpb25WZXJzaW9uID0gMTsKKworICAgICAgICBjb25zdCBjaGFyKiBj
b25zdCBlbmFibGVkRXh0ZW5zaW9uc1tdID0geworICAgICAgICAgICAgWFJfTU5EX0hFQURMRVNT
X0VYVEVOU0lPTl9OQU1FLAorICAgICAgICB9OworCisgICAgICAgIGF1dG8gY3JlYXRlSW5mbyA9
IGNyZWF0ZVN0cnVjdHVyZTxYckluc3RhbmNlQ3JlYXRlSW5mbywgWFJfVFlQRV9JTlNUQU5DRV9D
UkVBVEVfSU5GTz4oKTsKKyAgICAgICAgY3JlYXRlSW5mby5jcmVhdGVGbGFncyA9IDA7CisgICAg
ICAgIHN0ZDo6bWVtY3B5KGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwcGxpY2F0aW9uTmFt
ZSwgc19hcHBsaWNhdGlvbk5hbWUsIFhSX01BWF9BUFBMSUNBVElPTl9OQU1FX1NJWkUpOworICAg
ICAgICBjcmVhdGVJbmZvLmFwcGxpY2F0aW9uSW5mby5hcGlWZXJzaW9uID0gWFJfQ1VSUkVOVF9B
UElfVkVSU0lPTjsKKyAgICAgICAgY3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8uYXBwbGljYXRp
b25WZXJzaW9uID0gc19hcHBsaWNhdGlvblZlcnNpb247CisgICAgICAgIGNyZWF0ZUluZm8uZW5h
YmxlZEFwaUxheWVyQ291bnQgPSAwOworICAgICAgICBjcmVhdGVJbmZvLmVuYWJsZWRFeHRlbnNp
b25Db3VudCA9IFdURl9BUlJBWV9MRU5HVEgoZW5hYmxlZEV4dGVuc2lvbnMpOworICAgICAgICBj
cmVhdGVJbmZvLmVuYWJsZWRFeHRlbnNpb25OYW1lcyA9IGVuYWJsZWRFeHRlbnNpb25zOworCisg
ICAgICAgIFhySW5zdGFuY2UgaW5zdGFuY2U7CisgICAgICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhy
Q3JlYXRlSW5zdGFuY2UoJmNyZWF0ZUluZm8sICZpbnN0YW5jZSk7CisgICAgICAgIFJFVFVSTl9J
Rl9GQUlMRUQocmVzdWx0LCAieHJDcmVhdGVJbnN0YW5jZSgpIiwgbV9pbnN0YW5jZSk7CisgICAg
ICAgIG1faW5zdGFuY2UgPSBpbnN0YW5jZTsKKyAgICAgICAgTE9HKFhSLCAieHJDcmVhdGVJbnN0
YW5jZSgpOiB1c2luZyBpbnN0YW5jZSAlcFxuIiwgbV9pbnN0YW5jZSk7CisgICAgfSk7CiB9Cisj
ZWxzZQoreworfQorI2VuZGlmIC8vIFVTRV9PUEVOWFIKIAogSW5zdGFuY2U6OkltcGw6On5JbXBs
KCkKIHsKICNpZiBVU0VfT1BFTlhSCi0gICAgaWYgKG1faW5zdGFuY2UgIT0gWFJfTlVMTF9IQU5E
TEUpCi0gICAgICAgIHhyRGVzdHJveUluc3RhbmNlKG1faW5zdGFuY2UpOworICAgIG1fd29ya1F1
ZXVlLT5kaXNwYXRjaChbdGhpc10geworICAgICAgICBpZiAobV9pbnN0YW5jZSAhPSBYUl9OVUxM
X0hBTkRMRSkKKyAgICAgICAgICAgIHhyRGVzdHJveUluc3RhbmNlKG1faW5zdGFuY2UpOworICAg
IH0pOwogI2VuZGlmCiB9CiAKQEAgLTIxMSw1MSArMjIzLDY4IEBAIEluc3RhbmNlOjpJbnN0YW5j
ZSgpCiB7CiB9CiAKLXZvaWQgSW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNl
Pj4mIGRldmljZXMpPiYmIGNhbGxiYWNrKQordm9pZCBJbnN0YW5jZTo6ZW51bWVyYXRlSW1tZXJz
aXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGV2aWNlTGlzdCogZGV2aWNlcyk+
JiYgY2FsbGJhY2spCiB7CiAjaWYgVVNFX09QRU5YUgotICAgIGF1dG8gY2FsbGJhY2tPbkV4aXQg
PSBtYWtlU2NvcGVFeGl0KFsmXSgpIHsKLSAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9KTsK
LSAgICBpZiAobV9pbXBsLT54ckluc3RhbmNlKCkgPT0gWFJfTlVMTF9IQU5ETEUpIHsKLSAgICAg
ICAgTE9HKFhSLCAiJXMgVW5hYmxlIHRvIGVudW1lcmF0ZSBYUiBkZXZpY2VzLiBObyBYckluc3Rh
bmNlIHByZXNlbnRcbiIsIF9fRlVOQ1RJT05fXyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgbV9pbXBsLT5xdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGNhbGxiYWNrT25FeGl0ID0gbWFrZVNj
b3BlRXhpdChbJl0oKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNr
KG51bGxwdHIpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogCi0gICAgYXV0byBzeXN0
ZW1HZXRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtR2V0SW5mbywgWFJfVFlQRV9TWVNU
RU1fR0VUX0lORk8+KCk7Ci0gICAgc3lzdGVtR2V0SW5mby5mb3JtRmFjdG9yID0gWFJfRk9STV9G
QUNUT1JfSEVBRF9NT1VOVEVEX0RJU1BMQVk7CisgICAgICAgIG1faW1tZXJzaXZlWFJEZXZpY2Vz
LmNsZWFyKCk7CiAKLSAgICBYclN5c3RlbUlkIHN5c3RlbUlkOwotICAgIFhyUmVzdWx0IHJlc3Vs
dCA9IHhyR2V0U3lzdGVtKG1faW1wbC0+eHJJbnN0YW5jZSgpLCAmc3lzdGVtR2V0SW5mbywgJnN5
c3RlbUlkKTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyR2V0U3lzdGVtIiwgbV9p
bXBsLT54ckluc3RhbmNlKCkpOworICAgICAgICBpZiAobV9pbXBsLT54ckluc3RhbmNlKCkgPT0g
WFJfTlVMTF9IQU5ETEUpIHsKKyAgICAgICAgICAgIExPRyhYUiwgIiVzIFVuYWJsZSB0byBlbnVt
ZXJhdGUgWFIgZGV2aWNlcy4gTm8gWHJJbnN0YW5jZSBwcmVzZW50XG4iLCBfX0ZVTkNUSU9OX18p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSNpZiAhTE9HX0RJU0FCTEVECi0g
ICAgYXV0byBzeXN0ZW1Qcm9wZXJ0aWVzID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtUHJvcGVy
dGllcywgWFJfVFlQRV9TWVNURU1fUFJPUEVSVElFUz4oKTsKLSAgICByZXN1bHQgPSB4ckdldFN5
c3RlbVByb3BlcnRpZXMobV9pbXBsLT54ckluc3RhbmNlKCksIHN5c3RlbUlkLCAmc3lzdGVtUHJv
cGVydGllcyk7Ci0gICAgaWYgKHJlc3VsdCA9PSBYUl9TVUNDRVNTKQotICAgICAgICBMT0coWFIs
ICJGb3VuZCBYUlN5c3RlbSAlbHU6IFwiJXNcIiwgdmVuZG9yIElEICVkXG4iLCBzeXN0ZW1Qcm9w
ZXJ0aWVzLnN5c3RlbUlkLCBzeXN0ZW1Qcm9wZXJ0aWVzLnN5c3RlbU5hbWUsIHN5c3RlbVByb3Bl
cnRpZXMudmVuZG9ySWQpOwotI2VuZGlmCisgICAgICAgIGF1dG8gc3lzdGVtR2V0SW5mbyA9IGNy
ZWF0ZVN0cnVjdHVyZTxYclN5c3RlbUdldEluZm8sIFhSX1RZUEVfU1lTVEVNX0dFVF9JTkZPPigp
OworICAgICAgICBzeXN0ZW1HZXRJbmZvLmZvcm1GYWN0b3IgPSBYUl9GT1JNX0ZBQ1RPUl9IRUFE
X01PVU5URURfRElTUExBWTsKKworICAgICAgICBYclN5c3RlbUlkIHN5c3RlbUlkOworICAgICAg
ICBYclJlc3VsdCByZXN1bHQgPSB4ckdldFN5c3RlbShtX2ltcGwtPnhySW5zdGFuY2UoKSwgJnN5
c3RlbUdldEluZm8sICZzeXN0ZW1JZCk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0
LCAieHJHZXRTeXN0ZW0iLCBtX2ltcGwtPnhySW5zdGFuY2UoKSk7CisKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc3lzdGVtSWRd
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICAvLyBDcmVhdGUgZGV2aWNlcyBpbiB0aGUgbWFpbiB0
aHJlYWQgYnV0IGRvIG5vdCBjYWxsIHRoZSBjYWxsYmFjayBpbW1lZGlhdGVseSBhcyB0aGUgZGV2
aWNlIG5lZWRzIHRvIGluaXRpYWxpemUKKyAgICAgICAgICAgIC8vIHNvbWUgc3R1ZmYgaW4gdGhl
IHdvcmsgcXVldWUuIFRoYXQncyB3aHkgd2UgbmVlZCB0byBxdWV1ZSBhbm90aGVyIHRhc2sgdG8g
Y2FsbCB0aGUgY2FsbGJhY2sgYWZ0ZXIgdGhlCisgICAgICAgICAgICAvLyBkZXZpY2UgaW5pdGlh
bGl6YXRpb24gaXMgY29tcGxldGVkLgorICAgICAgICAgICAgbV9pbW1lcnNpdmVYUkRldmljZXMu
YXBwZW5kKG1ha2VVbmlxdWU8T3BlblhSRGV2aWNlPihzeXN0ZW1JZCwgbV9pbXBsLT54ckluc3Rh
bmNlKCksIG1faW1wbC0+cXVldWUoKSkpOworICAgICAgICAgICAgbV9pbXBsLT5xdWV1ZSgpLmRp
c3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCZt
X2ltbWVyc2l2ZVhSRGV2aWNlcyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgY2FsbGJhY2tPbkV4aXQucmVsZWFzZSgpOworICAg
IH0pOwogCi0gICAgbV9pbW1lcnNpdmVYUkRldmljZXMuYXBwZW5kKG1ha2VVbmlxdWU8T3BlblhS
RGV2aWNlPihzeXN0ZW1JZCwgbV9pbXBsLT54ckluc3RhbmNlKCkpKTsKLSAgICBjYWxsYmFjayht
X2ltbWVyc2l2ZVhSRGV2aWNlcyk7Ci0gICAgY2FsbGJhY2tPbkV4aXQucmVsZWFzZSgpOwogI2Vu
ZGlmIC8vIFVTRV9PUEVOWFIKIH0KIAogI2lmIFVTRV9PUEVOWFIKLU9wZW5YUkRldmljZTo6T3Bl
blhSRGV2aWNlKFhyU3lzdGVtSWQgaWQsIFhySW5zdGFuY2UgaW5zdGFuY2UpCitPcGVuWFJEZXZp
Y2U6Ok9wZW5YUkRldmljZShYclN5c3RlbUlkIGlkLCBYckluc3RhbmNlIGluc3RhbmNlLCBXb3Jr
UXVldWUmIHF1ZXVlKQogICAgIDogbV9zeXN0ZW1JZChpZCkKICAgICAsIG1faW5zdGFuY2UoaW5z
dGFuY2UpCisgICAgLCBtX3F1ZXVlKHF1ZXVlKQogewotICAgIGF1dG8gc3lzdGVtUHJvcGVydGll
cyA9IGNyZWF0ZVN0cnVjdHVyZTxYclN5c3RlbVByb3BlcnRpZXMsIFhSX1RZUEVfU1lTVEVNX1BS
T1BFUlRJRVM+KCk7Ci0gICAgWHJSZXN1bHQgcmVzdWx0ID0geHJHZXRTeXN0ZW1Qcm9wZXJ0aWVz
KGluc3RhbmNlLCBtX3N5c3RlbUlkLCAmc3lzdGVtUHJvcGVydGllcyk7Ci0gICAgaWYgKHJlc3Vs
dCA9PSBYUl9TVUNDRVNTKQotICAgICAgICBtX3N1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA9
IHN5c3RlbVByb3BlcnRpZXMudHJhY2tpbmdQcm9wZXJ0aWVzLm9yaWVudGF0aW9uVHJhY2tpbmcg
PT0gWFJfVFJVRTsKLSAgICBlbHNlCi0gICAgICAgIExPRyhYUiwgInhyR2V0U3lzdGVtUHJvcGVy
dGllcygpOiBlcnJvciAlc1xuIiwgcmVzdWx0VG9TdHJpbmcocmVzdWx0LCBtX2luc3RhbmNlKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzXSgpIHsKKyAgICAgICAg
YXV0byBzeXN0ZW1Qcm9wZXJ0aWVzID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtUHJvcGVydGll
cywgWFJfVFlQRV9TWVNURU1fUFJPUEVSVElFUz4oKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB4
ckdldFN5c3RlbVByb3BlcnRpZXMobV9pbnN0YW5jZSwgbV9zeXN0ZW1JZCwgJnN5c3RlbVByb3Bl
cnRpZXMpOworICAgICAgICBpZiAoIVhSX0ZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgbV9z
dXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPSBzeXN0ZW1Qcm9wZXJ0aWVzLnRyYWNraW5nUHJv
cGVydGllcy5vcmllbnRhdGlvblRyYWNraW5nID09IFhSX1RSVUU7CisjaWYgIUxPR19ESVNBQkxF
RAorICAgICAgICBlbHNlCisgICAgICAgICAgICBMT0coWFIsICJ4ckdldFN5c3RlbVByb3BlcnRp
ZXMoKTogZXJyb3IgJXNcbiIsIHJlc3VsdFRvU3RyaW5nKHJlc3VsdCwgbV9pbnN0YW5jZSkudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhYUiwgIkZvdW5kIFhSU3lzdGVtICVsdTogXCIlc1wi
LCB2ZW5kb3IgSUQgJWRcbiIsIHN5c3RlbVByb3BlcnRpZXMuc3lzdGVtSWQsIHN5c3RlbVByb3Bl
cnRpZXMuc3lzdGVtTmFtZSwgc3lzdGVtUHJvcGVydGllcy52ZW5kb3JJZCk7CisjZW5kaWYKIAot
ICAgIGNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMoKTsKLSAgICBjb2xsZWN0Q29uZmlndXJh
dGlvblZpZXdzKCk7CisgICAgICAgIGNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMoKTsKKyAg
ICAgICAgY29sbGVjdENvbmZpZ3VyYXRpb25WaWV3cygpOworICAgIH0pOwogfQogCiBEZXZpY2U6
Okxpc3RPZkVuYWJsZWRGZWF0dXJlcyBPcGVuWFJEZXZpY2U6OmVudW1lcmF0ZVJlZmVyZW5jZVNw
YWNlcyhYclNlc3Npb24mIHNlc3Npb24pIGNvbnN0CkBAIC0yOTksNiArMzI4LDcgQEAgRGV2aWNl
OjpMaXN0T2ZFbmFibGVkRmVhdHVyZXMgT3BlblhSRGV2aWNlOjplbnVtZXJhdGVSZWZlcmVuY2VT
cGFjZXMoWHJTZXNzaW9uJgogCiB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNl
c3Npb25Nb2RlcygpCiB7CisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVl
dWUucnVuTG9vcCgpKTsKICAgICB1aW50MzJfdCB2aWV3Q29uZmlndXJhdGlvbkNvdW50OwogICAg
IGF1dG8gcmVzdWx0ID0geHJFbnVtZXJhdGVWaWV3Q29uZmlndXJhdGlvbnMobV9pbnN0YW5jZSwg
bV9zeXN0ZW1JZCwgMCwgJnZpZXdDb25maWd1cmF0aW9uQ291bnQsIG51bGxwdHIpOwogICAgIFJF
VFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVWaWV3Q29uZmlndXJhdGlvbnMiLCBt
X2luc3RhbmNlKTsKQEAgLTM0MSw2ICszNzEsNyBAQCB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVj
dFN1cHBvcnRlZFNlc3Npb25Nb2RlcygpCiAKIHZvaWQgT3BlblhSRGV2aWNlOjpjb2xsZWN0Q29u
ZmlndXJhdGlvblZpZXdzKCkKIHsKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAm
bV9xdWV1ZS5ydW5Mb29wKCkpOwogICAgIGZvciAoYXV0byYgY29uZmlnIDogbV92aWV3Q29uZmln
dXJhdGlvblByb3BlcnRpZXMudmFsdWVzKCkpIHsKICAgICAgICAgdWludDMyX3Qgdmlld0NvdW50
OwogICAgICAgICBhdXRvIGNvbmZpZ1R5cGUgPSBjb25maWcudmlld0NvbmZpZ3VyYXRpb25UeXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3Jt
WFJPcGVuWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmgKaW5kZXggYzI4MTUwMjNhMjcyYTM0MmZmMmE5YWM0ODI1NjlkNTAzNjE1ODM3Yi4u
MDFjZDE1OTM3ZWUzYzlmMDMzNmEwNGJkZWQzNGRlNDYzYjQzMmQxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCkBAIC0y
Niw2ICsyNiw3IEBACiAKICNpZiBVU0VfT1BFTlhSCiAjaW5jbHVkZSA8b3BlbnhyL29wZW54ci5o
PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBQbGF0Zm9ybVhSIHsKIApA
QCAtNDMsNyArNDQsNyBAQCBuYW1lc3BhY2UgUGxhdGZvcm1YUiB7CiAvLyB0aGUgWFJTeXN0ZW0g
aXMgYmFzaWNhbGx5IHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIFdlYlhSIEFQSSBhdmFpbGFibGUg
dmlhIHRoZSBOYXZpZ2F0b3Igb2JqZWN0LgogY2xhc3MgT3BlblhSRGV2aWNlIGZpbmFsIDogcHVi
bGljIERldmljZSB7CiBwdWJsaWM6Ci0gICAgT3BlblhSRGV2aWNlKFhyU3lzdGVtSWQsIFhySW5z
dGFuY2UpOworICAgIE9wZW5YUkRldmljZShYclN5c3RlbUlkLCBYckluc3RhbmNlLCBXb3JrUXVl
dWUmKTsKICAgICBYclN5c3RlbUlkIHhyU3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3Rl
bUlkOyB9CiBwcml2YXRlOgogICAgIHZvaWQgY29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2Rlcygp
OwpAQCAtNjEsNiArNjIsOCBAQCBwcml2YXRlOgogICAgIFhyU3lzdGVtSWQgbV9zeXN0ZW1JZDsK
ICAgICBYckluc3RhbmNlIG1faW5zdGFuY2U7CiAgICAgWHJTZXNzaW9uIG1fc2Vzc2lvbjsKKwor
ICAgIFdvcmtRdWV1ZSYgbV9xdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBsYXRmb3JtWFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411443</attachid>
            <date>2020-10-15 08:16:22 -0700</date>
            <delta_ts>2020-10-19 08:16:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217752-20201015171620.patch</filename>
            <type>text/plain</type>
            <size>17444</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE4NzdhM2JjOWIyYTRi
MzViNGYxMzM2ZDA0MTUyMDU3MDM3YzViZC4uZmY1YTk1MTMyMmU0Nzc0OTZkMTZiM2FmMzJjMzEz
YjUwNDkzZGM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTEwLTE1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
TW92ZSBPcGVuWFIgY2FsbHMgb2ZmIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIE9wZW5YUiBBUEkgaXMgc3luY2hyb25v
dXMuIE1hbnkgb2YgdGhlIGNhbGxzIGludm9sdmUgZGVhbGluZyB3aXRoIGV4dGVybmFsIGhhcmR3
YXJlIGRldmljZXMKKyAgICAgICAgbWVhbmluZyB0aGF0IHRoZXkgaGF2ZSB0byBwb3RlbnRpYWwg
dG8gYmxvY2sgdGhlIG1haW4gdGhyZWFkLiBUaGV5IHNob3VsZCBiZSBtb3ZlZCB0byBhIGRpZmZl
cmVudAorICAgICAgICB0aHJlYWQgaW4gb3JkZXIgdG8gYXZvaWQgdGhhdC4KKworICAgICAgICBU
aGUgUGxhdGZvcm1YUjo6SW5zdGFuY2UgY3JlYXRlcyBhIFdvcmtRdWV1ZSB3aGljaCBpcyBnb2lu
ZyB0byBiZSB1c2VkIGJ5IHRoZSBPcGVuWFIgZGV2aWNlcyB0bworICAgICAgICBpc3N1ZSBPcGVu
WFIgY2FsbHMgYW5kIGFsc28gc2VyaWFsaXplIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUg
ZXhlY3V0ZWQgc2VxdWVudGlhbGx5LiBUaGUKKyAgICAgICAgT3BlblhSRGV2aWNlJ3MgYXJlIGNy
ZWF0ZWQgaW4gdGhlIG1haW4gdGhyZWFkIGFueXdheSBiZWNhdXNlIHdlIG5lZWQgdG8gZ2V0IHdl
YWsgcG9pbnRlcnMgZnJvbQorICAgICAgICB0aGVtIGluIHRoZSBtYWluIHRocmVhZC4KKworICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCk6IFVzZSBhIHNj
b3BlZCBleGl0IHRvIGNhbGwgY2FsbGJhY2suIEFsc28KKyAgICAgICAgdGhlIFZlY3RvciBvZiBp
bW1lcnNpdmUgZGV2aWNlcyBpcyBub3cgYSBwb2ludGVyIHdoaWNoIG1pZ2h0IGJlIG51bGwsIG1l
YW5pbmcgbm8gYXZhaWxhYmxlIGRldmljZXMuCisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oOiBBZGRlZCBhICJ1c2luZyIgZm9yIHRoZSBWZWN0b3Igb2YgZGV2aWNlcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHA6CisgICAgICAgIChQ
bGF0Zm9ybVhSOjpJbnN0YW5jZTo6SW1wbDo6cXVldWUgY29uc3QpOiBOZXcgZ2V0dGVyIHJldHVy
bmluZyB0aGUgV29ya1F1ZXVlLgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkltcGw6
OmVudW1lcmF0ZUFwaUxheWVyUHJvcGVydGllcyBjb25zdCk6IEFkZGVkIGFuIEFTU0VSVC4KKyAg
ICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjpjaGVja0luc3RhbmNlRXh0ZW5zaW9u
UHJvcGVydGllcyBjb25zdCk6IERpdHRvLgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6
OkltcGw6OkltcGwpOiBDcmVhdGUgdGhlIE9wZW5YUiBXb3JrUXVldWUgYW5kIGRpc3BhdGNoIGEg
dGFzayB0byBwZXJmb3JtIHRoZQorICAgICAgICBPcGVuWFIgc3lzdGVtIGluaXRpYWxpemF0aW9u
IGluIHRoZSBxdWV1ZS4KKyAgICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjp+SW1w
bCk6IERlbGV0ZSB0aGUgaW5zdGFuY2UgaW4gdGhlIFdvcmtRdWV1ZQorICAgICAgICAoUGxhdGZv
cm1YUjo6SW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyk6IE1vdmVkIHRoZSBj
b2RlIHRvIGEgdGFzayBpbiB0aGUgV29ya1F1ZXVlLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3Bl
blhSRGV2aWNlOjpPcGVuWFJEZXZpY2UpOiBEaXR0by4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9w
ZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2Rlcyk6IEFkZGVkIGFuIEFTU0VS
VC4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6Y29sbGVjdENvbmZpZ3VyYXRp
b25WaWV3cyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmg6IEFkZGVkIFdvcmtRdWV1ZSBhdHRyaWJ1dGUgYW5kIHBhcmFtZXRlciB0byBkZXZp
Y2UgY29uc3RydWN0b3IuCisKIDIwMjAtMTAtMTQgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmls
bGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1mbGV4Ym94XSBmbGV4LWdyb3cgcHJvcGVy
dHkgc2hvdWxkIGJlIGFuaW1hdGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlN5c3RlbS5jcHAKaW5kZXggYjQ3YTQ1N2M1NDQ2ZDIyMzUyYWIwYzEwZTY2ZjI3ZGQxYTdk
MzJiMy4uZDViNGQ0YzIxZTcyZDhmNDQ4NThlMjVjZWNiZjBkOWI3ZDNlNGY1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKQEAgLTg1LDM5ICs4NSw0
MCBAQCB2b2lkIFdlYlhSU3lzdGVtOjplbnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmCiAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2Vi
LmdpdGh1Yi5pby93ZWJ4ci8jZW51bWVyYXRlLWltbWVyc2l2ZS14ci1kZXZpY2VzCiAgICAgYXV0
byYgcGxhdGZvcm1YUiA9IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpzaW5nbGV0b24oKTsKICAgICBi
b29sIGlzRmlyc3RYUkRldmljZXNFbnVtZXJhdGlvbiA9ICFtX2ltbWVyc2l2ZVhSRGV2aWNlc0hh
dmVCZWVuRW51bWVyYXRlZDsKLSAgICBwbGF0Zm9ybVhSLmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2
aWNlcyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpc0ZpcnN0WFJEZXZp
Y2VzRW51bWVyYXRpb24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGltbWVy
c2l2ZVhSRGV2aWNlcykgbXV0YWJsZSB7CisgICAgcGxhdGZvcm1YUi5lbnVtZXJhdGVJbW1lcnNp
dmVYUkRldmljZXMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaXNGaXJz
dFhSRGV2aWNlc0VudW1lcmF0aW9uLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRv
KiBpbW1lcnNpdmVYUkRldmljZXMpIG11dGFibGUgewogICAgICAgICBtX2ltbWVyc2l2ZVhSRGV2
aWNlc0hhdmVCZWVuRW51bWVyYXRlZCA9IHRydWU7CiAKKyAgICAgICAgYXV0byBjYWxsYmFja09u
RXhpdCA9IG1ha2VTY29wZUV4aXQoWyZdKCkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCiAgICAgICAg
IC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3NlbGVjdC1hbi1pbW1l
cnNpdmUteHItZGV2aWNlCiAgICAgICAgIGF1dG8qIG9sZERldmljZSA9IG1fYWN0aXZlSW1tZXJz
aXZlRGV2aWNlLmdldCgpOwotICAgICAgICBpZiAoaW1tZXJzaXZlWFJEZXZpY2VzLmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoIWltbWVyc2l2ZVhSRGV2aWNlcykgewogICAgICAgICAgICAgbV9h
Y3RpdmVJbW1lcnNpdmVEZXZpY2UgPSBudWxscHRyOwotICAgICAgICAgICAgY2FsbGJhY2soKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAoaW1tZXJzaXZlWFJE
ZXZpY2VzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmlj
ZSA9IG1ha2VXZWFrUHRyKGltbWVyc2l2ZVhSRGV2aWNlcy5maXJzdCgpLmdldCgpKTsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIGlmIChpbW1lcnNpdmVYUkRldmljZXMtPnNpemUo
KSA9PSAxKSB7CisgICAgICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmljZSA9IG1ha2VXZWFr
UHRyKGltbWVyc2l2ZVhSRGV2aWNlcy0+Zmlyc3QoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9hY3RpdmVJbW1lcnNpdmVTZXNzaW9uICYm
IG9sZERldmljZSAmJiBpbW1lcnNpdmVYUkRldmljZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBl
bnRyeSkgeyByZXR1cm4gZW50cnkuZ2V0KCkgPT0gb2xkRGV2aWNlOyB9KSAhPSBub3RGb3VuZCkK
KyAgICAgICAgaWYgKG1fYWN0aXZlSW1tZXJzaXZlU2Vzc2lvbiAmJiBvbGREZXZpY2UgJiYgaW1t
ZXJzaXZlWFJEZXZpY2VzLT5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGVudHJ5KSB7IHJldHVybiBl
bnRyeS5nZXQoKSA9PSBvbGREZXZpY2U7IH0pICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgQVNT
RVJUKG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdldCgpID09IG9sZERldmljZSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhIGJldHRlciBVQSBzZWxl
Y3Rpb24gbWVjaGFuaXNtIGlmIHJlcXVpcmVkLgotICAgICAgICAgICAgbV9hY3RpdmVJbW1lcnNp
dmVEZXZpY2UgPSBtYWtlV2Vha1B0cihpbW1lcnNpdmVYUkRldmljZXMuZmlyc3QoKS5nZXQoKSk7
CisgICAgICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmljZSA9IG1ha2VXZWFrUHRyKGltbWVy
c2l2ZVhSRGV2aWNlcy0+Zmlyc3QoKS5nZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
aXNGaXJzdFhSRGV2aWNlc0VudW1lcmF0aW9uIHx8IG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdl
dCgpID09IG9sZERldmljZSkgewotICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiA3LiBTaHV0IGRvd24gYW55
IGFjdGl2ZSBYUlNlc3Npb25zLgogICAgICAgICAvLyBGSVhNRTogOC4gU2V0IHRoZSBYUiBjb21w
YXRpYmxlIGJvb2xlYW4gb2YgYWxsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgaW5zdGFuY2Vz
IHRvIGZhbHNlLgogICAgICAgICAvLyBGSVhNRTogOS4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYW4g
ZXZlbnQgbmFtZWQgZGV2aWNlY2hhbmdlIG9uIHRoZSBjb250ZXh0IG9iamVjdC4KLQotICAgICAg
ICBjYWxsYmFjaygpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmgKaW5kZXggYTcxNjIzYWU0MzM2ZGFiMDc1MzdmY2U3YTJjNmM0ZDA5YWE0NjMyNi4u
NmRiZTQ5YmJlYzQ3ZDYzODhmMjg5NzJkNDg5ODBkODU4MzdkZTU3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApAQCAtNzUsNyArNzUsOCBAQCBjbGFzcyBJbnN0YW5j
ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEluc3RhbmNlJiBzaW5nbGV0b24oKTsKIAotICAgIHZv
aWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2U+PiYpPiYmKTsKKyAgICB1c2luZyBEZXZp
Y2VMaXN0ID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2U+PjsKKyAgICB2b2lkIGVudW1l
cmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERldmljZUxpc3Qq
KT4mJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIExhenlOZXZlckRlc3Ryb3llZDxJbnN0YW5j
ZT47CkBAIC04NSw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IEltcGw7CiAgICAgVW5p
cXVlUmVmPEltcGw+IG1faW1wbDsKIAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNl
Pj4gbV9pbW1lcnNpdmVYUkRldmljZXM7CisgICAgRGV2aWNlTGlzdCBtX2ltbWVyc2l2ZVhSRGV2
aWNlczsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKaW5kZXggZjg2
YjM3ZWEyNjMwYmQ5MjJkZjJhZDU3ZmFlNDc0OGIzNDk5MTkxMS4uMDlkMGMwYjYxOTM0OWE4N2M1
N2IzZjRiOTliZTRlZTljNDc4YmNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcApAQCAtNzMsNiArNzMsNyBAQCBw
dWJsaWM6CiAKICNpZiBVU0VfT1BFTlhSCiAgICAgWHJJbnN0YW5jZSB4ckluc3RhbmNlKCkgY29u
c3QgeyByZXR1cm4gbV9pbnN0YW5jZTsgfQorICAgIFdvcmtRdWV1ZSYgcXVldWUoKSBjb25zdCB7
IHJldHVybiBtX3dvcmtRdWV1ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC04MSwxMiArODIs
MTQgQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNrSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVz
KCkgY29uc3Q7CiAKICAgICBYckluc3RhbmNlIG1faW5zdGFuY2UgeyBYUl9OVUxMX0hBTkRMRSB9
OworICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOwogI2VuZGlmIC8vIFVTRV9PUEVOWFIK
IH07CiAKICNpZiBVU0VfT1BFTlhSCiB2b2lkIEluc3RhbmNlOjpJbXBsOjplbnVtZXJhdGVBcGlM
YXllclByb3BlcnRpZXMoKSBjb25zdAogeworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgp
ID09ICZtX3dvcmtRdWV1ZS0+cnVuTG9vcCgpKTsKICAgICB1aW50MzJfdCBwcm9wZXJ0eUNvdW50
T3V0cHV0IHsgMCB9OwogICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyRW51bWVyYXRlQXBpTGF5ZXJQ
cm9wZXJ0aWVzKDAsICZwcm9wZXJ0eUNvdW50T3V0cHV0LCBudWxscHRyKTsKICAgICBSRVRVUk5f
SUZfRkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKCkiLCBtX2lu
c3RhbmNlKTsKQEAgLTExOSw2ICsxMjIsNyBAQCBzdGF0aWMgYm9vbCBpc0V4dGVuc2lvblN1cHBv
cnRlZChjb25zdCBjaGFyKiBleHRlbnNpb25OYW1lLCBWZWN0b3I8WHJFeHRlbnNpb25QcgogCiBi
b29sIEluc3RhbmNlOjpJbXBsOjpjaGVja0luc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygpIGNv
bnN0CiB7CisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fd29ya1F1ZXVlLT5y
dW5Mb29wKCkpOwogICAgIHVpbnQzMl90IHByb3BlcnR5Q291bnRPdXRwdXQgeyAwIH07CiAgICAg
WHJSZXN1bHQgcmVzdWx0ID0geHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMo
bnVsbHB0ciwgMCwgJnByb3BlcnR5Q291bnRPdXRwdXQsIG51bGxwdHIpOwogICAgIFJFVFVSTl9J
Rl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMi
LCBtX2luc3RhbmNlLCBmYWxzZSk7CkBAIC0xNTQsNDQgKzE1OCw1MiBAQCBib29sIEluc3RhbmNl
OjpJbXBsOjpjaGVja0luc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygpIGNvbnN0CiAjZW5kaWYg
Ly8gVVNFX09QRU5YUgogCiBJbnN0YW5jZTo6SW1wbDo6SW1wbCgpCi17CiAjaWYgVVNFX09QRU5Y
UgotICAgIExPRyhYUiwgIk9wZW5YUjogaW5pdGlhbGl6aW5nXG4iKTsKKyAgICA6IG1fd29ya1F1
ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJPcGVuWFIgcXVldWUiKSkKK3sKKyAgICBtX3dvcmtRdWV1
ZS0+ZGlzcGF0Y2goW3RoaXNdKCkgeworICAgICAgICBMT0coWFIsICJPcGVuWFI6IGluaXRpYWxp
emluZ1xuIik7CiAKLSAgICBlbnVtZXJhdGVBcGlMYXllclByb3BlcnRpZXMoKTsKKyAgICAgICAg
ZW51bWVyYXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKCk7CiAKLSAgICBpZiAoIWNoZWNrSW5zdGFuY2VF
eHRlbnNpb25Qcm9wZXJ0aWVzKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFjaGVj
a0luc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHNfYXBwbGljYXRpb25OYW1lID0gIldlYlhSIChXZWJLaXQp
IjsKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19hcHBsaWNhdGlvblZlcnNpb24gPSAxOwot
Ci0gICAgY29uc3QgY2hhciogY29uc3QgZW5hYmxlZEV4dGVuc2lvbnNbXSA9IHsKLSAgICAgICAg
WFJfTU5EX0hFQURMRVNTX0VYVEVOU0lPTl9OQU1FLAotICAgIH07Ci0KLSAgICBhdXRvIGNyZWF0
ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJJbnN0YW5jZUNyZWF0ZUluZm8sIFhSX1RZUEVfSU5T
VEFOQ0VfQ1JFQVRFX0lORk8+KCk7Ci0gICAgY3JlYXRlSW5mby5jcmVhdGVGbGFncyA9IDA7Ci0g
ICAgc3RkOjptZW1jcHkoY3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8uYXBwbGljYXRpb25OYW1l
LCBzX2FwcGxpY2F0aW9uTmFtZSwgWFJfTUFYX0FQUExJQ0FUSU9OX05BTUVfU0laRSk7Ci0gICAg
Y3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8uYXBpVmVyc2lvbiA9IFhSX0NVUlJFTlRfQVBJX1ZF
UlNJT047Ci0gICAgY3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8uYXBwbGljYXRpb25WZXJzaW9u
ID0gc19hcHBsaWNhdGlvblZlcnNpb247Ci0gICAgY3JlYXRlSW5mby5lbmFibGVkQXBpTGF5ZXJD
b3VudCA9IDA7Ci0gICAgY3JlYXRlSW5mby5lbmFibGVkRXh0ZW5zaW9uQ291bnQgPSBXVEZfQVJS
QVlfTEVOR1RIKGVuYWJsZWRFeHRlbnNpb25zKTsKLSAgICBjcmVhdGVJbmZvLmVuYWJsZWRFeHRl
bnNpb25OYW1lcyA9IGVuYWJsZWRFeHRlbnNpb25zOwotCi0gICAgWHJJbnN0YW5jZSBpbnN0YW5j
ZTsKLSAgICBYclJlc3VsdCByZXN1bHQgPSB4ckNyZWF0ZUluc3RhbmNlKCZjcmVhdGVJbmZvLCAm
aW5zdGFuY2UpOwotICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJDcmVhdGVJbnN0YW5j
ZSgpIiwgbV9pbnN0YW5jZSk7Ci0gICAgbV9pbnN0YW5jZSA9IGluc3RhbmNlOwotICAgIExPRyhY
UiwgInhyQ3JlYXRlSW5zdGFuY2UoKTogdXNpbmcgaW5zdGFuY2UgJXBcbiIsIG1faW5zdGFuY2Up
OwotI2VuZGlmIC8vIFVTRV9PUEVOWFIKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNfYXBw
bGljYXRpb25OYW1lID0gIldlYlhSIChXZWJLaXQpIjsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVp
bnQzMl90IHNfYXBwbGljYXRpb25WZXJzaW9uID0gMTsKKworICAgICAgICBjb25zdCBjaGFyKiBj
b25zdCBlbmFibGVkRXh0ZW5zaW9uc1tdID0geworICAgICAgICAgICAgWFJfTU5EX0hFQURMRVNT
X0VYVEVOU0lPTl9OQU1FLAorICAgICAgICB9OworCisgICAgICAgIGF1dG8gY3JlYXRlSW5mbyA9
IGNyZWF0ZVN0cnVjdHVyZTxYckluc3RhbmNlQ3JlYXRlSW5mbywgWFJfVFlQRV9JTlNUQU5DRV9D
UkVBVEVfSU5GTz4oKTsKKyAgICAgICAgY3JlYXRlSW5mby5jcmVhdGVGbGFncyA9IDA7CisgICAg
ICAgIHN0ZDo6bWVtY3B5KGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwcGxpY2F0aW9uTmFt
ZSwgc19hcHBsaWNhdGlvbk5hbWUsIFhSX01BWF9BUFBMSUNBVElPTl9OQU1FX1NJWkUpOworICAg
ICAgICBjcmVhdGVJbmZvLmFwcGxpY2F0aW9uSW5mby5hcGlWZXJzaW9uID0gWFJfQ1VSUkVOVF9B
UElfVkVSU0lPTjsKKyAgICAgICAgY3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8uYXBwbGljYXRp
b25WZXJzaW9uID0gc19hcHBsaWNhdGlvblZlcnNpb247CisgICAgICAgIGNyZWF0ZUluZm8uZW5h
YmxlZEFwaUxheWVyQ291bnQgPSAwOworICAgICAgICBjcmVhdGVJbmZvLmVuYWJsZWRFeHRlbnNp
b25Db3VudCA9IFdURl9BUlJBWV9MRU5HVEgoZW5hYmxlZEV4dGVuc2lvbnMpOworICAgICAgICBj
cmVhdGVJbmZvLmVuYWJsZWRFeHRlbnNpb25OYW1lcyA9IGVuYWJsZWRFeHRlbnNpb25zOworCisg
ICAgICAgIFhySW5zdGFuY2UgaW5zdGFuY2U7CisgICAgICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhy
Q3JlYXRlSW5zdGFuY2UoJmNyZWF0ZUluZm8sICZpbnN0YW5jZSk7CisgICAgICAgIFJFVFVSTl9J
Rl9GQUlMRUQocmVzdWx0LCAieHJDcmVhdGVJbnN0YW5jZSgpIiwgbV9pbnN0YW5jZSk7CisgICAg
ICAgIG1faW5zdGFuY2UgPSBpbnN0YW5jZTsKKyAgICAgICAgTE9HKFhSLCAieHJDcmVhdGVJbnN0
YW5jZSgpOiB1c2luZyBpbnN0YW5jZSAlcFxuIiwgbV9pbnN0YW5jZSk7CisgICAgfSk7CiB9Cisj
ZWxzZQoreworfQorI2VuZGlmIC8vIFVTRV9PUEVOWFIKIAogSW5zdGFuY2U6OkltcGw6On5JbXBs
KCkKIHsKICNpZiBVU0VfT1BFTlhSCi0gICAgaWYgKG1faW5zdGFuY2UgIT0gWFJfTlVMTF9IQU5E
TEUpCi0gICAgICAgIHhyRGVzdHJveUluc3RhbmNlKG1faW5zdGFuY2UpOworICAgIG1fd29ya1F1
ZXVlLT5kaXNwYXRjaChbdGhpc10geworICAgICAgICBpZiAobV9pbnN0YW5jZSAhPSBYUl9OVUxM
X0hBTkRMRSkKKyAgICAgICAgICAgIHhyRGVzdHJveUluc3RhbmNlKG1faW5zdGFuY2UpOworICAg
IH0pOwogI2VuZGlmCiB9CiAKQEAgLTIxMSw1MSArMjIzLDY4IEBAIEluc3RhbmNlOjpJbnN0YW5j
ZSgpCiB7CiB9CiAKLXZvaWQgSW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNl
Pj4mIGRldmljZXMpPiYmIGNhbGxiYWNrKQordm9pZCBJbnN0YW5jZTo6ZW51bWVyYXRlSW1tZXJz
aXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGV2aWNlTGlzdCogZGV2aWNlcyk+
JiYgY2FsbGJhY2spCiB7CiAjaWYgVVNFX09QRU5YUgotICAgIGF1dG8gY2FsbGJhY2tPbkV4aXQg
PSBtYWtlU2NvcGVFeGl0KFsmXSgpIHsKLSAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9KTsK
LSAgICBpZiAobV9pbXBsLT54ckluc3RhbmNlKCkgPT0gWFJfTlVMTF9IQU5ETEUpIHsKLSAgICAg
ICAgTE9HKFhSLCAiJXMgVW5hYmxlIHRvIGVudW1lcmF0ZSBYUiBkZXZpY2VzLiBObyBYckluc3Rh
bmNlIHByZXNlbnRcbiIsIF9fRlVOQ1RJT05fXyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgbV9pbXBsLT5xdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGNhbGxiYWNrT25FeGl0ID0gbWFrZVNj
b3BlRXhpdChbJl0oKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNr
KG51bGxwdHIpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogCi0gICAgYXV0byBzeXN0
ZW1HZXRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtR2V0SW5mbywgWFJfVFlQRV9TWVNU
RU1fR0VUX0lORk8+KCk7Ci0gICAgc3lzdGVtR2V0SW5mby5mb3JtRmFjdG9yID0gWFJfRk9STV9G
QUNUT1JfSEVBRF9NT1VOVEVEX0RJU1BMQVk7CisgICAgICAgIG1faW1tZXJzaXZlWFJEZXZpY2Vz
LmNsZWFyKCk7CiAKLSAgICBYclN5c3RlbUlkIHN5c3RlbUlkOwotICAgIFhyUmVzdWx0IHJlc3Vs
dCA9IHhyR2V0U3lzdGVtKG1faW1wbC0+eHJJbnN0YW5jZSgpLCAmc3lzdGVtR2V0SW5mbywgJnN5
c3RlbUlkKTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyR2V0U3lzdGVtIiwgbV9p
bXBsLT54ckluc3RhbmNlKCkpOworICAgICAgICBpZiAobV9pbXBsLT54ckluc3RhbmNlKCkgPT0g
WFJfTlVMTF9IQU5ETEUpIHsKKyAgICAgICAgICAgIExPRyhYUiwgIiVzIFVuYWJsZSB0byBlbnVt
ZXJhdGUgWFIgZGV2aWNlcy4gTm8gWHJJbnN0YW5jZSBwcmVzZW50XG4iLCBfX0ZVTkNUSU9OX18p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSNpZiAhTE9HX0RJU0FCTEVECi0g
ICAgYXV0byBzeXN0ZW1Qcm9wZXJ0aWVzID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtUHJvcGVy
dGllcywgWFJfVFlQRV9TWVNURU1fUFJPUEVSVElFUz4oKTsKLSAgICByZXN1bHQgPSB4ckdldFN5
c3RlbVByb3BlcnRpZXMobV9pbXBsLT54ckluc3RhbmNlKCksIHN5c3RlbUlkLCAmc3lzdGVtUHJv
cGVydGllcyk7Ci0gICAgaWYgKHJlc3VsdCA9PSBYUl9TVUNDRVNTKQotICAgICAgICBMT0coWFIs
ICJGb3VuZCBYUlN5c3RlbSAlbHU6IFwiJXNcIiwgdmVuZG9yIElEICVkXG4iLCBzeXN0ZW1Qcm9w
ZXJ0aWVzLnN5c3RlbUlkLCBzeXN0ZW1Qcm9wZXJ0aWVzLnN5c3RlbU5hbWUsIHN5c3RlbVByb3Bl
cnRpZXMudmVuZG9ySWQpOwotI2VuZGlmCisgICAgICAgIGF1dG8gc3lzdGVtR2V0SW5mbyA9IGNy
ZWF0ZVN0cnVjdHVyZTxYclN5c3RlbUdldEluZm8sIFhSX1RZUEVfU1lTVEVNX0dFVF9JTkZPPigp
OworICAgICAgICBzeXN0ZW1HZXRJbmZvLmZvcm1GYWN0b3IgPSBYUl9GT1JNX0ZBQ1RPUl9IRUFE
X01PVU5URURfRElTUExBWTsKKworICAgICAgICBYclN5c3RlbUlkIHN5c3RlbUlkOworICAgICAg
ICBYclJlc3VsdCByZXN1bHQgPSB4ckdldFN5c3RlbShtX2ltcGwtPnhySW5zdGFuY2UoKSwgJnN5
c3RlbUdldEluZm8sICZzeXN0ZW1JZCk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0
LCAieHJHZXRTeXN0ZW0iLCBtX2ltcGwtPnhySW5zdGFuY2UoKSk7CisKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc3lzdGVtSWRd
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICAvLyBDcmVhdGUgZGV2aWNlcyBpbiB0aGUgbWFpbiB0
aHJlYWQgYnV0IGRvIG5vdCBjYWxsIHRoZSBjYWxsYmFjayBpbW1lZGlhdGVseSBhcyB0aGUgZGV2
aWNlIG5lZWRzIHRvIGluaXRpYWxpemUKKyAgICAgICAgICAgIC8vIHNvbWUgc3R1ZmYgaW4gdGhl
IHdvcmsgcXVldWUuIFRoYXQncyB3aHkgd2UgbmVlZCB0byBxdWV1ZSBhbm90aGVyIHRhc2sgdG8g
Y2FsbCB0aGUgY2FsbGJhY2sgYWZ0ZXIgdGhlCisgICAgICAgICAgICAvLyBkZXZpY2UgaW5pdGlh
bGl6YXRpb24gaXMgY29tcGxldGVkLgorICAgICAgICAgICAgbV9pbW1lcnNpdmVYUkRldmljZXMu
YXBwZW5kKG1ha2VVbmlxdWU8T3BlblhSRGV2aWNlPihzeXN0ZW1JZCwgbV9pbXBsLT54ckluc3Rh
bmNlKCksIG1faW1wbC0+cXVldWUoKSkpOworICAgICAgICAgICAgbV9pbXBsLT5xdWV1ZSgpLmRp
c3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCZt
X2ltbWVyc2l2ZVhSRGV2aWNlcyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgY2FsbGJhY2tPbkV4aXQucmVsZWFzZSgpOworICAg
IH0pOwogCi0gICAgbV9pbW1lcnNpdmVYUkRldmljZXMuYXBwZW5kKG1ha2VVbmlxdWU8T3BlblhS
RGV2aWNlPihzeXN0ZW1JZCwgbV9pbXBsLT54ckluc3RhbmNlKCkpKTsKLSAgICBjYWxsYmFjayht
X2ltbWVyc2l2ZVhSRGV2aWNlcyk7Ci0gICAgY2FsbGJhY2tPbkV4aXQucmVsZWFzZSgpOwogI2Vu
ZGlmIC8vIFVTRV9PUEVOWFIKIH0KIAogI2lmIFVTRV9PUEVOWFIKLU9wZW5YUkRldmljZTo6T3Bl
blhSRGV2aWNlKFhyU3lzdGVtSWQgaWQsIFhySW5zdGFuY2UgaW5zdGFuY2UpCitPcGVuWFJEZXZp
Y2U6Ok9wZW5YUkRldmljZShYclN5c3RlbUlkIGlkLCBYckluc3RhbmNlIGluc3RhbmNlLCBXb3Jr
UXVldWUmIHF1ZXVlKQogICAgIDogbV9zeXN0ZW1JZChpZCkKICAgICAsIG1faW5zdGFuY2UoaW5z
dGFuY2UpCisgICAgLCBtX3F1ZXVlKHF1ZXVlKQogewotICAgIGF1dG8gc3lzdGVtUHJvcGVydGll
cyA9IGNyZWF0ZVN0cnVjdHVyZTxYclN5c3RlbVByb3BlcnRpZXMsIFhSX1RZUEVfU1lTVEVNX1BS
T1BFUlRJRVM+KCk7Ci0gICAgWHJSZXN1bHQgcmVzdWx0ID0geHJHZXRTeXN0ZW1Qcm9wZXJ0aWVz
KGluc3RhbmNlLCBtX3N5c3RlbUlkLCAmc3lzdGVtUHJvcGVydGllcyk7Ci0gICAgaWYgKHJlc3Vs
dCA9PSBYUl9TVUNDRVNTKQotICAgICAgICBtX3N1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA9
IHN5c3RlbVByb3BlcnRpZXMudHJhY2tpbmdQcm9wZXJ0aWVzLm9yaWVudGF0aW9uVHJhY2tpbmcg
PT0gWFJfVFJVRTsKLSAgICBlbHNlCi0gICAgICAgIExPRyhYUiwgInhyR2V0U3lzdGVtUHJvcGVy
dGllcygpOiBlcnJvciAlc1xuIiwgcmVzdWx0VG9TdHJpbmcocmVzdWx0LCBtX2luc3RhbmNlKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzXSgpIHsKKyAgICAgICAg
YXV0byBzeXN0ZW1Qcm9wZXJ0aWVzID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtUHJvcGVydGll
cywgWFJfVFlQRV9TWVNURU1fUFJPUEVSVElFUz4oKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB4
ckdldFN5c3RlbVByb3BlcnRpZXMobV9pbnN0YW5jZSwgbV9zeXN0ZW1JZCwgJnN5c3RlbVByb3Bl
cnRpZXMpOworICAgICAgICBpZiAoIVhSX0ZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgbV9z
dXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPSBzeXN0ZW1Qcm9wZXJ0aWVzLnRyYWNraW5nUHJv
cGVydGllcy5vcmllbnRhdGlvblRyYWNraW5nID09IFhSX1RSVUU7CisjaWYgIUxPR19ESVNBQkxF
RAorICAgICAgICBlbHNlCisgICAgICAgICAgICBMT0coWFIsICJ4ckdldFN5c3RlbVByb3BlcnRp
ZXMoKTogZXJyb3IgJXNcbiIsIHJlc3VsdFRvU3RyaW5nKHJlc3VsdCwgbV9pbnN0YW5jZSkudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhYUiwgIkZvdW5kIFhSU3lzdGVtICVsdTogXCIlc1wi
LCB2ZW5kb3IgSUQgJWRcbiIsIHN5c3RlbVByb3BlcnRpZXMuc3lzdGVtSWQsIHN5c3RlbVByb3Bl
cnRpZXMuc3lzdGVtTmFtZSwgc3lzdGVtUHJvcGVydGllcy52ZW5kb3JJZCk7CisjZW5kaWYKIAot
ICAgIGNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMoKTsKLSAgICBjb2xsZWN0Q29uZmlndXJh
dGlvblZpZXdzKCk7CisgICAgICAgIGNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMoKTsKKyAg
ICAgICAgY29sbGVjdENvbmZpZ3VyYXRpb25WaWV3cygpOworICAgIH0pOwogfQogCiBEZXZpY2U6
Okxpc3RPZkVuYWJsZWRGZWF0dXJlcyBPcGVuWFJEZXZpY2U6OmVudW1lcmF0ZVJlZmVyZW5jZVNw
YWNlcyhYclNlc3Npb24mIHNlc3Npb24pIGNvbnN0CkBAIC0yOTksNiArMzI4LDcgQEAgRGV2aWNl
OjpMaXN0T2ZFbmFibGVkRmVhdHVyZXMgT3BlblhSRGV2aWNlOjplbnVtZXJhdGVSZWZlcmVuY2VT
cGFjZXMoWHJTZXNzaW9uJgogCiB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNl
c3Npb25Nb2RlcygpCiB7CisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVl
dWUucnVuTG9vcCgpKTsKICAgICB1aW50MzJfdCB2aWV3Q29uZmlndXJhdGlvbkNvdW50OwogICAg
IGF1dG8gcmVzdWx0ID0geHJFbnVtZXJhdGVWaWV3Q29uZmlndXJhdGlvbnMobV9pbnN0YW5jZSwg
bV9zeXN0ZW1JZCwgMCwgJnZpZXdDb25maWd1cmF0aW9uQ291bnQsIG51bGxwdHIpOwogICAgIFJF
VFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVWaWV3Q29uZmlndXJhdGlvbnMiLCBt
X2luc3RhbmNlKTsKQEAgLTM0MSw2ICszNzEsNyBAQCB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVj
dFN1cHBvcnRlZFNlc3Npb25Nb2RlcygpCiAKIHZvaWQgT3BlblhSRGV2aWNlOjpjb2xsZWN0Q29u
ZmlndXJhdGlvblZpZXdzKCkKIHsKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAm
bV9xdWV1ZS5ydW5Mb29wKCkpOwogICAgIGZvciAoYXV0byYgY29uZmlnIDogbV92aWV3Q29uZmln
dXJhdGlvblByb3BlcnRpZXMudmFsdWVzKCkpIHsKICAgICAgICAgdWludDMyX3Qgdmlld0NvdW50
OwogICAgICAgICBhdXRvIGNvbmZpZ1R5cGUgPSBjb25maWcudmlld0NvbmZpZ3VyYXRpb25UeXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3Jt
WFJPcGVuWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmgKaW5kZXggYzI4MTUwMjNhMjcyYTM0MmZmMmE5YWM0ODI1NjlkNTAzNjE1ODM3Yi4u
NTQ5YTUwNWQ1ZWYxM2U3YzE3NTcxZDAzZGExMjJiMWRmNDE4ZDNhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCkBAIC0y
Niw2ICsyNiw3IEBACiAKICNpZiBVU0VfT1BFTlhSCiAjaW5jbHVkZSA8b3BlbnhyL29wZW54ci5o
PgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFBsYXRmb3JtWFIgewog
CkBAIC00Myw3ICs0NCw3IEBAIG5hbWVzcGFjZSBQbGF0Zm9ybVhSIHsKIC8vIHRoZSBYUlN5c3Rl
bSBpcyBiYXNpY2FsbHkgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgV2ViWFIgQVBJIGF2YWlsYWJs
ZSB2aWEgdGhlIE5hdmlnYXRvciBvYmplY3QuCiBjbGFzcyBPcGVuWFJEZXZpY2UgZmluYWwgOiBw
dWJsaWMgRGV2aWNlIHsKIHB1YmxpYzoKLSAgICBPcGVuWFJEZXZpY2UoWHJTeXN0ZW1JZCwgWHJJ
bnN0YW5jZSk7CisgICAgT3BlblhSRGV2aWNlKFhyU3lzdGVtSWQsIFhySW5zdGFuY2UsIFdvcmtR
dWV1ZSYpOwogICAgIFhyU3lzdGVtSWQgeHJTeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lz
dGVtSWQ7IH0KIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0U3VwcG9ydGVkU2Vzc2lvbk1vZGVz
KCk7CkBAIC02MSw2ICs2Miw4IEBAIHByaXZhdGU6CiAgICAgWHJTeXN0ZW1JZCBtX3N5c3RlbUlk
OwogICAgIFhySW5zdGFuY2UgbV9pbnN0YW5jZTsKICAgICBYclNlc3Npb24gbV9zZXNzaW9uOwor
CisgICAgV29ya1F1ZXVlJiBtX3F1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgUGxhdGZvcm1Y
Ugo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411747</attachid>
            <date>2020-10-19 08:17:08 -0700</date>
            <delta_ts>2020-10-20 04:59:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217752-20201019171706.patch</filename>
            <type>text/plain</type>
            <size>16363</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFmMDhkYWFjYzRlNzEz
NGI1OWUxZTBhZDUxMGE5YTdmNDhiZTQ4YS4uMWUzNTg4ZWRjMzhmYTE3NDkxMjAxYzFkNjJmZDI4
MjU5YWYwZTg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTEwLTE1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
TW92ZSBPcGVuWFIgY2FsbHMgb2ZmIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIE9wZW5YUiBBUEkgaXMgc3luY2hyb25v
dXMuIE1hbnkgb2YgdGhlIGNhbGxzIGludm9sdmUgZGVhbGluZyB3aXRoIGV4dGVybmFsIGhhcmR3
YXJlIGRldmljZXMKKyAgICAgICAgbWVhbmluZyB0aGF0IHRoZXkgaGF2ZSB0byBwb3RlbnRpYWwg
dG8gYmxvY2sgdGhlIG1haW4gdGhyZWFkLiBUaGV5IHNob3VsZCBiZSBtb3ZlZCB0byBhIGRpZmZl
cmVudAorICAgICAgICB0aHJlYWQgaW4gb3JkZXIgdG8gYXZvaWQgdGhhdC4KKworICAgICAgICBU
aGUgUGxhdGZvcm1YUjo6SW5zdGFuY2UgY3JlYXRlcyBhIFdvcmtRdWV1ZSB3aGljaCBpcyBnb2lu
ZyB0byBiZSB1c2VkIGJ5IHRoZSBPcGVuWFIgZGV2aWNlcyB0bworICAgICAgICBpc3N1ZSBPcGVu
WFIgY2FsbHMgYW5kIGFsc28gc2VyaWFsaXplIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUg
ZXhlY3V0ZWQgc2VxdWVudGlhbGx5LiBUaGUKKyAgICAgICAgT3BlblhSRGV2aWNlJ3MgYXJlIGNy
ZWF0ZWQgaW4gdGhlIG1haW4gdGhyZWFkIGFueXdheSBiZWNhdXNlIHdlIG5lZWQgdG8gZ2V0IHdl
YWsgcG9pbnRlcnMgZnJvbQorICAgICAgICB0aGVtIGluIHRoZSBtYWluIHRocmVhZC4KKworICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCk6IFVzZSBhIHNj
b3BlZCBleGl0IHRvIGNhbGwgY2FsbGJhY2suIEFsc28KKyAgICAgICAgdGhlIFZlY3RvciBvZiBp
bW1lcnNpdmUgZGV2aWNlcyBpcyBub3cgYSBwb2ludGVyIHdoaWNoIG1pZ2h0IGJlIG51bGwsIG1l
YW5pbmcgbm8gYXZhaWxhYmxlIGRldmljZXMuCisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oOiBBZGRlZCBhICJ1c2luZyIgZm9yIHRoZSBWZWN0b3Igb2YgZGV2aWNlcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHA6CisgICAgICAgIChQ
bGF0Zm9ybVhSOjpJbnN0YW5jZTo6SW1wbDo6cXVldWUgY29uc3QpOiBOZXcgZ2V0dGVyIHJldHVy
bmluZyB0aGUgV29ya1F1ZXVlLgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkltcGw6
OmVudW1lcmF0ZUFwaUxheWVyUHJvcGVydGllcyBjb25zdCk6IEFkZGVkIGFuIEFTU0VSVC4KKyAg
ICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjpjaGVja0luc3RhbmNlRXh0ZW5zaW9u
UHJvcGVydGllcyBjb25zdCk6IERpdHRvLgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6
OkltcGw6OkltcGwpOiBDcmVhdGUgdGhlIE9wZW5YUiBXb3JrUXVldWUgYW5kIGRpc3BhdGNoIGEg
dGFzayB0byBwZXJmb3JtIHRoZQorICAgICAgICBPcGVuWFIgc3lzdGVtIGluaXRpYWxpemF0aW9u
IGluIHRoZSBxdWV1ZS4KKyAgICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjp+SW1w
bCk6IERlbGV0ZSB0aGUgaW5zdGFuY2UgaW4gdGhlIFdvcmtRdWV1ZQorICAgICAgICAoUGxhdGZv
cm1YUjo6SW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyk6IE1vdmVkIHRoZSBj
b2RlIHRvIGEgdGFzayBpbiB0aGUgV29ya1F1ZXVlLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3Bl
blhSRGV2aWNlOjpPcGVuWFJEZXZpY2UpOiBEaXR0by4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9w
ZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2Rlcyk6IEFkZGVkIGFuIEFTU0VS
VC4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6Y29sbGVjdENvbmZpZ3VyYXRp
b25WaWV3cyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmg6IEFkZGVkIFdvcmtRdWV1ZSBhdHRyaWJ1dGUgYW5kIHBhcmFtZXRlciB0byBkZXZp
Y2UgY29uc3RydWN0b3IuCisKIDIwMjAtMTAtMTkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBSZXNwZWN0IHJlbGF5b3V0Q2hp
bGRyZW4gZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNw
cAppbmRleCBiNDdhNDU3YzU0NDZkMjIzNTJhYjBjMTBlNjZmMjdkZDFhN2QzMmIzLi4wMmQ3YWQx
ZDE2OWM3YjM1NjYwZWZmNGEyM2ExMzA0YjgxZGRiNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtODgsMTYgKzg4LDIwIEBAIHZvaWQgV2Vi
WFJTeXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYKICAgICBwbGF0Zm9ybVhSLmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNl
cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpc0ZpcnN0WFJEZXZpY2Vz
RW51bWVyYXRpb24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGltbWVyc2l2
ZVhSRGV2aWNlcykgbXV0YWJsZSB7CiAgICAgICAgIG1faW1tZXJzaXZlWFJEZXZpY2VzSGF2ZUJl
ZW5FbnVtZXJhdGVkID0gdHJ1ZTsKIAorICAgICAgICBhdXRvIGNhbGxiYWNrT25FeGl0ID0gbWFr
ZVNjb3BlRXhpdChbJl0oKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxi
YWNrKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKICAgICAgICAgLy8gaHR0cHM6
Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jc2VsZWN0LWFuLWltbWVyc2l2ZS14ci1k
ZXZpY2UKICAgICAgICAgYXV0byogb2xkRGV2aWNlID0gbV9hY3RpdmVJbW1lcnNpdmVEZXZpY2Uu
Z2V0KCk7CiAgICAgICAgIGlmIChpbW1lcnNpdmVYUkRldmljZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmljZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBj
YWxsYmFjaygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChp
bW1lcnNpdmVYUkRldmljZXMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIG1fYWN0aXZlSW1t
ZXJzaXZlRGV2aWNlID0gbWFrZVdlYWtQdHIoaW1tZXJzaXZlWFJEZXZpY2VzLmZpcnN0KCkuZ2V0
KCkpOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC0xMDksMTUgKzExMywxMiBAQCB2b2lkIFdlYlhSU3lzdGVtOjplbnN1cmVJbW1l
cnNpdmVYUkRldmljZUlzU2VsZWN0ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoaXNGaXJzdFhSRGV2aWNlc0VudW1lcmF0aW9uIHx8IG1fYWN0
aXZlSW1tZXJzaXZlRGV2aWNlLmdldCgpID09IG9sZERldmljZSkgewotICAgICAgICAgICAgY2Fs
bGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJ
WE1FOiA3LiBTaHV0IGRvd24gYW55IGFjdGl2ZSBYUlNlc3Npb25zLgogICAgICAgICAvLyBGSVhN
RTogOC4gU2V0IHRoZSBYUiBjb21wYXRpYmxlIGJvb2xlYW4gb2YgYWxsIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UgaW5zdGFuY2VzIHRvIGZhbHNlLgogICAgICAgICAvLyBGSVhNRTogOS4gUXVl
dWUgYSB0YXNrIHRvIGZpcmUgYW4gZXZlbnQgbmFtZWQgZGV2aWNlY2hhbmdlIG9uIHRoZSBjb250
ZXh0IG9iamVjdC4KLQotICAgICAgICBjYWxsYmFjaygpOwogICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKaW5kZXggYTcxNjIzYWU0MzM2ZGFiMDc1Mzdm
Y2U3YTJjNmM0ZDA5YWE0NjMyNi4uZmE4MTlkMWE1MWNkZDA4NzZkZjJlMGQ2OTc0NDYwZWFkMTRi
NzZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApAQCAtNzUsNyAr
NzUsOCBAQCBjbGFzcyBJbnN0YW5jZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEluc3RhbmNlJiBz
aW5nbGV0b24oKTsKIAotICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2U+PiYp
PiYmKTsKKyAgICB1c2luZyBEZXZpY2VMaXN0ID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXZp
Y2U+PjsKKyAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IERldmljZUxpc3QmKT4mJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IExhenlOZXZlckRlc3Ryb3llZDxJbnN0YW5jZT47CkBAIC04NSw3ICs4Niw3IEBAIHByaXZhdGU6
CiAgICAgc3RydWN0IEltcGw7CiAgICAgVW5pcXVlUmVmPEltcGw+IG1faW1wbDsKIAotICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlPj4gbV9pbW1lcnNpdmVYUkRldmljZXM7CisgICAg
RGV2aWNlTGlzdCBtX2ltbWVyc2l2ZVhSRGV2aWNlczsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5jcHAKaW5kZXggZjg2YjM3ZWEyNjMwYmQ5MjJkZjJhZDU3ZmFlNDc0OGIz
NDk5MTkxMS4uZTg1NjVmMWIwYTg5ZjllZWMwMzQxZDcwZmQxOTNiY2Q2ZGM1YTE2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3Bl
blhSLmNwcApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0VfT1BFTlhSCiAgICAg
WHJJbnN0YW5jZSB4ckluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZTsgfQorICAg
IFdvcmtRdWV1ZSYgcXVldWUoKSBjb25zdCB7IHJldHVybiBtX3dvcmtRdWV1ZTsgfQogI2VuZGlm
CiAKIHByaXZhdGU6CkBAIC04MSwxMiArODIsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNr
SW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKCkgY29uc3Q7CiAKICAgICBYckluc3RhbmNlIG1f
aW5zdGFuY2UgeyBYUl9OVUxMX0hBTkRMRSB9OworICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1
ZXVlOwogI2VuZGlmIC8vIFVTRV9PUEVOWFIKIH07CiAKICNpZiBVU0VfT1BFTlhSCiB2b2lkIElu
c3RhbmNlOjpJbXBsOjplbnVtZXJhdGVBcGlMYXllclByb3BlcnRpZXMoKSBjb25zdAogeworICAg
IEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3dvcmtRdWV1ZS0+cnVuTG9vcCgpKTsK
ICAgICB1aW50MzJfdCBwcm9wZXJ0eUNvdW50T3V0cHV0IHsgMCB9OwogICAgIFhyUmVzdWx0IHJl
c3VsdCA9IHhyRW51bWVyYXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKDAsICZwcm9wZXJ0eUNvdW50T3V0
cHV0LCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRl
QXBpTGF5ZXJQcm9wZXJ0aWVzKCkiLCBtX2luc3RhbmNlKTsKQEAgLTExOSw2ICsxMjIsNyBAQCBz
dGF0aWMgYm9vbCBpc0V4dGVuc2lvblN1cHBvcnRlZChjb25zdCBjaGFyKiBleHRlbnNpb25OYW1l
LCBWZWN0b3I8WHJFeHRlbnNpb25QcgogCiBib29sIEluc3RhbmNlOjpJbXBsOjpjaGVja0luc3Rh
bmNlRXh0ZW5zaW9uUHJvcGVydGllcygpIGNvbnN0CiB7CisgICAgQVNTRVJUKCZSdW5Mb29wOjpj
dXJyZW50KCkgPT0gJm1fd29ya1F1ZXVlLT5ydW5Mb29wKCkpOwogICAgIHVpbnQzMl90IHByb3Bl
cnR5Q291bnRPdXRwdXQgeyAwIH07CiAgICAgWHJSZXN1bHQgcmVzdWx0ID0geHJFbnVtZXJhdGVJ
bnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMobnVsbHB0ciwgMCwgJnByb3BlcnR5Q291bnRPdXRw
dXQsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVJ
bnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMiLCBtX2luc3RhbmNlLCBmYWxzZSk7CkBAIC0xNTQs
NDQgKzE1OCw1MSBAQCBib29sIEluc3RhbmNlOjpJbXBsOjpjaGVja0luc3RhbmNlRXh0ZW5zaW9u
UHJvcGVydGllcygpIGNvbnN0CiAjZW5kaWYgLy8gVVNFX09QRU5YUgogCiBJbnN0YW5jZTo6SW1w
bDo6SW1wbCgpCisjaWYgVVNFX09QRU5YUgorICAgIDogbV93b3JrUXVldWUoV29ya1F1ZXVlOjpj
cmVhdGUoIk9wZW5YUiBxdWV1ZSIpKQorI2VuZGlmCiB7CiAjaWYgVVNFX09QRU5YUgotICAgIExP
RyhYUiwgIk9wZW5YUjogaW5pdGlhbGl6aW5nXG4iKTsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0
Y2goW3RoaXNdKCkgeworICAgICAgICBMT0coWFIsICJPcGVuWFI6IGluaXRpYWxpemluZ1xuIik7
CiAKLSAgICBlbnVtZXJhdGVBcGlMYXllclByb3BlcnRpZXMoKTsKKyAgICAgICAgZW51bWVyYXRl
QXBpTGF5ZXJQcm9wZXJ0aWVzKCk7CiAKLSAgICBpZiAoIWNoZWNrSW5zdGFuY2VFeHRlbnNpb25Q
cm9wZXJ0aWVzKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFjaGVja0luc3RhbmNl
RXh0ZW5zaW9uUHJvcGVydGllcygpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzX2FwcGxpY2F0aW9uTmFtZSA9ICJXZWJYUiAoV2ViS2l0KSI7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2FwcGxpY2F0aW9uVmVyc2lvbiA9IDE7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciogc19hcHBsaWNhdGlvbk5hbWUgPSAiV2ViWFIgKFdlYktp
dCkiOwotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2FwcGxpY2F0aW9uVmVyc2lvbiA9IDE7
Ci0KLSAgICBjb25zdCBjaGFyKiBjb25zdCBlbmFibGVkRXh0ZW5zaW9uc1tdID0gewotICAgICAg
ICBYUl9NTkRfSEVBRExFU1NfRVhURU5TSU9OX05BTUUsCi0gICAgfTsKLQotICAgIGF1dG8gY3Jl
YXRlSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckluc3RhbmNlQ3JlYXRlSW5mbywgWFJfVFlQRV9J
TlNUQU5DRV9DUkVBVEVfSU5GTz4oKTsKLSAgICBjcmVhdGVJbmZvLmNyZWF0ZUZsYWdzID0gMDsK
LSAgICBzdGQ6Om1lbWNweShjcmVhdGVJbmZvLmFwcGxpY2F0aW9uSW5mby5hcHBsaWNhdGlvbk5h
bWUsIHNfYXBwbGljYXRpb25OYW1lLCBYUl9NQVhfQVBQTElDQVRJT05fTkFNRV9TSVpFKTsKLSAg
ICBjcmVhdGVJbmZvLmFwcGxpY2F0aW9uSW5mby5hcGlWZXJzaW9uID0gWFJfQ1VSUkVOVF9BUElf
VkVSU0lPTjsKLSAgICBjcmVhdGVJbmZvLmFwcGxpY2F0aW9uSW5mby5hcHBsaWNhdGlvblZlcnNp
b24gPSBzX2FwcGxpY2F0aW9uVmVyc2lvbjsKLSAgICBjcmVhdGVJbmZvLmVuYWJsZWRBcGlMYXll
ckNvdW50ID0gMDsKLSAgICBjcmVhdGVJbmZvLmVuYWJsZWRFeHRlbnNpb25Db3VudCA9IFdURl9B
UlJBWV9MRU5HVEgoZW5hYmxlZEV4dGVuc2lvbnMpOwotICAgIGNyZWF0ZUluZm8uZW5hYmxlZEV4
dGVuc2lvbk5hbWVzID0gZW5hYmxlZEV4dGVuc2lvbnM7Ci0KLSAgICBYckluc3RhbmNlIGluc3Rh
bmNlOwotICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyQ3JlYXRlSW5zdGFuY2UoJmNyZWF0ZUluZm8s
ICZpbnN0YW5jZSk7Ci0gICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckNyZWF0ZUluc3Rh
bmNlKCkiLCBtX2luc3RhbmNlKTsKLSAgICBtX2luc3RhbmNlID0gaW5zdGFuY2U7Ci0gICAgTE9H
KFhSLCAieHJDcmVhdGVJbnN0YW5jZSgpOiB1c2luZyBpbnN0YW5jZSAlcFxuIiwgbV9pbnN0YW5j
ZSk7CisgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGVuYWJsZWRFeHRlbnNpb25zW10gPSB7Cisg
ICAgICAgICAgICBYUl9NTkRfSEVBRExFU1NfRVhURU5TSU9OX05BTUUsCisgICAgICAgIH07CisK
KyAgICAgICAgYXV0byBjcmVhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhySW5zdGFuY2VDcmVh
dGVJbmZvLCBYUl9UWVBFX0lOU1RBTkNFX0NSRUFURV9JTkZPPigpOworICAgICAgICBjcmVhdGVJ
bmZvLmNyZWF0ZUZsYWdzID0gMDsKKyAgICAgICAgc3RkOjptZW1jcHkoY3JlYXRlSW5mby5hcHBs
aWNhdGlvbkluZm8uYXBwbGljYXRpb25OYW1lLCBzX2FwcGxpY2F0aW9uTmFtZSwgWFJfTUFYX0FQ
UExJQ0FUSU9OX05BTUVfU0laRSk7CisgICAgICAgIGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZv
LmFwaVZlcnNpb24gPSBYUl9DVVJSRU5UX0FQSV9WRVJTSU9OOworICAgICAgICBjcmVhdGVJbmZv
LmFwcGxpY2F0aW9uSW5mby5hcHBsaWNhdGlvblZlcnNpb24gPSBzX2FwcGxpY2F0aW9uVmVyc2lv
bjsKKyAgICAgICAgY3JlYXRlSW5mby5lbmFibGVkQXBpTGF5ZXJDb3VudCA9IDA7CisgICAgICAg
IGNyZWF0ZUluZm8uZW5hYmxlZEV4dGVuc2lvbkNvdW50ID0gV1RGX0FSUkFZX0xFTkdUSChlbmFi
bGVkRXh0ZW5zaW9ucyk7CisgICAgICAgIGNyZWF0ZUluZm8uZW5hYmxlZEV4dGVuc2lvbk5hbWVz
ID0gZW5hYmxlZEV4dGVuc2lvbnM7CisKKyAgICAgICAgWHJJbnN0YW5jZSBpbnN0YW5jZTsKKyAg
ICAgICAgWHJSZXN1bHQgcmVzdWx0ID0geHJDcmVhdGVJbnN0YW5jZSgmY3JlYXRlSW5mbywgJmlu
c3RhbmNlKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckNyZWF0ZUluc3Rh
bmNlKCkiLCBtX2luc3RhbmNlKTsKKyAgICAgICAgbV9pbnN0YW5jZSA9IGluc3RhbmNlOworICAg
ICAgICBMT0coWFIsICJ4ckNyZWF0ZUluc3RhbmNlKCk6IHVzaW5nIGluc3RhbmNlICVwXG4iLCBt
X2luc3RhbmNlKTsKKyAgICB9KTsKICNlbmRpZiAvLyBVU0VfT1BFTlhSCiB9CiAKIEluc3RhbmNl
OjpJbXBsOjp+SW1wbCgpCiB7CiAjaWYgVVNFX09QRU5YUgotICAgIGlmIChtX2luc3RhbmNlICE9
IFhSX05VTExfSEFORExFKQotICAgICAgICB4ckRlc3Ryb3lJbnN0YW5jZShtX2luc3RhbmNlKTsK
KyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKKyAgICAgICAgaWYgKG1faW5zdGFu
Y2UgIT0gWFJfTlVMTF9IQU5ETEUpCisgICAgICAgICAgICB4ckRlc3Ryb3lJbnN0YW5jZShtX2lu
c3RhbmNlKTsKKyAgICB9KTsKICNlbmRpZgogfQogCkBAIC0yMTEsNTEgKzIyMiw2OSBAQCBJbnN0
YW5jZTo6SW5zdGFuY2UoKQogewogfQogCi12b2lkIEluc3RhbmNlOjplbnVtZXJhdGVJbW1lcnNp
dmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPERldmljZT4+JiBkZXZpY2VzKT4mJiBjYWxsYmFjaykKK3ZvaWQgSW5zdGFuY2U6OmVu
dW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IERl
dmljZUxpc3QmIGRldmljZXMpPiYmIGNhbGxiYWNrKQogewogI2lmIFVTRV9PUEVOWFIKLSAgICBh
dXRvIGNhbGxiYWNrT25FeGl0ID0gbWFrZVNjb3BlRXhpdChbJl0oKSB7Ci0gICAgICAgIGNhbGxi
YWNrKHsgfSk7Ci0gICAgfSk7Ci0gICAgaWYgKG1faW1wbC0+eHJJbnN0YW5jZSgpID09IFhSX05V
TExfSEFORExFKSB7Ci0gICAgICAgIExPRyhYUiwgIiVzIFVuYWJsZSB0byBlbnVtZXJhdGUgWFIg
ZGV2aWNlcy4gTm8gWHJJbnN0YW5jZSBwcmVzZW50XG4iLCBfX0ZVTkNUSU9OX18pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIG1faW1wbC0+cXVldWUoKS5kaXNwYXRjaChbdGhpcywgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjYWxs
YmFja09uRXhpdCA9IG1ha2VTY29wZUV4aXQoWyZdKCkgeworICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBEZXZpY2VMaXN0IGVtcHR5TGlzdDsKKyAgICAgICAgICAgICAgICBjYWxsYmFj
ayhlbXB0eUxpc3QpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogCi0gICAgYXV0byBz
eXN0ZW1HZXRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtR2V0SW5mbywgWFJfVFlQRV9T
WVNURU1fR0VUX0lORk8+KCk7Ci0gICAgc3lzdGVtR2V0SW5mby5mb3JtRmFjdG9yID0gWFJfRk9S
TV9GQUNUT1JfSEVBRF9NT1VOVEVEX0RJU1BMQVk7CisgICAgICAgIG1faW1tZXJzaXZlWFJEZXZp
Y2VzLmNsZWFyKCk7CiAKLSAgICBYclN5c3RlbUlkIHN5c3RlbUlkOwotICAgIFhyUmVzdWx0IHJl
c3VsdCA9IHhyR2V0U3lzdGVtKG1faW1wbC0+eHJJbnN0YW5jZSgpLCAmc3lzdGVtR2V0SW5mbywg
JnN5c3RlbUlkKTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyR2V0U3lzdGVtIiwg
bV9pbXBsLT54ckluc3RhbmNlKCkpOworICAgICAgICBpZiAobV9pbXBsLT54ckluc3RhbmNlKCkg
PT0gWFJfTlVMTF9IQU5ETEUpIHsKKyAgICAgICAgICAgIExPRyhYUiwgIiVzIFVuYWJsZSB0byBl
bnVtZXJhdGUgWFIgZGV2aWNlcy4gTm8gWHJJbnN0YW5jZSBwcmVzZW50XG4iLCBfX0ZVTkNUSU9O
X18pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSNpZiAhTE9HX0RJU0FCTEVE
Ci0gICAgYXV0byBzeXN0ZW1Qcm9wZXJ0aWVzID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtUHJv
cGVydGllcywgWFJfVFlQRV9TWVNURU1fUFJPUEVSVElFUz4oKTsKLSAgICByZXN1bHQgPSB4ckdl
dFN5c3RlbVByb3BlcnRpZXMobV9pbXBsLT54ckluc3RhbmNlKCksIHN5c3RlbUlkLCAmc3lzdGVt
UHJvcGVydGllcyk7Ci0gICAgaWYgKHJlc3VsdCA9PSBYUl9TVUNDRVNTKQotICAgICAgICBMT0co
WFIsICJGb3VuZCBYUlN5c3RlbSAlbHU6IFwiJXNcIiwgdmVuZG9yIElEICVkXG4iLCBzeXN0ZW1Q
cm9wZXJ0aWVzLnN5c3RlbUlkLCBzeXN0ZW1Qcm9wZXJ0aWVzLnN5c3RlbU5hbWUsIHN5c3RlbVBy
b3BlcnRpZXMudmVuZG9ySWQpOwotI2VuZGlmCisgICAgICAgIGF1dG8gc3lzdGVtR2V0SW5mbyA9
IGNyZWF0ZVN0cnVjdHVyZTxYclN5c3RlbUdldEluZm8sIFhSX1RZUEVfU1lTVEVNX0dFVF9JTkZP
PigpOworICAgICAgICBzeXN0ZW1HZXRJbmZvLmZvcm1GYWN0b3IgPSBYUl9GT1JNX0ZBQ1RPUl9I
RUFEX01PVU5URURfRElTUExBWTsKKworICAgICAgICBYclN5c3RlbUlkIHN5c3RlbUlkOworICAg
ICAgICBYclJlc3VsdCByZXN1bHQgPSB4ckdldFN5c3RlbShtX2ltcGwtPnhySW5zdGFuY2UoKSwg
JnN5c3RlbUdldEluZm8sICZzeXN0ZW1JZCk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVz
dWx0LCAieHJHZXRTeXN0ZW0iLCBtX2ltcGwtPnhySW5zdGFuY2UoKSk7CisKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc3lzdGVt
SWRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAvLyBDcmVhdGUgZGV2aWNlcyBpbiB0aGUgbWFp
biB0aHJlYWQgYnV0IGRvIG5vdCBjYWxsIHRoZSBjYWxsYmFjayBpbW1lZGlhdGVseSBhcyB0aGUg
ZGV2aWNlIG5lZWRzIHRvIGluaXRpYWxpemUKKyAgICAgICAgICAgIC8vIHNvbWUgc3R1ZmYgaW4g
dGhlIHdvcmsgcXVldWUuIFRoYXQncyB3aHkgd2UgbmVlZCB0byBxdWV1ZSBhbm90aGVyIHRhc2sg
dG8gY2FsbCB0aGUgY2FsbGJhY2sgYWZ0ZXIgdGhlCisgICAgICAgICAgICAvLyBkZXZpY2UgaW5p
dGlhbGl6YXRpb24gaXMgY29tcGxldGVkLgorICAgICAgICAgICAgbV9pbW1lcnNpdmVYUkRldmlj
ZXMuYXBwZW5kKG1ha2VVbmlxdWU8T3BlblhSRGV2aWNlPihzeXN0ZW1JZCwgbV9pbXBsLT54cklu
c3RhbmNlKCksIG1faW1wbC0+cXVldWUoKSkpOworICAgICAgICAgICAgbV9pbXBsLT5xdWV1ZSgp
LmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUg
eworICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
KG1faW1tZXJzaXZlWFJEZXZpY2VzKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKworICAgICAgICBjYWxsYmFja09uRXhpdC5yZWxlYXNlKCk7Cisg
ICAgfSk7CiAKLSAgICBtX2ltbWVyc2l2ZVhSRGV2aWNlcy5hcHBlbmQobWFrZVVuaXF1ZTxPcGVu
WFJEZXZpY2U+KHN5c3RlbUlkLCBtX2ltcGwtPnhySW5zdGFuY2UoKSkpOwotICAgIGNhbGxiYWNr
KG1faW1tZXJzaXZlWFJEZXZpY2VzKTsKLSAgICBjYWxsYmFja09uRXhpdC5yZWxlYXNlKCk7CiAj
ZW5kaWYgLy8gVVNFX09QRU5YUgogfQogCiAjaWYgVVNFX09QRU5YUgotT3BlblhSRGV2aWNlOjpP
cGVuWFJEZXZpY2UoWHJTeXN0ZW1JZCBpZCwgWHJJbnN0YW5jZSBpbnN0YW5jZSkKK09wZW5YUkRl
dmljZTo6T3BlblhSRGV2aWNlKFhyU3lzdGVtSWQgaWQsIFhySW5zdGFuY2UgaW5zdGFuY2UsIFdv
cmtRdWV1ZSYgcXVldWUpCiAgICAgOiBtX3N5c3RlbUlkKGlkKQogICAgICwgbV9pbnN0YW5jZShp
bnN0YW5jZSkKKyAgICAsIG1fcXVldWUocXVldWUpCiB7Ci0gICAgYXV0byBzeXN0ZW1Qcm9wZXJ0
aWVzID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtUHJvcGVydGllcywgWFJfVFlQRV9TWVNURU1f
UFJPUEVSVElFUz4oKTsKLSAgICBYclJlc3VsdCByZXN1bHQgPSB4ckdldFN5c3RlbVByb3BlcnRp
ZXMoaW5zdGFuY2UsIG1fc3lzdGVtSWQsICZzeXN0ZW1Qcm9wZXJ0aWVzKTsKLSAgICBpZiAocmVz
dWx0ID09IFhSX1NVQ0NFU1MpCi0gICAgICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5n
ID0gc3lzdGVtUHJvcGVydGllcy50cmFja2luZ1Byb3BlcnRpZXMub3JpZW50YXRpb25UcmFja2lu
ZyA9PSBYUl9UUlVFOwotICAgIGVsc2UKLSAgICAgICAgTE9HKFhSLCAieHJHZXRTeXN0ZW1Qcm9w
ZXJ0aWVzKCk6IGVycm9yICVzXG4iLCByZXN1bHRUb1N0cmluZyhyZXN1bHQsIG1faW5zdGFuY2Up
LnV0ZjgoKS5kYXRhKCkpOworICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXNdKCkgeworICAgICAg
ICBhdXRvIHN5c3RlbVByb3BlcnRpZXMgPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTeXN0ZW1Qcm9wZXJ0
aWVzLCBYUl9UWVBFX1NZU1RFTV9QUk9QRVJUSUVTPigpOworICAgICAgICBhdXRvIHJlc3VsdCA9
IHhyR2V0U3lzdGVtUHJvcGVydGllcyhtX2luc3RhbmNlLCBtX3N5c3RlbUlkLCAmc3lzdGVtUHJv
cGVydGllcyk7CisgICAgICAgIGlmICghWFJfRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICBt
X3N1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA9IHN5c3RlbVByb3BlcnRpZXMudHJhY2tpbmdQ
cm9wZXJ0aWVzLm9yaWVudGF0aW9uVHJhY2tpbmcgPT0gWFJfVFJVRTsKKyNpZiAhTE9HX0RJU0FC
TEVECisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIExPRyhYUiwgInhyR2V0U3lzdGVtUHJvcGVy
dGllcygpOiBlcnJvciAlc1xuIiwgcmVzdWx0VG9TdHJpbmcocmVzdWx0LCBtX2luc3RhbmNlKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKFhSLCAiRm91bmQgWFJTeXN0ZW0gJWx1OiBcIiVz
XCIsIHZlbmRvciBJRCAlZFxuIiwgc3lzdGVtUHJvcGVydGllcy5zeXN0ZW1JZCwgc3lzdGVtUHJv
cGVydGllcy5zeXN0ZW1OYW1lLCBzeXN0ZW1Qcm9wZXJ0aWVzLnZlbmRvcklkKTsKKyNlbmRpZgog
Ci0gICAgY29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2RlcygpOwotICAgIGNvbGxlY3RDb25maWd1
cmF0aW9uVmlld3MoKTsKKyAgICAgICAgY29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2RlcygpOwor
ICAgICAgICBjb2xsZWN0Q29uZmlndXJhdGlvblZpZXdzKCk7CisgICAgfSk7CiB9CiAKIERldmlj
ZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5YUkRldmljZTo6ZW51bWVyYXRlUmVmZXJlbmNl
U3BhY2VzKFhyU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKQEAgLTI5OSw2ICszMjgsNyBAQCBEZXZp
Y2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJlcyBPcGVuWFJEZXZpY2U6OmVudW1lcmF0ZVJlZmVyZW5j
ZVNwYWNlcyhYclNlc3Npb24mCiAKIHZvaWQgT3BlblhSRGV2aWNlOjpjb2xsZWN0U3VwcG9ydGVk
U2Vzc2lvbk1vZGVzKCkKIHsKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9x
dWV1ZS5ydW5Mb29wKCkpOwogICAgIHVpbnQzMl90IHZpZXdDb25maWd1cmF0aW9uQ291bnQ7CiAg
ICAgYXV0byByZXN1bHQgPSB4ckVudW1lcmF0ZVZpZXdDb25maWd1cmF0aW9ucyhtX2luc3RhbmNl
LCBtX3N5c3RlbUlkLCAwLCAmdmlld0NvbmZpZ3VyYXRpb25Db3VudCwgbnVsbHB0cik7CiAgICAg
UkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZVZpZXdDb25maWd1cmF0aW9ucyIs
IG1faW5zdGFuY2UpOwpAQCAtMzQxLDYgKzM3MSw3IEBAIHZvaWQgT3BlblhSRGV2aWNlOjpjb2xs
ZWN0U3VwcG9ydGVkU2Vzc2lvbk1vZGVzKCkKIAogdm9pZCBPcGVuWFJEZXZpY2U6OmNvbGxlY3RD
b25maWd1cmF0aW9uVmlld3MoKQogeworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09
ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CiAgICAgZm9yIChhdXRvJiBjb25maWcgOiBtX3ZpZXdDb25m
aWd1cmF0aW9uUHJvcGVydGllcy52YWx1ZXMoKSkgewogICAgICAgICB1aW50MzJfdCB2aWV3Q291
bnQ7CiAgICAgICAgIGF1dG8gY29uZmlnVHlwZSA9IGNvbmZpZy52aWV3Q29uZmlndXJhdGlvblR5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZv
cm1YUk9wZW5YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3Jt
WFJPcGVuWFIuaAppbmRleCBjMjgxNTAyM2EyNzJhMzQyZmYyYTlhYzQ4MjU2OWQ1MDM2MTU4Mzdi
Li41NDlhNTA1ZDVlZjEzZTdjMTc1NzFkMDNkYTEyMmIxZGY0MThkM2EzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKQEAg
LTI2LDYgKzI2LDcgQEAKIAogI2lmIFVTRV9PUEVOWFIKICNpbmNsdWRlIDxvcGVueHIvb3Blbnhy
Lmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgUGxhdGZvcm1YUiB7
CiAKQEAgLTQzLDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFBsYXRmb3JtWFIgewogLy8gdGhlIFhSU3lz
dGVtIGlzIGJhc2ljYWxseSB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBXZWJYUiBBUEkgYXZhaWxh
YmxlIHZpYSB0aGUgTmF2aWdhdG9yIG9iamVjdC4KIGNsYXNzIE9wZW5YUkRldmljZSBmaW5hbCA6
IHB1YmxpYyBEZXZpY2UgewogcHVibGljOgotICAgIE9wZW5YUkRldmljZShYclN5c3RlbUlkLCBY
ckluc3RhbmNlKTsKKyAgICBPcGVuWFJEZXZpY2UoWHJTeXN0ZW1JZCwgWHJJbnN0YW5jZSwgV29y
a1F1ZXVlJik7CiAgICAgWHJTeXN0ZW1JZCB4clN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9z
eXN0ZW1JZDsgfQogcHJpdmF0ZToKICAgICB2b2lkIGNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9k
ZXMoKTsKQEAgLTYxLDYgKzYyLDggQEAgcHJpdmF0ZToKICAgICBYclN5c3RlbUlkIG1fc3lzdGVt
SWQ7CiAgICAgWHJJbnN0YW5jZSBtX2luc3RhbmNlOwogICAgIFhyU2Vzc2lvbiBtX3Nlc3Npb247
CisKKyAgICBXb3JrUXVldWUmIG1fcXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQbGF0Zm9y
bVhSCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411853</attachid>
            <date>2020-10-20 04:59:14 -0700</date>
            <delta_ts>2020-10-21 02:38:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217752-20201020135913.patch</filename>
            <type>text/plain</type>
            <size>16723</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM1YTg2MWU0NmNhMjBh
MGE5YmFmZGU1ZDExN2M2ZTM3Y2Q2ODhlYS4uZWM0M2QwZTU0ZDk0YTdjZWE1MzZhYWJmNWU1Mzhh
ZGNkMWY4NDczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTEwLTE1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
TW92ZSBPcGVuWFIgY2FsbHMgb2ZmIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIE9wZW5YUiBBUEkgaXMgc3luY2hyb25v
dXMuIE1hbnkgb2YgdGhlIGNhbGxzIGludm9sdmUgZGVhbGluZyB3aXRoIGV4dGVybmFsIGhhcmR3
YXJlIGRldmljZXMKKyAgICAgICAgbWVhbmluZyB0aGF0IHRoZXkgaGF2ZSB0byBwb3RlbnRpYWwg
dG8gYmxvY2sgdGhlIG1haW4gdGhyZWFkLiBUaGV5IHNob3VsZCBiZSBtb3ZlZCB0byBhIGRpZmZl
cmVudAorICAgICAgICB0aHJlYWQgaW4gb3JkZXIgdG8gYXZvaWQgdGhhdC4KKworICAgICAgICBU
aGUgUGxhdGZvcm1YUjo6SW5zdGFuY2UgY3JlYXRlcyBhIFdvcmtRdWV1ZSB3aGljaCBpcyBnb2lu
ZyB0byBiZSB1c2VkIGJ5IHRoZSBPcGVuWFIgZGV2aWNlcyB0bworICAgICAgICBpc3N1ZSBPcGVu
WFIgY2FsbHMgYW5kIGFsc28gc2VyaWFsaXplIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUg
ZXhlY3V0ZWQgc2VxdWVudGlhbGx5LiBUaGUKKyAgICAgICAgT3BlblhSRGV2aWNlJ3MgYXJlIGNy
ZWF0ZWQgaW4gdGhlIG1haW4gdGhyZWFkIGFueXdheSBiZWNhdXNlIHdlIG5lZWQgdG8gZ2V0IHdl
YWsgcG9pbnRlcnMgZnJvbQorICAgICAgICB0aGVtIGluIHRoZSBtYWluIHRocmVhZC4KKworICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCk6IFVzZSBhIHNj
b3BlZCBleGl0IHRvIGNhbGwgY2FsbGJhY2suIEFsc28KKyAgICAgICAgdGhlIFZlY3RvciBvZiBp
bW1lcnNpdmUgZGV2aWNlcyBpcyBub3cgYSBwb2ludGVyIHdoaWNoIG1pZ2h0IGJlIG51bGwsIG1l
YW5pbmcgbm8gYXZhaWxhYmxlIGRldmljZXMuCisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oOiBBZGRlZCBhICJ1c2luZyIgZm9yIHRoZSBWZWN0b3Igb2YgZGV2aWNlcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHA6CisgICAgICAgIChQ
bGF0Zm9ybVhSOjpJbnN0YW5jZTo6SW1wbDo6cXVldWUgY29uc3QpOiBOZXcgZ2V0dGVyIHJldHVy
bmluZyB0aGUgV29ya1F1ZXVlLgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkltcGw6
OmVudW1lcmF0ZUFwaUxheWVyUHJvcGVydGllcyBjb25zdCk6IEFkZGVkIGFuIEFTU0VSVC4KKyAg
ICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjpjaGVja0luc3RhbmNlRXh0ZW5zaW9u
UHJvcGVydGllcyBjb25zdCk6IERpdHRvLgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6
OkltcGw6OkltcGwpOiBDcmVhdGUgdGhlIE9wZW5YUiBXb3JrUXVldWUgYW5kIGRpc3BhdGNoIGEg
dGFzayB0byBwZXJmb3JtIHRoZQorICAgICAgICBPcGVuWFIgc3lzdGVtIGluaXRpYWxpemF0aW9u
IGluIHRoZSBxdWV1ZS4KKyAgICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjp+SW1w
bCk6IERlbGV0ZSB0aGUgaW5zdGFuY2UgaW4gdGhlIFdvcmtRdWV1ZQorICAgICAgICAoUGxhdGZv
cm1YUjo6SW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyk6IE1vdmVkIHRoZSBj
b2RlIHRvIGEgdGFzayBpbiB0aGUgV29ya1F1ZXVlLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3Bl
blhSRGV2aWNlOjpPcGVuWFJEZXZpY2UpOiBEaXR0by4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9w
ZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2Rlcyk6IEFkZGVkIGFuIEFTU0VS
VC4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6Y29sbGVjdENvbmZpZ3VyYXRp
b25WaWV3cyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmg6IEFkZGVkIFdvcmtRdWV1ZSBhdHRyaWJ1dGUgYW5kIHBhcmFtZXRlciB0byBkZXZp
Y2UgY29uc3RydWN0b3IuCisKIDIwMjAtMTAtMTkgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmls
bGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1mbGV4Ym94XSBmbGV4LXNocmluayBwcm9w
ZXJ0eSBzaG91bGQgYmUgYW5pbWF0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU3lzdGVtLmNwcAppbmRleCA1YmE0N2UyZDlhMDY1NWVhZGE0MzU1ZDgwN2FhMjUyNWU2
ZGI2MzlmLi4xMmE5ZjIxZTcyNGExMmRkYzE1ZGE5YTg0YzFiODJlYjRkMTdkNGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtODgsMjAgKzg4
LDIyIEBAIHZvaWQgV2ViWFJTeXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3Rl
ZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYKICAgICBwbGF0Zm9ybVhSLmVudW1lcmF0ZUlt
bWVyc2l2ZVhSRGV2aWNlcyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBp
c0ZpcnN0WFJEZXZpY2VzRW51bWVyYXRpb24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGF1dG8mIGltbWVyc2l2ZVhSRGV2aWNlcykgbXV0YWJsZSB7CiAgICAgICAgIG1faW1tZXJzaXZl
WFJEZXZpY2VzSGF2ZUJlZW5FbnVtZXJhdGVkID0gdHJ1ZTsKIAorICAgICAgICBhdXRvIGNhbGxi
YWNrT25FeGl0ID0gbWFrZVNjb3BlRXhpdChbJl0oKSB7CisgICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgfSk7CisKICAgICAgICAgLy8gaHR0
cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jc2VsZWN0LWFuLWltbWVyc2l2ZS14
ci1kZXZpY2UKICAgICAgICAgYXV0byogb2xkRGV2aWNlID0gbV9hY3RpdmVJbW1lcnNpdmVEZXZp
Y2UuZ2V0KCk7CiAgICAgICAgIGlmIChpbW1lcnNpdmVYUkRldmljZXMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmljZSA9IG51bGxwdHI7Ci0gICAgICAgICAg
ICBjYWxsYmFjaygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlm
IChpbW1lcnNpdmVYUkRldmljZXMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIG1fYWN0aXZl
SW1tZXJzaXZlRGV2aWNlID0gbWFrZVdlYWtQdHIoaW1tZXJzaXZlWFJEZXZpY2VzLmZpcnN0KCku
Z2V0KCkpOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChtX2FjdGl2ZUltbWVyc2l2ZVNlc3Npb24gJiYgb2xkRGV2
aWNlICYmIGltbWVyc2l2ZVhSRGV2aWNlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGVudHJ5KSB7
IHJldHVybiBlbnRyeS5nZXQoKSA9PSBvbGREZXZpY2U7IH0pICE9IG5vdEZvdW5kKQorICAgICAg
ICBpZiAobV9hY3RpdmVJbW1lcnNpdmVTZXNzaW9uICYmIG9sZERldmljZSAmJiBpbW1lcnNpdmVY
UkRldmljZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBlbnRyeSkgeyByZXR1cm4gJmVudHJ5ID09
IG9sZERldmljZTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBBU1NFUlQobV9hY3RpdmVJ
bW1lcnNpdmVEZXZpY2UuZ2V0KCkgPT0gb2xkRGV2aWNlKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IGEgYmV0dGVyIFVBIHNlbGVjdGlvbiBtZWNoYW5p
c20gaWYgcmVxdWlyZWQuCkBAIC0xMDksMTUgKzExMSwxMiBAQCB2b2lkIFdlYlhSU3lzdGVtOjpl
bnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNGaXJzdFhSRGV2aWNlc0VudW1lcmF0aW9u
IHx8IG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdldCgpID09IG9sZERldmljZSkgewotICAgICAg
ICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIEZJWE1FOiA3LiBTaHV0IGRvd24gYW55IGFjdGl2ZSBYUlNlc3Npb25zLgogICAgICAg
ICAvLyBGSVhNRTogOC4gU2V0IHRoZSBYUiBjb21wYXRpYmxlIGJvb2xlYW4gb2YgYWxsIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UgaW5zdGFuY2VzIHRvIGZhbHNlLgogICAgICAgICAvLyBGSVhN
RTogOS4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYW4gZXZlbnQgbmFtZWQgZGV2aWNlY2hhbmdlIG9u
IHRoZSBjb250ZXh0IG9iamVjdC4KLQotICAgICAgICBjYWxsYmFjaygpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKaW5kZXggYTcxNjIzYWU0MzM2
ZGFiMDc1MzdmY2U3YTJjNmM0ZDA5YWE0NjMyNi4uZTU0ZTI2MjRmMjVjOWI2ODA0YjY3YmNkOTI5
ZWQ2ZjljZGFiNzc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxh
dGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApA
QCAtNzUsNyArNzUsOCBAQCBjbGFzcyBJbnN0YW5jZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIElu
c3RhbmNlJiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZp
Y2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxE
ZXZpY2U+PiYpPiYmKTsKKyAgICB1c2luZyBEZXZpY2VMaXN0ID0gVmVjdG9yPFVuaXF1ZVJlZjxE
ZXZpY2U+PjsKKyAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IERldmljZUxpc3QmKT4mJik7CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIExhenlOZXZlckRlc3Ryb3llZDxJbnN0YW5jZT47CkBAIC04NSw3ICs4Niw3IEBAIHByaXZh
dGU6CiAgICAgc3RydWN0IEltcGw7CiAgICAgVW5pcXVlUmVmPEltcGw+IG1faW1wbDsKIAotICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlPj4gbV9pbW1lcnNpdmVYUkRldmljZXM7Cisg
ICAgRGV2aWNlTGlzdCBtX2ltbWVyc2l2ZVhSRGV2aWNlczsKIH07CiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIv
UGxhdGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIv
UGxhdGZvcm1YUk9wZW5YUi5jcHAKaW5kZXggZjg2YjM3ZWEyNjMwYmQ5MjJkZjJhZDU3ZmFlNDc0
OGIzNDk5MTkxMS4uZWNmZWQzNjU1ODQxMWEyOGVkYzMwNDVjOGFmMDE4M2NmNjc1MDYzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVu
WFIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmNwcApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0VfT1BFTlhSCiAg
ICAgWHJJbnN0YW5jZSB4ckluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZTsgfQor
ICAgIFdvcmtRdWV1ZSYgcXVldWUoKSBjb25zdCB7IHJldHVybiBtX3dvcmtRdWV1ZTsgfQogI2Vu
ZGlmCiAKIHByaXZhdGU6CkBAIC04MSwxMiArODIsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIGNo
ZWNrSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKCkgY29uc3Q7CiAKICAgICBYckluc3RhbmNl
IG1faW5zdGFuY2UgeyBYUl9OVUxMX0hBTkRMRSB9OworICAgIFJlZjxXb3JrUXVldWU+IG1fd29y
a1F1ZXVlOwogI2VuZGlmIC8vIFVTRV9PUEVOWFIKIH07CiAKICNpZiBVU0VfT1BFTlhSCiB2b2lk
IEluc3RhbmNlOjpJbXBsOjplbnVtZXJhdGVBcGlMYXllclByb3BlcnRpZXMoKSBjb25zdAogewor
ICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3dvcmtRdWV1ZS0+cnVuTG9vcCgp
KTsKICAgICB1aW50MzJfdCBwcm9wZXJ0eUNvdW50T3V0cHV0IHsgMCB9OwogICAgIFhyUmVzdWx0
IHJlc3VsdCA9IHhyRW51bWVyYXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKDAsICZwcm9wZXJ0eUNvdW50
T3V0cHV0LCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyRW51bWVy
YXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKCkiLCBtX2luc3RhbmNlKTsKQEAgLTExOSw2ICsxMjIsNyBA
QCBzdGF0aWMgYm9vbCBpc0V4dGVuc2lvblN1cHBvcnRlZChjb25zdCBjaGFyKiBleHRlbnNpb25O
YW1lLCBWZWN0b3I8WHJFeHRlbnNpb25QcgogCiBib29sIEluc3RhbmNlOjpJbXBsOjpjaGVja0lu
c3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygpIGNvbnN0CiB7CisgICAgQVNTRVJUKCZSdW5Mb29w
OjpjdXJyZW50KCkgPT0gJm1fd29ya1F1ZXVlLT5ydW5Mb29wKCkpOwogICAgIHVpbnQzMl90IHBy
b3BlcnR5Q291bnRPdXRwdXQgeyAwIH07CiAgICAgWHJSZXN1bHQgcmVzdWx0ID0geHJFbnVtZXJh
dGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMobnVsbHB0ciwgMCwgJnByb3BlcnR5Q291bnRP
dXRwdXQsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJh
dGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMiLCBtX2luc3RhbmNlLCBmYWxzZSk7CkBAIC0x
NTQsNDQgKzE1OCw1MSBAQCBib29sIEluc3RhbmNlOjpJbXBsOjpjaGVja0luc3RhbmNlRXh0ZW5z
aW9uUHJvcGVydGllcygpIGNvbnN0CiAjZW5kaWYgLy8gVVNFX09QRU5YUgogCiBJbnN0YW5jZTo6
SW1wbDo6SW1wbCgpCisjaWYgVVNFX09QRU5YUgorICAgIDogbV93b3JrUXVldWUoV29ya1F1ZXVl
OjpjcmVhdGUoIk9wZW5YUiBxdWV1ZSIpKQorI2VuZGlmCiB7CiAjaWYgVVNFX09QRU5YUgotICAg
IExPRyhYUiwgIk9wZW5YUjogaW5pdGlhbGl6aW5nXG4iKTsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXNdKCkgeworICAgICAgICBMT0coWFIsICJPcGVuWFI6IGluaXRpYWxpemluZ1xu
Iik7CiAKLSAgICBlbnVtZXJhdGVBcGlMYXllclByb3BlcnRpZXMoKTsKKyAgICAgICAgZW51bWVy
YXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKCk7CiAKLSAgICBpZiAoIWNoZWNrSW5zdGFuY2VFeHRlbnNp
b25Qcm9wZXJ0aWVzKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFjaGVja0luc3Rh
bmNlRXh0ZW5zaW9uUHJvcGVydGllcygpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzX2FwcGxpY2F0aW9uTmFtZSA9ICJXZWJYUiAoV2ViS2l0KSI7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2FwcGxpY2F0aW9uVmVyc2lvbiA9IDE7
CisKKyAgICAgICAgY29uc3QgY2hhciogY29uc3QgZW5hYmxlZEV4dGVuc2lvbnNbXSA9IHsKKyAg
ICAgICAgICAgIFhSX01ORF9IRUFETEVTU19FWFRFTlNJT05fTkFNRSwKKyAgICAgICAgfTsKIAot
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzX2FwcGxpY2F0aW9uTmFtZSA9ICJXZWJYUiAoV2ViS2l0
KSI7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfYXBwbGljYXRpb25WZXJzaW9uID0gMTsK
LQotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGVuYWJsZWRFeHRlbnNpb25zW10gPSB7Ci0gICAgICAg
IFhSX01ORF9IRUFETEVTU19FWFRFTlNJT05fTkFNRSwKLSAgICB9OwotCi0gICAgYXV0byBjcmVh
dGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhySW5zdGFuY2VDcmVhdGVJbmZvLCBYUl9UWVBFX0lO
U1RBTkNFX0NSRUFURV9JTkZPPigpOwotICAgIGNyZWF0ZUluZm8uY3JlYXRlRmxhZ3MgPSAwOwot
ICAgIHN0ZDo6bWVtY3B5KGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwcGxpY2F0aW9uTmFt
ZSwgc19hcHBsaWNhdGlvbk5hbWUsIFhSX01BWF9BUFBMSUNBVElPTl9OQU1FX1NJWkUpOwotICAg
IGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwaVZlcnNpb24gPSBYUl9DVVJSRU5UX0FQSV9W
RVJTSU9OOwotICAgIGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwcGxpY2F0aW9uVmVyc2lv
biA9IHNfYXBwbGljYXRpb25WZXJzaW9uOwotICAgIGNyZWF0ZUluZm8uZW5hYmxlZEFwaUxheWVy
Q291bnQgPSAwOwotICAgIGNyZWF0ZUluZm8uZW5hYmxlZEV4dGVuc2lvbkNvdW50ID0gV1RGX0FS
UkFZX0xFTkdUSChlbmFibGVkRXh0ZW5zaW9ucyk7Ci0gICAgY3JlYXRlSW5mby5lbmFibGVkRXh0
ZW5zaW9uTmFtZXMgPSBlbmFibGVkRXh0ZW5zaW9uczsKLQotICAgIFhySW5zdGFuY2UgaW5zdGFu
Y2U7Ci0gICAgWHJSZXN1bHQgcmVzdWx0ID0geHJDcmVhdGVJbnN0YW5jZSgmY3JlYXRlSW5mbywg
Jmluc3RhbmNlKTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyQ3JlYXRlSW5zdGFu
Y2UoKSIsIG1faW5zdGFuY2UpOwotICAgIG1faW5zdGFuY2UgPSBpbnN0YW5jZTsKLSAgICBMT0co
WFIsICJ4ckNyZWF0ZUluc3RhbmNlKCk6IHVzaW5nIGluc3RhbmNlICVwXG4iLCBtX2luc3RhbmNl
KTsKKyAgICAgICAgYXV0byBjcmVhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhySW5zdGFuY2VD
cmVhdGVJbmZvLCBYUl9UWVBFX0lOU1RBTkNFX0NSRUFURV9JTkZPPigpOworICAgICAgICBjcmVh
dGVJbmZvLmNyZWF0ZUZsYWdzID0gMDsKKyAgICAgICAgc3RkOjptZW1jcHkoY3JlYXRlSW5mby5h
cHBsaWNhdGlvbkluZm8uYXBwbGljYXRpb25OYW1lLCBzX2FwcGxpY2F0aW9uTmFtZSwgWFJfTUFY
X0FQUExJQ0FUSU9OX05BTUVfU0laRSk7CisgICAgICAgIGNyZWF0ZUluZm8uYXBwbGljYXRpb25J
bmZvLmFwaVZlcnNpb24gPSBYUl9DVVJSRU5UX0FQSV9WRVJTSU9OOworICAgICAgICBjcmVhdGVJ
bmZvLmFwcGxpY2F0aW9uSW5mby5hcHBsaWNhdGlvblZlcnNpb24gPSBzX2FwcGxpY2F0aW9uVmVy
c2lvbjsKKyAgICAgICAgY3JlYXRlSW5mby5lbmFibGVkQXBpTGF5ZXJDb3VudCA9IDA7CisgICAg
ICAgIGNyZWF0ZUluZm8uZW5hYmxlZEV4dGVuc2lvbkNvdW50ID0gV1RGX0FSUkFZX0xFTkdUSChl
bmFibGVkRXh0ZW5zaW9ucyk7CisgICAgICAgIGNyZWF0ZUluZm8uZW5hYmxlZEV4dGVuc2lvbk5h
bWVzID0gZW5hYmxlZEV4dGVuc2lvbnM7CisKKyAgICAgICAgWHJJbnN0YW5jZSBpbnN0YW5jZTsK
KyAgICAgICAgWHJSZXN1bHQgcmVzdWx0ID0geHJDcmVhdGVJbnN0YW5jZSgmY3JlYXRlSW5mbywg
Jmluc3RhbmNlKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckNyZWF0ZUlu
c3RhbmNlKCkiLCBtX2luc3RhbmNlKTsKKyAgICAgICAgbV9pbnN0YW5jZSA9IGluc3RhbmNlOwor
ICAgICAgICBMT0coWFIsICJ4ckNyZWF0ZUluc3RhbmNlKCk6IHVzaW5nIGluc3RhbmNlICVwXG4i
LCBtX2luc3RhbmNlKTsKKyAgICB9KTsKICNlbmRpZiAvLyBVU0VfT1BFTlhSCiB9CiAKIEluc3Rh
bmNlOjpJbXBsOjp+SW1wbCgpCiB7CiAjaWYgVVNFX09QRU5YUgotICAgIGlmIChtX2luc3RhbmNl
ICE9IFhSX05VTExfSEFORExFKQotICAgICAgICB4ckRlc3Ryb3lJbnN0YW5jZShtX2luc3RhbmNl
KTsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKKyAgICAgICAgaWYgKG1faW5z
dGFuY2UgIT0gWFJfTlVMTF9IQU5ETEUpCisgICAgICAgICAgICB4ckRlc3Ryb3lJbnN0YW5jZSht
X2luc3RhbmNlKTsKKyAgICB9KTsKICNlbmRpZgogfQogCkBAIC0yMTEsNTEgKzIyMiw2OCBAQCBJ
bnN0YW5jZTo6SW5zdGFuY2UoKQogewogfQogCi12b2lkIEluc3RhbmNlOjplbnVtZXJhdGVJbW1l
cnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPERldmljZT4+JiBkZXZpY2VzKT4mJiBjYWxsYmFjaykKK3ZvaWQgSW5zdGFuY2U6
OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IERldmljZUxpc3QmIGRldmljZXMpPiYmIGNhbGxiYWNrKQogewogI2lmIFVTRV9PUEVOWFIKLSAg
ICBhdXRvIGNhbGxiYWNrT25FeGl0ID0gbWFrZVNjb3BlRXhpdChbJl0oKSB7Ci0gICAgICAgIGNh
bGxiYWNrKHsgfSk7Ci0gICAgfSk7Ci0gICAgaWYgKG1faW1wbC0+eHJJbnN0YW5jZSgpID09IFhS
X05VTExfSEFORExFKSB7Ci0gICAgICAgIExPRyhYUiwgIiVzIFVuYWJsZSB0byBlbnVtZXJhdGUg
WFIgZGV2aWNlcy4gTm8gWHJJbnN0YW5jZSBwcmVzZW50XG4iLCBfX0ZVTkNUSU9OX18pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIG1faW1wbC0+cXVldWUoKS5kaXNwYXRjaChbdGhpcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBj
YWxsYmFja09uRXhpdCA9IG1ha2VTY29wZUV4aXQoWyZdKCkgeworICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OwogCi0gICAgYXV0byBzeXN0ZW1HZXRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtR2V0
SW5mbywgWFJfVFlQRV9TWVNURU1fR0VUX0lORk8+KCk7Ci0gICAgc3lzdGVtR2V0SW5mby5mb3Jt
RmFjdG9yID0gWFJfRk9STV9GQUNUT1JfSEVBRF9NT1VOVEVEX0RJU1BMQVk7CisgICAgICAgIG1f
aW1tZXJzaXZlWFJEZXZpY2VzLmNsZWFyKCk7CiAKLSAgICBYclN5c3RlbUlkIHN5c3RlbUlkOwot
ICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyR2V0U3lzdGVtKG1faW1wbC0+eHJJbnN0YW5jZSgpLCAm
c3lzdGVtR2V0SW5mbywgJnN5c3RlbUlkKTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwg
InhyR2V0U3lzdGVtIiwgbV9pbXBsLT54ckluc3RhbmNlKCkpOworICAgICAgICBpZiAobV9pbXBs
LT54ckluc3RhbmNlKCkgPT0gWFJfTlVMTF9IQU5ETEUpIHsKKyAgICAgICAgICAgIExPRyhYUiwg
IiVzIFVuYWJsZSB0byBlbnVtZXJhdGUgWFIgZGV2aWNlcy4gTm8gWHJJbnN0YW5jZSBwcmVzZW50
XG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSNp
ZiAhTE9HX0RJU0FCTEVECi0gICAgYXV0byBzeXN0ZW1Qcm9wZXJ0aWVzID0gY3JlYXRlU3RydWN0
dXJlPFhyU3lzdGVtUHJvcGVydGllcywgWFJfVFlQRV9TWVNURU1fUFJPUEVSVElFUz4oKTsKLSAg
ICByZXN1bHQgPSB4ckdldFN5c3RlbVByb3BlcnRpZXMobV9pbXBsLT54ckluc3RhbmNlKCksIHN5
c3RlbUlkLCAmc3lzdGVtUHJvcGVydGllcyk7Ci0gICAgaWYgKHJlc3VsdCA9PSBYUl9TVUNDRVNT
KQotICAgICAgICBMT0coWFIsICJGb3VuZCBYUlN5c3RlbSAlbHU6IFwiJXNcIiwgdmVuZG9yIElE
ICVkXG4iLCBzeXN0ZW1Qcm9wZXJ0aWVzLnN5c3RlbUlkLCBzeXN0ZW1Qcm9wZXJ0aWVzLnN5c3Rl
bU5hbWUsIHN5c3RlbVByb3BlcnRpZXMudmVuZG9ySWQpOwotI2VuZGlmCisgICAgICAgIGF1dG8g
c3lzdGVtR2V0SW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYclN5c3RlbUdldEluZm8sIFhSX1RZUEVf
U1lTVEVNX0dFVF9JTkZPPigpOworICAgICAgICBzeXN0ZW1HZXRJbmZvLmZvcm1GYWN0b3IgPSBY
Ul9GT1JNX0ZBQ1RPUl9IRUFEX01PVU5URURfRElTUExBWTsKKworICAgICAgICBYclN5c3RlbUlk
IHN5c3RlbUlkOworICAgICAgICBYclJlc3VsdCByZXN1bHQgPSB4ckdldFN5c3RlbShtX2ltcGwt
PnhySW5zdGFuY2UoKSwgJnN5c3RlbUdldEluZm8sICZzeXN0ZW1JZCk7CisgICAgICAgIFJFVFVS
Tl9JRl9GQUlMRUQocmVzdWx0LCAieHJHZXRTeXN0ZW0iLCBtX2ltcGwtPnhySW5zdGFuY2UoKSk7
CisKKyAgICAgICAgY2FsbGJhY2tPbkV4aXQucmVsZWFzZSgpOworCisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHN5c3RlbUlkXSgp
IG11dGFibGUgeworICAgICAgICAgICAgLy8gQ3JlYXRlIGRldmljZXMgaW4gdGhlIG1haW4gdGhy
ZWFkIGJ1dCBkbyBub3QgY2FsbCB0aGUgY2FsbGJhY2sgaW1tZWRpYXRlbHkgYXMgdGhlIGRldmlj
ZSBuZWVkcyB0byBpbml0aWFsaXplCisgICAgICAgICAgICAvLyBzb21lIHN0dWZmIGluIHRoZSB3
b3JrIHF1ZXVlLiBUaGF0J3Mgd2h5IHdlIG5lZWQgdG8gcXVldWUgYW5vdGhlciB0YXNrIHRvIGNh
bGwgdGhlIGNhbGxiYWNrIGFmdGVyIHRoZQorICAgICAgICAgICAgLy8gZGV2aWNlIGluaXRpYWxp
emF0aW9uIGlzIGNvbXBsZXRlZC4KKyAgICAgICAgICAgIG1faW1tZXJzaXZlWFJEZXZpY2VzLmFw
cGVuZChtYWtlVW5pcXVlUmVmPE9wZW5YUkRldmljZT4oc3lzdGVtSWQsIG1faW1wbC0+eHJJbnN0
YW5jZSgpLCBtX2ltcGwtPnF1ZXVlKCkpKTsKKyAgICAgICAgICAgIG1faW1wbC0+cXVldWUoKS5k
aXNwYXRjaChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayht
X2ltbWVyc2l2ZVhSRGV2aWNlcyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiAKLSAgICBtX2ltbWVyc2l2ZVhSRGV2aWNlcy5hcHBl
bmQobWFrZVVuaXF1ZTxPcGVuWFJEZXZpY2U+KHN5c3RlbUlkLCBtX2ltcGwtPnhySW5zdGFuY2Uo
KSkpOwotICAgIGNhbGxiYWNrKG1faW1tZXJzaXZlWFJEZXZpY2VzKTsKLSAgICBjYWxsYmFja09u
RXhpdC5yZWxlYXNlKCk7CiAjZW5kaWYgLy8gVVNFX09QRU5YUgogfQogCiAjaWYgVVNFX09QRU5Y
UgotT3BlblhSRGV2aWNlOjpPcGVuWFJEZXZpY2UoWHJTeXN0ZW1JZCBpZCwgWHJJbnN0YW5jZSBp
bnN0YW5jZSkKK09wZW5YUkRldmljZTo6T3BlblhSRGV2aWNlKFhyU3lzdGVtSWQgaWQsIFhySW5z
dGFuY2UgaW5zdGFuY2UsIFdvcmtRdWV1ZSYgcXVldWUpCiAgICAgOiBtX3N5c3RlbUlkKGlkKQog
ICAgICwgbV9pbnN0YW5jZShpbnN0YW5jZSkKKyAgICAsIG1fcXVldWUocXVldWUpCiB7Ci0gICAg
YXV0byBzeXN0ZW1Qcm9wZXJ0aWVzID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtUHJvcGVydGll
cywgWFJfVFlQRV9TWVNURU1fUFJPUEVSVElFUz4oKTsKLSAgICBYclJlc3VsdCByZXN1bHQgPSB4
ckdldFN5c3RlbVByb3BlcnRpZXMoaW5zdGFuY2UsIG1fc3lzdGVtSWQsICZzeXN0ZW1Qcm9wZXJ0
aWVzKTsKLSAgICBpZiAocmVzdWx0ID09IFhSX1NVQ0NFU1MpCi0gICAgICAgIG1fc3VwcG9ydHNP
cmllbnRhdGlvblRyYWNraW5nID0gc3lzdGVtUHJvcGVydGllcy50cmFja2luZ1Byb3BlcnRpZXMu
b3JpZW50YXRpb25UcmFja2luZyA9PSBYUl9UUlVFOwotICAgIGVsc2UKLSAgICAgICAgTE9HKFhS
LCAieHJHZXRTeXN0ZW1Qcm9wZXJ0aWVzKCk6IGVycm9yICVzXG4iLCByZXN1bHRUb1N0cmluZyhy
ZXN1bHQsIG1faW5zdGFuY2UpLnV0ZjgoKS5kYXRhKCkpOworICAgIG1fcXVldWUuZGlzcGF0Y2go
W3RoaXNdKCkgeworICAgICAgICBhdXRvIHN5c3RlbVByb3BlcnRpZXMgPSBjcmVhdGVTdHJ1Y3R1
cmU8WHJTeXN0ZW1Qcm9wZXJ0aWVzLCBYUl9UWVBFX1NZU1RFTV9QUk9QRVJUSUVTPigpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IHhyR2V0U3lzdGVtUHJvcGVydGllcyhtX2luc3RhbmNlLCBtX3N5
c3RlbUlkLCAmc3lzdGVtUHJvcGVydGllcyk7CisgICAgICAgIGlmICghWFJfRkFJTEVEKHJlc3Vs
dCkpCisgICAgICAgICAgICBtX3N1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA9IHN5c3RlbVBy
b3BlcnRpZXMudHJhY2tpbmdQcm9wZXJ0aWVzLm9yaWVudGF0aW9uVHJhY2tpbmcgPT0gWFJfVFJV
RTsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIExPRyhYUiwg
InhyR2V0U3lzdGVtUHJvcGVydGllcygpOiBlcnJvciAlc1xuIiwgcmVzdWx0VG9TdHJpbmcocmVz
dWx0LCBtX2luc3RhbmNlKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKFhSLCAiRm91bmQg
WFJTeXN0ZW0gJWx1OiBcIiVzXCIsIHZlbmRvciBJRCAlZFxuIiwgc3lzdGVtUHJvcGVydGllcy5z
eXN0ZW1JZCwgc3lzdGVtUHJvcGVydGllcy5zeXN0ZW1OYW1lLCBzeXN0ZW1Qcm9wZXJ0aWVzLnZl
bmRvcklkKTsKKyNlbmRpZgogCi0gICAgY29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2RlcygpOwot
ICAgIGNvbGxlY3RDb25maWd1cmF0aW9uVmlld3MoKTsKKyAgICAgICAgY29sbGVjdFN1cHBvcnRl
ZFNlc3Npb25Nb2RlcygpOworICAgICAgICBjb2xsZWN0Q29uZmlndXJhdGlvblZpZXdzKCk7Cisg
ICAgfSk7CiB9CiAKIERldmljZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5YUkRldmljZTo6
ZW51bWVyYXRlUmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKQEAgLTI5
OSw2ICszMjcsNyBAQCBEZXZpY2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJlcyBPcGVuWFJEZXZpY2U6
OmVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhYclNlc3Npb24mCiAKIHZvaWQgT3BlblhSRGV2aWNl
Ojpjb2xsZWN0U3VwcG9ydGVkU2Vzc2lvbk1vZGVzKCkKIHsKKyAgICBBU1NFUlQoJlJ1bkxvb3A6
OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOwogICAgIHVpbnQzMl90IHZpZXdDb25m
aWd1cmF0aW9uQ291bnQ7CiAgICAgYXV0byByZXN1bHQgPSB4ckVudW1lcmF0ZVZpZXdDb25maWd1
cmF0aW9ucyhtX2luc3RhbmNlLCBtX3N5c3RlbUlkLCAwLCAmdmlld0NvbmZpZ3VyYXRpb25Db3Vu
dCwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZVZp
ZXdDb25maWd1cmF0aW9ucyIsIG1faW5zdGFuY2UpOwpAQCAtMzQxLDYgKzM3MCw3IEBAIHZvaWQg
T3BlblhSRGV2aWNlOjpjb2xsZWN0U3VwcG9ydGVkU2Vzc2lvbk1vZGVzKCkKIAogdm9pZCBPcGVu
WFJEZXZpY2U6OmNvbGxlY3RDb25maWd1cmF0aW9uVmlld3MoKQogeworICAgIEFTU0VSVCgmUnVu
TG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CiAgICAgZm9yIChhdXRvJiBj
b25maWcgOiBtX3ZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllcy52YWx1ZXMoKSkgewogICAgICAg
ICB1aW50MzJfdCB2aWV3Q291bnQ7CiAgICAgICAgIGF1dG8gY29uZmlnVHlwZSA9IGNvbmZpZy52
aWV3Q29uZmlndXJhdGlvblR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaAppbmRleCBjMjgxNTAyM2EyNzJhMzQyZmYyYTlh
YzQ4MjU2OWQ1MDM2MTU4MzdiLi41NDlhNTA1ZDVlZjEzZTdjMTc1NzFkMDNkYTEyMmIxZGY0MThk
M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZv
cm1YUk9wZW5YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0
Zm9ybVhST3BlblhSLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lmIFVTRV9PUEVOWFIKICNpbmNs
dWRlIDxvcGVueHIvb3BlbnhyLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1l
c3BhY2UgUGxhdGZvcm1YUiB7CiAKQEAgLTQzLDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFBsYXRmb3Jt
WFIgewogLy8gdGhlIFhSU3lzdGVtIGlzIGJhc2ljYWxseSB0aGUgZW50cnkgcG9pbnQgZm9yIHRo
ZSBXZWJYUiBBUEkgYXZhaWxhYmxlIHZpYSB0aGUgTmF2aWdhdG9yIG9iamVjdC4KIGNsYXNzIE9w
ZW5YUkRldmljZSBmaW5hbCA6IHB1YmxpYyBEZXZpY2UgewogcHVibGljOgotICAgIE9wZW5YUkRl
dmljZShYclN5c3RlbUlkLCBYckluc3RhbmNlKTsKKyAgICBPcGVuWFJEZXZpY2UoWHJTeXN0ZW1J
ZCwgWHJJbnN0YW5jZSwgV29ya1F1ZXVlJik7CiAgICAgWHJTeXN0ZW1JZCB4clN5c3RlbUlkKCkg
Y29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogcHJpdmF0ZToKICAgICB2b2lkIGNvbGxlY3RT
dXBwb3J0ZWRTZXNzaW9uTW9kZXMoKTsKQEAgLTYxLDYgKzYyLDggQEAgcHJpdmF0ZToKICAgICBY
clN5c3RlbUlkIG1fc3lzdGVtSWQ7CiAgICAgWHJJbnN0YW5jZSBtX2luc3RhbmNlOwogICAgIFhy
U2Vzc2lvbiBtX3Nlc3Npb247CisKKyAgICBXb3JrUXVldWUmIG1fcXVldWU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBQbGF0Zm9ybVhSCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411967</attachid>
            <date>2020-10-21 02:38:59 -0700</date>
            <delta_ts>2020-10-21 06:18:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217752-20201021113857.patch</filename>
            <type>text/plain</type>
            <size>16729</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4Nzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY1YzJmNTY3YjllOWVm
ZjY3YjUwYjZmYzk0MDUwYzQ5OGIzZmJkNC4uZTExYjIwMTJlMjRlY2UwYTcxNGRhZDc1YWE4OWYw
NDNmMzhiYzM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTEwLTE1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
TW92ZSBPcGVuWFIgY2FsbHMgb2ZmIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIE9wZW5YUiBBUEkgaXMgc3luY2hyb25v
dXMuIE1hbnkgb2YgdGhlIGNhbGxzIGludm9sdmUgZGVhbGluZyB3aXRoIGV4dGVybmFsIGhhcmR3
YXJlIGRldmljZXMKKyAgICAgICAgbWVhbmluZyB0aGF0IHRoZXkgaGF2ZSB0byBwb3RlbnRpYWwg
dG8gYmxvY2sgdGhlIG1haW4gdGhyZWFkLiBUaGV5IHNob3VsZCBiZSBtb3ZlZCB0byBhIGRpZmZl
cmVudAorICAgICAgICB0aHJlYWQgaW4gb3JkZXIgdG8gYXZvaWQgdGhhdC4KKworICAgICAgICBU
aGUgUGxhdGZvcm1YUjo6SW5zdGFuY2UgY3JlYXRlcyBhIFdvcmtRdWV1ZSB3aGljaCBpcyBnb2lu
ZyB0byBiZSB1c2VkIGJ5IHRoZSBPcGVuWFIgZGV2aWNlcyB0bworICAgICAgICBpc3N1ZSBPcGVu
WFIgY2FsbHMgYW5kIGFsc28gc2VyaWFsaXplIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUg
ZXhlY3V0ZWQgc2VxdWVudGlhbGx5LiBUaGUKKyAgICAgICAgT3BlblhSRGV2aWNlJ3MgYXJlIGNy
ZWF0ZWQgaW4gdGhlIG1haW4gdGhyZWFkIGFueXdheSBiZWNhdXNlIHdlIG5lZWQgdG8gZ2V0IHdl
YWsgcG9pbnRlcnMgZnJvbQorICAgICAgICB0aGVtIGluIHRoZSBtYWluIHRocmVhZC4KKworICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCk6IFVzZSBhIHNj
b3BlZCBleGl0IHRvIGNhbGwgY2FsbGJhY2suIEFsc28KKyAgICAgICAgdGhlIFZlY3RvciBvZiBp
bW1lcnNpdmUgZGV2aWNlcyBpcyBub3cgYSBwb2ludGVyIHdoaWNoIG1pZ2h0IGJlIG51bGwsIG1l
YW5pbmcgbm8gYXZhaWxhYmxlIGRldmljZXMuCisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oOiBBZGRlZCBhICJ1c2luZyIgZm9yIHRoZSBWZWN0b3Igb2YgZGV2aWNlcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHA6CisgICAgICAgIChQ
bGF0Zm9ybVhSOjpJbnN0YW5jZTo6SW1wbDo6cXVldWUgY29uc3QpOiBOZXcgZ2V0dGVyIHJldHVy
bmluZyB0aGUgV29ya1F1ZXVlLgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkltcGw6
OmVudW1lcmF0ZUFwaUxheWVyUHJvcGVydGllcyBjb25zdCk6IEFkZGVkIGFuIEFTU0VSVC4KKyAg
ICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjpjaGVja0luc3RhbmNlRXh0ZW5zaW9u
UHJvcGVydGllcyBjb25zdCk6IERpdHRvLgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6
OkltcGw6OkltcGwpOiBDcmVhdGUgdGhlIE9wZW5YUiBXb3JrUXVldWUgYW5kIGRpc3BhdGNoIGEg
dGFzayB0byBwZXJmb3JtIHRoZQorICAgICAgICBPcGVuWFIgc3lzdGVtIGluaXRpYWxpemF0aW9u
IGluIHRoZSBxdWV1ZS4KKyAgICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjp+SW1w
bCk6IERlbGV0ZSB0aGUgaW5zdGFuY2UgaW4gdGhlIFdvcmtRdWV1ZQorICAgICAgICAoUGxhdGZv
cm1YUjo6SW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyk6IE1vdmVkIHRoZSBj
b2RlIHRvIGEgdGFzayBpbiB0aGUgV29ya1F1ZXVlLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3Bl
blhSRGV2aWNlOjpPcGVuWFJEZXZpY2UpOiBEaXR0by4gQWxzbyBhZGRlZCBhIGNvbXBsZXRpb24g
aGFuZGxlciB0byBub3RpZnkgdGhlIGNhbGxlcgorICAgICAgICBhYm91dCB0aGUgZW5kIG9mIHRo
ZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9w
ZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2Rlcyk6IEFkZGVkIGFuIEFTU0VS
VC4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6Y29sbGVjdENvbmZpZ3VyYXRp
b25WaWV3cyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmg6IEFkZGVkIFdvcmtRdWV1ZSBhdHRyaWJ1dGUgYW5kIHBhcmFtZXRlciB0byBkZXZp
Y2UgY29uc3RydWN0b3IuCisKIDIwMjAtMTAtMjAgIEp1bGlhbiBHb256YWxleiAgPGp1bGlhbl9h
X2dvbnphbGV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWxlYXNlIGFzc2VydCBpbiB+Tm9kZSBk
dWUgdG8gcmVuZGVyIGVsZW1lbnQgb2YgcHNldWRvIGVsZW1lbnQgbm90IGdldHRpbmcgcmVtb3Zl
ZCBpbiB0aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3Bw
CmluZGV4IDViYTQ3ZTJkOWEwNjU1ZWFkYTQzNTVkODA3YWEyNTI1ZTZkYjYzOWYuLjEyYTlmMjFl
NzI0YTEyZGRjMTVkYTlhODRjMWI4MmViNGQxN2Q0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCkBAIC04OCwyMCArODgsMjIgQEAgdm9pZCBXZWJY
UlN5c3RlbTo6ZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJgogICAgIHBsYXRmb3JtWFIuZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2Vz
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlzRmlyc3RYUkRldmljZXNF
bnVtZXJhdGlvbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgaW1tZXJzaXZl
WFJEZXZpY2VzKSBtdXRhYmxlIHsKICAgICAgICAgbV9pbW1lcnNpdmVYUkRldmljZXNIYXZlQmVl
bkVudW1lcmF0ZWQgPSB0cnVlOwogCisgICAgICAgIGF1dG8gY2FsbGJhY2tPbkV4aXQgPSBtYWtl
U2NvcGVFeGl0KFsmXSgpIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShj
YWxsYmFjaykpOworICAgICAgICB9KTsKKwogICAgICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13
ZWIuZ2l0aHViLmlvL3dlYnhyLyNzZWxlY3QtYW4taW1tZXJzaXZlLXhyLWRldmljZQogICAgICAg
ICBhdXRvKiBvbGREZXZpY2UgPSBtX2FjdGl2ZUltbWVyc2l2ZURldmljZS5nZXQoKTsKICAgICAg
ICAgaWYgKGltbWVyc2l2ZVhSRGV2aWNlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1fYWN0
aXZlSW1tZXJzaXZlRGV2aWNlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGltbWVyc2l2ZVhSRGV2
aWNlcy5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgbV9hY3RpdmVJbW1lcnNpdmVEZXZpY2Ug
PSBtYWtlV2Vha1B0cihpbW1lcnNpdmVYUkRldmljZXMuZmlyc3QoKS5nZXQoKSk7Ci0gICAgICAg
ICAgICBjYWxsYmFjaygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKG1fYWN0aXZlSW1tZXJzaXZlU2Vzc2lvbiAmJiBvbGREZXZpY2UgJiYgaW1tZXJzaXZl
WFJEZXZpY2VzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYgZW50cnkpIHsgcmV0dXJuIGVudHJ5Lmdl
dCgpID09IG9sZERldmljZTsgfSkgIT0gbm90Rm91bmQpCisgICAgICAgIGlmIChtX2FjdGl2ZUlt
bWVyc2l2ZVNlc3Npb24gJiYgb2xkRGV2aWNlICYmIGltbWVyc2l2ZVhSRGV2aWNlcy5maW5kTWF0
Y2hpbmcoWyZdKGF1dG8mIGVudHJ5KSB7IHJldHVybiAmZW50cnkgPT0gb2xkRGV2aWNlOyB9KSAh
PSBub3RGb3VuZCkKICAgICAgICAgICAgIEFTU0VSVChtX2FjdGl2ZUltbWVyc2l2ZURldmljZS5n
ZXQoKSA9PSBvbGREZXZpY2UpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgYSBiZXR0ZXIgVUEgc2VsZWN0aW9uIG1lY2hhbmlzbSBpZiByZXF1aXJlZC4K
QEAgLTEwOSwxNSArMTExLDEyIEBAIHZvaWQgV2ViWFJTeXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhS
RGV2aWNlSXNTZWxlY3RlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChpc0ZpcnN0WFJEZXZpY2VzRW51bWVyYXRpb24gfHwgbV9hY3RpdmVJbW1l
cnNpdmVEZXZpY2UuZ2V0KCkgPT0gb2xkRGV2aWNlKSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IDcu
IFNodXQgZG93biBhbnkgYWN0aXZlIFhSU2Vzc2lvbnMuCiAgICAgICAgIC8vIEZJWE1FOiA4LiBT
ZXQgdGhlIFhSIGNvbXBhdGlibGUgYm9vbGVhbiBvZiBhbGwgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSBpbnN0YW5jZXMgdG8gZmFsc2UuCiAgICAgICAgIC8vIEZJWE1FOiA5LiBRdWV1ZSBhIHRh
c2sgdG8gZmlyZSBhbiBldmVudCBuYW1lZCBkZXZpY2VjaGFuZ2Ugb24gdGhlIGNvbnRleHQgb2Jq
ZWN0LgotCi0gICAgICAgIGNhbGxiYWNrKCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCBhNzE2MjNhZTQzMzZkYWIwNzUzN2ZjZTdhMmM2
YzRkMDlhYTQ2MzI2Li5lNTRlMjYyNGYyNWM5YjY4MDRiNjdiY2Q5MjllZDZmOWNkYWI3Nzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC03NSw3ICs3NSw4IEBA
IGNsYXNzIEluc3RhbmNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgSW5zdGFuY2UmIHNpbmdsZXRv
bigpOwogCi0gICAgdm9pZCBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldmljZT4+Jik+JiYpOwor
ICAgIHVzaW5nIERldmljZUxpc3QgPSBWZWN0b3I8VW5pcXVlUmVmPERldmljZT4+OworICAgIHZv
aWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgRGV2aWNlTGlzdCYpPiYmKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgTGF6eU5ldmVyRGVz
dHJveWVkPEluc3RhbmNlPjsKQEAgLTg1LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
SW1wbDsKICAgICBVbmlxdWVSZWY8SW1wbD4gbV9pbXBsOwogCi0gICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxEZXZpY2U+PiBtX2ltbWVyc2l2ZVhSRGV2aWNlczsKKyAgICBEZXZpY2VMaXN0IG1f
aW1tZXJzaXZlWFJEZXZpY2VzOwogfTsKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhS
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhS
LmNwcAppbmRleCBmODZiMzdlYTI2MzBiZDkyMmRmMmFkNTdmYWU0NzQ4YjM0OTkxOTExLi4yZDY4
MTc2ZmU2OGU1NGU2ZDFhOGFmYTExNDAyOTk5MTE4ZGEzNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCkBAIC03
Myw2ICs3Myw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRV9PUEVOWFIKICAgICBYckluc3RhbmNlIHhy
SW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlOyB9CisgICAgV29ya1F1ZXVlJiBx
dWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya1F1ZXVlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToK
QEAgLTgxLDEyICs4MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hlY2tJbnN0YW5jZUV4dGVu
c2lvblByb3BlcnRpZXMoKSBjb25zdDsKIAogICAgIFhySW5zdGFuY2UgbV9pbnN0YW5jZSB7IFhS
X05VTExfSEFORExFIH07CisgICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAjZW5kaWYg
Ly8gVVNFX09QRU5YUgogfTsKIAogI2lmIFVTRV9PUEVOWFIKIHZvaWQgSW5zdGFuY2U6OkltcGw6
OmVudW1lcmF0ZUFwaUxheWVyUHJvcGVydGllcygpIGNvbnN0CiB7CisgICAgQVNTRVJUKCZSdW5M
b29wOjpjdXJyZW50KCkgPT0gJm1fd29ya1F1ZXVlLT5ydW5Mb29wKCkpOwogICAgIHVpbnQzMl90
IHByb3BlcnR5Q291bnRPdXRwdXQgeyAwIH07CiAgICAgWHJSZXN1bHQgcmVzdWx0ID0geHJFbnVt
ZXJhdGVBcGlMYXllclByb3BlcnRpZXMoMCwgJnByb3BlcnR5Q291bnRPdXRwdXQsIG51bGxwdHIp
OwogICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVBcGlMYXllclByb3Bl
cnRpZXMoKSIsIG1faW5zdGFuY2UpOwpAQCAtMTE5LDYgKzEyMiw3IEBAIHN0YXRpYyBib29sIGlz
RXh0ZW5zaW9uU3VwcG9ydGVkKGNvbnN0IGNoYXIqIGV4dGVuc2lvbk5hbWUsIFZlY3RvcjxYckV4
dGVuc2lvblByCiAKIGJvb2wgSW5zdGFuY2U6OkltcGw6OmNoZWNrSW5zdGFuY2VFeHRlbnNpb25Q
cm9wZXJ0aWVzKCkgY29uc3QKIHsKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAm
bV93b3JrUXVldWUtPnJ1bkxvb3AoKSk7CiAgICAgdWludDMyX3QgcHJvcGVydHlDb3VudE91dHB1
dCB7IDAgfTsKICAgICBYclJlc3VsdCByZXN1bHQgPSB4ckVudW1lcmF0ZUluc3RhbmNlRXh0ZW5z
aW9uUHJvcGVydGllcyhudWxscHRyLCAwLCAmcHJvcGVydHlDb3VudE91dHB1dCwgbnVsbHB0cik7
CiAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZUluc3RhbmNlRXh0ZW5z
aW9uUHJvcGVydGllcyIsIG1faW5zdGFuY2UsIGZhbHNlKTsKQEAgLTE1NCw0NCArMTU4LDUxIEBA
IGJvb2wgSW5zdGFuY2U6OkltcGw6OmNoZWNrSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKCkg
Y29uc3QKICNlbmRpZiAvLyBVU0VfT1BFTlhSCiAKIEluc3RhbmNlOjpJbXBsOjpJbXBsKCkKKyNp
ZiBVU0VfT1BFTlhSCisgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiT3BlblhS
IHF1ZXVlIikpCisjZW5kaWYKIHsKICNpZiBVU0VfT1BFTlhSCi0gICAgTE9HKFhSLCAiT3BlblhS
OiBpbml0aWFsaXppbmdcbiIpOworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpc10oKSB7
CisgICAgICAgIExPRyhYUiwgIk9wZW5YUjogaW5pdGlhbGl6aW5nXG4iKTsKIAotICAgIGVudW1l
cmF0ZUFwaUxheWVyUHJvcGVydGllcygpOworICAgICAgICBlbnVtZXJhdGVBcGlMYXllclByb3Bl
cnRpZXMoKTsKIAotICAgIGlmICghY2hlY2tJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMoKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIWNoZWNrSW5zdGFuY2VFeHRlbnNpb25Qcm9w
ZXJ0aWVzKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHNfYXBwbGljYXRpb25OYW1lID0gIldlYlhSIChXZWJLaXQpIjsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVpbnQzMl90IHNfYXBwbGljYXRpb25WZXJzaW9uID0gMTsKIAotICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBzX2FwcGxpY2F0aW9uTmFtZSA9ICJXZWJYUiAoV2ViS2l0KSI7Ci0gICAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IHNfYXBwbGljYXRpb25WZXJzaW9uID0gMTsKLQotICAgIGNvbnN0
IGNoYXIqIGNvbnN0IGVuYWJsZWRFeHRlbnNpb25zW10gPSB7Ci0gICAgICAgIFhSX01ORF9IRUFE
TEVTU19FWFRFTlNJT05fTkFNRSwKLSAgICB9OwotCi0gICAgYXV0byBjcmVhdGVJbmZvID0gY3Jl
YXRlU3RydWN0dXJlPFhySW5zdGFuY2VDcmVhdGVJbmZvLCBYUl9UWVBFX0lOU1RBTkNFX0NSRUFU
RV9JTkZPPigpOwotICAgIGNyZWF0ZUluZm8uY3JlYXRlRmxhZ3MgPSAwOwotICAgIHN0ZDo6bWVt
Y3B5KGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwcGxpY2F0aW9uTmFtZSwgc19hcHBsaWNh
dGlvbk5hbWUsIFhSX01BWF9BUFBMSUNBVElPTl9OQU1FX1NJWkUpOwotICAgIGNyZWF0ZUluZm8u
YXBwbGljYXRpb25JbmZvLmFwaVZlcnNpb24gPSBYUl9DVVJSRU5UX0FQSV9WRVJTSU9OOwotICAg
IGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwcGxpY2F0aW9uVmVyc2lvbiA9IHNfYXBwbGlj
YXRpb25WZXJzaW9uOwotICAgIGNyZWF0ZUluZm8uZW5hYmxlZEFwaUxheWVyQ291bnQgPSAwOwot
ICAgIGNyZWF0ZUluZm8uZW5hYmxlZEV4dGVuc2lvbkNvdW50ID0gV1RGX0FSUkFZX0xFTkdUSChl
bmFibGVkRXh0ZW5zaW9ucyk7Ci0gICAgY3JlYXRlSW5mby5lbmFibGVkRXh0ZW5zaW9uTmFtZXMg
PSBlbmFibGVkRXh0ZW5zaW9uczsKLQotICAgIFhySW5zdGFuY2UgaW5zdGFuY2U7Ci0gICAgWHJS
ZXN1bHQgcmVzdWx0ID0geHJDcmVhdGVJbnN0YW5jZSgmY3JlYXRlSW5mbywgJmluc3RhbmNlKTsK
LSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyQ3JlYXRlSW5zdGFuY2UoKSIsIG1faW5z
dGFuY2UpOwotICAgIG1faW5zdGFuY2UgPSBpbnN0YW5jZTsKLSAgICBMT0coWFIsICJ4ckNyZWF0
ZUluc3RhbmNlKCk6IHVzaW5nIGluc3RhbmNlICVwXG4iLCBtX2luc3RhbmNlKTsKKyAgICAgICAg
Y29uc3QgY2hhciogY29uc3QgZW5hYmxlZEV4dGVuc2lvbnNbXSA9IHsKKyAgICAgICAgICAgIFhS
X01ORF9IRUFETEVTU19FWFRFTlNJT05fTkFNRSwKKyAgICAgICAgfTsKKworICAgICAgICBhdXRv
IGNyZWF0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJJbnN0YW5jZUNyZWF0ZUluZm8sIFhSX1RZ
UEVfSU5TVEFOQ0VfQ1JFQVRFX0lORk8+KCk7CisgICAgICAgIGNyZWF0ZUluZm8uY3JlYXRlRmxh
Z3MgPSAwOworICAgICAgICBzdGQ6Om1lbWNweShjcmVhdGVJbmZvLmFwcGxpY2F0aW9uSW5mby5h
cHBsaWNhdGlvbk5hbWUsIHNfYXBwbGljYXRpb25OYW1lLCBYUl9NQVhfQVBQTElDQVRJT05fTkFN
RV9TSVpFKTsKKyAgICAgICAgY3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8uYXBpVmVyc2lvbiA9
IFhSX0NVUlJFTlRfQVBJX1ZFUlNJT047CisgICAgICAgIGNyZWF0ZUluZm8uYXBwbGljYXRpb25J
bmZvLmFwcGxpY2F0aW9uVmVyc2lvbiA9IHNfYXBwbGljYXRpb25WZXJzaW9uOworICAgICAgICBj
cmVhdGVJbmZvLmVuYWJsZWRBcGlMYXllckNvdW50ID0gMDsKKyAgICAgICAgY3JlYXRlSW5mby5l
bmFibGVkRXh0ZW5zaW9uQ291bnQgPSBXVEZfQVJSQVlfTEVOR1RIKGVuYWJsZWRFeHRlbnNpb25z
KTsKKyAgICAgICAgY3JlYXRlSW5mby5lbmFibGVkRXh0ZW5zaW9uTmFtZXMgPSBlbmFibGVkRXh0
ZW5zaW9uczsKKworICAgICAgICBYckluc3RhbmNlIGluc3RhbmNlOworICAgICAgICBYclJlc3Vs
dCByZXN1bHQgPSB4ckNyZWF0ZUluc3RhbmNlKCZjcmVhdGVJbmZvLCAmaW5zdGFuY2UpOworICAg
ICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyQ3JlYXRlSW5zdGFuY2UoKSIsIG1faW5z
dGFuY2UpOworICAgICAgICBtX2luc3RhbmNlID0gaW5zdGFuY2U7CisgICAgICAgIExPRyhYUiwg
InhyQ3JlYXRlSW5zdGFuY2UoKTogdXNpbmcgaW5zdGFuY2UgJXBcbiIsIG1faW5zdGFuY2UpOwor
ICAgIH0pOwogI2VuZGlmIC8vIFVTRV9PUEVOWFIKIH0KIAogSW5zdGFuY2U6OkltcGw6On5JbXBs
KCkKIHsKICNpZiBVU0VfT1BFTlhSCi0gICAgaWYgKG1faW5zdGFuY2UgIT0gWFJfTlVMTF9IQU5E
TEUpCi0gICAgICAgIHhyRGVzdHJveUluc3RhbmNlKG1faW5zdGFuY2UpOworICAgIG1fd29ya1F1
ZXVlLT5kaXNwYXRjaChbdGhpc10geworICAgICAgICBpZiAobV9pbnN0YW5jZSAhPSBYUl9OVUxM
X0hBTkRMRSkKKyAgICAgICAgICAgIHhyRGVzdHJveUluc3RhbmNlKG1faW5zdGFuY2UpOworICAg
IH0pOwogI2VuZGlmCiB9CiAKQEAgLTIxMSw1MSArMjIyLDY1IEBAIEluc3RhbmNlOjpJbnN0YW5j
ZSgpCiB7CiB9CiAKLXZvaWQgSW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNl
Pj4mIGRldmljZXMpPiYmIGNhbGxiYWNrKQordm9pZCBJbnN0YW5jZTo6ZW51bWVyYXRlSW1tZXJz
aXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRGV2aWNlTGlzdCYgZGV2
aWNlcyk+JiYgY2FsbGJhY2spCiB7CiAjaWYgVVNFX09QRU5YUgotICAgIGF1dG8gY2FsbGJhY2tP
bkV4aXQgPSBtYWtlU2NvcGVFeGl0KFsmXSgpIHsKLSAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAg
ICB9KTsKLSAgICBpZiAobV9pbXBsLT54ckluc3RhbmNlKCkgPT0gWFJfTlVMTF9IQU5ETEUpIHsK
LSAgICAgICAgTE9HKFhSLCAiJXMgVW5hYmxlIHRvIGVudW1lcmF0ZSBYUiBkZXZpY2VzLiBObyBY
ckluc3RhbmNlIHByZXNlbnRcbiIsIF9fRlVOQ1RJT05fXyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgbV9pbXBsLT5xdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGNhbGxiYWNrT25FeGl0ID0g
bWFrZVNjb3BlRXhpdChbJl0oKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNh
bGxiYWNrKHsgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiAKLSAgICBhdXRvIHN5
c3RlbUdldEluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTeXN0ZW1HZXRJbmZvLCBYUl9UWVBFX1NZ
U1RFTV9HRVRfSU5GTz4oKTsKLSAgICBzeXN0ZW1HZXRJbmZvLmZvcm1GYWN0b3IgPSBYUl9GT1JN
X0ZBQ1RPUl9IRUFEX01PVU5URURfRElTUExBWTsKKyAgICAgICAgaWYgKG1faW1wbC0+eHJJbnN0
YW5jZSgpID09IFhSX05VTExfSEFORExFKSB7CisgICAgICAgICAgICBMT0coWFIsICIlcyBVbmFi
bGUgdG8gZW51bWVyYXRlIFhSIGRldmljZXMuIE5vIFhySW5zdGFuY2UgcHJlc2VudFxuIiwgX19G
VU5DVElPTl9fKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgWHJTeXN0
ZW1JZCBzeXN0ZW1JZDsKLSAgICBYclJlc3VsdCByZXN1bHQgPSB4ckdldFN5c3RlbShtX2ltcGwt
PnhySW5zdGFuY2UoKSwgJnN5c3RlbUdldEluZm8sICZzeXN0ZW1JZCk7Ci0gICAgUkVUVVJOX0lG
X0ZBSUxFRChyZXN1bHQsICJ4ckdldFN5c3RlbSIsIG1faW1wbC0+eHJJbnN0YW5jZSgpKTsKKyAg
ICAgICAgYXV0byBzeXN0ZW1HZXRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtR2V0SW5m
bywgWFJfVFlQRV9TWVNURU1fR0VUX0lORk8+KCk7CisgICAgICAgIHN5c3RlbUdldEluZm8uZm9y
bUZhY3RvciA9IFhSX0ZPUk1fRkFDVE9SX0hFQURfTU9VTlRFRF9ESVNQTEFZOwogCi0jaWYgIUxP
R19ESVNBQkxFRAotICAgIGF1dG8gc3lzdGVtUHJvcGVydGllcyA9IGNyZWF0ZVN0cnVjdHVyZTxY
clN5c3RlbVByb3BlcnRpZXMsIFhSX1RZUEVfU1lTVEVNX1BST1BFUlRJRVM+KCk7Ci0gICAgcmVz
dWx0ID0geHJHZXRTeXN0ZW1Qcm9wZXJ0aWVzKG1faW1wbC0+eHJJbnN0YW5jZSgpLCBzeXN0ZW1J
ZCwgJnN5c3RlbVByb3BlcnRpZXMpOwotICAgIGlmIChyZXN1bHQgPT0gWFJfU1VDQ0VTUykKLSAg
ICAgICAgTE9HKFhSLCAiRm91bmQgWFJTeXN0ZW0gJWx1OiBcIiVzXCIsIHZlbmRvciBJRCAlZFxu
Iiwgc3lzdGVtUHJvcGVydGllcy5zeXN0ZW1JZCwgc3lzdGVtUHJvcGVydGllcy5zeXN0ZW1OYW1l
LCBzeXN0ZW1Qcm9wZXJ0aWVzLnZlbmRvcklkKTsKLSNlbmRpZgorICAgICAgICBYclN5c3RlbUlk
IHN5c3RlbUlkOworICAgICAgICBYclJlc3VsdCByZXN1bHQgPSB4ckdldFN5c3RlbShtX2ltcGwt
PnhySW5zdGFuY2UoKSwgJnN5c3RlbUdldEluZm8sICZzeXN0ZW1JZCk7CisgICAgICAgIFJFVFVS
Tl9JRl9GQUlMRUQocmVzdWx0LCAieHJHZXRTeXN0ZW0iLCBtX2ltcGwtPnhySW5zdGFuY2UoKSk7
CisKKyAgICAgICAgY2FsbGJhY2tPbkV4aXQucmVsZWFzZSgpOworCisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHN5c3RlbUlkXSgp
IG11dGFibGUgeworICAgICAgICAgICAgbV9pbW1lcnNpdmVYUkRldmljZXMuY2xlYXIoKTsKKyAg
ICAgICAgICAgIG1faW1tZXJzaXZlWFJEZXZpY2VzID0gRGV2aWNlTGlzdDo6ZnJvbShtYWtlVW5p
cXVlUmVmPE9wZW5YUkRldmljZT4oc3lzdGVtSWQsIG1faW1wbC0+eHJJbnN0YW5jZSgpLCBtX2lt
cGwtPnF1ZXVlKCksIFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKG1faW1tZXJzaXZlWFJEZXZpY2VzKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0pKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiAKLSAgICBtX2ltbWVyc2l2ZVhSRGV2aWNl
cy5hcHBlbmQobWFrZVVuaXF1ZTxPcGVuWFJEZXZpY2U+KHN5c3RlbUlkLCBtX2ltcGwtPnhySW5z
dGFuY2UoKSkpOwotICAgIGNhbGxiYWNrKG1faW1tZXJzaXZlWFJEZXZpY2VzKTsKLSAgICBjYWxs
YmFja09uRXhpdC5yZWxlYXNlKCk7CiAjZW5kaWYgLy8gVVNFX09QRU5YUgogfQogCiAjaWYgVVNF
X09QRU5YUgotT3BlblhSRGV2aWNlOjpPcGVuWFJEZXZpY2UoWHJTeXN0ZW1JZCBpZCwgWHJJbnN0
YW5jZSBpbnN0YW5jZSkKK09wZW5YUkRldmljZTo6T3BlblhSRGV2aWNlKFhyU3lzdGVtSWQgaWQs
IFhySW5zdGFuY2UgaW5zdGFuY2UsIFdvcmtRdWV1ZSYgcXVldWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjYWxsYmFjaykKICAgICA6IG1fc3lzdGVtSWQoaWQpCiAgICAgLCBtX2luc3Rh
bmNlKGluc3RhbmNlKQorICAgICwgbV9xdWV1ZShxdWV1ZSkKIHsKLSAgICBhdXRvIHN5c3RlbVBy
b3BlcnRpZXMgPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTeXN0ZW1Qcm9wZXJ0aWVzLCBYUl9UWVBFX1NZ
U1RFTV9QUk9QRVJUSUVTPigpOwotICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyR2V0U3lzdGVtUHJv
cGVydGllcyhpbnN0YW5jZSwgbV9zeXN0ZW1JZCwgJnN5c3RlbVByb3BlcnRpZXMpOwotICAgIGlm
IChyZXN1bHQgPT0gWFJfU1VDQ0VTUykKLSAgICAgICAgbV9zdXBwb3J0c09yaWVudGF0aW9uVHJh
Y2tpbmcgPSBzeXN0ZW1Qcm9wZXJ0aWVzLnRyYWNraW5nUHJvcGVydGllcy5vcmllbnRhdGlvblRy
YWNraW5nID09IFhSX1RSVUU7Ci0gICAgZWxzZQotICAgICAgICBMT0coWFIsICJ4ckdldFN5c3Rl
bVByb3BlcnRpZXMoKTogZXJyb3IgJXNcbiIsIHJlc3VsdFRvU3RyaW5nKHJlc3VsdCwgbV9pbnN0
YW5jZSkudXRmOCgpLmRhdGEoKSk7CisgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpcywgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBzeXN0ZW1Q
cm9wZXJ0aWVzID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtUHJvcGVydGllcywgWFJfVFlQRV9T
WVNURU1fUFJPUEVSVElFUz4oKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB4ckdldFN5c3RlbVBy
b3BlcnRpZXMobV9pbnN0YW5jZSwgbV9zeXN0ZW1JZCwgJnN5c3RlbVByb3BlcnRpZXMpOworICAg
ICAgICBpZiAoWFJfU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgICAgICAgICBtX3N1cHBvcnRzT3Jp
ZW50YXRpb25UcmFja2luZyA9IHN5c3RlbVByb3BlcnRpZXMudHJhY2tpbmdQcm9wZXJ0aWVzLm9y
aWVudGF0aW9uVHJhY2tpbmcgPT0gWFJfVFJVRTsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIExPRyhYUiwgInhyR2V0U3lzdGVtUHJvcGVydGllcygpOiBlcnJv
ciAlc1xuIiwgcmVzdWx0VG9TdHJpbmcocmVzdWx0LCBtX2luc3RhbmNlKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgTE9HKFhSLCAiRm91bmQgWFJTeXN0ZW0gJWx1OiBcIiVzXCIsIHZlbmRvciBJ
RCAlZFxuIiwgc3lzdGVtUHJvcGVydGllcy5zeXN0ZW1JZCwgc3lzdGVtUHJvcGVydGllcy5zeXN0
ZW1OYW1lLCBzeXN0ZW1Qcm9wZXJ0aWVzLnZlbmRvcklkKTsKKyNlbmRpZgorCisgICAgICAgIGNv
bGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMoKTsKKyAgICAgICAgY29sbGVjdENvbmZpZ3VyYXRp
b25WaWV3cygpOwogCi0gICAgY29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2RlcygpOwotICAgIGNv
bGxlY3RDb25maWd1cmF0aW9uVmlld3MoKTsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsK
IH0KIAogRGV2aWNlOjpMaXN0T2ZFbmFibGVkRmVhdHVyZXMgT3BlblhSRGV2aWNlOjplbnVtZXJh
dGVSZWZlcmVuY2VTcGFjZXMoWHJTZXNzaW9uJiBzZXNzaW9uKSBjb25zdApAQCAtMjk5LDYgKzMy
NCw3IEBAIERldmljZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5YUkRldmljZTo6ZW51bWVy
YXRlUmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lvbiYKIAogdm9pZCBPcGVuWFJEZXZpY2U6OmNvbGxl
Y3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMoKQogeworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVu
dCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CiAgICAgdWludDMyX3Qgdmlld0NvbmZpZ3VyYXRp
b25Db3VudDsKICAgICBhdXRvIHJlc3VsdCA9IHhyRW51bWVyYXRlVmlld0NvbmZpZ3VyYXRpb25z
KG1faW5zdGFuY2UsIG1fc3lzdGVtSWQsIDAsICZ2aWV3Q29uZmlndXJhdGlvbkNvdW50LCBudWxs
cHRyKTsKICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlVmlld0NvbmZp
Z3VyYXRpb25zIiwgbV9pbnN0YW5jZSk7CkBAIC0zNDEsNiArMzY3LDcgQEAgdm9pZCBPcGVuWFJE
ZXZpY2U6OmNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMoKQogCiB2b2lkIE9wZW5YUkRldmlj
ZTo6Y29sbGVjdENvbmZpZ3VyYXRpb25WaWV3cygpCiB7CisgICAgQVNTRVJUKCZSdW5Mb29wOjpj
dXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsKICAgICBmb3IgKGF1dG8mIGNvbmZpZyA6
IG1fdmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzLnZhbHVlcygpKSB7CiAgICAgICAgIHVpbnQz
Ml90IHZpZXdDb3VudDsKICAgICAgICAgYXV0byBjb25maWdUeXBlID0gY29uZmlnLnZpZXdDb25m
aWd1cmF0aW9uVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29w
ZW54ci9QbGF0Zm9ybVhST3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVu
eHIvUGxhdGZvcm1YUk9wZW5YUi5oCmluZGV4IGMyODE1MDIzYTI3MmEzNDJmZjJhOWFjNDgyNTY5
ZDUwMzYxNTgzN2IuLmEzNTA0ZWM1OTMzYmNlY2M3ZjIxODM1MWVkNTFkOWQ5NGFjNDdlYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3Bl
blhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJP
cGVuWFIuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaWYgVVNFX09QRU5YUgogI2luY2x1ZGUgPG9w
ZW54ci9vcGVueHIuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBQ
bGF0Zm9ybVhSIHsKIApAQCAtNDMsOCArNDQsOSBAQCBuYW1lc3BhY2UgUGxhdGZvcm1YUiB7CiAv
LyB0aGUgWFJTeXN0ZW0gaXMgYmFzaWNhbGx5IHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIFdlYlhS
IEFQSSBhdmFpbGFibGUgdmlhIHRoZSBOYXZpZ2F0b3Igb2JqZWN0LgogY2xhc3MgT3BlblhSRGV2
aWNlIGZpbmFsIDogcHVibGljIERldmljZSB7CiBwdWJsaWM6Ci0gICAgT3BlblhSRGV2aWNlKFhy
U3lzdGVtSWQsIFhySW5zdGFuY2UpOworICAgIE9wZW5YUkRldmljZShYclN5c3RlbUlkLCBYcklu
c3RhbmNlLCBXb3JrUXVldWUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIFhy
U3lzdGVtSWQgeHJTeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KKwogcHJp
dmF0ZToKICAgICB2b2lkIGNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMoKTsKICAgICB2b2lk
IGNvbGxlY3RDb25maWd1cmF0aW9uVmlld3MoKTsKQEAgLTYxLDYgKzYzLDggQEAgcHJpdmF0ZToK
ICAgICBYclN5c3RlbUlkIG1fc3lzdGVtSWQ7CiAgICAgWHJJbnN0YW5jZSBtX2luc3RhbmNlOwog
ICAgIFhyU2Vzc2lvbiBtX3Nlc3Npb247CisKKyAgICBXb3JrUXVldWUmIG1fcXVldWU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhSCg==
</data>
<flag name="review"
          id="428309"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412120</attachid>
            <date>2020-10-22 12:02:05 -0700</date>
            <delta_ts>2020-10-27 03:16:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-217752-20201022210203.patch</filename>
            <type>text/plain</type>
            <size>16657</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4ODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E4NTk3NzVhYThiZjdj
ODYwYmU1ZTQ1ZjYzZWVjNjM1N2VhZjk0Zi4uODlkNzg5YzZmZmMzZmM5NzZlMTdlYWMzOTI3Yzk1
ODA0ZmUwNWM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTEwLTE1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
TW92ZSBPcGVuWFIgY2FsbHMgb2ZmIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIE9wZW5YUiBBUEkgaXMgc3luY2hyb25v
dXMuIE1hbnkgb2YgdGhlIGNhbGxzIGludm9sdmUgZGVhbGluZyB3aXRoIGV4dGVybmFsIGhhcmR3
YXJlIGRldmljZXMKKyAgICAgICAgbWVhbmluZyB0aGF0IHRoZXkgaGF2ZSB0byBwb3RlbnRpYWwg
dG8gYmxvY2sgdGhlIG1haW4gdGhyZWFkLiBUaGV5IHNob3VsZCBiZSBtb3ZlZCB0byBhIGRpZmZl
cmVudAorICAgICAgICB0aHJlYWQgaW4gb3JkZXIgdG8gYXZvaWQgdGhhdC4KKworICAgICAgICBU
aGUgUGxhdGZvcm1YUjo6SW5zdGFuY2UgY3JlYXRlcyBhIFdvcmtRdWV1ZSB3aGljaCBpcyBnb2lu
ZyB0byBiZSB1c2VkIGJ5IHRoZSBPcGVuWFIgZGV2aWNlcyB0bworICAgICAgICBpc3N1ZSBPcGVu
WFIgY2FsbHMgYW5kIGFsc28gc2VyaWFsaXplIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUg
ZXhlY3V0ZWQgc2VxdWVudGlhbGx5LiBUaGUKKyAgICAgICAgT3BlblhSRGV2aWNlJ3MgYXJlIGNy
ZWF0ZWQgaW4gdGhlIG1haW4gdGhyZWFkIGFueXdheSBiZWNhdXNlIHdlIG5lZWQgdG8gZ2V0IHdl
YWsgcG9pbnRlcnMgZnJvbQorICAgICAgICB0aGVtIGluIHRoZSBtYWluIHRocmVhZC4KKworICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCk6IFVzZSBhIHNj
b3BlZCBleGl0IHRvIGNhbGwgY2FsbGJhY2suIEFsc28KKyAgICAgICAgdGhlIFZlY3RvciBvZiBp
bW1lcnNpdmUgZGV2aWNlcyBpcyBub3cgYSBwb2ludGVyIHdoaWNoIG1pZ2h0IGJlIG51bGwsIG1l
YW5pbmcgbm8gYXZhaWxhYmxlIGRldmljZXMuCisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oOiBBZGRlZCBhICJ1c2luZyIgZm9yIHRoZSBWZWN0b3Igb2YgZGV2aWNlcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHA6CisgICAgICAgIChQ
bGF0Zm9ybVhSOjpJbnN0YW5jZTo6SW1wbDo6cXVldWUgY29uc3QpOiBOZXcgZ2V0dGVyIHJldHVy
bmluZyB0aGUgV29ya1F1ZXVlLgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkltcGw6
OmVudW1lcmF0ZUFwaUxheWVyUHJvcGVydGllcyBjb25zdCk6IEFkZGVkIGFuIEFTU0VSVC4KKyAg
ICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjpjaGVja0luc3RhbmNlRXh0ZW5zaW9u
UHJvcGVydGllcyBjb25zdCk6IERpdHRvLgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6
OkltcGw6OkltcGwpOiBDcmVhdGUgdGhlIE9wZW5YUiBXb3JrUXVldWUgYW5kIGRpc3BhdGNoIGEg
dGFzayB0byBwZXJmb3JtIHRoZQorICAgICAgICBPcGVuWFIgc3lzdGVtIGluaXRpYWxpemF0aW9u
IGluIHRoZSBxdWV1ZS4KKyAgICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjp+SW1w
bCk6IERlbGV0ZSB0aGUgaW5zdGFuY2UgaW4gdGhlIFdvcmtRdWV1ZQorICAgICAgICAoUGxhdGZv
cm1YUjo6SW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyk6IE1vdmVkIHRoZSBj
b2RlIHRvIGEgdGFzayBpbiB0aGUgV29ya1F1ZXVlLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3Bl
blhSRGV2aWNlOjpPcGVuWFJEZXZpY2UpOiBEaXR0by4gQWxzbyBhZGRlZCBhIGNvbXBsZXRpb24g
aGFuZGxlciB0byBub3RpZnkgdGhlIGNhbGxlcgorICAgICAgICBhYm91dCB0aGUgZW5kIG9mIHRo
ZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9w
ZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2Rlcyk6IEFkZGVkIGFuIEFTU0VS
VC4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6Y29sbGVjdENvbmZpZ3VyYXRp
b25WaWV3cyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmg6IEFkZGVkIFdvcmtRdWV1ZSBhdHRyaWJ1dGUgYW5kIHBhcmFtZXRlciB0byBkZXZp
Y2UgY29uc3RydWN0b3IuCisKIDIwMjAtMTAtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSB3b3JrbGV0IGRlc3RpbmF0aW9ucyBhbmQgYWxs
b3cgdG8gZmV0Y2ggbW9kdWxlcyB3aXRoIENPUlMgYmFzZWQgb24gZGVzdGluYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKaW5kZXggNWJhNDdlMmQ5
YTA2NTVlYWRhNDM1NWQ4MDdhYTI1MjVlNmRiNjM5Zi4uMTJhOWYyMWU3MjRhMTJkZGMxNWRhOWE4
NGMxYjgyZWI0ZDE3ZDRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlN5c3RlbS5jcHAKQEAgLTg4LDIwICs4OCwyMiBAQCB2b2lkIFdlYlhSU3lzdGVtOjplbnN1cmVJ
bW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmCiAg
ICAgcGxhdGZvcm1YUi5lbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaXNGaXJzdFhSRGV2aWNlc0VudW1lcmF0aW9uLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBpbW1lcnNpdmVYUkRldmljZXMpIG11dGFi
bGUgewogICAgICAgICBtX2ltbWVyc2l2ZVhSRGV2aWNlc0hhdmVCZWVuRW51bWVyYXRlZCA9IHRy
dWU7CiAKKyAgICAgICAgYXV0byBjYWxsYmFja09uRXhpdCA9IG1ha2VTY29wZUV4aXQoWyZdKCkg
eworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
ICAgIH0pOworCiAgICAgICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHIvI3NlbGVjdC1hbi1pbW1lcnNpdmUteHItZGV2aWNlCiAgICAgICAgIGF1dG8qIG9sZERldmlj
ZSA9IG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdldCgpOwogICAgICAgICBpZiAoaW1tZXJzaXZl
WFJEZXZpY2VzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbV9hY3RpdmVJbW1lcnNpdmVEZXZp
Y2UgPSBudWxscHRyOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICBpZiAoaW1tZXJzaXZlWFJEZXZpY2VzLnNpemUoKSA9PSAx
KSB7CiAgICAgICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmljZSA9IG1ha2VXZWFrUHRyKGlt
bWVyc2l2ZVhSRGV2aWNlcy5maXJzdCgpLmdldCgpKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9hY3RpdmVJ
bW1lcnNpdmVTZXNzaW9uICYmIG9sZERldmljZSAmJiBpbW1lcnNpdmVYUkRldmljZXMuZmluZE1h
dGNoaW5nKFsmXShhdXRvJiBlbnRyeSkgeyByZXR1cm4gZW50cnkuZ2V0KCkgPT0gb2xkRGV2aWNl
OyB9KSAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKG1fYWN0aXZlSW1tZXJzaXZlU2Vzc2lvbiAm
JiBvbGREZXZpY2UgJiYgaW1tZXJzaXZlWFJEZXZpY2VzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYg
ZW50cnkpIHsgcmV0dXJuICZlbnRyeSA9PSBvbGREZXZpY2U7IH0pICE9IG5vdEZvdW5kKQogICAg
ICAgICAgICAgQVNTRVJUKG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdldCgpID09IG9sZERldmlj
ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhIGJl
dHRlciBVQSBzZWxlY3Rpb24gbWVjaGFuaXNtIGlmIHJlcXVpcmVkLgpAQCAtMTA5LDE1ICsxMTEs
MTIgQEAgdm9pZCBXZWJYUlN5c3RlbTo6ZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVk
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJgogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlz
Rmlyc3RYUkRldmljZXNFbnVtZXJhdGlvbiB8fCBtX2FjdGl2ZUltbWVyc2l2ZURldmljZS5nZXQo
KSA9PSBvbGREZXZpY2UpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRTogNy4gU2h1dCBkb3duIGFueSBh
Y3RpdmUgWFJTZXNzaW9ucy4KICAgICAgICAgLy8gRklYTUU6IDguIFNldCB0aGUgWFIgY29tcGF0
aWJsZSBib29sZWFuIG9mIGFsbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIGluc3RhbmNlcyB0
byBmYWxzZS4KICAgICAgICAgLy8gRklYTUU6IDkuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGFuIGV2
ZW50IG5hbWVkIGRldmljZWNoYW5nZSBvbiB0aGUgY29udGV4dCBvYmplY3QuCi0KLSAgICAgICAg
Y2FsbGJhY2soKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0veHIvUGxhdGZvcm1YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oCmluZGV4IGE3MTYyM2FlNDMzNmRhYjA3NTM3ZmNlN2EyYzZjNGQwOWFhNDYzMjYuLmU1
NGUyNjI0ZjI1YzliNjgwNGI2N2JjZDkyOWVkNmY5Y2RhYjc3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKQEAgLTc1LDcgKzc1LDggQEAgY2xhc3MgSW5zdGFuY2Ug
ewogcHVibGljOgogICAgIHN0YXRpYyBJbnN0YW5jZSYgc2luZ2xldG9uKCk7CiAKLSAgICB2b2lk
IGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlPj4mKT4mJik7CisgICAgdXNpbmcgRGV2aWNl
TGlzdCA9IFZlY3RvcjxVbmlxdWVSZWY8RGV2aWNlPj47CisgICAgdm9pZCBlbnVtZXJhdGVJbW1l
cnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBEZXZpY2VMaXN0Jik+
JiYpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBMYXp5TmV2ZXJEZXN0cm95ZWQ8SW5zdGFuY2U+
OwpAQCAtODUsNyArODYsNyBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBJbXBsOwogICAgIFVuaXF1
ZVJlZjxJbXBsPiBtX2ltcGw7CiAKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldmljZT4+
IG1faW1tZXJzaXZlWFJEZXZpY2VzOworICAgIERldmljZUxpc3QgbV9pbW1lcnNpdmVYUkRldmlj
ZXM7CiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCmluZGV4IGY4NmIz
N2VhMjYzMGJkOTIyZGYyYWQ1N2ZhZTQ3NDhiMzQ5OTE5MTEuLjI5NGFkNTM1ZWNkNGUxOWZhZjM0
ZWNjNTUwMzRjMmI5Mzk4Yjg4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKQEAgLTczLDYgKzczLDcgQEAgcHVi
bGljOgogCiAjaWYgVVNFX09QRU5YUgogICAgIFhySW5zdGFuY2UgeHJJbnN0YW5jZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5zdGFuY2U7IH0KKyAgICBXb3JrUXVldWUmIHF1ZXVlKCkgY29uc3QgeyBy
ZXR1cm4gbV93b3JrUXVldWU7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtODEsMTIgKzgyLDE0
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjaGVja0luc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygp
IGNvbnN0OwogCiAgICAgWHJJbnN0YW5jZSBtX2luc3RhbmNlIHsgWFJfTlVMTF9IQU5ETEUgfTsK
KyAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICNlbmRpZiAvLyBVU0VfT1BFTlhSCiB9
OwogCiAjaWYgVVNFX09QRU5YUgogdm9pZCBJbnN0YW5jZTo6SW1wbDo6ZW51bWVyYXRlQXBpTGF5
ZXJQcm9wZXJ0aWVzKCkgY29uc3QKIHsKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9
PSAmbV93b3JrUXVldWUtPnJ1bkxvb3AoKSk7CiAgICAgdWludDMyX3QgcHJvcGVydHlDb3VudE91
dHB1dCB7IDAgfTsKICAgICBYclJlc3VsdCByZXN1bHQgPSB4ckVudW1lcmF0ZUFwaUxheWVyUHJv
cGVydGllcygwLCAmcHJvcGVydHlDb3VudE91dHB1dCwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lG
X0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZUFwaUxheWVyUHJvcGVydGllcygpIiwgbV9pbnN0
YW5jZSk7CkBAIC0xMTksNiArMTIyLDcgQEAgc3RhdGljIGJvb2wgaXNFeHRlbnNpb25TdXBwb3J0
ZWQoY29uc3QgY2hhciogZXh0ZW5zaW9uTmFtZSwgVmVjdG9yPFhyRXh0ZW5zaW9uUHIKIAogYm9v
bCBJbnN0YW5jZTo6SW1wbDo6Y2hlY2tJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMoKSBjb25z
dAogeworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3dvcmtRdWV1ZS0+cnVu
TG9vcCgpKTsKICAgICB1aW50MzJfdCBwcm9wZXJ0eUNvdW50T3V0cHV0IHsgMCB9OwogICAgIFhy
UmVzdWx0IHJlc3VsdCA9IHhyRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKG51
bGxwdHIsIDAsICZwcm9wZXJ0eUNvdW50T3V0cHV0LCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZf
RkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIiwg
bV9pbnN0YW5jZSwgZmFsc2UpOwpAQCAtMTU0LDQ0ICsxNTgsNTEgQEAgYm9vbCBJbnN0YW5jZTo6
SW1wbDo6Y2hlY2tJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMoKSBjb25zdAogI2VuZGlmIC8v
IFVTRV9PUEVOWFIKIAogSW5zdGFuY2U6OkltcGw6OkltcGwoKQorI2lmIFVTRV9PUEVOWFIKKyAg
ICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJPcGVuWFIgcXVldWUiKSkKKyNlbmRp
ZgogewogI2lmIFVTRV9PUEVOWFIKLSAgICBMT0coWFIsICJPcGVuWFI6IGluaXRpYWxpemluZ1xu
Iik7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzXSgpIHsKKyAgICAgICAgTE9HKFhS
LCAiT3BlblhSOiBpbml0aWFsaXppbmdcbiIpOwogCi0gICAgZW51bWVyYXRlQXBpTGF5ZXJQcm9w
ZXJ0aWVzKCk7CisgICAgICAgIGVudW1lcmF0ZUFwaUxheWVyUHJvcGVydGllcygpOwogCi0gICAg
aWYgKCFjaGVja0luc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygpKQotICAgICAgICByZXR1cm47
CisgICAgICAgIGlmICghY2hlY2tJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc19hcHBsaWNhdGlv
bk5hbWUgPSAiV2ViWFIgKFdlYktpdCkiOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qg
c19hcHBsaWNhdGlvblZlcnNpb24gPSAxOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHNfYXBw
bGljYXRpb25OYW1lID0gIldlYlhSIChXZWJLaXQpIjsKLSAgICBzdGF0aWMgY29uc3QgdWludDMy
X3Qgc19hcHBsaWNhdGlvblZlcnNpb24gPSAxOwotCi0gICAgY29uc3QgY2hhciogY29uc3QgZW5h
YmxlZEV4dGVuc2lvbnNbXSA9IHsKLSAgICAgICAgWFJfTU5EX0hFQURMRVNTX0VYVEVOU0lPTl9O
QU1FLAotICAgIH07Ci0KLSAgICBhdXRvIGNyZWF0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJJ
bnN0YW5jZUNyZWF0ZUluZm8sIFhSX1RZUEVfSU5TVEFOQ0VfQ1JFQVRFX0lORk8+KCk7Ci0gICAg
Y3JlYXRlSW5mby5jcmVhdGVGbGFncyA9IDA7Ci0gICAgc3RkOjptZW1jcHkoY3JlYXRlSW5mby5h
cHBsaWNhdGlvbkluZm8uYXBwbGljYXRpb25OYW1lLCBzX2FwcGxpY2F0aW9uTmFtZSwgWFJfTUFY
X0FQUExJQ0FUSU9OX05BTUVfU0laRSk7Ci0gICAgY3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8u
YXBpVmVyc2lvbiA9IFhSX0NVUlJFTlRfQVBJX1ZFUlNJT047Ci0gICAgY3JlYXRlSW5mby5hcHBs
aWNhdGlvbkluZm8uYXBwbGljYXRpb25WZXJzaW9uID0gc19hcHBsaWNhdGlvblZlcnNpb247Ci0g
ICAgY3JlYXRlSW5mby5lbmFibGVkQXBpTGF5ZXJDb3VudCA9IDA7Ci0gICAgY3JlYXRlSW5mby5l
bmFibGVkRXh0ZW5zaW9uQ291bnQgPSBXVEZfQVJSQVlfTEVOR1RIKGVuYWJsZWRFeHRlbnNpb25z
KTsKLSAgICBjcmVhdGVJbmZvLmVuYWJsZWRFeHRlbnNpb25OYW1lcyA9IGVuYWJsZWRFeHRlbnNp
b25zOwotCi0gICAgWHJJbnN0YW5jZSBpbnN0YW5jZTsKLSAgICBYclJlc3VsdCByZXN1bHQgPSB4
ckNyZWF0ZUluc3RhbmNlKCZjcmVhdGVJbmZvLCAmaW5zdGFuY2UpOwotICAgIFJFVFVSTl9JRl9G
QUlMRUQocmVzdWx0LCAieHJDcmVhdGVJbnN0YW5jZSgpIiwgbV9pbnN0YW5jZSk7Ci0gICAgbV9p
bnN0YW5jZSA9IGluc3RhbmNlOwotICAgIExPRyhYUiwgInhyQ3JlYXRlSW5zdGFuY2UoKTogdXNp
bmcgaW5zdGFuY2UgJXBcbiIsIG1faW5zdGFuY2UpOworICAgICAgICBjb25zdCBjaGFyKiBjb25z
dCBlbmFibGVkRXh0ZW5zaW9uc1tdID0geworICAgICAgICAgICAgWFJfTU5EX0hFQURMRVNTX0VY
VEVOU0lPTl9OQU1FLAorICAgICAgICB9OworCisgICAgICAgIGF1dG8gY3JlYXRlSW5mbyA9IGNy
ZWF0ZVN0cnVjdHVyZTxYckluc3RhbmNlQ3JlYXRlSW5mbywgWFJfVFlQRV9JTlNUQU5DRV9DUkVB
VEVfSU5GTz4oKTsKKyAgICAgICAgY3JlYXRlSW5mby5jcmVhdGVGbGFncyA9IDA7CisgICAgICAg
IHN0ZDo6bWVtY3B5KGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwcGxpY2F0aW9uTmFtZSwg
c19hcHBsaWNhdGlvbk5hbWUsIFhSX01BWF9BUFBMSUNBVElPTl9OQU1FX1NJWkUpOworICAgICAg
ICBjcmVhdGVJbmZvLmFwcGxpY2F0aW9uSW5mby5hcGlWZXJzaW9uID0gWFJfQ1VSUkVOVF9BUElf
VkVSU0lPTjsKKyAgICAgICAgY3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8uYXBwbGljYXRpb25W
ZXJzaW9uID0gc19hcHBsaWNhdGlvblZlcnNpb247CisgICAgICAgIGNyZWF0ZUluZm8uZW5hYmxl
ZEFwaUxheWVyQ291bnQgPSAwOworICAgICAgICBjcmVhdGVJbmZvLmVuYWJsZWRFeHRlbnNpb25D
b3VudCA9IFdURl9BUlJBWV9MRU5HVEgoZW5hYmxlZEV4dGVuc2lvbnMpOworICAgICAgICBjcmVh
dGVJbmZvLmVuYWJsZWRFeHRlbnNpb25OYW1lcyA9IGVuYWJsZWRFeHRlbnNpb25zOworCisgICAg
ICAgIFhySW5zdGFuY2UgaW5zdGFuY2U7CisgICAgICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyQ3Jl
YXRlSW5zdGFuY2UoJmNyZWF0ZUluZm8sICZpbnN0YW5jZSk7CisgICAgICAgIFJFVFVSTl9JRl9G
QUlMRUQocmVzdWx0LCAieHJDcmVhdGVJbnN0YW5jZSgpIiwgbV9pbnN0YW5jZSk7CisgICAgICAg
IG1faW5zdGFuY2UgPSBpbnN0YW5jZTsKKyAgICAgICAgTE9HKFhSLCAieHJDcmVhdGVJbnN0YW5j
ZSgpOiB1c2luZyBpbnN0YW5jZSAlcFxuIiwgbV9pbnN0YW5jZSk7CisgICAgfSk7CiAjZW5kaWYg
Ly8gVVNFX09QRU5YUgogfQogCiBJbnN0YW5jZTo6SW1wbDo6fkltcGwoKQogewogI2lmIFVTRV9P
UEVOWFIKLSAgICBpZiAobV9pbnN0YW5jZSAhPSBYUl9OVUxMX0hBTkRMRSkKLSAgICAgICAgeHJE
ZXN0cm95SW5zdGFuY2UobV9pbnN0YW5jZSk7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0
aGlzXSB7CisgICAgICAgIGlmIChtX2luc3RhbmNlICE9IFhSX05VTExfSEFORExFKQorICAgICAg
ICAgICAgeHJEZXN0cm95SW5zdGFuY2UobV9pbnN0YW5jZSk7CisgICAgfSk7CiAjZW5kaWYKIH0K
IApAQCAtMjExLDUxICsyMjIsNjQgQEAgSW5zdGFuY2U6Okluc3RhbmNlKCkKIHsKIH0KIAotdm9p
ZCBJbnN0YW5jZTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2U+PiYgZGV2aWNlcyk+JiYg
Y2FsbGJhY2spCit2b2lkIEluc3RhbmNlOjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBEZXZpY2VMaXN0JiBkZXZpY2VzKT4mJiBjYWxsYmFj
aykKIHsKICNpZiBVU0VfT1BFTlhSCi0gICAgYXV0byBjYWxsYmFja09uRXhpdCA9IG1ha2VTY29w
ZUV4aXQoWyZdKCkgewotICAgICAgICBjYWxsYmFjayh7IH0pOwotICAgIH0pOwotICAgIGlmICht
X2ltcGwtPnhySW5zdGFuY2UoKSA9PSBYUl9OVUxMX0hBTkRMRSkgewotICAgICAgICBMT0coWFIs
ICIlcyBVbmFibGUgdG8gZW51bWVyYXRlIFhSIGRldmljZXMuIE5vIFhySW5zdGFuY2UgcHJlc2Vu
dFxuIiwgX19GVU5DVElPTl9fKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX2ltcGwt
PnF1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CisgICAgICAgIGF1dG8gY2FsbGJhY2tPbkV4aXQgPSBtYWtlU2NvcGVFeGl0KFsm
XSgpIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKIAotICAgIGF1dG8gc3lzdGVtR2V0SW5mbyA9IGNy
ZWF0ZVN0cnVjdHVyZTxYclN5c3RlbUdldEluZm8sIFhSX1RZUEVfU1lTVEVNX0dFVF9JTkZPPigp
OwotICAgIHN5c3RlbUdldEluZm8uZm9ybUZhY3RvciA9IFhSX0ZPUk1fRkFDVE9SX0hFQURfTU9V
TlRFRF9ESVNQTEFZOworICAgICAgICBpZiAobV9pbXBsLT54ckluc3RhbmNlKCkgPT0gWFJfTlVM
TF9IQU5ETEUpIHsKKyAgICAgICAgICAgIExPRyhYUiwgIiVzIFVuYWJsZSB0byBlbnVtZXJhdGUg
WFIgZGV2aWNlcy4gTm8gWHJJbnN0YW5jZSBwcmVzZW50XG4iLCBfX0ZVTkNUSU9OX18pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBYclN5c3RlbUlkIHN5c3RlbUlkOwot
ICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyR2V0U3lzdGVtKG1faW1wbC0+eHJJbnN0YW5jZSgpLCAm
c3lzdGVtR2V0SW5mbywgJnN5c3RlbUlkKTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwg
InhyR2V0U3lzdGVtIiwgbV9pbXBsLT54ckluc3RhbmNlKCkpOworICAgICAgICBhdXRvIHN5c3Rl
bUdldEluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTeXN0ZW1HZXRJbmZvLCBYUl9UWVBFX1NZU1RF
TV9HRVRfSU5GTz4oKTsKKyAgICAgICAgc3lzdGVtR2V0SW5mby5mb3JtRmFjdG9yID0gWFJfRk9S
TV9GQUNUT1JfSEVBRF9NT1VOVEVEX0RJU1BMQVk7CiAKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAg
YXV0byBzeXN0ZW1Qcm9wZXJ0aWVzID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtUHJvcGVydGll
cywgWFJfVFlQRV9TWVNURU1fUFJPUEVSVElFUz4oKTsKLSAgICByZXN1bHQgPSB4ckdldFN5c3Rl
bVByb3BlcnRpZXMobV9pbXBsLT54ckluc3RhbmNlKCksIHN5c3RlbUlkLCAmc3lzdGVtUHJvcGVy
dGllcyk7Ci0gICAgaWYgKHJlc3VsdCA9PSBYUl9TVUNDRVNTKQotICAgICAgICBMT0coWFIsICJG
b3VuZCBYUlN5c3RlbSAlbHU6IFwiJXNcIiwgdmVuZG9yIElEICVkXG4iLCBzeXN0ZW1Qcm9wZXJ0
aWVzLnN5c3RlbUlkLCBzeXN0ZW1Qcm9wZXJ0aWVzLnN5c3RlbU5hbWUsIHN5c3RlbVByb3BlcnRp
ZXMudmVuZG9ySWQpOwotI2VuZGlmCisgICAgICAgIFhyU3lzdGVtSWQgc3lzdGVtSWQ7CisgICAg
ICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyR2V0U3lzdGVtKG1faW1wbC0+eHJJbnN0YW5jZSgpLCAm
c3lzdGVtR2V0SW5mbywgJnN5c3RlbUlkKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1
bHQsICJ4ckdldFN5c3RlbSIsIG1faW1wbC0+eHJJbnN0YW5jZSgpKTsKKworICAgICAgICBjYWxs
YmFja09uRXhpdC5yZWxlYXNlKCk7CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc3lzdGVtSWRdKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBtX2ltbWVyc2l2ZVhSRGV2aWNlcyA9IERldmljZUxpc3Q6OmZyb20obWFrZVVuaXF1
ZVJlZjxPcGVuWFJEZXZpY2U+KHN5c3RlbUlkLCBtX2ltcGwtPnhySW5zdGFuY2UoKSwgbV9pbXBs
LT5xdWV1ZSgpLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKG1faW1tZXJzaXZlWFJEZXZpY2VzKTsKKyAgICAgICAgICAgIH0pKTsKKyAg
ICAgICAgfSk7CisgICAgfSk7CiAKLSAgICBtX2ltbWVyc2l2ZVhSRGV2aWNlcy5hcHBlbmQobWFr
ZVVuaXF1ZTxPcGVuWFJEZXZpY2U+KHN5c3RlbUlkLCBtX2ltcGwtPnhySW5zdGFuY2UoKSkpOwot
ICAgIGNhbGxiYWNrKG1faW1tZXJzaXZlWFJEZXZpY2VzKTsKLSAgICBjYWxsYmFja09uRXhpdC5y
ZWxlYXNlKCk7CiAjZW5kaWYgLy8gVVNFX09QRU5YUgogfQogCiAjaWYgVVNFX09QRU5YUgotT3Bl
blhSRGV2aWNlOjpPcGVuWFJEZXZpY2UoWHJTeXN0ZW1JZCBpZCwgWHJJbnN0YW5jZSBpbnN0YW5j
ZSkKK09wZW5YUkRldmljZTo6T3BlblhSRGV2aWNlKFhyU3lzdGVtSWQgaWQsIFhySW5zdGFuY2Ug
aW5zdGFuY2UsIFdvcmtRdWV1ZSYgcXVldWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
YWxsYmFjaykKICAgICA6IG1fc3lzdGVtSWQoaWQpCiAgICAgLCBtX2luc3RhbmNlKGluc3RhbmNl
KQorICAgICwgbV9xdWV1ZShxdWV1ZSkKIHsKLSAgICBhdXRvIHN5c3RlbVByb3BlcnRpZXMgPSBj
cmVhdGVTdHJ1Y3R1cmU8WHJTeXN0ZW1Qcm9wZXJ0aWVzLCBYUl9UWVBFX1NZU1RFTV9QUk9QRVJU
SUVTPigpOwotICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyR2V0U3lzdGVtUHJvcGVydGllcyhpbnN0
YW5jZSwgbV9zeXN0ZW1JZCwgJnN5c3RlbVByb3BlcnRpZXMpOwotICAgIGlmIChyZXN1bHQgPT0g
WFJfU1VDQ0VTUykKLSAgICAgICAgbV9zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPSBzeXN0
ZW1Qcm9wZXJ0aWVzLnRyYWNraW5nUHJvcGVydGllcy5vcmllbnRhdGlvblRyYWNraW5nID09IFhS
X1RSVUU7Ci0gICAgZWxzZQotICAgICAgICBMT0coWFIsICJ4ckdldFN5c3RlbVByb3BlcnRpZXMo
KTogZXJyb3IgJXNcbiIsIHJlc3VsdFRvU3RyaW5nKHJlc3VsdCwgbV9pbnN0YW5jZSkudXRmOCgp
LmRhdGEoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3F1ZXVlLmRpc3Bh
dGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAg
ICAgICBhdXRvIHN5c3RlbVByb3BlcnRpZXMgPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTeXN0ZW1Qcm9w
ZXJ0aWVzLCBYUl9UWVBFX1NZU1RFTV9QUk9QRVJUSUVTPigpOworICAgICAgICBhdXRvIHJlc3Vs
dCA9IHhyR2V0U3lzdGVtUHJvcGVydGllcyhtX2luc3RhbmNlLCBtX3N5c3RlbUlkLCAmc3lzdGVt
UHJvcGVydGllcyk7CisgICAgICAgIGlmIChYUl9TVUNDRUVERUQocmVzdWx0KSkKKyAgICAgICAg
ICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nID0gc3lzdGVtUHJvcGVydGllcy50cmFj
a2luZ1Byb3BlcnRpZXMub3JpZW50YXRpb25UcmFja2luZyA9PSBYUl9UUlVFOworI2lmICFMT0df
RElTQUJMRUQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgTE9HKFhSLCAieHJHZXRTeXN0ZW1Q
cm9wZXJ0aWVzKCk6IGVycm9yICVzXG4iLCByZXN1bHRUb1N0cmluZyhyZXN1bHQsIG1faW5zdGFu
Y2UpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coWFIsICJGb3VuZCBYUlN5c3RlbSAlbHU6
IFwiJXNcIiwgdmVuZG9yIElEICVkXG4iLCBzeXN0ZW1Qcm9wZXJ0aWVzLnN5c3RlbUlkLCBzeXN0
ZW1Qcm9wZXJ0aWVzLnN5c3RlbU5hbWUsIHN5c3RlbVByb3BlcnRpZXMudmVuZG9ySWQpOworI2Vu
ZGlmCisKKyAgICAgICAgY29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2RlcygpOworICAgICAgICBj
b2xsZWN0Q29uZmlndXJhdGlvblZpZXdzKCk7CiAKLSAgICBjb2xsZWN0U3VwcG9ydGVkU2Vzc2lv
bk1vZGVzKCk7Ci0gICAgY29sbGVjdENvbmZpZ3VyYXRpb25WaWV3cygpOworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9KTsKIH0KIAogRGV2aWNlOjpM
aXN0T2ZFbmFibGVkRmVhdHVyZXMgT3BlblhSRGV2aWNlOjplbnVtZXJhdGVSZWZlcmVuY2VTcGFj
ZXMoWHJTZXNzaW9uJiBzZXNzaW9uKSBjb25zdApAQCAtMjk5LDYgKzMyMyw3IEBAIERldmljZTo6
TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5YUkRldmljZTo6ZW51bWVyYXRlUmVmZXJlbmNlU3Bh
Y2VzKFhyU2Vzc2lvbiYKIAogdm9pZCBPcGVuWFJEZXZpY2U6OmNvbGxlY3RTdXBwb3J0ZWRTZXNz
aW9uTW9kZXMoKQogeworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVl
LnJ1bkxvb3AoKSk7CiAgICAgdWludDMyX3Qgdmlld0NvbmZpZ3VyYXRpb25Db3VudDsKICAgICBh
dXRvIHJlc3VsdCA9IHhyRW51bWVyYXRlVmlld0NvbmZpZ3VyYXRpb25zKG1faW5zdGFuY2UsIG1f
c3lzdGVtSWQsIDAsICZ2aWV3Q29uZmlndXJhdGlvbkNvdW50LCBudWxscHRyKTsKICAgICBSRVRV
Uk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlVmlld0NvbmZpZ3VyYXRpb25zIiwgbV9p
bnN0YW5jZSk7CkBAIC0zNDEsNiArMzY2LDcgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OmNvbGxlY3RT
dXBwb3J0ZWRTZXNzaW9uTW9kZXMoKQogCiB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdENvbmZp
Z3VyYXRpb25WaWV3cygpCiB7CisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1f
cXVldWUucnVuTG9vcCgpKTsKICAgICBmb3IgKGF1dG8mIGNvbmZpZyA6IG1fdmlld0NvbmZpZ3Vy
YXRpb25Qcm9wZXJ0aWVzLnZhbHVlcygpKSB7CiAgICAgICAgIHVpbnQzMl90IHZpZXdDb3VudDsK
ICAgICAgICAgYXV0byBjb25maWdUeXBlID0gY29uZmlnLnZpZXdDb25maWd1cmF0aW9uVHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9w
ZW5YUi5oCmluZGV4IGMyODE1MDIzYTI3MmEzNDJmZjJhOWFjNDgyNTY5ZDUwMzYxNTgzN2IuLmEz
NTA0ZWM1OTMzYmNlY2M3ZjIxODM1MWVkNTFkOWQ5NGFjNDdlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaApAQCAtMjYs
NiArMjYsNyBAQAogCiAjaWYgVVNFX09QRU5YUgogI2luY2x1ZGUgPG9wZW54ci9vcGVueHIuaD4K
KyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBQbGF0Zm9ybVhSIHsKIApA
QCAtNDMsOCArNDQsOSBAQCBuYW1lc3BhY2UgUGxhdGZvcm1YUiB7CiAvLyB0aGUgWFJTeXN0ZW0g
aXMgYmFzaWNhbGx5IHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIFdlYlhSIEFQSSBhdmFpbGFibGUg
dmlhIHRoZSBOYXZpZ2F0b3Igb2JqZWN0LgogY2xhc3MgT3BlblhSRGV2aWNlIGZpbmFsIDogcHVi
bGljIERldmljZSB7CiBwdWJsaWM6Ci0gICAgT3BlblhSRGV2aWNlKFhyU3lzdGVtSWQsIFhySW5z
dGFuY2UpOworICAgIE9wZW5YUkRldmljZShYclN5c3RlbUlkLCBYckluc3RhbmNlLCBXb3JrUXVl
dWUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIFhyU3lzdGVtSWQgeHJTeXN0
ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KKwogcHJpdmF0ZToKICAgICB2b2lk
IGNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMoKTsKICAgICB2b2lkIGNvbGxlY3RDb25maWd1
cmF0aW9uVmlld3MoKTsKQEAgLTYxLDYgKzYzLDggQEAgcHJpdmF0ZToKICAgICBYclN5c3RlbUlk
IG1fc3lzdGVtSWQ7CiAgICAgWHJJbnN0YW5jZSBtX2luc3RhbmNlOwogICAgIFhyU2Vzc2lvbiBt
X3Nlc3Npb247CisKKyAgICBXb3JrUXVldWUmIG1fcXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBQbGF0Zm9ybVhSCg==
</data>
<flag name="review"
          id="428501"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>