<?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>43258</bug_id>
          
          <creation_ts>2010-07-30 09:56:56 -0700</creation_ts>
          <short_desc>Implement chromium WebDeviceOrientationClient wrapper and have WebViewImpl get it from WebViewClient.</short_desc>
          <delta_ts>2010-08-10 03:14:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41616</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>jorlow</cc>
    
    <cc>satish</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>258238</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-30 09:56:56 -0700</bug_when>
    <thetext>WebViewImpl must provide Page with a DeviceOrientationClient. It should do this by asking WebViewClient for a WebDeviceOrientationClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258242</commentid>
    <comment_count>1</comment_count>
      <attachid>63069</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-30 09:57:44 -0700</bug_when>
    <thetext>Created attachment 63069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258294</commentid>
    <comment_count>2</comment_count>
      <attachid>63069</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-30 10:58:24 -0700</bug_when>
    <thetext>Comment on attachment 63069
Patch

WebKit/chromium/public/WebDeviceOrientationClientMock.h:41
 +      // WEBKIT_API setOrientation(const WebDeviceOrientation&amp;);
These should be virtual thus WEBKIT_API is not needed.  All of these will also be in the WebDeviceOrientationClient.h (and be virtual).  The methods in the cpp should just call m_private-&gt;method_name(...)

WebKit/chromium/public/WebDeviceOrientationClientMock.h:28
 +  #include &quot;WebCommon.h&quot;
not needed

WebKit/chromium/public/WebDeviceOrientationClientMock.h:48
 +      WebCore::DeviceOrientationClient* m_private;
Use the private ptr class instead.

WebKit/chromium/public/WebDeviceOrientationClientMock.h:37
 +      WEBKIT_API WebDeviceOrientationClientMock();
Define these inline.  Have them both call initialize() and have it set itself to a new mock object in the src file.  Have the destructor call reset() and define it as {} in the src file.

WebDeviceOrientationCLient.cpp doesn&apos;t need to exist.  All the methods in the .h file should be implemented as calling WEBKIT_ASSERT_NOT_REACHED().

WebKit/chromium/src/WebViewImpl.cpp:266
 +      , m_webDeviceOrientationClient(createWebDeviceOrientationClient(client))
m_webDeviceOrientationClient(webViewClient-&gt;createWebDeviceOrientationClient())

WebKit/chromium/src/WebViewImpl.cpp:291
 +          pageClients.deviceOrientationClient = m_webDeviceOrientationClient-&gt;client();
not needed

WebKit/chromium/src/WebViewImpl.cpp:2211
 +  WebDeviceOrientationClient* WebViewImpl::createWebDeviceOrientationClient(WebViewClient* webViewClient)
not needed




You&apos;re almost there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258754</commentid>
    <comment_count>3</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-02 02:15:27 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 63069 [details])
&gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:41
&gt;  +      // WEBKIT_API setOrientation(const WebDeviceOrientation&amp;);
&gt; These should be virtual thus WEBKIT_API is not needed.  All of these will also be in the WebDeviceOrientationClient.h (and be virtual).  The methods in the cpp should just call m_private-&gt;method_name(...)
But it&apos;s only the mock client that has a setOrientation function, so I don&apos;t see why it should be virtual?

&gt; 
&gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:28
&gt;  +  #include &quot;WebCommon.h&quot;
&gt; not needed
OK.

&gt; 
&gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:48
&gt;  +      WebCore::DeviceOrientationClient* m_private;
&gt; Use the private ptr class instead.
DeviceOrientationClient is not reference counted. As I understand, WebPrivatePtr is for reference counted types?

&gt; 
&gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:37
&gt;  +      WEBKIT_API WebDeviceOrientationClientMock();
&gt; Define these inline.  Have them both call initialize() and have it set itself to a new mock object in the src file.
Will do.

&gt; Have the destructor call reset() and define it as {} in the src file.
Wait; both call reset() and define as {}?

&gt; 
&gt; WebDeviceOrientationCLient.cpp doesn&apos;t need to exist.  All the methods in the .h file should be implemented as calling WEBKIT_ASSERT_NOT_REACHED().
But isn&apos;t it a good defensive strategy to provide a dummy implementation for when WebViewClient fails to provide a WebDeviceOrientationClient?

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:266
&gt;  +      , m_webDeviceOrientationClient(createWebDeviceOrientationClient(client))
&gt; m_webDeviceOrientationClient(webViewClient-&gt;createWebDeviceOrientationClient())
What if webViewClient is NULL? As Satish pointed out, it sometimes is.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:291
&gt;  +          pageClients.deviceOrientationClient = m_webDeviceOrientationClient-&gt;client();
&gt; not needed
&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:2211
&gt;  +  WebDeviceOrientationClient* WebViewImpl::createWebDeviceOrientationClient(WebViewClient* webViewClient)
&gt; not needed
&gt; 
&gt; 
&gt; 
&gt; 
&gt; You&apos;re almost there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258757</commentid>
    <comment_count>4</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-02 02:21:53 -0700</bug_when>
    <thetext>&gt; &gt; Have the destructor call reset() and define it as {} in the src file.
&gt; Wait; both call reset() and define as {}?

Sorry, I should have read that one more time. You obviously mean have the destructor call reset, and define *reset* as {}.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258825</commentid>
    <comment_count>5</comment_count>
      <attachid>63207</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-02 06:06:37 -0700</bug_when>
    <thetext>Created attachment 63207
Patch

Moving the dummy implementation to its own class.

Hiding constructors and providing create() methods. Otherwise, the compilation unit constructing the object may not have WEBKIT_IMPLEMENTATION set, won&apos;t see the virtual method and thus not set up the vtable for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259331</commentid>
    <comment_count>6</comment_count>
      <attachid>63312</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-03 02:51:09 -0700</bug_when>
    <thetext>Created attachment 63312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259346</commentid>
    <comment_count>7</comment_count>
      <attachid>63312</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-03 03:23:55 -0700</bug_when>
    <thetext>Comment on attachment 63312
Patch

WebKit/chromium/src/WebDeviceOrientationClientDummy.cpp:37
 +      DeviceOrientationClientDummy() : orientation(WebCore::DeviceOrientation::create()) { }
usually we split onto 2 lines right before the :

WebKit/chromium/public/WebDeviceOrientation.h:32
 +  #include &lt;wtf/PassRefPtr.h&gt;
You can just do &quot;namespace WTF { template &lt;typename T&gt; class PassRefPtr; }&quot;

WebKit/chromium/public/WebDeviceOrientation.h:43
 +          initialize(canProvideAlpha, alpha, canProvideBeta, beta, canProvideGamma, gamma);
Darin, in the past you&apos;ve been pretty adamant that constructors be inline.  Do you think that doing it this way is better than the alternative?  I&apos;m not so sure.

WebKit/chromium/public/WebDeviceOrientation.h:48
 +      operator PassRefPtr&lt;WebCore::DeviceOrientation&gt;() const;
add the other 2 operators we have in just about every other class like this

WebKit/chromium/public/WebDeviceOrientationClient.h:50
 +      WebDeviceOrientationClient() { }
This works??  I&apos;m pretty sure this will need to be public and virtual.

WebKit/chromium/src/WebViewImpl.cpp:267
 +      , m_webDeviceOrientationClient(WebRuntimeFeatures::isDeviceOrientationEnabled() ? (client ? client-&gt;createWebDeviceOrientationClient() : WebDeviceOrientationClientDummy::create()) : 0)
What is the dummy for?  I don&apos;t think client can ever be non-null.  And, if it can be, then we should just assume the device orientation client is null too then.

I don&apos;t see any point to the dummy.  I&apos;d rather not add logic to WebKit to handle the client and DOclient being null unless there&apos;s already precedent.  But even if so, I think that&apos;s better than having some dummy client.

Another option, if all else fails, you could just allocate the mock.


hmmm...lets just talk in person</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259359</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-03 04:05:09 -0700</bug_when>
    <thetext>Talked to hans some about this.  I think we&apos;re on the same page now.  I think right now he&apos;s leaning towards just putting the two DO callbacks directly into the WebViewClient and then having the DRT version of it call back into WebKit mock which will simply proxy calls to the WebCore mock.  (And then put a fixme in that if it grows beyond just 2 methods, it should be pulled out into its own client.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259456</commentid>
    <comment_count>9</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-03 08:12:06 -0700</bug_when>
    <thetext>Fixing style issues first, will then provide a code example of how this would tie in with the orientation plumbing as a whole to make this easier to discuss.

(In reply to comment #7)
&gt; (From update of attachment 63312 [details])
&gt; WebKit/chromium/src/WebDeviceOrientationClientDummy.cpp:37
&gt;  +      DeviceOrientationClientDummy() : orientation(WebCore::DeviceOrientation::create()) { }
&gt; usually we split onto 2 lines right before the :
Done.

&gt; 
&gt; WebKit/chromium/public/WebDeviceOrientation.h:32
&gt;  +  #include &lt;wtf/PassRefPtr.h&gt;
&gt; You can just do &quot;namespace WTF { template &lt;typename T&gt; class PassRefPtr; }&quot;
Done.

&gt; 
&gt; WebKit/chromium/public/WebDeviceOrientation.h:43
&gt;  +          initialize(canProvideAlpha, alpha, canProvideBeta, beta, canProvideGamma, gamma);
&gt; Darin, in the past you&apos;ve been pretty adamant that constructors be inline.  Do you think that doing it this way is better than the alternative?  I&apos;m not so sure.
Happy to change this if you decide it needn&apos;t be inline.

&gt; 
&gt; WebKit/chromium/public/WebDeviceOrientation.h:48
&gt;  +      operator PassRefPtr&lt;WebCore::DeviceOrientation&gt;() const;
&gt; add the other 2 operators we have in just about every other class like this
Done. (I assume you mean assignment operator and copy ctor.)

&gt; 
&gt; WebKit/chromium/public/WebDeviceOrientationClient.h:50
&gt;  +      WebDeviceOrientationClient() { }
&gt; This works??  I&apos;m pretty sure this will need to be public and virtual.
AFAIK, constructors can&apos;t be virtual. Why would it need to be public? It&apos;s only called by subclass constructors (and create(), when that is implemented).

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:267
&gt;  +      , m_webDeviceOrientationClient(WebRuntimeFeatures::isDeviceOrientationEnabled() ? (client ? client-&gt;createWebDeviceOrientationClient() : WebDeviceOrientationClientDummy::create()) : 0)
&gt; What is the dummy for?  I don&apos;t think client can ever be non-null.  And, if it can be, then we should just assume the device orientation client is null too then.
client will be null during some UI tests. This check is analogue to Satish&apos;s check in Bug 43240. Either we handle it, or we require it to be non-NULL.

We can&apos;t let device orientation be NULL when the feature is enabled, as Page will then crash upon construction.

&gt; I don&apos;t see any point to the dummy.  I&apos;d rather not add logic to WebKit to handle the client and DOclient being null unless there&apos;s already precedent.  But even if so, I think that&apos;s better than having some dummy client.
&gt; 
&gt; Another option, if all else fails, you could just allocate the mock.

Will scrap the dummy and use the mock as fall-back for now. Willing to change later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259487</commentid>
    <comment_count>10</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-03 08:52:19 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; WebKit/chromium/public/WebDeviceOrientationClient.h:50
&gt; &gt;  +      WebDeviceOrientationClient() { }
&gt; &gt; This works??  I&apos;m pretty sure this will need to be public and virtual.
&gt; AFAIK, constructors can&apos;t be virtual. Why would it need to be public? It&apos;s only called by subclass constructors (and create(), when that is implemented).

Oops, thought that was a destructor.

&gt; 
&gt; &gt; 
&gt; &gt; WebKit/chromium/src/WebViewImpl.cpp:267
&gt; &gt;  +      , m_webDeviceOrientationClient(WebRuntimeFeatures::isDeviceOrientationEnabled() ? (client ? client-&gt;createWebDeviceOrientationClient() : WebDeviceOrientationClientDummy::create()) : 0)
&gt; &gt; What is the dummy for?  I don&apos;t think client can ever be non-null.  And, if it can be, then we should just assume the device orientation client is null too then.
&gt; client will be null during some UI tests. This check is analogue to Satish&apos;s check in Bug 43240. Either we handle it, or we require it to be non-NULL.

Can we make that not be true easily?  Or can those tests not set the flag?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259944</commentid>
    <comment_count>11</comment_count>
      <attachid>63432</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-04 02:58:42 -0700</bug_when>
    <thetext>Created attachment 63432
WebDeviceOrientationClient plus plumbing

Attaching patch showing how this would tie in with the plumbing.

The interesting classes are WebView, WebViewImpl, WebViewClient, and DeviceOrientationClientImpl.


WebViewClient.h: createWebDeviceOrientationClient(). Called by the WebViewImpl constructor. When implemented by RenderView, this will return a WebDeviceOrientationClientImpl instance. When implemented by DRT, it will return a WebDeviceOrientationClientMock.

WebViewImpl.h: It owns a WebDeviceOrientationClient. This will either be the mock or the real implementation.

WebView.h: didChangeDeviceOrientation(). This is where orientation data is passed from Chromium to the WebKit side. This is used both for real data and mock data. WebViewImpl which implments this does not care whether it&apos;s mock or real data, it just forwards it to its WebDeviceOrientationClient.

WebViewClient.h: {start,stop}DeviceOrientationUpdates(). These are called by the DeviceOrientationClientImpl.

Note that communication with the DeviceOrientationClientMock is one-way: it receives mock orientation updates, but it doesn&apos;t call into the embedder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259961</commentid>
    <comment_count>12</comment_count>
      <attachid>63432</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-04 04:04:26 -0700</bug_when>
    <thetext>Comment on attachment 63432
WebDeviceOrientationClient plus plumbing

WebKit/chromium/public/WebViewClient.h:94
 +      virtual WebDeviceOrientationClient* createWebDeviceOrientationClient() { return WebDeviceOrientationClientMock::create(); }
Remove.  Just call WebDeviceOrientationClientMock::create directly.

WebKit/chromium/src/WebViewImpl.h:526
 +      OwnPtr&lt;WebDeviceOrientationClient&gt; m_webDeviceOrientationClient;
delete

WebKit/chromium/src/WebViewImpl.h:79
 +  class WebDeviceOrientationClient;
delete

WebKit/chromium/src/WebViewImpl.cpp:268
 +      , m_webDeviceOrientationClient(WebRuntimeFeatures::isDeviceOrientationEnabled() ? (client ? client-&gt;createWebDeviceOrientationClient() : WebDeviceOrientationClientMock::create()) : 0)
delete

WebKit/chromium/src/WebViewImpl.cpp:292
 +      if (m_webDeviceOrientationClient)
this is all obsolete

WebKit/chromium/src/WebViewImpl.cpp:2216
 +          m_webDeviceOrientationClient-&gt;updateOrientation(o);
The WebViewImpl should be calling some web core method directly to tell it of the update.


I believe the only new files you should have in this patch are WebDeviceOrientationClientMock.cpp/h and DeviceOrientationClientProxy (which will have a pointer to the WebViewClient and pass stuff on to that).  If you need anything more I suggest you run it by me first.

I&apos;d highly suggest you get all of this compiling/working together on a local machine before posting another patch.  It&apos;ll help clarify the design, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259962</commentid>
    <comment_count>13</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-04 04:05:28 -0700</bug_when>
    <thetext>Another option is that you might want to try doing the full scale design we talked about, because it should be much more clear.  You can then scale it down if you&apos;d like.  The design of the scaled down version will be much more obvious if you understand the scaled up version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260648</commentid>
    <comment_count>14</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-05 09:09:32 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Another option is that you might want to try doing the full scale design we talked about, because it should be much more clear.  You can then scale it down if you&apos;d like.  The design of the scaled down version will be much more obvious if you understand the scaled up version.

Uploading patch with the full scale design we discussed. There are probably some rough corners as there is a lot of new code, but hopefully the overall design is more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260649</commentid>
    <comment_count>15</comment_count>
      <attachid>63598</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-05 09:10:05 -0700</bug_when>
    <thetext>Created attachment 63598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261227</commentid>
    <comment_count>16</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-06 06:56:53 -0700</bug_when>
    <thetext>Turns out the comment in WebViewImpl about Page taking ownership of the various clients it gets passed in the PageClients structure is not true.

Uploading new patch where WebViewImpl takes ownership of the DeviceOrientationClientProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261228</commentid>
    <comment_count>17</comment_count>
      <attachid>63717</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-06 06:57:31 -0700</bug_when>
    <thetext>Created attachment 63717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261264</commentid>
    <comment_count>18</comment_count>
      <attachid>63717</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-06 08:11:32 -0700</bug_when>
    <thetext>Comment on attachment 63717
Patch

WebKit/chromium/src/WebViewImpl.cpp:290
 +          m_deviceOrientationClientProxy.set(new DeviceOrientationClientProxy(client ? client-&gt;deviceOrientationClient() : 0));
See if you can clean up this logic a bit.  It&apos;s kinda weird how we have this matrix of possibilities between whether the flag is on and whether there&apos;s a client.  

WebKit/chromium/src/WebDeviceOrientationController.cpp:31
 +  #include &quot;PassRefPtr.h&quot;
&lt;wtf/PassRefPtr.h&gt;

WebKit/chromium/src/WebDeviceOrientationController.cpp:36
 +  void WebDeviceOrientationController::didChangeDeviceOrientation(const WebDeviceOrientation&amp; o)
use a better variable name

WebKit/chromium/src/WebDeviceOrientationClientMock.cpp:68
 +      delete m_clientMock;
and set it to 0...and first do an if to see if it&apos;s already 0

and maybe you should just make a class much like PrivatePtr...make that PrivateRefPtr and then add PrivateOwnPtr?  Just a thought.

WebKit/chromium/src/WebDeviceOrientationClientMock.cpp:63
 +      m_clientMock = new WebCore::DeviceOrientationClientMock();
Hmmm...i&apos;m tempted to have this call reset() but I guess the constructor doesn&apos;t set it to 0 before calling it...so that&apos;s not possible.  I guess leave it as is.

WebKit/chromium/src/WebDeviceOrientationClientMock.cpp:53
 +      return lastOrientation ? new WebDeviceOrientation(lastOrientation) : 0;
Hmmm....this should probably just pass back the object, not a pointer to it.  But the problem is that there might not be a last orientation.  Hmmmm....maybe you shoudl add an invalid/null state to the WebDO class?  This is what we&apos;ve done for serializedScriptValue and a couple others where a null refPtr has semantic meaning.  Not sure about this, but I think it&apos;s better than passing around pointers when we don&apos;t absolutely have to.

WebKit/chromium/src/WebDeviceOrientation.cpp:49
 +      m_canProvideGamma = o-&gt;canProvideGamma();
what about the actual gamma value?

WebKit/chromium/src/WebDeviceOrientation.cpp:39
 +            m_canProvideGamma(o-&gt;canProvideGamma())
ditto

WebKit/chromium/src/DeviceOrientationClientProxy.cpp:32
 +  #include &quot;RefPtr.h&quot;
ditto ditto ditto

WebKit/chromium/src/DeviceOrientationClientProxy.cpp:44
 +      if (!m_client)
add fixme about getting rid of these null checks once it&apos;s enabled by default

WebKit/chromium/src/DeviceOrientationClientProxy.cpp:68
 +      OwnPtr&lt;WebDeviceOrientation&gt; lastWebOrientation(m_client-&gt;lastOrientation());
Hmmm...this probably needs to be a refPtr in WebCore.

WebKit/chromium/src/DeviceOrientationClientProxy.cpp:72
 +      m_lastOrientation = *lastWebOrientation;
Why are we caching it here?  I guess because it was an own ptr?  Well, we should def make it ref.

WebKit/chromium/public/WebDeviceOrientation.h:39
 +              : m_canProvideAlpha(canProvideAlpha),
too many spaces in

WebKit/chromium/public/WebDeviceOrientation.h:46
 +      }
You probably should add methods to this for getting the values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262082</commentid>
    <comment_count>19</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-09 04:28:23 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 63717 [details])
&gt; WebKit/chromium/src/WebViewImpl.cpp:290
&gt;  +          m_deviceOrientationClientProxy.set(new DeviceOrientationClientProxy(client ? client-&gt;deviceOrientationClient() : 0));
&gt; See if you can clean up this logic a bit.  It&apos;s kinda weird how we have this matrix of possibilities between whether the flag is on and whether there&apos;s a client.  
Done. Always initializing m_deviceOrientationClientProxy, but only passing it on to Page is the runtime flag is set.

&gt; 
&gt; WebKit/chromium/src/WebDeviceOrientationController.cpp:31
&gt;  +  #include &quot;PassRefPtr.h&quot;
&gt; &lt;wtf/PassRefPtr.h&gt;
Done.

&gt; 
&gt; WebKit/chromium/src/WebDeviceOrientationController.cpp:36
&gt;  +  void WebDeviceOrientationController::didChangeDeviceOrientation(const WebDeviceOrientation&amp; o)
&gt; use a better variable name
Done.

&gt; 
&gt; WebKit/chromium/src/WebDeviceOrientationClientMock.cpp:68
&gt;  +      delete m_clientMock;
&gt; and set it to 0...and first do an if to see if it&apos;s already 0
Setting it to 0 after delete. Not sure why I&apos;d need an if before delete? delete 0 just does nothing.

&gt; 
&gt; and maybe you should just make a class much like PrivatePtr...make that PrivateRefPtr and then add PrivateOwnPtr?  Just a thought.
Filed Bug 43709 to do that, but I don&apos;t think this patch needs to block on it?

&gt; 
&gt; WebKit/chromium/src/WebDeviceOrientationClientMock.cpp:63
&gt;  +      m_clientMock = new WebCore::DeviceOrientationClientMock();
&gt; Hmmm...i&apos;m tempted to have this call reset() but I guess the constructor doesn&apos;t set it to 0 before calling it...so that&apos;s not possible.  I guess leave it as is.
OK.

&gt; 
&gt; WebKit/chromium/src/WebDeviceOrientationClientMock.cpp:53
&gt;  +      return lastOrientation ? new WebDeviceOrientation(lastOrientation) : 0;
&gt; Hmmm....this should probably just pass back the object, not a pointer to it.  But the problem is that there might not be a last orientation.  Hmmmm....maybe you shoudl add an invalid/null state to the WebDO class?  This is what we&apos;ve done for serializedScriptValue and a couple others where a null refPtr has semantic meaning.  Not sure about this, but I think it&apos;s better than passing around pointers when we don&apos;t absolutely have to.
Adding null state to WebDeviceOrientation and having WebDOClient::lastOrientation() return an object rather than a pointer.

&gt; 
&gt; WebKit/chromium/src/WebDeviceOrientation.cpp:49
&gt;  +      m_canProvideGamma = o-&gt;canProvideGamma();
&gt; what about the actual gamma value?
Oops. Fixed.

&gt; 
&gt; WebKit/chromium/src/WebDeviceOrientation.cpp:39
&gt;  +            m_canProvideGamma(o-&gt;canProvideGamma())
&gt; ditto
Fixed.

&gt; 
&gt; WebKit/chromium/src/DeviceOrientationClientProxy.cpp:32
&gt;  +  #include &quot;RefPtr.h&quot;
&gt; ditto ditto ditto
Done.

&gt; 
&gt; WebKit/chromium/src/DeviceOrientationClientProxy.cpp:44
&gt;  +      if (!m_client)
&gt; add fixme about getting rid of these null checks once it&apos;s enabled by default
Done.

&gt; 
&gt; WebKit/chromium/src/DeviceOrientationClientProxy.cpp:68
&gt;  +      OwnPtr&lt;WebDeviceOrientation&gt; lastWebOrientation(m_client-&gt;lastOrientation());
&gt; Hmmm...this probably needs to be a refPtr in WebCore.
This is obsolete now that WebDOClient::lastOrientation() returns an object instead of a pointer.

&gt; 
&gt; WebKit/chromium/src/DeviceOrientationClientProxy.cpp:72
&gt;  +      m_lastOrientation = *lastWebOrientation;
&gt; Why are we caching it here?  I guess because it was an own ptr?  Well, we should def make it ref.
That&apos;s an unpleasant detail. DeviceOrientation::lastOrientation() is expected to return a raw pointer to a DeviceOrientation object, which is reference counted.
The problem is we create the DeviceOrientation object from the WebDeviceOrientation object, and if we don&apos;t hold a reference to it ourselves, it will be destructed before our caller gets the result and puts it in a RefPtr. That&apos;s why we cache it: to hold an extra reference to it.

If this is too ugly, we should talk to Steve about changing DeviceOrientation::lastOrientation() to return a PassRefPtr.

&gt; 
&gt; WebKit/chromium/public/WebDeviceOrientation.h:39
&gt;  +              : m_canProvideAlpha(canProvideAlpha),
&gt; too many spaces in
Fixed.

&gt; 
&gt; WebKit/chromium/public/WebDeviceOrientation.h:46
&gt;  +      }
&gt; You probably should add methods to this for getting the values.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262083</commentid>
    <comment_count>20</comment_count>
      <attachid>63884</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-09 04:28:53 -0700</bug_when>
    <thetext>Created attachment 63884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262133</commentid>
    <comment_count>21</comment_count>
      <attachid>63884</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-09 07:21:35 -0700</bug_when>
    <thetext>Comment on attachment 63884
Patch

WebKit/chromium/public/WebDeviceOrientation.h:49
 +      static WebDeviceOrientation nullOrientation() { return WebDeviceOrientation(); }
Since you&apos;re using (), C++ guarantees us that everything is 0&apos;ed out?

WebKit/chromium/public/WebDeviceOrientationClientMock.h:41
 +      void setController(WebDeviceOrientationController*);
Either virtual of WEBKIT_API

WebKit/chromium/public/WebDeviceOrientationClientMock.h:49
 +      void initialize();
WEBKIT_API

WebKit/chromium/public/WebDeviceOrientationClientMock.h:52
 +      WebCore::DeviceOrientationClientMock* m_clientMock;
I can&apos;t remember if this is allowed or not.  We might prefer a void* and casting...see if you can find other examples (like in PrivatePtr).

WebKit/chromium/src/WebDeviceOrientation.cpp:70
 +          return PassRefPtr&lt;WebCore::DeviceOrientation&gt;(0);
Can&apos;t you just say &quot;return 0;&quot; ?

WebKit/chromium/src/WebDeviceOrientationClientMock.cpp:53
 +      return WebDeviceOrientation(lastOrientation);
Why store it to the temp variable...doesn&apos;t seem to give you much....and why do you need to cast it explicitly either?  It should just work.

WebKit/chromium/src/WebViewImpl.cpp:290
 +      if (WebRuntimeFeatures::isDeviceOrientationEnabled())
Can&apos;t you do this either way?  Worst case, it gets set to null which is what would have happened anyway.


Minor comments so r=me, but you&apos;re not a committer so you&apos;ll need to post another rev.  Let me know if you only address stuff I mention so I can avoid yet another review of the whole thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262151</commentid>
    <comment_count>22</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-09 08:43:38 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 63884 [details])
&gt; WebKit/chromium/public/WebDeviceOrientation.h:49
&gt;  +      static WebDeviceOrientation nullOrientation() { return WebDeviceOrientation(); }
&gt; Since you&apos;re using (), C++ guarantees us that everything is 0&apos;ed out?
No, WebDeviceOrientation() is the private constructor that sets m_isNull=true and leaves the rest uninitialized. I figured the values of the other members doesn&apos;t matter when m_isNull is true.

&gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:41
&gt;  +      void setController(WebDeviceOrientationController*);
&gt; Either virtual of WEBKIT_API
It is virtual since it&apos;s inherited from WebDeviceOrientationClient.

&gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:49
&gt;  +      void initialize();
&gt; WEBKIT_API
Done. (Also for reset()).

&gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:52
&gt;  +      WebCore::DeviceOrientationClientMock* m_clientMock;
&gt; I can&apos;t remember if this is allowed or not.  We might prefer a void* and casting...see if you can find other examples (like in PrivatePtr).
I can&apos;t find any classes in WebKit/chromium/public that have a void* member, and WebPrivatePtr&lt;T&gt; uses a T* member so I hope it&apos;s ok.

&gt; WebKit/chromium/src/WebDeviceOrientation.cpp:70
&gt;  +          return PassRefPtr&lt;WebCore::DeviceOrientation&gt;(0);
&gt; Can&apos;t you just say &quot;return 0;&quot; ?
Done.

&gt; WebKit/chromium/src/WebDeviceOrientationClientMock.cpp:53
&gt;  +      return WebDeviceOrientation(lastOrientation);
&gt; Why store it to the temp variable...doesn&apos;t seem to give you much....and why do you need to cast it explicitly either?  It should just work.
Removing the temp variable.
I need to use the WebDeviceOrientation constructor explicitly. C++ will not see that it first needs to convert DeviceOrientation* to PassRefPtr&lt;DeviceOrientation&gt; which it can then use to construct a WebDeviceOrientation.

&gt; 
&gt; WebKit/chromium/src/WebViewImpl.cpp:290
&gt;  +      if (WebRuntimeFeatures::isDeviceOrientationEnabled())
&gt; Can&apos;t you do this either way?  Worst case, it gets set to null which is what would have happened anyway.
You&apos;re right. Done.

&gt; Minor comments so r=me, but you&apos;re not a committer so you&apos;ll need to post another rev.  Let me know if you only address stuff I mention so I can avoid yet another review of the whole thing.


Uploading rebased patch addressing the stuff above (and nothing else).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262152</commentid>
    <comment_count>23</comment_count>
      <attachid>63896</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-09 08:44:19 -0700</bug_when>
    <thetext>Created attachment 63896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262159</commentid>
    <comment_count>24</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-09 08:53:10 -0700</bug_when>
    <thetext>WebKit/chromium/src/WebViewImpl.h:79
 +  class WebDeviceOrientationClient;
Is this required, as I don&apos;t see it used anywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262160</commentid>
    <comment_count>25</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-09 08:54:07 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (From update of attachment 63884 [details] [details])
&gt; &gt; WebKit/chromium/public/WebDeviceOrientation.h:49
&gt; &gt;  +      static WebDeviceOrientation nullOrientation() { return WebDeviceOrientation(); }
&gt; &gt; Since you&apos;re using (), C++ guarantees us that everything is 0&apos;ed out?
&gt; No, WebDeviceOrientation() is the private constructor that sets m_isNull=true and leaves the rest uninitialized. I figured the values of the other members doesn&apos;t matter when m_isNull is true.

Lets zero them out.  Or else at least add asserts that we&apos;re not null for every other accessor.
 
&gt; &gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:41
&gt; &gt;  +      void setController(WebDeviceOrientationController*);
&gt; &gt; Either virtual of WEBKIT_API
&gt; It is virtual since it&apos;s inherited from WebDeviceOrientationClient.

That makes ((WebDeviceOrientationClient *)new WebDeviceOrientationClientMock)-&gt;setController() work across the DLL barrier, but I believe not new WebDeviceOrientationClientMock-&gt;setController().
 
&gt; &gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:49
&gt; &gt;  +      void initialize();
&gt; &gt; WEBKIT_API
&gt; Done. (Also for reset()).
&gt; 
&gt; &gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:52
&gt; &gt;  +      WebCore::DeviceOrientationClientMock* m_clientMock;
&gt; &gt; I can&apos;t remember if this is allowed or not.  We might prefer a void* and casting...see if you can find other examples (like in PrivatePtr).
&gt; I can&apos;t find any classes in WebKit/chromium/public that have a void* member, and WebPrivatePtr&lt;T&gt; uses a T* member so I hope it&apos;s ok.

k</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262182</commentid>
    <comment_count>26</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-09 09:29:40 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; WebKit/chromium/src/WebViewImpl.h:79
&gt;  +  class WebDeviceOrientationClient;
&gt; Is this required, as I don&apos;t see it used anywhere?
Thanks Satish, that was a left-over from a previous version. Removed.

(In reply to comment #25)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (From update of attachment 63884 [details] [details] [details])
&gt; &gt; &gt; WebKit/chromium/public/WebDeviceOrientation.h:49
&gt; &gt; &gt;  +      static WebDeviceOrientation nullOrientation() { return WebDeviceOrientation(); }
&gt; &gt; &gt; Since you&apos;re using (), C++ guarantees us that everything is 0&apos;ed out?
&gt; &gt; No, WebDeviceOrientation() is the private constructor that sets m_isNull=true and leaves the rest uninitialized. I figured the values of the other members doesn&apos;t matter when m_isNull is true.
&gt; 
&gt; Lets zero them out.  Or else at least add asserts that we&apos;re not null for every other accessor.
Zeroing them out.

&gt; 
&gt; &gt; &gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:41
&gt; &gt; &gt;  +      void setController(WebDeviceOrientationController*);
&gt; &gt; &gt; Either virtual of WEBKIT_API
&gt; &gt; It is virtual since it&apos;s inherited from WebDeviceOrientationClient.
&gt; 
&gt; That makes ((WebDeviceOrientationClient *)new WebDeviceOrientationClientMock)-&gt;setController() work across the DLL barrier, but I believe not new WebDeviceOrientationClientMock-&gt;setController().
Oh, I didn&apos;t realize that. Fixing.

&gt; 
&gt; &gt; &gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:49
&gt; &gt; &gt;  +      void initialize();
&gt; &gt; &gt; WEBKIT_API
&gt; &gt; Done. (Also for reset()).
&gt; &gt; 
&gt; &gt; &gt; WebKit/chromium/public/WebDeviceOrientationClientMock.h:52
&gt; &gt; &gt;  +      WebCore::DeviceOrientationClientMock* m_clientMock;
&gt; &gt; &gt; I can&apos;t remember if this is allowed or not.  We might prefer a void* and casting...see if you can find other examples (like in PrivatePtr).
&gt; &gt; I can&apos;t find any classes in WebKit/chromium/public that have a void* member, and WebPrivatePtr&lt;T&gt; uses a T* member so I hope it&apos;s ok.
&gt; 
&gt; k


Uploading new patch addressing the comments above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262185</commentid>
    <comment_count>27</comment_count>
      <attachid>63904</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-09 09:30:08 -0700</bug_when>
    <thetext>Created attachment 63904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262565</commentid>
    <comment_count>28</comment_count>
      <attachid>63904</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-10 02:11:17 -0700</bug_when>
    <thetext>Comment on attachment 63904
Patch

rubber stamp = me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262576</commentid>
    <comment_count>29</comment_count>
      <attachid>63904</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-10 02:32:34 -0700</bug_when>
    <thetext>Comment on attachment 63904
Patch

Rejecting patch 63904 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Jeremy Orlow&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
y.h
patching file WebKit/chromium/src/WebDeviceOrientation.cpp
patching file WebKit/chromium/src/WebDeviceOrientationClientMock.cpp
patching file WebKit/chromium/src/WebDeviceOrientationController.cpp
patching file WebKit/chromium/src/WebViewImpl.cpp
Hunk #2 FAILED at 178.
Hunk #3 succeeded at 266 (offset -1 lines).
Hunk #4 succeeded at 289 (offset -1 lines).
1 out of 4 hunks FAILED -- saving rejects to file WebKit/chromium/src/WebViewImpl.cpp.rej
patching file WebKit/chromium/src/WebViewImpl.h

Full output: http://queues.webkit.org/results/3722020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262589</commentid>
    <comment_count>30</comment_count>
      <attachid>63904</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-10 03:14:06 -0700</bug_when>
    <thetext>Comment on attachment 63904
Patch

Clearing flags on attachment: 63904

Committed r65063: &lt;http://trac.webkit.org/changeset/65063&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262590</commentid>
    <comment_count>31</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-10 03:14:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63069</attachid>
            <date>2010-07-30 09:57:44 -0700</date>
            <delta_ts>2010-08-02 06:06:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WebDeviceOrientationClient.patch</filename>
            <type>text/plain</type>
            <size>14511</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKaW5kZXggZWM5NmE1MC4uZTVlYzUwNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE0
NCw2ICsxNDQsOCBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVu
ZENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzTWVzc2FnZURh
dGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3Bv
cnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jay5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRvY3VtZW50LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRG9jdW1lbnRUeXBlLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViRHJhZ0RhdGEuaCcsCkBAIC0zODMsNiArMzg1LDggQEAKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RGV2VG9vbHNGcm9udGVuZEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldlRv
b2xzRnJvbnRlbmRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnQuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRG9jdW1lbnQuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRvY3VtZW50VHlwZS5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViRHJhZ0RhdGEuY3BwJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4yNmRkZDIwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudF9oCisjZGVmaW5lIFdlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQ7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQ+IHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfQVBJIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50KCk7CisgICAgdmlydHVhbCB+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQoKTsKKwor
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHZpcnR1YWwgV2ViQ29yZTo6RGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQqIG1fcHJpdmF0ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRf
aApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2suaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM5N2Nm
YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIFdlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja19oCisjZGVmaW5lIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9ja19oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50OyB9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sgOiBwdWJsaWMgV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQgeworcHVibGljOgorICAgIFdFQktJVF9BUEkgV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrKCk7CisgICAgfldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOworCisgICAg
Ly8gV2UnbGwgbmVlZCB0aGlzIGZvciB0ZXN0aW5nIGV2ZW50dWFsbHkuLi4KKyAgICAvLyBXRUJL
SVRfQVBJIHNldE9yaWVudGF0aW9uKGNvbnN0IFdlYkRldmljZU9yaWVudGF0aW9uJik7CisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50KiBjbGllbnQoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdl
YkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
a19oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDQ2MjhjMmYuLjU5
ZmQ1NjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC00NCw2ICs0
NCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dDsKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OwogY2xhc3MgV2ViRHJhZ0RhdGE7
CiBjbGFzcyBXZWJFbGVtZW50OwogY2xhc3MgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uOwpAQCAt
ODksNiArOTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgc2Vzc2lvbiBzdG9yYWdlIG5h
bWVzcGFjZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgV2ViVmlldy4KICAgICB2aXJ0dWFs
IFdlYlN0b3JhZ2VOYW1lc3BhY2UqIGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2ln
bmVkIHF1b3RhKSB7IHJldHVybiAwOyB9CiAKKyAgICAvLyBDcmVhdGUgYSBXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudAorICAgIHZpcnR1YWwgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGNy
ZWF0ZVdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgeyByZXR1cm4gMDsgfQorCiAgICAgLy8g
TWlzYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKICAgICAvLyBBIG5ldyBtZXNzYWdlIHdhcyBhZGRlZCB0byB0aGUgY29u
c29sZS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk0ODNhMQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKworI2luY2x1ZGUgIkRldmlj
ZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKyNp
bmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJSZWZQdHIu
aCIKKworbmFtZXNwYWNlIHsKK2NsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkgOiBw
dWJsaWMgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQgeworcHVibGljOgorICAgIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkoKSA6IG9yaWVudGF0aW9uKFdlYkNvcmU6OkRldmlj
ZU9yaWVudGF0aW9uOjpjcmVhdGUoKSkgeyB9CisKKyAgICB2b2lkIHNldENvbnRyb2xsZXIoV2Vi
Q29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKikgeyB9CisKKyAgICB2b2lkIHN0YXJ0
VXBkYXRpbmcoKSB7IH0KKworICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgeyB9CisKKyAgICBXZWJD
b3JlOjpEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBvcmllbnRhdGlvbi5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
UmVmUHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uPiBvcmllbnRhdGlvbjsKK307Cit9IC8v
IG5hbWVzcGFjZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgOiBtX3ByaXZhdGUobmV3IERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkoKSkgeyB9CisKK1dlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50Ojp+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7IGRlbGV0ZSBtX3ByaXZhdGU7IH0K
KworV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQqIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50OjpjbGllbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGU7Cit9CisKK307
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jYzQ1NWI0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrLmgiCisKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorI2lu
Y2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpXZWJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2soKSA6IG1fcHJpdmF0ZShuZXcgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrKCkpICB7IH0KKworV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjp+V2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkgeyBkZWxldGUgbV9wcml2YXRlOyB9CisKK1dl
YkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2s6OmNsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDY5
MWYxNDMuLjRkNDNkMDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC05MSw2
ICs5MSw3IEBACiAjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUg
IldlYkRldlRvb2xzQWdlbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudElt
cGwuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUg
IldlYkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2Vi
SW1hZ2UuaCIKQEAgLTE3Nyw5ICsxNzgsNiBAQCBzdGF0aWMgY29uc3QgUG9wdXBDb250YWluZXJT
ZXR0aW5ncyBhdXRvRmlsbFBvcHVwU2V0dGluZ3MgPSB7CiAKIFdlYlZpZXcqIFdlYlZpZXc6OmNy
ZWF0ZShXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRv
b2xzQ2xpZW50KQogewotICAgIC8vIEtlZXAgcnVudGltZSBmbGFnIGZvciBkZXZpY2Ugb3JpZW50
YXRpb24gdHVybmVkIG9mZiB1bnRpbCBpdCdzIGltcGxlbWVudGVkLgotICAgIFdlYlJ1bnRpbWVG
ZWF0dXJlczo6ZW5hYmxlRGV2aWNlT3JpZW50YXRpb24oZmFsc2UpOwotCiAgICAgLy8gUGFzcyB0
aGUgV2ViVmlld0ltcGwncyBzZWxmLXJlZmVyZW5jZSB0byB0aGUgY2FsbGVyLgogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgV2ViVmlld0ltcGwoY2xpZW50LCBkZXZUb29sc0NsaWVudCkpLmxlYWtS
ZWYoKTsKIH0KQEAgLTI2NSw2ICsyNjMsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2Vi
Vmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KGNsaWVudCkK
ICNlbmRpZgorICAgICwgbV93ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudChjcmVhdGVXZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudChjbGllbnQpKQogICAgICwgbV9nbGVzMkNvbnRleHQoMCkKIHsK
ICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRvZXMgdGhlIHNhbWUgdGhpbmcsIGV4Y2Vw
dCB0aGV5IGNhbGwgdGhlCkBAIC0yODgsNiArMjg3LDggQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJ
bXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9v
bHMKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgIHBhZ2VDbGllbnRzLnNwZWVjaElucHV0
Q2xpZW50ID0gJm1fc3BlZWNoSW5wdXRDbGllbnQ7CiAjZW5kaWYKKyAgICBpZiAobV93ZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCkKKyAgICAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRp
b25DbGllbnQgPSBtX3dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LT5jbGllbnQoKTsKICAgICBt
X3BhZ2Uuc2V0KG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CiAKICAgICAvLyB0aGUgcGFnZSB3aWxs
IHRha2Ugb3duZXJzaGlwIG9mIHRoZSB2YXJpb3VzIGNsaWVudHMKQEAgLTIyMDcsNCArMjIwOCwx
OCBAQCBXZWJHTEVTMkNvbnRleHQqIFdlYlZpZXdJbXBsOjpnbGVzMkNvbnRleHQoKQogICAgIHJl
dHVybiBtX2dsZXMyQ29udGV4dC5nZXQoKTsKIH0KIAorV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnQqIFdlYlZpZXdJbXBsOjpjcmVhdGVXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudChXZWJWaWV3
Q2xpZW50KiB3ZWJWaWV3Q2xpZW50KQoreworICAgIGlmICghV2ViUnVudGltZUZlYXR1cmVzOjpp
c0RldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
IXdlYlZpZXdDbGllbnQpCisgICAgICAgIHJldHVybiBuZXcgV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQoKTsKKworICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBjbGllbnQgPSB3ZWJW
aWV3Q2xpZW50LT5jcmVhdGVXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpOworICAgIGlmICgh
Y2xpZW50KQorICAgICAgICBjbGllbnQgPSBuZXcgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQo
KTsKKworICAgIHJldHVybiBjbGllbnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDUzMGZiZjUuLjI0MGRhNTYgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgRHJhZ1Njcm9sbFRpbWVy
OwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRD
bGllbnQ7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50UHJpdmF0ZTsKK2NsYXNzIFdlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50OwogY2xhc3MgV2ViRnJhbWVJbXBsOwogY2xhc3MgV2ViSW1hZ2U7CiBj
bGFzcyBXZWJLZXlib2FyZEV2ZW50OwpAQCAtMzg3LDYgKzM4OCw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB1cGRhdGVSb290TGF5ZXJDb250ZW50cyhjb25zdCBXZWJSZWN0Jik7CiAjZW5kaWYKIAor
ICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBjcmVhdGVXZWJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudChXZWJWaWV3Q2xpZW50KiB3ZWJWaWV3Q2xpZW50KTsKKwogICAgIFdlYlZpZXdDbGll
bnQqIG1fY2xpZW50OwogCiAgICAgQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbCBtX2JhY2tGb3J3
YXJkTGlzdENsaWVudEltcGw7CkBAIC01MTksNiArNTIyLDggQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgT3duUHRyPFdlYkdMRVMyQ29udGV4dD4gbV9nbGVzMkNvbnRleHQ7CisKKyAgICBSZWZQ
dHI8V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ+IG1fd2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63207</attachid>
            <date>2010-08-02 06:06:37 -0700</date>
            <delta_ts>2010-08-03 02:51:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>17006</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKaW5kZXggMDEzODU1NC4uOWM5NDU3MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE0
NCw2ICsxNDQsOSBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVu
ZENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzTWVzc2FnZURh
dGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3Bv
cnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
RHVtbXkuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2suaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEb2N1bWVudC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkRvY3VtZW50VHlwZS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkRyYWdEYXRhLmgnLApAQCAtMzgzLDYgKzM4Niw4IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJE
ZXZUb29sc0Zyb250ZW5kSW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50RHVtbXkuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRG9j
dW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRvY3VtZW50VHlwZS5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViRHJhZ0RhdGEuY3BwJywKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmEyMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudF9oCisjZGVmaW5l
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50OyB9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7
CitwdWJsaWM6CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnQqIGNyZWF0ZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQor
ICAgIHZpcnR1YWwgfldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgeyB9CisKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9u
Q2xpZW50KiBjbGllbnQoKSBjb25zdCB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIDA7IH0KKyNlbmRpZgorCitwcm90ZWN0ZWQ6CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15LmggYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44NDcyODE5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15LmgKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisjaWZuZGVmIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXlfaAor
I2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15X2gKKworI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7IH0KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkg
OiBwdWJsaWMgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQgeworcHVibGljOgorICAgIFdFQktJ
VF9BUEkgc3RhdGljIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkqIGNyZWF0ZSgpOwor
ICAgIH5XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15KCkgeyByZXNldCgpOyB9CisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50KiBjbGllbnQoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdl
YkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkoKTsKKyAgICB2b2lkIGluaXRpYWxpemUoKTsK
KyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCogbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15X2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NTAzZmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tf
aAorI2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAorCisjaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsgfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
IDogcHVibGljIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXRUJL
SVRfQVBJIHN0YXRpYyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIGNyZWF0ZSgpOwor
ICAgIH5XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKSB7IHJlc2V0KCk7IH0KKworICAg
IC8vIFRPRE86IEltcGxlbWVudCB0aGlzIHdoZW4gd2UgaG9vayB1cCB0byB0ZXN0X3NoZWxsLgor
ICAgIC8vIFdFQktJVF9BUEkgdm9pZCBzZXRPcmllbnRhdGlvbihjb25zdCBXZWJEZXZpY2VPcmll
bnRhdGlvbiYpOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgdmlydHVhbCBXZWJD
b3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogY2xpZW50KCkgY29uc3Q7CisjZW5kaWYKKwor
cHJpdmF0ZToKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsKKyAgICB2b2lk
IGluaXRpYWxpemUoKTsKKyAgICB2b2lkIHJlc2V0KCk7CisgICAgV2ViQ29yZTo6RGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQqIG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggNDYyOGMyZi4uYmNmYmVlYSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKKysrIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYg
V2ViVmlld0NsaWVudF9oCiAjZGVmaW5lIFdlYlZpZXdDbGllbnRfaAogCisjaW5jbHVkZSAiV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teS5oIgogI2luY2x1ZGUgIldlYkRyYWdPcGVyYXRp
b24uaCIKICNpbmNsdWRlICJXZWJFZGl0aW5nQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZUNo
b29zZXJDb21wbGV0aW9uLmgiCkBAIC04OSw2ICs5MCw5IEBAIHB1YmxpYzoKICAgICAvLyBDcmVh
dGUgYSBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhp
cyBXZWJWaWV3LgogICAgIHZpcnR1YWwgV2ViU3RvcmFnZU5hbWVzcGFjZSogY3JlYXRlU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIHsgcmV0dXJuIDA7IH0KIAorICAgIC8v
IENyZWF0ZSBhIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LgorICAgIHZpcnR1YWwgV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnQqIGNyZWF0ZVdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkg
eyByZXR1cm4gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teTo6Y3JlYXRlKCk7IH0KKwog
ICAgIC8vIE1pc2MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gQSBuZXcgbWVzc2FnZSB3YXMgYWRkZWQgdG8g
dGhlIGNvbnNvbGUuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50RHVtbXkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudER1bW15LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44MGYzNzBlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15LmNwcApAQCAtMCwwICsxLDgwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
RHVtbXkuaCIKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRGV2
aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJSZWZQdHIuaCIKKworbmFtZXNwYWNlIHsKK2NsYXNzIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkgOiBwdWJsaWMgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRp
b25DbGllbnQgeworcHVibGljOgorICAgIERldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkoKSA6
IG9yaWVudGF0aW9uKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uOjpjcmVhdGUoKSkgeyB9CisK
KyAgICB2b2lkIHNldENvbnRyb2xsZXIoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyKikgeyB9CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKCkgeyB9CisgICAgdm9pZCBzdG9wVXBk
YXRpbmcoKSB7IH0KKworICAgIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uKiBsYXN0T3JpZW50
YXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9yaWVudGF0aW9uLmdldCgpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+
IG9yaWVudGF0aW9uOworfTsKK30gLy8gbmFtZXNwYWNlCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15KiBXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudER1bW15OjpjcmVhdGUoKQoreworICAgIHJldHVybiBuZXcgV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnREdW1teSgpOworfQorCitXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15OjpX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15KCkKK3sKKyAgICBpbml0aWFsaXplKCk7Cit9
CisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBXZWJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudER1bW15OjpjbGllbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGU7Cit9
CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teTo6aW5pdGlhbGl6ZSgpCit7
CisgICAgbV9wcml2YXRlID0gbmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkoKTsKK30K
Kwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15OjpyZXNldCgpCit7CisgICAg
ZGVsZXRlIG1fcHJpdmF0ZTsKK30KKworfTsgLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3Bw
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0N2ExNjQKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
ay5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKKworI2luY2x1ZGUgIkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2sqIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6Y3JlYXRlKCkKK3sKKyAgICBy
ZXR1cm4gbmV3IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOworfQorCitXZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygp
Cit7CisgICAgaW5pdGlhbGl6ZSgpOworfQorCitXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNs
aWVudCogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpjbGllbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrOjppbml0aWFsaXplKCkKK3sKKyAgICBtX3ByaXZhdGUgPSBuZXcgV2ViQ29yZTo6RGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrOjpyZXNldCgpCit7CisgICAgZGVsZXRlIG1fcHJpdmF0ZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDY5
MWYxNDMuLjEwMTRiZWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC05MSw2
ICs5MSw4IEBACiAjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUg
IldlYkRldlRvb2xzQWdlbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudElt
cGwuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUg
IldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkuaCIKICNpbmNsdWRlICJXZWJEcmFnRGF0
YS5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCkBA
IC0xNzcsOSArMTc5LDYgQEAgc3RhdGljIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MgYXV0
b0ZpbGxQb3B1cFNldHRpbmdzID0gewogCiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGUoV2ViVmll
d0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29sc0NsaWVudCkK
IHsKLSAgICAvLyBLZWVwIHJ1bnRpbWUgZmxhZyBmb3IgZGV2aWNlIG9yaWVudGF0aW9uIHR1cm5l
ZCBvZmYgdW50aWwgaXQncyBpbXBsZW1lbnRlZC4KLSAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVu
YWJsZURldmljZU9yaWVudGF0aW9uKGZhbHNlKTsKLQogICAgIC8vIFBhc3MgdGhlIFdlYlZpZXdJ
bXBsJ3Mgc2VsZi1yZWZlcmVuY2UgdG8gdGhlIGNhbGxlci4KICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYlZpZXdJbXBsKGNsaWVudCwgZGV2VG9vbHNDbGllbnQpKS5sZWFrUmVmKCk7CiB9CkBA
IC0yNjUsNiArMjY0LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQq
IGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICNpZiBFTkFCTEUoSU5Q
VVRfU1BFRUNIKQogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChjbGllbnQpCiAjZW5kaWYKKyAg
ICAsIG1fd2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQoV2ViUnVudGltZUZlYXR1cmVzOjppc0Rl
dmljZU9yaWVudGF0aW9uRW5hYmxlZCgpID8gKGNsaWVudCA/IGNsaWVudC0+Y3JlYXRlV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnQoKSA6IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXk6
OmNyZWF0ZSgpKSA6IDApCiAgICAgLCBtX2dsZXMyQ29udGV4dCgwKQogewogICAgIC8vIFdlYktp
dC93aW4vV2ViVmlldy5jcHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0
aGUKQEAgLTI4OCw2ICsyODgsOSBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0Ns
aWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCiAgICAgcGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSAmbV9z
cGVlY2hJbnB1dENsaWVudDsKICNlbmRpZgorICAgIGlmIChtX3dlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50KQorICAgICAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG1f
d2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQtPmNsaWVudCgpOworCiAgICAgbV9wYWdlLnNldChu
ZXcgUGFnZShwYWdlQ2xpZW50cykpOwogCiAgICAgLy8gdGhlIHBhZ2Ugd2lsbCB0YWtlIG93bmVy
c2hpcCBvZiB0aGUgdmFyaW91cyBjbGllbnRzCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5k
ZXggNTMwZmJmNS4uNGFjNTA2MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNzUs
NiArNzUsNyBAQCBjbGFzcyBEcmFnU2Nyb2xsVGltZXI7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNzIFdlYkRldlRvb2xz
QWdlbnRQcml2YXRlOworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiBjbGFzcyBX
ZWJGcmFtZUltcGw7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CkBA
IC01MTksNiArNTIwLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgT3duUHRyPFdlYkdMRVMy
Q29udGV4dD4gbV9nbGVzMkNvbnRleHQ7CisKKyAgICBPd25QdHI8V2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQ+IG1fd2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CisgICAgLy9XZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudCogbV93ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63312</attachid>
            <date>2010-08-03 02:51:09 -0700</date>
            <delta_ts>2010-08-05 09:07:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43258-20100803105107.patch</filename>
            <type>text/plain</type>
            <size>26132</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGRiNzZiOGU5ZDgyZDcwYThkMjMzYjc0YTQ0YmNjYjEyYzljMWUxMzUu
LjM3YTc4OWRlMWE1MTNhYTcxZjY3ODdmMDEyY2I1NThkNzczMmY0YmMgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU2IEBACisyMDEwLTA4LTAzICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGNocm9taXVtIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHdyYXBwZXIgYW5k
IGhhdmUgV2ViVmlld0ltcGwgZ2V0IGl0IGZyb20gV2ViVmlld0NsaWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMjU4CisKKyAgICAgICAgV2Vi
Vmlld0ltcGwgc2hvdWxkIGFzayBpdHMgY2xpZW50IGZvciBhIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50LgorICAgICAgICBUaGlzIHdheSwgdGVzdF9zaGVsbCBjYW4gcHJvdmlkZSBpdHMgV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLAorICAgICAgICBhbmQgUmVuZGVyVmlldyBjYW4g
cHJvdmlkZSB0aGUgcmVhbCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBBbHNvIHByb3ZpZGUg
V2ViRGV2aWNlT3JpZW50YXRpb24sIHRvIGJlIHVzZWQgZm9yIHBhc3NpbmcgaW4KKyAgICAgICAg
b3JpZW50YXRpb24gZGF0YSB0byB0aGUgY2xpZW50LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb24uaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uOjpXZWJEZXZpY2VPcmllbnRhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uOjp+V2ViRGV2aWNlT3JpZW50YXRp
b24pOgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Ojp+V2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudDo6dXBkYXRlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudDo6Y2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KToKKyAgICAgICAgKiBw
dWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teTo6fldlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50RHVtbXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudER1bW15Ojp1cGRhdGVPcmllbnRhdGlvbik6CisgICAgICAgICogcHVibGljL1dlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjp+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrKToKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3Q2xpZW50OjpjcmVhdGVXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCk6CisgICAg
ICAgICogc3JjL1dlYkRldmljZU9yaWVudGF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYkRldmljZU9yaWVudGF0aW9uOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGV2aWNlT3JpZW50YXRpb246OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNl
T3JpZW50YXRpb246Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRp
b24+KToKKyAgICAgICAgKiBzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1
bW15OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teTo6Y2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teTo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXk6OnJlc2V0KToKKyAgICAg
ICAgKiBzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjp1cGRhdGVPcmll
bnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
azo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpjbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnJlc2V0KToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTA4LTAyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCmluZGV4IDlkYTg1Y2Q3Y2EzOGM1MDcyNzgxMzE1ODA3ZWMzOTVjZGI1YmQyNDQu
LjlmMDQ1YmVjNDJmNzZmNWVkN2VlMjI1MGFlM2JlZTQwZmQ0ZGVmZjQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CkBAIC0xNDIsNiArMTQyLDEwIEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29s
c0FnZW50Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNGcm9u
dGVuZC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmRDbGll
bnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbi5oJywK
KyAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgnLAor
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teS5o
JywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
ay5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRvY3VtZW50LmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViRG9jdW1lbnRUeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRHJhZ0RhdGEuaCcsCkBAIC0zNzMsNiArMzc3LDkgQEAKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2
VG9vbHNGcm9udGVuZEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldlRvb2xz
RnJvbnRlbmRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRp
b24uY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
RHVtbXkuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRG9jdW1lbnQuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYkRvY3VtZW50VHlwZS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViRHJhZ0RhdGEuY3BwJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRGV2aWNlT3JpZW50YXRpb24uaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2
aWNlT3JpZW50YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjMwYzNlOTAyZDM4M2MzMmFhMjI1MDZmZjFh
NjBmZjFjM2U3M2VlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEZXZpY2VPcmllbnRhdGlvbi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBXZWJE
ZXZpY2VPcmllbnRhdGlvbl9oCisjZGVmaW5lIFdlYkRldmljZU9yaWVudGF0aW9uX2gKKworI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKworI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbjsgfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb24geworcHVibGljOgor
ICAgIFdlYkRldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxw
aGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1t
YSwgZG91YmxlIGdhbW1hKQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZShjYW5Qcm92aWRlQWxw
aGEsIGFscGhhLCBjYW5Qcm92aWRlQmV0YSwgYmV0YSwgY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSk7
CisgICAgfQorICAgIH5XZWJEZXZpY2VPcmllbnRhdGlvbigpIHsgcmVzZXQoKTsgfQorCisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgb3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpE
ZXZpY2VPcmllbnRhdGlvbj4oKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQg
aW5pdGlhbGl6ZShib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblBy
b3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1t
YSk7CisgICAgdm9pZCByZXNldCgpOworICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6RGV2aWNl
T3JpZW50YXRpb24+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViRGV2aWNlT3JpZW50YXRpb25faApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllY2UwNmE2
YWZhMjNjZDAwY2Y1NGZjNGZjODA1OTA1NGJjYTkxMDYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisjaWZuZGVmIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50X2gKKyNkZWZp
bmUgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgi
CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3Mg
RGV2aWNlT3JpZW50YXRpb25DbGllbnQ7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb247CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudCogY3JlYXRlKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJl
dHVybiAwOyB9CisgICAgdmlydHVhbCB+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7IH0K
KworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVPcmllbnRhdGlvbihjb25zdCBXZWJEZXZpY2VPcmll
bnRhdGlvbiYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50KiBjbGllbnQoKSBjb25zdCB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IDA7IH0KKyNlbmRpZgorCitwcm90ZWN0ZWQ6CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15LmggYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTI5NzY4
OGU1YWMzOTliZWZhNWM3NGM0NmJjZDc4MWFlNjFkZmFhCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15LmgKQEAg
LTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVt
bXlfaAorI2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15X2gKKworI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7IH0K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
RHVtbXkgOiBwdWJsaWMgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQgeworcHVibGljOgorICAg
IFdFQktJVF9BUEkgc3RhdGljIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkqIGNyZWF0
ZSgpOworICAgIH5XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15KCkgeyByZXNldCgpOyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlT3JpZW50YXRpb24oY29uc3QgV2ViRGV2aWNlT3Jp
ZW50YXRpb24mKSB7IH0KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHZpcnR1YWwg
V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0OworI2VuZGlm
CisKK3ByaXZhdGU6CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teSgpOworICAg
IHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIHZvaWQgcmVzZXQoKTsKKworICAgIFdlYkNvcmU6OkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50KiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXlfaApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmRiMDcwODJmMGQ4YmIxYTQ0ZjQxNmE1YzFjNmQ0MDgwNmZh
YTczZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIFdl
YkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja19oCisjZGVmaW5lIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9ja19oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKK2NsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
azsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9u
OworCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sgOiBwdWJsaWMgV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnQgeworcHVibGljOgorICAgIFdFQktJVF9BUEkgc3RhdGljIFdl
YkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayogY3JlYXRlKCk7CisgICAgfldlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jaygpIHsgcmVzZXQoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZU9yaWVudGF0aW9uKGNvbnN0IFdlYkRldmljZU9yaWVudGF0aW9uJik7CisKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9u
Q2xpZW50KiBjbGllbnQoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOworICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIHZv
aWQgcmVzZXQoKTsKKyAgICBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIG1f
cHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlld0NsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xp
ZW50LmgKaW5kZXggNDYyOGMyZjQ0M2QzNTAyZmU1MmI3NjQyYmE0ODViMDM3ZGE1NTI1NC4uYmNm
YmVlYTI2ZmU4OTc3MzY4OTlkYjc0NGY3YmJiMzJiN2JiNWQ1YSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgV2ViVmlld0Ns
aWVudF9oCiAjZGVmaW5lIFdlYlZpZXdDbGllbnRfaAogCisjaW5jbHVkZSAiV2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnREdW1teS5oIgogI2luY2x1ZGUgIldlYkRyYWdPcGVyYXRpb24uaCIKICNp
bmNsdWRlICJXZWJFZGl0aW5nQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZUNob29zZXJDb21w
bGV0aW9uLmgiCkBAIC04OSw2ICs5MCw5IEBAIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBzZXNz
aW9uIHN0b3JhZ2UgbmFtZXNwYWNlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBXZWJWaWV3
LgogICAgIHZpcnR1YWwgV2ViU3RvcmFnZU5hbWVzcGFjZSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIENyZWF0ZSBh
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LgorICAgIHZpcnR1YWwgV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnQqIGNyZWF0ZVdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgeyByZXR1cm4g
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teTo6Y3JlYXRlKCk7IH0KKwogICAgIC8vIE1p
c2MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiAgICAgLy8gQSBuZXcgbWVzc2FnZSB3YXMgYWRkZWQgdG8gdGhlIGNvbnNv
bGUuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9u
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE5ZGM5ZDVmNmU4MTEyMjE2YzI0YjQ2M2NkZGM5MmQxZDE3OTRhYjcKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uLmNwcApA
QCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YkRldmljZU9yaWVudGF0aW9uLmgiCisKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbi5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lk
IFdlYkRldmljZU9yaWVudGF0aW9uOjppbml0aWFsaXplKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBk
b3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblBy
b3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKQoreworICAgIG1fcHJpdmF0ZSA9IFdlYkNvcmU6OkRl
dmljZU9yaWVudGF0aW9uOjpjcmVhdGUoY2FuUHJvdmlkZUFscGhhLCBhbHBoYSwgY2FuUHJvdmlk
ZUJldGEsIGJldGEsIGNhblByb3ZpZGVHYW1tYSwgZ2FtbWEpOworfQorCit2b2lkIFdlYkRldmlj
ZU9yaWVudGF0aW9uOjpyZXNldCgpIHsgfQorCitXZWJEZXZpY2VPcmllbnRhdGlvbjo6b3BlcmF0
b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4oKSBjb25zdAoreworICAg
IHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK307IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRE
dW1teS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
RHVtbXkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwZjM3MGUwYTM4MTJmNWMzOGUzYmUwOGVmMzM3NjU1NjUy
YTAwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50RHVtbXkuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teS5o
IgorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIlJlZlB0ci5oIgorCituYW1lc3BhY2UgeworY2xhc3MgRGV2aWNlT3JpZW50
YXRpb25DbGllbnREdW1teSA6IHB1YmxpYyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCB7CitwdWJsaWM6CisgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teSgpIDogb3JpZW50
YXRpb24oV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb246OmNyZWF0ZSgpKSB7IH0KKworICAgIHZv
aWQgc2V0Q29udHJvbGxlcihXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKSB7
IH0KKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKSB7IH0KKyAgICB2b2lkIHN0b3BVcGRhdGluZygp
IHsgfQorCisgICAgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3JpZW50YXRpb24uZ2V0KCk7CisgICAgfQor
Citwcml2YXRlOgorICAgIFJlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4gb3JpZW50
YXRpb247Cit9OworfSAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkqIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVt
bXk6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIG5ldyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dER1bW15KCk7Cit9CisKK1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXk6OldlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50RHVtbXkoKQoreworICAgIGluaXRpYWxpemUoKTsKK30KKworV2Vi
Q29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQqIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
RHVtbXk6OmNsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZTsKK30KKwordm9p
ZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudER1bW15Ojppbml0aWFsaXplKCkKK3sKKyAgICBt
X3ByaXZhdGUgPSBuZXcgRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teSgpOworfQorCit2b2lk
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50RHVtbXk6OnJlc2V0KCkKK3sKKyAgICBkZWxldGUg
bV9wcml2YXRlOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGZmZmQxMWM0NDFjZjhkNzRkZDkyYTc4OGNkYjE3ODIyMzY5YmI0ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgorCisjaW5jbHVkZSAiRGV2
aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2s6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIG5ldyBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2soKTsKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2s6OnVwZGF0ZU9yaWVudGF0aW9uKGNvbnN0IFdlYkRldmljZU9yaWVudGF0aW9uJiBv
KQoreworICAgIG1fcHJpdmF0ZS0+c2V0T3JpZW50YXRpb24obyk7Cit9CisKK1dlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jazo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkKK3sK
KyAgICBpbml0aWFsaXplKCk7Cit9CisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50
KiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OmNsaWVudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s6OmluaXRpYWxpemUoKQoreworICAgIG1fcHJpdmF0ZSA9IG5ldyBXZWJDb3JlOjpEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2soKTsKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2s6OnJlc2V0KCkKK3sKKyAgICBkZWxldGUgbV9wcml2YXRlOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNjkxZjE0
MzYxMDdlM2MzNmQ1Y2VkOTMxOWJiYzZmODkzYTJiNmUzNC4uMTAxNGJlYmYxYWM1Nzc2ZTliMTJi
MzVkZTc5YTJjNWVmMmMwOWEzNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTkxLDYgKzkxLDggQEAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5j
bHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0Fn
ZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnREdW1teS5oIgogI2luY2x1ZGUgIldlYkRy
YWdEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2Uu
aCIKQEAgLTE3Nyw5ICsxNzksNiBAQCBzdGF0aWMgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5n
cyBhdXRvRmlsbFBvcHVwU2V0dGluZ3MgPSB7CiAKIFdlYlZpZXcqIFdlYlZpZXc6OmNyZWF0ZShX
ZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzQ2xp
ZW50KQogewotICAgIC8vIEtlZXAgcnVudGltZSBmbGFnIGZvciBkZXZpY2Ugb3JpZW50YXRpb24g
dHVybmVkIG9mZiB1bnRpbCBpdCdzIGltcGxlbWVudGVkLgotICAgIFdlYlJ1bnRpbWVGZWF0dXJl
czo6ZW5hYmxlRGV2aWNlT3JpZW50YXRpb24oZmFsc2UpOwotCiAgICAgLy8gUGFzcyB0aGUgV2Vi
Vmlld0ltcGwncyBzZWxmLXJlZmVyZW5jZSB0byB0aGUgY2FsbGVyLgogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViVmlld0ltcGwoY2xpZW50LCBkZXZUb29sc0NsaWVudCkpLmxlYWtSZWYoKTsK
IH0KQEAgLTI2NSw2ICsyNjQsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0Ns
aWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCiAgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KGNsaWVudCkKICNlbmRp
ZgorICAgICwgbV93ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudChXZWJSdW50aW1lRmVhdHVyZXM6
OmlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkgPyAoY2xpZW50ID8gY2xpZW50LT5jcmVhdGVX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIDogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRE
dW1teTo6Y3JlYXRlKCkpIDogMCkKICAgICAsIG1fZ2xlczJDb250ZXh0KDApCiB7CiAgICAgLy8g
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhleSBj
YWxsIHRoZQpAQCAtMjg4LDYgKzI4OCw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJW
aWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAjaWYg
RU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCA9
ICZtX3NwZWVjaElucHV0Q2xpZW50OwogI2VuZGlmCisgICAgaWYgKG1fd2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnQpCisgICAgICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50
ID0gbV93ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC0+Y2xpZW50KCk7CisKICAgICBtX3BhZ2Uu
c2V0KG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CiAKICAgICAvLyB0aGUgcGFnZSB3aWxsIHRha2Ug
b3duZXJzaGlwIG9mIHRoZSB2YXJpb3VzIGNsaWVudHMKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAppbmRleCA1MzBmYmY1YjliZTkzM2U5YjM0MjY4NTNmMzlmODFmMzQxODEzYTNkLi44ZTk1Mjll
ZWIwYTMxYmZmNTJiMjRjMjY2MjhmMzJmMWJiYmMzNzc4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKIGNsYXNzIFdl
YkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xh
c3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudDsKIGNsYXNzIFdlYkZyYW1lSW1wbDsKIGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViS2V5
Ym9hcmRFdmVudDsKQEAgLTUxOSw2ICs1MjAsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBP
d25QdHI8V2ViR0xFUzJDb250ZXh0PiBtX2dsZXMyQ29udGV4dDsKKworICAgIE93blB0cjxXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudD4gbV93ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="51633"
          type_id="1"
          status="-"
          setter="jorlow"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63432</attachid>
            <date>2010-08-04 02:58:42 -0700</date>
            <delta_ts>2010-08-05 09:07:39 -0700</delta_ts>
            <desc>WebDeviceOrientationClient plus plumbing</desc>
            <filename>wrapping_and_plumbing.diff</filename>
            <type>text/plain</type>
            <size>30402</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKaW5kZXggOWRhODVjZC4uZjBlMGEwYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE0
Miw2ICsxNDIsOSBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNBZ2VudENs
aWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmQuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmgnLAor
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb24uaCcsCisgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oJywKKyAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkRvY3VtZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRG9jdW1lbnRUeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRHJhZ0Rh
dGEuaCcsCkBAIC0yOTMsNiArMjk2LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2Vy
QWdlbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmgnLAorICAg
ICAgICAgICAgICAgICdzcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmNwcCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRHJhZ0Ns
aWVudEltcGwuY3BwJywKQEAgLTM3Myw2ICszNzgsMTAgQEAKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2VG9v
bHNGcm9udGVuZEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldlRvb2xzRnJv
bnRlbmRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRpb24u
Y3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1w
bC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJ
bXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEb2N1bWVudC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViRG9jdW1lbnRUeXBlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJEcmFnRGF0YS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEZXZpY2VPcmllbnRhdGlvbi5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VP
cmllbnRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YTlkNGUK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9yaWVu
dGF0aW9uLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIFdlYkRldmljZU9yaWVudGF0
aW9uX2gKKyNkZWZpbmUgV2ViRGV2aWNlT3JpZW50YXRpb25faAorCisjaW5jbHVkZSAiV2ViQ29t
bW9uLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXVEYgeyB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgRGV2aWNlT3JpZW50YXRpb247IH0KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uIHsKK3B1YmxpYzoKKyAgICBXZWJEZXZp
Y2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNh
blByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBn
YW1tYSkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemUoY2FuUHJvdmlkZUFscGhhLCBhbHBoYSwg
Y2FuUHJvdmlkZUJldGEsIGJldGEsIGNhblByb3ZpZGVHYW1tYSwgZ2FtbWEpOworICAgIH0KKyAg
ICB+V2ViRGV2aWNlT3JpZW50YXRpb24oKSB7IHJlc2V0KCk7IH0KKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorICAgIFdlYkRldmljZU9yaWVudGF0aW9uKGNvbnN0IFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4mKTsKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlv
biYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRh
dGlvbj4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3Jp
ZW50YXRpb24+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxp
emUoYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0
YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOworICAg
IHZvaWQgcmVzZXQoKTsKKyAgICBib29sIG1fY2FuUHJvdmlkZUFscGhhLCBtX2NhblByb3ZpZGVC
ZXRhLCBtX2NhblByb3ZpZGVHYW1tYTsKKyAgICBkb3VibGUgbV9hbHBoYSwgbV9iZXRhLCBtX2dh
bW1hOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJEZXZpY2VP
cmllbnRhdGlvbl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRl
Y2IzZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnRfaAorI2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsgfQor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlv
bjsKK2NsYXNzIFdlYlZpZXdDbGllbnQ7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudCogY3JlYXRlKFdlYlZpZXdDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5XZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU9yaWVudGF0
aW9uKGNvbnN0IFdlYkRldmljZU9yaWVudGF0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQorI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudF9oCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGIwNzA4Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrX2gKKyNkZWZpbmUgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gK
KworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERldmljZU9yaWVudGF0aW9u
Q2xpZW50OworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb247CisKK2NsYXNzIFdlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayA6IHB1YmxpYyBXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudCB7CitwdWJsaWM6CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrKiBjcmVhdGUoKTsKKyAgICB+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrKCkgeyByZXNldCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlT3JpZW50YXRpb24o
Y29uc3QgV2ViRGV2aWNlT3JpZW50YXRpb24mKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIHZpcnR1YWwgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGNsaWVudCgp
IGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrKCk7CisgICAgdm9pZCBpbml0aWFsaXplKCk7CisgICAgdm9pZCByZXNldCgpOworICAg
IFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayogbV9wcml2YXRlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2tfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Lmgg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAppbmRleCAxYjk0ZGEyLi4xMDhjYjBl
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CitjbGFzcyBXZWJEZXZp
Y2VPcmllbnRhdGlvbjsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnQ7CiBjbGFzcyBXZWJEZXZUb29s
c0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRHJhZ0RhdGE7CkBAIC0zNDEsNiArMzQyLDEwIEBAIHB1
YmxpYzoKICAgICAvLyBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KICAgICB2
aXJ0dWFsIFdlYkdMRVMyQ29udGV4dCogZ2xlczJDb250ZXh0KCkgPSAwOwogCisgICAgLy8gRGV2
aWNlIE9yaWVudGF0aW9uIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRGV2aWNlT3JpZW50YXRpb24o
Y29uc3QgV2ViRGV2aWNlT3JpZW50YXRpb24mIG8pID0gMDsKKwogcHJvdGVjdGVkOgogICAgIH5X
ZWJWaWV3KCkge30KIH07CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4
IDQ2MjhjMmYuLjlhZjllNWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlld0NsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaWZuZGVmIFdlYlZpZXdDbGllbnRfaAogI2RlZmluZSBXZWJW
aWV3Q2xpZW50X2gKIAorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5o
IgogI2luY2x1ZGUgIldlYkRyYWdPcGVyYXRpb24uaCIKICNpbmNsdWRlICJXZWJFZGl0aW5nQWN0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmgiCkBAIC04OSw2ICs5
MCw5IEBAIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNl
IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBXZWJWaWV3LgogICAgIHZpcnR1YWwgV2ViU3Rv
cmFnZU5hbWVzcGFjZSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVv
dGEpIHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIENyZWF0ZSBhIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50LgorICAgIHZpcnR1YWwgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGNyZWF0ZVdl
YkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgeyByZXR1cm4gV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrOjpjcmVhdGUoKTsgfQorCiAgICAgLy8gTWlzYyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvLyBB
IG5ldyBtZXNzYWdlIHdhcyBhZGRlZCB0byB0aGUgY29uc29sZS4KQEAgLTM0MSw2ICszNDUsMTIg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBzcGVlY2hJ
bnB1dENvbnRyb2xsZXIoCiAgICAgICAgIFdlYlNwZWVjaElucHV0TGlzdGVuZXIqKSB7IHJldHVy
biAwOyB9CiAKKyAgICAvLyBEZXZpY2UgT3JpZW50YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIEFzayB0aGUgZW1iZWRkZXIg
dG8gc3RhcnQgc2VuZGluZyBkZXZpY2Ugb3JpZW50YXRpb24gdXBkYXRlcy4KKyAgICB2aXJ0dWFs
IHZvaWQgc3RhcnREZXZpY2VPcmllbnRhdGlvblVwZGF0ZXMoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcERldmljZU9yaWVudGF0aW9uVXBkYXRlcygpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
fldlYlZpZXdDbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Rl
dmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNWMwNjM0ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
RGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1w
bC5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiV2Vi
Vmlld0NsaWVudC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRGV2aWNlT3JpZW50YXRpb25D
bGllbnRJbXBsOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwoV2ViVmlld0NsaWVudCogd2Vi
Vmlld0NsaWVudCkKKyAgICAgICAgOiBtX3dlYlZpZXdDbGllbnQod2ViVmlld0NsaWVudCkKK3sK
K30KKworRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOjp+RGV2aWNlT3JpZW50YXRpb25DbGll
bnRJbXBsKCkKK3sKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGw6OnVwZGF0
ZU9yaWVudGF0aW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+IG8pCit7
CisgICAgbV9sYXN0T3JpZW50YXRpb24gPSBvOworICAgIG1fY29udHJvbGxlci0+ZGlkQ2hhbmdl
RGV2aWNlT3JpZW50YXRpb24obV9sYXN0T3JpZW50YXRpb24uZ2V0KCkpOworfQorCit2b2lkIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6c2V0Q29udHJvbGxlcihXZWJDb3JlOjpEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAgbV9jb250cm9sbGVyID0g
Y29udHJvbGxlcjsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGw6OnN0YXJ0
VXBkYXRpbmcoKQoreworICAgIG1fd2ViVmlld0NsaWVudC0+c3RhcnREZXZpY2VPcmllbnRhdGlv
blVwZGF0ZXMoKTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGw6OnN0b3BV
cGRhdGluZygpCit7CisgICAgbV93ZWJWaWV3Q2xpZW50LT5zdG9wRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVzKCk7Cit9CisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uKiBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudEltcGw6Omxhc3RPcmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bGFzdE9yaWVudGF0aW9uLmdldCgpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwu
aCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQzODRjMgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmgKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBs
X2gKKyNkZWZpbmUgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsX2gKKworI2luY2x1ZGUgIkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVmUHRyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIERldmljZU9yaWVudGF0aW9uOworY2xhc3MgUGFnZTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJWaWV3Q2xpZW50OworCitjbGFzcyBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25D
bGllbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IERldmljZU9yaWVudGF0aW9uQ2xpZW50SW1w
bChXZWJWaWV3Q2xpZW50Kik7CisgICAgfkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbCgpOwor
ICAgIHZvaWQgdXBkYXRlT3JpZW50YXRpb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmll
bnRhdGlvbj4pOworCisgICAgLy8gRnJvbSBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dC4KKyAgICB2b2lkIHNldENvbnRyb2xsZXIoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyKik7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdm9pZCBzdG9wVXBkYXRp
bmcoKTsKKyAgICBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViVmlld0NsaWVudCogbV93ZWJWaWV3Q2xpZW50Owor
ICAgIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4gbV9sYXN0T3JpZW50YXRpb247
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIERldmljZU9yaWVudGF0
aW9uQ2xpZW50SW1wbF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmlj
ZU9yaWVudGF0aW9uLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMDZhYzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uLmNw
cApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkRldmljZU9yaWVudGF0aW9uLmgiCisKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbi5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJEZXZpY2VPcmllbnRhdGlvbjo6V2ViRGV2aWNlT3JpZW50YXRpb24oY29uc3QgUGFzc1JlZlB0
cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4mIG8pCit7CisgICAgaW5pdGlhbGl6ZShvLT5j
YW5Qcm92aWRlQWxwaGEoKSwgby0+YWxwaGEoKSwgby0+Y2FuUHJvdmlkZUJldGEoKSwgby0+YmV0
YSgpLCBvLT5jYW5Qcm92aWRlR2FtbWEoKSwgby0+Z2FtbWEoKSk7Cit9CisKK1dlYkRldmljZU9y
aWVudGF0aW9uJiBXZWJEZXZpY2VPcmllbnRhdGlvbjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+JiBvKQoreworICAgIGluaXRpYWxpemUoby0+
Y2FuUHJvdmlkZUFscGhhKCksIG8tPmFscGhhKCksIG8tPmNhblByb3ZpZGVCZXRhKCksIG8tPmJl
dGEoKSwgby0+Y2FuUHJvdmlkZUdhbW1hKCksIG8tPmdhbW1hKCkpOworfQorCitXZWJEZXZpY2VP
cmllbnRhdGlvbjo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlv
bj4oKSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbjo6Y3Jl
YXRlKG1fY2FuUHJvdmlkZUFscGhhLCBtX2FscGhhLCBtX2NhblByb3ZpZGVCZXRhLCBtX2JldGEs
IG1fY2FuUHJvdmlkZUdhbW1hLCBtX2dhbW1hKTsKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRh
dGlvbjo6aW5pdGlhbGl6ZShib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29s
IGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJs
ZSBnYW1tYSkKK3sKKyAgICBtX2NhblByb3ZpZGVBbHBoYSA9IGNhblByb3ZpZGVBbHBoYTsKKyAg
ICBtX2NhblByb3ZpZGVCZXRhID0gY2FuUHJvdmlkZUJldGE7CisgICAgbV9jYW5Qcm92aWRlR2Ft
bWEgPSBjYW5Qcm92aWRlR2FtbWE7CisgICAgbV9hbHBoYSA9IGFscGhhOworICAgIG1fYmV0YSA9
IGJldGE7CisgICAgbV9nYW1tYSA9IGdhbW1hOworfQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0
aW9uOjpyZXNldCgpCit7Cit9CisKK307IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmNwcCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWFlYTRhCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwu
Y3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJEZXZpY2VP
cmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5oIgor
I2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlv
bi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQq
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpjcmVhdGUoV2ViVmlld0NsaWVudCogd2ViVmll
d0NsaWVudCkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1w
bCh3ZWJWaWV3Q2xpZW50KTsKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudElt
cGw6OnVwZGF0ZU9yaWVudGF0aW9uKGNvbnN0IFdlYkRldmljZU9yaWVudGF0aW9uJiBvKQorewor
ICAgIG1fcHJpdmF0ZS0+dXBkYXRlT3JpZW50YXRpb24obyk7Cit9CisKK1dlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50SW1wbDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKFdlYlZpZXdD
bGllbnQqIHdlYlZpZXdDbGllbnQpCisgICAgICAgIDogbV9wcml2YXRlKG5ldyBEZXZpY2VPcmll
bnRhdGlvbkNsaWVudEltcGwod2ViVmlld0NsaWVudCkpCit7Cit9CisKK1dlYkNvcmU6OkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50KiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGw6OmNsaWVu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudEltcGw6OnJlc2V0KCkKK3sKKyAgICBkZWxldGUgbV9wcml2YXRlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjkzYWEwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5oCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGxfaAorI2RlZmluZSBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGxfaAorCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRGV2aWNlT3JpZW50
YXRpb25DbGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBEZXZpY2VPcmll
bnRhdGlvbkNsaWVudEltcGw7CitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbjsKK2NsYXNzIFdl
YlZpZXdDbGllbnQ7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbCA6IHB1
YmxpYyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAgV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqKTsKKyAgICB+V2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRJbXBsKCkgeyByZXNldCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlT3JpZW50YXRpb24oY29uc3QgV2ViRGV2aWNlT3JpZW50YXRpb24mKTsKKworI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgorICAgIHZpcnR1YWwgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25D
bGllbnQqIGNsaWVudCgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9pZCByZXNl
dCgpOworICAgIERldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbCogbV9wcml2YXRlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudEltcGxfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2suY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjRmZmZkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
aCIKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRp
b24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jayogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpjcmVhdGUoKQoreworICAgIHJl
dHVybiBuZXcgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7Cit9CisKK3ZvaWQgV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjp1cGRhdGVPcmllbnRhdGlvbihjb25zdCBXZWJE
ZXZpY2VPcmllbnRhdGlvbiYgbykKK3sKKyAgICBtX3ByaXZhdGUtPnNldE9yaWVudGF0aW9uKG8p
OworfQorCitXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OldlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jaygpCit7CisgICAgaW5pdGlhbGl6ZSgpOworfQorCitXZWJDb3JlOjpEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpjbGll
bnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrOjppbml0aWFsaXplKCkKK3sKKyAgICBtX3ByaXZhdGUgPSBu
ZXcgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7Cit9CisKK3ZvaWQgV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpyZXNldCgpCit7CisgICAgZGVsZXRlIG1fcHJp
dmF0ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCmluZGV4IDY5MWYxNDMuLjA1ZTRhMjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgog
I2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKKyNpbmNs
dWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRE9NVXRpbGl0aWVzUHJp
dmF0ZS5oIgpAQCAtOTEsNiArOTIsOCBAQAogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YkRldlRvb2xzQWdlbnRJbXBsLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKICNpbmNs
dWRlICJXZWJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUg
IldlYkltYWdlLmgiCkBAIC0xNzcsOSArMTgwLDYgQEAgc3RhdGljIGNvbnN0IFBvcHVwQ29udGFp
bmVyU2V0dGluZ3MgYXV0b0ZpbGxQb3B1cFNldHRpbmdzID0gewogCiBXZWJWaWV3KiBXZWJWaWV3
OjpjcmVhdGUoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBk
ZXZUb29sc0NsaWVudCkKIHsKLSAgICAvLyBLZWVwIHJ1bnRpbWUgZmxhZyBmb3IgZGV2aWNlIG9y
aWVudGF0aW9uIHR1cm5lZCBvZmYgdW50aWwgaXQncyBpbXBsZW1lbnRlZC4KLSAgICBXZWJSdW50
aW1lRmVhdHVyZXM6OmVuYWJsZURldmljZU9yaWVudGF0aW9uKGZhbHNlKTsKLQogICAgIC8vIFBh
c3MgdGhlIFdlYlZpZXdJbXBsJ3Mgc2VsZi1yZWZlcmVuY2UgdG8gdGhlIGNhbGxlci4KICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZXdJbXBsKGNsaWVudCwgZGV2VG9vbHNDbGllbnQpKS5s
ZWFrUmVmKCk7CiB9CkBAIC0yNjUsNiArMjY1LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBs
KFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMK
ICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChjbGll
bnQpCiAjZW5kaWYKKyAgICAsIG1fd2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQoV2ViUnVudGlt
ZUZlYXR1cmVzOjppc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpID8gKGNsaWVudCA/IGNsaWVu
dC0+Y3JlYXRlV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6IFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jazo6Y3JlYXRlKCkpIDogMCkKICAgICAsIG1fZ2xlczJDb250ZXh0KDApCiB7
CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNl
cHQgdGhleSBjYWxsIHRoZQpAQCAtMjg4LDYgKzI4OSw4IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRv
b2xzCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1
dENsaWVudCA9ICZtX3NwZWVjaElucHV0Q2xpZW50OwogI2VuZGlmCisgICAgaWYgKG1fd2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnQpCisgICAgICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0
aW9uQ2xpZW50ID0gbV93ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC0+Y2xpZW50KCk7CiAgICAg
bV9wYWdlLnNldChuZXcgUGFnZShwYWdlQ2xpZW50cykpOwogCiAgICAgLy8gdGhlIHBhZ2Ugd2ls
bCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgdmFyaW91cyBjbGllbnRzCkBAIC0yMjA3LDQgKzIyMTAs
MTAgQEAgV2ViR0xFUzJDb250ZXh0KiBXZWJWaWV3SW1wbDo6Z2xlczJDb250ZXh0KCkKICAgICBy
ZXR1cm4gbV9nbGVzMkNvbnRleHQuZ2V0KCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmRpZENo
YW5nZURldmljZU9yaWVudGF0aW9uKGNvbnN0IFdlYkRldmljZU9yaWVudGF0aW9uJiBvKQorewor
ICAgIGlmIChtX3dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KQorICAgICAgICBtX3dlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50LT51cGRhdGVPcmllbnRhdGlvbihvKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNTMwZmJmNS4uNDkz
YWZlOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNzUsNiArNzUsOCBAQCBjbGFz
cyBEcmFnU2Nyb2xsVGltZXI7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3Mg
V2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRQcml2YXRlOwor
Y2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb247CitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudDsKIGNsYXNzIFdlYkZyYW1lSW1wbDsKIGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViS2V5
Ym9hcmRFdmVudDsKQEAgLTE5NCw2ICsxOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUJhY2tncm91bmRDb2xvciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlRm9yZWdy
b3VuZENvbG9yKTsKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybUN1c3RvbUNvbnRleHRNZW51QWN0
aW9uKHVuc2lnbmVkIGFjdGlvbik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZURldmljZU9y
aWVudGF0aW9uKGNvbnN0IFdlYkRldmljZU9yaWVudGF0aW9uJik7CiAKICAgICAvLyBXZWJWaWV3
SW1wbAogCkBAIC01MTksNiArNTIyLDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgT3duUHRy
PFdlYkdMRVMyQ29udGV4dD4gbV9nbGVzMkNvbnRleHQ7CisKKyAgICBPd25QdHI8V2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnQ+IG1fd2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="51788"
          type_id="1"
          status="-"
          setter="jorlow"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63598</attachid>
            <date>2010-08-05 09:10:05 -0700</date>
            <delta_ts>2010-08-06 06:57:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43258-20100805171002.patch</filename>
            <type>text/plain</type>
            <size>31855</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGQxOWY5MDI1NWIwNDRjMDQ5MGZlMWY1MGEwMGIyZWJiY2Y1ZTU4OGEu
LmFkYmUzYTZkNGExMzNmZTc2OTBlYzg5OTlhODMxNTM5NTE2YTVkMWYgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU2IEBACisyMDEwLTA4LTA1ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGNocm9taXVtIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHdyYXBwZXIgYW5k
IGhhdmUgV2ViVmlld0ltcGwgZ2V0IGl0IGZyb20gV2ViVmlld0NsaWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMjU4CisKKyAgICAgICAgUHJv
dmlkZSBhIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHRvIFBhZ2UgYnkgbWVhbnMgb2YgYQorICAg
ICAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5IHRoYXQgcHJveGllcyBjYWxscyB0bwor
ICAgICAgICBhIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LCBhbiBpbnRlcmZhY2UgdGhhdCBj
YW4gYmUgaW1wbGVtZW50ZWQKKyAgICAgICAgaW4gdGhlIFdlYktpdCBvciBjaHJvbWl1bSBsYXll
ci4gQW4gaW1wbGVtZW50YXRpb24gdG8gYmUgdXNlZCBmb3IKKyAgICAgICAgbGF5b3V0IHRlc3Rz
LCB3cmFwcGluZyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2ssIGlzIHByb3ZpZGVkLgorCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZpY2VPcmllbnRh
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb246Oldl
YkRldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50Ojp+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
Ojp+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OldlYkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcik6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0NsaWVudDo6ZGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAqIHNy
Yy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk6OnNldENvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6c3RvcFVwZGF0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6bGFz
dE9yaWVudGF0aW9uKToKKyAgICAgICAgKiBzcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eSk6CisgICAgICAgICogc3JjL1dlYkRldmlj
ZU9yaWVudGF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVu
dGF0aW9uOjpXZWJEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRldmlj
ZU9yaWVudGF0aW9uOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmll
bnRhdGlvbjo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4p
OgorICAgICAgICAqIHNyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzZXRD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s6Omxhc3RPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0T3JpZW50YXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnJlc2V0KToK
KyAgICAgICAgKiBzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6ZGlkQ2hh
bmdlRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6
CisKIDIwMTAtMDgtMDIgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggOWRhODVj
ZDdjYTM4YzUwNzI3ODEzMTU4MDdlYzM5NWNkYjViZDI0NC4uNzgwNDdkZmIyZDY1MjcyZGIxMzRl
YjQ5ZmI4NWM2NTBiYzM3MTdjZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE0Miw2ICsxNDIsMTAgQEAK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oJywKKyAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uLmgnLAorICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCcsCisgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJEb2N1bWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRvY3Vt
ZW50VHlwZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRyYWdEYXRhLmgnLApAQCAt
MjkzLDYgKzI5Nyw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5o
JywKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5oJywKKyAgICAgICAgICAgICAg
ICAnc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9ET01V
dGlsaXRpZXNQcml2YXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRHJhZ0NsaWVudEltcGwu
Y3BwJywKQEAgLTM3Myw2ICszNzksOSBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZUb29sc0Zyb250ZW5k
SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwu
aCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbi5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkRvY3VtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJEb2N1bWVudFR5cGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRyYWdE
YXRhLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9y
aWVudGF0aW9uLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9yaWVudGF0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjBmOTJjNjk5MTczYjY5MDZmMDQwZTQ3YTBkMzMzOGQ0OWI0MWY1NAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50
YXRpb24uaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRh
dGlvbl9oCisjZGVmaW5lIFdlYkRldmljZU9yaWVudGF0aW9uX2gKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQ
YXNzUmVmUHRyOyB9CituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIERldmljZU9yaWVudGF0aW9u
OyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU9yaWVu
dGF0aW9uIHsKK3B1YmxpYzoKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3Zp
ZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwg
Ym9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSkKKyAgICAgICAgICAgIDogbV9jYW5Q
cm92aWRlQWxwaGEoY2FuUHJvdmlkZUFscGhhKSwKKyAgICAgICAgICAgICAgbV9hbHBoYShhbHBo
YSksCisgICAgICAgICAgICAgIG1fY2FuUHJvdmlkZUJldGEoY2FuUHJvdmlkZUJldGEpLAorICAg
ICAgICAgICAgICBtX2JldGEoYmV0YSksCisgICAgICAgICAgICAgIG1fY2FuUHJvdmlkZUdhbW1h
KGNhblByb3ZpZGVHYW1tYSksCisgICAgICAgICAgICAgIG1fZ2FtbWEoZ2FtbWEpCisgICAgewor
ICAgIH0KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkRldmljZU9yaWVudGF0
aW9uKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4mKTsK
KyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+KCkgY29uc3Q7CisjZW5kaWYKKworcHJp
dmF0ZToKKyAgICBib29sIG1fY2FuUHJvdmlkZUFscGhhOworICAgIGRvdWJsZSBtX2FscGhhOwor
ICAgIGJvb2wgbV9jYW5Qcm92aWRlQmV0YTsKKyAgICBkb3VibGUgbV9iZXRhOworICAgIGJvb2wg
bV9jYW5Qcm92aWRlR2FtbWE7CisgICAgZG91YmxlIG1fZ2FtbWE7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkRldmljZU9yaWVudGF0aW9uX2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zY2FiY2M5ZjNiZmVjNGM2Yzg4MGQyMWNjN2JjYmQzNzMyYTAwMGQzCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50X2gKKyNkZWZpbmUgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRfaAorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb247CitjbGFzcyBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCgpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihXZWJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpID0gMDsKKworICAgIC8vIENhbGxl
ciB0YWtlcyBvd25lcnNoaXAgb2YgcmV0dXJuZWQgb2JqZWN0LiBSZXR1cm4gdmFsdWUgbWF5IGJl
IG51bGwuCisgICAgdmlydHVhbCBXZWJEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9u
KCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDU4
OGUwM2VlMDJkMjhmMjY0NjMwODk2ZTA3NDYyY2RiOWZiYzMwCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2tfaAorI2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jayA6IHB1YmxpYyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CitwdWJsaWM6
CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkgeyBpbml0aWFsaXplKCk7IH0K
KyAgICB+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkgeyByZXNldCgpOyB9CisKKyAg
ICB2b2lkIHNldENvbnRyb2xsZXIoV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKik7Cisg
ICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICBX
ZWJEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJL
SVRfQVBJIHZvaWQgc2V0T3JpZW50YXRpb24oV2ViRGV2aWNlT3JpZW50YXRpb24mKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICBX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIG1fY2xpZW50TW9jazsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YTAzMWZhYzBiZWI4YzRiNWIy
NDBhNmZjYWU4ZWQwMjc0NzI0YTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcl9oCisjZGVmaW5l
IFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24u
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9u
OworCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIgeworcHVibGljOgorICAg
IFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIqIGMpCisgICAgICAgICAgICA6IG1fY29udHJvbGxlcihjKQorICAgIHsKKyAg
ICB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgZGlkQ2hhbmdlRGV2aWNlT3JpZW50YXRpb24oY29u
c3QgV2ViRGV2aWNlT3JpZW50YXRpb24mKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
ICAgIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29udHJvbGxlcigpIGNv
bnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDQ2MjhjMmY0NDNkMzUwMmZlNTJiNzY0MmJhNDg1
YjAzN2RhNTUyNTQuLmM2NDQxOGJhMjc3MmQ5NWYxOTE5MzgyZjJhOTkzMDNjYWMzMGE4YjYgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC00NCw2ICs0NCw3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKK2NsYXNz
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OwogY2xhc3MgV2ViRHJhZ0RhdGE7CiBjbGFzcyBX
ZWJFbGVtZW50OwogY2xhc3MgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uOwpAQCAtMzQxLDYgKzM0
MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNw
ZWVjaElucHV0Q29udHJvbGxlcigKICAgICAgICAgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopIHsg
cmV0dXJuIDA7IH0KIAorICAgIC8vIERldmljZSBPcmllbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gQWNjZXNzIHRoZSBl
bWJlZGRlciBBUEkgZm9yIGRldmljZSBvcmllbnRhdGlvbiBzZXJ2aWNlcy4KKyAgICB2aXJ0dWFs
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIHsg
cmV0dXJuIDA7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJWaWV3Q2xpZW50KCkgeyB9CiB9Owpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFBy
b3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGY2YjZmZjM2YWI3NjJiMGI5NTA5ZmM3YjZlZjdjZDBlODI0M2Jj
MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRp
b25DbGllbnRQcm94eS5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmgiCisKKyNpbmNs
dWRlICJEZXZpY2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIk93blB0ci5oIgorI2luY2x1ZGUg
IlBhc3NSZWZQdHIuaCIKKyNpbmNsdWRlICJSZWZQdHIuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VP
cmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50UHJveHk6OnNldENvbnRyb2xsZXIoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyKiBjKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Ns
aWVudC0+c2V0Q29udHJvbGxlcihuZXcgV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKGMp
KTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5n
KCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQt
PnN0YXJ0VXBkYXRpbmcoKTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
OjpzdG9wVXBkYXRpbmcoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2NsaWVudC0+c3RvcFVwZGF0aW5nKCk7Cit9CisKK1dlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OjpsYXN0T3JpZW50YXRpb24oKSBj
b25zdAoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgT3du
UHRyPFdlYkRldmljZU9yaWVudGF0aW9uPiBsYXN0V2ViT3JpZW50YXRpb24obV9jbGllbnQtPmxh
c3RPcmllbnRhdGlvbigpKTsKKyAgICBpZiAoIWxhc3RXZWJPcmllbnRhdGlvbikKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBtX2xhc3RPcmllbnRhdGlvbiA9ICpsYXN0V2ViT3JpZW50YXRpb247
CisgICAgcmV0dXJuIG1fbGFzdE9yaWVudGF0aW9uLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRp
b25DbGllbnRQcm94eS5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk1MGQ0MmQzNzVhMDE5OGRiNzVmYTU0ZTdmYzY1NzY5
YzNhODQ2YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRQcm94eS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHlfaAorI2RlZmluZSBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5X2gKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAi
RGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJSZWZQdHIuaCIKKyNpbmNsdWRl
ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5IDogcHVibGljIFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudFByb3h5KFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBjbGllbnQpCisgICAgICAg
ICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRDb250
cm9sbGVyKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciopOworICAgIHZvaWQg
c3RhcnRVcGRhdGluZygpOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisgICAgV2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBtdXRhYmxlIFJl
ZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4gbV9sYXN0T3JpZW50YXRpb247Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50UHJveHlfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmll
bnRhdGlvbi5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kN2VkMjQ3ZmFiNTQyZTE5OTgwMzhjMjVkNmQ4MDRjOGJjYTQyZDNkCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlv
bi5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRp
b24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViRGV2aWNlT3JpZW50YXRpb246OldlYkRldmljZU9yaWVudGF0aW9uKGNvbnN0IFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+JiBvKQorICAgICAgICA6IG1fY2FuUHJv
dmlkZUFscGhhKG8tPmNhblByb3ZpZGVBbHBoYSgpKSwKKyAgICAgICAgICBtX2FscGhhKG8tPmFs
cGhhKCkpLAorICAgICAgICAgIG1fY2FuUHJvdmlkZUJldGEoby0+Y2FuUHJvdmlkZUJldGEoKSks
CisgICAgICAgICAgbV9iZXRhKG8tPmJldGEoKSksCisgICAgICAgICAgbV9jYW5Qcm92aWRlR2Ft
bWEoby0+Y2FuUHJvdmlkZUdhbW1hKCkpCit7Cit9CisKK1dlYkRldmljZU9yaWVudGF0aW9uJiBX
ZWJEZXZpY2VPcmllbnRhdGlvbjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb24+JiBvKQoreworICAgIG1fY2FuUHJvdmlkZUFscGhhID0gby0+Y2Fu
UHJvdmlkZUFscGhhKCk7CisgICAgbV9hbHBoYSA9IG8tPmFscGhhKCk7CisgICAgbV9jYW5Qcm92
aWRlQmV0YSA9IG8tPmNhblByb3ZpZGVCZXRhKCk7CisgICAgbV9iZXRhID0gby0+YmV0YSgpOwor
ICAgIG1fY2FuUHJvdmlkZUdhbW1hID0gby0+Y2FuUHJvdmlkZUdhbW1hKCk7Cit9CisKK1dlYkRl
dmljZU9yaWVudGF0aW9uOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uPigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9u
OjpjcmVhdGUobV9jYW5Qcm92aWRlQWxwaGEsIG1fYWxwaGEsIG1fY2FuUHJvdmlkZUJldGEsIG1f
YmV0YSwgbV9jYW5Qcm92aWRlR2FtbWEsIG1fZ2FtbWEpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYWJjMzY0OGI1ZTM3ZmVjYjE1NmVhNmJhZGJh
ZmY3NjI5ZTFlMWM3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmgiCisKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKKyNpbmNs
dWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s6OnNldENvbnRyb2xsZXIoV2ViRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyKiBjKQoreworICAgIG1fY2xpZW50TW9jay0+c2V0Q29udHJvbGxlcihjLT5jb250
cm9sbGVyKCkpOworfQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3Rh
cnRVcGRhdGluZygpCit7CisgICAgbV9jbGllbnRNb2NrLT5zdGFydFVwZGF0aW5nKCk7Cit9CisK
K3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcoKQorewor
ICAgIG1fY2xpZW50TW9jay0+c3RvcFVwZGF0aW5nKCk7Cit9CisKK1dlYkRldmljZU9yaWVudGF0
aW9uKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6Omxhc3RPcmllbnRhdGlvbigpIGNv
bnN0Cit7CisgICAgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbiA9
IG1fY2xpZW50TW9jay0+bGFzdE9yaWVudGF0aW9uKCk7CisgICAgcmV0dXJuIGxhc3RPcmllbnRh
dGlvbiA/IG5ldyBXZWJEZXZpY2VPcmllbnRhdGlvbihsYXN0T3JpZW50YXRpb24pIDogMDsKK30K
Kwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldE9yaWVudGF0aW9uKFdl
YkRldmljZU9yaWVudGF0aW9uJiBvKQoreworICAgIG1fY2xpZW50TW9jay0+c2V0T3JpZW50YXRp
b24obyk7Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjppbml0aWFs
aXplKCkKK3sKKyAgICBtX2NsaWVudE1vY2sgPSBuZXcgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrKCk7Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
OjpyZXNldCgpCit7CisgICAgZGVsZXRlIG1fY2xpZW50TW9jazsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNlZGFiN2VmMmExYjBjNmJkMDg5MWM1
MjliYjIwYWFiY2ExYTdkYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYXNzUmVmUHRyLmgiCisj
aW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpkaWRDaGFuZ2VEZXZpY2VPcmll
bnRhdGlvbihjb25zdCBXZWJEZXZpY2VPcmllbnRhdGlvbiYgbykKK3sKKyAgICBQYXNzUmVmUHRy
PFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uPiBkZXZpY2VPcmllbnRhdGlvbihvKTsKKyAgICBt
X2NvbnRyb2xsZXItPmRpZENoYW5nZURldmljZU9yaWVudGF0aW9uKGRldmljZU9yaWVudGF0aW9u
LmdldCgpKTsKK30KKworV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRyb2xsZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA4NWRhYjRiNmRmMDBhMWFhZjFhNThkYzcyZDdjNTMz
OTYyM2QyMjg5Li5mZmRjMDNjMDRkZGNhNjgwNmFmODc0MGI0YTExMzI1NWNlZDAyN2ZjIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
IkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5j
bHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNp
bmNsdWRlICJET01VdGlsaXRpZXNQcml2YXRlLmgiCkBAIC05MSw2ICs5Miw3IEBACiAjaW5jbHVk
ZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudEltcGwuaCIKKyNpbmNsdWRlICJX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIldlYkRyYWdEYXRhLmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKQEAgLTE3Nyw5
ICsxNzksNiBAQCBzdGF0aWMgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyBhdXRvRmlsbFBv
cHVwU2V0dGluZ3MgPSB7CiAKIFdlYlZpZXcqIFdlYlZpZXc6OmNyZWF0ZShXZWJWaWV3Q2xpZW50
KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzQ2xpZW50KQogewotICAg
IC8vIEtlZXAgcnVudGltZSBmbGFnIGZvciBkZXZpY2Ugb3JpZW50YXRpb24gdHVybmVkIG9mZiB1
bnRpbCBpdCdzIGltcGxlbWVudGVkLgotICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlRGV2
aWNlT3JpZW50YXRpb24oZmFsc2UpOwotCiAgICAgLy8gUGFzcyB0aGUgV2ViVmlld0ltcGwncyBz
ZWxmLXJlZmVyZW5jZSB0byB0aGUgY2FsbGVyLgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
Vmlld0ltcGwoY2xpZW50LCBkZXZUb29sc0NsaWVudCkpLmxlYWtSZWYoKTsKIH0KQEAgLTI2Niw2
ICsyNjUsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50
LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgICwgbV9zcGVlY2hJbnB1dENs
aWVudChjbGllbnQpCiAjZW5kaWYKICAgICAsIG1fZ2xlczJDb250ZXh0KDApCisgICAgLCBtX3dl
YkRldmljZU9yaWVudGF0aW9uQ2xpZW50KGNsaWVudCA/IGNsaWVudC0+ZGV2aWNlT3JpZW50YXRp
b25DbGllbnQoKSA6IDApCiB7CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRo
ZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBzcGVjaWZpYyB3
cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVhZGluZwpAQCAt
Mjg4LDYgKzI4OCw4IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBj
bGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAjaWYgRU5BQkxFKElOUFVU
X1NQRUVDSCkKICAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCA9ICZtX3NwZWVjaElu
cHV0Q2xpZW50OwogI2VuZGlmCisgICAgaWYgKFdlYlJ1bnRpbWVGZWF0dXJlczo6aXNEZXZpY2VP
cmllbnRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRp
b25DbGllbnQgPSBuZXcgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShtX3dlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50KTsKICAgICBtX3BhZ2Uuc2V0KG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7
CiAKICAgICAvLyB0aGUgcGFnZSB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRoZSB2YXJpb3VzIGNs
aWVudHMKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA1MzBmYmY1YjliZTkzM2U5YjM0
MjY4NTNmMzlmODFmMzQxODEzYTNkLi5lMTcyMTU3NmNiMWNjMzc5MTJkNzA1MDk0OWFhODJmMzU2
YjQ3OTAxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC03NSw2ICs3NSw3IEBAIGNs
YXNzIERyYWdTY3JvbGxUaW1lcjsKIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFz
cyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7
CitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkZyYW1lSW1wbDsK
IGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKQEAgLTUxOSw2ICs1MjAs
OCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBPd25QdHI8V2ViR0xFUzJDb250ZXh0PiBtX2ds
ZXMyQ29udGV4dDsKKworICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBtX3dlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63717</attachid>
            <date>2010-08-06 06:57:31 -0700</date>
            <delta_ts>2010-08-09 04:28:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43258-20100806145728.patch</filename>
            <type>text/plain</type>
            <size>31605</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGQxOWY5MDI1NWIwNDRjMDQ5MGZlMWY1MGEwMGIyZWJiY2Y1ZTU4OGEu
LmFmNzhjN2NiNzI1MGRkNWYzMDE1MGFhZWZiODM3ZjJmM2IzZGExMDcgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU2IEBACisyMDEwLTA4LTA2ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGNocm9taXVtIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHdyYXBwZXIgYW5k
IGhhdmUgV2ViVmlld0ltcGwgZ2V0IGl0IGZyb20gV2ViVmlld0NsaWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMjU4CisKKyAgICAgICAgUHJv
dmlkZSBhIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHRvIFBhZ2UgYnkgbWVhbnMgb2YgYQorICAg
ICAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5IHRoYXQgcHJveGllcyBjYWxscyB0bwor
ICAgICAgICBhIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LCBhbiBpbnRlcmZhY2UgdGhhdCBj
YW4gYmUgaW1wbGVtZW50ZWQKKyAgICAgICAgaW4gdGhlIFdlYktpdCBvciBDaHJvbWl1bSBsYXll
ci4gQW4gaW1wbGVtZW50YXRpb24gdG8gYmUgdXNlZCBmb3IKKyAgICAgICAgbGF5b3V0IHRlc3Rz
LCB3cmFwcGluZyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2ssIGlzIHByb3ZpZGVkLgorCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZpY2VPcmllbnRh
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb246Oldl
YkRldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50Ojp+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
Ojp+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OldlYkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcik6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0NsaWVudDo6ZGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAqIHNy
Yy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk6OnNldENvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6c3RvcFVwZGF0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6bGFz
dE9yaWVudGF0aW9uKToKKyAgICAgICAgKiBzcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eSk6CisgICAgICAgICogc3JjL1dlYkRldmlj
ZU9yaWVudGF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVu
dGF0aW9uOjpXZWJEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRldmlj
ZU9yaWVudGF0aW9uOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmll
bnRhdGlvbjo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4p
OgorICAgICAgICAqIHNyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzZXRD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s6Omxhc3RPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0T3JpZW50YXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnJlc2V0KToK
KyAgICAgICAgKiBzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6ZGlkQ2hh
bmdlRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6
CisKIDIwMTAtMDgtMDIgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggOWRhODVj
ZDdjYTM4YzUwNzI3ODEzMTU4MDdlYzM5NWNkYjViZDI0NC4uNzgwNDdkZmIyZDY1MjcyZGIxMzRl
YjQ5ZmI4NWM2NTBiYzM3MTdjZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE0Miw2ICsxNDIsMTAgQEAK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oJywKKyAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uLmgnLAorICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCcsCisgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJEb2N1bWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRvY3Vt
ZW50VHlwZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRyYWdEYXRhLmgnLApAQCAt
MjkzLDYgKzI5Nyw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5o
JywKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5oJywKKyAgICAgICAgICAgICAg
ICAnc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9ET01V
dGlsaXRpZXNQcml2YXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRHJhZ0NsaWVudEltcGwu
Y3BwJywKQEAgLTM3Myw2ICszNzksOSBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZUb29sc0Zyb250ZW5k
SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwu
aCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbi5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkRvY3VtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJEb2N1bWVudFR5cGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRyYWdE
YXRhLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9y
aWVudGF0aW9uLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9yaWVudGF0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjBmOTJjNjk5MTczYjY5MDZmMDQwZTQ3YTBkMzMzOGQ0OWI0MWY1NAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50
YXRpb24uaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRh
dGlvbl9oCisjZGVmaW5lIFdlYkRldmljZU9yaWVudGF0aW9uX2gKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQ
YXNzUmVmUHRyOyB9CituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIERldmljZU9yaWVudGF0aW9u
OyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU9yaWVu
dGF0aW9uIHsKK3B1YmxpYzoKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3Zp
ZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwg
Ym9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSkKKyAgICAgICAgICAgIDogbV9jYW5Q
cm92aWRlQWxwaGEoY2FuUHJvdmlkZUFscGhhKSwKKyAgICAgICAgICAgICAgbV9hbHBoYShhbHBo
YSksCisgICAgICAgICAgICAgIG1fY2FuUHJvdmlkZUJldGEoY2FuUHJvdmlkZUJldGEpLAorICAg
ICAgICAgICAgICBtX2JldGEoYmV0YSksCisgICAgICAgICAgICAgIG1fY2FuUHJvdmlkZUdhbW1h
KGNhblByb3ZpZGVHYW1tYSksCisgICAgICAgICAgICAgIG1fZ2FtbWEoZ2FtbWEpCisgICAgewor
ICAgIH0KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkRldmljZU9yaWVudGF0
aW9uKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4mKTsK
KyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+KCkgY29uc3Q7CisjZW5kaWYKKworcHJp
dmF0ZToKKyAgICBib29sIG1fY2FuUHJvdmlkZUFscGhhOworICAgIGRvdWJsZSBtX2FscGhhOwor
ICAgIGJvb2wgbV9jYW5Qcm92aWRlQmV0YTsKKyAgICBkb3VibGUgbV9iZXRhOworICAgIGJvb2wg
bV9jYW5Qcm92aWRlR2FtbWE7CisgICAgZG91YmxlIG1fZ2FtbWE7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkRldmljZU9yaWVudGF0aW9uX2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zY2FiY2M5ZjNiZmVjNGM2Yzg4MGQyMWNjN2JjYmQzNzMyYTAwMGQzCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50X2gKKyNkZWZpbmUgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRfaAorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb247CitjbGFzcyBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCgpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihXZWJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpID0gMDsKKworICAgIC8vIENhbGxl
ciB0YWtlcyBvd25lcnNoaXAgb2YgcmV0dXJuZWQgb2JqZWN0LiBSZXR1cm4gdmFsdWUgbWF5IGJl
IG51bGwuCisgICAgdmlydHVhbCBXZWJEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9u
KCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDU4
OGUwM2VlMDJkMjhmMjY0NjMwODk2ZTA3NDYyY2RiOWZiYzMwCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2tfaAorI2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jayA6IHB1YmxpYyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CitwdWJsaWM6
CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkgeyBpbml0aWFsaXplKCk7IH0K
KyAgICB+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkgeyByZXNldCgpOyB9CisKKyAg
ICB2b2lkIHNldENvbnRyb2xsZXIoV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKik7Cisg
ICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICBX
ZWJEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJL
SVRfQVBJIHZvaWQgc2V0T3JpZW50YXRpb24oV2ViRGV2aWNlT3JpZW50YXRpb24mKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICBX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIG1fY2xpZW50TW9jazsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YTAzMWZhYzBiZWI4YzRiNWIy
NDBhNmZjYWU4ZWQwMjc0NzI0YTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcl9oCisjZGVmaW5l
IFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24u
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9u
OworCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIgeworcHVibGljOgorICAg
IFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIqIGMpCisgICAgICAgICAgICA6IG1fY29udHJvbGxlcihjKQorICAgIHsKKyAg
ICB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgZGlkQ2hhbmdlRGV2aWNlT3JpZW50YXRpb24oY29u
c3QgV2ViRGV2aWNlT3JpZW50YXRpb24mKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
ICAgIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29udHJvbGxlcigpIGNv
bnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDQ2MjhjMmY0NDNkMzUwMmZlNTJiNzY0MmJhNDg1
YjAzN2RhNTUyNTQuLmM2NDQxOGJhMjc3MmQ5NWYxOTE5MzgyZjJhOTkzMDNjYWMzMGE4YjYgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC00NCw2ICs0NCw3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKK2NsYXNz
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OwogY2xhc3MgV2ViRHJhZ0RhdGE7CiBjbGFzcyBX
ZWJFbGVtZW50OwogY2xhc3MgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uOwpAQCAtMzQxLDYgKzM0
MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNw
ZWVjaElucHV0Q29udHJvbGxlcigKICAgICAgICAgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopIHsg
cmV0dXJuIDA7IH0KIAorICAgIC8vIERldmljZSBPcmllbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gQWNjZXNzIHRoZSBl
bWJlZGRlciBBUEkgZm9yIGRldmljZSBvcmllbnRhdGlvbiBzZXJ2aWNlcy4KKyAgICB2aXJ0dWFs
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIHsg
cmV0dXJuIDA7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJWaWV3Q2xpZW50KCkgeyB9CiB9Owpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFBy
b3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGY2YjZmZjM2YWI3NjJiMGI5NTA5ZmM3YjZlZjdjZDBlODI0M2Jj
MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRp
b25DbGllbnRQcm94eS5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmgiCisKKyNpbmNs
dWRlICJEZXZpY2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIk93blB0ci5oIgorI2luY2x1ZGUg
IlBhc3NSZWZQdHIuaCIKKyNpbmNsdWRlICJSZWZQdHIuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VP
cmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50UHJveHk6OnNldENvbnRyb2xsZXIoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyKiBjKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Ns
aWVudC0+c2V0Q29udHJvbGxlcihuZXcgV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKGMp
KTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5n
KCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQt
PnN0YXJ0VXBkYXRpbmcoKTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
OjpzdG9wVXBkYXRpbmcoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2NsaWVudC0+c3RvcFVwZGF0aW5nKCk7Cit9CisKK1dlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OjpsYXN0T3JpZW50YXRpb24oKSBj
b25zdAoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgT3du
UHRyPFdlYkRldmljZU9yaWVudGF0aW9uPiBsYXN0V2ViT3JpZW50YXRpb24obV9jbGllbnQtPmxh
c3RPcmllbnRhdGlvbigpKTsKKyAgICBpZiAoIWxhc3RXZWJPcmllbnRhdGlvbikKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBtX2xhc3RPcmllbnRhdGlvbiA9ICpsYXN0V2ViT3JpZW50YXRpb247
CisgICAgcmV0dXJuIG1fbGFzdE9yaWVudGF0aW9uLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRp
b25DbGllbnRQcm94eS5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk1MGQ0MmQzNzVhMDE5OGRiNzVmYTU0ZTdmYzY1NzY5
YzNhODQ2YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRQcm94eS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHlfaAorI2RlZmluZSBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5X2gKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAi
RGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJSZWZQdHIuaCIKKyNpbmNsdWRl
ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5IDogcHVibGljIFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudFByb3h5KFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBjbGllbnQpCisgICAgICAg
ICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRDb250
cm9sbGVyKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciopOworICAgIHZvaWQg
c3RhcnRVcGRhdGluZygpOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisgICAgV2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBtdXRhYmxlIFJl
ZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4gbV9sYXN0T3JpZW50YXRpb247Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50UHJveHlfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmll
bnRhdGlvbi5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kN2VkMjQ3ZmFiNTQyZTE5OTgwMzhjMjVkNmQ4MDRjOGJjYTQyZDNkCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlv
bi5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRp
b24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViRGV2aWNlT3JpZW50YXRpb246OldlYkRldmljZU9yaWVudGF0aW9uKGNvbnN0IFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+JiBvKQorICAgICAgICA6IG1fY2FuUHJv
dmlkZUFscGhhKG8tPmNhblByb3ZpZGVBbHBoYSgpKSwKKyAgICAgICAgICBtX2FscGhhKG8tPmFs
cGhhKCkpLAorICAgICAgICAgIG1fY2FuUHJvdmlkZUJldGEoby0+Y2FuUHJvdmlkZUJldGEoKSks
CisgICAgICAgICAgbV9iZXRhKG8tPmJldGEoKSksCisgICAgICAgICAgbV9jYW5Qcm92aWRlR2Ft
bWEoby0+Y2FuUHJvdmlkZUdhbW1hKCkpCit7Cit9CisKK1dlYkRldmljZU9yaWVudGF0aW9uJiBX
ZWJEZXZpY2VPcmllbnRhdGlvbjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb24+JiBvKQoreworICAgIG1fY2FuUHJvdmlkZUFscGhhID0gby0+Y2Fu
UHJvdmlkZUFscGhhKCk7CisgICAgbV9hbHBoYSA9IG8tPmFscGhhKCk7CisgICAgbV9jYW5Qcm92
aWRlQmV0YSA9IG8tPmNhblByb3ZpZGVCZXRhKCk7CisgICAgbV9iZXRhID0gby0+YmV0YSgpOwor
ICAgIG1fY2FuUHJvdmlkZUdhbW1hID0gby0+Y2FuUHJvdmlkZUdhbW1hKCk7Cit9CisKK1dlYkRl
dmljZU9yaWVudGF0aW9uOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uPigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9u
OjpjcmVhdGUobV9jYW5Qcm92aWRlQWxwaGEsIG1fYWxwaGEsIG1fY2FuUHJvdmlkZUJldGEsIG1f
YmV0YSwgbV9jYW5Qcm92aWRlR2FtbWEsIG1fZ2FtbWEpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYWJjMzY0OGI1ZTM3ZmVjYjE1NmVhNmJhZGJh
ZmY3NjI5ZTFlMWM3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmgiCisKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKKyNpbmNs
dWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s6OnNldENvbnRyb2xsZXIoV2ViRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyKiBjKQoreworICAgIG1fY2xpZW50TW9jay0+c2V0Q29udHJvbGxlcihjLT5jb250
cm9sbGVyKCkpOworfQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3Rh
cnRVcGRhdGluZygpCit7CisgICAgbV9jbGllbnRNb2NrLT5zdGFydFVwZGF0aW5nKCk7Cit9CisK
K3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcoKQorewor
ICAgIG1fY2xpZW50TW9jay0+c3RvcFVwZGF0aW5nKCk7Cit9CisKK1dlYkRldmljZU9yaWVudGF0
aW9uKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6Omxhc3RPcmllbnRhdGlvbigpIGNv
bnN0Cit7CisgICAgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbiA9
IG1fY2xpZW50TW9jay0+bGFzdE9yaWVudGF0aW9uKCk7CisgICAgcmV0dXJuIGxhc3RPcmllbnRh
dGlvbiA/IG5ldyBXZWJEZXZpY2VPcmllbnRhdGlvbihsYXN0T3JpZW50YXRpb24pIDogMDsKK30K
Kwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldE9yaWVudGF0aW9uKFdl
YkRldmljZU9yaWVudGF0aW9uJiBvKQoreworICAgIG1fY2xpZW50TW9jay0+c2V0T3JpZW50YXRp
b24obyk7Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjppbml0aWFs
aXplKCkKK3sKKyAgICBtX2NsaWVudE1vY2sgPSBuZXcgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrKCk7Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
OjpyZXNldCgpCit7CisgICAgZGVsZXRlIG1fY2xpZW50TW9jazsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNlZGFiN2VmMmExYjBjNmJkMDg5MWM1
MjliYjIwYWFiY2ExYTdkYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYXNzUmVmUHRyLmgiCisj
aW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpkaWRDaGFuZ2VEZXZpY2VPcmll
bnRhdGlvbihjb25zdCBXZWJEZXZpY2VPcmllbnRhdGlvbiYgbykKK3sKKyAgICBQYXNzUmVmUHRy
PFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uPiBkZXZpY2VPcmllbnRhdGlvbihvKTsKKyAgICBt
X2NvbnRyb2xsZXItPmRpZENoYW5nZURldmljZU9yaWVudGF0aW9uKGRldmljZU9yaWVudGF0aW9u
LmdldCgpKTsKK30KKworV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRyb2xsZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA4NWRhYjRiNmRmMDBhMWFhZjFhNThkYzcyZDdjNTMz
OTYyM2QyMjg5Li41ZWY4ZjBlYjI5MzM3ODZmMTk4ZmExZTI3ZGRlZmExOGMyZDgxMzM4IDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
IkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5j
bHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNp
bmNsdWRlICJET01VdGlsaXRpZXNQcml2YXRlLmgiCkBAIC0xNzcsOSArMTc4LDYgQEAgc3RhdGlj
IGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MgYXV0b0ZpbGxQb3B1cFNldHRpbmdzID0gewog
CiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGUoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZU
b29sc0FnZW50Q2xpZW50KiBkZXZUb29sc0NsaWVudCkKIHsKLSAgICAvLyBLZWVwIHJ1bnRpbWUg
ZmxhZyBmb3IgZGV2aWNlIG9yaWVudGF0aW9uIHR1cm5lZCBvZmYgdW50aWwgaXQncyBpbXBsZW1l
bnRlZC4KLSAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZURldmljZU9yaWVudGF0aW9uKGZh
bHNlKTsKLQogICAgIC8vIFBhc3MgdGhlIFdlYlZpZXdJbXBsJ3Mgc2VsZi1yZWZlcmVuY2UgdG8g
dGhlIGNhbGxlci4KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZXdJbXBsKGNsaWVudCwg
ZGV2VG9vbHNDbGllbnQpKS5sZWFrUmVmKCk7CiB9CkBAIC0yODgsMTAgKzI4NiwxMiBAQCBXZWJW
aWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0Fn
ZW50Q2xpZW50KiBkZXZUb29scwogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgcGFnZUNs
aWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSAmbV9zcGVlY2hJbnB1dENsaWVudDsKICNlbmRpZgor
ICAgIGlmIChXZWJSdW50aW1lRmVhdHVyZXM6OmlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkp
IHsKKyAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LnNldChuZXcgRGV2aWNl
T3JpZW50YXRpb25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0aW9u
Q2xpZW50KCkgOiAwKSk7CisgICAgICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xp
ZW50ID0gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmdldCgpOworICAgIH0KICAgICBt
X3BhZ2Uuc2V0KG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CiAKLSAgICAvLyB0aGUgcGFnZSB3aWxs
IHRha2Ugb3duZXJzaGlwIG9mIHRoZSB2YXJpb3VzIGNsaWVudHMKLQogICAgIG1fcGFnZS0+YmFj
a0ZvcndhcmRMaXN0KCktPnNldENsaWVudCgmbV9iYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsKTsK
ICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZShwYWdlR3JvdXBOYW1lKTsKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCmluZGV4IDUzMGZiZjViOWJlOTMzZTliMzQyNjg1M2YzOWY4MWYzNDE4MTNh
M2QuLmM3NjgzNzA5MWE3NmZhMzU3NzU5MTI5MWMyYTgyMjAwY2JiMzZhZTcgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKQEAgLTcxLDEwICs3MSwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIEF1dG9jb21wbGV0ZVBvcHVwTWVudUNsaWVudDsKIGNsYXNzIEF1dG9GaWxsUG9wdXBN
ZW51Q2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnRJbXBsOworY2xhc3MgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRQcm94eTsKIGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKIGNsYXNzIFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3Mg
V2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dDsKIGNsYXNzIFdlYkZyYW1lSW1wbDsKIGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViS2V5Ym9h
cmRFdmVudDsKQEAgLTUxOSw2ICs1MjEsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBPd25Q
dHI8V2ViR0xFUzJDb250ZXh0PiBtX2dsZXMyQ29udGV4dDsKKworICAgIE93blB0cjxEZXZpY2VP
cmllbnRhdGlvbkNsaWVudFByb3h5PiBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63884</attachid>
            <date>2010-08-09 04:28:53 -0700</date>
            <delta_ts>2010-08-09 08:44:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43258-20100809122850.patch</filename>
            <type>text/plain</type>
            <size>32963</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGE0Yzg0NWNhNzJmZmM1ODgzODM2MDc2OTNkNGE5YjhhOTVjNTI2MzAu
LjBlNDQzODM5Mzk3Zjg5YWQyMmRmZTIxNGZkZmYxM2YwOTljYmE0MTUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU2IEBACisyMDEwLTA4LTA5ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGNocm9taXVtIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHdyYXBwZXIgYW5k
IGhhdmUgV2ViVmlld0ltcGwgZ2V0IGl0IGZyb20gV2ViVmlld0NsaWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMjU4CisKKyAgICAgICAgUHJv
dmlkZSBhIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHRvIFBhZ2UgYnkgbWVhbnMgb2YgYQorICAg
ICAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5IHRoYXQgcHJveGllcyBjYWxscyB0bwor
ICAgICAgICBhIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LCBhbiBpbnRlcmZhY2UgdGhhdCBj
YW4gYmUgaW1wbGVtZW50ZWQKKyAgICAgICAgaW4gdGhlIFdlYktpdCBvciBDaHJvbWl1bSBsYXll
ci4gQW4gaW1wbGVtZW50YXRpb24gdG8gYmUgdXNlZCBmb3IKKyAgICAgICAgbGF5b3V0IHRlc3Rz
LCB3cmFwcGluZyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2ssIGlzIHByb3ZpZGVkLgorCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZpY2VPcmllbnRh
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb246Oldl
YkRldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50Ojp+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
Ojp+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OldlYkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcik6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0NsaWVudDo6ZGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAqIHNy
Yy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk6OnNldENvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6c3RvcFVwZGF0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6bGFz
dE9yaWVudGF0aW9uKToKKyAgICAgICAgKiBzcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eSk6CisgICAgICAgICogc3JjL1dlYkRldmlj
ZU9yaWVudGF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVu
dGF0aW9uOjpXZWJEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRldmlj
ZU9yaWVudGF0aW9uOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmll
bnRhdGlvbjo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4p
OgorICAgICAgICAqIHNyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzZXRD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s6Omxhc3RPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0T3JpZW50YXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnJlc2V0KToK
KyAgICAgICAgKiBzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6ZGlkQ2hh
bmdlRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6
CisKIDIwMTAtMDgtMDcgIEpheSBDaXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAwNmZkODJj
YmI5YmU5MDAxY2M2N2ZjODQ3MDRhMDZiNjMzOThkOWMzLi5lYjVhYmJlZTVmOWE5YTliMjJjZTEz
MDFmZjliYzVmNzAzNDM1MGEyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTQyLDYgKzE0MiwxMCBAQAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmgnLAorICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oJywKKyAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkRvY3VtZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRG9jdW1l
bnRUeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRHJhZ0RhdGEuaCcsCkBAIC0y
OTYsNiArMzAwLDggQEAKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmgnLAorICAgICAgICAgICAgICAg
ICdzcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5jcHAnLAorICAgICAgICAgICAgICAg
ICdzcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5oJywKICAgICAgICAgICAgICAgICAn
c3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0RPTVV0
aWxpdGllc1ByaXZhdGUuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9EcmFnQ2xpZW50SW1wbC5j
cHAnLApAQCAtMzc4LDYgKzM4NCw5IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJ
bXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5o
JywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVudGF0aW9uLmNwcCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwJywKKyAg
ICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViRG9jdW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkRvY3VtZW50VHlwZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRHJhZ0Rh
dGEuY3BwJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3Jp
ZW50YXRpb24uaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iODY3YmVjOGUwZDRiNTE0Nzg2NDI3ZmMwNzZlOWI0M2EzZWQ4MTc4Ci0t
LSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRh
dGlvbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRldmljZU9yaWVudGF0
aW9uX2gKKyNkZWZpbmUgV2ViRGV2aWNlT3JpZW50YXRpb25faAorCisjaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBh
c3NSZWZQdHI7IH0KK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRGV2aWNlT3JpZW50YXRpb247
IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGV2aWNlT3JpZW50
YXRpb24geworcHVibGljOgorICAgIFdlYkRldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlk
ZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBi
b29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKQorICAgICAgICA6IG1faXNOdWxsKGZh
bHNlKSwKKyAgICAgICAgICBtX2NhblByb3ZpZGVBbHBoYShjYW5Qcm92aWRlQWxwaGEpLAorICAg
ICAgICAgIG1fYWxwaGEoYWxwaGEpLAorICAgICAgICAgIG1fY2FuUHJvdmlkZUJldGEoY2FuUHJv
dmlkZUJldGEpLAorICAgICAgICAgIG1fYmV0YShiZXRhKSwKKyAgICAgICAgICBtX2NhblByb3Zp
ZGVHYW1tYShjYW5Qcm92aWRlR2FtbWEpLAorICAgICAgICAgIG1fZ2FtbWEoZ2FtbWEpCisgICAg
eworICAgIH0KKworICAgIHN0YXRpYyBXZWJEZXZpY2VPcmllbnRhdGlvbiBudWxsT3JpZW50YXRp
b24oKSB7IHJldHVybiBXZWJEZXZpY2VPcmllbnRhdGlvbigpOyB9CisKKyAgICBib29sIGlzTnVs
bCgpIHsgcmV0dXJuIG1faXNOdWxsOyB9CisgICAgYm9vbCBjYW5Qcm92aWRlQWxwaGEoKSB7IHJl
dHVybiBtX2NhblByb3ZpZGVBbHBoYTsgfQorICAgIGRvdWJsZSBhbHBoYSgpIHsgcmV0dXJuIG1f
YWxwaGE7IH0KKyAgICBib29sIGNhblByb3ZpZGVCZXRhKCkgeyByZXR1cm4gbV9jYW5Qcm92aWRl
QmV0YTsgfQorICAgIGRvdWJsZSBiZXRhKCkgeyByZXR1cm4gbV9iZXRhOyB9CisgICAgYm9vbCBj
YW5Qcm92aWRlR2FtbWEoKSB7IHJldHVybiBtX2NhblByb3ZpZGVHYW1tYTsgfQorICAgIGRvdWJs
ZSBnYW1tYSgpIHsgcmV0dXJuIG1fZ2FtbWE7IH0KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIFdlYkRldmljZU9yaWVudGF0aW9uKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpEZXZpY2VPcmllbnRhdGlvbj4mKTsKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbiYgb3BlcmF0
b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4mKTsK
KyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+
KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbigp
IDogbV9pc051bGwodHJ1ZSkge30KKworICAgIGJvb2wgbV9pc051bGw7CisgICAgYm9vbCBtX2Nh
blByb3ZpZGVBbHBoYTsKKyAgICBkb3VibGUgbV9hbHBoYTsKKyAgICBib29sIG1fY2FuUHJvdmlk
ZUJldGE7CisgICAgZG91YmxlIG1fYmV0YTsKKyAgICBib29sIG1fY2FuUHJvdmlkZUdhbW1hOwor
ICAgIGRvdWJsZSBtX2dhbW1hOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBXZWJEZXZpY2VPcmllbnRhdGlvbl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRmODY2NTU5NTNi
YzA1NWRlMDg4NmY1N2NiMzNlNTljMGE1YmU2OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaApAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudF9oCisjZGVmaW5l
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkRldmljZU9yaWVudGF0aW9uOworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyOworCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7fQorCisgICAgdmlydHVh
bCB2b2lkIHNldENvbnRyb2xsZXIoV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzdG9wVXBkYXRpbmcoKSA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYkRldmljZU9yaWVudGF0aW9u
IGxhc3RPcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRfaApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjFhODI1M2RmNDM4YjAxYmViZDcwOTlkNTcxYWJjNDRkYjBmNmE3NQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrX2gKKyNkZWZpbmUgV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrOyB9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sgOiBwdWJsaWMgV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQgeworcHVibGljOgorICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpIHsg
aW5pdGlhbGl6ZSgpOyB9CisgICAgfldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpIHsg
cmVzZXQoKTsgfQorCisgICAgdm9pZCBzZXRDb250cm9sbGVyKFdlYkRldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlciopOworICAgIHZvaWQgc3RhcnRVcGRhdGluZygpOworICAgIHZvaWQgc3RvcFVw
ZGF0aW5nKCk7CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb24gbGFzdE9yaWVudGF0aW9uKCkgY29u
c3Q7CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0T3JpZW50YXRpb24oV2ViRGV2aWNlT3JpZW50
YXRpb24mKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKyAgICB2b2lkIHJl
c2V0KCk7CisKKyAgICBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIG1fY2xp
ZW50TW9jazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmggYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmODQz
ZWUwNzQxYTdlNjY0NjNiNjMyNmVmZDE0ZDA1ZWVmMWEwZGQKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCkBA
IC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcl9oCisjZGVmaW5lIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcl9oCisKKyNpbmNs
dWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXI7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRl
dmljZU9yaWVudGF0aW9uOworCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIg
eworcHVibGljOgorICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihXZWJDb3JlOjpE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGMpCisgICAgICAgIDogbV9jb250cm9sbGVyKGMp
CisgICAgeworICAgIH0KKworICAgIFdFQktJVF9BUEkgdm9pZCBkaWRDaGFuZ2VEZXZpY2VPcmll
bnRhdGlvbihjb25zdCBXZWJEZXZpY2VPcmllbnRhdGlvbiYpOworCisjaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCisgICAgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBjb250
cm9sbGVyKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyX2gKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggNDYyOGMyZjQ0M2QzNTAyZmU1
MmI3NjQyYmE0ODViMDM3ZGE1NTI1NC4uYzY0NDE4YmEyNzcyZDk1ZjE5MTkzODJmMmE5OTMwM2Nh
YzMwYThiNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50
LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTQ0LDYg
KzQ0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiBjbGFzcyBXZWJEcmFnRGF0
YTsKIGNsYXNzIFdlYkVsZW1lbnQ7CiBjbGFzcyBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb247CkBA
IC0zNDEsNiArMzQyLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlNwZWVjaElucHV0Q29u
dHJvbGxlciogc3BlZWNoSW5wdXRDb250cm9sbGVyKAogICAgICAgICBXZWJTcGVlY2hJbnB1dExp
c3RlbmVyKikgeyByZXR1cm4gMDsgfQogCisgICAgLy8gRGV2aWNlIE9yaWVudGF0aW9uIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBB
Y2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBmb3IgZGV2aWNlIG9yaWVudGF0aW9uIHNlcnZpY2VzLgor
ICAgIHZpcnR1YWwgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGRldmljZU9yaWVudGF0aW9u
Q2xpZW50KCkgeyByZXR1cm4gMDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlZpZXdDbGllbnQo
KSB7IH0KIH07CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0RldmljZU9yaWVudGF0
aW9uQ2xpZW50UHJveHkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlv
bkNsaWVudFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGEwZGQ5OTZjZjFlNTcxNWUyMjY0ZTliZDc0
OTMxMWYwNWFmMWVjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZp
Y2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHku
aCIKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNl
T3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Zv
aWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6c2V0Q29udHJvbGxlcihXZWJDb3JlOjpE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGMpCit7CisgICAgaWYgKCFtX2NsaWVudCkgLy8g
RklYTUU6IEdldCByaWQgb2YgdGhlc2UgbnVsbCBjaGVja3Mgb25jZSBkZXZpY2Ugb3JpZW50YXRp
b24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQt
PnNldENvbnRyb2xsZXIobmV3IFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihjKSk7Cit9
CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6c3RhcnRVcGRhdGluZygpCit7
CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LT5zdGFy
dFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6c3Rv
cFVwZGF0aW5nKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAg
bV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworfQorCitXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlv
biogRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6bGFzdE9yaWVudGF0aW9uKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIENhY2hl
IHRoZSBEZXZpY2VPcmllbnRhdGlvbiBwb2ludGVyIHNvIGl0cyByZWZlcmVuY2UgY291bnQgZG9l
cyBub3QgZHJvcCB0byB6ZXJvIHVwb24gcmV0dXJuLgorICAgIG1fbGFzdE9yaWVudGF0aW9uID0g
bV9jbGllbnQtPmxhc3RPcmllbnRhdGlvbigpOworCisgICAgcmV0dXJuIG1fbGFzdE9yaWVudGF0
aW9uLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5oIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQz
YTdkY2U0Y2YyYTQ3Y2E5ZTRlN2Y2NTBmYWE3NzhhZjY1MDc1ZgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5oCkBAIC0w
LDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHlf
aAorI2RlZmluZSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5X2gKKworI2luY2x1ZGUgIkRl
dmljZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIK
KyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRGV2aWNlT3JpZW50
YXRpb25DbGllbnRQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCB7CitwdWJsaWM6CisgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudCogY2xpZW50KQorICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAg
ICB7CisgICAgfQorCisgICAgdm9pZCBzZXRDb250cm9sbGVyKFdlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlciopOworICAgIHZvaWQgc3RhcnRVcGRhdGluZygpOworICAgIHZvaWQg
c3RvcFVwZGF0aW5nKCk7CisgICAgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmll
bnRhdGlvbigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50KiBtX2NsaWVudDsKKyAgICBtdXRhYmxlIFJlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRh
dGlvbj4gbV9sYXN0T3JpZW50YXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHlfaApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbi5jcHAgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTQ4NGVhNWFlZDQ0
Zjc0ODNlNjBjYjBjNGVhYmRiOGNhOWViYWEyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbi5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbi5o
IgorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViRGV2aWNlT3JpZW50YXRpb246Oldl
YkRldmljZU9yaWVudGF0aW9uKGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50
YXRpb24+JiBvcmllbnRhdGlvbikKK3sKKyAgICBpZiAoIW9yaWVudGF0aW9uKSB7CisgICAgICAg
IG1faXNOdWxsID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faXNOdWxs
ID0gZmFsc2U7CisgICAgbV9jYW5Qcm92aWRlQWxwaGEgPSBvcmllbnRhdGlvbi0+Y2FuUHJvdmlk
ZUFscGhhKCk7CisgICAgbV9hbHBoYSA9IG9yaWVudGF0aW9uLT5hbHBoYSgpOworICAgIG1fY2Fu
UHJvdmlkZUJldGEgPSBvcmllbnRhdGlvbi0+Y2FuUHJvdmlkZUJldGEoKTsKKyAgICBtX2JldGEg
PSBvcmllbnRhdGlvbi0+YmV0YSgpOworICAgIG1fY2FuUHJvdmlkZUdhbW1hID0gb3JpZW50YXRp
b24tPmNhblByb3ZpZGVHYW1tYSgpOworICAgIG1fZ2FtbWEgPSBvcmllbnRhdGlvbi0+Z2FtbWEo
KTsKK30KKworV2ViRGV2aWNlT3JpZW50YXRpb24mIFdlYkRldmljZU9yaWVudGF0aW9uOjpvcGVy
YXRvcj0oY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4mIG9yaWVu
dGF0aW9uKQoreworICAgIGlmICghb3JpZW50YXRpb24pIHsKKyAgICAgICAgbV9pc051bGwgPSB0
cnVlOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgbV9pc051bGwgPSBmYWxz
ZTsKKyAgICBtX2NhblByb3ZpZGVBbHBoYSA9IG9yaWVudGF0aW9uLT5jYW5Qcm92aWRlQWxwaGEo
KTsKKyAgICBtX2FscGhhID0gb3JpZW50YXRpb24tPmFscGhhKCk7CisgICAgbV9jYW5Qcm92aWRl
QmV0YSA9IG9yaWVudGF0aW9uLT5jYW5Qcm92aWRlQmV0YSgpOworICAgIG1fYmV0YSA9IG9yaWVu
dGF0aW9uLT5iZXRhKCk7CisgICAgbV9jYW5Qcm92aWRlR2FtbWEgPSBvcmllbnRhdGlvbi0+Y2Fu
UHJvdmlkZUdhbW1hKCk7CisgICAgbV9nYW1tYSA9IG9yaWVudGF0aW9uLT5nYW1tYSgpOworICAg
IHJldHVybiAqdGhpczsKK30KKworV2ViRGV2aWNlT3JpZW50YXRpb246Om9wZXJhdG9yIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+KCkgY29uc3QKK3sKKyAgICBpZiAobV9p
c051bGwpCisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0
aW9uPigwKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb246OmNyZWF0ZSht
X2NhblByb3ZpZGVBbHBoYSwgbV9hbHBoYSwgbV9jYW5Qcm92aWRlQmV0YSwgbV9iZXRhLCBtX2Nh
blByb3ZpZGVHYW1tYSwgbV9nYW1tYSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2suY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM1ZWZlNTFmODFjODM0NDRjMTNiZWM2OWYzYmRhOWQ2MDM0M2Qw
MDcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKKwor
I2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgorI2luY2x1ZGUgIldlYkRl
dmljZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jazo6c2V0Q29udHJvbGxlcihXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIpCit7CisgICAgbV9jbGllbnRNb2NrLT5zZXRDb250cm9sbGVyKGNvbnRyb2xs
ZXItPmNvbnRyb2xsZXIoKSk7Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrOjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2NsaWVudE1vY2stPnN0YXJ0VXBkYXRpbmco
KTsKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGlu
ZygpCit7CisgICAgbV9jbGllbnRNb2NrLT5zdG9wVXBkYXRpbmcoKTsKK30KKworV2ViRGV2aWNl
T3JpZW50YXRpb24gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpsYXN0T3JpZW50YXRp
b24oKSBjb25zdAoreworICAgIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uKiBsYXN0T3JpZW50
YXRpb24gPSBtX2NsaWVudE1vY2stPmxhc3RPcmllbnRhdGlvbigpOworICAgIHJldHVybiBXZWJE
ZXZpY2VPcmllbnRhdGlvbihsYXN0T3JpZW50YXRpb24pOworfQorCit2b2lkIFdlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jazo6c2V0T3JpZW50YXRpb24oV2ViRGV2aWNlT3JpZW50YXRpb24m
IG9yaWVudGF0aW9uKQoreworICAgIG1fY2xpZW50TW9jay0+c2V0T3JpZW50YXRpb24ob3JpZW50
YXRpb24pOworfQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6aW5pdGlh
bGl6ZSgpCit7CisgICAgbV9jbGllbnRNb2NrID0gbmV3IFdlYkNvcmU6OkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jaygpOworfQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
azo6cmVzZXQoKQoreworICAgIGRlbGV0ZSBtX2NsaWVudE1vY2s7CisgICAgbV9jbGllbnRNb2Nr
ID0gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWE5MjQ5Zjc2NzEwZjg3MGMwM2JkMzkxZDFmZTFjODcxM2ZlMmZiMgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNw
cApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3Jp
ZW50YXRpb24uaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlcjo6ZGlkQ2hhbmdlRGV2aWNlT3JpZW50YXRpb24oY29uc3QgV2ViRGV2aWNlT3JpZW50
YXRpb24mIG9yaWVudGF0aW9uKQoreworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3Jp
ZW50YXRpb24+IGRldmljZU9yaWVudGF0aW9uKG9yaWVudGF0aW9uKTsKKyAgICBtX2NvbnRyb2xs
ZXItPmRpZENoYW5nZURldmljZU9yaWVudGF0aW9uKGRldmljZU9yaWVudGF0aW9uLmdldCgpKTsK
K30KKworV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBXZWJEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2Nv
bnRyb2xsZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAppbmRleCA4NWRhYjRiNmRmMDBhMWFhZjFhNThkYzcyZDdjNTMzOTYyM2QyMjg5
Li5iZjM2YTQyZjFlYjI5OGNmZmVhNjA2ZmQ3OWU3ODVhZTAzNGIwNDU4IDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxl
U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ3Vy
c29yLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJE
T01VdGlsaXRpZXNQcml2YXRlLmgiCkBAIC0xNzcsOSArMTc4LDYgQEAgc3RhdGljIGNvbnN0IFBv
cHVwQ29udGFpbmVyU2V0dGluZ3MgYXV0b0ZpbGxQb3B1cFNldHRpbmdzID0gewogCiBXZWJWaWV3
KiBXZWJWaWV3OjpjcmVhdGUoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50
Q2xpZW50KiBkZXZUb29sc0NsaWVudCkKIHsKLSAgICAvLyBLZWVwIHJ1bnRpbWUgZmxhZyBmb3Ig
ZGV2aWNlIG9yaWVudGF0aW9uIHR1cm5lZCBvZmYgdW50aWwgaXQncyBpbXBsZW1lbnRlZC4KLSAg
ICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZURldmljZU9yaWVudGF0aW9uKGZhbHNlKTsKLQog
ICAgIC8vIFBhc3MgdGhlIFdlYlZpZXdJbXBsJ3Mgc2VsZi1yZWZlcmVuY2UgdG8gdGhlIGNhbGxl
ci4KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZXdJbXBsKGNsaWVudCwgZGV2VG9vbHND
bGllbnQpKS5sZWFrUmVmKCk7CiB9CkBAIC0yNjYsNiArMjY0LDcgQEAgV2ViVmlld0ltcGw6Oldl
YlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCog
ZGV2VG9vbHMKICAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoY2xpZW50KQogI2VuZGlmCiAgICAg
LCBtX2dsZXMyQ29udGV4dCgwKQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
KG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5KGNsaWVudCA/IGNsaWVudC0+ZGV2aWNl
T3JpZW50YXRpb25DbGllbnQoKSA6IDApKQogewogICAgIC8vIFdlYktpdC93aW4vV2ViVmlldy5j
cHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0aGUKICAgICAvLyBLSlMg
c3BlY2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdlIG5lZWQgdG8gaGF2ZSB0aHJl
YWRpbmcKQEAgLTI4OCw5ICsyODcsMTAgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZp
ZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQogICAgIHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0g
Jm1fc3BlZWNoSW5wdXRDbGllbnQ7CiAjZW5kaWYKLSAgICBtX3BhZ2Uuc2V0KG5ldyBQYWdlKHBh
Z2VDbGllbnRzKSk7CisgICAgaWYgKFdlYlJ1bnRpbWVGZWF0dXJlczo6aXNEZXZpY2VPcmllbnRh
dGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGll
bnQgPSBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAKLSAgICAvLyB0aGUg
cGFnZSB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRoZSB2YXJpb3VzIGNsaWVudHMKKyAgICBtX3Bh
Z2Uuc2V0KG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CiAKICAgICBtX3BhZ2UtPmJhY2tGb3J3YXJk
TGlzdCgpLT5zZXRDbGllbnQoJm1fYmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbCk7CiAgICAgbV9w
YWdlLT5zZXRHcm91cE5hbWUocGFnZUdyb3VwTmFtZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKaW5kZXggNTMwZmJmNWI5YmU5MzNlOWIzNDI2ODUzZjM5ZjgxZjM0MTgxM2EzZC4uYzc2ODM3
MDkxYTc2ZmEzNTc3NTkxMjkxYzJhODIyMDBjYmIzNmFlNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaApAQCAtNzEsMTAgKzcxLDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0
b2NvbXBsZXRlUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQ7
CiBjbGFzcyBDb250ZXh0TWVudUNsaWVudEltcGw7CitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5OwogY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJEZXZUb29s
c0FnZW50UHJpdmF0ZTsKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OwogY2xhc3Mg
V2ViRnJhbWVJbXBsOwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwpA
QCAtNTE5LDYgKzUyMSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIE93blB0cjxXZWJHTEVT
MkNvbnRleHQ+IG1fZ2xlczJDb250ZXh0OworCisgICAgT3duUHRyPERldmljZU9yaWVudGF0aW9u
Q2xpZW50UHJveHk+IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63896</attachid>
            <date>2010-08-09 08:44:19 -0700</date>
            <delta_ts>2010-08-09 09:30:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43258-20100809164416.patch</filename>
            <type>text/plain</type>
            <size>32952</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGU0YTdhNDQ5ZmY0ZWM3NzVhNTExZjUwOWMwZmIzNzQwNGIxMmE3M2Uu
LmQ4MThkM2RiMDFlZWEzNDUyYmY1MjE5NmZjYTJhZDVmODUwMGJhZTEgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU2IEBACisyMDEwLTA4LTA5ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGNocm9taXVtIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHdyYXBwZXIgYW5k
IGhhdmUgV2ViVmlld0ltcGwgZ2V0IGl0IGZyb20gV2ViVmlld0NsaWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMjU4CisKKyAgICAgICAgUHJv
dmlkZSBhIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHRvIFBhZ2UgYnkgbWVhbnMgb2YgYQorICAg
ICAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5IHRoYXQgcHJveGllcyBjYWxscyB0bwor
ICAgICAgICBhIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LCBhbiBpbnRlcmZhY2UgdGhhdCBj
YW4gYmUgaW1wbGVtZW50ZWQKKyAgICAgICAgaW4gdGhlIFdlYktpdCBvciBDaHJvbWl1bSBsYXll
ci4gQW4gaW1wbGVtZW50YXRpb24gdG8gYmUgdXNlZCBmb3IKKyAgICAgICAgbGF5b3V0IHRlc3Rz
LCB3cmFwcGluZyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2ssIGlzIHByb3ZpZGVkLgorCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZpY2VPcmllbnRh
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb246Oldl
YkRldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50Ojp+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
Ojp+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OldlYkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcik6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0NsaWVudDo6ZGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAqIHNy
Yy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk6OnNldENvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6c3RvcFVwZGF0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6bGFz
dE9yaWVudGF0aW9uKToKKyAgICAgICAgKiBzcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eSk6CisgICAgICAgICogc3JjL1dlYkRldmlj
ZU9yaWVudGF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVu
dGF0aW9uOjpXZWJEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRldmlj
ZU9yaWVudGF0aW9uOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmll
bnRhdGlvbjo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4p
OgorICAgICAgICAqIHNyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzZXRD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s6Omxhc3RPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0T3JpZW50YXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnJlc2V0KToK
KyAgICAgICAgKiBzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6ZGlkQ2hh
bmdlRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6
CisKIDIwMTAtMDgtMDkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgTm90IHJldmlld2VkOiBDaHJvbWl1bSB0ZXN0cyBmaXguCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmlu
ZGV4IDA2ZmQ4MmNiYjliZTkwMDFjYzY3ZmM4NDcwNGEwNmI2MzM5OGQ5YzMuLmViNWFiYmVlNWY5
YTlhOWIyMmNlMTMwMWZmOWJjNWY3MDM0MzUwYTIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xNDIsNiAr
MTQyLDEwIEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaCcsCisgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbi5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgnLAorICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRG9jdW1lbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJEb2N1bWVudFR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEcmFnRGF0
YS5oJywKQEAgLTI5Niw2ICszMDAsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJB
Z2VudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuaCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmNwcCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0RyYWdD
bGllbnRJbXBsLmNwcCcsCkBAIC0zNzgsNiArMzg0LDkgQEAKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2VG9v
bHNGcm9udGVuZEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldlRvb2xzRnJv
bnRlbmRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRpb24u
Y3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
ay5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEb2N1bWVudC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViRG9jdW1lbnRUeXBlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJEcmFnRGF0YS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEZXZpY2VPcmllbnRhdGlvbi5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VP
cmllbnRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4NjdiZWM4ZTBkNGI1MTQ3ODY0MjdmYzA3NmU5YjQz
YTNlZDgxNzgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRl
dmljZU9yaWVudGF0aW9uLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGV2
aWNlT3JpZW50YXRpb25faAorI2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlvbl9oCisKKyNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY2xhc3MgUGFzc1JlZlB0cjsgfQorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZpY2VP
cmllbnRhdGlvbjsgfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJE
ZXZpY2VPcmllbnRhdGlvbiB7CitwdWJsaWM6CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb24oYm9v
bCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91
YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCisgICAgICAgIDog
bV9pc051bGwoZmFsc2UpLAorICAgICAgICAgIG1fY2FuUHJvdmlkZUFscGhhKGNhblByb3ZpZGVB
bHBoYSksCisgICAgICAgICAgbV9hbHBoYShhbHBoYSksCisgICAgICAgICAgbV9jYW5Qcm92aWRl
QmV0YShjYW5Qcm92aWRlQmV0YSksCisgICAgICAgICAgbV9iZXRhKGJldGEpLAorICAgICAgICAg
IG1fY2FuUHJvdmlkZUdhbW1hKGNhblByb3ZpZGVHYW1tYSksCisgICAgICAgICAgbV9nYW1tYShn
YW1tYSkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIFdlYkRldmljZU9yaWVudGF0aW9uIG51
bGxPcmllbnRhdGlvbigpIHsgcmV0dXJuIFdlYkRldmljZU9yaWVudGF0aW9uKCk7IH0KKworICAg
IGJvb2wgaXNOdWxsKCkgeyByZXR1cm4gbV9pc051bGw7IH0KKyAgICBib29sIGNhblByb3ZpZGVB
bHBoYSgpIHsgcmV0dXJuIG1fY2FuUHJvdmlkZUFscGhhOyB9CisgICAgZG91YmxlIGFscGhhKCkg
eyByZXR1cm4gbV9hbHBoYTsgfQorICAgIGJvb2wgY2FuUHJvdmlkZUJldGEoKSB7IHJldHVybiBt
X2NhblByb3ZpZGVCZXRhOyB9CisgICAgZG91YmxlIGJldGEoKSB7IHJldHVybiBtX2JldGE7IH0K
KyAgICBib29sIGNhblByb3ZpZGVHYW1tYSgpIHsgcmV0dXJuIG1fY2FuUHJvdmlkZUdhbW1hOyB9
CisgICAgZG91YmxlIGdhbW1hKCkgeyByZXR1cm4gbV9nYW1tYTsgfQorCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisgICAgV2ViRGV2aWNlT3JpZW50YXRpb24oY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uPiYpOworICAgIFdlYkRldmljZU9yaWVudGF0
aW9uJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uPiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VP
cmllbnRhdGlvbj4oKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkRldmljZU9y
aWVudGF0aW9uKCkgOiBtX2lzTnVsbCh0cnVlKSB7fQorCisgICAgYm9vbCBtX2lzTnVsbDsKKyAg
ICBib29sIG1fY2FuUHJvdmlkZUFscGhhOworICAgIGRvdWJsZSBtX2FscGhhOworICAgIGJvb2wg
bV9jYW5Qcm92aWRlQmV0YTsKKyAgICBkb3VibGUgbV9iZXRhOworICAgIGJvb2wgbV9jYW5Qcm92
aWRlR2FtbWE7CisgICAgZG91YmxlIG1fZ2FtbWE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFdlYkRldmljZU9yaWVudGF0aW9uX2gKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZGY4NjY1NTk1M2JjMDU1ZGUwODg2ZjU3Y2IzM2U1OWMwYTViZTY4Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
X2gKKyNkZWZpbmUgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRfaAorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb247CitjbGFzcyBXZWJEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXI7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIHt9CisK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpID0gMDsKKworICAgIHZpcnR1YWwgV2ViRGV2aWNl
T3JpZW50YXRpb24gbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudF9oCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjRkNjJiZTFlOWFiOTEzMDhhM2RhZDcwMDcyYjA4ZWNk
YjEwMmRiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2suaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAorI2RlZmluZSBXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2tfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAi
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFz
cyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayA6IHB1YmxpYyBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrKCkgeyBpbml0aWFsaXplKCk7IH0KKyAgICB+V2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrKCkgeyByZXNldCgpOyB9CisKKyAgICB2b2lkIHNldENvbnRyb2xsZXIoV2ViRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyKik7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAg
dm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbiBsYXN0T3JpZW50
YXRpb24oKSBjb25zdDsKKworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRPcmllbnRhdGlvbihXZWJE
ZXZpY2VPcmllbnRhdGlvbiYpOworCitwcml2YXRlOgorICAgIFdFQktJVF9BUEkgdm9pZCBpbml0
aWFsaXplKCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIHJlc2V0KCk7CisKKyAgICBXZWJDb3JlOjpE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIG1fY2xpZW50TW9jazsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
X2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmODQzZWUwNzQxYTdlNjY0NjNiNjMyNmVmZDE0
ZDA1ZWVmMWEwZGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcl9oCisjZGVmaW5lIFdlYkRldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7IH0KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uOworCitjbGFz
cyBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIgeworcHVibGljOgorICAgIFdlYkRldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlcihXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIqIGMpCisgICAgICAgIDogbV9jb250cm9sbGVyKGMpCisgICAgeworICAgIH0KKworICAgIFdF
QktJVF9BUEkgdm9pZCBkaWRDaGFuZ2VEZXZpY2VPcmllbnRhdGlvbihjb25zdCBXZWJEZXZpY2VP
cmllbnRhdGlvbiYpOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyKCkgY29uc3Q7CisjZW5kaWYK
KworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIG1f
Y29udHJvbGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2Vi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3
Q2xpZW50LmgKaW5kZXggNDYyOGMyZjQ0M2QzNTAyZmU1MmI3NjQyYmE0ODViMDM3ZGE1NTI1NC4u
YzY0NDE4YmEyNzcyZDk1ZjE5MTkzODJmMmE5OTMwM2NhYzMwYThiNiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OworY2xhc3MgV2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQ7CiBjbGFzcyBXZWJEcmFnRGF0YTsKIGNsYXNzIFdlYkVsZW1lbnQ7CiBj
bGFzcyBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb247CkBAIC0zNDEsNiArMzQyLDExIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciogc3BlZWNoSW5wdXRDb250
cm9sbGVyKAogICAgICAgICBXZWJTcGVlY2hJbnB1dExpc3RlbmVyKikgeyByZXR1cm4gMDsgfQog
CisgICAgLy8gRGV2aWNlIE9yaWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBBY2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBm
b3IgZGV2aWNlIG9yaWVudGF0aW9uIHNlcnZpY2VzLgorICAgIHZpcnR1YWwgV2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQqIGRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgeyByZXR1cm4gMDsgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgfldlYlZpZXdDbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNGEwZGQ5OTZjZjFlNTcxNWUyMjY0ZTliZDc0OTMxMWYwNWFmMWVjCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
LmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuaCIKKworI2luY2x1ZGUgIkRldmljZU9y
aWVudGF0aW9uLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRl
ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
cjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGll
bnRQcm94eTo6c2V0Q29udHJvbGxlcihXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIqIGMpCit7CisgICAgaWYgKCFtX2NsaWVudCkgLy8gRklYTUU6IEdldCByaWQgb2YgdGhlc2Ug
bnVsbCBjaGVja3Mgb25jZSBkZXZpY2Ugb3JpZW50YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0
LgorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPnNldENvbnRyb2xsZXIobmV3IFdlYkRl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihjKSk7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRp
b25DbGllbnRQcm94eTo6c3RhcnRVcGRhdGluZygpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LT5zdGFydFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQg
RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6c3RvcFVwZGF0aW5nKCkKK3sKKyAgICBpZiAo
IW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygp
OworfQorCitXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbiogRGV2aWNlT3JpZW50YXRpb25DbGll
bnRQcm94eTo6bGFzdE9yaWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fY2xpZW50KQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIENhY2hlIHRoZSBEZXZpY2VPcmllbnRhdGlvbiBw
b2ludGVyIHNvIGl0cyByZWZlcmVuY2UgY291bnQgZG9lcyBub3QgZHJvcCB0byB6ZXJvIHVwb24g
cmV0dXJuLgorICAgIG1fbGFzdE9yaWVudGF0aW9uID0gbV9jbGllbnQtPmxhc3RPcmllbnRhdGlv
bigpOworCisgICAgcmV0dXJuIG1fbGFzdE9yaWVudGF0aW9uLmdldCgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRQcm94eS5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQzYTdkY2U0Y2YyYTQ3Y2E5ZTRlN2Y2NTBm
YWE3NzhhZjY1MDc1ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2
aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHlfaAorI2RlZmluZSBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudFByb3h5X2gKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uLmgiCisjaW5j
bHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eSA6IHB1Ymxp
YyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAgRGV2aWNl
T3JpZW50YXRpb25DbGllbnRQcm94eShXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogY2xpZW50
KQorICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBz
ZXRDb250cm9sbGVyKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciopOworICAg
IHZvaWQgc3RhcnRVcGRhdGluZygpOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisgICAgV2Vi
Q29yZTo6RGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0OworCitwcml2
YXRlOgorICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBtdXRh
YmxlIFJlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4gbV9sYXN0T3JpZW50YXRpb247
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIERldmljZU9yaWVudGF0
aW9uQ2xpZW50UHJveHlfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZp
Y2VPcmllbnRhdGlvbi5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0
aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NDUwMTJmYzQ2ZGMzNDYyZTIzYWZmMWNmZmVhMjNlMDUyZjBl
MWFjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmll
bnRhdGlvbi5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3Jp
ZW50YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViRGV2aWNlT3JpZW50YXRpb246OldlYkRldmljZU9yaWVudGF0aW9uKGNvbnN0
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+JiBvcmllbnRhdGlvbikKK3sK
KyAgICBpZiAoIW9yaWVudGF0aW9uKSB7CisgICAgICAgIG1faXNOdWxsID0gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAgbV9jYW5Qcm92
aWRlQWxwaGEgPSBvcmllbnRhdGlvbi0+Y2FuUHJvdmlkZUFscGhhKCk7CisgICAgbV9hbHBoYSA9
IG9yaWVudGF0aW9uLT5hbHBoYSgpOworICAgIG1fY2FuUHJvdmlkZUJldGEgPSBvcmllbnRhdGlv
bi0+Y2FuUHJvdmlkZUJldGEoKTsKKyAgICBtX2JldGEgPSBvcmllbnRhdGlvbi0+YmV0YSgpOwor
ICAgIG1fY2FuUHJvdmlkZUdhbW1hID0gb3JpZW50YXRpb24tPmNhblByb3ZpZGVHYW1tYSgpOwor
ICAgIG1fZ2FtbWEgPSBvcmllbnRhdGlvbi0+Z2FtbWEoKTsKK30KKworV2ViRGV2aWNlT3JpZW50
YXRpb24mIFdlYkRldmljZU9yaWVudGF0aW9uOjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4mIG9yaWVudGF0aW9uKQoreworICAgIGlmICghb3Jp
ZW50YXRpb24pIHsKKyAgICAgICAgbV9pc051bGwgPSB0cnVlOworICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgfQorCisgICAgbV9pc051bGwgPSBmYWxzZTsKKyAgICBtX2NhblByb3ZpZGVBbHBo
YSA9IG9yaWVudGF0aW9uLT5jYW5Qcm92aWRlQWxwaGEoKTsKKyAgICBtX2FscGhhID0gb3JpZW50
YXRpb24tPmFscGhhKCk7CisgICAgbV9jYW5Qcm92aWRlQmV0YSA9IG9yaWVudGF0aW9uLT5jYW5Q
cm92aWRlQmV0YSgpOworICAgIG1fYmV0YSA9IG9yaWVudGF0aW9uLT5iZXRhKCk7CisgICAgbV9j
YW5Qcm92aWRlR2FtbWEgPSBvcmllbnRhdGlvbi0+Y2FuUHJvdmlkZUdhbW1hKCk7CisgICAgbV9n
YW1tYSA9IG9yaWVudGF0aW9uLT5nYW1tYSgpOworICAgIHJldHVybiAqdGhpczsKK30KKworV2Vi
RGV2aWNlT3JpZW50YXRpb246Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3Jp
ZW50YXRpb24+KCkgY29uc3QKK3sKKyAgICBpZiAobV9pc051bGwpCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbjo6Y3JlYXRlKG1fY2FuUHJv
dmlkZUFscGhhLCBtX2FscGhhLCBtX2NhblByb3ZpZGVCZXRhLCBtX2JldGEsIG1fY2FuUHJvdmlk
ZUdhbW1hLCBtX2dhbW1hKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDAxMWQxMmE4ZTVmZGVkNWI0MDQ1Y2NkYjE1MjM1YzdmZjA2NDIzMwotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgorCisjaW5jbHVk
ZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3Jp
ZW50YXRpb24uaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrOjpzZXRDb250cm9sbGVyKFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29udHJv
bGxlcikKK3sKKyAgICBtX2NsaWVudE1vY2stPnNldENvbnRyb2xsZXIoY29udHJvbGxlci0+Y29u
dHJvbGxlcigpKTsKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnN0
YXJ0VXBkYXRpbmcoKQoreworICAgIG1fY2xpZW50TW9jay0+c3RhcnRVcGRhdGluZygpOworfQor
Cit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3RvcFVwZGF0aW5nKCkKK3sK
KyAgICBtX2NsaWVudE1vY2stPnN0b3BVcGRhdGluZygpOworfQorCitXZWJEZXZpY2VPcmllbnRh
dGlvbiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6Omxhc3RPcmllbnRhdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdlYkRldmljZU9yaWVudGF0aW9uKG1fY2xpZW50TW9jay0+bGFz
dE9yaWVudGF0aW9uKCkpOworfQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
azo6c2V0T3JpZW50YXRpb24oV2ViRGV2aWNlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKQorewor
ICAgIG1fY2xpZW50TW9jay0+c2V0T3JpZW50YXRpb24ob3JpZW50YXRpb24pOworfQorCit2b2lk
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6aW5pdGlhbGl6ZSgpCit7CisgICAgbV9j
bGllbnRNb2NrID0gbmV3IFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOwor
fQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6cmVzZXQoKQoreworICAg
IGRlbGV0ZSBtX2NsaWVudE1vY2s7CisgICAgbV9jbGllbnRNb2NrID0gMDsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE5MjQ5Zjc2NzEwZjg3MGMw
M2JkMzkxZDFmZTFjODcxM2ZlMmZiMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIKKyNpbmNs
dWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VP
cmllbnRhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6ZGlkQ2hhbmdl
RGV2aWNlT3JpZW50YXRpb24oY29uc3QgV2ViRGV2aWNlT3JpZW50YXRpb24mIG9yaWVudGF0aW9u
KQoreworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+IGRldmljZU9y
aWVudGF0aW9uKG9yaWVudGF0aW9uKTsKKyAgICBtX2NvbnRyb2xsZXItPmRpZENoYW5nZURldmlj
ZU9yaWVudGF0aW9uKGRldmljZU9yaWVudGF0aW9uLmdldCgpKTsKK30KKworV2ViQ29yZTo6RGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6
OmNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRyb2xsZXI7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBk
OWJhYWNkNTRjODE1MTBhODgwZGYyNTVjNDg5N2Q4YTFkMmVmOWY2Li44NzMzYTJhZjYxOTFkN2My
OTk0ODMwNzg4MTI1NDAzZjA3YTZhN2QxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNs
dWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJET01VdGlsaXRpZXNQcml2YXRl
LmgiCkBAIC0xNzcsOSArMTc4LDggQEAgc3RhdGljIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGlu
Z3MgYXV0b0ZpbGxQb3B1cFNldHRpbmdzID0gewogCiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGUo
V2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29sc0Ns
aWVudCkKIHsKLSAgICAvLyBLZWVwIHJ1bnRpbWUgZmxhZyBmb3IgZGV2aWNlIG9yaWVudGF0aW9u
IHR1cm5lZCBvZmYgdW50aWwgaXQncyBpbXBsZW1lbnRlZC4KKyAgICAvLyBLZWVwIHJ1bnRpbWUg
ZmxhZyBmb3IgZGV2aWNlIG1vdGlvbiB0dXJuZWQgb2ZmIHVudGlsIGl0J3MgaW1wbGVtZW50ZWQu
CiAgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVEZXZpY2VNb3Rpb24oZmFsc2UpOwotICAg
IFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlRGV2aWNlT3JpZW50YXRpb24oZmFsc2UpOwogCiAg
ICAgLy8gUGFzcyB0aGUgV2ViVmlld0ltcGwncyBzZWxmLXJlZmVyZW5jZSB0byB0aGUgY2FsbGVy
LgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlld0ltcGwoY2xpZW50LCBkZXZUb29sc0Ns
aWVudCkpLmxlYWtSZWYoKTsKQEAgLTI2Nyw2ICsyNjcsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmll
d0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZU
b29scwogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChjbGllbnQpCiAjZW5kaWYKICAgICAsIG1f
Z2xlczJDb250ZXh0KDApCisgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkobmV3
IERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5kZXZpY2VPcmll
bnRhdGlvbkNsaWVudCgpIDogMCkpCiB7CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBk
b2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBzcGVj
aWZpYyB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVhZGlu
ZwpAQCAtMjg5LDkgKzI5MCw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xp
ZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAjaWYgRU5BQkxF
KElOUFVUX1NQRUVDSCkKICAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCA9ICZtX3Nw
ZWVjaElucHV0Q2xpZW50OwogI2VuZGlmCi0gICAgbV9wYWdlLnNldChuZXcgUGFnZShwYWdlQ2xp
ZW50cykpOworICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50ID0gbV9kZXZp
Y2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmdldCgpOwogCi0gICAgLy8gdGhlIHBhZ2Ugd2lsbCB0
YWtlIG93bmVyc2hpcCBvZiB0aGUgdmFyaW91cyBjbGllbnRzCisgICAgbV9wYWdlLnNldChuZXcg
UGFnZShwYWdlQ2xpZW50cykpOwogCiAgICAgbV9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+c2V0
Q2xpZW50KCZtX2JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwpOwogICAgIG1fcGFnZS0+c2V0R3Jv
dXBOYW1lKHBhZ2VHcm91cE5hbWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDUz
MGZiZjViOWJlOTMzZTliMzQyNjg1M2YzOWY4MWYzNDE4MTNhM2QuLmM3NjgzNzA5MWE3NmZhMzU3
NzU5MTI5MWMyYTgyMjAwY2JiMzZhZTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAg
LTcxLDEwICs3MSwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1dG9jb21wbGV0ZVBv
cHVwTWVudUNsaWVudDsKIGNsYXNzIEF1dG9GaWxsUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgQ29u
dGV4dE1lbnVDbGllbnRJbXBsOworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsK
IGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBj
bGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZh
dGU7CitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkZyYW1lSW1w
bDsKIGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKQEAgLTUxOSw2ICs1
MjEsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBPd25QdHI8V2ViR0xFUzJDb250ZXh0PiBt
X2dsZXMyQ29udGV4dDsKKworICAgIE93blB0cjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
PiBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63904</attachid>
            <date>2010-08-09 09:30:08 -0700</date>
            <delta_ts>2010-08-10 03:14:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43258-20100809173005.patch</filename>
            <type>text/plain</type>
            <size>33394</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGU0YTdhNDQ5ZmY0ZWM3NzVhNTExZjUwOWMwZmIzNzQwNGIxMmE3M2Uu
LmQ4MThkM2RiMDFlZWEzNDUyYmY1MjE5NmZjYTJhZDVmODUwMGJhZTEgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU2IEBACisyMDEwLTA4LTA5ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGNocm9taXVtIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHdyYXBwZXIgYW5k
IGhhdmUgV2ViVmlld0ltcGwgZ2V0IGl0IGZyb20gV2ViVmlld0NsaWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMjU4CisKKyAgICAgICAgUHJv
dmlkZSBhIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHRvIFBhZ2UgYnkgbWVhbnMgb2YgYQorICAg
ICAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5IHRoYXQgcHJveGllcyBjYWxscyB0bwor
ICAgICAgICBhIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LCBhbiBpbnRlcmZhY2UgdGhhdCBj
YW4gYmUgaW1wbGVtZW50ZWQKKyAgICAgICAgaW4gdGhlIFdlYktpdCBvciBDaHJvbWl1bSBsYXll
ci4gQW4gaW1wbGVtZW50YXRpb24gdG8gYmUgdXNlZCBmb3IKKyAgICAgICAgbGF5b3V0IHRlc3Rz
LCB3cmFwcGluZyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2ssIGlzIHByb3ZpZGVkLgorCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZpY2VPcmllbnRh
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb246Oldl
YkRldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50Ojp+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
Ojp+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OldlYkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcik6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0NsaWVudDo6ZGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAqIHNy
Yy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk6OnNldENvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6c3RvcFVwZGF0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTo6bGFz
dE9yaWVudGF0aW9uKToKKyAgICAgICAgKiBzcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eSk6CisgICAgICAgICogc3JjL1dlYkRldmlj
ZU9yaWVudGF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVu
dGF0aW9uOjpXZWJEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRldmlj
ZU9yaWVudGF0aW9uOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmll
bnRhdGlvbjo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4p
OgorICAgICAgICAqIHNyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzZXRD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s6Omxhc3RPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0T3JpZW50YXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnJlc2V0KToK
KyAgICAgICAgKiBzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6ZGlkQ2hh
bmdlRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6
CisKIDIwMTAtMDgtMDkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgTm90IHJldmlld2VkOiBDaHJvbWl1bSB0ZXN0cyBmaXguCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmlu
ZGV4IDA2ZmQ4MmNiYjliZTkwMDFjYzY3ZmM4NDcwNGEwNmI2MzM5OGQ5YzMuLmViNWFiYmVlNWY5
YTlhOWIyMmNlMTMwMWZmOWJjNWY3MDM0MzUwYTIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xNDIsNiAr
MTQyLDEwIEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaCcsCisgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbi5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgnLAorICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRG9jdW1lbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJEb2N1bWVudFR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEcmFnRGF0
YS5oJywKQEAgLTI5Niw2ICszMDAsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJB
Z2VudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuaCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmNwcCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0RyYWdD
bGllbnRJbXBsLmNwcCcsCkBAIC0zNzgsNiArMzg0LDkgQEAKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2VG9v
bHNGcm9udGVuZEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldlRvb2xzRnJv
bnRlbmRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRpb24u
Y3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
ay5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEb2N1bWVudC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViRG9jdW1lbnRUeXBlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJEcmFnRGF0YS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEZXZpY2VPcmllbnRhdGlvbi5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VP
cmllbnRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlOGFhNzI0NDQzM2FkNjVlYWZkYzQ4ZjI0MjlkNWMx
N2MyMWE5YzQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRl
dmljZU9yaWVudGF0aW9uLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGV2
aWNlT3JpZW50YXRpb25faAorI2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlvbl9oCisKKyNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY2xhc3MgUGFzc1JlZlB0cjsgfQorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZpY2VP
cmllbnRhdGlvbjsgfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJE
ZXZpY2VPcmllbnRhdGlvbiB7CitwdWJsaWM6CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb24oYm9v
bCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91
YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCisgICAgICAgIDog
bV9pc051bGwoZmFsc2UpLAorICAgICAgICAgIG1fY2FuUHJvdmlkZUFscGhhKGNhblByb3ZpZGVB
bHBoYSksCisgICAgICAgICAgbV9hbHBoYShhbHBoYSksCisgICAgICAgICAgbV9jYW5Qcm92aWRl
QmV0YShjYW5Qcm92aWRlQmV0YSksCisgICAgICAgICAgbV9iZXRhKGJldGEpLAorICAgICAgICAg
IG1fY2FuUHJvdmlkZUdhbW1hKGNhblByb3ZpZGVHYW1tYSksCisgICAgICAgICAgbV9nYW1tYShn
YW1tYSkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIFdlYkRldmljZU9yaWVudGF0aW9uIG51
bGxPcmllbnRhdGlvbigpIHsgcmV0dXJuIFdlYkRldmljZU9yaWVudGF0aW9uKCk7IH0KKworICAg
IGJvb2wgaXNOdWxsKCkgeyByZXR1cm4gbV9pc051bGw7IH0KKyAgICBib29sIGNhblByb3ZpZGVB
bHBoYSgpIHsgcmV0dXJuIG1fY2FuUHJvdmlkZUFscGhhOyB9CisgICAgZG91YmxlIGFscGhhKCkg
eyByZXR1cm4gbV9hbHBoYTsgfQorICAgIGJvb2wgY2FuUHJvdmlkZUJldGEoKSB7IHJldHVybiBt
X2NhblByb3ZpZGVCZXRhOyB9CisgICAgZG91YmxlIGJldGEoKSB7IHJldHVybiBtX2JldGE7IH0K
KyAgICBib29sIGNhblByb3ZpZGVHYW1tYSgpIHsgcmV0dXJuIG1fY2FuUHJvdmlkZUdhbW1hOyB9
CisgICAgZG91YmxlIGdhbW1hKCkgeyByZXR1cm4gbV9nYW1tYTsgfQorCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisgICAgV2ViRGV2aWNlT3JpZW50YXRpb24oY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uPiYpOworICAgIFdlYkRldmljZU9yaWVudGF0
aW9uJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uPiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VP
cmllbnRhdGlvbj4oKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkRldmljZU9y
aWVudGF0aW9uKCkKKyAgICAgICAgOiBtX2lzTnVsbCh0cnVlKSwKKyAgICAgICAgICBtX2NhblBy
b3ZpZGVBbHBoYShmYWxzZSksCisgICAgICAgICAgbV9hbHBoYSgwKSwKKyAgICAgICAgICBtX2Nh
blByb3ZpZGVCZXRhKGZhbHNlKSwKKyAgICAgICAgICBtX2JldGEoMCksCisgICAgICAgICAgbV9j
YW5Qcm92aWRlR2FtbWEoZmFsc2UpLAorICAgICAgICAgIG1fZ2FtbWEoMCkKKyAgICB7CisgICAg
fQorCisgICAgYm9vbCBtX2lzTnVsbDsKKyAgICBib29sIG1fY2FuUHJvdmlkZUFscGhhOworICAg
IGRvdWJsZSBtX2FscGhhOworICAgIGJvb2wgbV9jYW5Qcm92aWRlQmV0YTsKKyAgICBkb3VibGUg
bV9iZXRhOworICAgIGJvb2wgbV9jYW5Qcm92aWRlR2FtbWE7CisgICAgZG91YmxlIG1fZ2FtbWE7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkRldmljZU9yaWVu
dGF0aW9uX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGY4NjY1NTk1M2JjMDU1ZGUwODg2ZjU3Y2IzM2U1
OWMwYTViZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50X2gKKyNkZWZpbmUgV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGV2aWNlT3JpZW50
YXRpb247CitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7CisKK2NsYXNzIFdl
YkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCgpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxl
cihXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHN0YXJ0VXBkYXRpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpID0g
MDsKKworICAgIHZpcnR1YWwgV2ViRGV2aWNlT3JpZW50YXRpb24gbGFzdE9yaWVudGF0aW9uKCkg
Y29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2U5NjRi
NGMxZDY3NmQyZWFkZWY1ZDgyYjk1ZGIzNDFhNTE3YmVhCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaApAQCAt
MCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2tfaAorI2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAorCisjaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s7
IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jayA6IHB1YmxpYyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CitwdWJsaWM6Cisg
ICAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkgeyBpbml0aWFsaXplKCk7IH0KKyAg
ICB+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkgeyByZXNldCgpOyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpOworICAgIHZpcnR1YWwgdm9pZCBz
dG9wVXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIFdlYkRldmljZU9yaWVudGF0aW9uIGxhc3RPcmll
bnRhdGlvbigpIGNvbnN0OworCisgICAgV0VCS0lUX0FQSSB2b2lkIHNldE9yaWVudGF0aW9uKFdl
YkRldmljZU9yaWVudGF0aW9uJik7CisKK3ByaXZhdGU6CisgICAgV0VCS0lUX0FQSSB2b2lkIGlu
aXRpYWxpemUoKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKworICAgIFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayogbV9jbGllbnRNb2NrOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2tfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY4NDNlZTA3NDFhN2U2NjQ2M2I2MzI2ZWZk
MTRkMDVlZWYxYTBkZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyX2gKKyNkZWZpbmUgV2ViRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjsgfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb247CisKK2Ns
YXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciB7CitwdWJsaWM6CisgICAgV2ViRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlciogYykKKyAgICAgICAgOiBtX2NvbnRyb2xsZXIoYykKKyAgICB7CisgICAgfQorCisgICAg
V0VCS0lUX0FQSSB2b2lkIGRpZENoYW5nZURldmljZU9yaWVudGF0aW9uKGNvbnN0IFdlYkRldmlj
ZU9yaWVudGF0aW9uJik7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDb3Jl
OjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIoKSBjb25zdDsKKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciog
bV9jb250cm9sbGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZXdDbGllbnQuaAppbmRleCA0NjI4YzJmNDQzZDM1MDJmZTUyYjc2NDJiYTQ4NWIwMzdkYTU1MjU0
Li5jNjQ0MThiYTI3NzJkOTVmMTkxOTM4MmYyYTk5MzAzY2FjMzBhOGI2IDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApAQCAtNDQsNiArNDQsNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CitjbGFzcyBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkRyYWdEYXRhOwogY2xhc3MgV2ViRWxlbWVudDsK
IGNsYXNzIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbjsKQEAgLTM0MSw2ICszNDIsMTEgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBzcGVlY2hJbnB1dENv
bnRyb2xsZXIoCiAgICAgICAgIFdlYlNwZWVjaElucHV0TGlzdGVuZXIqKSB7IHJldHVybiAwOyB9
CiAKKyAgICAvLyBEZXZpY2UgT3JpZW50YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIEFjY2VzcyB0aGUgZW1iZWRkZXIgQVBJ
IGZvciBkZXZpY2Ugb3JpZW50YXRpb24gc2VydmljZXMuCisgICAgdmlydHVhbCBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudCogZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7IHJldHVybiAwOyB9
CisKIHByb3RlY3RlZDoKICAgICB+V2ViVmlld0NsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY0YTBkZDk5NmNmMWU1NzE1ZTIyNjRlOWJkNzQ5MzExZjA1YWYxZWMKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJv
eHkuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5oIgorCisjaW5jbHVkZSAiRGV2aWNl
T3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorI2luY2x1
ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5OjpzZXRDb250cm9sbGVyKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlciogYykKK3sKKyAgICBpZiAoIW1fY2xpZW50KSAvLyBGSVhNRTogR2V0IHJpZCBvZiB0aGVz
ZSBudWxsIGNoZWNrcyBvbmNlIGRldmljZSBvcmllbnRhdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1
bHQuCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+c2V0Q29udHJvbGxlcihuZXcgV2Vi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKGMpKTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudFByb3h5OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQor
ICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRpbmcoKTsKK30KKwordm9p
ZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OjpzdG9wVXBkYXRpbmcoKQoreworICAgIGlm
ICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+c3RvcFVwZGF0aW5n
KCk7Cit9CisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uKiBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5OjpsYXN0T3JpZW50YXRpb24oKSBjb25zdAoreworICAgIGlmICghbV9jbGllbnQp
CisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gQ2FjaGUgdGhlIERldmljZU9yaWVudGF0aW9u
IHBvaW50ZXIgc28gaXRzIHJlZmVyZW5jZSBjb3VudCBkb2VzIG5vdCBkcm9wIHRvIHplcm8gdXBv
biByZXR1cm4uCisgICAgbV9sYXN0T3JpZW50YXRpb24gPSBtX2NsaWVudC0+bGFzdE9yaWVudGF0
aW9uKCk7CisKKyAgICByZXR1cm4gbV9sYXN0T3JpZW50YXRpb24uZ2V0KCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VP
cmllbnRhdGlvbkNsaWVudFByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RldmljZU9yaWVu
dGF0aW9uQ2xpZW50UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDNhN2RjZTRjZjJhNDdjYTllNGU3ZjY1
MGZhYTc3OGFmNjUwNzVmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9E
ZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eV9oCisjZGVmaW5lIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50UHJveHlfaAorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIKKyNp
bmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIldlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5IDogcHVi
bGljIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudFByb3h5KFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBjbGll
bnQpCisgICAgICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lk
IHNldENvbnRyb2xsZXIoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKik7Cisg
ICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICBX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIG1fY2xpZW50OworICAgIG11
dGFibGUgUmVmUHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uPiBtX2xhc3RPcmllbnRhdGlv
bjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRGV2aWNlT3JpZW50
YXRpb25DbGllbnRQcm94eV9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRl
dmljZU9yaWVudGF0aW9uLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50
YXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3ZjZiZDE4ODEyODQwNzEwNTU5NWM1YjM2ZmViNWFlMWFj
ODkyNTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9y
aWVudGF0aW9uLmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uLmgiCisKKyNpbmNsdWRlICJEZXZpY2VP
cmllbnRhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJEZXZpY2VPcmllbnRhdGlvbjo6V2ViRGV2aWNlT3JpZW50YXRpb24oY29u
c3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4mIG9yaWVudGF0aW9uKQor
eworICAgIGlmICghb3JpZW50YXRpb24pIHsKKyAgICAgICAgbV9pc051bGwgPSB0cnVlOworICAg
ICAgICBtX2NhblByb3ZpZGVBbHBoYSA9IGZhbHNlOworICAgICAgICBtX2FscGhhID0gMDsKKyAg
ICAgICAgbV9jYW5Qcm92aWRlQmV0YSA9IGZhbHNlOworICAgICAgICBtX2JldGEgPSAwOworICAg
ICAgICBtX2NhblByb3ZpZGVHYW1tYSA9IGZhbHNlOworICAgICAgICBtX2dhbW1hID0gMDsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAgbV9jYW5Q
cm92aWRlQWxwaGEgPSBvcmllbnRhdGlvbi0+Y2FuUHJvdmlkZUFscGhhKCk7CisgICAgbV9hbHBo
YSA9IG9yaWVudGF0aW9uLT5hbHBoYSgpOworICAgIG1fY2FuUHJvdmlkZUJldGEgPSBvcmllbnRh
dGlvbi0+Y2FuUHJvdmlkZUJldGEoKTsKKyAgICBtX2JldGEgPSBvcmllbnRhdGlvbi0+YmV0YSgp
OworICAgIG1fY2FuUHJvdmlkZUdhbW1hID0gb3JpZW50YXRpb24tPmNhblByb3ZpZGVHYW1tYSgp
OworICAgIG1fZ2FtbWEgPSBvcmllbnRhdGlvbi0+Z2FtbWEoKTsKK30KKworV2ViRGV2aWNlT3Jp
ZW50YXRpb24mIFdlYkRldmljZU9yaWVudGF0aW9uOjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0
cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4mIG9yaWVudGF0aW9uKQoreworICAgIGlmICgh
b3JpZW50YXRpb24pIHsKKyAgICAgICAgbV9pc051bGwgPSB0cnVlOworICAgICAgICBtX2NhblBy
b3ZpZGVBbHBoYSA9IGZhbHNlOworICAgICAgICBtX2FscGhhID0gMDsKKyAgICAgICAgbV9jYW5Q
cm92aWRlQmV0YSA9IGZhbHNlOworICAgICAgICBtX2JldGEgPSAwOworICAgICAgICBtX2NhblBy
b3ZpZGVHYW1tYSA9IGZhbHNlOworICAgICAgICBtX2dhbW1hID0gMDsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAgbV9jYW5Qcm92aWRl
QWxwaGEgPSBvcmllbnRhdGlvbi0+Y2FuUHJvdmlkZUFscGhhKCk7CisgICAgbV9hbHBoYSA9IG9y
aWVudGF0aW9uLT5hbHBoYSgpOworICAgIG1fY2FuUHJvdmlkZUJldGEgPSBvcmllbnRhdGlvbi0+
Y2FuUHJvdmlkZUJldGEoKTsKKyAgICBtX2JldGEgPSBvcmllbnRhdGlvbi0+YmV0YSgpOworICAg
IG1fY2FuUHJvdmlkZUdhbW1hID0gb3JpZW50YXRpb24tPmNhblByb3ZpZGVHYW1tYSgpOworICAg
IG1fZ2FtbWEgPSBvcmllbnRhdGlvbi0+Z2FtbWEoKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisK
K1dlYkRldmljZU9yaWVudGF0aW9uOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmlj
ZU9yaWVudGF0aW9uPigpIGNvbnN0Cit7CisgICAgaWYgKG1faXNOdWxsKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb246OmNyZWF0ZShtX2Nh
blByb3ZpZGVBbHBoYSwgbV9hbHBoYSwgbV9jYW5Qcm92aWRlQmV0YSwgbV9iZXRhLCBtX2NhblBy
b3ZpZGVHYW1tYSwgbV9nYW1tYSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
Y3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQwMTFkMTJhOGU1ZmRlZDViNDA0NWNjZGIxNTIzNWM3ZmYwNjQyMzMK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKKworI2lu
Y2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgorI2luY2x1ZGUgIldlYkRldmlj
ZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jazo6c2V0Q29udHJvbGxlcihXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIpCit7CisgICAgbV9jbGllbnRNb2NrLT5zZXRDb250cm9sbGVyKGNvbnRyb2xsZXIt
PmNvbnRyb2xsZXIoKSk7Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2NsaWVudE1vY2stPnN0YXJ0VXBkYXRpbmcoKTsK
K30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZygp
Cit7CisgICAgbV9jbGllbnRNb2NrLT5zdG9wVXBkYXRpbmcoKTsKK30KKworV2ViRGV2aWNlT3Jp
ZW50YXRpb24gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpsYXN0T3JpZW50YXRpb24o
KSBjb25zdAoreworICAgIHJldHVybiBXZWJEZXZpY2VPcmllbnRhdGlvbihtX2NsaWVudE1vY2st
Pmxhc3RPcmllbnRhdGlvbigpKTsKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2s6OnNldE9yaWVudGF0aW9uKFdlYkRldmljZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikK
K3sKKyAgICBtX2NsaWVudE1vY2stPnNldE9yaWVudGF0aW9uKG9yaWVudGF0aW9uKTsKK30KKwor
dm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OmluaXRpYWxpemUoKQoreworICAg
IG1fY2xpZW50TW9jayA9IG5ldyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2so
KTsKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnJlc2V0KCkKK3sK
KyAgICBkZWxldGUgbV9jbGllbnRNb2NrOworICAgIG1fY2xpZW50TW9jayA9IDA7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhOTI0OWY3NjcxMGY4
NzBjMDNiZDM5MWQxZmUxYzg3MTNmZTJmYjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSw0
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uLmgiCisj
aW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViRGV2
aWNlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmRpZENo
YW5nZURldmljZU9yaWVudGF0aW9uKGNvbnN0IFdlYkRldmljZU9yaWVudGF0aW9uJiBvcmllbnRh
dGlvbikKK3sKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uPiBkZXZp
Y2VPcmllbnRhdGlvbihvcmllbnRhdGlvbik7CisgICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VE
ZXZpY2VPcmllbnRhdGlvbihkZXZpY2VPcmllbnRhdGlvbi5nZXQoKSk7Cit9CisKK1dlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyOjpjb250cm9sbGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250cm9sbGVyOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5k
ZXggZDliYWFjZDU0YzgxNTEwYTg4MGRmMjU1YzQ4OTdkOGExZDJlZjlmNi4uODczM2EyYWY2MTkx
ZDdjMjk5NDgzMDc4ODEyNTQwM2YwN2E2YTdkMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAj
aW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1
ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRE9NVXRpbGl0aWVzUHJp
dmF0ZS5oIgpAQCAtMTc3LDkgKzE3OCw4IEBAIHN0YXRpYyBjb25zdCBQb3B1cENvbnRhaW5lclNl
dHRpbmdzIGF1dG9GaWxsUG9wdXBTZXR0aW5ncyA9IHsKIAogV2ViVmlldyogV2ViVmlldzo6Y3Jl
YXRlKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9v
bHNDbGllbnQpCiB7Ci0gICAgLy8gS2VlcCBydW50aW1lIGZsYWcgZm9yIGRldmljZSBvcmllbnRh
dGlvbiB0dXJuZWQgb2ZmIHVudGlsIGl0J3MgaW1wbGVtZW50ZWQuCisgICAgLy8gS2VlcCBydW50
aW1lIGZsYWcgZm9yIGRldmljZSBtb3Rpb24gdHVybmVkIG9mZiB1bnRpbCBpdCdzIGltcGxlbWVu
dGVkLgogICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlRGV2aWNlTW90aW9uKGZhbHNlKTsK
LSAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZURldmljZU9yaWVudGF0aW9uKGZhbHNlKTsK
IAogICAgIC8vIFBhc3MgdGhlIFdlYlZpZXdJbXBsJ3Mgc2VsZi1yZWZlcmVuY2UgdG8gdGhlIGNh
bGxlci4KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZXdJbXBsKGNsaWVudCwgZGV2VG9v
bHNDbGllbnQpKS5sZWFrUmVmKCk7CkBAIC0yNjcsNiArMjY3LDcgQEAgV2ViVmlld0ltcGw6Oldl
YlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCog
ZGV2VG9vbHMKICAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoY2xpZW50KQogI2VuZGlmCiAgICAg
LCBtX2dsZXMyQ29udGV4dCgwKQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
KG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5KGNsaWVudCA/IGNsaWVudC0+ZGV2aWNl
T3JpZW50YXRpb25DbGllbnQoKSA6IDApKQogewogICAgIC8vIFdlYktpdC93aW4vV2ViVmlldy5j
cHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0aGUKICAgICAvLyBLSlMg
c3BlY2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdlIG5lZWQgdG8gaGF2ZSB0aHJl
YWRpbmcKQEAgLTI4OSw5ICsyOTAsOSBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmll
d0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgcGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSAm
bV9zcGVlY2hJbnB1dENsaWVudDsKICNlbmRpZgotICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UocGFn
ZUNsaWVudHMpKTsKKyAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG1f
ZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5nZXQoKTsKIAotICAgIC8vIHRoZSBwYWdlIHdp
bGwgdGFrZSBvd25lcnNoaXAgb2YgdGhlIHZhcmlvdXMgY2xpZW50cworICAgIG1fcGFnZS5zZXQo
bmV3IFBhZ2UocGFnZUNsaWVudHMpKTsKIAogICAgIG1fcGFnZS0+YmFja0ZvcndhcmRMaXN0KCkt
PnNldENsaWVudCgmbV9iYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsKTsKICAgICBtX3BhZ2UtPnNl
dEdyb3VwTmFtZShwYWdlR3JvdXBOYW1lKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRl
eCA1MzBmYmY1YjliZTkzM2U5YjM0MjY4NTNmMzlmODFmMzQxODEzYTNkLi4wOGZiMTgzZWNkMDgy
MTE2ZjlhZTA3NmE1MWE1N2MzMzBmMTlkOWU3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CkBAIC03MSw2ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0b2NvbXBsZXRl
UG9wdXBNZW51Q2xpZW50OwogY2xhc3MgQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBD
b250ZXh0TWVudUNsaWVudEltcGw7CitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
OwogY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsK
IGNsYXNzIFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CkBAIC01MTksNiArNTIwLDggQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgT3duUHRyPFdlYkdMRVMyQ29udGV4dD4gbV9nbGVzMkNvbnRleHQ7
CisKKyAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eT4gbV9kZXZpY2VPcmll
bnRhdGlvbkNsaWVudFByb3h5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>